@adyen/adyen-platform-experience-web 0.1.2 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -13
- package/dist/AmountSkeleton.css +23 -0
- package/dist/BalanceAccountSelector.css +4 -0
- package/dist/BaseButton.css +14 -0
- package/dist/BaseList.css +5 -0
- package/dist/Button.css +114 -0
- package/dist/ButtonActions-eb064f69.mjs +46 -0
- package/dist/ButtonActions.css +28 -0
- package/dist/CalendarGrid.css +113 -0
- package/dist/CopyText.css +18 -0
- package/dist/DatePicker.css +64 -0
- package/dist/ErrorMessageDisplay.css +20 -0
- package/dist/ErrorPanel.css +15 -0
- package/dist/ExpandableCard.css +71 -0
- package/dist/FilterBar.css +40 -0
- package/dist/FilterButton.css +48 -0
- package/dist/Img.css +7 -0
- package/dist/InputBase.css +175 -0
- package/dist/Modal.css +110 -0
- package/dist/Pagination.css +25 -0
- package/dist/Popover.css +127 -0
- package/dist/PopoverDismissButton.css +12 -0
- package/dist/RangeSelection.css +26 -0
- package/dist/Select.css +149 -0
- package/dist/SkeletonBody.css +154 -0
- package/dist/Spinner.css +50 -0
- package/dist/SummaryItem.css +37 -0
- package/dist/Tag-6d02fd64.mjs +32 -0
- package/dist/Tag.css +34 -0
- package/dist/Tooltip.css +7 -0
- package/dist/TotalsCard.css +14 -0
- package/dist/TransactionDetails.css +74 -0
- package/dist/TransactionsDisplay.css +4 -0
- package/dist/TransactionsOverview.css +29 -0
- package/dist/TransactionsOverviewContainer.css +3 -0
- package/dist/TransactionsTable.css +18 -0
- package/dist/Typography-11b95870.mjs +68 -0
- package/dist/Typography.css +57 -0
- package/dist/cjs/ModalContent-e142d135.js +10 -0
- package/dist/cjs/ModalContent-e142d135.js.map +1 -0
- package/dist/cjs/index-2231054e.js +10406 -0
- package/dist/cjs/index-2231054e.js.map +1 -0
- package/dist/cjs/index.css +1707 -0
- package/dist/cjs/index.js +35 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/compat.module-a4d537ff.mjs +237 -0
- package/dist/en-US-1daadfc1.mjs +371 -0
- package/dist/es/components/external/BaseElement.js +89 -49
- package/dist/es/components/external/EventEmitter.js +28 -17
- package/dist/es/components/external/FormElement.js +78 -0
- package/dist/es/components/external/TransactionDetails/TransactionDetails.js +20 -15
- package/dist/es/components/external/TransactionDetails/components/TransactionData.js +43 -42
- package/dist/es/components/external/TransactionDetails/components/TransactionDataSkeleton.js +13 -10
- package/dist/es/components/external/TransactionDetails/components/TransactionDetails.js +39 -28
- package/dist/es/components/external/TransactionDetails/index.js +4 -0
- package/dist/es/components/external/TransactionsOverview/TransactionsOverviewElement.js +35 -0
- package/dist/es/components/external/TransactionsOverview/components/AmountSkeleton/AmountSkeleton.js +12 -0
- package/dist/es/components/external/TransactionsOverview/components/AmountSkeleton/constants.js +8 -0
- package/dist/es/components/external/TransactionsOverview/components/BalanceAccountSelector/BalanceAccountSelector.js +31 -0
- package/dist/es/components/external/TransactionsOverview/components/BalanceAccountSelector/index.js +6 -0
- package/dist/es/components/external/TransactionsOverview/components/BalanceAccountSelector/useBalanceAccountSelection.js +25 -0
- package/dist/es/components/external/TransactionsOverview/components/BalanceItem/BalanceItem.js +41 -0
- package/dist/es/components/external/TransactionsOverview/components/Balances/Balances.js +56 -0
- package/dist/es/components/external/TransactionsOverview/components/Balances/constants.js +4 -0
- package/dist/es/components/external/TransactionsOverview/components/Category/Category.js +12 -0
- package/dist/es/components/external/TransactionsOverview/components/ModalContent.js +12 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/MultiSelectionFilter.js +33 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/index.js +15 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/constants.js +27 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/index.js +13 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.js +31 -0
- package/dist/es/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/utils.js +11 -0
- package/dist/es/components/external/TransactionsOverview/components/SummaryItem/SummaryItem.js +60 -0
- package/dist/es/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel.js +22 -0
- package/dist/es/components/external/TransactionsOverview/components/SummaryItem/constants.js +16 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionListError/TransactionListError.js +21 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem.js +61 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard.js +50 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionTotals/TransactionTotals.js +66 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionTotals/constants.js +6 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsDisplay/TransactionsDisplay.js +91 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsDisplay/constants.js +6 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsOverview/TransactionsOverview.js +182 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsOverview/constants.js +8 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsOverviewContainer/TransactionsOverviewContainer.js +52 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants.js +6 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsOverviewDateFilter.js +71 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable.js +112 -0
- package/dist/es/components/external/TransactionsOverview/components/TransactionsTable/constants.js +12 -0
- package/dist/es/components/external/{Transactions → TransactionsOverview}/components/utils.js +13 -7
- package/dist/es/components/external/TransactionsOverview/hooks/useDefaultTransactionsOverviewFilterParams.js +42 -0
- package/dist/es/components/external/TransactionsOverview/hooks/useMaxWidths.js +16 -0
- package/dist/es/components/external/TransactionsOverview/hooks/useMediaQuery.js +37 -0
- package/dist/es/components/external/TransactionsOverview/hooks/useTransactionsOverviewMultiSelectionFilters.js +33 -0
- package/dist/es/components/external/TransactionsOverview/index.js +6 -0
- package/dist/es/components/external/UIElement.js +51 -39
- package/dist/es/components/external/index.js +8 -0
- package/dist/es/components/index.js +11 -0
- package/dist/es/components/internal/BaseButton/BaseButton.js +22 -13
- package/dist/es/components/internal/BaseButton/constants.js +2 -2
- package/dist/es/components/internal/BaseButton/index.js +4 -0
- package/dist/es/components/internal/BaseList/BaseList.js +8 -5
- package/dist/es/components/internal/BaseList/constants.js +2 -2
- package/dist/es/components/internal/Button/Button.js +41 -39
- package/dist/es/components/internal/Button/ButtonActions/ButtonActions.js +8 -27
- package/dist/es/components/internal/Button/constants.js +16 -9
- package/dist/es/components/internal/Button/hooks/useButton.js +16 -12
- package/dist/es/components/internal/Button/index.js +4 -0
- package/dist/es/components/internal/Calendar/Calendar.js +21 -20
- package/dist/es/components/internal/Calendar/calendar/constants.js +70 -35
- package/dist/es/components/internal/Calendar/calendar/facade/Calendar.js +554 -317
- package/dist/es/components/internal/Calendar/calendar/facade/index.js +46 -37
- package/dist/es/components/internal/Calendar/calendar/index.js +4 -0
- package/dist/es/components/internal/Calendar/calendar/shared/indexed/index.js +46 -34
- package/dist/es/components/internal/Calendar/calendar/timeframe/common/flags.js +5 -31
- package/dist/es/components/internal/Calendar/calendar/timeframe/common/utils.js +16 -14
- package/dist/es/components/internal/Calendar/calendar/timeframe/frames/MonthFrame.js +221 -122
- package/dist/es/components/internal/Calendar/calendar/timeframe/frames/TimeFrame.js +418 -238
- package/dist/es/components/internal/Calendar/calendar/timeframe/frames/YearFrame.js +197 -0
- package/dist/es/components/internal/Calendar/calendar/timeframe/index.js +8 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/factory.js +63 -40
- package/dist/es/components/internal/Calendar/calendar/timerange/factory.test.js +139 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/index.js +4 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/index.js +14 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastMonth.js +3 -3
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastMonth.test.js +69 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastNDays.js +27 -16
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastNDays.test.js +69 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastWeek.js +3 -3
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/lastWeek.test.js +108 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/shared/offsetMonth.js +23 -14
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/shared/offsetWeek.js +29 -21
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/testing/fixtures.js +15 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/testing/helpers.js +19 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/thisMonth.js +3 -3
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/thisMonth.test.js +46 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/thisWeek.js +3 -3
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/thisWeek.test.js +85 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/yearToDate.js +13 -9
- package/dist/es/components/internal/Calendar/calendar/timerange/presets/yearToDate.test.js +49 -0
- package/dist/es/components/internal/Calendar/calendar/timerange/utils.js +83 -49
- package/dist/es/components/internal/Calendar/calendar/timeslice/TimeSlice.js +61 -38
- package/dist/es/components/internal/Calendar/calendar/timeslice/index.js +21 -17
- package/dist/es/components/internal/Calendar/calendar/utils.js +22 -15
- package/dist/es/components/internal/Calendar/clock/clock.js +41 -23
- package/dist/es/components/internal/Calendar/clock/clock.test.js +43 -0
- package/dist/es/components/internal/Calendar/clock/index.js +7 -0
- package/dist/es/components/internal/Calendar/clock/testing/fixtures.js +60 -0
- package/dist/es/components/internal/Calendar/clock/today.js +57 -37
- package/dist/es/components/internal/Calendar/clock/today.test.js +98 -0
- package/dist/es/components/internal/Calendar/components/CalendarControls/CalendarControls.js +12 -7
- package/dist/es/components/internal/Calendar/components/CalendarControls/index.js +4 -0
- package/dist/es/components/internal/Calendar/components/CalendarGrid/CalendarGrid.js +29 -27
- package/dist/es/components/internal/Calendar/components/CalendarGrid/CalendarGridDate.js +58 -33
- package/dist/es/components/internal/Calendar/components/CalendarGrid/CalendarGridDayOfWeek.js +40 -30
- package/dist/es/components/internal/Calendar/components/CalendarGrid/index.js +4 -0
- package/dist/es/components/internal/Calendar/components/CalendarGrid/utils.js +49 -44
- package/dist/es/components/internal/Calendar/hooks/useCalendar.js +115 -84
- package/dist/es/components/internal/Calendar/hooks/useCalendarControlsRendering.js +40 -35
- package/dist/es/components/internal/Calendar/hooks/useTimezone.js +45 -23
- package/dist/es/components/internal/Calendar/index.js +4 -0
- package/dist/es/components/internal/CopyText/CopyText.js +41 -0
- package/dist/es/components/internal/DataGrid/DataGrid.js +10 -84
- package/dist/es/components/internal/DataGrid/DataGridCell.js +4 -4
- package/dist/es/components/internal/DataGrid/components/InteractiveBody.js +8 -31
- package/dist/es/components/internal/DataGrid/components/SkeletonBody.js +16 -14
- package/dist/es/components/internal/DataGrid/components/TableBody.js +26 -9
- package/dist/es/components/internal/DataGrid/components/TableCells.js +25 -17
- package/dist/es/components/internal/DataGrid/hooks/useInteractiveDataGrid.js +5 -76
- package/dist/es/components/internal/DataGrid/index.js +4 -0
- package/dist/es/components/internal/DataGrid/tests/DataGrid.test.js +190 -0
- package/dist/es/components/internal/DatePicker/DatePicker.js +62 -45
- package/dist/es/components/internal/DatePicker/components/TimeRangeSelector/TimeRangeSelector.js +46 -19
- package/dist/es/components/internal/DatePicker/components/TimeRangeSelector/index.js +7 -0
- package/dist/es/components/internal/DatePicker/components/TimeRangeSelector/useTimeRangeSelection.js +85 -56
- package/dist/es/components/internal/DatePicker/index.js +4 -0
- package/dist/es/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.js +53 -40
- package/dist/es/components/internal/ExpandableCard/ExpandableCard.js +74 -51
- package/dist/es/components/internal/ExpandableCard/ExpandableCard.test.js +45 -0
- package/dist/es/components/internal/ExpandableCard/constants.js +20 -11
- package/dist/es/components/internal/FilterBar/FilterBar.js +46 -11
- package/dist/es/components/internal/FilterBar/components/FilterButton/FilterButton.js +17 -15
- package/dist/es/components/internal/FilterBar/filters/AmountFilter/AmountFilter.js +68 -29
- package/dist/es/components/internal/FilterBar/filters/AmountFilter/RangeSelection.js +68 -60
- package/dist/es/components/internal/FilterBar/filters/AmountFilter/constants.js +4 -0
- package/dist/es/components/internal/FilterBar/filters/BaseFilter/BaseFilter.js +155 -99
- package/dist/es/components/internal/FilterBar/filters/BaseFilter/index.js +4 -0
- package/dist/es/components/internal/FilterBar/filters/DateFilter/DateFilter.js +10 -107
- package/dist/es/components/internal/FilterBar/filters/DateFilter/index.js +4 -0
- package/dist/es/components/internal/FilterBar/filters/TextFilter/TextFilter.js +8 -0
- package/dist/es/components/internal/FilterBar/filters/TextFilter/index.js +4 -0
- package/dist/es/components/internal/FilterBar/index.js +4 -0
- package/dist/es/components/internal/FormFields/InputBase.js +67 -54
- package/dist/es/components/internal/FormFields/InputText.js +6 -6
- package/dist/es/components/internal/FormFields/Select/Select.js +246 -182
- package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +73 -69
- package/dist/es/components/internal/FormFields/Select/components/SelectList.js +71 -49
- package/dist/es/components/internal/FormFields/Select/components/SelectListItem.js +41 -37
- package/dist/es/components/internal/FormFields/Select/constants.js +49 -27
- package/dist/es/components/internal/FormFields/Select/hooks/useSelect.js +35 -27
- package/dist/es/components/internal/FormFields/Select/index.js +4 -0
- package/dist/es/components/internal/FormFields/index.js +18 -0
- package/dist/es/components/internal/FormFields/utils.js +4 -0
- package/dist/es/components/internal/Image/Image.js +10 -10
- package/dist/es/components/internal/Img/Img.js +33 -19
- package/dist/es/components/internal/Img/index.js +4 -0
- package/dist/es/components/internal/Modal/Modal.js +78 -66
- package/dist/es/components/internal/Modal/index.js +4 -0
- package/dist/es/components/internal/Pagination/Pagination.js +61 -45
- package/dist/es/components/internal/Pagination/components/LimitSelect.js +1 -0
- package/dist/es/components/internal/Pagination/constants.js +6 -4
- package/dist/es/components/internal/Pagination/hooks/index.js +6 -0
- package/dist/es/components/internal/Pagination/hooks/useCursorPaginatedRecords.js +8 -7
- package/dist/es/components/internal/Pagination/hooks/useCursorPagination.js +30 -18
- package/dist/es/components/internal/Pagination/hooks/useOffsetPaginatedRecords.js +10 -0
- package/dist/es/components/internal/Pagination/hooks/useOffsetPagination.js +21 -14
- package/dist/es/components/internal/Pagination/hooks/usePageLimit.js +60 -52
- package/dist/es/components/internal/Pagination/hooks/usePaginatedRecords.js +11 -78
- package/dist/es/components/internal/Pagination/hooks/usePaginatedRecordsFilters.js +13 -12
- package/dist/es/components/internal/Pagination/hooks/usePagination.js +87 -41
- package/dist/es/components/internal/Pagination/index.js +4 -0
- package/dist/es/components/internal/Pagination/utils.js +5 -5
- package/dist/es/components/internal/Popover/Popover.js +160 -102
- package/dist/es/components/internal/Popover/Popover.test.js +119 -0
- package/dist/es/components/internal/Popover/PopoverDismissButton/PopoverDismissButton.js +22 -18
- package/dist/es/components/internal/Popover/PopoverTitle/PopoverTitle.js +10 -8
- package/dist/es/components/internal/Popover/constants.js +16 -7
- package/dist/es/components/internal/Popover/utils/popoverUtil.js +51 -0
- package/dist/es/components/internal/Popover/utils/utils.js +28 -22
- package/dist/es/components/internal/SVGIcons/CheckedBox.js +5 -5
- package/dist/es/components/internal/SVGIcons/Checkmark.js +6 -6
- package/dist/es/components/internal/SVGIcons/ChevronDown.js +6 -6
- package/dist/es/components/internal/SVGIcons/ChevronLeft.js +8 -8
- package/dist/es/components/internal/SVGIcons/ChevronRight.js +8 -8
- package/dist/es/components/internal/SVGIcons/ChevronUp.js +7 -7
- package/dist/es/components/internal/SVGIcons/Close.js +13 -0
- package/dist/es/components/internal/SVGIcons/Copy.js +5 -0
- package/dist/es/components/internal/SVGIcons/Filter.js +11 -0
- package/dist/es/components/internal/SVGIcons/UncheckedBox.js +5 -5
- package/dist/es/components/internal/Spinner/Spinner.js +5 -4
- package/dist/es/components/internal/Spinner/index.js +4 -0
- package/dist/es/components/internal/Tag/Tag.js +5 -19
- package/dist/es/components/internal/Tooltip/Tooltip.js +48 -0
- package/dist/es/components/internal/Tooltip/useTooltipListeners.js +31 -0
- package/dist/es/components/internal/Typography/Typography.js +7 -33
- package/dist/es/components/internal/Typography/constants.js +2 -2
- package/dist/es/components/utils/transactionResourceErrorCodes.js +17 -13
- package/dist/es/components/utils/utils.js +34 -0
- package/dist/es/constants.js +8 -0
- package/dist/es/core/Analytics/Analytics.js +63 -0
- package/dist/es/core/Analytics/EventsQueue.js +22 -0
- package/dist/es/core/Analytics/index.js +4 -0
- package/dist/es/core/Auth/AuthContext.js +7 -5
- package/dist/es/core/Auth/AuthProvider.js +24 -5
- package/dist/es/core/Auth/useAuthContext.js +4 -4
- package/dist/es/core/Context/CoreContext.js +5 -5
- package/dist/es/core/Context/CoreProvider.js +23 -17
- package/dist/es/core/Context/useCoreContext.js +4 -4
- package/dist/es/core/Errors/AdyenPlatformExperienceError.js +21 -0
- package/dist/es/core/Errors/ErrorPanel.js +19 -0
- package/dist/es/core/Errors/constants.js +4 -2
- package/dist/es/core/Localization/Localization.js +12 -146
- package/dist/es/core/Localization/Localization.test.js +70 -0
- package/dist/es/core/Localization/amount/amount-util.js +42 -19
- package/dist/es/core/Localization/amount/amount-util.test.js +54 -0
- package/dist/es/core/Localization/constants/currency-codes.js +3 -3
- package/dist/es/core/Localization/constants/currency-decimals.js +3 -3
- package/dist/es/core/Localization/constants/locale.js +7 -5
- package/dist/es/core/Localization/constants/localization.js +9 -6
- package/dist/es/core/Localization/datetime/restamper/constants.js +29 -20
- package/dist/es/core/Localization/datetime/restamper/index.js +9 -0
- package/dist/es/core/Localization/datetime/restamper/restamper.js +44 -32
- package/dist/es/core/Localization/datetime/restamper/restamper.test.js +179 -0
- package/dist/es/core/Localization/datetime/restamper/testing/fixtures.js +21 -0
- package/dist/es/core/Localization/datetime/restamper/testing/helpers.js +27 -0
- package/dist/es/core/Localization/datetime/restamper/utils.js +44 -26
- package/dist/es/core/Localization/index.js +32 -0
- package/dist/es/core/Localization/localization-utils.js +7 -31
- package/dist/es/core/Localization/translations/index.js +356 -79
- package/dist/es/core/Localization/utils.js +72 -44
- package/dist/es/core/Localization/utils.test.js +215 -0
- package/dist/es/core/ProcessResponse/index.js +4 -0
- package/dist/es/core/ProcessResponse/process-response.js +40 -0
- package/dist/es/core/Services/analytics/collect-id.js +37 -0
- package/dist/es/core/Services/analytics/log-event.js +14 -0
- package/dist/es/core/Services/analytics/post-telemetry.js +22 -0
- package/dist/es/core/Services/data-set.js +1 -0
- package/dist/es/core/Services/get-dataset.js +13 -0
- package/dist/es/core/Services/requests/endpoints.js +9 -0
- package/dist/es/core/Services/requests/http.js +55 -28
- package/dist/es/core/Services/requests/utils.js +49 -34
- package/dist/es/core/Services/sessions/constants.js +2 -2
- package/dist/es/core/Services/sessions/setup-session.js +9 -9
- package/dist/es/core/Session/Session.js +38 -23
- package/dist/es/core/Session/index.js +4 -0
- package/dist/es/core/Session/utils.js +5 -5
- package/dist/es/core/config.js +6 -2
- package/dist/es/core/core.js +87 -45
- package/dist/es/core/index.js +36 -0
- package/dist/es/core/utils.js +10 -8
- package/dist/es/hooks/element/useClickOutside.js +75 -18
- package/dist/es/hooks/element/useDetachedRender.js +17 -15
- package/dist/es/hooks/element/useFocusCursor.js +18 -13
- package/dist/es/hooks/element/useFocusTrap.js +90 -47
- package/dist/es/hooks/element/useIdentifierString.js +61 -0
- package/dist/es/hooks/element/usePopoverPositioner.js +5 -69
- package/dist/es/hooks/element/useUniqueIdentifier.js +16 -12
- package/dist/es/hooks/useBooleanState/index.js +4 -0
- package/dist/es/hooks/useBooleanState/useBooleanState.js +8 -6
- package/dist/es/hooks/useCommitAction/index.js +6 -0
- package/dist/es/hooks/useCommitAction/useCommitAction.js +38 -27
- package/dist/es/hooks/useDefinedValue/index.js +4 -0
- package/dist/es/hooks/useDefinedValue/useDefinedValue.js +16 -0
- package/dist/es/hooks/useFetch/useFetch.js +37 -27
- package/dist/es/hooks/useImageUrl/useImageUrl.js +26 -22
- package/dist/es/hooks/useModalDetails/useModalDetails.js +37 -28
- package/dist/es/hooks/useMounted/index.js +4 -0
- package/dist/es/hooks/useMounted/useMounted.js +14 -8
- package/dist/es/hooks/useReactiveState/index.js +4 -0
- package/dist/es/hooks/useReactiveState/useReactiveState.js +53 -27
- package/dist/es/hooks/useReflex/constants.js +2 -2
- package/dist/es/hooks/useReflex/core/reflex.js +66 -47
- package/dist/es/hooks/useReflex/core/reflex.test.js +170 -0
- package/dist/es/hooks/useReflex/core/registry.js +68 -46
- package/dist/es/hooks/useReflex/core/registry.test.js +114 -0
- package/dist/es/hooks/useReflex/core/utils.js +18 -16
- package/dist/es/hooks/useReflex/core/utils.test.js +59 -0
- package/dist/es/hooks/useReflex/errors.js +6 -6
- package/dist/es/hooks/useReflex/hooks/useReflex.js +12 -7
- package/dist/es/hooks/useReflex/index.js +8 -0
- package/dist/es/hooks/useSessionAwareRequest/useSessionAwareRequest.js +37 -20
- package/dist/es/hooks/useSetupEndpoint/useSetupEndpoint.js +26 -20
- package/dist/es/index.js +45 -41
- package/dist/es/utils/Storage.js +21 -17
- package/dist/es/utils/Validator/ValidationRuleResult.js +28 -0
- package/dist/es/utils/Validator/Validator.js +67 -0
- package/dist/es/utils/Validator/Validator.test.js +27 -0
- package/dist/es/utils/Validator/defaultRules.js +12 -0
- package/dist/es/utils/Validator/index.js +4 -0
- package/dist/es/utils/class-name-utils.js +11 -5
- package/dist/es/utils/common/constants.js +10 -6
- package/dist/es/utils/common/index.js +59 -32
- package/dist/es/utils/fixedForwardRef.js +3 -3
- package/dist/es/utils/get-image.js +12 -11
- package/dist/es/utils/get-image.test.js +38 -0
- package/dist/es/utils/idGenerator.js +6 -3
- package/dist/es/utils/memoComparator/index.js +4 -0
- package/dist/es/utils/memoComparator/memoComparator.js +26 -17
- package/dist/es/utils/regex.js +6 -0
- package/dist/es/utils/tabbable.js +109 -70
- package/dist/es/utils/useForm/index.js +4 -0
- package/dist/es/utils/useForm/reducer.js +153 -0
- package/dist/es/utils/useForm/useForm.js +85 -0
- package/dist/es/utils/useForm/useForm.test.js +107 -0
- package/dist/es/utils/uuid.js +5 -5
- package/dist/es/utils/uuid.test.js +13 -0
- package/dist/es/utils/validator-utils.js +44 -3
- package/dist/es/utils/watchable/constants.js +2 -2
- package/dist/es/utils/watchable/core/Watchable.js +83 -45
- package/dist/es/utils/watchable/core/Watchable.test.js +103 -0
- package/dist/es/utils/watchable/core/helpers.js +26 -19
- package/dist/es/utils/watchable/core/helpers.test.js +106 -0
- package/dist/es/utils/watchable/core/syncEffect.js +19 -15
- package/dist/es/utils/watchable/core/syncEffect.test.js +103 -0
- package/dist/es/utils/watchable/index.js +17 -16
- package/dist/flags-41c36e13.mjs +83 -0
- package/dist/hooks.module-8565d716.mjs +161 -0
- package/dist/index-2c0f6175.mjs +12069 -0
- package/dist/index-6e47f755.mjs +231 -0
- package/dist/index-944be685.mjs +6609 -0
- package/dist/index-c88cd37e.mjs +243 -0
- package/dist/index-f5bc0382.mjs +155 -0
- package/dist/index.css +63 -0
- package/dist/index2.css +4 -0
- package/dist/jsxRuntime.module-69493d81.mjs +15 -0
- package/dist/magic-string.es-219c273f.mjs +1146 -0
- package/dist/preact.module-38e5a571.mjs +323 -0
- package/dist/types/components/external/TransactionDetails/components/TransactionDataSkeleton.d.ts.map +1 -1
- package/dist/types/components/external/TransactionsOverview/TransactionsOverviewElement.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/AmountSkeleton/AmountSkeleton.d.ts +1 -1
- package/dist/types/components/external/TransactionsOverview/components/AmountSkeleton/AmountSkeleton.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/AmountSkeleton/constants.d.ts +4 -0
- package/dist/types/components/external/TransactionsOverview/components/AmountSkeleton/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/AmountSkeleton/types.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/BalanceAccountSelector/BalanceAccountSelector.d.ts +1 -0
- package/dist/types/components/external/TransactionsOverview/components/BalanceAccountSelector/BalanceAccountSelector.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/BalanceAccountSelector/index.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/BalanceAccountSelector/useBalanceAccountSelection.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/BalanceItem/BalanceItem.d.ts +1 -1
- package/dist/types/components/external/TransactionsOverview/components/BalanceItem/BalanceItem.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/BalanceItem/types.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/Balances/Balances.d.ts +4 -4
- package/dist/types/components/external/TransactionsOverview/components/Balances/Balances.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/Balances/constants.d.ts +2 -0
- package/dist/types/components/external/TransactionsOverview/components/Balances/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/Category/Category.d.ts +4 -0
- package/dist/types/components/external/TransactionsOverview/components/Category/Category.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/Category/types.d.ts +7 -0
- package/dist/types/components/external/TransactionsOverview/components/Category/types.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/ModalContent.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/MultiSelectionFilter.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/index.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/index.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/types.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/utils.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/SummaryItem.d.ts +4 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/SummaryItem.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel.d.ts +14 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/constants.d.ts +8 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/types.d.ts +36 -0
- package/dist/types/components/external/TransactionsOverview/components/SummaryItem/types.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionListError/TransactionListError.d.ts +7 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionListError/TransactionListError.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem.d.ts +3 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/TransactionTotalItem/types.d.ts +2 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotalItem/types.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard.d.ts +11 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/TransactionTotals/TransactionTotals.d.ts +3 -1
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotals/TransactionTotals.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotals/constants.d.ts +3 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionTotals/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/TransactionsDisplay.d.ts +5 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/TransactionsDisplay.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/constants.d.ts +3 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/types.d.ts +5 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsDisplay/types.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions/components → TransactionsOverview/components/TransactionsOverview}/TransactionsOverview.d.ts +2 -1
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverview/TransactionsOverview.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverview/constants.d.ts +4 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverview/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverviewContainer/TransactionsOverviewContainer.d.ts +6 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverviewContainer/TransactionsOverviewContainer.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants.d.ts +3 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsOverviewDateFilter.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable.d.ts +5 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/constants.d.ts +6 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/constants.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/types.d.ts +18 -0
- package/dist/types/components/external/TransactionsOverview/components/TransactionsTable/types.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/components/utils.d.ts +2 -2
- package/dist/types/components/external/TransactionsOverview/components/utils.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/hooks/useDefaultTransactionsOverviewFilterParams.d.ts +1 -0
- package/dist/types/components/external/TransactionsOverview/hooks/useDefaultTransactionsOverviewFilterParams.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/hooks/useMaxWidths.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/hooks/useMediaQuery.d.ts +26 -0
- package/dist/types/components/external/TransactionsOverview/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/hooks/useTransactionsOverviewMultiSelectionFilters.d.ts.map +1 -0
- package/dist/types/components/external/TransactionsOverview/index.d.ts +3 -0
- package/dist/types/components/external/TransactionsOverview/index.d.ts.map +1 -0
- package/dist/types/components/external/{Transactions → TransactionsOverview}/types.d.ts +3 -15
- package/dist/types/components/external/TransactionsOverview/types.d.ts.map +1 -0
- package/dist/types/components/external/index.d.ts +1 -1
- package/dist/types/components/external/index.d.ts.map +1 -1
- package/dist/types/components/internal/BaseButton/BaseButton.d.ts.map +1 -1
- package/dist/types/components/internal/BaseButton/constants.d.ts +1 -1
- package/dist/types/components/internal/BaseButton/types.d.ts +1 -0
- package/dist/types/components/internal/BaseButton/types.d.ts.map +1 -1
- package/dist/types/components/internal/BaseList/constants.d.ts +1 -1
- package/dist/types/components/internal/Button/constants.d.ts +1 -1
- package/dist/types/components/internal/Calendar/calendar/facade/Calendar.d.ts.map +1 -1
- package/dist/types/components/internal/CopyText/CopyText.d.ts +6 -0
- package/dist/types/components/internal/CopyText/CopyText.d.ts.map +1 -0
- package/dist/types/components/internal/DataGrid/DataGrid.d.ts +2 -0
- package/dist/types/components/internal/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/types/components/internal/DataGrid/components/InteractiveBody.d.ts +1 -1
- package/dist/types/components/internal/DataGrid/components/InteractiveBody.d.ts.map +1 -1
- package/dist/types/components/internal/DataGrid/components/TableBody.d.ts +1 -1
- package/dist/types/components/internal/DataGrid/components/TableBody.d.ts.map +1 -1
- package/dist/types/components/internal/DataGrid/components/TableCells.d.ts +2 -1
- package/dist/types/components/internal/DataGrid/components/TableCells.d.ts.map +1 -1
- package/dist/types/components/internal/DataGrid/types.d.ts +2 -0
- package/dist/types/components/internal/DataGrid/types.d.ts.map +1 -1
- package/dist/types/components/internal/DatePicker/components/TimeRangeSelector/TimeRangeSelector.d.ts.map +1 -1
- package/dist/types/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.d.ts +5 -1
- package/dist/types/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.d.ts.map +1 -1
- package/dist/types/components/internal/ExpandableCard/ExpandableCard.d.ts +1 -1
- package/dist/types/components/internal/ExpandableCard/ExpandableCard.d.ts.map +1 -1
- package/dist/types/components/internal/ExpandableCard/constants.d.ts +1 -1
- package/dist/types/components/internal/ExpandableCard/types.d.ts +5 -0
- package/dist/types/components/internal/ExpandableCard/types.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/FilterBar.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/AmountFilter.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/RangeSelection.d.ts +1 -1
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/RangeSelection.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/constants.d.ts +2 -0
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/constants.d.ts.map +1 -0
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/types.d.ts +0 -2
- package/dist/types/components/internal/FilterBar/filters/AmountFilter/types.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/filters/BaseFilter/BaseFilter.d.ts +0 -1
- package/dist/types/components/internal/FilterBar/filters/BaseFilter/BaseFilter.d.ts.map +1 -1
- package/dist/types/components/internal/FilterBar/filters/DateFilter/DateFilter.d.ts.map +1 -1
- package/dist/types/components/internal/FormFields/Select/Select.d.ts +1 -1
- package/dist/types/components/internal/FormFields/Select/Select.d.ts.map +1 -1
- package/dist/types/components/internal/FormFields/Select/components/SelectList.d.ts.map +1 -1
- package/dist/types/components/internal/FormFields/Select/constants.d.ts +1 -1
- package/dist/types/components/internal/FormFields/Select/types.d.ts +9 -0
- package/dist/types/components/internal/FormFields/Select/types.d.ts.map +1 -1
- package/dist/types/components/internal/FormFields/index.d.ts +3 -18
- package/dist/types/components/internal/FormFields/index.d.ts.map +1 -1
- package/dist/types/components/internal/Img/types.d.ts +1 -1
- package/dist/types/components/internal/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/constants.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/hooks/types.d.ts +3 -3
- package/dist/types/components/internal/Pagination/hooks/types.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/hooks/usePaginatedRecords.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/hooks/usePagination.d.ts.map +1 -1
- package/dist/types/components/internal/Pagination/types.d.ts +2 -1
- package/dist/types/components/internal/Pagination/types.d.ts.map +1 -1
- package/dist/types/components/internal/Popover/Popover.d.ts +1 -2
- package/dist/types/components/internal/Popover/Popover.d.ts.map +1 -1
- package/dist/types/components/internal/Popover/constants.d.ts +3 -1
- package/dist/types/components/internal/Popover/constants.d.ts.map +1 -1
- package/dist/types/components/internal/Popover/types.d.ts +6 -0
- package/dist/types/components/internal/Popover/types.d.ts.map +1 -1
- package/dist/types/components/internal/Popover/utils/popoverUtil.d.ts +7 -0
- package/dist/types/components/internal/Popover/utils/popoverUtil.d.ts.map +1 -0
- package/dist/types/components/internal/SVGIcons/Close.d.ts +4 -0
- package/dist/types/components/internal/SVGIcons/Close.d.ts.map +1 -0
- package/dist/types/components/internal/SVGIcons/Copy.d.ts +4 -0
- package/dist/types/components/internal/SVGIcons/Copy.d.ts.map +1 -0
- package/dist/types/components/internal/SVGIcons/Filter.d.ts +4 -0
- package/dist/types/components/internal/SVGIcons/Filter.d.ts.map +1 -0
- package/dist/types/components/internal/Tooltip/Tooltip.d.ts +5 -0
- package/dist/types/components/internal/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/types/components/internal/Tooltip/types.d.ts +13 -0
- package/dist/types/components/internal/Tooltip/types.d.ts.map +1 -0
- package/dist/types/components/internal/Tooltip/useTooltipListeners.d.ts +12 -0
- package/dist/types/components/internal/Tooltip/useTooltipListeners.d.ts.map +1 -0
- package/dist/types/components/internal/Typography/constants.d.ts +1 -1
- package/dist/types/components/utils/transactionResourceErrorCodes.d.ts +6 -2
- package/dist/types/components/utils/transactionResourceErrorCodes.d.ts.map +1 -1
- package/dist/types/constants.d.ts +6 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/core/Auth/AuthContext.d.ts +2 -2
- package/dist/types/core/Auth/AuthContext.d.ts.map +1 -1
- package/dist/types/core/Auth/AuthProvider.d.ts.map +1 -1
- package/dist/types/core/Auth/types.d.ts +9 -2
- package/dist/types/core/Auth/types.d.ts.map +1 -1
- package/dist/types/core/Auth/useAuthContext.d.ts +1 -1
- package/dist/types/core/Auth/useAuthContext.d.ts.map +1 -1
- package/dist/types/core/Errors/AdyenPlatformExperienceError.d.ts +9 -0
- package/dist/types/core/Errors/AdyenPlatformExperienceError.d.ts.map +1 -0
- package/dist/types/core/Localization/Localization.d.ts +7 -0
- package/dist/types/core/Localization/Localization.d.ts.map +1 -1
- package/dist/types/core/Localization/constants/locale.d.ts +17 -7
- package/dist/types/core/Localization/constants/locale.d.ts.map +1 -1
- package/dist/types/core/Localization/localization-utils.d.ts +1 -0
- package/dist/types/core/Localization/localization-utils.d.ts.map +1 -1
- package/dist/types/core/Localization/translations/index.d.ts +17 -7
- package/dist/types/core/Localization/translations/index.d.ts.map +1 -1
- package/dist/types/core/Localization/utils.d.ts +17 -7
- package/dist/types/core/Localization/utils.d.ts.map +1 -1
- package/dist/types/core/Services/requests/http.d.ts.map +1 -1
- package/dist/types/core/Services/requests/types.d.ts +2 -0
- package/dist/types/core/Services/requests/types.d.ts.map +1 -1
- package/dist/types/core/Services/requests/utils.d.ts +2 -1
- package/dist/types/core/Services/requests/utils.d.ts.map +1 -1
- package/dist/types/core/core.d.ts +1 -0
- package/dist/types/core/core.d.ts.map +1 -1
- package/dist/types/core/types.d.ts +1 -0
- package/dist/types/core/types.d.ts.map +1 -1
- package/dist/types/hooks/element/useClickOutside.d.ts +5 -1
- package/dist/types/hooks/element/useClickOutside.d.ts.map +1 -1
- package/dist/types/hooks/element/usePopoverPositioner.d.ts +2 -2
- package/dist/types/hooks/element/usePopoverPositioner.d.ts.map +1 -1
- package/dist/types/hooks/useSessionAwareRequest/useSessionAwareRequest.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/types.d.ts +1 -1
- package/dist/types/utils/types.d.ts.map +1 -1
- package/dist/types-0027b7c2.mjs +9 -0
- package/dist/types-0aaff3aa.mjs +19 -0
- package/dist/types-7ad6576a.mjs +10 -0
- package/dist/types-deec0d78.mjs +14 -0
- package/dist/types-e6a6a3ff.mjs +9 -0
- package/dist/usePaginatedRecords-63a69bf1.mjs +131 -0
- package/dist/usePopoverPositioner-882fea89.mjs +182 -0
- package/dist/vendor-vi.a3ff54b1-5e924357.mjs +22389 -0
- package/package.json +9 -8
- package/dist/ModalContent-e2777391.js +0 -2
- package/dist/ModalContent-e2777391.js.map +0 -1
- package/dist/es/components/external/TransactionDetails/components/TransactionDetails.scss.js +0 -4
- package/dist/es/components/external/Transactions/TransactionsOverviewElement.js +0 -28
- package/dist/es/components/external/Transactions/components/AmountSkeleton/AmountSkeleton.js +0 -9
- package/dist/es/components/external/Transactions/components/AmountSkeleton/AmountSkeleton.scss.js +0 -4
- package/dist/es/components/external/Transactions/components/AmountSkeleton/constants.js +0 -6
- package/dist/es/components/external/Transactions/components/BalanceAccountSelector/BalanceAccountSelector.js +0 -23
- package/dist/es/components/external/Transactions/components/BalanceAccountSelector/useBalanceAccountSelection.js +0 -17
- package/dist/es/components/external/Transactions/components/BalanceItem/BalanceItem.js +0 -35
- package/dist/es/components/external/Transactions/components/Balances/Balances.js +0 -49
- package/dist/es/components/external/Transactions/components/Balances/constants.js +0 -4
- package/dist/es/components/external/Transactions/components/ModalContent.js +0 -12
- package/dist/es/components/external/Transactions/components/MultiSelectionFilter/MultiSelectionFilter.js +0 -25
- package/dist/es/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/constants.js +0 -24
- package/dist/es/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.js +0 -21
- package/dist/es/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/utils.js +0 -9
- package/dist/es/components/external/Transactions/components/SummaryItem/SummaryItem.js +0 -42
- package/dist/es/components/external/Transactions/components/SummaryItem/SummaryItem.scss.js +0 -4
- package/dist/es/components/external/Transactions/components/SummaryItem/constants.js +0 -8
- package/dist/es/components/external/Transactions/components/TransactionList.js +0 -130
- package/dist/es/components/external/Transactions/components/TransactionList.scss.js +0 -4
- package/dist/es/components/external/Transactions/components/TransactionListError/TransactionListError.js +0 -20
- package/dist/es/components/external/Transactions/components/TransactionTotalItem/TransactionTotalItem.js +0 -48
- package/dist/es/components/external/Transactions/components/TransactionTotals/TransactionTotals.js +0 -66
- package/dist/es/components/external/Transactions/components/TransactionTotals/constants.js +0 -4
- package/dist/es/components/external/Transactions/components/TransactionsOverview.js +0 -151
- package/dist/es/components/external/Transactions/components/TransactionsOverviewContainer.js +0 -36
- package/dist/es/components/external/Transactions/components/TransactionsOverviewDateFilter.js +0 -61
- package/dist/es/components/external/Transactions/hooks/useDefaultTransactionsOverviewFilterParams.js +0 -22
- package/dist/es/components/external/Transactions/hooks/useMaxWidths.js +0 -15
- package/dist/es/components/external/Transactions/hooks/useTransactionsOverviewMultiSelectionFilters.js +0 -29
- package/dist/es/components/external/Transactions/types.js +0 -4
- package/dist/es/components/internal/BaseButton/BaseButton.scss.js +0 -4
- package/dist/es/components/internal/BaseList/BaseList.scss.js +0 -4
- package/dist/es/components/internal/Button/Button.scss.js +0 -4
- package/dist/es/components/internal/Button/ButtonActions/ButtonActions.scss.js +0 -4
- package/dist/es/components/internal/Button/ButtonActions/types.js +0 -7
- package/dist/es/components/internal/Button/types.js +0 -4
- package/dist/es/components/internal/Calendar/Calendar.scss.js +0 -4
- package/dist/es/components/internal/Calendar/calendar/types.js +0 -15
- package/dist/es/components/internal/Calendar/types.js +0 -4
- package/dist/es/components/internal/DataGrid/DataGrid.scss.js +0 -4
- package/dist/es/components/internal/DataGrid/types.js +0 -4
- package/dist/es/components/internal/DatePicker/DatePicker.scss.js +0 -4
- package/dist/es/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.scss.js +0 -4
- package/dist/es/components/internal/ExpandableCard/ExpandableCard.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/FilterBar.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/components/FilterButton/FilterButton.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/filters/AmountFilter/AmountFilter.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/filters/BaseFilter/BaseFilter.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/filters/DateFilter/DateFilter.scss.js +0 -4
- package/dist/es/components/internal/FilterBar/filters/DateFilter/types.js +0 -4
- package/dist/es/components/internal/FormFields/FormFields.scss.js +0 -4
- package/dist/es/components/internal/FormFields/Select/Select.scss.js +0 -4
- package/dist/es/components/internal/Img/Img.scss.js +0 -4
- package/dist/es/components/internal/Modal/Modal.scss.js +0 -4
- package/dist/es/components/internal/Pagination/Pagination.scss.js +0 -4
- package/dist/es/components/internal/Pagination/types.js +0 -5
- package/dist/es/components/internal/Popover/Popover.scss.js +0 -4
- package/dist/es/components/internal/Popover/PopoverContainer.scss.js +0 -4
- package/dist/es/components/internal/Popover/PopoverDismissButton/PopoverDismissButton.scss.js +0 -4
- package/dist/es/components/internal/Popover/types.js +0 -6
- package/dist/es/components/internal/Spinner/Spinner.scss.js +0 -4
- package/dist/es/components/internal/Tag/Tag.scss.js +0 -4
- package/dist/es/components/internal/Tag/types.js +0 -4
- package/dist/es/components/internal/Typography/Typography.scss.js +0 -4
- package/dist/es/components/internal/Typography/types.js +0 -6
- package/dist/es/components/shared.scss.js +0 -4
- package/dist/es/components/types.js +0 -4
- package/dist/es/core/Errors/AdyenFPError.js +0 -15
- package/dist/es/core/Localization/translations/ar.json.js +0 -4
- package/dist/es/core/Localization/translations/cs-CZ.json.js +0 -4
- package/dist/es/core/Localization/translations/da-DK.json.js +0 -4
- package/dist/es/core/Localization/translations/de-DE.json.js +0 -4
- package/dist/es/core/Localization/translations/el-GR.json.js +0 -4
- package/dist/es/core/Localization/translations/en-US.json.js +0 -358
- package/dist/es/core/Localization/translations/es-ES.json.js +0 -255
- package/dist/es/core/Localization/translations/fi-FI.json.js +0 -4
- package/dist/es/core/Localization/translations/fr-FR.json.js +0 -4
- package/dist/es/core/Localization/translations/hr-HR.json.js +0 -4
- package/dist/es/core/Localization/translations/hu-HU.json.js +0 -4
- package/dist/es/core/Localization/translations/it-IT.json.js +0 -4
- package/dist/es/core/Localization/translations/ja-JP.json.js +0 -4
- package/dist/es/core/Localization/translations/ko-KR.json.js +0 -4
- package/dist/es/core/Localization/translations/nl-NL.json.js +0 -4
- package/dist/es/core/Localization/translations/no-NO.json.js +0 -4
- package/dist/es/core/Localization/translations/pl-PL.json.js +0 -4
- package/dist/es/core/Localization/translations/pt-BR.json.js +0 -4
- package/dist/es/core/Localization/translations/pt-PT.json.js +0 -4
- package/dist/es/core/Localization/translations/ro-RO.json.js +0 -4
- package/dist/es/core/Localization/translations/ru-RU.json.js +0 -4
- package/dist/es/core/Localization/translations/sk-SK.json.js +0 -4
- package/dist/es/core/Localization/translations/sl-SI.json.js +0 -4
- package/dist/es/core/Localization/translations/sv-SE.json.js +0 -4
- package/dist/es/core/Localization/translations/zh-CN.json.js +0 -4
- package/dist/es/core/Localization/translations/zh-TW.json.js +0 -4
- package/dist/es/external/preact/compat/dist/compat.module.js +0 -253
- package/dist/es/external/preact/dist/preact.module.js +0 -309
- package/dist/es/external/preact/hooks/dist/hooks.module.js +0 -161
- package/dist/es/external/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -19
- package/dist/es/hooks/useCommitAction/types.js +0 -4
- package/dist/es/hooks/useModalDetails/types.js +0 -6
- package/dist/es/images/no-data-female.svg.js +0 -4
- package/dist/es/images/no-results.svg.js +0 -4
- package/dist/es/style/index.scss.js +0 -4
- package/dist/index-0c9f4def.js +0 -12
- package/dist/index-0c9f4def.js.map +0 -1
- package/dist/style.css +0 -1
- package/dist/types/components/external/Transactions/TransactionsOverviewElement.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/AmountSkeleton/AmountSkeleton.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/AmountSkeleton/constants.d.ts +0 -4
- package/dist/types/components/external/Transactions/components/AmountSkeleton/constants.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/AmountSkeleton/types.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/BalanceAccountSelector/BalanceAccountSelector.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/BalanceAccountSelector/index.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/BalanceAccountSelector/useBalanceAccountSelection.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/BalanceItem/BalanceItem.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/BalanceItem/types.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/Balances/Balances.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/Balances/constants.d.ts +0 -2
- package/dist/types/components/external/Transactions/components/Balances/constants.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/ModalContent.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/MultiSelectionFilter.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/index.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/constants.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/index.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/types.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/MultiSelectionFilter/useMultiSelectionFilter/utils.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/SummaryItem/SummaryItem.d.ts +0 -4
- package/dist/types/components/external/Transactions/components/SummaryItem/SummaryItem.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/SummaryItem/constants.d.ts +0 -6
- package/dist/types/components/external/Transactions/components/SummaryItem/constants.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/SummaryItem/types.d.ts +0 -20
- package/dist/types/components/external/Transactions/components/SummaryItem/types.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionList.d.ts +0 -6
- package/dist/types/components/external/Transactions/components/TransactionList.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionListError/TransactionListError.d.ts +0 -7
- package/dist/types/components/external/Transactions/components/TransactionListError/TransactionListError.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionTotalItem/TransactionTotalItem.d.ts +0 -3
- package/dist/types/components/external/Transactions/components/TransactionTotalItem/TransactionTotalItem.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionTotalItem/types.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionTotals/TransactionTotals.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionTotals/constants.d.ts +0 -2
- package/dist/types/components/external/Transactions/components/TransactionTotals/constants.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionsOverview.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionsOverviewContainer.d.ts +0 -6
- package/dist/types/components/external/Transactions/components/TransactionsOverviewContainer.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/TransactionsOverviewDateFilter.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/components/utils.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/hooks/useDefaultTransactionsOverviewFilterParams.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/hooks/useMaxWidths.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/hooks/useTransactionsOverviewMultiSelectionFilters.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/index.d.ts +0 -3
- package/dist/types/components/external/Transactions/index.d.ts.map +0 -1
- package/dist/types/components/external/Transactions/types.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/Checkbox/Checkbox.d.ts +0 -22
- package/dist/types/components/internal/FormFields/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/Checkbox/index.d.ts +0 -2
- package/dist/types/components/internal/FormFields/Checkbox/index.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/InputDate/InputDate.d.ts +0 -3
- package/dist/types/components/internal/FormFields/InputDate/InputDate.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/InputDate/index.d.ts +0 -2
- package/dist/types/components/internal/FormFields/InputDate/index.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/InputDate/utils.d.ts +0 -22
- package/dist/types/components/internal/FormFields/InputDate/utils.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/InputEmail.d.ts +0 -3
- package/dist/types/components/internal/FormFields/InputEmail.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/InputTelephone.d.ts +0 -3
- package/dist/types/components/internal/FormFields/InputTelephone.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/RadioGroup/RadioGroup.d.ts +0 -11
- package/dist/types/components/internal/FormFields/RadioGroup/RadioGroup.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/RadioGroup/index.d.ts +0 -2
- package/dist/types/components/internal/FormFields/RadioGroup/index.d.ts.map +0 -1
- package/dist/types/components/internal/FormFields/RadioGroup/types.d.ts +0 -19
- package/dist/types/components/internal/FormFields/RadioGroup/types.d.ts.map +0 -1
- package/dist/types/core/Errors/AdyenFPError.d.ts +0 -8
- package/dist/types/core/Errors/AdyenFPError.d.ts.map +0 -1
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/TransactionsOverviewElement.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/AmountSkeleton/types.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/BalanceAccountSelector/index.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/BalanceAccountSelector/useBalanceAccountSelection.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/BalanceItem/types.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/ModalContent.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/MultiSelectionFilter.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/index.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/useMultiSelectionFilter/constants.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/useMultiSelectionFilter/index.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/useMultiSelectionFilter/types.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/MultiSelectionFilter/useMultiSelectionFilter/utils.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/components/TransactionsOverviewDateFilter.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/hooks/useMaxWidths.d.ts +0 -0
- /package/dist/types/components/external/{Transactions → TransactionsOverview}/hooks/useTransactionsOverviewMultiSelectionFilters.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-2231054e.js","sources":["../../src/core/config.ts","../../src/core/utils.ts","../../src/core/Services/sessions/constants.ts","../../src/core/Errors/AdyenPlatformExperienceError.ts","../../src/core/Services/requests/utils.ts","../../src/core/Services/requests/http.ts","../../src/core/Services/sessions/setup-session.ts","../../src/utils/Storage.ts","../../src/core/Session/utils.ts","../../src/core/Session/Session.ts","../../src/core/Localization/constants/currency-codes.ts","../../src/core/Localization/constants/currency-decimals.ts","../../src/core/Localization/amount/amount-util.ts","../../src/core/Localization/constants/locale.ts","../../src/core/Localization/constants/localization.ts","../../src/utils/common/constants.ts","../../src/utils/common/index.ts","../../src/core/Localization/datetime/restamper/constants.ts","../../src/core/Localization/datetime/restamper/utils.ts","../../src/core/Localization/datetime/restamper/restamper.ts","../../src/core/Localization/translations/index.ts","../../src/core/Localization/utils.ts","../../src/core/Localization/localization-utils.ts","../../src/utils/watchable/core/syncEffect.ts","../../src/utils/watchable/core/helpers.ts","../../src/utils/watchable/constants.ts","../../src/utils/watchable/core/Watchable.ts","../../src/utils/watchable/index.ts","../../src/core/Localization/Localization.ts","../../src/core/core.ts","../../../../node_modules/preact/dist/preact.module.js","../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../src/core/Auth/AuthContext.ts","../../../../node_modules/preact/hooks/dist/hooks.module.js","../../src/core/Auth/AuthProvider.tsx","../../src/core/Context/CoreContext.ts","../../src/hooks/useBooleanState/useBooleanState.ts","../../src/core/Context/CoreProvider.tsx","../../src/components/external/EventEmitter.ts","../../src/utils/uuid.ts","../../src/utils/validator-utils.ts","../../src/components/external/BaseElement.ts","../../src/utils/get-image.ts","../../src/components/external/UIElement.tsx","../../src/core/Auth/useAuthContext.ts","../../src/hooks/useSessionAwareRequest/useSessionAwareRequest.ts","../../src/core/Context/useCoreContext.ts","../../src/hooks/useSetupEndpoint/useSetupEndpoint.ts","../../src/hooks/useFetch/useFetch.ts","../../src/constants.ts","../../src/components/external/TransactionsOverview/hooks/useMediaQuery.ts","../../src/components/internal/Button/types.ts","../../src/components/internal/SVGIcons/Close.tsx","../../src/components/internal/SVGIcons/Filter.tsx","../../src/components/internal/Typography/types.ts","../../src/components/internal/Typography/constants.ts","../../../../node_modules/preact/compat/dist/compat.module.js","../../src/components/internal/Typography/Typography.tsx","../../src/utils/class-name-utils.ts","../../src/components/internal/Button/hooks/useButton.ts","../../src/components/internal/Button/constants.ts","../../src/components/internal/Button/Button.tsx","../../src/components/internal/FilterBar/FilterBar.tsx","../../src/components/external/TransactionsOverview/types.ts","../../src/components/internal/Modal/Modal.tsx","../../src/components/internal/Popover/utils/popoverUtil.ts","../../src/components/internal/Spinner/Spinner.tsx","../../src/hooks/useModalDetails/types.ts","../../src/hooks/useModalDetails/useModalDetails.ts","../../src/components/external/TransactionsOverview/components/TransactionsDisplay/constants.ts","../../src/components/internal/Button/ButtonActions/types.ts","../../src/components/internal/Button/ButtonActions/ButtonActions.tsx","../../src/components/internal/Popover/constants.ts","../../src/components/internal/Popover/PopoverDismissButton/PopoverDismissButton.tsx","../../src/components/internal/Popover/PopoverTitle/PopoverTitle.tsx","../../src/components/internal/Popover/types.ts","../../src/components/types.ts","../../src/hooks/useReflex/constants.ts","../../src/hooks/useReflex/errors.ts","../../src/hooks/useReflex/core/utils.ts","../../src/hooks/useReflex/core/registry.ts","../../src/hooks/useReflex/core/reflex.ts","../../src/hooks/useReflex/hooks/useReflex.ts","../../src/hooks/element/useClickOutside.ts","../../src/utils/tabbable.ts","../../src/hooks/element/useFocusTrap.ts","../../src/components/internal/Popover/utils/utils.ts","../../src/hooks/element/usePopoverPositioner.ts","../../src/utils/idGenerator.ts","../../src/hooks/element/useUniqueIdentifier.ts","../../src/components/internal/Popover/Popover.tsx","../../src/components/internal/Tooltip/useTooltipListeners.ts","../../src/components/internal/Tooltip/Tooltip.tsx","../../src/components/external/TransactionsOverview/components/Category/Category.tsx","../../src/components/internal/DataGrid/DataGridCell.tsx","../../src/components/internal/DataGrid/components/TableCells.tsx","../../src/components/internal/DataGrid/components/TableBody.tsx","../../src/components/internal/DataGrid/hooks/useInteractiveDataGrid.ts","../../src/components/internal/DataGrid/components/InteractiveBody.tsx","../../src/components/internal/DataGrid/types.ts","../../src/components/internal/DataGrid/components/SkeletonBody.tsx","../../src/images/no-results.svg","../../src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay.tsx","../../src/images/no-data-female.svg","../../src/components/internal/DataGrid/DataGrid.tsx","../../src/core/Errors/constants.ts","../../src/hooks/useCommitAction/types.ts","../../src/hooks/useCommitAction/useCommitAction.ts","../../src/components/internal/Img/Img.tsx","../../src/utils/fixedForwardRef.ts","../../src/components/internal/SVGIcons/ChevronDown.tsx","../../src/components/internal/FormFields/Select/constants.ts","../../src/components/internal/FormFields/Select/components/SelectButton.tsx","../../src/components/internal/SVGIcons/CheckedBox.tsx","../../src/components/internal/SVGIcons/UncheckedBox.tsx","../../src/components/internal/SVGIcons/Checkmark.tsx","../../src/components/internal/FormFields/Select/components/SelectListItem.tsx","../../src/components/internal/FormFields/Select/components/SelectList.tsx","../../src/components/internal/FormFields/Select/hooks/useSelect.ts","../../src/components/internal/FormFields/Select/Select.tsx","../../src/components/internal/SVGIcons/ChevronLeft.tsx","../../src/components/internal/SVGIcons/ChevronRight.tsx","../../src/components/internal/Pagination/Pagination.tsx","../../src/components/external/TransactionsOverview/components/utils.ts","../../src/components/internal/Tag/types.ts","../../src/components/internal/Tag/Tag.tsx","../../src/hooks/useImageUrl/useImageUrl.ts","../../src/components/internal/Image/Image.tsx","../../src/components/internal/SVGIcons/Copy.tsx","../../src/components/internal/CopyText/CopyText.tsx","../../src/components/utils/transactionResourceErrorCodes.tsx","../../src/components/external/TransactionsOverview/components/TransactionListError/TransactionListError.tsx","../../src/components/external/TransactionsOverview/components/TransactionsTable/constants.ts","../../src/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable.tsx","../../src/components/external/TransactionsOverview/components/TransactionsDisplay/TransactionsDisplay.tsx","../../src/components/internal/Pagination/constants.ts","../../src/components/internal/Pagination/utils.ts","../../src/components/internal/Pagination/hooks/usePageLimit.ts","../../src/hooks/useMounted/useMounted.ts","../../src/components/internal/Pagination/hooks/usePagination.ts","../../src/components/internal/Pagination/hooks/useCursorPagination.ts","../../src/components/internal/Pagination/hooks/useOffsetPagination.ts","../../src/hooks/useReactiveState/useReactiveState.ts","../../src/components/internal/Pagination/hooks/usePaginatedRecordsFilters.ts","../../src/components/internal/Pagination/types.ts","../../src/components/internal/Pagination/hooks/usePaginatedRecords.ts","../../src/components/internal/Pagination/hooks/useCursorPaginatedRecords.ts","../../src/components/internal/Calendar/clock/clock.ts","../../src/components/internal/Calendar/clock/today.ts","../../src/components/internal/Calendar/hooks/useTimezone.ts","../../src/components/internal/Calendar/calendar/timerange/utils.ts","../../src/components/internal/Calendar/calendar/timerange/factory.ts","../../src/components/internal/Calendar/calendar/timerange/presets/shared/offsetWeek.ts","../../src/components/internal/Calendar/calendar/timerange/presets/shared/offsetMonth.ts","../../src/components/internal/Calendar/calendar/timerange/presets/lastMonth.ts","../../src/components/internal/Calendar/calendar/timerange/presets/lastNDays.ts","../../src/components/internal/Calendar/calendar/timerange/presets/lastWeek.ts","../../src/components/internal/Calendar/calendar/timerange/presets/thisMonth.ts","../../src/components/internal/Calendar/calendar/timerange/presets/thisWeek.ts","../../src/components/internal/Calendar/calendar/timerange/presets/yearToDate.ts","../../src/components/internal/DatePicker/components/TimeRangeSelector/useTimeRangeSelection.ts","../../src/components/internal/DatePicker/components/TimeRangeSelector/TimeRangeSelector.tsx","../../src/components/internal/Calendar/components/CalendarGrid/utils.ts","../../src/components/internal/Calendar/types.ts","../../src/utils/memoComparator/memoComparator.ts","../../src/components/internal/Calendar/components/CalendarGrid/CalendarGridDate.tsx","../../src/components/internal/Calendar/components/CalendarGrid/CalendarGridDayOfWeek.tsx","../../src/components/internal/Calendar/components/CalendarGrid/CalendarGrid.tsx","../../src/components/internal/Calendar/calendar/constants.ts","../../src/components/internal/Calendar/calendar/shared/indexed/index.ts","../../src/components/internal/Calendar/calendar/timeframe/common/utils.ts","../../src/components/internal/Calendar/calendar/utils.ts","../../src/components/internal/Calendar/calendar/timeslice/TimeSlice.ts","../../src/components/internal/Calendar/calendar/timeslice/index.ts","../../src/components/internal/Calendar/calendar/types.ts","../../src/components/internal/Calendar/calendar/timeframe/common/flags.ts","../../src/components/internal/Calendar/calendar/timeframe/frames/TimeFrame.ts","../../src/components/internal/Calendar/calendar/timeframe/frames/MonthFrame.ts","../../src/components/internal/Calendar/calendar/facade/Calendar.ts","../../src/components/internal/Calendar/calendar/facade/index.ts","../../src/components/internal/Calendar/components/CalendarControls/CalendarControls.tsx","../../src/hooks/element/useFocusCursor.ts","../../src/components/internal/Calendar/hooks/useCalendar.ts","../../src/components/internal/Calendar/Calendar.tsx","../../src/components/internal/SVGIcons/ChevronUp.tsx","../../src/hooks/element/useDetachedRender.ts","../../src/components/internal/Calendar/hooks/useCalendarControlsRendering.tsx","../../src/components/internal/DatePicker/DatePicker.tsx","../../src/components/internal/FilterBar/components/FilterButton/FilterButton.tsx","../../src/components/internal/FormFields/InputBase.tsx","../../src/components/internal/FormFields/InputText.tsx","../../src/components/internal/FilterBar/filters/BaseFilter/BaseFilter.tsx","../../src/components/internal/FilterBar/filters/DateFilter/types.ts","../../src/components/internal/FilterBar/filters/DateFilter/DateFilter.tsx","../../src/components/external/TransactionsOverview/components/TransactionsOverviewDateFilter.tsx","../../src/components/external/TransactionsOverview/components/TransactionTotals/constants.ts","../../src/components/internal/ExpandableCard/constants.ts","../../src/components/internal/BaseButton/constants.ts","../../src/components/internal/BaseButton/BaseButton.tsx","../../src/components/internal/ExpandableCard/ExpandableCard.tsx","../../src/components/external/TransactionsOverview/components/AmountSkeleton/constants.ts","../../src/components/external/TransactionsOverview/components/AmountSkeleton/AmountSkeleton.tsx","../../src/components/external/TransactionsOverview/components/SummaryItem/constants.ts","../../src/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel.tsx","../../src/components/external/TransactionsOverview/components/SummaryItem/SummaryItem.tsx","../../src/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem.tsx","../../src/components/internal/BaseList/constants.ts","../../src/components/internal/BaseList/BaseList.tsx","../../src/components/external/TransactionsOverview/hooks/useMaxWidths.ts","../../src/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard.tsx","../../src/components/external/TransactionsOverview/components/TransactionTotals/TransactionTotals.tsx","../../src/components/external/TransactionsOverview/components/Balances/constants.ts","../../src/components/external/TransactionsOverview/components/BalanceItem/BalanceItem.tsx","../../src/components/external/TransactionsOverview/components/Balances/Balances.tsx","../../src/components/external/TransactionsOverview/components/BalanceAccountSelector/BalanceAccountSelector.tsx","../../src/components/external/TransactionsOverview/components/BalanceAccountSelector/useBalanceAccountSelection.ts","../../src/components/external/TransactionsOverview/components/MultiSelectionFilter/MultiSelectionFilter.tsx","../../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/utils.ts","../../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/useMultiSelectionFilter.ts","../../src/components/external/TransactionsOverview/components/MultiSelectionFilter/useMultiSelectionFilter/constants.ts","../../src/components/external/TransactionsOverview/hooks/useDefaultTransactionsOverviewFilterParams.ts","../../src/components/external/TransactionsOverview/hooks/useTransactionsOverviewMultiSelectionFilters.ts","../../src/components/internal/FilterBar/filters/AmountFilter/constants.ts","../../src/components/internal/FilterBar/filters/AmountFilter/RangeSelection.tsx","../../src/components/internal/FilterBar/filters/AmountFilter/AmountFilter.tsx","../../src/components/external/TransactionsOverview/components/TransactionsOverview/constants.ts","../../src/components/external/TransactionsOverview/components/TransactionsOverview/TransactionsOverview.tsx","../../src/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants.ts","../../src/components/external/TransactionsOverview/components/TransactionsOverviewContainer/TransactionsOverviewContainer.tsx","../../src/components/external/TransactionsOverview/TransactionsOverviewElement.tsx","../../src/components/external/TransactionDetails/components/TransactionDataSkeleton.tsx","../../src/components/external/TransactionDetails/components/TransactionData.tsx","../../src/components/external/TransactionDetails/components/TransactionDetails.tsx","../../src/components/external/TransactionDetails/TransactionDetails.tsx","../../src/index.ts"],"sourcesContent":["/**\n * FALLBACK_CONTEXT\n */\n\n//TODO - Use real url once we have defined our BFF.\nexport const FALLBACK_CONTEXT = 'https://platform-components-external-test.adyen.com/platform-components-external/api/';\n\nexport default {\n FALLBACK_CONTEXT,\n};\n","import { FALLBACK_CONTEXT } from './config';\nimport { DevEnvironment } from './types';\n\n/**\n * Filter properties in a global configuration object from an allow list (GENERIC_OPTIONS)\n * @param globalOptions -\n * @returns any\n */\n\nexport function resolveEnvironment(env?: DevEnvironment) {\n //TODO - Use real urls once we have our BFF defined.\n const envs: Partial<Record<DevEnvironment, string>> = {\n test: 'https://platform-components-external-test.adyen.com/platform-components-external/api/',\n live: 'https://platform-components-external-live.adyen.com/platform-components-external/api/',\n };\n return env ? envs[env] || FALLBACK_CONTEXT : FALLBACK_CONTEXT;\n}\n\nexport const normalizeLoadingContext = (loadingContext: string) => (loadingContext.endsWith('/') ? loadingContext : `${loadingContext}/`);\nexport const normalizeUrl = (url: string) => (url.startsWith('/') ? url : `/${url}`);\n","export const API_VERSION = 'v1';\n","import { ErrorTypes } from '@src/core/Services/requests/utils';\n\nclass AdyenPlatformExperienceError extends Error {\n public type: string;\n public errorCode?: string;\n public requestId?: string;\n constructor(type: ErrorTypes, requestId?: string, message?: string, errorCode?: string) {\n super(message);\n this.type = type;\n this.name = type;\n this.errorCode = errorCode;\n this.requestId = requestId;\n }\n}\n\nexport default AdyenPlatformExperienceError;\n","import { AdyenErrorResponse, ErrorLevel, HttpOptions } from './types';\nimport AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\n\nexport const enum ErrorTypes {\n /** Network error. */\n NETWORK_ERROR = 'NETWORK_ERROR',\n\n /** Shopper canceled the current transaction. */\n CANCEL = 'CANCEL',\n\n /** Implementation error. The method or parameter are incorrect or are not supported. */\n IMPLEMENTATION_ERROR = 'IMPLEMENTATION_ERROR',\n\n /** Generic error. */\n ERROR = 'ERROR',\n\n /** Token expired */\n EXPIRED_TOKEN = 'EXPIRED_TOKEN',\n}\n\nexport const getErrorType = (errorCode: number): ErrorTypes => {\n switch (errorCode) {\n case 401:\n return ErrorTypes.EXPIRED_TOKEN;\n default:\n return ErrorTypes.NETWORK_ERROR;\n }\n};\n\nexport const getRequestObject = (options: HttpOptions, data?: any): RequestInit => {\n const { headers = [], method = 'GET' } = options;\n\n return {\n method,\n mode: 'cors',\n cache: 'default',\n credentials: 'same-origin',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n ...headers,\n },\n redirect: 'follow',\n signal: options.signal,\n referrerPolicy: 'no-referrer-when-downgrade',\n ...(method === 'POST' && data && { body: JSON.stringify(data) }),\n };\n};\n\nexport function handleFetchError({\n message,\n level,\n errorCode,\n type = ErrorTypes.NETWORK_ERROR,\n requestId,\n}: {\n message: string;\n level: ErrorLevel | undefined;\n errorCode?: string;\n type?: ErrorTypes;\n requestId?: string;\n}) {\n switch (level) {\n case 'silent': {\n break;\n }\n case 'info':\n case 'warn':\n console[level](message);\n break;\n case 'error':\n default:\n throw new AdyenPlatformExperienceError(type, requestId, message, errorCode);\n }\n}\n\nexport function isAdyenErrorResponse(data: any): data is AdyenErrorResponse {\n return data && data.errorCode && data.type && (data.detail || data.invalidFields) && data.status;\n}\n\nexport function parseSearchParams<T extends Record<string, any>>(parameters: T) {\n const params = new URLSearchParams();\n\n for (const param of Object.keys(parameters)) {\n const value = parameters[param];\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach(item => params.append(param, item));\n } else {\n // For non-array values, just set the key and value normally\n params.set(param, String(value));\n }\n }\n }\n\n return params;\n}\n","import { API_VERSION } from '@src/core/Services/sessions/constants';\nimport { getErrorType, getRequestObject, handleFetchError, isAdyenErrorResponse } from './utils';\nimport { HttpOptions } from './types';\nimport { normalizeLoadingContext, normalizeUrl } from '@src/core/utils';\n\nexport async function http<T>(options: HttpOptions, data?: any): Promise<T> {\n const { errorLevel, loadingContext = '', path } = options;\n\n const request = getRequestObject(options, data);\n\n const url = new URL(`${normalizeLoadingContext(loadingContext)}${API_VERSION}${normalizeUrl(path)}`);\n\n if (options.params) {\n options.params.forEach((value, param) => {\n const decodedValue = decodeURIComponent(value);\n if (decodedValue) url.searchParams.append(param, decodedValue);\n });\n }\n\n return (async () => {\n const error = { level: errorLevel } as Parameters<typeof handleFetchError>[0];\n let errorPassThrough = false;\n\n handle: {\n try {\n /**\n * There can be network error, abort, cors errors etc.\n */\n const res = await fetch(url, request); // (1)\n\n if (res.ok) {\n /**\n * Response has no content body or body is not valid json this will fail\n * We don't want to interfere the error so this will be propagated to the user\n * We might need relabel the error like malformed content so that, user can distinguish from other errors\n */\n errorPassThrough = true;\n return await res.json(); // (!)\n }\n\n error.type = getErrorType(res.status);\n /**\n * Response has no content body or body is not valid json this will fail\n * We will handle this error since we have the errorCode\n */\n const response = await res.json(); // (2)\n\n error.message = options.errorMessage || `Service at ${url} is not available`;\n error.errorCode = String(response.status);\n error.requestId = response?.requestId;\n\n if (isAdyenErrorResponse(response)) {\n if (options.errorHandler) {\n /**\n * This will throw if the logic of consumer for the errorHanler results an error\n * We don't want to interfere the error so this will be propagated to the user\n */\n errorPassThrough = true;\n options.errorHandler(response); // (!)\n break handle;\n }\n\n error.message = response.detail;\n error.errorCode = response.errorCode;\n }\n } catch (ex) {\n if (errorPassThrough) {\n /**\n * This is the point that we are throwing an error for the places that we labeled as errorPassThrough\n */\n throw ex;\n }\n error.message = options.errorMessage || `Call to ${url} failed. Error= ${ex}`;\n }\n\n /**\n * This will throw an error if the level is error\n * @see {handleFetchError}\n */\n handleFetchError(error);\n }\n })();\n}\n\nexport function httpGet<T>(options: Omit<HttpOptions, 'method'>): Promise<T> {\n return http<T>({ ...options, method: 'GET' });\n}\n\nexport function httpPost<T>(options: Omit<HttpOptions, 'method'>, data?: any): Promise<T> {\n return http<T>({ ...options, method: 'POST' }, data);\n}\n","import Session from '../../Session/Session';\nimport { httpPost } from '../requests/http';\nimport { SessionSetupResponse } from '../../Session/types';\n\nfunction setupSession(session: Session, options?: Record<string, any>): Promise<SessionSetupResponse> {\n const path = `/setup`;\n\n return httpPost<SessionSetupResponse>(\n {\n errorLevel: 'fatal',\n errorMessage: 'ERROR: Invalid ClientKey',\n ...(options ?? {}),\n loadingContext: session.loadingContext,\n path,\n headers: {\n Authorization: `Bearer ${session.token}`,\n },\n },\n {}\n );\n}\n\nexport default setupSession;\n","class Storage<T> {\n private readonly prefix = 'adyen-pe-';\n private readonly key: string;\n private storage: globalThis.Storage;\n\n constructor(key: string, storage = window.localStorage) {\n this.storage = storage;\n this.key = this.prefix + key;\n }\n\n public get(): T | null {\n const storageItem = this.storage.getItem(this.key);\n if (storageItem) {\n try {\n return JSON.parse(storageItem);\n } catch (err) {\n return null;\n }\n }\n return null;\n }\n\n public set(value: T) {\n this.storage.setItem(this.key, JSON.stringify(value));\n }\n\n public remove() {\n this.storage.removeItem(this.key);\n }\n}\n\nexport default Storage;\n","import { SessionResponse } from './types';\n\nexport function sanitizeSession(session: SessionResponse): Partial<SessionResponse> {\n if (!session || !session.id || !session.token) throw new Error('Invalid session');\n\n return {\n id: session.id,\n token: session.token,\n };\n}\n","import setupSession from '../Services/sessions/setup-session';\nimport Storage from '../../utils/Storage';\nimport { sanitizeSession } from './utils';\nimport { SessionResponse, SessionSetupResponse } from './types';\n\nclass Session {\n private readonly session: SessionResponse;\n private readonly storage: Storage<SessionResponse>;\n public readonly loadingContext: string;\n public configuration?: SessionSetupResponse;\n\n constructor(rawSession: SessionResponse, loadingContext: string) {\n //If there isn't any id then sanitize will throw invalid session error\n const session = sanitizeSession(rawSession) as SessionResponse;\n\n this.storage = new Storage('session');\n this.loadingContext = loadingContext;\n this.session = session;\n\n if (!this.session.token) {\n this.session = this.getStoredSession();\n } else {\n this.storeSession();\n }\n }\n\n get id() {\n return this.session.id;\n }\n\n get token() {\n return this.session.token;\n }\n\n /**\n * Updates the session.data with the latest data blob\n */\n private updateSessionData(latestData: string): void {\n this.session.token = latestData;\n this.storeSession();\n }\n\n /**\n * Fetches data from a session\n */\n setupSession(options: Record<string, any>) {\n return setupSession(this, options)\n .then(response => {\n if (response.endpoints) {\n this.configuration = { ...response };\n }\n return response;\n })\n .catch(e => {\n throw e;\n });\n }\n\n /**\n * Gets the stored session but only if the current id and the stored id match\n */\n getStoredSession(): SessionResponse {\n const storedSession = this.storage.get();\n return this.id === storedSession?.id ? storedSession : this.session;\n }\n\n /**\n * Stores the session\n */\n storeSession(): void {\n this.storage.set({ id: this.session.id, token: this.session.token });\n }\n\n /**\n * Clears the stored session\n */\n removeStoredSession(): void {\n this.storage.remove();\n }\n}\n\nexport default Session;\n","/**\n * Currency Codes\n */\nconst CURRENCY_CODES = {\n AED: 'د.إ',\n AFN: '؋',\n ALL: 'L',\n ANG: 'ƒ',\n AOA: 'Kz',\n ARS: '$',\n AUD: '$',\n AWG: 'ƒ',\n AZN: '₼',\n BAM: 'KM',\n BBD: '$',\n BDT: '৳',\n BGN: 'лв',\n BHD: '.د.ب',\n BIF: 'FBu',\n BMD: '$',\n BND: '$',\n BOB: 'Bs.',\n BRL: 'R$',\n BSD: '$',\n BTC: '฿',\n BTN: 'Nu.',\n BWP: 'P',\n BYR: 'p.',\n BYN: 'Br',\n BZD: 'BZ$',\n CAD: '$',\n CDF: 'FC',\n CHF: 'Fr.',\n CLP: '$',\n CNY: '¥',\n COP: '$',\n CRC: '₡',\n CUC: '$',\n CUP: '₱',\n CVE: '$',\n CZK: 'Kč',\n DJF: 'Fdj',\n DKK: 'kr',\n DOP: 'RD$',\n DZD: 'دج',\n EEK: 'kr',\n EGP: '£',\n ERN: 'Nfk',\n ETB: 'Br',\n EUR: '€',\n FJD: '$',\n FKP: '£',\n GBP: '£',\n GEL: '₾',\n GGP: '£',\n GHC: '₵',\n GHS: 'GH₵',\n GIP: '£',\n GMD: 'D',\n GNF: 'FG',\n GTQ: 'Q',\n GYD: '$',\n HKD: '$',\n HNL: 'L',\n HRK: 'kn',\n HTG: 'G',\n HUF: 'Ft',\n IDR: 'Rp',\n ILS: '₪',\n IMP: '£',\n INR: '₹',\n IQD: 'ع.د',\n IRR: '﷼',\n ISK: 'kr',\n JEP: '£',\n JMD: 'J$',\n JPY: '¥',\n KES: 'KSh',\n KGS: 'лв',\n KHR: '៛',\n KMF: 'CF',\n KPW: '₩',\n KRW: '₩',\n KYD: '$',\n KZT: '₸',\n LAK: '₭',\n LBP: '£',\n LKR: '₨',\n LRD: '$',\n LSL: 'M',\n LTL: 'Lt',\n LVL: 'Ls',\n MAD: 'MAD',\n MDL: 'lei',\n MGA: 'Ar',\n MKD: 'ден',\n MMK: 'K',\n MNT: '₮',\n MOP: 'MOP$',\n MUR: '₨',\n MVR: 'Rf',\n MWK: 'MK',\n MXN: '$',\n MYR: 'RM',\n MZN: 'MT',\n NAD: '$',\n NGN: '₦',\n NIO: 'C$',\n NOK: 'kr',\n NPR: '₨',\n NZD: '$',\n OMR: '﷼',\n PAB: 'B/.',\n PEN: 'S/.',\n PGK: 'K',\n PHP: '₱',\n PKR: '₨',\n PLN: 'zł',\n PYG: 'Gs',\n QAR: '﷼',\n RMB: '¥',\n RON: 'lei',\n RSD: 'Дин.',\n RUB: '₽',\n RWF: 'R₣',\n SAR: '﷼',\n SBD: '$',\n SCR: '₨',\n SDG: 'ج.س.',\n SEK: 'kr',\n SGD: '$',\n SHP: '£',\n SLL: 'Le',\n SOS: 'S',\n SRD: '$',\n SSP: '£',\n STD: 'Db',\n SVC: '$',\n SYP: '£',\n SZL: 'E',\n THB: '฿',\n TJS: 'SM',\n TMT: 'T',\n TND: 'د.ت',\n TOP: 'T$',\n TRL: '₤',\n TRY: '₺',\n TTD: 'TT$',\n TVD: '$',\n TWD: 'NT$',\n TZS: 'TSh',\n UAH: '₴',\n UGX: 'USh',\n USD: '$',\n UYU: '$U',\n UZS: 'лв',\n VEF: 'Bs',\n VND: '₫',\n VUV: 'VT',\n WST: 'WS$',\n XAF: 'FCFA',\n XBT: 'Ƀ',\n XCD: '$',\n XOF: 'CFA',\n XPF: '₣',\n YER: '﷼',\n ZAR: 'R',\n ZWD: 'Z$',\n};\n\nexport default CURRENCY_CODES;\n","const CURRENCY_DECIMALS = {\n // ZERO_DECIMAL_CURRENCIES\n IDR: 1,\n JPY: 1,\n KRW: 1,\n VND: 1,\n BYR: 1,\n CVE: 1,\n DJF: 1,\n GHC: 1,\n GNF: 1,\n KMF: 1,\n PYG: 1,\n RWF: 1,\n UGX: 1,\n VUV: 1,\n XAF: 1,\n XOF: 1,\n XPF: 1,\n\n // ONE_DECIMAL_CURRENCIES\n MRO: 10,\n\n // THREE_DECIMAL_CURRENCIES\n BHD: 1000,\n IQD: 1000,\n JOD: 1000,\n KWD: 1000,\n OMR: 1000,\n LYD: 1000,\n TND: 1000,\n};\n\nexport default CURRENCY_DECIMALS;\n","import CURRENCY_CODES from '../constants/currency-codes';\nimport CURRENCY_DECIMALS from '../constants/currency-decimals';\nimport { CurrencyCode, CurrencyDecimalCode } from '../types';\n\n/**\n * @internal\n * @param currencyCode -\n * Get divider amount\n */\nexport const getDivider = (currencyCode: string): number => CURRENCY_DECIMALS[currencyCode as CurrencyDecimalCode] || 100;\n\n/**\n * @internal\n * @param currencyCode -\n * Returns whether a CURRENCY CODE is valid\n */\nexport const isValidCurrencyCode = (currencyCode: string): currencyCode is CurrencyCode => !!CURRENCY_CODES[currencyCode as CurrencyCode];\n\n/**\n * @internal\n */\nexport const getCurrencyCode = (currencyCode: string): string | null => (isValidCurrencyCode(currencyCode) ? CURRENCY_CODES[currencyCode] : null);\n\n/**\n * @internal\n */\nexport const getDecimalAmount = (amount: number | string, currencyCode: string): number => {\n const divider = getDivider(currencyCode);\n return parseInt(String(amount), 10) / divider;\n};\n\n/**\n * @internal\n */\nexport const getLocalisedAmount = (\n amount: number,\n locale: string,\n currencyCode: string,\n hideCurrency = false,\n options: Intl.NumberFormatOptions = {}\n): string => {\n const stringAmount = amount.toString(); // Changing amount to string to avoid 0-value from returning false\n const decimalAmount = getDecimalAmount(stringAmount, currencyCode);\n\n const formatterLocale = locale.replace('_', '-');\n const formatterOptions = {\n style: 'currency',\n currency: currencyCode,\n currencyDisplay: 'symbol',\n ...options,\n };\n\n try {\n return hideCurrency\n ? formatAmountWithoutCurrency(formatterLocale, formatterOptions, decimalAmount)\n : decimalAmount.toLocaleString(formatterLocale, formatterOptions);\n } catch (e) {\n return stringAmount;\n }\n};\n\nexport const formatAmountWithoutCurrency = (locale: string, options: Intl.NumberFormatOptions, amount: number) => {\n return Intl.NumberFormat(locale, options)\n .formatToParts(amount)\n .filter(p => p.type !== 'currency')\n .reduce((s, p) => s + p.value, '')\n .trim();\n};\n\n/**\n * @internal\n */\nexport const getLocalisedPercentage = (percent = 0, locale: string): string | null => {\n const decimalPercent = percent / 100 / 100;\n const localeOptions = {\n style: 'percent',\n maximumFractionDigits: 2,\n };\n\n try {\n return decimalPercent.toLocaleString(locale, localeOptions);\n } catch (e) {\n return null;\n }\n};\n","import defaultLocaleTranslation from '../translations/en-US.json';\n\n/**\n * FALLBACK_LOCALE - **MUST** match the locale string in the above import\n */\n\nexport const FALLBACK_LOCALE = 'en-US' as const;\nexport const LOCALE_FORMAT_REGEX = /^[a-z]{2}-[A-Z]{2}$/;\nexport const defaultTranslation = defaultLocaleTranslation;\n","import { SupportedLocale } from '../types';\n\nexport const SUPPORTED_LOCALES = [\n 'ar',\n 'cs-CZ',\n 'da-DK',\n 'de-DE',\n 'el-GR',\n 'en-US',\n 'es-ES',\n 'fi-FI',\n 'fr-FR',\n 'hr-HR',\n 'hu-HU',\n 'it-IT',\n 'ja-JP',\n 'ko-KR',\n 'nl-NL',\n 'no-NO',\n 'pl-PL',\n 'pt-BR',\n 'pt-PT',\n 'ro-RO',\n 'ru-RU',\n 'sk-SK',\n 'sl-SI',\n 'sv-SE',\n 'zh-CN',\n 'zh-TW',\n] as const;\n\nexport const DEFAULT_DATETIME_FORMAT = { year: 'numeric', month: '2-digit', day: '2-digit' } as Intl.DateTimeFormatOptions;\nexport const DEFAULT_LOCALES = SUPPORTED_LOCALES as Readonly<SupportedLocale[]>;\nexport const EXCLUDE_PROPS = ['constructor', 'i18n', 'watch', 'preferredTranslations'] as const;\n","export const $createObject = Object.create;\nexport const $true = () => true;\nexport const immutableProxyHandlers = { defineProperty: $true, set: $true };\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze($createObject(null));\n","export * from './constants';\nimport { JSXInternal } from 'preact/src/jsx';\nimport { $createObject, immutableProxyHandlers } from './constants';\n\nexport const call = Function.prototype.bind.bind(Function.prototype.call);\nexport const struct = call($createObject, void 0, null);\nexport const structFrom = call($createObject, void 0);\nexport const toString = call(Object.prototype.toString);\nexport const hasOwnProperty = call(Object.prototype.hasOwnProperty);\n\nexport const noop = new Proxy(() => {}, immutableProxyHandlers);\nexport const asyncNoop = async () => {};\n\nexport const enumerable = <T extends any = any>(value: T, writable: boolean = false): TypedPropertyDescriptor<T> =>\n ({\n writable: (writable as any) === true,\n enumerable: true,\n value,\n } as const);\n\nexport const identity = <T = any>(value?: T) => value;\nexport const boolify = (value?: any, fallbackBoolean?: boolean) => (typeof value === 'boolean' ? value : !!fallbackBoolean);\nexport const clamp = <T extends number = number>(min: T, value: T, max: T) => Math.max(min as number, Math.min(value as number, max as number));\nexport const mid = (low: number, high: number) => low + Math.floor((high - low) / 2);\nexport const mod = (value: number, modulo: number) => ((value % modulo) + modulo) % modulo;\nexport const isFunction = (value: any): value is (...args: any[]) => any => typeof value === 'function';\nexport const isNumber = (value: any): value is number => typeof value === 'number';\nexport const isInfinite = (value: any): value is number => isNumber(value) && 1 / value === 0;\nexport const isBitSafeInteger = (value: any): value is number => isNumber(value) && value === ~~value;\n\n/**\n * Compares two values using [`SameValueZero`](https://tc39.es/ecma262/multipage/abstract-operations.html#sec-samevaluezero) comparison and returns `true` if they are the same, or `false` otherwise.\n * The comparison is very similar to strict equality comparison but also returns `true` if both values are `NaN`.\n */\nexport const sameValue = (a: any, b: any) => a === b || !(a === a || b === b);\n\nexport const pickFromCollection = <C extends readonly any[]>(collection: C, option?: C[number], defaultOption?: C[number]) => {\n if (collection.includes(option)) return option;\n if (option == undefined) return collection[0];\n return collection.includes(defaultOption) ? defaultOption : collection[0];\n};\nexport const parseBoolean = (value: boolean | JSXInternal.SignalLike<boolean | undefined> | undefined): boolean =>\n value && typeof value !== 'boolean' && value?.value ? !!value?.value : !!value;\n","import type { RestampContext } from './types';\n\nexport const REGEX_TZ_OFFSET = /(?<=GMT)(?:[-+](?:0?\\d|1[0-4])(?::?[0-5]\\d)?)?$/;\n\nexport const { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER } = (() => {\n const BASE_LOCALE = 'en-US';\n const DIGITS_2 = '2-digit';\n const NUMERIC = 'numeric';\n const SHORT = 'short';\n const TZ_LONG = 'longOffset';\n const FRACTIONAL_SECOND_DIGITS = 3;\n\n const BASE_FORMAT_OPTIONS: Readonly<Intl.DateTimeFormatOptions> = Object.freeze({\n year: NUMERIC,\n month: SHORT,\n day: NUMERIC,\n hour: DIGITS_2,\n minute: DIGITS_2,\n second: DIGITS_2,\n fractionalSecondDigits: FRACTIONAL_SECOND_DIGITS,\n timeZoneName: TZ_LONG, // should not be changed — needed for the tz offsets regexp\n });\n\n let SYSTEM_TIMEZONE: RestampContext['TIMEZONE'];\n let SYSTEM_TIMEZONE_FORMATTER: RestampContext['formatter'];\n\n try {\n SYSTEM_TIMEZONE_FORMATTER = new Intl.DateTimeFormat(BASE_LOCALE, BASE_FORMAT_OPTIONS);\n SYSTEM_TIMEZONE = SYSTEM_TIMEZONE_FORMATTER.resolvedOptions().timeZone;\n } catch (ex) {\n SYSTEM_TIMEZONE = undefined;\n }\n\n return { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER };\n})();\n","import { EMPTY_ARRAY, mod } from '@src/utils/common';\nimport { REGEX_TZ_OFFSET, SYSTEM_TIMEZONE_FORMATTER } from './constants';\nimport type { RestampContext, Restamper, RestampResult } from './types';\n\nconst REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS = /\\+(?=-)|([+-]00:00)/g;\nconst REGEX_TZ_SINGLE_DIGIT_OFFSET = /(?<=^\\D?)(\\d)$/;\n\nexport const computeTimezoneOffsetInMinutes = ([offsetHours, offsetMinutes]: readonly [number, number]) =>\n (Math.abs(offsetHours * 60) + offsetMinutes) * (offsetHours < 0 ? -1 : 1);\n\nexport const computeTimezoneOffsetsFromMinutes = (timezoneOffsetInMinutes: number) =>\n Object.freeze([\n Math.floor(timezoneOffsetInMinutes / 60), // offset hours\n mod(timezoneOffsetInMinutes, 60), // offset minutes\n ] as const);\n\nexport const parseTimezoneOffset = (offset: string | number) => parseInt(offset as string, 10) || 0;\n\n/**\n * @param timezoneOffset {number} The minute offsets relative to GMT (Greenwich Mean Time).\n * @returns {string} The GMT suffixed string for the specified offsets in the format GMT(+|-)[HH]:[MM], or just GMT (if [HH]:[MM] is 00:00).\n */\nexport const getGMTSuffixForTimezoneOffset = (timezoneOffset: RestampResult['offset']): string => {\n const offsets = computeTimezoneOffsetsFromMinutes(timezoneOffset);\n const offsetString = offsets.map(offset => `${offset}`.replace(REGEX_TZ_SINGLE_DIGIT_OFFSET, '0$1')).join(':');\n return `GMT+${offsetString}`.replace(REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS, '');\n};\n\n/**\n * @param timezoneOffset {number} The minute offsets of the timezone relative to GMT (Greenwich Mean Time).\n * @param timezoneOffsetRelativeToSystem {number} The minute offsets of the timezone relative to the system timezone.\n * @returns {string} The system timezone GMT suffixed string in the format GMT(+|-)[HH]:[MM], or just GMT (if [HH]:[MM] is 00:00).\n */\nexport const getSystemTimezoneGMTSuffixFromTimezoneOffsets = (\n timezoneOffset: RestampResult['offset'],\n timezoneOffsetRelativeToSystem: RestampResult['offset']\n): string => getGMTSuffixForTimezoneOffset(timezoneOffset - timezoneOffsetRelativeToSystem);\n\nexport const getTimezoneOffsetFromFormattedDateString = (date?: string): number => {\n const offsets = date?.match(REGEX_TZ_OFFSET)?.[0].split(':', 2).map(parseTimezoneOffset) ?? (EMPTY_ARRAY as readonly number[]);\n return computeTimezoneOffsetInMinutes(offsets.concat(0, 0).slice(0, 2) as [number, number]);\n};\n\nexport const getTimezoneOffsetForTimestamp = (timestamp: number, timezoneFormatter: RestampContext['formatter'] = SYSTEM_TIMEZONE_FORMATTER) => {\n const systemOffset = getTimezoneOffsetFromFormattedDateString(SYSTEM_TIMEZONE_FORMATTER?.format(timestamp));\n const timezoneOffset = getTimezoneOffsetFromFormattedDateString(timezoneFormatter?.format(timestamp));\n return timezoneOffset - systemOffset;\n};\n\nconst restamp = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0], direction: -1 | 1 = 1) => {\n const { offset, timestamp } = restamper(time);\n const date = new Date(timestamp);\n return date.setMinutes(date.getMinutes() - offset * direction);\n};\n\nexport const systemToTimezone = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0]) => restamp(restamper, time, 1);\nexport const timezoneToSystem = <R extends Restamper = Restamper>(restamper: R, time: Parameters<R>[0]) => restamp(restamper, time, -1);\n","import { struct } from '@src/utils/common';\nimport { BASE_FORMAT_OPTIONS, BASE_LOCALE, SYSTEM_TIMEZONE, SYSTEM_TIMEZONE_FORMATTER } from './constants';\nimport type { RestampContext, RestamperWithTimezone, RestampResult } from './types';\nimport { getTimezoneOffsetForTimestamp } from './utils';\n\nconst restamper = (() => {\n let getTimeZone: (this: RestampContext) => RestampContext['TIMEZONE'];\n let setTimeZone: (this: RestampContext, timezone?: RestampContext['TIMEZONE'] | null) => void;\n\n if (SYSTEM_TIMEZONE !== undefined) {\n getTimeZone = function () {\n return this.TIMEZONE;\n };\n\n setTimeZone = function (timeZone) {\n if (timeZone != undefined) {\n try {\n const nextFormatter = new Intl.DateTimeFormat(BASE_LOCALE, { ...BASE_FORMAT_OPTIONS, timeZone });\n const nextTimeZone = nextFormatter.resolvedOptions().timeZone;\n\n if (this.TIMEZONE === nextTimeZone) return;\n\n this.TIMEZONE = nextTimeZone;\n this.formatter = nextFormatter;\n } catch (ex) {\n // Silently ignore invalid timezone updates\n if (import.meta.env.DEV) console.error(ex);\n }\n } else {\n this.TIMEZONE = SYSTEM_TIMEZONE;\n this.formatter = SYSTEM_TIMEZONE_FORMATTER;\n }\n };\n }\n\n function restamp(this: RestampContext, ...args: [(string | number | Date)?]): RestampResult {\n if (args.length === 0) return restamp.call(this, Date.now());\n\n const time = args[0];\n const timestamp = new Date(time as NonNullable<typeof time>).getTime();\n const formatter = this.formatter ?? SYSTEM_TIMEZONE_FORMATTER;\n\n return Object.freeze({\n formatted: formatter?.format(timestamp),\n offset: getTimezoneOffsetForTimestamp(timestamp, formatter),\n timestamp,\n } as const);\n }\n\n return () => {\n const context = { TIMEZONE: SYSTEM_TIMEZONE } as RestampContext;\n const set = setTimeZone?.bind(context);\n\n const tz = struct({\n current: { get: getTimeZone?.bind(context), set },\n system: { value: SYSTEM_TIMEZONE },\n });\n\n return Object.defineProperties(restamp.bind(context) as RestamperWithTimezone, {\n tz: { get: () => tz, set },\n });\n };\n})();\n\nexport default restamper;\n","import _en_US from './en-US.json';\nimport _ar from './ar.json';\nimport _cs_CZ from './cs-CZ.json';\nimport _da_DK from './da-DK.json';\nimport _de_DE from './de-DE.json';\nimport _el_GR from './el-GR.json';\nimport _es_ES from './es-ES.json';\nimport _fi_FI from './fi-FI.json';\nimport _fr_FR from './fr-FR.json';\nimport _hr_HR from './hr-HR.json';\nimport _hu_HU from './hu-HU.json';\nimport _it_IT from './it-IT.json';\nimport _ja_JP from './ja-JP.json';\nimport _ko_KR from './ko-KR.json';\nimport _nl_NL from './nl-NL.json';\nimport _no_NO from './no-NO.json';\nimport _pl_PL from './pl-PL.json';\nimport _pt_BR from './pt-BR.json';\nimport _pt_PT from './pt-PT.json';\nimport _ro_RO from './ro-RO.json';\nimport _ru_RU from './ru-RU.json';\nimport _sk_SK from './sk-SK.json';\nimport _sl_SI from './sl-SI.json';\nimport _sv_SE from './sv-SE.json';\nimport _zh_CN from './zh-CN.json';\nimport _zh_TW from './zh-TW.json';\n\nexport const en_US = { en_US: _en_US };\nexport const ar = { ar: _ar };\nexport const cs_CZ = { cs_CZ: _cs_CZ };\nexport const da_DK = { da_DK: _da_DK };\nexport const de_DE = { de_DE: _de_DE };\nexport const el_GR = { el_GR: _el_GR };\nexport const es_ES = { es_ES: _es_ES };\nexport const fi_FI = { fi_FI: _fi_FI };\nexport const fr_FR = { fr_FR: _fr_FR };\nexport const hr_HR = { hr_HR: _hr_HR };\nexport const hu_HU = { hu_HU: _hu_HU };\nexport const it_IT = { it_IT: _it_IT };\nexport const ja_JP = { ja_JP: _ja_JP };\nexport const ko_KR = { ko_KR: _ko_KR };\nexport const nl_NL = { nl_NL: _nl_NL };\nexport const no_NO = { no_NO: _no_NO };\nexport const pl_PL = { pl_PL: _pl_PL };\nexport const pt_BR = { pt_BR: _pt_BR };\nexport const pt_PT = { pt_PT: _pt_PT };\nexport const ro_RO = { ro_RO: _ro_RO };\nexport const ru_RU = { ru_RU: _ru_RU };\nexport const sk_SK = { sk_SK: _sk_SK };\nexport const sl_SI = { sl_SI: _sl_SI };\nexport const sv_SE = { sv_SE: _sv_SE };\nexport const zh_CN = { zh_CN: _zh_CN };\nexport const zh_TW = { zh_TW: _zh_TW };\nexport const all_locales = {\n zh_TW: _zh_TW,\n zh_CN: _zh_CN,\n sv_SE: _sv_SE,\n sl_SI: _sl_SI,\n sk_SK: _sk_SK,\n ru_RU: _ru_RU,\n ro_RO: _ro_RO,\n pt_PT: _pt_PT,\n pt_BR: _pt_BR,\n pl_PL: _pl_PL,\n no_NO: _no_NO,\n nl_NL: _nl_NL,\n ko_KR: _ko_KR,\n ja_JP: _ja_JP,\n it_IT: _it_IT,\n hu_HU: _hu_HU,\n hr_HR: _hr_HR,\n fr_FR: _fr_FR,\n fi_FI: _fi_FI,\n es_ES: _es_ES,\n el_GR: _el_GR,\n de_DE: _de_DE,\n da_DK: _da_DK,\n cs_CZ: _cs_CZ,\n ar: _ar,\n};\n","import { JSX } from 'preact';\nimport { hasOwnProperty } from '@src/utils/common';\nimport { defaultTranslation, FALLBACK_LOCALE, LOCALE_FORMAT_REGEX } from './constants/locale';\nimport { CustomTranslations, SupportedLocale, Translation, TranslationOptions } from './types';\nimport { en_US } from './translations';\n\n/**\n * Convert to ISO 639-1\n */\nexport const toTwoLetterCode = (locale: string) => locale.substring(0, 2).toLowerCase();\n\n/**\n * Matches a string with one of the locales\n * @param locale -\n * @param supportedLocales -\n\n * @example\n * matchLocale('en-GB');\n * // 'en-US'\n */\nexport function matchLocale(locale: string, supportedLocales: SupportedLocale[] | string[]): SupportedLocale | null {\n if (!locale) return null;\n const twoLetterCode = toTwoLetterCode(locale as SupportedLocale);\n return (supportedLocales.find(supportedLocale => toTwoLetterCode(supportedLocale) === twoLetterCode) as SupportedLocale) || null;\n}\n\n/**\n * Returns a locale with the proper format\n * @param locale -\n *\n * @example\n * formatLocale('En_us');\n * // 'en-US'\n */\nexport function formatLocale(locale: string): SupportedLocale | null {\n const localeString = locale.replace('_', '-');\n\n // If it's already formatted, return the locale\n if (LOCALE_FORMAT_REGEX.test(localeString)) return localeString as SupportedLocale;\n\n // Split the string in two\n const [languageCode, countryCode] = localeString.split('-');\n\n // If the locale or the country codes are missing, return null\n if (!languageCode || !countryCode) return null;\n\n // Ensure correct format and join the strings back together\n const fullLocale = `${languageCode.toLowerCase()}-${countryCode.toUpperCase()}` as SupportedLocale;\n\n return fullLocale.length === 5 ? fullLocale : null;\n}\n\n/**\n * Checks the locale format.\n * Also checks if it's on the locales array.\n * If it is not, tries to match it with one.\n * @param locale -\n * @param supportedLocales -\n */\nexport function parseLocale(locale: string, supportedLocales: Readonly<SupportedLocale[]> | string[]): SupportedLocale | null {\n const trimmedLocale = locale.trim();\n\n if (!trimmedLocale || trimmedLocale.length < 1 || trimmedLocale.length > 5) return FALLBACK_LOCALE;\n\n const formattedLocale = formatLocale(trimmedLocale);\n\n if (formattedLocale && supportedLocales.indexOf(formattedLocale) > -1) return formattedLocale;\n\n return matchLocale(formattedLocale ?? trimmedLocale, [...supportedLocales]);\n}\n\n/**\n * Formats the locales inside the customTranslations object against the supportedLocales\n * @param customTranslations -\n * @param supportedLocales -\n */\nexport function formatCustomTranslations(\n customTranslations: CustomTranslations = {},\n supportedLocales: Readonly<SupportedLocale[]> | string[]\n): Record<string, any> {\n return (Object.keys(customTranslations) as Extract<keyof CustomTranslations, string>[]).reduce((translations, locale) => {\n const formattedLocale = formatLocale(locale) || parseLocale(locale, supportedLocales);\n if (formattedLocale && customTranslations[locale]) {\n translations[formattedLocale] = customTranslations[locale]!;\n }\n return translations;\n }, {} as CustomTranslations);\n}\n\nconst replaceTranslationValues = (translation: string, values?: Record<string, any>) => {\n return translation.replace(/%{(\\w+)}/g, (_, k) => values?.[k] || '');\n};\n\n/**\n * Returns a translation string by key\n * @param translations -\n * @param key -\n * @param options -\n *\n * @internal\n */\nexport const getTranslation = (\n translations: Record<string, string>,\n key: string,\n options: TranslationOptions = { values: {}, count: 0 }\n): string | null => {\n const count = options.count ?? 0;\n const countKey = `${key}__${count}`;\n\n // Find {key}__{count} translation key\n if (hasOwnProperty(translations, countKey) && translations[countKey]) {\n return replaceTranslationValues(translations[countKey] as string, options.values);\n }\n\n const pluralKey = `${key}__plural`;\n\n // Find {key}__plural translation key, if `count` greater than 1 (e.g. myTranslation__plural)\n if (hasOwnProperty(translations, pluralKey) && count > 1 && translations[pluralKey]) {\n return replaceTranslationValues(translations[pluralKey] as string, options.values);\n }\n\n // Find {key} translation key (e.g. myTranslation)\n if (hasOwnProperty(translations, key) && translations[key]) {\n return replaceTranslationValues(translations[key] as string, options.values);\n }\n\n return null;\n};\n\n/**\n * Returns an array with all the locales\n * @param locale - The locale the user wants to use\n * @param customTranslations -\n */\nexport const loadTranslations = async (\n locale: string,\n translations?: { [k in SupportedLocale]?: Translation } | { [k: string]: Translation },\n customTranslations: CustomTranslations = {}\n) => {\n const translationFiles = translations ?? { 'en-US': en_US['en_US'] };\n // Match locale to one of our available locales (e.g. es-AR => es-ES)\n const localeToLoad = parseLocale(locale, Object.keys(translationFiles) as SupportedLocale[]) || FALLBACK_LOCALE;\n const loadedLocale = translationFiles[localeToLoad];\n\n return {\n ...defaultTranslation, // Default en-US translations (in case any other translation file is missing any key)\n ...loadedLocale, // Merge with our locale file of the locale they are loading\n ...(!!customTranslations[locale] && customTranslations[locale]), // Merge with their custom locales if available\n };\n};\n\n/**\n * Injects JSX elements in a middle of a translation and returns a JSX array\n * The input string should use %# as the token to know where to insert the component\n * @param translation - Translation string\n * @param renderFunctions - An array function that renders JSX elements\n */\nexport const interpolateElement = (translation: string, renderFunctions: Array<(translation: string) => JSX.Element>) => {\n // splits by regex group, it guarantees that it only splits with 2 tokens (%#)\n const matches = translation.split(/%#(.*?)%#/gm);\n // the map will create an array of JSX / string elements, this syntax in accepted in JSX/react to render elements\n return matches.map((term, index) => {\n // math to get the index of the renderFunction that should be used\n // since we split on tokens, that means the index of the render function is half of the index of the string\n const indexInFunctionArray = Math.floor(index / 2);\n return index % 2 === 0 ? term : renderFunctions[indexInFunctionArray]?.(term);\n });\n};\n","import { CustomTranslations, SupportedLocale, Translation } from './types';\nimport { formatLocale, loadTranslations, parseLocale } from './utils';\nimport { FALLBACK_LOCALE } from './constants/locale';\nimport { EXCLUDE_PROPS } from './constants/localization';\nimport { isFunction, struct } from '@src/utils/common';\nimport Localization from './Localization';\n\nexport function createTranslationsLoader(this: Localization) {\n type TranslationsLoader = {\n load: (customTranslations?: CustomTranslations) => ReturnType<typeof loadTranslations>;\n locale: SupportedLocale | string;\n supportedLocales: (SupportedLocale | string)[];\n };\n\n let _locale = this.locale;\n let _preferredLocale = _locale;\n let _supportedLocales = this.supportedLocales;\n\n return struct({\n load: { value: (customTranslations?: CustomTranslations) => loadTranslations(_locale, this.preferredTranslations, customTranslations) },\n locale: {\n get: () => _locale,\n set: (locale: SupportedLocale | string) => {\n _preferredLocale = locale;\n _locale = formatLocale(locale) || parseLocale(locale, _supportedLocales) || FALLBACK_LOCALE;\n },\n },\n supportedLocales: {\n get: () => _locale,\n set(this: TranslationsLoader, supportedLocales: (SupportedLocale | string)[]) {\n _supportedLocales = supportedLocales;\n this.locale = _preferredLocale;\n },\n },\n }) as TranslationsLoader;\n}\n\nexport function getLocalizationProxyDescriptors(this: Localization) {\n const descriptors = {} as any;\n\n for (const [prop, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(Localization.prototype))) {\n if (EXCLUDE_PROPS.includes(prop as (typeof EXCLUDE_PROPS)[number])) continue;\n\n if (isFunction(descriptor.get)) {\n descriptors[prop] = { get: descriptor.get.bind(this) };\n } else if (isFunction(descriptor.value)) {\n descriptors[prop] = { value: descriptor.value.bind(this) };\n } else {\n descriptors[prop] = { get: () => this[prop as keyof Localization] };\n }\n }\n\n return descriptors as { [K in keyof Localization['i18n']]: PropertyDescriptor };\n}\n","import { WatchCallable } from '../types';\nimport { struct } from '@src/utils/common';\n\nconst createSyncEffectChain = (() => {\n const noop = <T extends WatchCallable<any> = WatchCallable<any>>(fn: T): T => fn;\n const noex = struct();\n\n return (effect?: WatchCallable<any>) => {\n if (effect === undefined) return noop;\n\n const chainedFnStack: WatchCallable<any>[] = [];\n\n return <T extends WatchCallable<any> = WatchCallable<any>>(fn: T): T =>\n ((...args: any[]) => {\n let exception = noex;\n try {\n chainedFnStack.push(fn);\n return fn(...args);\n } catch (ex) {\n throw (exception = ex);\n } finally {\n chainedFnStack.pop();\n if (chainedFnStack.length === 0 && exception === noex) effect();\n }\n }) as T;\n };\n})();\n\nexport default createSyncEffectChain;\n","import { Watchable, WatchAtoms, WatchCallable } from '../types';\nimport { isFunction, noop, struct } from '../../common';\n\nexport const createLiveWatchableState = <T extends Record<string, any>>(watchableAtoms = {} as WatchAtoms<T>) => {\n const descriptors = {} as {\n [K in keyof T]: {\n enumerable: true;\n get: () => WatchCallable<T[K]>;\n };\n };\n\n for (const key of Object.keys(watchableAtoms) as (keyof T)[]) {\n const { get, value } = Object.getOwnPropertyDescriptor(watchableAtoms, key) as PropertyDescriptor;\n descriptors[key] = {\n enumerable: true,\n get:\n get ||\n (isFunction(value)\n ? value.bind(watchableAtoms) // ensures that the `this` binding of the getter function is preserved\n : () => value),\n };\n }\n\n return struct(descriptors) as T;\n};\n\nexport const createWatchableIdleCallbacks = <T extends Record<string, any>>() => {\n const callbacks: Watchable<T>['callback'] = { idle: noop, resume: noop };\n const descriptors = {} as { [K in keyof typeof callbacks]: PropertyDescriptor };\n\n for (const key of Object.keys(callbacks) as (keyof typeof callbacks)[]) {\n descriptors[key] = {\n get: () => callbacks[key],\n set: (callback?: WatchCallable<any> | null) => {\n if (callback == undefined) {\n callbacks[key] = noop;\n } else if (isFunction(callback) && callback !== callbacks[key]) {\n callbacks[key] = callback;\n }\n },\n };\n }\n\n return struct(descriptors) as Watchable<T>['callback'];\n};\n","export const UNWATCH_SIGNAL: unique symbol = Symbol();\n","import { createLiveWatchableState, createWatchableIdleCallbacks } from './helpers';\nimport { Watchable, WatchAtoms, WatchCallable, WatchCallback } from '../types';\nimport { UNWATCH_SIGNAL } from '../constants';\nimport { noop, sameValue } from '../../common';\n\nexport default class __Watchable__<T extends Record<string, any>> {\n readonly #idleCallbacks: Watchable<T>['callback'];\n readonly #liveState: T;\n\n #lastStateSnapshot?: Readonly<T>;\n #unwatchCallbacks = new WeakMap<WatchCallback<T>, WatchCallable<void>>();\n #watchCallbacks = new Map<WatchCallback<T>, number>();\n\n constructor(watchableAtoms = {} as WatchAtoms<T>) {\n this.#idleCallbacks = createWatchableIdleCallbacks<T>();\n this.#liveState = createLiveWatchableState(watchableAtoms);\n this.notifyWatchers = this.notifyWatchers.bind(this);\n this.watch = this.watch.bind(this);\n }\n\n get idle() {\n return this.#watchCallbacks.size === 0;\n }\n\n get idleCallbacks() {\n return this.#idleCallbacks;\n }\n\n get snapshot() {\n return this.#lastStateSnapshot ?? Object.freeze({ ...this.#liveState });\n }\n\n notifyWatchers(signal?: typeof UNWATCH_SIGNAL) {\n if (this.#watchCallbacks.size === 0) return;\n\n if (signal === UNWATCH_SIGNAL) {\n this.#watchCallbacks.forEach((_, cb) => cb(signal));\n return true;\n }\n\n const currentSnapshot = this.#lastStateSnapshot as Readonly<T>;\n this.#lastStateSnapshot = Object.freeze({ ...this.#liveState });\n\n for (const key of Object.keys(this.#lastStateSnapshot) as (keyof T)[]) {\n if (sameValue(this.#lastStateSnapshot[key], currentSnapshot[key])) continue;\n this.#watchCallbacks.forEach((_, cb) => cb(this.#lastStateSnapshot as Readonly<T>));\n return true;\n }\n\n return false;\n }\n\n watch(watchCallback?: WatchCallback<T>) {\n if (!watchCallback) return noop;\n\n let unwatchCallback = this.#unwatchCallbacks.get(watchCallback);\n const callbackUnwatchCallbacksCount = this.#watchCallbacks.get(watchCallback) || 0;\n const willResume = this.idle;\n\n if (!unwatchCallback) {\n let unwatch = () => {\n const callbackUnwatchCallbacksCount = this.#watchCallbacks.get(watchCallback) || 0;\n\n if (callbackUnwatchCallbacksCount === 1) {\n unwatch = undefined as unknown as () => any;\n this.#unwatchCallbacks.delete(watchCallback);\n this.#watchCallbacks.delete(watchCallback);\n\n if (this.#watchCallbacks.size === 0) {\n this.#lastStateSnapshot = undefined;\n this.#idleCallbacks.idle();\n }\n } else if (callbackUnwatchCallbacksCount > 1) {\n this.#watchCallbacks.set(watchCallback, callbackUnwatchCallbacksCount - 1);\n }\n };\n\n this.#unwatchCallbacks.set(watchCallback, (unwatchCallback = () => unwatch?.()));\n }\n\n this.#watchCallbacks.set(watchCallback, callbackUnwatchCallbacksCount + 1);\n\n if (willResume) {\n this.#lastStateSnapshot = Object.freeze({ ...this.#liveState });\n this.#idleCallbacks.resume();\n }\n\n watchCallback(this.#lastStateSnapshot as Readonly<T>);\n\n return unwatchCallback;\n }\n}\n","import syncEffect from './core/syncEffect';\nimport __Watchable__ from './core/Watchable';\nimport { UNWATCH_SIGNAL } from './constants';\nimport type { WatchableFactory } from './types';\nimport { struct } from '../common';\n\nconst watchable = (watchableAtoms => {\n const instance = new __Watchable__(watchableAtoms);\n\n return struct({\n callback: { value: instance.idleCallbacks },\n idle: { get: () => instance.idle },\n notify: { value: instance.notifyWatchers },\n snapshot: { get: () => instance.snapshot },\n watch: { value: instance.watch },\n });\n}) as WatchableFactory;\n\nexport default Object.defineProperties(watchable, {\n UNWATCH: { value: UNWATCH_SIGNAL },\n withSyncEffect: { value: syncEffect },\n});\n","import { getLocalisedAmount } from './amount/amount-util';\nimport { defaultTranslation, FALLBACK_LOCALE } from './constants/locale';\nimport { DEFAULT_DATETIME_FORMAT, DEFAULT_LOCALES, EXCLUDE_PROPS } from './constants/localization';\nimport restamper, { RestamperWithTimezone, systemToTimezone } from './datetime/restamper';\nimport { createTranslationsLoader, getLocalizationProxyDescriptors } from './localization-utils';\nimport { CustomTranslations, LangFile, SupportedLocale, Translation, TranslationKey, TranslationOptions } from './types';\nimport { formatCustomTranslations, getTranslation, toTwoLetterCode } from './utils';\nimport { noop, struct } from '@src/utils/common';\nimport watchable from '@src/utils/watchable';\nimport { en_US } from './translations';\n\nexport default class Localization {\n #locale: SupportedLocale | string = FALLBACK_LOCALE;\n #languageCode: string = toTwoLetterCode(this.#locale);\n #supportedLocales: Readonly<SupportedLocale[]> | string[] = DEFAULT_LOCALES;\n\n #customTranslations?: CustomTranslations;\n #translations: Record<string, string> = defaultTranslation;\n #translationsLoader = createTranslationsLoader.call(this);\n\n #ready: Promise<void> = Promise.resolve();\n #currentRefresh?: Promise<void>;\n #markRefreshAsDone?: () => void;\n #refreshWatchable = watchable({ timestamp: () => performance.now() });\n #restamp: RestamperWithTimezone = restamper();\n\n private watch = this.#refreshWatchable.watch.bind(undefined);\n public i18n: Omit<Localization, (typeof EXCLUDE_PROPS)[number]> = struct(getLocalizationProxyDescriptors.call(this));\n public preferredTranslations?: { [k in SupportedLocale]?: Translation } | { [k: string]: Translation };\n\n constructor(locale: SupportedLocale | string = FALLBACK_LOCALE, translationsFiles?: LangFile[]) {\n this.watch(noop);\n\n this.preferredTranslations =\n translationsFiles &&\n translationsFiles.reduce((prev, curr) => ({ ...prev, ...curr }), {\n [FALLBACK_LOCALE]: en_US['en_US'],\n });\n this.locale = locale;\n }\n\n get customTranslations(): CustomTranslations {\n return this.#customTranslations ?? ({} as CustomTranslations);\n }\n\n set customTranslations(customTranslations: CustomTranslations | undefined | null) {\n let translations: CustomTranslations | undefined = undefined;\n let supportedLocales: (SupportedLocale | string)[] = [...DEFAULT_LOCALES];\n\n if (customTranslations != undefined) {\n translations = formatCustomTranslations(customTranslations, DEFAULT_LOCALES);\n const localesFromCustomTranslations = Object.keys(translations) as string[];\n\n // default locales + validated custom locales\n supportedLocales = [...DEFAULT_LOCALES, ...localesFromCustomTranslations].filter(\n (locale, index, locales) => locales.indexOf(locale) === index\n );\n }\n\n this.#translationsLoader.supportedLocales = supportedLocales;\n this.#refreshTranslations(translations);\n }\n\n get languageCode() {\n return this.#languageCode;\n }\n\n get lastRefreshTimestamp() {\n return this.#refreshWatchable.snapshot.timestamp;\n }\n\n get locale(): SupportedLocale | string {\n return this.#locale;\n }\n\n set locale(locale: SupportedLocale | string | undefined | null) {\n if (locale != undefined) {\n this.#translationsLoader.locale = locale;\n if (this.#locale === this.#translationsLoader.locale) return;\n this.#refreshTranslations(this.#customTranslations);\n } else this.locale = FALLBACK_LOCALE;\n }\n\n get ready(): Promise<void> {\n return this.#ready;\n }\n\n get supportedLocales(): Readonly<SupportedLocale[]> | string[] {\n return this.#supportedLocales;\n }\n\n get timezone(): RestamperWithTimezone['tz']['current'] {\n return this.#restamp.tz.current;\n }\n\n set timezone(timezone: string | undefined | null) {\n this.#restamp.tz = timezone;\n }\n\n #refreshTranslations(customTranslations?: CustomTranslations) {\n if (this.#markRefreshAsDone === undefined) {\n this.#ready = new Promise<void>(resolve => {\n this.#markRefreshAsDone = () => {\n resolve(this.#currentRefresh);\n this.#currentRefresh = this.#markRefreshAsDone = undefined;\n };\n });\n }\n\n const currentRefreshDone = () => {\n if (this.#currentRefresh === currentRefresh) this.#markRefreshAsDone?.();\n };\n\n const currentRefresh = (this.#currentRefresh = (async () => {\n this.#translations = await this.#translationsLoader.load(customTranslations);\n this.#locale = this.#translationsLoader.locale;\n this.#supportedLocales = this.#translationsLoader.supportedLocales;\n this.#customTranslations = customTranslations;\n this.#languageCode = toTwoLetterCode(this.#locale);\n this.#refreshWatchable.notify();\n })());\n\n currentRefresh.then(currentRefreshDone).catch(reason => {\n currentRefreshDone();\n // handle current refresh promise rejection\n // throw reason;\n console.error(reason);\n });\n }\n\n /**\n * Returns a translated string from a key in the current {@link Localization.locale}\n * @param key - Translation key\n * @param options - Translation options\n * @returns Translated string\n */\n get(key: TranslationKey, options?: TranslationOptions): string {\n const translation = getTranslation(this.#translations, key, options);\n return translation !== null ? translation : key;\n }\n\n /**\n * Returns a boolean that checks if the translation key exists in the current {@link Localization.locale}\n * @param key - Translation key\n * @param options - Translation options\n * @returns boolean\n */\n has(key: string, options?: TranslationOptions): key is TranslationKey {\n const translation = getTranslation(this.#translations, key, options);\n return !!translation;\n }\n\n /**\n * Returns a localized string for an amount\n * @param amount - Amount to be converted\n * @param currencyCode - Currency code of the amount\n * @param options - Options for String.prototype.toLocaleString\n */\n amount(amount: number, currencyCode: string, options?: Record<string, any>): string {\n const { hideCurrency, ...restOfOptions } = options || {};\n const localisedAmount = getLocalisedAmount(amount, this.#locale, currencyCode, hideCurrency, {\n ...restOfOptions,\n currencyDisplay: 'symbol',\n signDisplay: 'never',\n });\n\n return amount < 0 ? `- ${localisedAmount}` : localisedAmount;\n }\n\n /**\n * Returns a localized string for a date\n * @param date - Date to be localized\n * @param options - Options for {@link Date.toLocaleDateString}\n */\n date(date: number | string | Date, options: Intl.DateTimeFormatOptions = {}) {\n const dateOptions = { ...DEFAULT_DATETIME_FORMAT, timeZone: this.#restamp.tz.current, ...options };\n return new Date(date).toLocaleDateString(this.#locale, dateOptions);\n }\n\n /**\n * Returns a localized string for a full date\n * @param date - Date to be localized\n */\n fullDate(date: number | string | Date) {\n const timestamp = systemToTimezone(this.#restamp, date);\n const [, month, day, year, time] = new Date(timestamp).toString().split(/\\s+/g);\n return `${month} ${day}, ${year}, ${time}`;\n }\n}\n","import { DevEnvironment, SessionRequest } from './types';\nimport type { CoreOptions } from './types';\nimport { resolveEnvironment } from './utils';\nimport Session from './Session';\nimport Localization from './Localization';\nimport BaseElement from '../components/external/BaseElement';\nimport { EMPTY_OBJECT } from '../utils/common';\n\nconst FALLBACK_ENV = 'test' satisfies DevEnvironment;\n\nclass Core<T extends CoreOptions<T> = any> {\n public static readonly version = {\n version: process.env.VITE_VERSION,\n revision: process.env.VITE_COMMIT_HASH,\n branch: process.env.VITE_COMMIT_BRANCH,\n buildId: process.env.VITE_ADYEN_BUILD_ID,\n };\n public session?: Session;\n public modules: any;\n public options: CoreOptions<T>;\n public components: BaseElement<any>[] = [];\n public localization;\n public loadingContext: string;\n public onSessionCreate?: SessionRequest;\n //TODO: Change the error handling strategy.\n public sessionSetupError?: boolean;\n public isUpdatingSessionToken?: boolean;\n\n constructor(options: CoreOptions<T>) {\n this.options = { environment: FALLBACK_ENV, ...options };\n\n this.isUpdatingSessionToken = false;\n this.localization = new Localization(options.locale, options.availableTranslations);\n this.loadingContext = process.env.VITE_LOADING_CONTEXT ? process.env.VITE_LOADING_CONTEXT : resolveEnvironment(this.options.environment);\n this.setOptions(options);\n }\n\n async initialize(initSession = false): Promise<this> {\n if (!this.sessionSetupError && (initSession || (!this.session && this.onSessionCreate))) {\n await this.updateSession();\n }\n\n return Promise.all([this.localization.ready]).then(() => this);\n }\n\n public updateSession = async () => {\n try {\n if (this.options.onSessionCreate && !this.isUpdatingSessionToken) {\n this.isUpdatingSessionToken = true;\n this.session = new Session(await this.options.onSessionCreate(), this.loadingContext!);\n await this.session?.setupSession(this.options);\n await this.update({});\n this.isUpdatingSessionToken = false;\n return this;\n }\n } catch (error) {\n if (this.options.onError) this.options.onError(error);\n //TODO: this is heavy change the way to update core\n this.sessionSetupError = true;\n await this.update();\n this.isUpdatingSessionToken = false;\n return this;\n }\n };\n\n /**\n * Updates global configurations, resets the internal state and remounts each element.\n * @param options - props to update\n * @param initSession - should session be initiated again\n * @returns this - the element instance\n */\n public update = (options: Partial<CoreOptions<T>> = EMPTY_OBJECT, initSession = false): Promise<this> => {\n this.setOptions(options);\n\n return this.initialize(initSession).then(() => {\n // Update each component under this instance\n this.components.forEach(c => c.update(this.getPropsForComponent(this.options)));\n\n return this;\n });\n };\n\n /**\n * Remove the reference of a component\n * @param component - reference to the component to be removed\n * @returns this - the element instance\n */\n public remove = (component: BaseElement<any>): this => {\n this.components = this.components.filter(c => c._id !== component._id);\n component.unmount();\n\n return this;\n };\n\n /**\n * @internal\n * Register components in core to be able to update them all at once\n */\n\n public registerComponent = (component: BaseElement<any>) => {\n this.components.push(component);\n };\n\n /**\n * @internal\n * Enhances the config object passed when AdyenPlatformExperience is initialised (environment, clientKey, etc...)\n * (Re)Initializes core properties & processes (i18n, etc...)\n * @param options - the config object passed when AdyenPlatformExperience is initialised\n * @returns this\n */\n private setOptions = (options: Partial<CoreOptions<T>>): this => {\n this.options = { ...this.options, ...options };\n\n this.localization.locale = this.options?.locale;\n this.localization.customTranslations = this.options?.translations;\n this.localization.timezone = this.options?.timezone;\n this.onSessionCreate = this.options.onSessionCreate;\n this.modules = {\n // analytics: new Analytics(this.options),\n i18n: this.localization.i18n,\n };\n\n // Check for clientKey/environment mismatch\n // const clientKeyType = this.options?.clientKey?.substring(0, 3) ?? '';\n // if (['test', 'live'].includes(clientKeyType) && !this.loadingContext?.includes(clientKeyType)) {\n // throw new Error(`Error: you are using a ${clientKeyType} clientKey against the ${this.options?.environment} environment`);\n // }\n\n return this;\n };\n\n /**\n * @internal\n * @param options - options that will be merged to the global Checkout props\n * @returns props for a new UIElement\n */\n private getPropsForComponent(options: any) {\n return {\n ...options,\n i18n: this.modules.i18n,\n modules: this.modules,\n session: this.session,\n loadingContext: this.loadingContext,\n _parentInstance: this,\n };\n }\n}\n\nexport default Core;\n","var n,l,u,t,i,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function h(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,i,o,null)}function d(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function g(n,l){if(null==l)return n.__?g(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__d||u.__e;return\"function\"==typeof n.type?g(n):null}function m(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return m(n)}}function w(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,l,u,t,o,r,e,c,s;for(i.sort(f);n=i.shift();)n.__d&&(l=i.length,t=void 0,o=void 0,r=void 0,c=(e=(u=n).__v).__e,(s=u.__P)&&(t=[],o=[],(r=h({},e)).__v=e.__v+1,z(s,e,r,u.__n,void 0!==s.ownerSVGElement,null!=e.__h?[c]:null,t,null==c?g(e):c,e.__h,o),L(t,e,o),e.__e!=c&&m(e)),i.length>l&&i.sort(f));x.__r=0}function P(n,l,u,t,i,o,r,f,e,a,h){var p,y,_,b,m,w,x,P,C,D=0,H=t&&t.__k||s,I=H.length,T=I,j=l.length;for(u.__k=[],p=0;p<j;p++)null!=(b=u.__k[p]=null==(b=l[p])||\"boolean\"==typeof b||\"function\"==typeof b?null:\"string\"==typeof b||\"number\"==typeof b||\"bigint\"==typeof b?d(null,b,null,null,b):v(b)?d(k,{children:b},null,null,null):b.__b>0?d(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):b)?(b.__=u,b.__b=u.__b+1,-1===(P=A(b,H,x=p+D,T))?_=c:(_=H[P]||c,H[P]=void 0,T--),z(n,b,_,i,o,r,f,e,a,h),m=b.__e,(y=b.ref)&&_.ref!=y&&(_.ref&&N(_.ref,null,b),h.push(y,b.__c||m,b)),null!=m&&(null==w&&(w=m),(C=_===c||null===_.__v)?-1==P&&D--:P!==x&&(P===x+1?D++:P>x?T>j-x?D+=P-x:D--:D=P<x&&P==x-1?P-x:0),x=p+D,\"function\"!=typeof b.type||P===x&&_.__k!==b.__k?\"function\"==typeof b.type||P===x&&!C?void 0!==b.__d?(e=b.__d,b.__d=void 0):e=m.nextSibling:e=S(n,m,e):e=$(b,e,n),\"function\"==typeof u.type&&(u.__d=e))):(_=H[p])&&null==_.key&&_.__e&&(_.__e==e&&(_.__=t,e=g(_)),O(_,_,!1),H[p]=null);for(u.__e=w,p=I;p--;)null!=H[p]&&(\"function\"==typeof u.type&&null!=H[p].__e&&H[p].__e==u.__d&&(u.__d=H[p].__e.nextSibling),O(H[p],H[p]))}function $(n,l,u){for(var t,i=n.__k,o=0;i&&o<i.length;o++)(t=i[o])&&(t.__=n,l=\"function\"==typeof t.type?$(t,l,u):S(u,t.__e,l));return l}function C(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(v(n)?n.some(function(n){C(n,l)}):l.push(n)),l}function S(n,l,u){return null==u||u.parentNode!==n?n.insertBefore(l,null):l==u&&null!=l.parentNode||n.insertBefore(l,u),l.nextSibling}function A(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type)return u;if(t>(null!=e?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&i==e.key&&o===e.type)return f;f++}}return-1}function D(n,l,u,t,i){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||I(n,o,null,u[o],t);for(o in l)i&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||I(n,o,l[o],u[o],t)}function H(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function I(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||H(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||H(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/,\"$1\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=Date.now(),n.addEventListener(l,o?j:T,o)):n.removeEventListener(l,o?j:T,o);else if(\"dangerouslySetInnerHTML\"!==l){if(i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&\"role\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function T(n){var u=this.l[n.type+!1];if(n.t){if(n.t<=u.u)return}else n.t=Date.now();return u(l.event?l.event(n):n)}function j(n){return this.l[n.type+!0](l.event?l.event(n):n)}function z(n,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,g,m,w,x,$,C,S,A,D,H,I=u.type;if(void 0!==u.constructor)return null;null!=t.__h&&(c=t.__h,e=u.__e=t.__e,u.__h=null,r=[e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof I)try{if(w=u.props,x=(a=I.contextType)&&i[a.__c],$=a?x?x.props.value:a.__:i,t.__c?m=(p=u.__c=t.__c).__=p.__E:(\"prototype\"in I&&I.prototype.render?u.__c=p=new I(w,$):(u.__c=p=new b(w,$),p.constructor=I,p.render=q),x&&x.sub(p),p.props=w,p.state||(p.state={}),p.context=$,p.__n=i,y=p.__d=!0,p.__h=[],p._sb=[]),null==p.__s&&(p.__s=p.state),null!=I.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=h({},p.__s)),h(p.__s,I.getDerivedStateFromProps(w,p.__s))),d=p.props,_=p.state,p.__v=u,y)null==I.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==I.getDerivedStateFromProps&&w!==d&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(w,$),!p.__e&&(null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(w,p.__s,$)||u.__v===t.__v)){for(u.__v!==t.__v&&(p.props=w,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.forEach(function(n){n&&(n.__=u)}),C=0;C<p._sb.length;C++)p.__h.push(p._sb[C]);p._sb=[],p.__h.length&&f.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(w,p.__s,$),null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(d,_,g)})}if(p.context=$,p.props=w,p.__P=n,p.__e=!1,S=l.__r,A=0,\"prototype\"in I&&I.prototype.render){for(p.state=p.__s,p.__d=!1,S&&S(u),a=p.render(p.props,p.state,p.context),D=0;D<p._sb.length;D++)p.__h.push(p._sb[D]);p._sb=[]}else do{p.__d=!1,S&&S(u),a=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++A<25);p.state=p.__s,null!=p.getChildContext&&(i=h(h({},i),p.getChildContext())),y||null==p.getSnapshotBeforeUpdate||(g=p.getSnapshotBeforeUpdate(d,_)),P(n,v(H=null!=a&&a.type===k&&null==a.key?a.props.children:a)?H:[H],u,t,i,o,r,f,e,c,s),p.base=u.__e,u.__h=null,p.__h.length&&f.push(p),m&&(p.__E=p.__=null)}catch(n){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=M(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function L(n,u,t){for(var i=0;i<t.length;i++)N(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function M(l,u,t,i,o,r,f,e,s){var a,h,y,d=t.props,_=u.props,k=u.type,b=0;if(\"svg\"===k&&(o=!0),null!=r)for(;b<r.length;b++)if((a=r[b])&&\"setAttribute\"in a==!!k&&(k?a.localName===k:3===a.nodeType)){l=a,r[b]=null;break}if(null==l){if(null===k)return document.createTextNode(_);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",k):document.createElement(k,_.is&&_),r=null,e=!1}if(null===k)d===_||e&&l.data===_||(l.data=_);else{if(r=r&&n.call(l.childNodes),h=(d=t.props||c).dangerouslySetInnerHTML,y=_.dangerouslySetInnerHTML,!e){if(null!=r)for(d={},b=0;b<l.attributes.length;b++)d[l.attributes[b].name]=l.attributes[b].value;(y||h)&&(y&&(h&&y.__html==h.__html||y.__html===l.innerHTML)||(l.innerHTML=y&&y.__html||\"\"))}if(D(l,_,d,o,e),y)u.__k=[];else if(P(l,v(b=u.props.children)?b:[b],u,t,i,o&&\"foreignObject\"!==k,r,f,r?r[0]:t.__k&&g(t,0),e,s),null!=r)for(b=r.length;b--;)null!=r[b]&&p(r[b]);e||(\"value\"in _&&void 0!==(b=_.value)&&(b!==l.value||\"progress\"===k&&!b||\"option\"===k&&b!==d.value)&&I(l,\"value\",b,d.value,!1),\"checked\"in _&&void 0!==(b=_.checked)&&b!==l.checked&&I(l,\"checked\",b,d.checked,!1))}return l}function N(n,u,t){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,t)}}function O(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||N(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null,n.__c=void 0}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&O(i[o],u,t||\"function\"!=typeof n.type);t||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function q(n,l,u){return this.constructor(n,u)}function B(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],z(t,u=(!o&&i||t).__k=y(k,null,[u]),r||c,c,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),L(f,u,e)}function E(n,l){B(n,l,E)}function F(l,u,t){var i,o,r,f,e=h({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),d(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=k,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,k as Fragment,F as cloneElement,G as createContext,y as createElement,_ as createRef,y as h,E as hydrate,t as isValidElement,l as options,B as render,C as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r}from\"preact\";export{Fragment}from\"preact\";var _=0;function o(o,e,n,t,f,l){var s,u,a={};for(u in e)\"ref\"==u?s=e[u]:a[u]=e[u];var i={type:o,props:a,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--_,__source:f,__self:l};if(\"function\"==typeof o&&(s=o.defaultProps))for(u in s)void 0===a[u]&&(a[u]=s[u]);return r.vnode&&r.vnode(i),i}export{o as jsx,o as jsxDEV,o as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { AuthContextProps } from '@src/core/Auth/types';\nimport { createContext } from 'preact';\nimport { EMPTY_OBJECT, noop } from '@src/utils/common';\n\nexport const AuthContext = createContext<AuthContextProps>({\n token: '',\n endpoints: EMPTY_OBJECT,\n updateCore: noop,\n});\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function h(n){return o=1,s(B,n)}function s(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function p(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function y(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,y(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[],t=0)),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,p as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,y as useLayoutEffect,F as useMemo,s as useReducer,_ as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import { AuthContext } from '@src/core/Auth/AuthContext';\nimport { AuthProviderProps } from '@src/core/Auth/types';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { toChildArray } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\n\nconst AuthProvider = ({ token, endpoints, children, updateCore, sessionSetupError }: AuthProviderProps) => {\n const [isUpdatingToken, setIsUpdatingToken] = useState<boolean>();\n const currentToken = useRef<string>('');\n\n useEffect(() => {\n if (currentToken.current !== token) {\n currentToken.current = token;\n setIsUpdatingToken(false);\n }\n }, [token]);\n\n const update = async () => {\n setIsUpdatingToken(true);\n if (updateCore) {\n await updateCore(EMPTY_OBJECT, true);\n }\n };\n\n return (\n <AuthContext.Provider value={{ token, endpoints, updateCore: update, sessionSetupError, isUpdatingToken }}>\n {toChildArray(children)}\n </AuthContext.Provider>\n );\n};\n\nexport default AuthProvider;\n","import { createContext } from 'preact';\nimport { CommonPropsTypes, CoreProviderProps } from './types';\nimport Localization from '@src/core/Localization';\n\nexport const CoreContext = createContext<CoreProviderProps & { i18n: Localization['i18n'] }>({\n i18n: new Localization().i18n,\n loadingContext: '',\n commonProps: {} as CommonPropsTypes,\n});\n","import { useCallback, useState } from 'preact/hooks';\n\nconst useBooleanState = (initialState = false) => {\n const [ state, setState ] = useState(initialState);\n const updateState = useCallback((state: boolean) => setState(state), []);\n const toggleState = useCallback(() => setState(state => !state), []);\n return [ state, updateState, toggleState ] as const;\n};\n\nexport default useBooleanState;\n","import { toChildArray } from 'preact';\nimport { useEffect, useMemo } from 'preact/hooks';\nimport { CoreContext } from './CoreContext';\nimport { CoreProviderProps } from './types';\nimport useBooleanState from '@src/hooks/useBooleanState';\nimport Localization from '@src/core/Localization';\n\n/**\n * CoreProvider Component\n * Wraps a component delaying the render until after the i18n module is fully loaded\n */\nconst CoreProvider = ({\n i18n = new Localization().i18n,\n children,\n commonProps: _commonProps,\n loadingContext: _loadingContext,\n}: CoreProviderProps) => {\n const [ready, setReady] = useBooleanState(false);\n const commonProps = useMemo(() => _commonProps || {}, [_commonProps]);\n const loadingContext = useMemo(() => _loadingContext ?? '', [_loadingContext]);\n\n useEffect(() => {\n (async () => {\n await i18n?.ready;\n setReady(true);\n })().catch();\n }, []);\n\n if (!ready) return null;\n\n return <CoreContext.Provider value={{ i18n, commonProps, loadingContext }}>{toChildArray(children)}</CoreContext.Provider>;\n};\n\nexport default CoreProvider;\n","class EventEmitter {\n public events: { [key: string]: Function[] } = {};\n\n public on = (eventName: string, fn: Function): void => {\n this.events[eventName] = this.events[eventName] || [];\n this.events[eventName]?.push(fn);\n };\n\n public off = (eventName: string, fn: Function): void => {\n if (this.events[eventName]) {\n this.events[eventName] = this.events[eventName]!.reduce((acc, cur) => {\n if (cur !== fn) acc.push(cur);\n return acc;\n }, [] as Function[]);\n }\n };\n\n public emit = (eventName: string, data?: any): void => {\n if (this.events[eventName]) {\n this.events[eventName]?.forEach(fn => {\n fn(data);\n });\n }\n };\n}\n\nexport default EventEmitter;\n","export default function uuidv4(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import { CountryFormatRules } from './Validator/types';\n\nconst MAX_LENGTH = 30;\n\nexport const getMaxLengthByFieldAndCountry = (\n formattingRules: CountryFormatRules,\n field: string,\n country: string,\n ignoreIfFormatterExists: boolean\n): number | null => {\n // In ignoreIfFormatterExists is true we expect the formatter function to also act to limit length\n if (ignoreIfFormatterExists && formattingRules[country]?.[field]?.formatter) {\n return null;\n }\n const maxLength = formattingRules[country]?.[field]?.maxlength;\n return maxLength ? maxLength : MAX_LENGTH;\n};\n\n// Not null or undefined or only spaces\nexport const isEmpty = (input?: string) => !!(input == null || /^[\\s]*$/.test(input));\n\nexport const isString = (input?: any): input is string => typeof input === 'string' || input instanceof String;\nexport const hasText = (input: string) => isString(input) && !isEmpty(input);\n\nexport const SPECIAL_CHARS = '?\\\\-\\\\+_=!@#$%^&*(){}~<>\\\\[\\\\]\\\\/\\\\\\\\'; // N.B. difficulty escaping \\\n\n// Generates a regEx ideal for use in a String.replace call for use in a formatter\n// e.g. getFormattingRegEx('^\\\\d', 'g') will generate: /[^\\d]/g which is a regEx to match anything that is not a digit\nexport const getFormattingRegEx = (specChars: string, flags = 'g') => new RegExp(`[${specChars}]`, flags);\n\n// Creates a regEx ideal for use in a RegExp.test call for use in a validator\nexport const getValidatingRegEx = (specChars: string, exclude: boolean) => new RegExp(`^[${exclude ? '^' : ''}${specChars}]+$`);\n\nexport const CHARACTER_PATTERNS: { [key: string]: RegExp } = {\n digitsHyphen: /^[\\d-]+$/,\n noHtml: /^[^<>&]+$/,\n alphaNum: /^\\d[a-zA-Z0-9]{6,11}$/,\n noSpecialChars: getValidatingRegEx(SPECIAL_CHARS, true),\n};\n\nexport const exactLength = (input: string, length: number) => {\n if (isEmpty(input)) {\n return true;\n }\n return input.length === length;\n};\n\nexport const validateForSpecialChars = (name: string) => {\n const hasNoLength = !name.length;\n // RegEx .test, if run against empty string, will return false\n return CHARACTER_PATTERNS.noSpecialChars?.test(name) || hasNoLength;\n};\n\n// Trim start and never allow more than 1 space on the end\nexport const trimValWithOneSpace = (val: string) => val.trimStart().replace(/\\s+/g, ' ');\n","import { ComponentChild, render } from 'preact';\nimport EventEmitter from './EventEmitter';\nimport uuid from '../../utils/uuid';\nimport { Core } from '../../core';\nimport { BaseElementProps, BaseElementState } from '../types';\nimport { isString } from '../../utils/validator-utils';\nimport Localization from '../../core/Localization';\nimport BPSession from '../../core/Session/Session';\n\nclass BaseElement<P> {\n public static type: string;\n public static analyticsType: string;\n public readonly _id = `${(this.constructor as typeof BaseElement)?.type}-${uuid()}`;\n public props: P & BaseElementProps;\n public state: BaseElementState;\n public defaultProps = {};\n public _node: Document | ShadowRoot | DocumentFragment | Element | null;\n public _component: ComponentChild | Error;\n public eventEmitter = new EventEmitter();\n protected readonly _parentInstance?: Core;\n public sessionSetupError?: boolean;\n\n // provided by AdyenPlatformExperienceCore\n public loadingContext?: string;\n public i18n?: Localization['i18n'];\n public session?: BPSession;\n\n protected constructor(props: P & BaseElementProps) {\n this.props = this.formatProps({ ...this?.defaultProps, ...props });\n this._parentInstance = this.props._parentInstance;\n this._node = null;\n this.state = {} as BaseElementState;\n this.loadingContext = this.props.core.loadingContext;\n this.i18n = this.props.core.modules.i18n;\n this.session = this.props.core.session;\n this.props.core.registerComponent(this);\n }\n\n /**\n * Executed during creation of any element.\n * Gives a chance to any component to format the props we're receiving.\n */\n protected formatProps(props: P & BaseElementProps): any {\n return props;\n }\n\n /**\n * Executed on the `data` getter.\n * Returns the component data necessary for making a request\n */\n protected formatData() {\n return {};\n }\n\n protected setState(newState: object): void {\n this.state = { ...this.state, ...newState };\n }\n\n /**\n * Returns the component data ready to submit to the Checkout API\n * Note: this does not ensure validity, check isValid first\n */\n get data(): any {\n return {\n ...this.formatData(),\n clientStateDataIndicator: true,\n };\n }\n\n public render(): ComponentChild | Error {\n // render() not implemented in the element\n throw new Error('Component cannot be rendered.');\n }\n\n /**\n * Mounts an element into the dom\n * @param domNode - Node (or selector) where we will mount the element\n * @returns this - the element instance we mounted\n */\n public mount(domNode: string): this;\n public mount(domNode: HTMLElement): this;\n public mount(domNode: any): any {\n let node;\n if (isString(domNode)) {\n node = document.querySelector(domNode);\n } else {\n node = domNode;\n }\n\n if (!node) {\n throw new Error('Component could not mount. Root node was not found.');\n }\n\n if (this._node) {\n this.unmount(); // new, if this._node exists then we are \"remounting\" so we first need to unmount if it's not already been done\n } else {\n // Set up analytics, once\n if (this.props.modules && this.props.modules.analytics) {\n this.props.modules.analytics.send({\n containerWidth: node && node.offsetWidth,\n component: (this.constructor as typeof BaseElement)?.analyticsType ?? (this.constructor as typeof BaseElement)?.type,\n flavor: 'components',\n });\n }\n }\n\n this._node = node;\n this._component = this.render();\n\n render(this._component, node);\n\n return this;\n }\n\n /**\n * Updates props, resets the internal state and remounts the element.\n * @param props - props to update\n * @returns this - the element instance\n */\n public update(props: P): this {\n /*\n // OLD\n this.props = this.formatProps({ ...this.props, ...props });\n this.state = {};\n\n return this.unmount().mount(this._node); // for new mount fny\n */\n\n // /*\n this.props = this.formatProps({ ...this.props, ...props });\n this.sessionSetupError = this.props.core.sessionSetupError;\n this.session = this.props.core.session;\n this._component = this.render();\n if (this._node) render(this._component, this._node);\n\n return this;\n\n // return this.remount(this._component);\n // */\n }\n\n /**\n * Unmounts an element and mounts it again on the same node i.e. allows mount w/o having to pass a node.\n * Should be \"private\" & undocumented (although being a public function is useful for testing).\n * Left in for legacy reasons\n */\n public remount(component: BaseElement<any>): this {\n if (!this._node) {\n throw new Error('Component is not mounted.');\n }\n\n const newComponent = component || this.render();\n\n render(newComponent, this._node, undefined);\n\n return this;\n }\n\n /**\n * Unmounts an element from the DOM\n */\n public unmount(): this {\n if (this._node) {\n render(null, this._node);\n }\n\n return this;\n }\n\n /**\n * Unmounts an element and removes it from the parent instance\n * For \"destroy\" type cleanup - when you don't intend to use the component again\n */\n public remove() {\n this.unmount();\n\n if (this._parentInstance) {\n this._parentInstance.remove(this);\n }\n }\n}\n\nexport default BaseElement;\n","import { FALLBACK_CONTEXT } from '../core/config';\n\nexport interface ImageOptions {\n extension?: string;\n imageFolder?: string;\n loadingContext?: string;\n name?: string;\n parentFolder?: string;\n size?: string;\n subFolder?: string;\n svgOptions?: string;\n type?: string;\n}\n\nconst returnImage = ({ name, loadingContext, imageFolder = '', parentFolder = '', extension, size = '', subFolder = '' }: ImageOptions): string =>\n `${loadingContext}images/${imageFolder}${subFolder}${parentFolder}${name}${size}.${extension}`;\n\nexport const getImageUrl = ({ loadingContext = FALLBACK_CONTEXT, extension = 'svg', ...options }: ImageOptions): Function => (\n name: string\n): string => {\n const imageOptions: ImageOptions = {\n extension,\n loadingContext,\n imageFolder: 'logos/',\n parentFolder: '',\n name,\n ...options\n };\n\n return returnImage(imageOptions);\n};\n\nexport default getImageUrl;\n","import { TransactionsComponentProps } from '@src/components';\nimport AuthProvider from '../../core/Auth/AuthProvider';\nimport CoreProvider from '../../core/Context/CoreProvider';\nimport { JSXInternal } from 'preact/src/jsx';\nimport BaseElement from './BaseElement';\nimport getImage from '../../utils/get-image';\nimport { BaseElementProps, IUIElement, UIElementProps } from '../types';\nimport { UIElementStatus } from '../types';\nimport { SetupEndpoint } from '../../types/models/openapi/endpoints';\nimport { EMPTY_OBJECT } from '@src/utils/common';\n\nexport class UIElement<P> extends BaseElement<P & UIElementProps> implements IUIElement {\n protected componentRef: UIElement<P> | null;\n public elementRef: UIElement<P> | null;\n public onContactSupport?: () => void;\n public componentToRender: (() => JSXInternal.Element) | null;\n\n constructor(props: P & UIElementProps & BaseElementProps) {\n super(props);\n this.setState = this.setState.bind(this);\n this.onContactSupport = props.onContactSupport;\n this.componentRef = null;\n this.elementRef = (this.props && this.props.elementRef) || this;\n this.componentToRender = null;\n this.sessionSetupError = this.props.core.sessionSetupError;\n }\n\n get isValid() {\n return !!this.state.isValid;\n }\n\n /**\n * Get the element icon URL for the current environment\n */\n get icon(): string {\n return getImage({ loadingContext: this.loadingContext })((this.constructor as typeof UIElement)?.type);\n }\n\n /**\n * Get the element's displayable name\n */\n get displayName(): string {\n return this.props.name || (this.constructor as typeof UIElement)?.type;\n }\n\n /**\n * Get the element accessible name, used in the aria-label of the button that controls selected component\n */\n get accessibleName(): string {\n return this.displayName;\n }\n\n /**\n * Return the type of an element\n */\n get type(): string {\n return this.type;\n }\n\n formatProps(props: TransactionsComponentProps) {\n return props;\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n return {\n ...this.state,\n };\n }\n\n public setState(newState: Record<any, any>): void {\n this.state = { ...this.state, ...newState };\n }\n\n private setUIElementStatus: ((status: string) => void) | undefined;\n\n public setStatus(status: UIElementStatus, props: P & UIElementProps): this {\n if (this.componentRef?.setStatus) {\n this.componentRef.setStatus(status, props);\n } else {\n this.setUIElementStatus?.(status);\n }\n return this;\n }\n\n render() {\n return (\n <AuthProvider\n endpoints={this.session?.configuration?.endpoints || (EMPTY_OBJECT as SetupEndpoint)}\n token={this.session?.token ?? ''}\n updateCore={this.props.core.update.bind(this.props.core)}\n sessionSetupError={this.sessionSetupError}\n >\n <CoreProvider i18n={this.i18n} loadingContext={this.loadingContext}>\n {this.componentToRender && <div className=\"adyen-pe-component\">{this.componentToRender()}</div>}\n </CoreProvider>\n </AuthProvider>\n );\n }\n}\n\nexport default UIElement;\n","import { AuthContext } from '@src/core/Auth/AuthContext';\nimport { useContext } from 'preact/hooks';\n\nconst useAuthContext = () => useContext(AuthContext);\n\nexport default useAuthContext;\n","import useAuthContext from '@src/core/Auth/useAuthContext';\nimport { http } from '@src/core/Services/requests/http';\nimport { HttpMethod, HttpOptions } from '@src/core/Services/requests/types';\nimport { ErrorTypes } from '@src/core/Services/requests/utils';\nimport { EMPTY_OBJECT, noop } from '@src/utils/common';\nimport { useMemo, useRef } from 'preact/hooks';\n\nconst getHttpCaller = (() => {\n let token: string;\n let caller: <T>(request: Omit<HttpOptions, 'method'>, method: HttpMethod, data?: any) => ReturnType<typeof http<T>>;\n return (sessionToken: string) => {\n if (sessionToken !== token) {\n token = sessionToken;\n caller = <T>(request: Omit<HttpOptions, 'method'>, method: HttpMethod, data?: any) =>\n http<T>({ ...request, headers: { ...request.headers, Authorization: `Bearer ${token}` }, method }, data);\n }\n return caller;\n };\n})();\n\nfunction useSessionAwareRequest() {\n const { token, updateCore, isUpdatingToken } = useAuthContext();\n const cachedResolve = useRef<(value: unknown) => void>(noop);\n\n const httpProvider = useMemo(() => {\n let resolve: (value: unknown) => void = noop;\n const promise = new Promise(_resolve => {\n resolve = _resolve;\n });\n\n cachedResolve.current(promise);\n\n cachedResolve.current = resolve;\n\n const httpCall = getHttpCaller(token);\n\n return async <T>(request: Omit<HttpOptions, 'method'>, method: HttpMethod, data?: any): Promise<T> => {\n try {\n return await (isUpdatingToken ? promise : Promise.resolve()).then(() => httpCall<T>({ ...request }, method, data));\n } catch (e: any) {\n if (e.type === ErrorTypes.EXPIRED_TOKEN && !isUpdatingToken) {\n await updateCore();\n resolve(token);\n }\n throw e;\n }\n };\n }, [token, updateCore, isUpdatingToken]);\n\n return { httpProvider } as const;\n}\n\nexport default useSessionAwareRequest;\n","import { useContext } from 'preact/hooks';\nimport { CoreContext } from './CoreContext';\n\nconst useCoreContext = () => useContext(CoreContext);\n\nexport default useCoreContext;\n","import useAuthContext from '@src/core/Auth/useAuthContext';\nimport useSessionAwareRequest from '@src/hooks/useSessionAwareRequest/useSessionAwareRequest';\nimport { EndpointName, EndpointsOperations } from '@src/types/models/openapi/endpoints';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { parseSearchParams } from '@src/core/Services/requests/utils';\nimport { useCallback } from 'preact/hooks';\nimport { HttpMethod, HttpOptions } from '@src/core/Services/requests/types';\nimport { EMPTY_OBJECT } from '@src/utils/common';\n\ntype Params<T extends Record<any, any>> = T['parameters'];\n\ntype ExcludedHttpOptions = 'loadingContext' | 'path' | 'method' | 'params';\n\nexport type SetupHttpOptions = Omit<HttpOptions, ExcludedHttpOptions>;\n\ntype FunctionParams<Endpoint extends EndpointName, Operation extends EndpointsOperations[Endpoint]> = RequiresParameter<Operation> extends true\n ? [options: SetupHttpOptions, params: RequiresParameter<Operation> extends true ? Params<Operation> : never]\n : [options: SetupHttpOptions];\n\ntype HasParameter<Parameter extends keyof any, T> = Parameter extends keyof T ? true : false;\n\ntype RequiresParameter<T> = HasParameter<'parameters', T>;\n\nexport type SuccessResponse<Operation extends Record<any, any>> = Operation['responses'][200]['content']['application/json'];\n\nexport const useSetupEndpoint = <Endpoint extends EndpointName, Operation extends EndpointsOperations[Endpoint]>(endpoint: Endpoint) => {\n const { endpoints } = useAuthContext();\n const { loadingContext } = useCoreContext();\n const { httpProvider } = useSessionAwareRequest();\n\n return useCallback(\n async (...args: FunctionParams<Endpoint, Operation>): Promise<SuccessResponse<Operation>> => {\n const requestOptions = args[0];\n const params = args[1] || EMPTY_OBJECT;\n\n const operation = endpoints[endpoint];\n\n const pathParam = (params as any).path;\n\n let path = operation.url!;\n\n if (pathParam) {\n const pathParamKey = Object.keys(pathParam)[0]!;\n path = path.replace(`{${pathParamKey}}`, pathParam[pathParamKey]);\n }\n return httpProvider<SuccessResponse<Operation>>(\n { loadingContext, path, ...requestOptions, params: params.query && parseSearchParams(params.query) },\n (operation.method as HttpMethod) ?? 'GET'\n );\n },\n [endpoint, endpoints, httpProvider, loadingContext]\n );\n};\n","import { useCallback, useEffect, useReducer, useRef } from 'preact/hooks';\nimport { ErrorLevel } from '@src/core/Services/requests/types';\n\ninterface State<T> {\n data?: T;\n error?: Error;\n isFetching: boolean;\n}\n\ntype Cache<T> = Map<string, T>;\n\ntype Action<T> = { type: 'loading' } | { type: 'fetched'; payload: T } | { type: 'error'; payload: Error };\n\ntype FetchOptions = {\n enabled: boolean;\n errorLevel: ErrorLevel;\n keepPrevData: boolean;\n};\n\ntype UseFetchConfig<QueryFn> = {\n loadingContext?: string;\n params?: Record<string, string | number | Date>;\n requestOptions?: RequestInit;\n fetchOptions?: Partial<FetchOptions>;\n queryFn: QueryFn;\n};\nexport function useFetch<QueryFn extends (...args: any) => Promise<any>, T extends Awaited<ReturnType<QueryFn>>>({\n fetchOptions = { keepPrevData: true },\n queryFn,\n params,\n}: UseFetchConfig<QueryFn>): State<T> {\n // TODO cache endpoint calls\n const cache = useRef<Cache<T>>(new Map());\n // Used to prevent state update if the component is unmounted\n const cancelRequest = useRef<boolean>(false);\n const initialState: State<T> = {\n error: undefined,\n data: undefined,\n isFetching: fetchOptions.enabled !== false,\n };\n const fetchReducer = (state: State<T>, action: Action<T>): State<T> => {\n switch (action.type) {\n case 'loading':\n return { ...initialState, isFetching: true, data: fetchOptions.keepPrevData ? state.data : undefined };\n case 'fetched':\n return { ...initialState, data: action.payload, isFetching: false };\n case 'error':\n return { ...initialState, error: action.payload, isFetching: false };\n default:\n return state;\n }\n };\n\n const [state, dispatch] = useReducer(fetchReducer, initialState);\n\n const fetchData = useCallback(async () => {\n // If a cache exists for this url, return it\n /* if (cache.current.get(url.href)) {\n dispatch({ type: 'fetched', payload: cache.current.get(url.href)! });\n return;\n } */\n\n dispatch({ type: 'loading' });\n\n try {\n if (cancelRequest.current) return;\n const data = await queryFn();\n\n // cache.current.set(url.href, data);\n\n dispatch({ type: 'fetched', payload: data });\n } catch (error) {\n if (cancelRequest.current) return;\n dispatch({ type: 'error', payload: error as Error });\n }\n }, [dispatch, queryFn]);\n\n useEffect(() => {\n cancelRequest.current = false;\n\n if (fetchOptions.enabled !== false) void fetchData();\n\n // Avoid a possible state update after the component was unmounted\n return () => {\n cancelRequest.current = true;\n };\n }, [fetchOptions.enabled, fetchData]);\n\n return state;\n}\n","export const BREAKPOINTS = {\n sm: 480,\n md: 768,\n lg: 1024,\n} as const;\n","import { useEffect, useMemo, useState } from 'preact/hooks';\nimport { BREAKPOINTS } from '@src/constants';\nimport { ValueOf } from '@src/utils/types';\n\nexport const mediaQueries = {\n up: {\n sm: `(min-width: ${BREAKPOINTS.sm}px)`,\n md: `(min-width: ${BREAKPOINTS.md}px)`,\n lg: `(min-width: ${BREAKPOINTS.lg}px)`,\n },\n down: {\n xs: `(max-width: ${BREAKPOINTS.sm - 1}px)`,\n sm: `(max-width: ${BREAKPOINTS.md - 1}px)`,\n md: `(max-width: ${BREAKPOINTS.lg - 1}px)`,\n },\n only: {\n xs: `(max-width: ${BREAKPOINTS.sm - 1}px)`,\n sm: `(min-width: ${BREAKPOINTS.sm}px) and (max-width: ${BREAKPOINTS.md - 1}px)`,\n md: `(min-width: ${BREAKPOINTS.md}px) and (max-width: ${BREAKPOINTS.lg - 1}px)`,\n lg: `(min-width: ${BREAKPOINTS.lg}px)`,\n },\n} as const;\n\ntype MediaQueries = typeof mediaQueries;\nexport type MediaQueryValues = ValueOf<{\n [K in keyof MediaQueries]: ValueOf<MediaQueries[K]>;\n}>;\n\n// Generic hook that can be used for other media queries. In this case, we'd need to change the query type later.\nexport const useMediaQuery = (query: MediaQueryValues) => {\n const list = useMemo(() => window.matchMedia(query), [query]);\n const [matches, setMatches] = useState(list.matches);\n\n useEffect(() => {\n const handleChange = (event: MediaQueryListEvent) => setMatches(event.matches);\n list.addEventListener('change', handleChange);\n return () => list.removeEventListener('change', handleChange);\n }, [list]);\n\n useEffect(() => {\n setMatches(list.matches);\n }, [list]);\n\n return matches;\n};\n","import { VNode } from 'preact';\nimport { JSXInternal } from 'preact/src/jsx';\n\nexport interface ButtonProps extends JSXInternal.HTMLAttributes<HTMLButtonElement> {\n classNameModifiers?: string[];\n variant?: ButtonVariant;\n iconLeft?: VNode<Element>;\n iconRight?: VNode<Element>;\n inline?: boolean;\n iconButton?: boolean;\n}\n\nexport enum ButtonVariant {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n LINK = 'link',\n}\n","import { SVGProps } from 'preact/compat';\n\nconst Close = ({ ...props }: Omit<SVGProps<SVGElement>, 'ref'>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.6569 4.07112C14.0474 3.6806 14.0474 3.04743 13.6569 2.65691C13.2664 2.26638 12.6332 2.26638 12.2427 2.65691L8.00005 6.89954L3.75745 2.65694C3.36692 2.26641 2.73376 2.26641 2.34324 2.65694C1.95271 3.04746 1.95271 3.68063 2.34324 4.07115L6.58584 8.31375L2.34319 12.5564C1.95266 12.9469 1.95266 13.5801 2.34319 13.9706C2.73371 14.3611 3.36688 14.3611 3.7574 13.9706L8.00005 9.72796L12.2427 13.9706C12.6333 14.3612 13.2664 14.3612 13.6569 13.9706C14.0475 13.5801 14.0475 12.947 13.6569 12.5564L9.41426 8.31375L13.6569 4.07112Z\"\n fill=\"#000\"\n />\n </svg>\n);\n\nexport default Close;\n","import { SVGProps } from 'preact/compat';\n\nconst Filter = ({ ...props }: Omit<SVGProps<SVGElement>, 'ref'>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M1.25 1.25H14.75V4.05C14.75 4.65117 14.5094 5.22128 14.0903 5.64033L10.08 9.65066V11.6212L7.34093 14.76H5.92V9.65066L1.90967 5.64033C1.49062 5.22128 1.25 4.65117 1.25 4.05V1.25ZM2.75 2.75V4.05C2.75 4.24883 2.82938 4.43872 2.97033 4.57967L7.42 9.02934V12.388L8.58 11.0588V9.02934L13.0297 4.57967C13.1706 4.43872 13.25 4.24883 13.25 4.05V2.75H2.75Z\"\n fill=\"#00112C\"\n />\n </svg>\n);\n\nexport default Filter;\n","export enum TypographyVariant {\n CAPTION = 'caption',\n BODY = 'body',\n SUBTITLE = 'subtitle',\n TITLE = 'title',\n}\n\nexport enum TypographyModifier {\n WIDE = 'wide',\n STRONGER = 'stronger',\n STRONGER_WIDE = 'stronger-wide',\n STRONGEST = 'strongest',\n STRONGEST_WIDE = 'strongest-wide',\n MEDIUM = 'm',\n LARGE = 'l',\n MOBILE = 'mobile',\n}\n\nexport enum TypographyElement {\n H1 = 'h1',\n H2 = 'h2',\n H3 = 'h3',\n H4 = 'h4',\n H5 = 'h5',\n H6 = 'h6',\n DIV = 'div',\n PARAGRAPH = 'p',\n SPAN = 'span',\n}\n","export const DEFAULT_TYPOGRAPHY_CLASSNAME = 'adyen-pe-typography';\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function x(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new n).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var R=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),R&&R(n)};var N=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var A=function(n,t){return null==n?null:r(r(n).map(t))},O={map:A,forEach:A,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},T=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var F=e.unmount;function I(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return I(n,t,e)})),n}function L(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function U(){this.__u=0,this.t=null,this.__b=null}function D(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function V(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),F&&F(n)},(U.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=D(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=L(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},U.prototype.componentWillUnmount=function(){this.t=[]},U.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=I(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__h=null),[t(u,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function P(n){return this.getChildContext=function(){return n.context},n.children}function j(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(P,{context:e.context},n.__v),e.l)}function z(n,e){var r=t(j,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new n).__a=function(n){var t=this,e=D(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var B=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,H=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Z=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Y=/[A-Z0-9]/g,$=\"undefined\"!=typeof document,q=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function G(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function J(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var K=e.event;function Q(){}function X(){return this.cancelBubble}function nn(){return this.defaultPrevented}e.event=function(n){return K&&(n=K(n)),n.persist=Q,n.isPropagationStopped=X,n.isDefaultPrevented=nn,n.nativeEvent=n};var tn,en={enumerable:!1,configurable:!0,get:function(){return this.class}},rn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={};for(var o in t){var i=t[o];if(!(\"value\"===o&&\"defaultValue\"in t&&null==i||$&&\"children\"===o&&\"noscript\"===e||\"class\"===o||\"className\"===o)){var l=o.toLowerCase();\"defaultValue\"===o&&\"value\"in t&&null==t.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":\"ondoubleclick\"===l?o=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||q(t.type)?\"onfocus\"===l?o=\"onfocusin\":\"onblur\"===l?o=\"onfocusout\":Z.test(o)?o=l:-1===e.indexOf(\"-\")&&H.test(o)?o=o.replace(Y,\"-$&\").toLowerCase():null===i&&(i=void 0):l=o=\"oninput\",\"oninput\"===l&&u[o=l]&&(o=\"oninputCapture\"),u[o]=i}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",en)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=B,rn&&rn(n)};var un=e.__r;e.__r=function(n){un&&un(n),tn=n.__c};var on=e.diffed;e.diffed=function(n){on&&on(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),tn=null};var ln={ReactCurrentDispatcher:{current:{readContext:function(n){return tn.__n[n.__c].props.value}}}},cn=\"17.0.2\";function fn(n){return t.bind(null,n)}function an(n){return!!n&&n.$$typeof===B}function sn(n){return an(n)&&n.type===u}function hn(n){return an(n)?f.apply(null,arguments):n}function vn(n){return!!n.__k&&(o(null,n),!0)}function dn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},mn=function(n,t){return n(t)},yn=u;function _n(n){n()}function bn(n){return n}function Sn(){return[!1,_n]}var gn=d,Cn=an;function En(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),v(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var wn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:gn,useTransition:Sn,useDeferredValue:bn,useSyncExternalStore:En,startTransition:_n,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:O,render:G,hydrate:J,unmountComponentAtNode:vn,createPortal:z,createElement:t,createContext:l,createFactory:fn,cloneElement:hn,createRef:c,Fragment:u,isValidElement:an,isElement:Cn,isFragment:sn,findDOMNode:dn,Component:n,PureComponent:w,memo:x,forwardRef:k,flushSync:mn,unstable_batchedUpdates:pn,StrictMode:yn,Suspense:U,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ln};export{O as Children,w as PureComponent,yn as StrictMode,U as Suspense,V as SuspenseList,ln as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,hn as cloneElement,fn as createFactory,z as createPortal,wn as default,dn as findDOMNode,mn as flushSync,k as forwardRef,J as hydrate,Cn as isElement,sn as isFragment,an as isValidElement,M as lazy,x as memo,G as render,_n as startTransition,vn as unmountComponentAtNode,pn as unstable_batchedUpdates,bn as useDeferredValue,gn as useInsertionEffect,En as useSyncExternalStore,Sn as useTransition,cn as version};\n//# sourceMappingURL=compat.module.js.map\n","import { DEFAULT_TYPOGRAPHY_CLASSNAME } from '@src/components/internal/Typography/constants';\nimport cx from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport { TypographyElement, TypographyModifier, TypographyVariant } from './types';\nimport { memo, PropsWithChildren } from 'preact/compat';\nimport './Typography.scss';\nimport { ComponentChild } from 'preact';\n\ninterface TypographyProps {\n el?: TypographyElement;\n stronger?: boolean;\n strongest?: boolean;\n variant: TypographyVariant;\n medium?: boolean;\n large?: boolean;\n wide?: boolean;\n children: ComponentChild;\n className?: string;\n}\n\nfunction Typography({ el, className, stronger, strongest, variant, medium, large, wide, children }: PropsWithChildren<TypographyProps>) {\n const Tag = el || 'p';\n const conditionalClasses = useMemo(\n () => ({\n // Caption\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}`]: variant === TypographyVariant.CAPTION,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}-${TypographyModifier.WIDE}`]:\n variant === TypographyVariant.CAPTION && wide,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.CAPTION}-${TypographyModifier.STRONGER}`]:\n variant === TypographyVariant.CAPTION && stronger,\n\n // Body\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}`]: variant === TypographyVariant.BODY,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.WIDE}`]: variant === TypographyVariant.BODY && wide,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.STRONGER}`]:\n variant === TypographyVariant.BODY && stronger,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.BODY}-${TypographyModifier.STRONGEST}`]:\n variant === TypographyVariant.BODY && strongest,\n\n // Subtitle\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.SUBTITLE}`]: variant === TypographyVariant.SUBTITLE,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.SUBTITLE}-${TypographyModifier.STRONGER}`]:\n variant === TypographyVariant.SUBTITLE && stronger,\n\n // Title\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}`]: variant === TypographyVariant.TITLE && !medium && !large,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}-${TypographyModifier.MEDIUM}`]:\n variant === TypographyVariant.TITLE && medium,\n [`${DEFAULT_TYPOGRAPHY_CLASSNAME}--${TypographyVariant.TITLE}-${TypographyModifier.LARGE}`]: variant === TypographyVariant.TITLE && large,\n }),\n [variant, wide, stronger, medium, large, strongest]\n );\n\n return <Tag className={cx([`${DEFAULT_TYPOGRAPHY_CLASSNAME}`, conditionalClasses, className])}>{children}</Tag>;\n}\n\nexport default memo(Typography);\n","import classnames from 'classnames';\nimport { JSX } from 'preact';\n\nconst EXCESS_WHITESPACE_CHAR = /^\\s+|\\s+(?=\\s|$)/g;\n\nexport const parseClassName = (fallbackClassName: string, className: JSX.Signalish<string | undefined>): undefined | string => {\n const classes = className ? (typeof className === 'string' ? className : className?.value ?? '') : '';\n return classes.replace(EXCESS_WHITESPACE_CHAR, '') || fallbackClassName.replace(EXCESS_WHITESPACE_CHAR, '') || undefined;\n};\n\nexport const getClassName = (\n className?: JSX.Signalish<string | undefined>,\n fallbackClassName?: JSX.Signalish<string | undefined>,\n requiredClassName?: JSX.Signalish<string | undefined>\n) => classnames(parseClassName('', requiredClassName), parseClassName(parseClassName('', fallbackClassName) || '', className));\n\nexport const getModifierClasses = (prefix: string, modifiers: string[] = [], baseClasses: string[] = []): string =>\n classnames([...baseClasses, ...modifiers?.map(m => (prefix ? `${prefix}--${m}` : m))]);\n","import { getModifierClasses } from '@src/utils/class-name-utils';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { JSXInternal } from 'preact/src/jsx';\n\nconst useButton = (\n className: string,\n classNameModifiers: string[],\n defaultClassName: string,\n disabled: boolean,\n onClick?: JSXInternal.MouseEventHandler<HTMLButtonElement>\n) => {\n const click = useCallback(\n (e: any) => {\n e.preventDefault();\n\n if (!disabled) {\n onClick?.(e);\n }\n },\n [disabled, onClick]\n );\n\n const classes = useMemo(\n () => getModifierClasses(defaultClassName, classNameModifiers, [defaultClassName, className]),\n [classNameModifiers, className]\n );\n\n return { classes, click };\n};\n\nexport default useButton;\n","export const DEFAULT_BUTTON_CLASSNAME = 'adyen-pe-button';\nexport const BUTTON_ACTION_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}-actions`;\nexport const ICON_BUTTON_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--icon`;\nexport const ICON_BUTTON_CONTENT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}--icon-content`;\nexport const BUTTON_ACTION_CONTAINER_CLASSNAME = `${BUTTON_ACTION_CLASSNAME}__container-wrapper`;\nexport const BUTTON_LABEL_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__label`;\nexport const BUTTON_ICON_RIGHT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__icon-right`;\nexport const BUTTON_ICON_LEFT_CLASSNAME = `${DEFAULT_BUTTON_CLASSNAME}__icon-left`;\n","import useButton from '@src/components/internal/Button/hooks/useButton';\nimport {\n DEFAULT_BUTTON_CLASSNAME,\n BUTTON_ICON_LEFT_CLASSNAME,\n BUTTON_ICON_RIGHT_CLASSNAME,\n BUTTON_LABEL_CLASSNAME,\n ICON_BUTTON_CLASSNAME,\n ICON_BUTTON_CONTENT_CLASSNAME,\n} from '@src/components/internal/Button/constants';\nimport { TypographyElement, TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport { parseClassName } from '@src/utils/class-name-utils';\nimport { parseBoolean } from '@src/utils/common';\nimport { Ref } from 'preact';\nimport { forwardRef } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { ButtonProps, ButtonVariant } from './types';\nimport './Button.scss';\n\n// TODO: Reuse BaseButton component within Button component\nfunction Button(\n {\n variant = ButtonVariant.PRIMARY,\n disabled = false,\n onClick,\n classNameModifiers = [],\n iconLeft,\n iconRight,\n type = 'button',\n children,\n className,\n iconButton = false,\n ...restAttributes\n }: ButtonProps,\n ref: Ref<HTMLButtonElement>\n) {\n const classNameValue = useMemo(() => parseClassName('', className) || '', [className]);\n const disabledValue = useMemo(() => parseBoolean(disabled), [disabled]);\n\n const { classes, click } = useButton(classNameValue, [...classNameModifiers, variant], DEFAULT_BUTTON_CLASSNAME, disabledValue, onClick);\n\n return (\n <button\n className={iconButton ? `${ICON_BUTTON_CLASSNAME} ${classes}` : classes}\n type={type}\n disabled={disabled}\n onClick={click}\n ref={ref}\n {...restAttributes}\n >\n {iconButton ? (\n <div className={`${ICON_BUTTON_CONTENT_CLASSNAME}`}>{children}</div>\n ) : (\n <>\n {iconLeft && <span className={BUTTON_ICON_LEFT_CLASSNAME}>{iconLeft}</span>}\n <Typography className={BUTTON_LABEL_CLASSNAME} el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger={true}>\n {children}\n </Typography>\n {iconRight && <span className={BUTTON_ICON_RIGHT_CLASSNAME}>{iconRight}</span>}\n </>\n )}\n </button>\n );\n}\n\nexport default forwardRef(Button);\n","import { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport Close from '@src/components/internal/SVGIcons/Close';\nimport Filter from '@src/components/internal/SVGIcons/Filter';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport cx from 'classnames';\nimport { PropsWithChildren } from 'preact/compat';\nimport { useEffect, useState } from 'preact/hooks';\nimport Button from '../Button';\nimport './FilterBar.scss';\nimport { FilterBarProps } from './types';\n\nexport default function FilterBar(props: PropsWithChildren<FilterBarProps>) {\n const { i18n } = useCoreContext();\n const isSmViewport = useMediaQuery(mediaQueries.down.xs);\n const [showFilters, setShowFilters] = useState(!isSmViewport);\n\n useEffect(() => {\n setShowFilters(!isSmViewport);\n }, [isSmViewport]);\n\n return (\n <>\n {isSmViewport && (\n <div className=\"adyen-pe-filter-bar__header\">\n <Typography variant={TypographyVariant.SUBTITLE}>{i18n.get('transactions')}</Typography>\n <Button\n className={'adyen-pe-filter-bar__header-icon'}\n variant={ButtonVariant.SECONDARY}\n iconButton\n onClick={() => setShowFilters(prevState => !prevState)}\n >\n {showFilters ? <Close /> : <Filter />}\n </Button>\n </div>\n )}\n {showFilters && (\n <div\n aria-label={i18n.get('filterBar')}\n className={cx('adyen-pe-filter-bar', { 'adyen-pe-filter-bar__content--mobile': isSmViewport })}\n >\n {props.children}\n {props.canResetFilters && !!props.resetFilters && (\n <Button variant={ButtonVariant.TERTIARY} onClick={props.resetFilters}>\n {i18n.get('button.clearAll')}\n </Button>\n )}\n </div>\n )}\n </>\n );\n}\n","import { TransactionDetailData } from '@src/components';\nimport { Core } from '../../../core';\nimport UIElement from '../UIElement';\n\nexport const enum TransactionFilterParam {\n BALANCE_ACCOUNT = 'balanceAccount',\n CATEGORIES = 'categories',\n CURRENCIES = 'currencies',\n STATUSES = 'statuses',\n CREATED_SINCE = 'createdSince',\n CREATED_UNTIL = 'createdUntil',\n MIN_AMOUNT = 'minAmount',\n MAX_AMOUNT = 'maxAmount',\n}\n\nexport type OnSelection = (selection: { id: string; showModal: () => void }) => any;\n\nexport interface TransactionsComponentProps {\n name?: string;\n elementRef?: UIElement<TransactionsComponentProps> | null;\n onTransactionSelected?: OnSelection;\n onFiltersChanged?: (filters: { [P in TransactionFilterParam]?: string }) => any;\n onLimitChanged?: (limit: number) => any;\n preferredLimit?: 10 | 20;\n allowLimitSelection?: boolean;\n showDetails?: boolean;\n core: Core;\n balanceAccountId?: string;\n}\nexport interface BalanceAccountProps {\n balanceAccountDescription?: string;\n}\n\nexport type DetailsOptions = {\n transaction?: boolean;\n};\nexport type SelectedDetail = {\n data: string | TransactionDetailData;\n};\n","import Button from '@src/components/internal/Button';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport Close from '@src/components/internal/SVGIcons/Close';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { useCallback, useEffect, useRef } from 'preact/hooks';\nimport cx from 'classnames';\nimport { TargetedEvent } from 'preact/compat';\nimport './Modal.scss';\nimport { ModalProps } from './types';\n\nfunction targetIsNode(e: EventTarget | null): e is Node {\n if (!e || !('nodeType' in e)) {\n return false;\n }\n return true;\n}\nexport default function Modal({\n title,\n children,\n classNameModifiers = [],\n isOpen,\n onClose,\n isDismissible = true,\n headerWithBorder = true,\n size = 'fluid',\n ...props\n}: ModalProps) {\n const modalContainerRef = useRef<HTMLDivElement>(null);\n const { i18n } = useCoreContext();\n const handleClickOutside = useCallback(\n (e: TargetedEvent<Node, MouseEvent>) => {\n if (isDismissible && isOpen && targetIsNode(e.target) && !modalContainerRef?.current?.contains(e.target)) {\n onClose();\n }\n },\n [isDismissible, isOpen, onClose]\n );\n\n const handleEscKey = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen && isDismissible) {\n onClose();\n }\n },\n [isOpen, isDismissible, onClose]\n );\n\n useEffect(() => {\n if (isOpen) {\n window.addEventListener('keydown', handleEscKey);\n } else {\n window.removeEventListener('keydown', handleEscKey);\n }\n return () => window.removeEventListener('keydown', handleEscKey);\n }, [isOpen, handleEscKey]);\n\n return (\n <>\n {isOpen && (\n <div\n className={cx(\n 'adyen-pe-modal-wrapper',\n classNameModifiers.map(m => `adyen-pe-modal-wrapper--${m}`),\n { 'adyen-pe-modal-wrapper--open': isOpen, 'adyen-pe-modal-wrapper--dismissible': isDismissible }\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={!open}\n onClick={handleClickOutside}\n {...props}\n >\n <div\n className={cx('adyen-pe-modal', {\n 'adyen-pe-modal--fluid': size === 'fluid',\n 'adyen-pe-modal--small': size === 'small',\n 'adyen-pe-modal--large': size === 'large',\n 'adyen-pe-modal--extra-large': size === 'extra-large',\n 'adyen-pe-modal--full-screen': size === 'full-screen',\n })}\n ref={modalContainerRef}\n >\n <div\n className={cx('adyen-pe-modal__header', {\n 'adyen-pe-modal__header--with-title': title,\n 'adyen-pe-modal__header--with-border-bottom': headerWithBorder,\n })}\n >\n {title && <div className={`adyen-pe-modal__header__title`}>{title}</div>}\n\n {isDismissible && (\n <Button\n onClick={onClose}\n variant={ButtonVariant.TERTIARY}\n className={`adyen-pe-modal__header-icon`}\n aria-label={i18n.get('dismiss')}\n >\n <Close />\n </Button>\n )}\n </div>\n <div className={'adyen-pe-modal__content'}>{children}</div>\n </div>\n </div>\n )}\n </>\n );\n}\n","export const popoverUtil = (<T extends Element, U extends Function>() => {\n let popoverRefs: Array<{ element: T; callback?: U | undefined }> = [];\n\n const closePopoversOutsideOfClick = (eventPath: EventTarget[]) => {\n const index = eventPath.reduce((index: number, path: EventTarget) => {\n const pathMatchIndex =\n path instanceof Node\n ? popoverRefs.findIndex(popoverRef => {\n const popoverRefId = popoverRef.element.getAttribute('id');\n const pathId = path && (path as HTMLElement)?.getAttribute ? (path as HTMLElement)?.getAttribute('id') : null;\n return popoverRefId === pathId;\n })\n : -1;\n if (index === -1 && pathMatchIndex !== -1) return pathMatchIndex;\n return index;\n }, -1);\n if (index === -1) {\n closeNestedPopovers(0);\n } else {\n index + 1 <= popoverRefs.length - 1 && closeNestedPopovers(index + 1);\n }\n };\n\n const remove = (currentRef: T) => {\n const index = popoverRefs.findIndex(refs => refs.element.getAttribute('id') === currentRef.getAttribute('id'));\n if (index >= 0) {\n popoverRefs.splice(index, 1);\n }\n };\n\n const add = (currentRef: T, callback: U | undefined) => {\n const index = popoverRefs.findIndex(refs => refs.element.getAttribute('id') === currentRef.getAttribute('id'));\n if (index >= 0) return;\n popoverRefs.push({ element: currentRef, callback: callback });\n };\n\n const closeNestedPopovers = (fromIndex: number) => {\n const popoverLength = popoverRefs.length;\n for (let i = fromIndex; i < popoverLength; i++) {\n popoverRefs?.[i]?.callback?.();\n }\n popoverRefs.splice(fromIndex);\n };\n\n const closeAll = () => {\n popoverRefs.forEach(ref => ref?.callback?.());\n popoverRefs = [];\n };\n\n return { add, remove, closeAll, closePopoversOutsideOfClick };\n})();\n","import './Spinner.scss';\n\ninterface SpinnerProps {\n /**\n * Whether the spinner should be rendered inline\n */\n inline?: boolean;\n\n /**\n * size of the spinner (small/medium/large)\n */\n size?: string;\n}\n\n/**\n * Default Loading Spinner\n * @param props -\n */\nconst Spinner = ({ inline = false, size = 'large' }: SpinnerProps) => (\n <div className={`adyen-pe-spinner__wrapper ${inline ? 'adyen-pe-spinner__wrapper--inline' : ''}`}>\n <div className={`adyen-pe-spinner adyen-pe-spinner--${size}`} />\n </div>\n);\n\nexport default Spinner;\n","import { TranslationKey } from '@src/core/Localization/types';\nimport { ModalSize } from '@src/components/internal/Modal/types';\n\ntype CallbackFunction<T> = (arg: T) => void;\n\ntype DetailsConfig<T> = {\n showDetails: boolean;\n callback?: CallbackFunction<T>;\n};\n\nexport type SelectedDetail<Options> = {\n title?: TranslationKey;\n selection: { type: keyof Options; data: any };\n modalSize?: ModalSize;\n};\n\nexport type GetArgsExceptCallback<T extends Required<DetailsConfig<any>>> = Omit<Parameters<T['callback']>[0], 'showModal'>;\n\nexport type ModalDetailsOptions = {\n [k: string]: DetailsConfig<any>;\n};\n\nexport type CallbackIsPresent<Options extends ModalDetailsOptions, T extends SelectedDetail<Options>> = Options[T['selection']['type']] extends {\n callback: any;\n}\n ? true\n : false;\n\nexport type CallbackParams<Options extends ModalDetailsOptions, T extends SelectedDetail<Options>> = {\n callback: (\n args: Options[T['selection']['type']] extends { callback: any } ? GetArgsExceptCallback<Required<Options[T['selection']['type']]>> : never\n ) => void;\n};\nexport function hasCallback(options: any): options is Required<DetailsConfig<any>> {\n return 'callback' in options;\n}\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport { CallbackIsPresent, CallbackParams, GetArgsExceptCallback, hasCallback, ModalDetailsOptions, SelectedDetail } from './types';\n\n/**\n * @param options - This parameter is an object that contains several fields.\n * The keys of these fields represent the type of details that will be displayed on a modal.\n * - showDetails: An array of values that determine whether the details should be shown on the modal.\n * If this field is undefined, it will be assumed to be true.\n * - callback?: An optional function that will be executed at the merchant level.\n * This function will receive a 'showModal' function as a parameter,\n * which allows the merchant to control when the modal appears.\n */\n\nfunction useModalDetails<Options extends ModalDetailsOptions>(options: Options) {\n const [selectedDetail, setSelectedDetail] = useState<SelectedDetail<Options> | null>(null);\n const updateDetails = useCallback(\n <T extends SelectedDetail<Options>>(state: T): CallbackIsPresent<Options, T> extends true ? CallbackParams<Options, T> : {} => {\n if (state && hasCallback(options[state.selection.type])) {\n return {\n callback: options?.[state.selection.type]?.callback\n ? (\n args: Options[T['selection']['type']] extends { callback: any }\n ? GetArgsExceptCallback<Required<Options[T['selection']['type']]>>\n : never\n ) => options[state.selection.type]?.callback?.({ showModal: () => setSelectedDetail(state), ...args })\n : () => options[state.selection.type]?.showDetails && setSelectedDetail(state),\n };\n }\n setSelectedDetail(state);\n return {} as CallbackIsPresent<Options, T> extends true ? CallbackParams<Options, T> : {};\n },\n [options]\n );\n const resetDetails = useCallback(() => setSelectedDetail(null), []);\n\n const detailsToShow = useMemo(() => {\n const details = {} as { [key in keyof Options]: boolean };\n\n for (const detail in options) {\n const selectedDetail = options[detail];\n details[detail] = !selectedDetail?.showDetails || !!selectedDetail.callback;\n }\n\n return details;\n }, [options]);\n\n return {\n selectedDetail,\n updateDetails,\n detailsToShow,\n resetDetails,\n };\n}\n\nexport default useModalDetails;\n","export const BASE_CLASS = 'adyen-pe-transactions-display';\nexport const SPINNER_CONTAINER_CLASS = BASE_CLASS + '__spinner-container';\n","import { ButtonVariant } from '@src/components/internal/Button/types';\n\nexport interface ButtonActionObject {\n title: string;\n event: (event: Event) => void;\n icon?: Node;\n disabled?: boolean;\n variant?: ButtonVariant;\n}\n\nexport type ButtonActionsList = ButtonActionObject[] | readonly ButtonActionObject[];\n\nexport enum ButtonActionsLayoutBasic {\n BUTTONS_END = 'buttons-end',\n FILL_CONTAINER = 'fill-container',\n SPACE_BETWEEN = 'space-between',\n VERTICAL_STACK = 'vertical-stack',\n}\n\nexport enum ButtonActionsLayoutExtended {\n BUTTONS_START = 'buttons-start',\n}\n\nexport const ButtonActionsLayout = { ...ButtonActionsLayoutBasic, ...ButtonActionsLayoutExtended };\nexport type ButtonActionsLayout = ButtonActionsLayoutBasic | ButtonActionsLayoutExtended;\n","import Button from '@src/components/internal/Button';\nimport { ButtonActionsLayout, ButtonActionsList } from '@src/components/internal/Button/ButtonActions/types';\nimport { BUTTON_ACTION_CLASSNAME, BUTTON_ACTION_CONTAINER_CLASSNAME } from '@src/components/internal/Button/constants';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport './ButtonActions.scss';\nimport { memo } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\n\ninterface ButtonActionsProps {\n actions: ButtonActionsList;\n layout?: ButtonActionsLayout;\n}\nfunction ButtonActions({ actions, layout = ButtonActionsLayout.BUTTONS_END }: ButtonActionsProps) {\n const conditionalClasses = (): string => {\n return `${BUTTON_ACTION_CLASSNAME}--${layout}`;\n };\n\n const generateButtonVariantByIndex = (actionIndex: number) => {\n const lastActionIndex = actions.length - 1;\n return actionIndex === lastActionIndex ? ButtonVariant.PRIMARY : ButtonVariant.SECONDARY;\n };\n\n const reversedActions = useMemo(() => [...actions].reverse(), [actions]);\n\n return (\n <div className={BUTTON_ACTION_CLASSNAME}>\n <div className={`${BUTTON_ACTION_CONTAINER_CLASSNAME} ${conditionalClasses()}`} role=\"group\">\n {reversedActions.map((button, index) => (\n <Button\n aria-label={button.title}\n key={index}\n disabled={button.disabled}\n variant={button.variant || generateButtonVariantByIndex(index)}\n onClick={button.event}\n >\n {button.title}\n </Button>\n ))}\n </div>\n </div>\n );\n}\n\nexport default memo(ButtonActions);\n","export const DEFAULT_POPOVER_CLASSNAME = 'adyen-pe-popover';\nexport const DEFAULT_TOOLTIP_CLASSNAME = 'adyen-pe-tooltip';\nexport const POPOVER_CONTAINER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}-container`;\nexport const POPOVER_HEADER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__header`;\nexport const POPOVER_HEADER_TITLE_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__header-title`;\nexport const POPOVER_CONTENT_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__content`;\nexport const TOOLTIP_CONTENT_CLASSNAME = `${DEFAULT_TOOLTIP_CLASSNAME}__content`;\nexport const POPOVER_FOOTER_CLASSNAME = `${DEFAULT_POPOVER_CLASSNAME}__footer`;\n","import Button from '@src/components/internal/Button';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport './PopoverDismissButton.scss';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { memo } from 'preact/compat';\n\ninterface PopoverDismissButtonProps {\n image?: boolean;\n onClick: () => void;\n}\n\nfunction PopoverDismissButton({ image = true, onClick }: PopoverDismissButtonProps) {\n const { i18n } = useCoreContext();\n const getConditionalClasses = (): string => {\n return image ? 'adyen-pe-popover-dismiss-button--on-image' : '';\n };\n return (\n <>\n <Button\n className={getConditionalClasses()}\n iconButton={true}\n variant={ButtonVariant.TERTIARY}\n onClick={onClick}\n aria-label={i18n.get('closeIconLabel')}\n >\n <svg role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <title>{'dismiss'}</title>\n <path\n fill=\"#00112C\"\n fillRule=\"evenodd\"\n d=\"M11.4697 12.5303C11.7626 12.8232 12.2374 12.8232 12.5303 12.5303C12.8232 12.2374 12.8232 11.7626 12.5303 11.4697L9.06066 8L12.5303 4.53033C12.8232 4.23744 12.8232 3.76256 12.5303 3.46967C12.2374 3.17678 11.7626 3.17678 11.4697 3.46967L8 6.93934L4.53033 3.46967C4.23744 3.17678 3.76256 3.17678 3.46967 3.46967C3.17678 3.76256 3.17678 4.23744 3.46967 4.53033L6.93934 8L3.46967 11.4697C3.17678 11.7626 3.17678 12.2374 3.46967 12.5303C3.76256 12.8232 4.23744 12.8232 4.53033 12.5303L8 9.06066L11.4697 12.5303Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n </>\n );\n}\n\nexport default memo(PopoverDismissButton);\n","import Typography from '@src/components/internal/Typography/Typography';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport { memo } from 'preact/compat';\n\nexport interface PopoverTitleProps {\n title: string;\n isImageTitle?: boolean;\n}\nfunction PopoverTitle({ title, isImageTitle = false }: PopoverTitleProps) {\n const getVariant = (): TypographyVariant => {\n return isImageTitle ? TypographyVariant.SUBTITLE : TypographyVariant.BODY;\n };\n\n return (\n <Typography strongest={!isImageTitle} variant={getVariant()}>\n {title}\n </Typography>\n );\n}\n\nexport default memo(PopoverTitle);\n","import { ButtonActionsLayout, ButtonActionsList } from '@src/components/internal/Button/ButtonActions/types';\nimport { ComponentChildren } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { MutableRef } from 'preact/hooks';\n\nexport enum PopoverContainerVariant {\n TOOLTIP = 'tooltip',\n POPOVER = 'popover',\n}\n\ninterface PopoverCoreProps {\n actions?: ButtonActionsList;\n actionsLayout?: ButtonActionsLayout;\n variant?: PopoverContainerVariant;\n divider?: boolean;\n dismissible?: boolean;\n fitContent?: boolean;\n disableFocusTrap?: boolean;\n open?: boolean;\n withContentPadding?: boolean;\n modifiers?: string[];\n position?: PopoverContainerPosition;\n containerSize?: PopoverContainerSize;\n title?: string;\n targetElement: MutableRef<Element | null>;\n withoutSpace?: boolean;\n dismiss?: () => any;\n setToTargetWidth?: boolean;\n children: ComponentChildren;\n classNameModifiers?: string[];\n showOverlay?: boolean;\n fitPosition?: boolean;\n}\n\ntype UncontrolledProps = Pick<HTMLAttributes<any>, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'role'>;\n\nexport type PopoverProps = PopoverCoreProps & UncontrolledProps;\n\nexport enum PopoverContainerPosition {\n TOP = 'top',\n TOP_LEFT = 'top-left',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom-left',\n LEFT = 'left',\n}\n\nexport enum PopoverContainerSize {\n MEDIUM = 'medium',\n WIDE = 'wide',\n}\n","import UIElement from './external/UIElement';\nimport { Core, CoreOptions } from '../core';\nimport Analytics from '../core/Analytics';\nimport Localization from '../core/Localization';\n\nexport const enum InteractionKeyCode {\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_UP = 'ArrowUp',\n BACKSPACE = 'Backspace',\n END = 'End',\n ENTER = 'Enter',\n ESCAPE = 'Escape',\n HOME = 'Home',\n PAGE_DOWN = 'PageDown',\n PAGE_UP = 'PageUp',\n SPACE = 'Space',\n TAB = 'Tab',\n}\n\nexport interface ICore {\n options: CoreOptions;\n i18n: Localization['i18n'];\n}\n\nexport interface BaseElementProps {\n core: Core;\n _parentInstance?: Core;\n modules?: {\n analytics: Analytics;\n };\n}\n\nexport interface IUIElement {\n displayName: string;\n accessibleName: string;\n type: string;\n elementRef: any;\n}\n\nexport interface IFormElement<P> {\n submit(): void;\n setStatus(status: UIElementStatus, props?: any): UIElement<P>;\n showValidation(): void;\n setState(newState: object): void;\n}\n\nexport type UIElementStatus = 'ready' | 'loading' | 'error' | 'success';\n\nexport type SetTriggerValidation = (callback: (schema?: Record<string, any>) => void) => void;\nexport interface UIElementProps {\n id?: string;\n name?: string;\n setUIElementStatus?: (status: string) => void;\n ref?: any;\n onContactSupport?: () => void;\n\n /** @internal */\n elementRef?: any;\n}\n\nexport interface FormProps<P> {\n onChange?: (state: any, element: UIElement<P> | null) => void;\n onValid?: (state: any, element: UIElement<P> | null) => void;\n beforeSubmit?: (state: any, element: UIElement<P>, actions: any) => Promise<void>;\n onSubmit?: (state: any, element: UIElement<P> | null) => void;\n onComplete?: (state: BaseElementProps, element: UIElement<P> | null) => void;\n onError?: (error: any, element?: UIElement<P> | null) => void;\n triggerValidation?: SetTriggerValidation;\n}\n\nexport type BaseElementState = {\n errors?: {\n [key: string]: any;\n };\n valid?: {\n [key: string]: boolean;\n };\n fieldProblems?: {\n [key: string]: any;\n };\n isValid?: boolean;\n};\n\nexport type _UIComponentProps<T> = BaseElementProps & UIElementProps & T & {};\n\nexport type ExternalUIComponentProps<T> = UIElementProps & T & {};\n","export const REF: unique symbol = Symbol('_ref');\n","export class ReflexError extends Error {}\nexport class UnknownRefError extends ReflexError {}\nexport class MissingReflexActionError extends ReflexError {}\n","import { REF } from '../constants';\nimport { MissingReflexActionError } from '../errors';\nimport type { Ref, Reflex, Reflexable, ReflexAction } from '../types';\nimport { EMPTY_OBJECT, hasOwnProperty, isFunction, sameValue } from '@src/utils/common';\n\nexport function assertReflexAction<T = any>(value?: any): asserts value is ReflexAction<T> {\n if (!isFunction(value)) throw new MissingReflexActionError();\n}\n\nexport const isReflex = <T = any>(value: any): value is Reflex<T> => {\n try {\n if (isFunction(value) && hasOwnProperty(value, 'current') && hasOwnProperty(value, REF) && !sameValue(value, (value as Reflex<T>)[REF])) {\n const notDefined = (value as Reflex<T>).actions.get(EMPTY_OBJECT as ReflexAction<T>);\n const size = (value as Reflex<T>).actions.size;\n\n return notDefined === undefined && Number.isInteger(size) && size >= 0;\n }\n } catch {\n /* Definitely not a reflex, return false outside this block */\n }\n\n return false;\n};\n\nexport const unwrap = <T = any>(reflexable: Reflexable<T>): Ref<T> => (isReflex<T>(reflexable) ? unwrap(reflexable[REF]) : reflexable);\n","import { REF } from '../constants';\nimport { UnknownRefError } from '../errors';\nimport type { Defined, Nullable, Ref, RefAsCallback, Reflex, Reflexable, ReflexAction, ReflexRecord, ReflexRegister } from '../types';\nimport { assertReflexAction, unwrap } from './utils';\nimport { enumerable, isFunction, sameValue, struct } from '@src/utils/common';\n\nexport const createReflexRegister = (() => {\n const _getRecordForRef = <T = any>(register: WeakMap<Ref, ReflexRecord>, ref: Ref<T>): ReflexRecord<T> => {\n const record = register.get(ref);\n if (!record) throw new UnknownRefError();\n return record;\n };\n\n const _bindReflexAction = <T = any>(\n register: WeakMap<Ref, ReflexRecord>,\n reflexable: Reflexable<T>,\n action?: ReflexAction<T>\n ): ReflexRecord<T>[0] => {\n let record: ReflexRecord<T> | undefined;\n let actions: Defined<typeof record>[1];\n\n const _ref = unwrap(reflexable);\n\n try {\n record = _getRecordForRef(register, _ref);\n } catch {\n /**\n * Ignore the original exception — since this could be a potential\n * reflex action binding. If no reflex action was provided, throw\n * an exception to signal the missing reflex action.\n */\n assertReflexAction<T>(action);\n }\n\n if (record) [, actions] = record;\n else {\n const isCallbackRef = isFunction(_ref);\n\n const _updateCurrentInstance: RefAsCallback<T> = isCallbackRef\n ? instance => {\n _ref((_current = instance));\n }\n : instance => {\n _ref.current = instance;\n _current = _ref.current;\n };\n\n const reflex = (instance => {\n if (actions.size === 0) {\n // Reflex is dead when there are no more reflex actions.\n // It should no longer mutate the _ref current instance.\n // Binding a new action registers _ref afresh with a new\n // reflex.\n return;\n }\n\n const previous = _current;\n\n _updateCurrentInstance(instance);\n\n if (!sameValue(_current, previous)) {\n for (const [action] of actions) {\n action(_current, previous);\n }\n }\n }) as Reflex<T>;\n\n let _current: Nullable<T> = isCallbackRef ? null : _ref.current;\n\n register.set(_ref, (record = [reflex, (actions = new Map())]));\n\n Object.defineProperties(reflex, {\n [REF]: { value: _ref },\n actions: {\n value: struct({\n get: { value: actions.get.bind(actions) },\n size: { get: () => actions.size },\n }),\n },\n current: {\n get: () => _current,\n set: isCallbackRef ? (void 0 as unknown as typeof reflex) : reflex,\n },\n });\n }\n\n if (action) {\n actions.set(action, 1 + (actions.get(action) || 0));\n }\n\n return record[0];\n };\n\n const _unbindReflexAction = <T = any>(register: WeakMap<Ref, ReflexRecord>, reflexable: Reflexable<T>, action: ReflexAction<T>): void => {\n const _ref = unwrap(reflexable);\n const [, actions] = _getRecordForRef(register, _ref);\n const bindings = actions.get(action) || 0;\n\n if (bindings === 1) actions.delete(action);\n else if (bindings > 1) actions.set(action, bindings - 1);\n if (actions.size === 0) register.delete(_ref);\n };\n\n return (): ReflexRegister => {\n const _register = new WeakMap<Ref, ReflexRecord>();\n return struct({\n bind: enumerable(_bindReflexAction.bind(void 0, _register)),\n unbind: enumerable(_unbindReflexAction.bind(void 0, _register)),\n }) as ReflexRegister;\n };\n})();\n\nexport default createReflexRegister();\n","import { REF } from '../constants';\nimport $registry from './registry';\nimport type { DefinedNullable, Nullable, Reflex, Reflexable, ReflexAction, ReflexContainer } from '../types';\nimport { assertReflexAction, unwrap } from './utils';\nimport { sameValue, struct } from '@src/utils/common';\n\nexport const createIsolatedFauxReflex = <T = any>(action: ReflexAction<T>): Reflex<T> => {\n assertReflexAction<T>(action);\n\n const $actions = new WeakMap<ReflexAction<T>, number>([[action, 1]]);\n\n const reflex = (instance => {\n if (sameValue(_current, instance)) return;\n const previous = _current;\n action((_current = instance), previous);\n }) as Reflex<T>;\n\n let _current: Nullable<T> = null;\n\n return Object.defineProperties(reflex, {\n [REF]: { value: reflex },\n actions: {\n value: struct({\n get: { value: $actions.get.bind($actions) },\n size: { value: 1 },\n }),\n },\n current: {\n get: () => _current,\n set: reflex,\n },\n });\n};\n\nexport const createReflexContainer = <T = any>(): ReflexContainer<T> => {\n let _reflex: Nullable<Reflex<T>>;\n let _reflexable: DefinedNullable<Reflexable<T>> = null;\n let _reflexAction: ReflexAction<T>;\n let _released = false;\n\n const _refreshContainer = (action: ReflexAction<T>) => {\n _reflex = undefined;\n _reflexable = null;\n _reflexAction = action;\n _released = false;\n };\n\n const _releaseContainer = () => {\n if (!_released) {\n _unbindReflexAction();\n _released = true;\n }\n };\n\n const _unbindReflexAction = () => {\n try {\n if (!_reflexable) return;\n $registry.unbind(_reflexable, _reflexAction);\n } catch {\n /* ignore exception for unknown ref */\n }\n };\n\n const _updateContainer = (action: ReflexAction<T>, reflexable?: Nullable<Reflexable<T>>) => {\n assertReflexAction<T>(action);\n\n if (_released) _refreshContainer(action);\n\n const currentReflexable = reflexable == undefined ? null : reflexable;\n\n if (_reflexAction === action && _reflexable === currentReflexable) {\n if (_reflex) return; // no further update required\n } else if (_reflexable) {\n if (sameValue(unwrap(_reflexable), unwrap(currentReflexable as Reflexable<T>))) {\n _reflex = $registry.bind(_reflexable, action);\n _unbindReflexAction();\n _reflexAction = action;\n return; // no further update required\n }\n\n _unbindReflexAction();\n }\n\n _reflexAction = action;\n\n _reflex = (_reflexable = currentReflexable) ? $registry.bind(_reflexable, _reflexAction) : createIsolatedFauxReflex(_reflexAction);\n };\n\n return struct({\n action: { get: () => _reflexAction },\n reflex: { get: () => _reflex },\n release: { value: _releaseContainer },\n update: { value: _updateContainer },\n }) as ReflexContainer<T>;\n};\n\nexport default createReflexContainer;\n","import { useLayoutEffect, useMemo, useRef } from 'preact/hooks';\nimport { createReflexContainer } from '../core/reflex';\nimport type { Nullable, Reflex, Reflexable, ReflexAction } from '../types';\n\nconst useReflex = <T = any>(action: ReflexAction<T>, reflexable?: Nullable<Reflexable<T>>) => {\n const container = useRef(createReflexContainer<T>());\n\n useLayoutEffect(() => container.current.release, []);\n\n return useMemo(() => {\n container.current.update(action, reflexable);\n return container.current.reflex as Reflex<T>;\n }, [action, reflexable]);\n};\n\nexport default useReflex;\n","import { popoverUtil } from '@src/components/internal/Popover/utils/popoverUtil';\nimport useReflex, { Nullable, Reflexable } from '@src/hooks/useReflex';\nimport { useCallback, useEffect, useRef } from 'preact/hooks';\n\nexport const enum ClickOutsideVariant {\n POPOVER = 'POPOVER',\n DEFAULT = 'DEFAULT',\n}\nconst onFocusoutCapture = (e: Event) => {\n e.stopImmediatePropagation();\n};\nexport const useClickOutside = <T extends Element = Element>(\n rootElementRef?: Nullable<Reflexable<T>>,\n callback?: (interactionKeyPressed: boolean) => void,\n disableClickOutside?: boolean,\n variant?: ClickOutsideVariant\n) => {\n const ref = useRef<Nullable<T>>(null);\n\n const handleClickOutside = useCallback(\n (e: Event) => {\n const eventPath: EventTarget[] = e.composedPath();\n if (!(ref && ref.current)) return;\n if (variant === ClickOutsideVariant.POPOVER) {\n popoverUtil.closePopoversOutsideOfClick(eventPath);\n } else {\n if (eventPath.length) {\n const samePath = eventPath.some(path => (path as T)?.isSameNode && (path as T).isSameNode(ref.current as T));\n if (callback && !samePath) {\n callback(true);\n }\n }\n }\n },\n [ref, callback, variant]\n );\n\n const clickOutsideHandlerRef = useRef(handleClickOutside);\n\n useEffect(() => {\n return () => {\n if (ref.current) popoverUtil.remove(ref.current);\n document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n };\n }, []);\n\n useEffect(() => {\n document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n clickOutsideHandlerRef.current = handleClickOutside;\n document.addEventListener('click', clickOutsideHandlerRef.current, true);\n if (variant === ClickOutsideVariant.POPOVER) {\n if (ref.current instanceof Element) popoverUtil.add(ref.current, callback);\n }\n return () => {\n if (ref.current) popoverUtil.remove(ref.current);\n document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n };\n }, [handleClickOutside, callback, variant]);\n\n useEffect(() => {\n if (disableClickOutside) {\n document.removeEventListener('click', clickOutsideHandlerRef.current, true);\n } else {\n document.addEventListener('click', clickOutsideHandlerRef.current, true);\n }\n }, [disableClickOutside]);\n\n return useReflex<T>(\n useCallback(\n (current: Nullable<T>, previous) => {\n if (previous instanceof Element) {\n previous.removeEventListener('focusout', onFocusoutCapture, true);\n }\n if (current instanceof Element) {\n if (!disableClickOutside) {\n current.addEventListener('focusout', onFocusoutCapture, true);\n ref.current = current;\n }\n }\n },\n [disableClickOutside, variant]\n ),\n rootElementRef\n );\n};\n","import { isNumber, mod } from '@src/utils/common';\n\nexport interface TabbableRoot {\n get current(): Element | null;\n set current(maybeTabbableOrOffset: Element | number | null);\n root: Element | null;\n tabbables: Element[];\n}\n\nexport const SELECTORS = `\n a[href],\n audio[controls],\n video[controls],\n button,\n input,\n select,\n textarea,\n [contenteditable],\n [tabindex]\n`.replace(/\\s+/, '');\n\nconst ATTRIBUTES = ['contenteditable', 'controls', 'disabled', 'hidden', 'href', 'inert', 'tabindex'];\nconst CHECKED_RADIOS = new Map<HTMLFormElement, Map<string, HTMLInputElement | null>>();\n\nconst some = Function.prototype.call.bind(Array.prototype.some);\n\nconst isInput = (element: Element): element is HTMLInputElement => element.tagName === 'INPUT';\nconst isRadio = (element: Element): element is HTMLInputElement => isInput(element) && element.type === 'radio';\nconst isCheckedRadio = (element: Element): element is HTMLInputElement => {\n const name = (element as HTMLInputElement).name;\n const form = (element as HTMLInputElement).form;\n const checkedRadiosForForm = CHECKED_RADIOS.get(form as HTMLFormElement);\n\n let checkedRadio = checkedRadiosForForm?.get(name);\n\n if (checkedRadio === undefined && form) {\n checkedRadio = (form.querySelector(`input[type=radio][name='${name}']:checked`) as HTMLInputElement) || null;\n CHECKED_RADIOS.set(form, (checkedRadiosForForm || new Map<string, HTMLInputElement | null>()).set(name, checkedRadio));\n }\n\n return checkedRadio === element;\n};\n\nconst shouldRefresh = (tabbables: Element[], records: MutationRecord[]) => {\n for (const record of records) {\n if (record.type !== 'attributes') {\n if (some(record.addedNodes, (node: Node) => node instanceof Element && isTabbable(node as Element))) return true;\n if (some(record.removedNodes, (node: Node) => tabbables.includes(node as Element))) return true;\n } else if (isTabbable(record.target as Element)) return true;\n else if (tabbables.includes(record.target as Element)) return true;\n }\n return false;\n};\n\nexport const focusIsWithin = (rootElement: Element = document.body, elementWithFocus?: Element | null): boolean => {\n if (rootElement === undefined) return false;\n if (elementWithFocus == undefined) return !!document.activeElement && focusIsWithin(rootElement, document.activeElement);\n\n let parentElement = elementWithFocus?.parentNode as Element | null;\n\n while (parentElement) {\n if (parentElement === rootElement) return true;\n parentElement = parentElement?.parentNode as Element | null;\n }\n\n return false;\n};\n\nexport const isFocusable = (element: Element) =>\n !(\n // [TODO]: Include all of these checks\n // (1) matches focusable elements selector\n // (2) is disabled element\n // (3) is inert or inert subtree child\n // (4) is hidden input\n // (5) with visibility: hidden\n // (6) is summary of open details element\n // (7) is details with summary element\n // (8) is disabled fieldset subtree child\n\n /* (1) */ (\n !element.matches(SELECTORS) ||\n /* (2) */ (element as HTMLInputElement)?.disabled ||\n /* (3) */ /^(true)?$/.test(element.getAttribute('inert') as string) ||\n /* (4) */ (isInput(element) && element.hidden)\n )\n );\n\nexport const isTabbable = (element: Element) =>\n !(\n (\n (isRadio(element) && !isCheckedRadio(element)) || // (1) is not checked radio button\n (element as HTMLElement)?.tabIndex < 0 || // (2) has negative tabindex\n !isFocusable(element)\n ) // (3) is not focusable\n );\n\nexport const withTabbableRoot = () => {\n const observer = new MutationObserver(records => shouldRefresh(tabbables, records) && getTabbables());\n const tabbables: Element[] = [];\n\n let currentIndex = -1;\n let root: Element | null = null;\n\n const focusAt = (tabbableIndex: number) => {\n if (tabbableIndex < 0) return;\n const constrainedIndex = Math.min(tabbableIndex, tabbables.length - 1);\n if (currentIndex !== constrainedIndex) currentIndex = constrainedIndex;\n (tabbables[currentIndex] as HTMLElement)?.focus();\n };\n\n const getTabbables = () => {\n tabbables.length = 0;\n if (!(root instanceof Element)) return;\n root.querySelectorAll(SELECTORS).forEach(maybeTabbable => isTabbable(maybeTabbable) && tabbables.push(maybeTabbable));\n if (!focusIsWithin(root)) return;\n tabbableRoot.current = document.activeElement;\n };\n\n const tabbableRoot = Object.create(null, {\n current: {\n get: () => tabbables[currentIndex] ?? null,\n set: (maybeTabbableOrOffset: Element | number | null) => {\n if (!maybeTabbableOrOffset) return;\n if (!isNumber(maybeTabbableOrOffset)) return focusAt(tabbables.indexOf(maybeTabbableOrOffset));\n if (maybeTabbableOrOffset !== ~~maybeTabbableOrOffset) return;\n return focusAt(mod(currentIndex + maybeTabbableOrOffset, tabbables.length));\n },\n },\n root: {\n get: () => root,\n set: (maybeElement?: any) => {\n if (maybeElement === root) return;\n\n root && observer.disconnect();\n root = maybeElement instanceof Element ? maybeElement : null;\n tabbables.length = 0;\n\n if (!root) return;\n\n observer.observe(root, {\n attributeFilter: ATTRIBUTES,\n attributes: true,\n childList: true,\n subtree: true,\n });\n\n getTabbables();\n },\n },\n tabbables: { value: tabbables },\n }) as TabbableRoot;\n\n return tabbableRoot;\n};\n\nexport default withTabbableRoot;\n","import { useCallback, useMemo, useRef } from 'preact/hooks';\nimport { InteractionKeyCode } from '@src/components/types';\nimport useReflex, { Nullable, Reflexable } from '../useReflex';\nimport withTabbableRoot, { focusIsWithin, isFocusable } from '../../utils/tabbable';\n\nconst useFocusTrap = (rootElementRef: Nullable<Reflexable<Element>>, onEscape: (interactionKeyPressed: boolean) => any) => {\n const escapedFocus = useRef(false);\n const focusElement = useRef<Element | null>(null);\n const interactionKeyPressed = useRef(false);\n const tabbableRoot = useMemo(withTabbableRoot, []);\n\n const onClickCapture = useMemo(() => {\n let lastFocusableElement: Element | null = null;\n let raf: number | undefined;\n\n return (evt: Event) => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n let element = evt.target as Element | null;\n while (element && element !== evt.currentTarget) {\n if (isFocusable(element)) {\n lastFocusableElement = element;\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n if (focusElement.current !== lastFocusableElement && lastFocusableElement instanceof HTMLElement) {\n (focusElement.current = lastFocusableElement)?.focus();\n }\n lastFocusableElement = null;\n raf = undefined;\n });\n });\n return;\n }\n element = element.parentNode as Element | null;\n }\n };\n }, []);\n\n const onFocusInCapture = useCallback((evt: FocusEvent) => {\n tabbableRoot.current = focusElement.current = evt.target as Element | null;\n }, []);\n\n const onFocusOutCapture = useCallback((evt: FocusEvent) => {\n if (tabbableRoot.tabbables.includes(evt.relatedTarget as Element)) return;\n if (focusIsWithin(evt.currentTarget as Element, evt.relatedTarget as Element | null)) return;\n if (interactionKeyPressed.current) return;\n\n escapedFocus.current = true;\n\n requestAnimationFrame(() => {\n if (escapedFocus.current) onEscape((escapedFocus.current = false));\n });\n }, []);\n\n const onKeyDownCapture = useMemo(() => {\n let raf: number | undefined;\n\n return (evt: KeyboardEvent) => {\n switch (evt.code) {\n case InteractionKeyCode.ARROW_DOWN:\n case InteractionKeyCode.ARROW_LEFT:\n case InteractionKeyCode.ARROW_RIGHT:\n case InteractionKeyCode.ARROW_UP:\n case InteractionKeyCode.END:\n case InteractionKeyCode.ESCAPE:\n case InteractionKeyCode.HOME:\n case InteractionKeyCode.PAGE_DOWN:\n case InteractionKeyCode.PAGE_UP:\n case InteractionKeyCode.TAB:\n cancelAnimationFrame(raf as number);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n interactionKeyPressed.current = false;\n raf = undefined;\n });\n });\n interactionKeyPressed.current = true;\n break;\n }\n if (evt.code === InteractionKeyCode.TAB) {\n evt.preventDefault();\n tabbableRoot.current = evt.shiftKey ? -1 : 1;\n } else if (evt.code === InteractionKeyCode.ESCAPE) onEscape(true);\n };\n }, []);\n\n return useReflex<Element>(\n useCallback((current, previous) => {\n if (previous instanceof Element) {\n (previous as HTMLElement).removeEventListener('keydown', onKeyDownCapture, true);\n (previous as HTMLElement).removeEventListener('focusin', onFocusInCapture, true);\n (previous as HTMLElement).removeEventListener('focusout', onFocusOutCapture, true);\n (current as HTMLElement).removeEventListener('click', onClickCapture, true);\n }\n\n if (current instanceof Element) {\n (current as HTMLElement).addEventListener('keydown', onKeyDownCapture, true);\n (current as HTMLElement).addEventListener('focusin', onFocusInCapture, true);\n (current as HTMLElement).addEventListener('focusout', onFocusOutCapture, true);\n (current as HTMLElement).addEventListener('click', onClickCapture, true);\n escapedFocus.current = false;\n tabbableRoot.root = current;\n } else tabbableRoot.root = null;\n }, []),\n rootElementRef\n );\n};\n\nexport default useFocusTrap;\n","import { enumerable, struct, structFrom } from '@src/utils/common';\n\ntype ObserverCallback = (entry: IntersectionObserverEntry) => void;\n\ninterface WithIntersectionObserver {\n remove: (this: { observerCallback: ObserverCallback }) => void;\n}\n\ninterface ObserverInstance {\n observerCallback: ObserverCallback;\n observer: IntersectionObserver;\n}\n\nconst getIntersectionObserver = (() => {\n const observerCallbackMap = new WeakMap<ObserverCallback, ObserverInstance & WithIntersectionObserver>();\n\n const withIntersectionObserver = struct({\n remove: enumerable(function () {\n remove(this.observerCallback);\n } as WithIntersectionObserver['remove']),\n }) as WithIntersectionObserver;\n\n const findObserver = (callbackFn: ObserverCallback) => {\n let observerInstance = observerCallbackMap.get(callbackFn);\n\n if (observerInstance === undefined) {\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n if (callbackFn) callbackFn(entry);\n });\n },\n { root: null, rootMargin: '', threshold: [1] }\n );\n\n observerInstance = structFrom(withIntersectionObserver, {\n observerCallback: enumerable(callbackFn),\n observer: enumerable(observer),\n }) as ObserverInstance & WithIntersectionObserver;\n\n observerCallbackMap.set(callbackFn, observerInstance);\n }\n\n return observerInstance;\n };\n\n const remove = (callbackFn: ObserverCallback) => {\n const currentObserver = observerCallbackMap.get(callbackFn);\n currentObserver?.observer.disconnect();\n observerCallbackMap.delete(callbackFn);\n };\n\n return findObserver;\n})();\n\nexport default getIntersectionObserver;\n","import { PopoverContainerPosition, PopoverContainerVariant } from '@src/components/internal/Popover/types';\nimport getIntersectionObserver from '@src/components/internal/Popover/utils/utils';\nimport { MutableRef, Ref, useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport useReflex, { Nullable, Reflexable } from '../useReflex';\n\nconst calculateOffset = ({\n popover,\n offset,\n targetElement,\n position,\n variant,\n fullWidth,\n}: {\n popover: Element;\n offset: [number, number, number, number];\n targetElement: MutableRef<Element | null>;\n position: PopoverContainerPosition;\n variant: PopoverContainerVariant;\n fullWidth: boolean;\n}) => {\n const currentTarget = targetElement?.current as HTMLElement;\n\n let dimensionX = 0;\n let dimensionY = 0;\n const targetPosition = currentTarget.getBoundingClientRect();\n const bodyPosition = document.body.getBoundingClientRect();\n\n const popoverContent = popover?.firstChild as HTMLElement;\n const toCenterFullWidth = bodyPosition.left + bodyPosition.width / 2 - popoverContent.offsetWidth / 2;\n const toCenterX = targetPosition.left + targetPosition.width / 2 - popoverContent.offsetWidth / 2;\n const toCenterY = targetPosition.top + targetPosition.height / 2 - popoverContent.offsetHeight / 2;\n switch (position) {\n case PopoverContainerPosition.BOTTOM:\n dimensionX = fullWidth\n ? toCenterFullWidth\n : variant === PopoverContainerVariant.TOOLTIP\n ? toCenterX + window.scrollX\n : targetPosition?.left + window.scrollX;\n dimensionY = targetPosition?.top + targetPosition?.height + window.scrollY + offset[1];\n break;\n case PopoverContainerPosition.BOTTOM_LEFT:\n dimensionX = targetPosition?.right + window.scrollX - popover.clientWidth;\n dimensionY = targetPosition?.top + targetPosition?.height + window.scrollY + offset[1];\n break;\n case PopoverContainerPosition.TOP:\n dimensionX = variant === PopoverContainerVariant.TOOLTIP ? toCenterX + window.scrollX : targetPosition.left + window.scrollX;\n dimensionY = targetPosition?.top - popoverContent?.clientHeight + window.scrollY - offset[0];\n break;\n case PopoverContainerPosition.RIGHT:\n dimensionX = targetPosition.left + targetPosition.width + window.scrollX + offset[2];\n dimensionY =\n variant === PopoverContainerVariant.TOOLTIP\n ? toCenterY + window.scrollY\n : targetPosition?.top - targetPosition?.height / 2 + window.scrollY;\n break;\n case PopoverContainerPosition.LEFT:\n dimensionX = targetPosition?.left - popover?.clientWidth + window.scrollX - offset[3];\n dimensionY =\n variant === PopoverContainerVariant.TOOLTIP\n ? toCenterY + window.scrollY\n : targetPosition?.top + window.scrollY - targetPosition?.height / 2;\n break;\n }\n\n const result = [dimensionX, dimensionY, 0];\n\n const res = result.reduce((acc, currentVal, index) => {\n if (index === 0) {\n return acc + `${currentVal}px,`;\n } else if (index === result.length - 1) {\n return acc + ` ${currentVal}px)`;\n } else {\n return acc + ` ${currentVal}px,`;\n }\n }, 'translate3d(');\n\n return `position:absolute;inset:0 auto auto 0;margin: 0;transform: ${res};visibility:hidden`;\n};\nconst usePopoverPositioner = (\n offset: [number, number, number, number],\n targetElement: MutableRef<Element | null>,\n variant: PopoverContainerVariant,\n position?: PopoverContainerPosition,\n arrowRef?: Ref<HTMLSpanElement> | undefined,\n setToTargetWidth?: boolean,\n showOverlay?: boolean,\n fitPosition?: boolean,\n ref?: Nullable<Reflexable<Element>>\n) => {\n const [initialPosition, setInitialPosition] = useState(true);\n const [showPopover, setShowPopover] = useState(fitPosition ? !fitPosition : !!position);\n const [currentPosition, setCurrentPosition] = useState(position || PopoverContainerPosition.TOP);\n const [checkedPositions, setCheckedPosition] = useState<Array<[PopoverContainerPosition, number]>>([]);\n\n const observerCallback = useCallback(\n (entry: IntersectionObserverEntry) => {\n if (entry.intersectionRatio === 1) return setShowPopover(true);\n if (!initialPosition && entry.intersectionRatio !== 1) {\n if (checkedPositions && checkedPositions.length === (fitPosition ? 5 : 4)) {\n const bestPos = checkedPositions.reduce((res, pos) => {\n if (pos[1] > res[1]) return pos;\n return res;\n }, checkedPositions[0]!);\n setCurrentPosition(bestPos[0]);\n setShowPopover(true);\n return;\n }\n setShowPopover(false);\n switch (currentPosition) {\n case PopoverContainerPosition.TOP:\n setCheckedPosition(value => [...value, [PopoverContainerPosition.TOP, entry.intersectionRatio]]);\n setCurrentPosition(PopoverContainerPosition.BOTTOM);\n break;\n case PopoverContainerPosition.BOTTOM:\n setCheckedPosition(value => [...value, [PopoverContainerPosition.BOTTOM, entry.intersectionRatio]]);\n setCurrentPosition(fitPosition ? PopoverContainerPosition.BOTTOM_LEFT : PopoverContainerPosition.RIGHT);\n break;\n case PopoverContainerPosition.BOTTOM_LEFT:\n setCheckedPosition(value => [...value, [PopoverContainerPosition.BOTTOM, entry.intersectionRatio]]);\n setCurrentPosition(PopoverContainerPosition.RIGHT);\n break;\n case PopoverContainerPosition.RIGHT:\n setCheckedPosition(value => [...value, [PopoverContainerPosition.RIGHT, entry.intersectionRatio]]);\n setCurrentPosition(PopoverContainerPosition.LEFT);\n break;\n case PopoverContainerPosition.LEFT:\n setCheckedPosition(value => [...value, [PopoverContainerPosition.LEFT, entry.intersectionRatio]]);\n setCurrentPosition(PopoverContainerPosition.TOP);\n break;\n }\n }\n },\n [initialPosition, checkedPositions, currentPosition, fitPosition]\n );\n const observerCallbackRef = useRef(observerCallback);\n\n useEffect(() => {\n getIntersectionObserver(observerCallbackRef.current).remove();\n observerCallbackRef.current = observerCallback;\n }, [observerCallback]);\n\n return useReflex<Element>(\n useCallback(\n (current, previous) => {\n if (previous && (!position || fitPosition)) {\n const observer = getIntersectionObserver(observerCallback).observer;\n observer.unobserve(previous);\n }\n\n if (current && targetElement.current) {\n if (!position || fitPosition) {\n const observer = getIntersectionObserver(observerCallback).observer;\n observer.observe(current);\n }\n if (!(current instanceof Element)) return;\n const popoverStyle = calculateOffset({\n popover: current,\n offset,\n targetElement,\n position: currentPosition,\n variant,\n fullWidth: showOverlay ?? false,\n });\n const style = showPopover ? popoverStyle + ';visibility:visible' : popoverStyle;\n\n const styleWithWidth = setToTargetWidth\n ? style + ';min-width:fit-content;width:' + targetElement.current?.clientWidth + 'px'\n : style;\n current.setAttribute('style', `${styleWithWidth}`);\n\n if (initialPosition) setInitialPosition(false);\n\n if (variant && variant === PopoverContainerVariant.TOOLTIP && arrowRef) {\n arrowRef.current?.setAttribute('data-popover-placement', currentPosition);\n }\n }\n },\n [\n offset,\n targetElement,\n currentPosition,\n position,\n variant,\n observerCallback,\n showPopover,\n initialPosition,\n setToTargetWidth,\n arrowRef,\n showOverlay,\n fitPosition,\n ]\n ),\n ref\n );\n};\n\nexport default usePopoverPositioner;\n","let idCounter = Date.now();\n\nexport const getUniqueId = (prefix = 'field') => {\n idCounter += 1;\n return `${prefix}-${idCounter}`;\n};\n","import { useCallback, useRef } from 'preact/hooks';\nimport useReflex, { Nullable, Reflexable } from '../useReflex';\nimport { getUniqueId } from '@src/utils/idGenerator';\n\nconst useUniqueIdentifier = (ref?: Nullable<Reflexable<Element>>) => {\n const id = useRef<string>();\n\n return useReflex<Element>(\n useCallback(\n (current, previous) => {\n if (previous instanceof Element && previous.id === id.current) previous.id = '';\n if (!(current instanceof Element)) return;\n current.id = id.current || (id.current = getUniqueId('adyen-pe'));\n },\n [ref]\n ),\n ref\n );\n};\n\nexport default useUniqueIdentifier;\n","import ButtonActions from '@src/components/internal/Button/ButtonActions/ButtonActions';\nimport { ButtonActionsLayoutBasic } from '@src/components/internal/Button/ButtonActions/types';\nimport {\n DEFAULT_POPOVER_CLASSNAME,\n DEFAULT_TOOLTIP_CLASSNAME,\n POPOVER_CONTAINER_CLASSNAME,\n POPOVER_CONTENT_CLASSNAME,\n POPOVER_FOOTER_CLASSNAME,\n POPOVER_HEADER_CLASSNAME,\n POPOVER_HEADER_TITLE_CLASSNAME,\n TOOLTIP_CONTENT_CLASSNAME,\n} from '@src/components/internal/Popover/constants';\nimport PopoverDismissButton from '@src/components/internal/Popover/PopoverDismissButton/PopoverDismissButton';\nimport PopoverTitle from '@src/components/internal/Popover/PopoverTitle/PopoverTitle';\nimport { PopoverContainerSize, PopoverContainerVariant, PopoverProps } from '@src/components/internal/Popover/types';\nimport { InteractionKeyCode } from '@src/components/types';\nimport { ClickOutsideVariant, useClickOutside } from '@src/hooks/element/useClickOutside';\nimport useFocusTrap from '@src/hooks/element/useFocusTrap';\nimport usePopoverPositioner from '@src/hooks/element/usePopoverPositioner';\nimport useUniqueIdentifier from '@src/hooks/element/useUniqueIdentifier';\nimport useReflex from '@src/hooks/useReflex';\nimport { getModifierClasses } from '@src/utils/class-name-utils';\nimport { isFunction } from '@src/utils/common';\nimport { isFocusable, SELECTORS } from '@src/utils/tabbable';\nimport classNames from 'classnames';\nimport { createPortal, PropsWithChildren } from 'preact/compat';\nimport { Ref, useCallback, useEffect, useMemo, useRef } from 'preact/hooks';\nimport './Popover.scss';\n\nconst findFirstFocusableElement = (root: Element) => {\n let focusable: HTMLElement | undefined;\n const elements = root.querySelector(`.${TOOLTIP_CONTENT_CLASSNAME}`)?.querySelectorAll(SELECTORS);\n if (elements) {\n Array.prototype.some.call(elements, elem => {\n if (isFocusable(elem)) return (focusable = elem);\n });\n return focusable;\n }\n return null;\n};\n\nconst getGapByVariant = (variant: PopoverContainerVariant): [number, number, number, number] => {\n return variant === PopoverContainerVariant.TOOLTIP ? [10, 3, 5, 5] : [15, 15, 15, 15];\n};\n\nfunction Popover({\n actions,\n disableFocusTrap = false,\n actionsLayout = ButtonActionsLayoutBasic.SPACE_BETWEEN,\n variant = PopoverContainerVariant.TOOLTIP,\n title,\n open,\n dismissible,\n modifiers,\n divider,\n fitContent,\n withoutSpace,\n containerSize,\n position,\n targetElement,\n setToTargetWidth,\n dismiss,\n children,\n withContentPadding,\n classNameModifiers,\n showOverlay = false,\n fitPosition,\n ...uncontrolledProps\n}: PropsWithChildren<PopoverProps>) {\n const isDismissible = useMemo(() => isFunction(dismiss) && dismissible !== false, [dismiss, dismissible]);\n const arrowRef = useUniqueIdentifier() as Ref<HTMLSpanElement> | undefined;\n const popoverOpen = useRef<boolean>();\n\n const onCloseFocusTrap = useCallback(\n (interactionKeyPressed: boolean) => {\n dismiss && dismiss();\n if (interactionKeyPressed) {\n (targetElement?.current as HTMLElement)?.focus();\n }\n },\n [dismiss, targetElement]\n );\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.code === InteractionKeyCode.ESCAPE) {\n dismiss && dismiss();\n (targetElement?.current as HTMLElement).focus();\n }\n },\n [dismiss, targetElement]\n );\n\n const cachedOnKeyDown = useRef(onKeyDown);\n const autoFocusAnimFrame = useRef<ReturnType<typeof requestAnimationFrame>>();\n\n const popoverPositionAnchorElement = useClickOutside(\n usePopoverPositioner(getGapByVariant(variant), targetElement, variant, position, arrowRef, setToTargetWidth, showOverlay, fitPosition),\n dismiss,\n variant === PopoverContainerVariant.TOOLTIP && !open,\n ClickOutsideVariant.POPOVER\n );\n const popoverFocusTrapElement = useFocusTrap(disableFocusTrap ? null : popoverPositionAnchorElement, onCloseFocusTrap);\n\n const popoverElement = useReflex<Element>(\n useCallback(\n current => {\n if (current instanceof Element) {\n cancelAnimationFrame(autoFocusAnimFrame.current!);\n\n autoFocusAnimFrame.current = requestAnimationFrame(() => {\n if (popoverOpen.current === open) return;\n if (!(popoverOpen.current = open)) return;\n const focusable = findFirstFocusableElement(current) as HTMLElement;\n focusable?.focus();\n });\n }\n },\n [open]\n ),\n disableFocusTrap ? popoverPositionAnchorElement : popoverFocusTrapElement\n );\n\n const popoverElementWithId = useUniqueIdentifier(popoverElement);\n\n const conditionalClasses = useMemo(\n () => ({\n [`${DEFAULT_POPOVER_CLASSNAME}--medium`]: containerSize === PopoverContainerSize.MEDIUM,\n [`${DEFAULT_POPOVER_CLASSNAME}--with-divider`]: !!divider,\n [`${DEFAULT_POPOVER_CLASSNAME}--wide`]: containerSize === PopoverContainerSize.WIDE,\n [`${DEFAULT_POPOVER_CLASSNAME}--fit-content`]: fitContent,\n [`${DEFAULT_POPOVER_CLASSNAME}--without-space`]: withoutSpace,\n [`${DEFAULT_POPOVER_CLASSNAME}--auto-width`]: showOverlay,\n }),\n [containerSize, divider, withoutSpace, fitContent, showOverlay]\n );\n\n useEffect(() => {\n document.removeEventListener('keydown', cachedOnKeyDown.current);\n document.addEventListener('keydown', (cachedOnKeyDown.current = onKeyDown));\n return () => document.removeEventListener('keydown', cachedOnKeyDown.current);\n }, [onKeyDown]);\n\n const classNamesByVariant =\n variant === PopoverContainerVariant.TOOLTIP ? DEFAULT_TOOLTIP_CLASSNAME : `${DEFAULT_POPOVER_CLASSNAME} ${POPOVER_CONTAINER_CLASSNAME}`;\n const classNamesContentByVariant = variant === PopoverContainerVariant.TOOLTIP ? TOOLTIP_CONTENT_CLASSNAME : `${POPOVER_CONTENT_CLASSNAME}`;\n\n return createPortal(\n <>\n {open ? (\n <>\n {showOverlay && <div className=\"adyen-pe-popover__overlay\"></div>}\n <div\n id=\"popover\"\n ref={popoverElementWithId}\n {...uncontrolledProps}\n className={classNames(classNamesByVariant, conditionalClasses, classNameModifiers)}\n style={{ visibility: 'hidden' }}\n role={uncontrolledProps.role ?? (variant === PopoverContainerVariant.POPOVER ? 'dialog' : 'tooltip')}\n >\n {(title || isDismissible) && (\n <div className={getModifierClasses(POPOVER_HEADER_CLASSNAME, modifiers, [POPOVER_HEADER_CLASSNAME])}>\n {title && (\n <div className={POPOVER_HEADER_TITLE_CLASSNAME}>\n <PopoverTitle title={title} />\n </div>\n )}\n {isDismissible && <PopoverDismissButton onClick={dismiss!} />}\n </div>\n )}\n {children && (\n <>\n <div\n className={classNames(classNamesContentByVariant, {\n [`${POPOVER_CONTENT_CLASSNAME}--with-padding`]: withContentPadding,\n [`${POPOVER_CONTENT_CLASSNAME}--overlay`]: showOverlay,\n })}\n >\n {children}\n </div>\n {variant === PopoverContainerVariant.TOOLTIP && (\n <span data-popover-placement=\"hidden\" ref={arrowRef} className=\"adyen-pe-tooltip__arrow\" />\n )}\n </>\n )}\n {actions && (\n <div className={POPOVER_FOOTER_CLASSNAME}>\n <ButtonActions actions={actions} layout={actionsLayout} />\n </div>\n )}\n </div>\n </>\n ) : null}\n </>,\n document.getElementsByTagName('body')[0]!\n );\n}\nexport default Popover;\n","import { useCallback } from 'preact/hooks';\nimport { InteractionKeyCode } from '@src/components/types';\nimport useBooleanState from '@src/hooks/useBooleanState';\n\nexport interface TooltipListeners {\n onfocusoutCapture(): void;\n onMouseLeave(): void;\n onKeyDown(evt: Event): void;\n onFocus(): void;\n onMouseEnter(): void;\n}\nexport const useTooltipListeners = (): {\n isVisible: boolean;\n listeners: TooltipListeners;\n} => {\n const [isVisible, setIsVisible] = useBooleanState();\n const showTooltip = useCallback(() => setIsVisible(true), [setIsVisible]);\n const hideTooltip = useCallback(() => setIsVisible(false), [setIsVisible]);\n\n const onKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n switch (evt.code) {\n case InteractionKeyCode.ESCAPE:\n hideTooltip();\n break;\n default:\n break;\n }\n },\n [hideTooltip]\n );\n\n return {\n listeners: {\n onfocusoutCapture: hideTooltip,\n onMouseLeave: hideTooltip,\n onKeyDown,\n onFocus: showTooltip,\n onMouseEnter: showTooltip,\n },\n isVisible,\n };\n};\n","import { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport Popover from '@src/components/internal/Popover/Popover';\nimport { PopoverContainerVariant } from '@src/components/internal/Popover/types';\nimport { useTooltipListeners } from '@src/components/internal/Tooltip/useTooltipListeners';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport useUniqueIdentifier from '@src/hooks/element/useUniqueIdentifier';\nimport classNames from 'classnames';\nimport { cloneElement, VNode } from 'preact';\nimport { PropsWithChildren } from 'preact/compat';\nimport { MutableRef } from 'preact/hooks';\nimport { TooltipProps } from './types';\nimport './Tooltip.scss';\n\nconst isString = (content: string | VNode<any>) => {\n return typeof content === 'string';\n};\n\nexport const Tooltip = ({ content, children, triggerRef, showTooltip, position, isContainerHovered = false }: PropsWithChildren<TooltipProps>) => {\n const controllerRef = useUniqueIdentifier();\n const isMdViewport = useMediaQuery(mediaQueries.down.sm);\n const { isVisible, listeners } = useTooltipListeners();\n\n if (isMdViewport) return <>{children}</>;\n\n return (\n <>\n {children\n ? cloneElement(children, {\n ...children?.props,\n role: 'button',\n tabIndex: -1,\n ref: controllerRef,\n className: children?.props?.className\n ? classNames(`${children?.props?.className} adyen-pe__tooltip-target`, {\n ' adyen-pe__tooltip-target--hovered': isContainerHovered,\n })\n : classNames('adyen-pe__tooltip-target', { 'adyen-pe__tooltip-target--hovered': isContainerHovered }),\n ...listeners,\n 'aria-describedby': `tooltip-${controllerRef.current?.id}`,\n })\n : null}\n\n {(isVisible || showTooltip) && (\n <Popover\n variant={PopoverContainerVariant.TOOLTIP}\n targetElement={(triggerRef ?? controllerRef) as MutableRef<Element | null>}\n position={position}\n open={isVisible || showTooltip}\n >\n <>{content && isString(content) ? <Typography variant={TypographyVariant.CAPTION}>{content}</Typography> : { content }}</>\n </Popover>\n )}\n </>\n );\n};\n","import { CategoryProps } from '@src/components/external/TransactionsOverview/components/Category/types';\nimport { Tooltip } from '@src/components/internal/Tooltip/Tooltip';\nimport useCoreContext from '@src/core/Context/useCoreContext';\n\nfunction Category({ value, isContainerHovered }: CategoryProps) {\n const { i18n } = useCoreContext();\n\n const tooltipKey = `tooltip.${value}`;\n\n return (\n <>\n {i18n.has(tooltipKey) && (\n <Tooltip content={i18n.get(tooltipKey)} isContainerHovered={isContainerHovered}>\n <span>{value}</span>\n </Tooltip>\n )}\n </>\n );\n}\n\nexport default Category;\n","import { HTMLAttributes, PropsWithChildren } from 'preact/compat';\n\nexport default function DataGridCell({ children, ...props }: PropsWithChildren<HTMLAttributes<HTMLTableCellElement>>) {\n return (\n <td role=\"cell\" className=\"adyen-pe-data-grid__cell\" {...props}>\n {children}\n </td>\n );\n}\n","import DataGridCell from '@src/components/internal/DataGrid/DataGridCell';\nimport { DataGridColumn } from '@src/components/internal/DataGrid/types';\nimport { CustomCell } from '@src/components/internal/DataGrid/DataGrid';\n\nexport const TableCells = <\n Items extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n columns,\n customCells,\n item,\n rowIndex,\n}: {\n columns: Columns;\n customCells?: CustomCells;\n item: Items[number];\n rowIndex: number;\n}) => {\n return (\n <>\n {columns.map(({ key }) => {\n if (customCells?.[key])\n return (\n <DataGridCell aria-labelledby={String(key)} key={key}>\n {\n // TODO create safeguard to remove \"as any\" assertion\n customCells[key]!({\n key,\n value: item[key],\n item,\n rowIndex,\n } as any)\n }\n </DataGridCell>\n );\n\n return (\n <DataGridCell aria-labelledby={String(key)} key={key}>\n {item[key]}\n </DataGridCell>\n );\n })}\n </>\n );\n};\n","import useCoreContext from '@src/core/Context/useCoreContext';\nimport { noop } from '@src/utils/common';\nimport { TableCells } from './TableCells';\nimport { DataGridColumn, InteractiveBodyProps } from '../types';\nimport { CustomCell } from '../../DataGrid/DataGrid';\n\nexport const TableBody = <\n Items extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n ClickedField extends keyof Items[number],\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n data,\n columns,\n customCells,\n onRowHover,\n}: Omit<InteractiveBodyProps<Items, Columns, ClickedField, CustomCells>, 'onRowClick'>) => {\n const { i18n } = useCoreContext();\n return (\n <>\n {data?.map((item, index) => (\n <tr\n className=\"adyen-pe-data-grid__row\"\n key={item}\n onMouseEnter={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover(index) : noop}\n onFocus={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover(index) : noop}\n onMouseLeave={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover() : noop}\n onBlur={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover() : noop}\n >\n <TableCells<Items, Columns, CustomCells> columns={columns} customCells={customCells} item={item} rowIndex={index} />\n </tr>\n ))}\n </>\n );\n};\n","import { useCallback, useReducer } from 'preact/hooks';\nimport useReflex from '@src/hooks/useReflex';\nimport { InteractionKeyCode } from '@src/components/types';\nimport { INITIAL_STATE } from '@src/components/internal/DataGrid/DataGrid';\n\nexport const useInteractiveDataGrid = ({ totalRows }: { totalRows: number }) => {\n const [state, dispatch] = useReducer<Readonly<{ activeIndex: number; index: number }>, { type: 'ACTIVE' | 'CURRENT'; index: number }>(\n (currentState, action) => {\n const total = totalRows;\n\n if (total > 1) {\n const nextIndex = action.index;\n\n if (nextIndex < total && nextIndex! >= 0) {\n if (action.type === 'ACTIVE') {\n return Object.freeze({ ...currentState, index: action.index ?? 0, activeIndex: action.index });\n } else {\n return Object.freeze({ ...currentState, index: action.index ?? 0, activeIndex: -1 });\n }\n }\n }\n return currentState;\n },\n INITIAL_STATE\n );\n\n const ref = useReflex<Element>(\n useCallback(\n current => {\n if (!(current instanceof Element)) return;\n\n const optionIndex = Number((current as HTMLElement).dataset?.index);\n\n if ((state.activeIndex === -1 && optionIndex === 0) || optionIndex === state.index) {\n current.setAttribute('tabindex', '0');\n } else {\n current.setAttribute('tabindex', '-1');\n }\n if (optionIndex === state.activeIndex) {\n (current as HTMLElement)?.focus();\n }\n },\n [state.activeIndex, state.index]\n )\n );\n\n const onKeyDownCapture = useCallback(\n (evt: KeyboardEvent) => {\n const isRow = (evt.target as HTMLElement)?.localName === 'tr';\n if (!isRow) {\n if (evt.code === InteractionKeyCode.ARROW_LEFT) {\n dispatch({\n type: 'ACTIVE',\n index: state.index,\n });\n }\n return;\n }\n switch (evt.code) {\n case InteractionKeyCode.ARROW_DOWN:\n case InteractionKeyCode.ARROW_UP:\n dispatch({\n type: 'ACTIVE',\n index: evt.code === InteractionKeyCode.ARROW_DOWN ? state.index + 1 : state.index - 1,\n });\n break;\n case InteractionKeyCode.HOME:\n dispatch({\n type: 'ACTIVE',\n index: 0,\n });\n break;\n case InteractionKeyCode.END:\n dispatch({\n type: 'ACTIVE',\n index: totalRows - 1,\n });\n break;\n case InteractionKeyCode.ENTER:\n (evt.currentTarget as HTMLElement)?.click();\n break;\n default:\n return;\n }\n evt.stopPropagation();\n },\n\n [totalRows, state.index]\n );\n\n const onFocusCapture = useCallback(\n (index: number) => (evt: Event) => {\n const isRow = (evt.target as HTMLElement)?.localName === 'tr';\n if (!isRow || state.index === -1) dispatch({ type: 'CURRENT', index: index });\n },\n [state.index]\n );\n\n return { listeners: { onKeyDownCapture, onFocusCapture }, ref, activeIndex: state.activeIndex, currentIndex: state.index };\n};\n","import { TableCells } from '@src/components/internal/DataGrid/components/TableCells';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { noop } from '@src/utils/common';\nimport { useCallback } from 'preact/hooks';\nimport { useInteractiveDataGrid } from '@src/components/internal/DataGrid/hooks/useInteractiveDataGrid';\nimport { DataGridColumn, InteractiveBodyProps } from '../types';\nimport { CustomCell } from '../../DataGrid/DataGrid';\n\nexport const InteractiveBody = <\n Items extends any[],\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n ClickedField extends keyof Items[number],\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({\n data,\n columns,\n onRowClick,\n customCells,\n onRowHover,\n}: InteractiveBodyProps<Items, Columns, ClickedField, CustomCells>) => {\n const onClickCallBack = useCallback(\n (item: Items[number]) => () => onRowClick?.callback(onRowClick?.retrievedField ? item[onRowClick.retrievedField] : item),\n [onRowClick]\n );\n\n const { i18n } = useCoreContext();\n\n const { currentIndex, listeners, ref } = useInteractiveDataGrid({ totalRows: data?.length ?? 0 });\n\n return (\n <>\n {data?.map((item, index) => (\n <tr\n onMouseEnter={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover(index) : noop}\n onFocus={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover(index) : noop}\n onMouseLeave={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover() : noop}\n onBlur={i18n.has(`tooltip.${item?.category}`) ? () => onRowHover() : noop}\n ref={ref}\n aria-selected={index === currentIndex}\n data-index={index}\n className=\"adyen-pe-data-grid__row adyen-pe-data-grid__row--clickable\"\n key={item}\n onClick={onClickCallBack(item)}\n onFocusCapture={listeners.onFocusCapture(index)}\n onKeyDownCapture={listeners.onKeyDownCapture}\n >\n <TableCells columns={columns} customCells={customCells} item={item} rowIndex={index} />\n </tr>\n ))}\n </>\n );\n};\n","import { ComponentChildren, VNode } from 'preact';\nimport { CustomCell } from '@src/components/internal/DataGrid/DataGrid';\nimport { TranslationKey } from '@src/core/Localization/types';\n\nexport enum CellTextPosition {\n CENTER = 'center',\n RIGHT = 'right',\n}\n\nexport interface DataGridColumn<Item> {\n label: string;\n key: Item | string;\n position?: CellTextPosition;\n}\n\nexport interface DataGridProps<\n Item extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Item[number], string>>>,\n ClickedField extends keyof Item[number],\n CustomCells extends CustomCell<Item, Columns, Columns[number]>\n> {\n children?: ComponentChildren;\n columns: Columns;\n condensed: boolean;\n data: Item | undefined;\n loading: boolean;\n outline: boolean;\n scrollable: boolean;\n Footer?: any;\n onRowClick?: {\n callback: (\n value: Item[number][ClickedField] extends NonNullable<Item[number][ClickedField]> ? Item[number][ClickedField] : Item[number]\n ) => void;\n retrievedField?: ClickedField;\n };\n onRowHover: (index?: number) => void;\n customCells?: CustomCells;\n emptyTableMessage?: {\n title: TranslationKey;\n message?: TranslationKey | TranslationKey[];\n };\n error?: Error | undefined;\n errorDisplay?: () => VNode<any>;\n}\n\nexport interface InteractiveBodyProps<\n Items extends any[],\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n ClickedField extends keyof Items[number],\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n> {\n onRowClick: DataGridProps<Items, Columns, ClickedField, CustomCells>['onRowClick'];\n data: DataGridProps<Items, Columns, ClickedField, CustomCells>['data'];\n columns: DataGridProps<Items, Columns, ClickedField, CustomCells>['columns'];\n customCells: DataGridProps<Items, Columns, ClickedField, CustomCells>['customCells'];\n onRowHover: (index?: number) => void;\n}\n","import cx from 'classnames';\nimport '../DataGrid.scss';\nimport { VNode } from 'preact';\n\nconst SkeletonBody = ({ columnsNumber, loading, emptyMessageDisplay }: { columnsNumber: number; loading: boolean; emptyMessageDisplay?: VNode }) => {\n const rows = Array.from({ length: 10 }, (_, index) => index);\n const columns = Array.from({ length: columnsNumber }, (_, index) => index);\n return (\n <>\n {rows.map((_, i) => (\n <tr className=\"adyen-pe-data-grid__row\" key={`adyen-pe-data-grid-skeleton-row-${i}`}>\n {columns.map((_, index) => (\n <td key={`adyen-pe-data-grid-skeleton-cell-${index}`} className=\"adyen-pe-data-grid__cell adyen-pe-data-grid__skeleton-cell\">\n <span\n className={cx({\n 'adyen-pe-data-grid__skeleton-cell-content adyen-pe-data-grid__skeleton-cell-content--loading': loading,\n 'adyen-pe-data-grid__empty-cell': !loading,\n })}\n />\n </td>\n ))}\n </tr>\n ))}\n {!loading && emptyMessageDisplay && emptyMessageDisplay}\n </>\n );\n};\n\nexport default SkeletonBody;\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjMiIGhlaWdodD0iMTY5IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjIzIDE2OSI+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMzYuNiAxMTIuMmMuNi0uMSAxLS43IDEtMS4zbC0uOS04LjcgMi4xIDYuNmMuMi42LjguOCAxLjQuNy42LS4xIDEtLjcuOC0xLjJsLTEuMy02LjggMi45LTQuOC01LjktNS41LTcuNiA5IDUgNC43IDEgNi4yYzAgLjcuNyAxLjIgMS41IDFaIi8+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBkPSJNMzEuNyAxMDMuNmMuMy40IDEuMiA2LjYgMS41IDkgMCAuNS42IDEgMS4xIDFoLjNjLjcgMCAxLjItLjYgMS4xLTEuM2wtLjctOS4xIi8+CiAgICA8cGF0aCBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMzEuNyAxMDMuNmMuMy40IDEuMiA2LjYgMS41IDkgMCAuNS42IDEgMS4xIDFoLjNjLjcgMCAxLjItLjYgMS4xLTEuM2wtLjctOS4xIi8+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBkPSJNMzAuNCA5OS4zdjEzLjFjMCAuNi41IDEuMSAxLjIgMS4xLjUgMCAxLS40IDEtMWwxLjItOS4zIi8+CiAgICA8cGF0aCBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMzAuNCA5OS4zdjEzLjFjMCAuNi41IDEuMSAxLjIgMS4xLjUgMCAxLS40IDEtMWwxLjItOS4zIi8+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBkPSJNMzUuOCA5MnMtNi41IDQuOC02LjYgNi4yYTk5NSA5OTUgMCAwIDAtLjkgMTAuM2MxLjUgMCAyLjgtMSAzLjItMi4zLjYtMi4xIDEuMi00LjkgMS01LjEtLjEtLjMgNS0uNyA1LjgtMy44Ii8+CiAgICA8cGF0aCBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMzUuOCA5MnMtNi41IDQuOC02LjYgNi4yYTk5NSA5OTUgMCAwIDAtLjkgMTAuM2MxLjUgMCAyLjgtMSAzLjItMi4zLjYtMi4xIDEuMi00LjkgMS01LjEtLjEtLjMgNS0uNyA1LjgtMy44Ii8+CiAgICA8cGF0aCBmaWxsPSIjMzMwMEMyIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNOTUuMyA0Ni43Uzc4IDUzIDcwLjUgNTkuNGMtNy42IDYuNC0zNi4xIDMxLjItMzYuMSAzMS4ybDExLjIgMTEgMzgtMjcuM2MzLjUtMi42IDExLjctMjcuNiAxMS43LTI3LjZaIi8+CiAgICA8cGF0aCBmaWxsPSIjMDAxMTJDIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJtNDUuNiAxMDEuNy0xMS4yLTExIDI5LjgtMi41LTE4LjYgMTMuNVpNMTg2LjQgOTAuNGgtNy4xdjI1LjNoNy4xVjkwLjRaTTIxNS42IDY2LjdoLTcuMlY5Mmg3LjJWNjYuN1pNMTczLjcgMTY3LjhoLTdsOC4zLTQ0aDdsLTguMyA0NFpNMjYuMyAxNjcuOGgtN2w4LjMtNDRoN2wtOC4zIDQ0Wk0yMDkuMiAxNjcuOGgtN2wtOC4zLTQ0aDdsOC4zIDQ0Wk02OCA5MS4xaC03djI1aDdWOTFaIi8+CiAgICA8cGF0aCBmaWxsPSIjRjNGNkY5IiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMjA4LjQgNjYuN0gzOVY5MmgxNjkuM1Y2Ni43WiIvPgogICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTIwOC40IDEyMy40di03LjZIMzl2Ny42aDE2OS41WiIvPgogICAgPHBhdGggZmlsbD0iI0YzRjZGOSIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTE5My43IDEyMy40VjExNkgxNS4zdjcuNWgxNzguNFoiLz4KICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik03Ny40IDE2Ny44aC03bC04LjMtNDRoN2w4LjMgNDRaTTQyLjIgMTUwLjRsLS44IDNoMTYuMmwuNy0zLjFoLTE2Wk04MC4xIDE1MC4zbDEuNCAzaDE1LjFsLTEtM0g4MFoiLz4KICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Im05Ny44IDExNS45LTI4LjQuMS03LjcgMzQuN2gtMjNsOS41LTQwLjZhMTggMTggMCAwIDEgMTYuNy0xMmw1NC0uNS0uNSAyLjZjLTIgOS4xLTEwLjYgMTUuNi0yMC42IDE1LjdaIi8+CiAgICA8cGF0aCBmaWxsPSIjMDAxMTJDIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNMTEwLjcgMTE1LjlIODUuNUw5OSAxNTAuM2gtMjVMNjIuOSAxMTdjLTMtOSAzLjYtMTguNiAxMy42LTE5LjRoLjhsNTQuNS0xLjMtLjYgMy45YTIwLjcgMjAuNyAwIDAgMS0yMC40IDE1LjdaIi8+CiAgICA8cGF0aCBmaWxsPSIjRjNGNkY5IiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNNTcuNiAxNTMuNEg0MS40bC0uOCAyLjctMTYuOCA0LjJjLTIgLjctMy43IDIuMS00LjcgMy45SDU1bDIuNi0xMC44Wk05Ni42IDE1My40SDgxLjVsMS4zIDIuOS0xNS4yIDRjLTIgLjctMy42IDIuMS00LjYgMy44aDM3LjNsLTMuNy0xMC43WiIvPgogICAgPHBhdGggZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0ibTU0IDE2OCAxLTMuOEgxOWE4IDggMCAwIDAtMSAzLjhoMzZaTTEwMS43IDE2OGwtMS4zLTMuOEg2M2E4IDggMCAwIDAtMSAzLjhoMzkuNloiLz4KICAgIDxwYXRoIGZpbGw9IiMzMzAwQzIiIGQ9Ik04Ni45IDU5LjZjLjMgMjAtNS40IDM3LjctNS40IDM3LjdsNTAuMy0uMXM0LjctMTguNyAyLTMxYy0yLjYtMTIuMy0xNi4yLTIxLjgtMjIuNS0yMi4zLTYuMi0uNi0yMC42IDQuNi0yMC42IDQuNiIvPgogICAgPHBhdGggc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTg2LjkgNTkuNmMuMyAyMC01LjQgMzcuNy01LjQgMzcuN2w1MC4zLS4xczQuNy0xOC43IDItMzFjLTIuNi0xMi4zLTE2LjItMjEuOC0yMi41LTIyLjMtNi4yLS42LTIwLjYgNC42LTIwLjYgNC42Ii8+CiAgICA8cGF0aCBmaWxsPSIjZmZmIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNOTYuNyA0Ny4xcy42IDUuNSAyIDljMS4yIDMuNiAyIDcuMyAyIDcuM3M2LjgtMTcuNSA4LjMtMTkuNmMwIDAtOCA2LjUtMTIuMyAzLjNaIi8+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJtMTA1LjggMzguMyAzLjEgNS41cy00IDYuOC04LjYgNi43Yy00LjcgMC0zLjUtNS42LTMuNS01LjZsOS02LjZaIi8+CiAgICA8cGF0aCBmaWxsPSIjMDAxMTJDIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJtMTAxLjggNDQuNy00IDQuOS0xLTIuNSA1LTIuNFpNOTcgODMuMUg4NS42bC0zLjMtMTcuOWgxMS4xbDMuNCAxNy45WiIvPgogICAgPHBhdGggZmlsbD0iI0VBQjFBMCIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTEwMS42IDgyLjZjLTEtMS42LTIuMy0zLTMuMi00LjUtMS4yLTItMS43LTQuNS0yLjMtNi44LTIuNS0uNy0yLjYgNC0yLjQgNiAuMyAxLjggMSAzLjcgMSAzLjctMi0uNC0xMC40LTQuNy0xMC40LTQuNy4zIDAtMS40IDIuMy0uNyAzLjNsMSAxLjNzLS43IDEuMy0uNyAyYy0uMSAxLjIgMS4xIDIuMiAxLjEgMi4ybC4xIDIuM2MuMi44IDEuNSAxLjUgMS41IDEuNXMwIDEuNC43IDEuOGMuNy4zIDExLjIgMS4yIDE1LjggMS40IDAtMS42LjUtMy40LjMtNSAwLTEuNS0xLTMuMi0xLjgtNC41WiIvPgogICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTExMS43IDIxLjljLjQuOC0uMiAxLjgtMSAyLjQtLjcuNS0xLjcuNy0yLjYgMSAxLjItLjQgMi42LS4yIDMuOC4yLjQuMi44LjQgMSAuNy4zLjUuMSAxLjItLjIgMS42LS4zLjQtLjguOC0xLjMgMS0xLjQuNy0zIDEuMi00LjUgMS4zIDEgMCAxLjUgMS4xIDEuMSAxLjktLjQuOC0xLjMgMS4yLTIuMiAxLjQtMS41LjQtMy4zLjQtNC41LS40LS43LS40LTEuMS0xLTEuNS0xLjVhNyA3IDAgMCAxLS4yLTcuNCA5IDkgMCAwIDEgNS43LTMuOGMxLjctLjMgNS42LS4zIDYuNCAxLjZaIi8+CiAgICA8cGF0aCBmaWxsPSIjMDAxMTJDIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNNjguNyAyNWMuNSAxLjcgMyAyIDQuNiAxLjMtMS4yLjItMi40LjQtMy4zIDEuMi0xIC45LTEuMSAyLjQtLjEgMyAuMy4zLjguNCAxLjMuNGE5IDkgMCAwIDAgNC42LTFjLTEgLjYtMiAxLjktMS4zIDMgLjYuOSAyLjIuOCAzLjIuMiAxLS42IDItMS41IDMtMS44LS42LjQtMS4zLjgtMS41IDEuNS0uMy42IDAgMS42LjYgMS43LjUuMSAxIDAgMS40LS4yIDEuMS0uNiAyLjItMS4zIDMtMi4zLTEgLjMtLjggMS45LjEgMi4zIDEgLjQgMiAwIDMtLjZhOC41IDguNSAwIDAgMCAyLjgtM2MtLjMuNCAwIDEuMS42IDEuNSAxIC42IDIuNC43IDMuNS4zYTkgOSAwIDAgMCAzLTIgNyA3IDAgMCAwIDItMi40Yy42LTEuNC4yLTMtLjctNC4yQTEwIDEwIDAgMCAwIDk1IDIxYy00LjMtMi4zLTkuOC0zLTE0LjYtMS43YTYuNiA2LjYgMCAwIDAtNi44LTJjLS43LjMtMS41LjctMS44IDEuNC0uNSAxLjIuNSAyLjMgMS42IDIuOC0yIDAtNS40IDEtNC42IDMuNVoiLz4KICAgIDxwYXRoIGZpbGw9IiNFQUIxQTAiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik04MC42IDI3LjdjLjctLjcgMTAuNi02LjggMTAuNi02LjhsMTAuMiAzLjggNC44IDkuMXYuMmMuOSA3LjQtMy4xIDEwLjUtOC44IDEzLjItNSAyLjQtMTYtMS42LTE2LjktMTkuNCAwIDAgMCAwIDAgMFoiLz4KICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik03MC4zIDE3LjNjLS4zLS45LS4zLTEuOC4yLTIuNC41LS41IDEuMi0uNyAxLjktLjYuNyAwIDEuMy40IDEuOS43LS45LS44LS4zLTIuMy44LTIuNyAxLjEtLjMgMi40LjEgMy4yIDEgLjUuNCAxIDQuMyAxLjUgNC40LjYuMSAxIDAgMS41LS4yIDIuNC0uOSA1LTEuNSA3LjQtMS44IDEuOS0uMyAzLjgtLjQgNS42LS4yIDIuMS4zIDQuMiAxIDYuMiAxLjl2MGMzLjQuMiA3LjQgMTAuNSA2LjQgMTAuOC0uOS4yLjIgMC0uMS4xLTIuMS43LTYuNC0uNy03LjYtMS4xYTEyIDEyIDAgMCAxLTMuMS0yLjFjLTEuOC0xLjQtNC0yLjItNi4yLTIuNmwtMS40LS4yYy0xLjguNy0zLjggMS01LjguNy0uNyAwLTEuNS0uMy0yLS44LS4zLS40LS4zLTEuMi4yLTEuNS0xIC41LTIuMS43LTMuMy43LS43IDAtMS42IDAtMi4yLS43LS42LS41LS41LTEuNi4zLTEuOC0xLjMuMy0yLjguNy00IDAtLjctLjUtMS4yLS43LTEuNC0xLjZaIi8+CiAgICA8cGF0aCBmaWxsPSIjRUFCMUEwIiBkPSJNMTAwIDI3LjhjLS42LTEuNy43LTQuMyAyLjQtNC42IDIuNi0uNSA0IDIgNC41IDQgLjUgMS44LjYgMy44LS4yIDUuNi0uMy41LS42IDEtMS4yIDEuNCIvPgogICAgPHBhdGggc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTEwMCAyNy44Yy0uNi0xLjcuNy00LjMgMi40LTQuNiAyLjYtLjUgNCAyIDQuNSA0IC41IDEuOC42IDMuOC0uMiA1LjYtLjMuNS0uNiAxLTEuMiAxLjQiLz4KICAgIDxwYXRoIGZpbGw9IiNGM0Y2RjkiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik05Ni44IDcuN2MyIDAgMy42LTEuNSAzLjYtMy40IDAtMS44LTEuNi0zLjMtMy42LTMuM3MtMy42IDEuNS0zLjYgMy4zYzAgMS45IDEuNiAzLjQgMy42IDMuNFoiLz4KICAgIDxwYXRoIGZpbGw9IiNGM0Y2RjkiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik0xMDcuNCAyMi4xYzAtLjEgMC0zLjMtMS41LTcuNS0xLjYtNC00LjktOS4xLTExLjYtMTAuNC04LjItMS4yLTEzLjIgNC0xNS40IDcuMy0yLjMgMy4yLTIuNCA1LjMtMi40IDUuM2E2NyA2NyAwIDAgMSAzMC45IDUuM1oiLz4KICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik05My4zIDE3LjljLjctLjkuNC0yLjItLjYtMi43LTEtLjQtMi40LjItMi43IDEuMi43LS45LjQtMi4yLS41LTIuOS0uOS0uNy0yLjMtLjctMy4yIDAtMSAuNi0xLjMgMS45LTEgMi45IDAtLjcgMC0xLjUtLjItMi4xLS4zLS43LTEtMS4zLTEuNy0xLjMtLjUgMC0xIC4yLTEuNC41YTMgMyAwIDAgMC0xIDNjLS4zLTEtLjUtMi4xLTEuMi0zLS43LTEtMS44LTEuNi0zLTEuNC0xIC4yLTIgMS4zLTIgMi4zIDAgMSAuNyAyIDEuNSAyLjcuMSAwIDE0LjYgNCAxNyAuOFoiLz4KICAgIDxwYXRoIGZpbGw9IiMzMzAwQzIiIGQ9Ik0xMjggNTQuOHMyMiAyNi41IDE4LjkgMzcuOGMtMiA2LjctNDcgNC45LTQ3IDQuOWwyLjUtMTQuMyAyMy43LTEuNS05LjctMTIuNSIvPgogICAgPHBhdGggc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTEyOCA1NC44czIyIDI2LjUgMTguOSAzNy44Yy0yIDYuNy00NyA0LjktNDcgNC45bDIuNS0xNC4zIDIzLjctMS41LTkuNy0xMi41Ii8+CiAgICA8cGF0aCBmaWxsPSIjZmZmIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9Ii42IiBkPSJNNTcuNCAxLjRIMXYyOS40aDMzLjJMNDguOSA0NWwtLjItMTQuMmg4LjdWMS40WiIvPgogICAgPHBhdGggc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0iTTIuMyAxNjhoMjE5LjQiLz4KICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iLjYiIGQ9Ik0yOS4yIDI2LjNjNi4yIDAgMTEuMy00LjcgMTEuMy0xMC41UzM1LjQgNS4yIDI5LjIgNS4yQzIzIDUuMiAxNy45IDEwIDE3LjkgMTUuOHM1IDEwLjUgMTEuMyAxMC41WiIvPgogICAgPHBhdGggc3Ryb2tlPSIjZmZmIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNiIgZD0ibTI1LjIgMTIgOCA3LjVNMzMuMiAxMmwtOCA3LjUiLz4KPC9zdmc+\"","import Typography from '@src/components/internal/Typography/Typography';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport { useCallback } from 'preact/hooks';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { TranslationKey } from '@src/core/Localization/types';\nimport './ErrorMessageDisplay.scss';\nimport { JSXInternal } from 'preact/src/jsx';\nimport noResults from '../../../images/no-results.svg';\nimport Button from '@src/components/internal/Button';\nimport useAuthContext from '@src/core/Auth/useAuthContext';\nexport const IMAGE_BREAKPOINT_SIZES = {\n md: 680,\n lg: 1024,\n};\n\ntype ErrorMessageDisplayProps = {\n title: TranslationKey;\n message?: TranslationKey | TranslationKey[];\n imageDesktop?: string;\n imageMobile?: string;\n withImage?: boolean;\n centered?: boolean;\n refreshComponent?: boolean;\n onContactSupport?: () => void;\n translationValues?: { [k in TranslationKey]?: JSXInternal.Element | null };\n};\nexport const ErrorMessageDisplay = ({\n title,\n message,\n imageDesktop,\n imageMobile,\n withImage,\n centered,\n refreshComponent,\n onContactSupport,\n translationValues,\n}: ErrorMessageDisplayProps) => {\n const { i18n } = useCoreContext();\n const { updateCore } = useAuthContext();\n const renderMessage = useCallback(\n (errorMessage: TranslationKey | TranslationKey[]) => {\n if (Array.isArray(errorMessage)) {\n return errorMessage.map((message, i) =>\n i === 0 ? (\n <>\n {i18n.get(message)}\n {translationValues && translationValues[message] && <>{translationValues[message]}</>}\n </>\n ) : (\n <>\n <br />\n {i18n.get(message)}\n {translationValues && translationValues[message] && <>{translationValues[message]}</>}\n </>\n )\n );\n }\n return i18n.get(errorMessage);\n },\n [i18n, translationValues]\n );\n\n return (\n <div className={`adyen-pe-error-message-display ${centered ? 'adyen-pe-error-message-display--centered' : ''}`}>\n {(imageDesktop || imageMobile || withImage) && (\n <div className=\"adyen-pe-error-message-display__illustration\">\n <picture>\n <source type=\"image/svg+xml\" media={`(min-width: ${IMAGE_BREAKPOINT_SIZES.md}px)`} srcSet={imageDesktop} />\n <source type=\"image/svg+xml\" media={`(max-width: ${IMAGE_BREAKPOINT_SIZES.md}px)`} srcSet={imageMobile} />\n <img srcSet={imageDesktop ?? noResults} alt={i18n.get('thereWasAnUnexpectedError')} />\n </picture>\n </div>\n )}\n <Typography variant={TypographyVariant.TITLE}>{i18n.get(title)}</Typography>\n {message && <Typography variant={TypographyVariant.BODY}>{renderMessage(message)}</Typography>}\n\n {(onContactSupport || refreshComponent) && (\n <div className={'adyen-pe-error-message-display__button'}>\n {onContactSupport && <Button onClick={onContactSupport}>{i18n.get('reachOutToSupport')}</Button>}\n {!onContactSupport && refreshComponent && <Button onClick={updateCore}>{i18n.get('refresh')}</Button>}\n </div>\n )}\n </div>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgMzAwIDIwMCIgZmlsbD0ibm9uZSI+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjYSkiPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xODkuMyAxMTMuN2MtMS0uMyAzNi4zIDI4LjYgNDcuNyAyNi40IDkuMy0xLjggMTQuMy01OSAxNC4zLTU5aC05LjlsLTEwLjggMzYuM3MtMzAuNC0yMi4zLTMxLjgtMjIuM2MtMS40IDAtOCAxOS4xLTkuNSAxOC42WiIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Im0yMzAuMSAxMTYuNyAyIDMuMiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIGQ9Im0yNTkuOCA3NC42IDEwLTMuNi43LTguMWMuMS0uOS0uNi0xLjYtMS40LTEuNy0uOC0uMS0xLjUuNS0xLjcgMS4zbC0xLjMgNi42LTEyLjYgNC44Ii8+CiAgICAgICAgPHBhdGggc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0ibTI1OS44IDc0LjYgMTAtMy42LjctOC4xYy4xLS45LS42LTEuNi0xLjQtMS43LS44LS4xLTEuNS41LTEuNyAxLjNsLTEuMyA2LjYtMTIuNiA0LjgiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjQkY3QzZBIiBkPSJtMjYwLjUgNzUuNSAxMS4xLTMuNSAyLjktNy4xYy4zLS44LS4xLTEuNy0uOS0yLjEtLjgtLjMtMS42IDAtMiAuN2wtMy4yIDUuOS0xMC4yIDMuMiIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Im0yNjAuNSA3NS41IDExLjEtMy41IDIuOS03LjFjLjMtLjgtLjEtMS43LS45LTIuMS0uOC0uMy0xLjYgMC0yIC43bC0zLjIgNS45LTEwLjIgMy4yIi8+CiAgICAgICAgPHBhdGggZmlsbD0iI0JGN0M2QSIgZD0ibTI1NCA3Ni41IDcuNC03LjhjLjctLjYuOC0xLjUuMi0yLjItLjUtLjctMS41LS44LTIuMi0uNC0yIDEuMy02LjIgNS0xMC43IDcuMS0zLjEgMS40LTUuMiA1LjgtNS44IDcuMyIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Im0yNTQgNzYuNSA3LjQtNy44Yy43LS42LjgtMS41LjItMi4yLS41LS43LTEuNS0uOC0yLjItLjQtMiAxLjMtNi4yIDUtMTAuNyA3LjEtMy4xIDEuNC01LjIgNS44LTUuOCA3LjMiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjQkY3QzZBIiBkPSJNMjUwLjMgODIuMmMxLjItLjMgMjEuNi04LjYgMjYuNy0xMC4zLjktLjMgMS40LTEuMiAxLjEtMi4xLS4yLS45LTEtMS4xLTEuOS0xLTQuNC44LTE3LjkgMy45LTE5LjUgNC4yLTEuNS4yLTUuMy42LTEwLjkgMy4xYTkgOSAwIDAgMC01LjIgOCIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0yNTAuMyA4Mi4yYzEuMi0uMyAyMS42LTguNiAyNi43LTEwLjMuOS0uMyAxLjQtMS4yIDEuMS0yLjEtLjItLjktMS0xLjEtMS45LTEtNC40LjgtMTcuOSAzLjktMTkuNSA0LjItMS41LjItNS4zLjYtMTAuOSAzLjFhOSA5IDAgMCAwLTUuMiA4Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgZD0iTTEzMC45IDYzLjFjLjggNy4zIDQuNyAxNC4xIDEwLjMgMThsLTMuMS02LjRjLS41LTEtLjktMi0xLTMuMWwtLjEtLjNjLS4xLS4xLS4xLjIgMCAuMSIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xMzAuOSA2My4xYy44IDcuMyA0LjcgMTQuMSAxMC4zIDE4bC0zLjEtNi40Yy0uNS0xLS45LTItMS0zLjFsLS4xLS4zYy0uMS0uMS0uMS4yIDAgLjEiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjQkY3QzZBIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJtMTU4LjkgNzQuOC0xMy4yLjItMS41IDE4IDguNCAzLjYgNy45LTMuOC0xLjYtMThaIi8+CiAgICAgICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE1MS45IDgzLjljLTQuNyAwLTYuNC0yLjctNi40LTIuN3YtNC42aDEzLjRsLjMgNmMtLjEuMS0yLjUgMS4zLTcuMyAxLjNaIi8+CiAgICAgICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEzNC41IDcwLjdjMi40IDMgNi4zIDUuNyA5LjggNy4zIDMuNiAxLjYgMTUuMyAxLjcgMTkuNS0xLjEgOC44LTUuOSAxMC41LTIwLjMgOC4yLTMwLjYtLjctMy40LTEuOC02LjgtMy43LTkuN2EyMiAyMiAwIDAgMC0xOS44LTkuM2MtNy41LjUtMTkuMyA1LjktMjAuOCAxNC4yLTEuNyA5LjYuOCAyMS42IDYuOCAyOS4yWiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIGQ9Ik0xMzMuMiA1OC45cy01LjEtNy03LjgtMS42IDQuOCAxMy40IDEwLjggMTEuMiIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xMzMuMiA1OC45cy01LjEtNy03LjgtMS42IDQuOCAxMy40IDEwLjggMTEuMiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIGQ9Ik0xNjkuNSA1Mi40czIuMy04LjMgNi43LTQuMmM0LjQgNC4xLjIgMTQuMi02LjIgMTQuMyIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xNjkuNSA1Mi40czIuMy04LjMgNi43LTQuMmM0LjQgNC4xLjIgMTQuMi02LjIgMTQuMyIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xNjYuOSA0MS4yYy02LjMtMTItMzMuNC04LjItMzQuOSA2LjNBMzguMiAzOC4yIDAgMCAwIDE0MiA3N2M1LjcgNS4yIDEyIDQuNSAxNC4xIDQuMSAyLjEtLjMgOC4yLTEuOCAxMS43LTguOGEzNy4yIDM3LjIgMCAwIDAtLjktMzEuMVoiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjMDAxMTJDIiBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMTM0LjEgNTVjNy44LTEuMSAxNS41LTIuNiAyMy4xLTQuNGwtLjQtNC44YzEgMS42IDEuOCAyLjcgMi40IDQuNSAzLTEuMyA2LjMtMS41IDkuNS0xLjYgMy4xLS4xLTQuMi0xNC4zLTYuMS0xNS42YTE2LjIgMTYuMiAwIDAgMC03LjEtMi4xYy01LjctLjYtMTEuNy0uNC0xNi43IDIuMy00IDIuMi03LjMgNi40LTcuNiAxMSAwIDEuNS41IDExIDIuOSAxMC43WiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNCRjdDNkEiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0xMTQuNSAxMTMuN2MxLS4zLTM2LjMgMjguNi00Ny43IDI2LjQtOS4zLTEuOC0xNC4zLTU5LTE0LjMtNTloOS45bDEwLjggMzYuM3MzMC40LTIyLjMgMzEuOC0yMi4zYzEuNS0uMSA4LjEgMTkuMSA5LjUgMTguNloiLz4KICAgICAgICA8cGF0aCBzdHJva2U9IiMwMDExMkMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJtNzMuOCAxMTYuNy0yLjEgMy4yIi8+CiAgICAgICAgPHBhdGggZmlsbD0iI0JGN0M2QSIgZD0iTTQ0IDc0LjYgMzQgNzFsLS43LTguMWMtLjEtLjkuNi0xLjYgMS40LTEuNy44LS4xIDEuNS41IDEuNyAxLjNsMS4zIDYuNiAxMi42IDQuOCIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik00NCA3NC42IDM0IDcxbC0uNy04LjFjLS4xLS45LjYtMS42IDEuNC0xLjcuOC0uMSAxLjUuNSAxLjcgMS4zbDEuMyA2LjYgMTIuNiA0LjgiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjQkY3QzZBIiBkPSJNNDMuMyA3NS41IDMyLjIgNzJsLTIuOS03Yy0uMy0uOC4xLTEuNy45LTIuMS44LS4zIDEuNiAwIDIgLjdsMy4yIDUuOSAxMC4yIDMuMiIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik00My4zIDc1LjUgMzIuMiA3MmwtMi45LTdjLS4zLS44LjEtMS43LjktMi4xLjgtLjMgMS42IDAgMiAuN2wzLjIgNS45IDEwLjIgMy4yIi8+CiAgICAgICAgPHBhdGggZmlsbD0iI0JGN0M2QSIgZD0ibTQ5LjggNzYuNS03LjQtNy44Yy0uNy0uNi0uOC0xLjUtLjItMi4yLjUtLjcgMS41LS44IDIuMi0uNCAyIDEuMyA2LjIgNSAxMC43IDcuMSAzLjEgMS40IDUuMiA1LjggNS44IDcuMyIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Im00OS44IDc2LjUtNy40LTcuOGMtLjctLjYtLjgtMS41LS4yLTIuMi41LS43IDEuNS0uOCAyLjItLjQgMiAxLjMgNi4yIDUgMTAuNyA3LjEgMy4xIDEuNCA1LjIgNS44IDUuOCA3LjMiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjQkY3QzZBIiBkPSJNNTMuNSA4Mi4yQzUyLjQgODEuOSAzMiA3My43IDI2LjggNzJhMS42IDEuNiAwIDAgMS0xLjEtMi4xYy4yLS45IDEtMS4xIDEuOS0xIDQuNC44IDE3LjkgMy45IDE5LjUgNC4yIDEuNS4yIDUuMy42IDEwLjkgMy4xYTkgOSAwIDAgMSA1LjIgOCIvPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik01My41IDgyLjJDNTIuNCA4MS45IDMyIDczLjcgMjYuOCA3MmExLjYgMS42IDAgMCAxLTEuMS0yLjFjLjItLjkgMS0xLjEgMS45LTEgNC40LjggMTcuOSAzLjkgMTkuNSA0LjIgMS41LjIgNS4zLjYgMTAuOSAzLjFhOSA5IDAgMCAxIDUuMiA4Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTEzOS45IDg3LjZjLTEuNC0zLjQtNi4zLTEyLjUtOS44LTExLjdhOTAuNyA5MC43IDAgMCAwLTQ2LjIgMjkuN2MtNC40IDUuNC0yIDguNy0yIDguN2w3LjEgMTguOHMzLjYgMiAxNS40IDEuN2MxNy40LS41IDM4LjgtMjYuOCAzOS41LTMwLjYuNC0yLjYtMS43LTEwLjgtNC0xNi42WiIvPgogICAgICAgIDxwYXRoIGZpbGw9IiMzMzAwQzIiIGQ9Im0xOTYuNiAyMzIuOC0xOC43LTU4LjFoLTUxbC0yMC4yIDU4LjEiLz4KICAgICAgICA8cGF0aCBzdHJva2U9IiMwQzExMkMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0ibTE5Ni42IDIzMi44LTE4LjctNTguMWgtNTFsLTIwLjIgNTguMSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiMwMDExMkMiIHN0cm9rZT0iIzAwMTEyQyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Im0xNTkuMSA5MS44LTE2LjguMXMtMjAuNCAxLTIxLjMgNi44Yy0xLjYgMTAuNiA2LjEgNTIuNiA1LjkgNTYuMmwtNC44IDIwLjQuMi4xYzEwLjcgNSAyMi43IDcuMiAzNC42IDYuMmwyMy4xLTEuOS0zLjItMTguMmMtLjItMi43IDcuMy00NiA2LjktNjEuMy0uMS03LjEtMjQuNi04LjQtMjQuNi04LjRaIi8+CiAgICAgICAgPHBhdGggZmlsbD0iIzAwMTEyQyIgc3Ryb2tlPSIjMDAxMTJDIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0ibTE0MS40IDkyIDEuNi01LjZoMTguN2wxLjEgNC45Yy0uMS4xLTguOSAxMS0yMS40LjdabTIzLjEtNC40YzEuNC0zLjQgNi4zLTEyLjUgOS44LTExLjdhOTAuNyA5MC43IDAgMCAxIDQ2LjIgMjkuN2M0LjQgNS40IDIgOC43IDIgOC43bC03LjEgMTguOHMtMy42IDItMTUuNCAxLjdjLTE3LjQtLjUtMzguOC0yNi44LTM5LjUtMzAuNmE0OC4zIDQ4LjMgMCAwIDEgNC0xNi42Wk0xMTkuOSAxOGMwLTIuNSAxLjEtNC45IDIuNy02LjggMS45LTIuMiA0LjUtMy44IDcuNC00LjIgMi45LS40IDUuOS42IDcuOSAyLjdhNC44IDQuOCAwIDAgMC0zLTQuMXM1LS4yIDcuMS40YTE0LjcgMTQuNyAwIDAgMSAxMSAxNy44Yy0yLjMgOC44LTE0LjIgNy0yMSA1LjYtNS42LTEuMi0xMi00LjktMTIuMS0xMS40WiIvPgogICAgPC9nPgogICAgPGRlZnM+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJhIj4KICAgICAgICAgICAgPHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzMDB2MjAwSDB6Ii8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgIDwvZGVmcz4KPC9zdmc+\"","import { ComponentChild, toChildArray } from 'preact';\nimport classnames from 'classnames';\nimport './DataGrid.scss';\nimport { TableBody } from '@src/components/internal/DataGrid/components/TableBody';\nimport { InteractiveBody } from '@src/components/internal/DataGrid/components/InteractiveBody';\nimport { CellTextPosition, DataGridColumn, DataGridProps } from './types';\nimport SkeletonBody from '@src/components/internal/DataGrid/components/SkeletonBody';\nimport { ErrorMessageDisplay } from '@src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { useMemo } from 'preact/hooks';\nimport emptyTableIcon from '../../../images/no-data-female.svg';\n\nexport const INITIAL_STATE = Object.freeze({\n activeIndex: -1,\n index: -1,\n});\n\ntype CellKey<\n Item extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Item[number], string>>>,\n Column extends DataGridColumn<Extract<keyof Item[number], string>>,\n T extends Columns[number]['key']\n> = {\n [k in Column['key']]: k;\n}[T];\n\nexport type CustomCell<\n Item extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Item[number], string>>>,\n T extends Columns[number]\n> = {\n [k in T['key']]?: (\n props: Item[0][k] extends NonNullable<Item[0][k]>\n ? { key: CellKey<Item, Columns, Columns[number], k>; value: Item[number][k]; item: Item[number]; rowIndex: number }\n : { key: CellKey<Item, Columns, Columns[number], k>; item: Item[number]; rowIndex: number }\n ) => ComponentChild;\n};\n\nfunction DataGrid<\n Items extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n ClickedField extends keyof Items[number],\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>({ errorDisplay, ...props }: DataGridProps<Items, Columns, ClickedField, CustomCells>) {\n const children = toChildArray(props.children);\n const footer = children.find((child: ComponentChild) => (child as any)?.['type'] === DataGridFooter);\n const emptyBody = !props.loading && props.data?.length === 0 && !props.error;\n const showMessage = useMemo(() => (!props.loading && emptyBody) || props.error, [emptyBody, props.error, props.loading]);\n\n return (\n <div\n className={classnames('adyen-pe-data-grid', {\n 'adyen-pe-data-grid--condensed': props.condensed,\n 'adyen-pe-data-grid--outline': props.outline,\n 'adyen-pe-data-grid--scrollable': props.scrollable,\n 'adyen-pe-data-grid--loading': props.loading,\n 'adyen-pe-data-grid--empty': emptyBody || props.error,\n })}\n >\n <>\n <div className=\"adyen-pe-data-grid__table-wrapper\">\n <table className=\"adyen-pe-data-grid__table\">\n <thead className=\"adyen-pe-data-grid__head\">\n <tr role=\"rowheader\" className=\"adyen-pe-data-grid__row\">\n {props.columns.map(item => (\n <th\n role=\"columnheader\"\n id={String(item.key)}\n className={classnames('adyen-pe-data-grid__cell adyen-pe-data-grid__cell--heading', {\n 'adyen-pe-data-grid__cell--right': item.position === CellTextPosition.RIGHT,\n 'adyen-pe-data-grid__cell--center': item.position === CellTextPosition.CENTER,\n })}\n key={item.key}\n >\n {item.label}\n </th>\n ))}\n </tr>\n </thead>\n\n <DataGridBody<Items, Columns, ClickedField, CustomCells> {...props} emptyBody={emptyBody} />\n </table>\n {showMessage &&\n (props.error && errorDisplay ? (\n errorDisplay()\n ) : (\n <ErrorMessageDisplay\n title={props.emptyTableMessage?.title ?? 'thereAreNoResults'}\n message={props.emptyTableMessage?.message}\n imageDesktop={emptyTableIcon}\n centered\n />\n ))}\n </div>\n {footer}\n </>\n </div>\n );\n}\n\nfunction DataGridBody<\n Items extends Array<any>,\n Columns extends Array<DataGridColumn<Extract<keyof Items[number], string>>>,\n ClickedField extends keyof Items[number],\n CustomCells extends CustomCell<Items, Columns, Columns[number]>\n>(props: DataGridProps<Items, Columns, ClickedField, CustomCells> & { emptyBody: boolean }) {\n const showSkeleton = useMemo(() => props.loading || props.emptyBody || props.error, [props.emptyBody, props.error, props.loading]);\n\n return (\n <tbody className={classnames('adyen-pe-data-grid__body')}>\n {showSkeleton ? (\n <SkeletonBody columnsNumber={props.columns.length} loading={props.loading} />\n ) : props.onRowClick ? (\n <InteractiveBody<Items, Columns, ClickedField, CustomCells>\n onRowHover={props.onRowHover}\n data={props.data}\n columns={props.columns}\n onRowClick={props.onRowClick}\n customCells={props.customCells}\n />\n ) : (\n <TableBody<Items, Columns, ClickedField, CustomCells>\n onRowHover={props.onRowHover}\n data={props.data}\n customCells={props.customCells}\n columns={props.columns}\n />\n )}\n </tbody>\n );\n}\n\nDataGrid.Footer = DataGridFooter;\n\nfunction DataGridFooter({ children }: { children: ComponentChild }) {\n return <div className=\"adyen-pe-data-grid__footer\">{children}</div>;\n}\n\nDataGrid.defaultProps = {\n condensed: false,\n outline: true,\n scrollable: true,\n};\n\nexport default DataGrid;\n","export const ARIA_ERROR_SUFFIX = '-ariaError';\nexport const ERROR_MSG_INCOMPLETE_FIELD = 'incompleteField';\n","import { ButtonActionObject } from '@src/components/internal/Button/ButtonActions/types';\n\nexport enum CommitAction {\n NONE = 0,\n APPLY = 1,\n CLEAR = 2,\n}\n\nexport interface UseCommitActionConfig {\n applyDisabled?: boolean;\n applyTitle?: string;\n resetDisabled?: boolean;\n resetTitle?: string;\n}\n\nexport interface CommitActionProperties {\n readonly commitAction: CommitAction;\n readonly commitActionButtons: readonly [ButtonActionObject, ButtonActionObject];\n readonly committing: boolean;\n readonly resetCommitAction: () => void;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport { ButtonActionObject } from '@src/components/internal/Button/ButtonActions/types';\nimport { CommitAction, CommitActionProperties, UseCommitActionConfig } from './types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { EMPTY_OBJECT } from '@src/utils/common';\n\nconst useCommitAction = ({ applyDisabled, applyTitle, resetDisabled, resetTitle }: UseCommitActionConfig = EMPTY_OBJECT): CommitActionProperties => {\n const { i18n } = useCoreContext();\n const [commitAction, setCommitAction] = useState(CommitAction.NONE);\n const [committing, setCommitting] = useState(commitAction !== CommitAction.NONE);\n\n const applyAction = useCallback(() => setCommitAction(CommitAction.APPLY), [setCommitAction]);\n const resetAction = useCallback(() => setCommitAction(CommitAction.CLEAR), [setCommitAction]);\n const resetCommitAction = useCallback(() => setCommitAction(CommitAction.NONE), [setCommitAction]);\n\n const applyButtonAction = useMemo(\n () =>\n ({\n disabled: (applyDisabled as any) === true,\n event: applyAction,\n title: applyTitle?.trim() || i18n.get('apply'),\n variant: ButtonVariant.PRIMARY,\n } as ButtonActionObject),\n [i18n, applyAction, applyDisabled, applyTitle]\n );\n\n const resetButtonAction = useMemo(\n () =>\n ({\n disabled: (resetDisabled as any) === true,\n event: resetAction,\n title: resetTitle?.trim() || i18n.get('reset'),\n variant: ButtonVariant.SECONDARY,\n } as ButtonActionObject),\n [i18n, resetAction, resetDisabled, resetTitle]\n );\n\n const commitActionButtons = useMemo(() => [applyButtonAction, resetButtonAction] as const, [applyButtonAction, resetButtonAction]);\n\n useEffect(() => {\n setCommitting(commitAction !== CommitAction.NONE);\n switch (commitAction) {\n case CommitAction.APPLY:\n case CommitAction.CLEAR:\n resetCommitAction();\n break;\n }\n }, [commitAction, setCommitting, resetCommitAction]);\n\n return { commitAction, commitActionButtons, committing, resetCommitAction } as const;\n};\n\nexport default useCommitAction;\n","import { JSX } from 'preact';\nimport { useRef, useState, useEffect } from 'preact/hooks';\nimport cx from 'classnames';\nimport './Img.scss';\nimport { ImgProps } from './types';\n\nexport default function Img(props: ImgProps) {\n const { backgroundUrl = '', className = '', classNameModifiers = [], src = '', alt = '', showOnError = false } = props;\n const [loaded, setLoaded] = useState(false);\n const imageRef = useRef(null);\n\n const handleLoad = () => {\n setLoaded(true);\n };\n\n const handleError = () => {\n setLoaded(showOnError);\n };\n\n const classNames = cx(\n [className],\n 'adyen-pe-image',\n { 'adyen-pe-image--loaded': loaded },\n ...classNameModifiers.map(modifier => `adyen-pe-image--${modifier}`)\n );\n\n useEffect(() => {\n const image = backgroundUrl ? new Image() : imageRef.current;\n if (image) {\n image.src = backgroundUrl || src;\n image.onload = handleLoad;\n }\n setLoaded(!!image?.complete);\n }, []);\n\n if (backgroundUrl) {\n return <div style={{ backgroundUrl } as JSX.CSSProperties} {...props} className={classNames} />;\n }\n\n return <img {...props} alt={alt} ref={imageRef} className={classNames} onError={handleError} />;\n}\n","import { Ref, VNode } from 'preact';\nimport { forwardRef } from 'preact/compat';\n\ntype _RenderResult = VNode | null;\n\n/**\n * Alternative to using `forwardRef` but with fixed type inference.\n * @see [How To Use forwardRef With Generic Components]{@link https://www.totaltypescript.com/forwardref-with-generic-components}\n */\nconst fixedForwardRef = <P, T>(render: (props: P, ref: Ref<T>) => _RenderResult): ((props: P & { ref?: Ref<T> }) => _RenderResult) =>\n forwardRef(render);\n\nexport default fixedForwardRef;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst ChevronDown = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n {title && <title>{title}</title>}\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M2.47 4.97c.3-.3.77-.3 1.06 0L8 9.44l4.47-4.47a.75.75 0 1 1 1.06 1.06l-5 5c-.3.3-.77.3-1.06 0l-5-5a.75.75 0 0 1 0-1.06Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n));\n\nexport default ChevronDown;\n","import { DEFAULT_BUTTON_CLASSNAME } from '@src/components/internal/Button/constants';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport { getModifierClasses } from '@src/utils/class-name-utils';\n\nexport const DROPDOWN_BASE_CLASS = 'adyen-pe-dropdown';\nexport const DROPDOWN_BUTTON_CLASSNAME = getModifierClasses(DEFAULT_BUTTON_CLASSNAME, [ButtonVariant.SECONDARY], [DEFAULT_BUTTON_CLASSNAME]);\nexport const DROPDOWN_BUTTON_CLASS = `${DROPDOWN_BASE_CLASS}__button`;\nexport const DROPDOWN_BUTTON_ACTIVE_CLASS = `${DROPDOWN_BUTTON_CLASS}--active`;\nexport const DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS = `${DROPDOWN_BUTTON_CLASS}-collapse-indicator`;\nexport const DROPDOWN_BUTTON_HAS_SELECTION_CLASS = `${DROPDOWN_BUTTON_CLASS}--has-selection`;\nexport const DROPDOWN_BUTTON_ICON_CLASS = `${DROPDOWN_BUTTON_CLASS}-icon`;\nexport const DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS = `${DROPDOWN_BUTTON_CLASS}-multiselect-counter`;\nexport const DROPDOWN_BUTTON_READONLY_CLASS = `${DROPDOWN_BUTTON_CLASS}--readonly`;\nexport const DROPDOWN_BUTTON_TEXT_CLASS = `${DROPDOWN_BUTTON_CLASS}-text`;\nexport const DROPDOWN_BUTTON_VALID_CLASS = `${DROPDOWN_BUTTON_CLASS}--valid`;\nexport const DROPDOWN_BUTTON_INVALID_CLASS = `${DROPDOWN_BUTTON_CLASS}--invalid`;\nexport const DROPDOWN_ELEMENT_CLASS = `${DROPDOWN_BASE_CLASS}__element`;\nexport const DROPDOWN_ELEMENT_ACTIVE_CLASS = `${DROPDOWN_ELEMENT_CLASS}--active`;\nexport const DROPDOWN_ELEMENT_CHECKBOX_CLASS = `${DROPDOWN_ELEMENT_CLASS}-checkbox`;\nexport const DROPDOWN_ELEMENT_CHECKMARK_CLASS = `${DROPDOWN_ELEMENT_CLASS}-checkmark`;\nexport const DROPDOWN_ELEMENT_CONTENT_CLASS = `${DROPDOWN_ELEMENT_CLASS}-content`;\nexport const DROPDOWN_ELEMENT_DISABLED_CLASS = `${DROPDOWN_ELEMENT_CLASS}--disabled`;\nexport const DROPDOWN_ELEMENT_ICON_CLASS = `${DROPDOWN_ELEMENT_CLASS}-icon`;\nexport const DROPDOWN_ELEMENT_NO_OPTION_CLASS = `${DROPDOWN_ELEMENT_CLASS}--no-option`;\nexport const DROPDOWN_LIST_CLASS = `${DROPDOWN_BASE_CLASS}__list`;\nexport const DROPDOWN_LIST_ACTIVE_CLASS = `${DROPDOWN_LIST_CLASS}--active`;\nexport const DROPDOWN_MULTI_SELECT_CLASS = `${DROPDOWN_BASE_CLASS}--multiselect`;\n","import cx from 'classnames';\nimport { Ref } from 'preact';\nimport { MutableRef, useMemo } from 'preact/hooks';\nimport { HTMLAttributes, PropsWithChildren } from 'preact/compat';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport Img from '@src/components/internal/Img';\nimport Button from '@src/components/internal/Button';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport ChevronDown from '@src/components/internal/SVGIcons/ChevronDown';\nimport { TypographyElement, TypographyVariant } from '@src/components/internal/Typography/types';\nimport {\n DROPDOWN_BUTTON_ACTIVE_CLASS,\n DROPDOWN_BUTTON_CLASS,\n DROPDOWN_BUTTON_CLASSNAME,\n DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS,\n DROPDOWN_BUTTON_HAS_SELECTION_CLASS,\n DROPDOWN_BUTTON_ICON_CLASS,\n DROPDOWN_BUTTON_INVALID_CLASS,\n DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS,\n DROPDOWN_BUTTON_READONLY_CLASS,\n DROPDOWN_BUTTON_TEXT_CLASS,\n DROPDOWN_BUTTON_VALID_CLASS,\n} from '../constants';\nimport type { SelectButtonProps, SelectItem } from '../types';\n\nconst SelectButtonElement = <T extends SelectItem>({\n active,\n disabled,\n className,\n filterable,\n toggleButtonRef,\n ...props\n}: PropsWithChildren<SelectButtonProps<T> & Partial<HTMLAttributes<HTMLButtonElement | HTMLDivElement>>>) => {\n const baseClassName = useMemo(() => (filterable ? cx(DROPDOWN_BUTTON_CLASSNAME, className) : className), [className, filterable]);\n return filterable ? (\n <div {...props} className={baseClassName} ref={toggleButtonRef as Ref<HTMLDivElement>} />\n ) : (\n <Button\n {...props}\n className={baseClassName}\n disabled={disabled}\n variant={ButtonVariant.SECONDARY}\n ref={toggleButtonRef as MutableRef<HTMLButtonElement>}\n />\n );\n};\n\nconst SelectButton = <T extends SelectItem>(props: SelectButtonProps<T> & { appliedFilterNumber: number }) => {\n const { i18n } = useCoreContext();\n const { active, filterable, multiSelect, placeholder, readonly, showList, withoutCollapseIndicator } = props;\n const placeholderText = useMemo(() => placeholder?.trim() || i18n.get('select.filter.placeholder'), [i18n, placeholder]);\n const buttonActiveItem = useMemo(() => (multiSelect === true ? undefined : active[0]), [active, multiSelect]);\n const buttonTitleText = useMemo(() => buttonActiveItem?.name?.trim() || placeholderText, [buttonActiveItem, placeholderText]);\n\n return (\n <SelectButtonElement\n active={active}\n disabled={readonly}\n aria-disabled={readonly}\n aria-expanded={showList}\n aria-haspopup=\"listbox\"\n className={cx(DROPDOWN_BUTTON_CLASS, {\n [DROPDOWN_BUTTON_ACTIVE_CLASS]: showList,\n [DROPDOWN_BUTTON_HAS_SELECTION_CLASS]: !!active.length,\n [DROPDOWN_BUTTON_READONLY_CLASS]: readonly,\n [DROPDOWN_BUTTON_INVALID_CLASS]: props.isInvalid,\n [DROPDOWN_BUTTON_VALID_CLASS]: props.isValid,\n })}\n filterable={filterable}\n onClick={!readonly ? props.toggleList : undefined}\n onKeyDown={!readonly ? props.onButtonKeyDown : undefined}\n role={filterable ? 'button' : undefined}\n tabIndex={0}\n title={buttonTitleText}\n toggleButtonRef={props.toggleButtonRef}\n type={!filterable ? 'button' : ''}\n aria-describedby={props.ariaDescribedBy}\n id={props.id ?? ''}\n >\n {showList && filterable ? (\n <input\n aria-autocomplete=\"list\"\n aria-controls={props.selectListId}\n aria-expanded={showList}\n aria-owns={props.selectListId}\n autoComplete=\"off\"\n className=\"adyen-pe-filter-input\"\n onInput={props.onInput}\n placeholder={placeholderText}\n ref={props.filterInputRef}\n role=\"combobox\"\n type=\"text\"\n />\n ) : (\n <>\n {buttonActiveItem?.icon && (\n <Img className={DROPDOWN_BUTTON_ICON_CLASS} src={buttonActiveItem.icon} alt={buttonActiveItem.name.trim()} />\n )}\n <span className={DROPDOWN_BUTTON_TEXT_CLASS}>\n {buttonActiveItem?.selectedOptionName?.trim() || buttonActiveItem?.name.trim() || placeholderText}\n </span>\n {multiSelect && props.appliedFilterNumber > 0 && (\n <div className={DROPDOWN_BUTTON_MULTI_SELECT_COUNTER_CLASS}>\n <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger={true}>\n {props.appliedFilterNumber}\n </Typography>\n </div>\n )}\n </>\n )}\n {!withoutCollapseIndicator && (\n <span className={DROPDOWN_BUTTON_COLLAPSE_INDICATOR_CLASS}>\n <ChevronDown role=\"presentation\" />\n </span>\n )}\n </SelectButtonElement>\n );\n};\n\nexport default SelectButton;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst CheckedBox = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n {title && <title>{title}</title>}\n <path\n fill=\"currentColor\"\n d=\"M1.25 3.5c0-1.24 1-2.25 2.25-2.25h9c1.24 0 2.25 1 2.25 2.25v9c0 1.24-1 2.25-2.25 2.25h-9c-1.24 0-2.25-1-2.25-2.25v-9ZM12.06 6 11 4.94l-4 4-2-2L3.94 8 7 11.06 12.06 6Z\"\n />\n </svg>\n));\n\nexport default CheckedBox;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst UncheckedBox = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n {title && <title>{title}</title>}\n <path stroke=\"currentColor\" d=\"M.5 4C.5 2 2.1.5 4 .5h8c2 0 3.5 1.6 3.5 3.5v8c0 2-1.6 3.5-3.5 3.5H4C2 15.5.5 13.9.5 12V4Z\" />\n </svg>\n));\n\nexport default UncheckedBox;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst Checkmark = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" width=\"16\" viewBox=\"0 0 16 16\" height=\"16\">\n {title && <title>{title}</title>}\n <path\n fill=\"currentColor\"\n fill-rule=\"evenodd\"\n d=\"M14.5 4.5a.7.7 0 0 0-1-1L6 10.9 2.5 7.5a.8.8 0 0 0-1 1l4 4a.8.8 0 0 0 1 0l8-8Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n));\n\nexport default Checkmark;\n","import cx from 'classnames';\nimport { memo } from 'preact/compat';\nimport Img from '@src/components/internal/Img';\nimport type { SelectItem, SelectItemProps } from '../types';\nimport CheckedBox from '@src/components/internal/SVGIcons/CheckedBox';\nimport UncheckedBox from '@src/components/internal/SVGIcons/UncheckedBox';\nimport Checkmark from '@src/components/internal/SVGIcons/Checkmark';\nimport {\n DROPDOWN_ELEMENT_ACTIVE_CLASS,\n DROPDOWN_ELEMENT_CHECKBOX_CLASS,\n DROPDOWN_ELEMENT_CHECKMARK_CLASS,\n DROPDOWN_ELEMENT_CLASS,\n DROPDOWN_ELEMENT_CONTENT_CLASS,\n DROPDOWN_ELEMENT_DISABLED_CLASS,\n DROPDOWN_ELEMENT_ICON_CLASS,\n} from '../constants';\n\ntype _RenderSelectOptionResult<T extends SelectItem> = ReturnType<SelectItemProps<T>['renderListItem']>;\ntype _RenderSelectOptionData<T extends SelectItem> = Parameters<SelectItemProps<T>['renderListItem']>[0];\n\nexport const renderSelectListItemDefault = <T extends SelectItem>({\n iconClassName,\n item,\n multiSelect,\n selected,\n}: _RenderSelectOptionData<T>): _RenderSelectOptionResult<T> => (\n <>\n {multiSelect && (\n <span className={DROPDOWN_ELEMENT_CHECKBOX_CLASS}>\n {selected ? <CheckedBox role=\"presentation\" /> : <UncheckedBox role=\"presentation\" />}\n </span>\n )}\n <div className={DROPDOWN_ELEMENT_CONTENT_CLASS}>\n {item.icon && <Img className={iconClassName as string} alt={item.name} src={item.icon} />}\n <span>{item.name}</span>\n </div>\n {!multiSelect && <span className={DROPDOWN_ELEMENT_CHECKMARK_CLASS}>{selected && <Checkmark role=\"presentation\" />}</span>}\n </>\n);\n\nconst SelectListItem = <T extends SelectItem>({ item, multiSelect, onKeyDown, onSelect, renderListItem, selected }: SelectItemProps<T>) => {\n const disabled = !!item.disabled;\n\n // A change in Preact v10.11.1 means that all falsy values are assessed and set on data attributes.\n // In the case of `data-disabled` we only ever want it set if item.disabled is actually true, since the presence\n // of the `data-disabled` attr, regardless of its value, will disable the select list item.\n const dataDisabled = item.disabled === true || null;\n\n const itemClassName = cx(DROPDOWN_ELEMENT_CLASS, {\n [DROPDOWN_ELEMENT_ACTIVE_CLASS]: selected,\n [DROPDOWN_ELEMENT_DISABLED_CLASS]: disabled,\n });\n\n return (\n <li\n aria-disabled={disabled}\n aria-selected={selected}\n className={itemClassName}\n data-disabled={dataDisabled}\n data-value={item.id}\n onClick={onSelect}\n onKeyDown={onKeyDown}\n title={item.name}\n role=\"option\"\n tabIndex={-1}\n >\n {renderListItem({ item, multiSelect, selected, iconClassName: DROPDOWN_ELEMENT_ICON_CLASS })}\n </li>\n );\n};\n\nexport default memo(SelectListItem);\n","import { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport Popover from '@src/components/internal/Popover/Popover';\nimport { PopoverContainerPosition, PopoverContainerSize, PopoverContainerVariant, PopoverProps } from '@src/components/internal/Popover/types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { isFunction } from '@src/utils/common';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\nimport cx from 'classnames';\nimport { ForwardedRef, memo } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { DROPDOWN_ELEMENT_CLASS, DROPDOWN_ELEMENT_NO_OPTION_CLASS, DROPDOWN_LIST_ACTIVE_CLASS, DROPDOWN_LIST_CLASS } from '../constants';\nimport type { SelectItem, SelectListProps } from '../types';\nimport SelectListItem, { renderSelectListItemDefault } from './SelectListItem';\n\nconst SelectList = fixedForwardRef(\n <T extends SelectItem>(\n {\n active,\n commitActions,\n items,\n multiSelect,\n onKeyDown,\n onSelect,\n renderListItem,\n selectListId,\n showList,\n textFilter,\n toggleButtonRef,\n dismissPopover,\n setToTargetWidth,\n popoverClassNameModifiers,\n showOverlay,\n fitPosition,\n }: SelectListProps<T>,\n ref: ForwardedRef<HTMLUListElement>\n ) => {\n const { i18n } = useCoreContext();\n const isSmViewport = useMediaQuery(mediaQueries.down.xs);\n const filteredItems = items.filter(item => !textFilter || item.name.toLowerCase().includes(textFilter));\n const listClassName = cx(DROPDOWN_LIST_CLASS, { [DROPDOWN_LIST_ACTIVE_CLASS]: showList });\n const noOptionsClassName = cx(DROPDOWN_ELEMENT_CLASS, DROPDOWN_ELEMENT_NO_OPTION_CLASS);\n const renderSelectOption = useMemo(() => (isFunction(renderListItem) ? renderListItem : renderSelectListItemDefault), [renderListItem]);\n const multipleSelection = useMemo(() => multiSelect === true, [multiSelect]);\n\n return showList ? (\n <Popover\n classNameModifiers={popoverClassNameModifiers}\n actions={multipleSelection ? commitActions : undefined}\n disableFocusTrap={true}\n divider={true}\n dismiss={dismissPopover}\n dismissible={false}\n open={showList}\n setToTargetWidth={setToTargetWidth}\n containerSize={PopoverContainerSize.MEDIUM}\n variant={PopoverContainerVariant.POPOVER}\n targetElement={toggleButtonRef as PopoverProps['targetElement']}\n withContentPadding={false}\n position={PopoverContainerPosition.BOTTOM}\n showOverlay={showOverlay && isSmViewport}\n fitPosition={fitPosition}\n >\n <ul className={listClassName} id={selectListId} ref={ref} role=\"listbox\" aria-multiselectable={multipleSelection}>\n {filteredItems.length ? (\n filteredItems.map(item => {\n return (\n <SelectListItem\n item={item}\n key={item.id}\n multiSelect={multipleSelection}\n onKeyDown={onKeyDown}\n onSelect={onSelect}\n renderListItem={renderSelectOption}\n selected={active.includes(item)}\n />\n );\n })\n ) : (\n <div className={noOptionsClassName}>{i18n.get('select.noOptionsFound')}</div>\n )}\n </ul>\n </Popover>\n ) : null;\n }\n);\n\nexport default memo(SelectList);\n","import { useCallback, useEffect, useState } from 'preact/hooks';\nimport { EMPTY_ARRAY } from '@src/utils/common';\nimport { SelectItem, SelectProps } from '../types';\n\nconst useSelect = <T extends SelectItem>({ items, multiSelect, selected }: Pick<SelectProps<T>, 'items' | 'multiSelect' | 'selected'>) => {\n const getSelectedItems = useCallback(\n (selectedItems: typeof selected = EMPTY_ARRAY) => {\n const _selected = (EMPTY_ARRAY as readonly T['id'][]).concat(selectedItems ?? EMPTY_ARRAY).filter(Boolean);\n const _selectedItems = items.filter(item => _selected.includes(item.id));\n const selection = multiSelect ? _selectedItems : _selectedItems.slice(0, 1);\n return selection.length ? Object.freeze(selection) : EMPTY_ARRAY;\n },\n [items, multiSelect]\n );\n\n const [selection, setSelection] = useState(getSelectedItems(selected));\n\n const resetSelection = useCallback(\n (selection: readonly T[] | T[] = EMPTY_ARRAY) => {\n const nextSelection = selection.filter(item => items.includes(item));\n setSelection(nextSelection.length ? Object.freeze(nextSelection) : EMPTY_ARRAY);\n },\n [items, setSelection]\n );\n\n const select = useCallback(\n (item: T) => {\n setSelection(currentSelection => {\n const index = currentSelection.indexOf(item);\n\n // Item not already selected\n if (index < 0) return Object.freeze(((multiSelect ? currentSelection : EMPTY_ARRAY) as readonly T[]).concat(item));\n\n // Item is current selection\n if (!multiSelect) return currentSelection;\n\n // Item should be deselected\n const nextSelection = [...currentSelection];\n nextSelection.splice(index, 1);\n return nextSelection.length ? Object.freeze(nextSelection) : EMPTY_ARRAY;\n });\n },\n [multiSelect, setSelection]\n );\n\n useEffect(() => setSelection(getSelectedItems(selected)), [getSelectedItems, selected, setSelection]);\n\n return { resetSelection, select, selection } as const;\n};\n\nexport default useSelect;\n","import cx from 'classnames';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { InteractionKeyCode } from '@src/components/types';\nimport { ARIA_ERROR_SUFFIX } from '@src/core/Errors/constants';\nimport { EMPTY_ARRAY, noop } from '@src/utils/common';\nimport useCommitAction, { CommitAction } from '@src/hooks/useCommitAction';\nimport uuid from '@src/utils/uuid';\nimport SelectButton from './components/SelectButton';\nimport SelectList from './components/SelectList';\nimport useSelect from './hooks/useSelect';\nimport { DROPDOWN_BASE_CLASS, DROPDOWN_MULTI_SELECT_CLASS } from './constants';\nimport { SelectItem, SelectProps } from './types';\nimport './Select.scss';\n\n// [TODO]: Revisit this component logic — for handling user interaction\nconst Select = <T extends SelectItem>({\n className,\n classNameModifiers = EMPTY_ARRAY as [],\n popoverClassNameModifiers,\n items = EMPTY_ARRAY as readonly T[],\n filterable = false,\n multiSelect = false,\n readonly = false,\n onChange = noop,\n selected,\n name,\n isInvalid,\n isValid,\n placeholder,\n uniqueId,\n renderListItem,\n isCollatingErrors,\n setToTargetWidth,\n withoutCollapseIndicator = false,\n showOverlay = false,\n fitPosition,\n}: SelectProps<T>) => {\n const { resetSelection, select, selection } = useSelect({ items, multiSelect, selected });\n const [showList, setShowList] = useState<boolean>(false);\n const [textFilter, setTextFilter] = useState<string>('');\n const filterInputRef = useRef<HTMLInputElement>(null);\n const selectListRef = useRef<HTMLUListElement>(null);\n const toggleButtonRef = useRef<HTMLButtonElement>(null);\n const selectListId = useRef(`select-${uuid()}`);\n const [appliedFilterNumber, setAppliedFilterNumber] = useState(0);\n\n const autoFocusAnimFrame = useRef<ReturnType<typeof requestAnimationFrame>>();\n const pendingClickOutsideTriggeredHideList = useRef(true);\n const clearSelectionInProgress = useRef(false);\n const cachedSelectedItems = useRef(selection);\n const selectedItems = useRef(selection);\n\n const dismissPopover = useCallback(() => {\n setTextFilter('');\n setShowList(false);\n if (showList) {\n resetSelection(cachedSelectedItems.current);\n pendingClickOutsideTriggeredHideList.current = true;\n }\n }, [resetSelection, setShowList, setTextFilter, showList]);\n\n //TODO: Clarify and delete this\n // const selectContainerRef = useClickOutside(\n // useRef<HTMLDivElement>(null),\n // useCallback(() => {\n // setTextFilter('');\n // setShowList(false);\n // if (showList) {\n // resetSelection(cachedSelectedItems.current);\n // pendingClickOutsideTriggeredHideList.current = true;\n // }\n // }, [resetSelection, showList, setShowList, setTextFilter])\n // );\n\n const dropdownClassName = useMemo(\n () =>\n cx([\n DROPDOWN_BASE_CLASS,\n { [DROPDOWN_MULTI_SELECT_CLASS]: multiSelect === true },\n ...classNameModifiers.map(mod => `${DROPDOWN_BASE_CLASS}--${mod}`),\n className,\n ]),\n [className, classNameModifiers, multiSelect]\n );\n\n const { commitAction, commitActionButtons, committing, resetCommitAction } = useCommitAction({\n resetDisabled: !selection.length,\n });\n\n /**\n * Closes the select list:\n * - empties the text filter\n * - restores focus to the select button element (?)\n */\n const closeList = useCallback(() => {\n setTextFilter('');\n setShowList(false);\n resetCommitAction();\n\n if (!pendingClickOutsideTriggeredHideList.current) {\n toggleButtonRef.current?.focus();\n } else pendingClickOutsideTriggeredHideList.current = false;\n }, [resetCommitAction, setShowList, setTextFilter]);\n\n const commitSelection = useCallback(() => {\n cachedSelectedItems.current = selection;\n const value = `${selection.map(({ id }) => id)}`;\n onChange({ target: { value, name } });\n }, [name, onChange, selection]);\n\n useEffect(() => {\n switch (commitAction) {\n case CommitAction.APPLY:\n commitSelection();\n break;\n case CommitAction.CLEAR:\n resetSelection();\n clearSelectionInProgress.current = true;\n break;\n }\n }, [commitAction, commitSelection, resetSelection]);\n\n /**\n * Closes the select list and fires an onChange\n * @param e - Event\n */\n const handleSelect = useCallback(\n (e: Event) => {\n e.preventDefault();\n\n // If the target is not one of the list items, select the first list item\n const target: HTMLUListElement | undefined | null =\n e.currentTarget && selectListRef?.current?.contains(e.currentTarget as HTMLUListElement)\n ? (e.currentTarget as HTMLUListElement)\n : null; // (selectListRef?.current?.firstElementChild as HTMLUListElement);\n\n if (target && !target.getAttribute('data-disabled')) {\n const value = target.getAttribute('data-value');\n const item = items.find(item => item.id === value)!;\n select(item);\n }\n },\n [items, select]\n );\n\n useEffect(() => {\n if (selectedItems.current !== selection) {\n selectedItems.current = selection;\n if (!multiSelect || clearSelectionInProgress.current) {\n commitSelection();\n closeList();\n }\n }\n clearSelectionInProgress.current = false;\n }, [closeList, commitSelection, multiSelect, selection]);\n\n useEffect(() => {\n if (committing) {\n setAppliedFilterNumber(selection.length);\n closeList();\n }\n }, [committing, closeList, setAppliedFilterNumber, selection.length]);\n\n /**\n * Handle keyDown events on the selectList button\n * Opens the selectList and focuses the first element if available\n * @param evt {KeyboardEvent}\n */\n const handleButtonKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n switch (evt.code) {\n case InteractionKeyCode.ESCAPE:\n case InteractionKeyCode.TAB:\n /**\n * Implementation notes ({@link https://w3c.github.io/aria-practices/examples/disclosure/disclosure-navigation.html article}):\n * - When user has focused select button but not yet moved into select list, close list and keep focus on the select button\n * - Shift+Tab out of select should close list\n */\n showList && closeList();\n pendingClickOutsideTriggeredHideList.current = evt.key === InteractionKeyCode.TAB;\n return;\n case InteractionKeyCode.ENTER:\n case InteractionKeyCode.SPACE:\n if (filterable && showList) {\n if (evt.key === InteractionKeyCode.ENTER) {\n if (textFilter) handleSelect(evt);\n else break;\n }\n return;\n }\n break;\n case InteractionKeyCode.ARROW_DOWN:\n case InteractionKeyCode.ARROW_UP:\n break;\n default:\n return;\n }\n\n evt.preventDefault();\n setShowList(true);\n },\n [closeList, filterable, handleSelect, showList, setShowList, textFilter]\n );\n\n useEffect(() => {\n if (showList) {\n cancelAnimationFrame(autoFocusAnimFrame.current!);\n\n autoFocusAnimFrame.current = requestAnimationFrame(() => {\n focus: {\n let item = selectListRef.current?.firstElementChild as HTMLLIElement;\n let firstAvailableItem: typeof item | undefined;\n\n while (item) {\n if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n if (item.getAttribute('aria-selected') === 'true') {\n item.focus();\n break focus;\n }\n firstAvailableItem = firstAvailableItem || item;\n }\n item = item.nextElementSibling as HTMLLIElement;\n }\n\n if (firstAvailableItem) firstAvailableItem.focus();\n }\n });\n }\n }, [showList]);\n\n /**\n * Handle keyDown events on the list elements\n * Navigates through the list, or select an element, or focus the filter input, or close the menu.\n * @param e - KeyDownEvent\n */\n const handleListKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n const target = evt.target as HTMLInputElement;\n\n switch (evt.code) {\n case InteractionKeyCode.ESCAPE:\n evt.preventDefault();\n // When user is actively navigating through list with arrow keys - close list and keep focus on the Select Button re. a11y guidelines (above)\n closeList();\n break;\n case InteractionKeyCode.ENTER:\n case InteractionKeyCode.SPACE:\n handleSelect(evt);\n break;\n case InteractionKeyCode.ARROW_DOWN: {\n evt.preventDefault();\n let item = target.nextElementSibling as HTMLLIElement;\n while (item) {\n if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n item.focus();\n break;\n }\n item = item.nextElementSibling as HTMLLIElement;\n }\n break;\n }\n case InteractionKeyCode.ARROW_UP: {\n evt.preventDefault();\n focus: {\n let item = target.previousElementSibling as HTMLLIElement;\n while (item) {\n if (!(item.dataset.disabled && item.dataset.disabled === 'true')) {\n item.focus();\n break focus;\n }\n item = item.previousElementSibling as HTMLLIElement;\n }\n if (filterable && filterInputRef.current) {\n filterInputRef.current.focus();\n }\n }\n break;\n }\n case InteractionKeyCode.TAB:\n closeList();\n break;\n default:\n }\n },\n [closeList, filterable, handleSelect]\n );\n\n /**\n * Updates the state with the current text filter value\n * @param e - KeyboardEvent\n */\n const handleTextFilter = useCallback(\n (e: Event) => {\n const value: string = (e.target as HTMLInputElement).value;\n setTextFilter(value.toLowerCase());\n },\n [setTextFilter]\n );\n\n /**\n * Toggles the selectList and focuses in either the filter input or in the selectList button\n * @param e - Event\n */\n const toggleList = useCallback(\n (e: Event) => {\n e.preventDefault();\n setShowList(showList => !showList);\n showList && resetSelection(cachedSelectedItems.current);\n },\n [setShowList, showList, resetSelection]\n );\n\n useEffect(() => {\n if (showList && filterable) {\n filterInputRef.current?.focus();\n }\n }, [filterable, showList]);\n\n return (\n <div className={dropdownClassName}>\n <SelectButton\n id={uniqueId ?? undefined}\n appliedFilterNumber={appliedFilterNumber}\n active={selection}\n filterInputRef={filterInputRef}\n filterable={filterable}\n isInvalid={isInvalid}\n isValid={isValid}\n onButtonKeyDown={handleButtonKeyDown}\n onInput={handleTextFilter}\n multiSelect={multiSelect}\n placeholder={placeholder}\n readonly={readonly}\n selectListId={selectListId.current}\n showList={showList}\n toggleButtonRef={toggleButtonRef}\n toggleList={toggleList}\n withoutCollapseIndicator={withoutCollapseIndicator}\n ariaDescribedBy={!isCollatingErrors && uniqueId ? `${uniqueId}${ARIA_ERROR_SUFFIX}` : ''}\n />\n <SelectList\n popoverClassNameModifiers={popoverClassNameModifiers}\n setToTargetWidth={setToTargetWidth}\n dismissPopover={dismissPopover}\n active={selection}\n commitActions={commitActionButtons}\n items={items}\n multiSelect={multiSelect}\n onKeyDown={handleListKeyDown}\n onSelect={handleSelect}\n selectListId={selectListId.current}\n ref={selectListRef}\n toggleButtonRef={toggleButtonRef}\n renderListItem={renderListItem}\n showList={showList}\n showOverlay={showOverlay}\n textFilter={textFilter}\n fitPosition={fitPosition}\n />\n </div>\n );\n};\n\nexport default Select;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst ChevronLeft = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} width=\"7\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n {title && <title>{title}</title>}\n\n <path\n d=\"M5.56077 2.00011L2.56077 5.00011L5.56077 8.00011L4.50011 9.06077L0.439453 5.00011L4.50011 0.939453L5.56077 2.00011Z\"\n fill={props.disabled ? '#8D95A3' : '#00112C'}\n />\n </svg>\n));\n\nexport default ChevronLeft;\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst ChevronRight = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} width=\"7\" height=\"10\" viewBox=\"0 0 6 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n {title && <title>{title}</title>}\n <path\n d=\"M0.439453 7.9999L3.43945 4.9999L0.439454 1.9999L1.50011 0.93924L5.56077 4.9999L1.50011 9.06056L0.439453 7.9999Z\"\n fill={props.disabled ? '#8D95A3' : '#00112C'}\n />\n </svg>\n));\n\nexport default ChevronRight;\n","import { ButtonVariant } from '@src/components/internal/Button/types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { EMPTY_ARRAY } from '@src/utils/common';\nimport classnames from 'classnames';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport Button from '../Button';\nimport './Pagination.scss';\nimport { PaginationProps } from './types';\nimport Select from '@src/components/internal/FormFields/Select';\nimport { SelectItem } from '@src/components/internal/FormFields/Select/types';\nimport ChevronLeft from '@src/components/internal/SVGIcons/ChevronLeft';\nimport ChevronRight from '@src/components/internal/SVGIcons/ChevronRight';\n\nexport default function Pagination({ next, hasNext, hasPrev, page, prev, limit, limitOptions, onLimitSelection }: PaginationProps) {\n const { i18n } = useCoreContext();\n\n const _limitOptions = useMemo(\n () => limitOptions && Object.freeze(limitOptions.map(option => ({ id: `${option}`, name: `${option}` } as SelectItem))),\n [limitOptions]\n );\n\n const _onLimitChanged = useCallback(\n ({ target }: any) => {\n if (target?.value == undefined) return;\n onLimitSelection?.(+target.value);\n },\n [onLimitSelection]\n );\n\n return (\n <div aria-label={i18n.get('paginatedNavigation')} className={`adyen-pe-pagination ${classnames({})}`}>\n <div className=\"adyen-pe-pagination__context\">\n <span>\n {i18n.get('pagination.page')} {page}\n </span>\n {_limitOptions && onLimitSelection && (\n <div className=\"adyen-pe-pagination__limit-selector\">\n <Select\n setToTargetWidth={true}\n filterable={false}\n multiSelect={false}\n items={_limitOptions}\n onChange={_onLimitChanged}\n selected={`${limit ?? ''}`}\n />\n </div>\n )}\n </div>\n\n <div className=\"adyen-pe-pagination__controls\">\n <Button\n aria-label={i18n.get('pagination.previousPage')}\n variant={ButtonVariant.TERTIARY}\n disabled={!hasPrev}\n iconButton={true}\n classNameModifiers={['circle'].concat(hasPrev ? EMPTY_ARRAY : 'disabled')}\n onClick={prev}\n >\n <ChevronLeft disabled={!hasPrev} />\n </Button>\n <Button\n aria-label={i18n.get('pagination.nextPage')}\n variant={ButtonVariant.TERTIARY}\n disabled={!hasNext}\n iconButton={true}\n classNameModifiers={['circle'].concat(hasNext ? EMPTY_ARRAY : 'disabled')}\n onClick={next}\n >\n <ChevronRight disabled={!hasNext} />\n </Button>\n </div>\n </div>\n );\n}\n","import { ITransaction } from '../../../../types';\n\nconst labels = {\n id: 'paymentId',\n transactionType: 'transactionType',\n creationDate: 'date',\n balanceAccountId: 'balanceAccount',\n accountHolderId: 'account',\n fee: 'txType.Fee',\n capture: 'txType.capture',\n leftover: 'txType.leftover',\n manualCorrection: 'txType.manualCorrection',\n internalTransfer: 'txType.internalTransfer',\n balanceAdjustment: 'txType.balanceAdjustment',\n amount: 'txAmount',\n description: 'description',\n status: 'status',\n category: 'category',\n paymentMethod: 'paymentMethod',\n currency: 'currency',\n} as const;\n\nexport const getLabel = (key: keyof typeof labels) => {\n return labels[key] || key;\n};\n\nconst PAYMENT_METHODS = Object.freeze({\n klarna: 'Klarna',\n paypal: 'PayPal',\n});\n\nexport function parsePaymentMethodType(paymentMethod: NonNullable<ITransaction['paymentMethod']>, format?: 'detail' | 'fourDigit') {\n if (paymentMethod.lastFourDigits) return format === 'detail' ? '•••• •••• •••• ' + paymentMethod.lastFourDigits : paymentMethod.lastFourDigits;\n\n return PAYMENT_METHODS[paymentMethod.type as keyof typeof PAYMENT_METHODS] || paymentMethod.type;\n}\n","export enum TagVariant {\n DEFAULT = 'default',\n WARNING = 'warning',\n ERROR = 'error',\n SUCCESS = 'success',\n WHITE = 'white',\n}\n\nexport interface TagProps {\n variant?: TagVariant;\n label: string;\n}\n","import cx from 'classnames';\nimport { TagProps, TagVariant } from './types';\nimport './Tag.scss';\nimport { memo } from 'preact/compat';\nexport const Tag = memo(({ variant = TagVariant.DEFAULT, label }: TagProps) => {\n return (\n <div\n className={cx('adyen-pe-tag', {\n 'adyen-pe-tag--success': variant === TagVariant.SUCCESS,\n 'adyen-pe-tag--default': variant === TagVariant.DEFAULT,\n 'adyen-pe-tag--warning': variant === TagVariant.WARNING,\n 'adyen-pe-tag--error': variant === TagVariant.ERROR,\n 'adyen-pe-tag--white': variant === TagVariant.WHITE,\n })}\n >\n {label}\n </div>\n );\n});\n","import useCoreContext from '@src/core/Context/useCoreContext';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { useMemo } from 'preact/hooks';\n\n// TODO - Remove once we define a strategy to handle images\nconst FALLBACK_CDN_CONTEXT = 'https://cdf6519016.cdn.adyen.com/checkoutshopper/';\n\nexport interface ImageOptions {\n extension?: string;\n imageFolder?: string;\n resourceContext?: string;\n name: string;\n parentFolder?: string;\n size?: string;\n subFolder?: string;\n}\n\nconst returnImage = ({\n name,\n resourceContext,\n imageFolder = 'logos/',\n parentFolder = '',\n extension = 'svg',\n size = '',\n subFolder = '',\n}: ImageOptions) => {\n const path = `/images/${imageFolder}/${subFolder}/${parentFolder}/${name}${size}.${extension}`.replace(/\\/+/g, '/');\n return `${resourceContext}${path}`;\n};\n\nexport const useImageUrl = ({ options = EMPTY_OBJECT, name }: { options: Partial<ImageOptions>; name: string }) => {\n const { loadingContext } = useCoreContext();\n\n // TODO - Get rid of FALLBACK_CDN_CONTEXT once we define our assets URL\n const image = useMemo(\n () =>\n returnImage({\n resourceContext: FALLBACK_CDN_CONTEXT || loadingContext,\n name,\n ...options,\n }),\n [loadingContext, name, options]\n );\n\n return image;\n};\n","import cx from 'classnames';\nimport { useImageUrl } from '@src/hooks/useImageUrl/useImageUrl';\nimport { useMemo } from 'preact/hooks';\n\ninterface ImageProps {\n name: string;\n alt: string;\n extension?: string;\n className?: string;\n folder?: string;\n}\n\nexport const Image = ({ folder = 'components/', className, alt, name, extension }: ImageProps) => {\n const imageUrl = useImageUrl({\n options: useMemo(() => ({ imageFolder: folder, extension }), [extension, folder]),\n name,\n });\n\n return <img className={cx('adyen-pe__image', className)} alt={alt} src={imageUrl} />;\n};\n","import { SVGProps } from 'preact/compat';\n\nconst Copy = ({ ...props }: Omit<SVGProps<SVGElement>, 'ref'>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M3.5 1.25C2.25736 1.25 1.25 2.25736 1.25 3.5V8.5C1.25 9.74264 2.25736 10.75 3.5 10.75H5.25V12.5C5.25 13.7426 6.25736 14.75 7.5 14.75H12.5C13.7426 14.75 14.75 13.7426 14.75 12.5V7.5C14.75 6.25736 13.7426 5.25 12.5 5.25H10.75V3.5C10.75 2.25736 9.74264 1.25 8.5 1.25H3.5ZM9.25 5.25H7.5C6.25736 5.25 5.25 6.25736 5.25 7.5V9.25H3.5C3.08579 9.25 2.75 8.91421 2.75 8.5V3.5C2.75 3.08579 3.08579 2.75 3.5 2.75H8.5C8.91421 2.75 9.25 3.08579 9.25 3.5V5.25ZM6.75 12.5V7.5C6.75 7.08579 7.08579 6.75 7.5 6.75H12.5C12.9142 6.75 13.25 7.08579 13.25 7.5V12.5C13.25 12.9142 12.9142 13.25 12.5 13.25H7.5C7.08579 13.25 6.75 12.9142 6.75 12.5Z\" />\n </svg>\n);\n\nexport default Copy;\n","import Button from '@src/components/internal/Button';\nimport { ButtonVariant } from '@src/components/internal/Button/types';\nimport { useCallback, useState } from 'preact/hooks';\nimport { Tooltip } from '@src/components/internal/Tooltip/Tooltip';\nimport Copy from '@src/components/internal/SVGIcons/Copy';\nimport './CopyText.scss';\n\nconst CopyText = ({ text }: { text: string }) => {\n const [tooltipLabel, setTooltipLabel] = useState(text);\n\n const onClick = useCallback(async () => {\n if (text) {\n try {\n await navigator.clipboard.writeText(text);\n setTooltipLabel('Copied');\n } catch (e) {\n console.log(e);\n }\n }\n }, [text]);\n\n const resetTooltipLabel = useCallback(() => {\n setTooltipLabel(text);\n }, [setTooltipLabel, text]);\n\n return (\n <Tooltip content={tooltipLabel}>\n <Button\n variant={ButtonVariant.TERTIARY}\n className={'adyen-pe-copy-text'}\n onClick={onClick}\n onBlur={resetTooltipLabel}\n onMouseLeaveCapture={resetTooltipLabel}\n >\n <span className={'adyen-pe-copy-text__information'}>{text}</span>\n <Copy fill={'#0070f5'} />\n </Button>\n </Tooltip>\n );\n};\n\nexport default CopyText;\n","import AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\nimport CopyText from '@src/components/internal/CopyText/CopyText';\nimport { TranslationKey } from '@src/core/Localization/types';\nimport { JSXInternal } from 'preact/src/jsx';\n\ntype ErrorMessage = {\n title: TranslationKey;\n message?: TranslationKey | TranslationKey[];\n refreshComponent?: boolean;\n onContactSupport?: () => void;\n translationValues?: { [k in TranslationKey]?: JSXInternal.Element | null };\n};\n\nconst UNDEFINED_ERROR = { title: 'thereWasAnUnexpectedError', message: ['pleaseReachOutToSupportForAssistance'] } satisfies ErrorMessage;\nexport const getErrorMessage = (error: AdyenPlatformExperienceError | undefined, onContactSupport?: () => void): ErrorMessage => {\n if (!error) return UNDEFINED_ERROR;\n switch (error.errorCode) {\n case undefined:\n return {\n title: 'somethingWentWrong',\n message: ['weCouldNotLoadYourTransactions', 'tryRefreshingThePageOrComeBackLater'],\n refreshComponent: true,\n };\n case '00_500':\n return {\n title: 'somethingWentWrong',\n message: onContactSupport\n ? ['weCouldNotLoadYourTransactions', 'theErrorCodeIs']\n : ['weCouldNotLoadYourTransactions', 'contactSupportForHelpAndShareErrorCode'],\n onContactSupport,\n translationValues: onContactSupport\n ? { theErrorCodeIs: error?.requestId ? <CopyText text={error.requestId} /> : null }\n : { contactSupportForHelpAndShareErrorCode: error.requestId ? <CopyText text={error.requestId} /> : null },\n };\n case '29_001':\n return {\n title: 'theRequestIsMissingRequiredFieldsOrContainsInvalidData',\n message: ['pleaseReachOutToSupportForAssistance'],\n onContactSupport,\n };\n case '30_112':\n return {\n title: 'entityWasNotFound',\n message: ['entityWasNotFoundDetail'],\n onContactSupport,\n };\n case '00_403':\n default:\n return UNDEFINED_ERROR;\n }\n};\n","import { ErrorMessageDisplay } from '@src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { getErrorMessage } from '@src/components/utils/transactionResourceErrorCodes';\nimport AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\n\nconst TransactionListError = ({ error, onContactSupport }: { error: AdyenPlatformExperienceError | undefined; onContactSupport?: () => void }) => {\n const { title, message, refreshComponent, translationValues, onContactSupport: ContactSupport } = getErrorMessage(error, onContactSupport);\n\n return (\n <ErrorMessageDisplay\n title={title}\n message={message}\n translationValues={translationValues}\n withImage\n centered\n refreshComponent={refreshComponent}\n onContactSupport={ContactSupport}\n />\n );\n};\n\nexport default TransactionListError;\n","export const BASE_CLASS = 'adyen-pe-transactions-table';\nexport const AMOUNT_CLASS = BASE_CLASS + '__amount';\nexport const PAYMENT_METHOD_CLASS = BASE_CLASS + '__payment-method';\nexport const PAYMENT_METHOD_LOGO_CONTAINER_CLASS = BASE_CLASS + '__payment-method-logo-container';\nexport const PAYMENT_METHOD_LOGO_CLASS = BASE_CLASS + '__payment-method-logo';\n","import Category from '@src/components/external/TransactionsOverview/components/Category/Category';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport DataGrid from '../../../../internal/DataGrid';\nimport Pagination from '../../../../internal/Pagination';\nimport { getLabel, parsePaymentMethodType } from '../utils';\nimport { Tag } from '@src/components/internal/Tag/Tag';\nimport { TagVariant } from '@src/components/internal/Tag/types';\nimport { CellTextPosition } from '@src/components/internal/DataGrid/types';\nimport { Image } from '@src/components/internal/Image/Image';\nimport { TranslationKey } from '@src/core/Localization/types';\nimport TransactionListError from '../TransactionListError/TransactionListError';\nimport { getCurrencyCode } from '@src/core/Localization/amount/amount-util';\nimport {\n AMOUNT_CLASS,\n BASE_CLASS,\n PAYMENT_METHOD_CLASS,\n PAYMENT_METHOD_LOGO_CLASS,\n PAYMENT_METHOD_LOGO_CONTAINER_CLASS,\n} from '@src/components/external/TransactionsOverview/components/TransactionsTable/constants';\nimport './TransactionTable.scss';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport { FC } from 'preact/compat';\nimport { TransactionTableProps } from '@src/components/external/TransactionsOverview/components/TransactionsTable/types';\n\n// Remove status column temporarily\n// const FIELDS = ['creationDate', 'status', 'paymentMethod', 'transactionType', 'amount'] as const;\nconst FIELDS = ['creationDate', 'paymentMethod', 'transactionType', 'amount'] as const;\n\nexport const TransactionsTable: FC<TransactionTableProps> = ({\n availableCurrencies,\n error,\n hasMultipleCurrencies,\n loading,\n onContactSupport,\n onRowClick,\n onTransactionSelected,\n showDetails,\n showPagination,\n transactions,\n ...paginationProps\n}) => {\n const { i18n } = useCoreContext();\n const [hoveredRow, setHoveredRow] = useState<undefined | number>();\n const isSmViewport = useMediaQuery(mediaQueries.down.sm);\n\n const columns = useMemo(\n () =>\n FIELDS.map(key => {\n const label = i18n.get(getLabel(key));\n if (key === 'amount') {\n return {\n key,\n label: hasMultipleCurrencies\n ? label\n : `${label} ${availableCurrencies && availableCurrencies[0] ? `(${getCurrencyCode(availableCurrencies[0])})` : ''}`,\n position: key === 'amount' ? CellTextPosition.RIGHT : undefined,\n };\n }\n\n return { key, label };\n }).filter(column => !(isSmViewport && ['status', 'type'].includes(column.key))),\n [availableCurrencies, hasMultipleCurrencies, i18n, isSmViewport]\n );\n\n const EMPTY_TABLE_MESSAGE = {\n title: 'noTransactionsFound',\n message: ['tryDifferentSearchOrResetYourFiltersAndWeWillTryAgain'],\n } satisfies { title: TranslationKey; message: TranslationKey | TranslationKey[] };\n\n const onHover = useCallback(\n (index?: number) => {\n setHoveredRow(index ?? undefined);\n },\n [setHoveredRow]\n );\n\n const errorDisplay = useMemo(() => () => <TransactionListError error={error} onContactSupport={onContactSupport} />, [error, onContactSupport]);\n return (\n <div className={BASE_CLASS}>\n <DataGrid\n errorDisplay={errorDisplay}\n error={error}\n columns={columns}\n data={transactions}\n loading={loading}\n outline={false}\n onRowClick={{ callback: onRowClick }}\n onRowHover={onHover}\n emptyTableMessage={EMPTY_TABLE_MESSAGE}\n customCells={{\n // Remove status column temporarily\n /* status: ({ value }) => {\n return (\n <Tag\n label={i18n.get(value)}\n variant={value === 'Booked' ? TagVariant.SUCCESS : value === 'Reversed' ? TagVariant.ERROR : TagVariant.DEFAULT}\n />\n );\n },*/\n transactionType: ({ item, rowIndex }) => {\n const tooltipKey = `tooltip.${item.category}`;\n return item.category ? (\n i18n.has(tooltipKey) ? (\n <Category value={item.category} isContainerHovered={rowIndex === hoveredRow} />\n ) : (\n <span>{item.category}</span>\n )\n ) : null;\n },\n creationDate: ({ value }) => i18n.fullDate(value),\n amount: ({ value }) => {\n const amount = i18n.amount(value.value, value.currency, { hideCurrency: !hasMultipleCurrencies });\n return <span className={AMOUNT_CLASS}>{amount}</span>;\n },\n paymentMethod: ({ item }) => {\n return (\n <>\n {item.paymentMethod || item.bankAccount ? (\n <div className={PAYMENT_METHOD_CLASS}>\n <div className={PAYMENT_METHOD_LOGO_CONTAINER_CLASS}>\n <Image\n name={item.paymentMethod ? item.paymentMethod.type : 'bankTransfer'}\n alt={item.paymentMethod ? item.paymentMethod.type : 'bankTransfer'}\n folder={'logos/'}\n className={PAYMENT_METHOD_LOGO_CLASS}\n />\n </div>\n {item.paymentMethod\n ? parsePaymentMethodType(item.paymentMethod)\n : item.bankAccount?.accountNumberLastFourDigits}\n </div>\n ) : (\n <Tag label={i18n.get('noData')} variant={TagVariant.WHITE} />\n )}\n </>\n );\n },\n }}\n >\n {showPagination && (\n <DataGrid.Footer>\n <Pagination {...paginationProps} />\n </DataGrid.Footer>\n )}\n </DataGrid>\n </div>\n );\n};\n","import Modal from '@src/components/internal/Modal';\nimport { popoverUtil } from '@src/components/internal/Popover/utils/popoverUtil';\nimport Spinner from '@src/components/internal/Spinner';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport useModalDetails from '@src/hooks/useModalDetails/useModalDetails';\nimport { ITransaction } from '@src/types';\nimport { FC, lazy, Suspense } from 'preact/compat';\nimport { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport { BASE_CLASS, SPINNER_CONTAINER_CLASS } from '@src/components/external/TransactionsOverview/components/TransactionsDisplay/constants';\nimport './TransactionsDisplay.scss';\nimport { TransactionDisplayProps } from '@src/components/external/TransactionsOverview/components/TransactionsDisplay/types';\nimport { TransactionsTable } from '@src/components/external/TransactionsOverview/components/TransactionsTable/TransactionsTable';\n\nconst ModalContent = lazy(() => import('../ModalContent'));\n\nexport const TransactionsDisplay: FC<TransactionDisplayProps> = ({\n availableCurrencies,\n balanceAccountDescription,\n error,\n loading,\n onContactSupport,\n onTransactionSelected,\n showDetails,\n showPagination,\n transactions,\n ...paginationProps\n}: TransactionDisplayProps) => {\n const { i18n } = useCoreContext();\n const hasMultipleCurrencies = !!availableCurrencies && availableCurrencies.length > 1;\n\n const transactionDetails = useMemo(\n () => ({\n showDetails: showDetails ?? true,\n callback: onTransactionSelected,\n }),\n [showDetails, onTransactionSelected]\n );\n\n const modalOptions = useMemo(() => ({ transaction: transactionDetails }), [transactionDetails]);\n\n const { updateDetails, resetDetails, selectedDetail } = useModalDetails(modalOptions);\n\n const onRowClick = useCallback(\n (value: ITransaction) => {\n updateDetails({\n selection: { type: 'transaction', data: { ...value, balanceAccountDescription } },\n modalSize: 'small',\n }).callback({ id: value.id });\n },\n [updateDetails, balanceAccountDescription]\n );\n\n const isModalOpen = !!selectedDetail;\n\n useEffect(() => {\n if (isModalOpen) {\n popoverUtil.closeAll();\n }\n }, [isModalOpen]);\n\n return (\n <div className={BASE_CLASS}>\n <TransactionsTable\n availableCurrencies={availableCurrencies}\n error={error}\n hasMultipleCurrencies={hasMultipleCurrencies}\n loading={loading}\n onContactSupport={onContactSupport}\n onRowClick={onRowClick}\n onTransactionSelected={onTransactionSelected}\n showPagination={showPagination}\n transactions={transactions}\n {...paginationProps}\n />\n <Modal\n title={selectedDetail?.title ? i18n.get(selectedDetail.title) : undefined}\n isOpen={!!selectedDetail}\n aria-label={i18n.get('transactionDetails')}\n onClose={resetDetails}\n isDismissible={true}\n headerWithBorder={false}\n size={selectedDetail?.modalSize ?? 'large'}\n >\n {selectedDetail && (\n <Suspense\n fallback={\n <span className={SPINNER_CONTAINER_CLASS}>\n <Spinner size={'medium'} />\n </span>\n }\n >\n <ModalContent data={selectedDetail.selection.data} />\n </Suspense>\n )}\n </Modal>\n </div>\n );\n};\n","export const LIMIT_OPTIONS = Object.freeze([10, 20]);\nexport const MAX_PAGE_LIMIT = 100;\nexport const DEFAULT_PAGE_LIMIT = 10;\n","import { MAX_PAGE_LIMIT } from './constants';\n\nexport const getClampedPageLimit = (pageLimit?: number) => {\n const limit = ~~(pageLimit as number);\n return limit === pageLimit && limit > 0 ? Math.min(limit, MAX_PAGE_LIMIT) : Math.max(limit, 0);\n};\n","import { useMemo, useRef } from 'preact/hooks';\nimport { DEFAULT_PAGE_LIMIT } from '../constants';\nimport { getClampedPageLimit } from '../utils';\nimport { isNumber, mid } from '@src/utils/common';\nimport { BasePaginatedRecordsInitOptions } from './types';\n\nexport const getNearestFromSortedUniqueNums = (nums: number[], target: number): number => {\n const lastindex = nums.length - 1;\n\n if (lastindex < 0) return target;\n if (target <= (nums[0] as number)) return nums[0] as number;\n if (target >= (nums[lastindex] as number)) return nums[lastindex] as number;\n\n let index = 0,\n lo = 0,\n hi = lastindex;\n\n while (true) {\n const current = nums[(index = mid(lo, hi))] as number;\n if (lo > hi || target === current) return current;\n target > current ? (lo = index + 1) : (hi = index - 1);\n }\n};\n\nconst usePageLimit = ({\n preferredLimit = DEFAULT_PAGE_LIMIT,\n preferredLimitOptions,\n}: Pick<BasePaginatedRecordsInitOptions<any, any, any, any>, 'preferredLimit' | 'preferredLimitOptions'>) => {\n const cachedLimitOptions = useRef<readonly number[]>();\n const cachedLimit = useRef<number>();\n\n const options = useMemo(() => {\n try {\n const uniqueOptions = new Set<number>();\n\n for (const option of preferredLimitOptions as number[]) {\n const limit = getClampedPageLimit(option);\n if (limit > 0) uniqueOptions.add(limit);\n }\n\n return Object.freeze([...uniqueOptions].sort((a, b) => a - b));\n } catch {\n /* ignore exception — no options available */\n }\n }, [preferredLimitOptions]);\n\n const limit = useMemo(() => {\n let limit = getClampedPageLimit(preferredLimit) || DEFAULT_PAGE_LIMIT;\n\n parsing: try {\n if (cachedLimitOptions.current === options) break parsing;\n\n const uniqueOptions = new Set((cachedLimitOptions.current = options));\n\n if (uniqueOptions.size === 0) {\n cachedLimitOptions.current = undefined;\n break parsing;\n }\n\n if (cachedLimit.current !== limit) {\n selection: {\n if (uniqueOptions.size === uniqueOptions.add(limit).size) {\n break selection;\n } else uniqueOptions.delete(limit);\n\n if (uniqueOptions.size === uniqueOptions.add(cachedLimit.current as number).size) {\n if (isNumber(cachedLimit.current)) {\n limit = cachedLimit.current;\n break selection;\n }\n } else uniqueOptions.delete(cachedLimit.current as number);\n\n // limit = cachedLimitOptions.current?.[0] as number;\n limit = getNearestFromSortedUniqueNums(cachedLimitOptions.current as number[], limit);\n }\n }\n } catch {\n /* ignore exception here — there are no options */\n }\n\n return (cachedLimit.current = limit);\n }, [options, preferredLimit]);\n\n return { limit, limitOptions: options } as const;\n};\n\nexport default usePageLimit;\n","import { useEffect, useMemo, useRef } from 'preact/hooks';\n\nconst useMounted = <U extends ((...args: any[]) => any)>(beforeUnmount?: U) => {\n const $mounted = useRef(false);\n const unmount = useMemo(() => beforeUnmount, [beforeUnmount]);\n\n useEffect(() => {\n $mounted.current = true;\n\n return () => {\n $mounted.current = false;\n unmount && unmount();\n };\n }, [unmount]);\n\n return $mounted;\n};\n\nexport default useMounted;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { RequestPageCallback, RequestPageCallbackParams, UsePaginationSetupConfig } from './types';\nimport useBooleanState from '../../../../hooks/useBooleanState';\nimport useMounted from '../../../../hooks/useMounted';\nimport { PaginationType, UsePagination } from '../types';\nimport { getClampedPageLimit } from '../utils';\nimport { noop } from '@src/utils/common';\n\nconst usePagination = <Pagination extends PaginationType>(\n paginationSetupConfig: UsePaginationSetupConfig<Pagination>,\n requestPageCallback?: RequestPageCallback<Pagination>,\n pageLimit?: number\n): UsePagination => {\n const $controller = useRef<AbortController>();\n const $maxVisitedPage = useRef<number>();\n const $maxVisitedPageSize = useRef<number>();\n const $page = useRef<number>();\n\n const $mounted = useMounted(\n useCallback(() => {\n $controller.current?.abort();\n $controller.current = undefined;\n }, [])\n );\n\n const [page, setCurrentPage] = useState($page.current);\n const [paginationChanged, updatePaginationChanged] = useBooleanState(false);\n const limit = useMemo(() => getClampedPageLimit(pageLimit), [pageLimit]);\n\n const { getPageCount, getPageParams, resetPageCount, updatePagination } = paginationSetupConfig;\n\n const goto = useMemo(() => {\n return requestPageCallback\n ? (page: number) => {\n if (!(limit && Number.isInteger(page))) return;\n\n const PAGES = getPageCount();\n const requestedPage = page < 0 ? page + PAGES + 1 : page;\n const isValidPageRequest = requestedPage > 0 && (PAGES ? requestedPage <= PAGES : requestedPage === 1);\n\n if (!isValidPageRequest) return;\n\n $controller.current?.abort();\n $controller.current = new AbortController();\n\n if (!$mounted.current) return;\n\n if (($page.current = requestedPage) > 1 || PAGES) {\n setCurrentPage($page.current);\n }\n\n (async () => {\n const { signal } = $controller.current as AbortController;\n const params = { ...getPageParams(requestedPage, limit), limit, page: requestedPage } as RequestPageCallbackParams<Pagination>;\n\n try {\n const data = await requestPageCallback(params, signal);\n if (!data || !$mounted.current) return;\n\n const { size, ...paginationData } = data;\n\n updatePagination(requestedPage, limit, paginationData);\n $maxVisitedPage.current = $page.current && Math.max($page.current, $maxVisitedPage.current || -Infinity);\n\n if ($page.current && $page.current === $maxVisitedPage.current) $maxVisitedPageSize.current = size;\n if ($page.current === 1 && size > 0) setCurrentPage($page.current);\n\n $page.current = undefined;\n updatePaginationChanged(true);\n } catch (ex) {\n if (signal.aborted) return;\n console.error(ex); // throw ex;\n }\n })();\n }\n : (noop as UsePagination['goto']);\n }, [limit, requestPageCallback]);\n\n const next = useCallback(() => {\n page && goto(Math.min(page + 1, getPageCount()));\n }, [goto, page]);\n\n const prev = useCallback(() => {\n page && goto(Math.max(page - 1, 1));\n }, [goto, page]);\n\n const pages = useMemo(() => getPageCount() || page || undefined, [goto, paginationChanged]);\n const hasNext = useMemo(() => !!(page && pages) && page < pages, [page, pages]);\n const hasPrev = useMemo(() => !!page && page > 1, [page]);\n\n const size = useMemo(\n () => ($maxVisitedPage.current ? ($maxVisitedPage.current - 1) * limit + ($maxVisitedPageSize.current || 0) : 0),\n [goto, paginationChanged]\n );\n\n const pageSize = useMemo(() => limit && Math.min(limit, size || Infinity) % limit, [limit, size]);\n\n const resetPagination = useCallback(() => {\n resetPageCount();\n $maxVisitedPage.current = $maxVisitedPageSize.current = $page.current = undefined;\n $mounted.current && setCurrentPage($page.current);\n }, [resetPageCount]);\n\n useEffect(() => {\n if ($mounted.current && paginationChanged) {\n updatePaginationChanged(false);\n }\n }, [paginationChanged]);\n\n return { goto, hasNext, hasPrev, limit, next, page, pages, pageSize, prev, resetPagination, size };\n};\n\nexport default usePagination;\n","import { useMemo } from 'preact/hooks';\nimport { isString } from '@src/utils/validator-utils';\nimport { RequestPageCallback, RequestPageCallbackParams } from './types';\nimport { PaginationType, UsePagination, WithEitherPages, WithNextPage, WithPrevPage } from '../types';\nimport usePagination from './usePagination';\n\ntype HasEitherPages = WithEitherPages<PaginationType.CURSOR>;\ntype HasNextPage = WithNextPage<PaginationType.CURSOR>;\ntype HasPrevPage = WithPrevPage<PaginationType.CURSOR>;\ntype PageCursorType = RequestPageCallbackParams<PaginationType.CURSOR>['cursor'];\n\nexport const hasNextPage = (value: HasEitherPages): value is HasNextPage => isString((value as HasNextPage).next);\nexport const hasPrevPage = (value: HasEitherPages): value is HasPrevPage => isString((value as HasPrevPage).prev);\n\nconst useCursorPagination = (requestPageCallback?: RequestPageCallback<PaginationType.CURSOR>, pageLimit?: number): UsePagination => {\n const paginationSetupConfig = useMemo(() => {\n const cursors: PageCursorType[] = [];\n const getPageCount = () => cursors.length;\n const resetPageCount = () => {\n cursors.length = 0;\n };\n const getPageParams = (page: number) => ({ cursor: cursors[page - 1] });\n\n const updateCursor = (cursor: PageCursorType, page: number) => {\n const currentCursor = cursors[page - 1];\n\n if ((page === 1 || page === (cursors.length || 1) + 1) && currentCursor === undefined) {\n cursors[page - 1] = cursor ? decodeURIComponent(cursor) : undefined;\n }\n };\n\n const updatePagination = (page: number, limit: number, paginationData: HasEitherPages) => {\n if (hasNextPage(paginationData)) updateCursor(paginationData.next, page + 1);\n if (hasPrevPage(paginationData)) updateCursor(paginationData.prev, page - 1);\n };\n\n return { getPageCount, getPageParams, resetPageCount, updatePagination };\n }, []);\n\n return usePagination<PaginationType.CURSOR>(paginationSetupConfig, requestPageCallback, pageLimit);\n};\n\nexport default useCursorPagination;\n","import { useMemo } from 'preact/hooks';\nimport { RequestPageCallback } from './types';\nimport { PaginationType, UsePagination, WithEitherPages, WithNextPage } from '../types';\nimport usePagination from './usePagination';\n\nexport type HasEitherPages = WithEitherPages<PaginationType.OFFSET>;\nexport type HasNextPage = WithNextPage<PaginationType.OFFSET>;\nexport const hasNextPage = (value: HasEitherPages): value is HasNextPage => (value as HasNextPage).next;\n\nconst useOffsetPagination = (\n requestPageCallback?: RequestPageCallback<PaginationType.OFFSET>,\n pageLimit?: number\n): UsePagination => {\n const paginationSetupConfig = useMemo(() => {\n let currentPage = 0;\n const getPageCount = () => currentPage;\n const resetPageCount = () => { currentPage = 0 };\n const getPageParams = (page: number, limit: number) => ({ offset: (page - 1) * limit });\n\n const updatePagination = (page: number, limit: number, paginationData: HasEitherPages) => {\n if (hasNextPage(paginationData) && paginationData.next) {\n currentPage = Math.max(currentPage, page + 1);\n }\n };\n\n return { getPageCount, getPageParams, resetPageCount, updatePagination };\n }, []);\n\n return usePagination<PaginationType.OFFSET>(paginationSetupConfig, requestPageCallback, pageLimit);\n};\n\nexport default useOffsetPagination;\n","import { useEffect, useMemo, useReducer, useRef } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport useMounted from '@src/hooks/useMounted';\nimport { ReactiveStateRecord, ReactiveStateUpdateRequest, ReactiveStateUpdateRequestWithField, UseReactiveStateRecord } from './types';\n\nconst useReactiveState = <Value, Param extends string>(\n params: ReactiveStateRecord<Value, Param> = EMPTY_OBJECT,\n initialStateSameAsDefault = true\n): UseReactiveStateRecord<Value, Param> => {\n const $hasDefaultState = useRef(initialStateSameAsDefault);\n const $defaultState = useRef(Object.freeze({ ...params }) as ReactiveStateRecord<Value, Param>);\n const $stateParams = useRef(new Set(Object.keys($defaultState.current) as Param[]));\n const $changedParams = useRef(new Set<Param>());\n const $mounted = useMounted();\n\n const [resetState, updateState] = useMemo(() => {\n const requestStateUpdate = (stateUpdateRequest: ReactiveStateUpdateRequest<Value, Param>) => {\n if (!$mounted.current) return;\n dispatch(stateUpdateRequest);\n };\n\n return [\n () => requestStateUpdate('reset'),\n (stateUpdateRequest: ReactiveStateUpdateRequestWithField<Value, Param>) => requestStateUpdate(stateUpdateRequest),\n ];\n }, [$mounted]);\n\n const [state, dispatch] = useReducer((state, stateUpdateRequest: ReactiveStateUpdateRequest<Value, Param>) => {\n if (stateUpdateRequest === 'reset') {\n $changedParams.current.clear();\n return $defaultState.current;\n }\n\n const stateUpdate = { ...stateUpdateRequest } as ReactiveStateRecord<Value, Param>;\n const stateUpdateFlags = [0];\n\n (Object.keys(stateUpdate) as Param[]).forEach((key, index) => {\n if (!$stateParams.current.has(key)) return;\n\n const currentValue = state[key] ?? undefined;\n const defaultValue = $defaultState.current[key] ?? undefined;\n const updateValue = stateUpdate[key] ?? defaultValue;\n\n if (updateValue === currentValue) return;\n\n const flagIndex = Math.floor(index / 32);\n const updateFlag = 1 << index % 32;\n\n stateUpdate[key] = updateValue;\n stateUpdateFlags[flagIndex] |= updateFlag;\n $changedParams.current[updateValue === defaultValue ? 'delete' : 'add'](key);\n });\n\n const STATE = stateUpdateFlags.some(flag => flag)\n ? $hasDefaultState.current && $changedParams.current.size === 0\n ? $defaultState.current\n : Object.freeze({ ...state, ...stateUpdate })\n : state;\n\n if (!$hasDefaultState.current) {\n // Mark as having default state on the first \"non-reset\" state update request,\n // whether it results in a state update or not.\n $defaultState.current = STATE;\n $hasDefaultState.current = true;\n }\n\n return STATE;\n }, $defaultState.current);\n\n const canResetState = useMemo(() => !!$changedParams.current.size, []);\n\n useEffect(() => {\n $defaultState.current = Object.freeze({ ...params }) as ReactiveStateRecord<Value, Param>;\n $stateParams.current = new Set(Object.keys($defaultState.current) as Param[]);\n $hasDefaultState.current = initialStateSameAsDefault;\n resetState();\n }, [initialStateSameAsDefault, params, resetState]);\n return { canResetState, defaultState: $defaultState.current, resetState, state, updateState };\n};\n\nexport default useReactiveState;\n","import { EMPTY_OBJECT } from '@src/utils/common';\nimport { UsePaginatedRecordsFilters } from './types';\nimport useReactiveState from '@src/hooks/useReactiveState';\nimport { ReactiveStateRecord } from '@src/hooks/useReactiveState/types';\n\nconst usePaginatedRecordsFilters = <FilterValue, FilterParam extends string>(\n filterParams: ReactiveStateRecord<FilterValue, FilterParam> = EMPTY_OBJECT,\n initialFiltersSameAsDefault?: boolean\n): UsePaginatedRecordsFilters<FilterValue, FilterParam> => {\n const {\n canResetState: canResetFilters,\n defaultState: defaultFilters,\n resetState: resetFilters,\n state: filters,\n updateState: updateFilters,\n } = useReactiveState<FilterValue, FilterParam>(filterParams, initialFiltersSameAsDefault);\n\n return { canResetFilters, defaultFilters, filters, resetFilters, updateFilters };\n};\n\nexport default usePaginatedRecordsFilters;\n","import { UseReactiveStateRecord } from '@src/hooks/useReactiveState/types';\n\nexport const enum PageNeighbour {\n NEXT = 'next',\n PREV = 'prev',\n}\n\nexport const enum PaginationType {\n CURSOR = 'cursor',\n OFFSET = 'offset',\n}\n\nexport type ForPaginationType<T extends PaginationType, CursorType, OffsetType> = T extends PaginationType.CURSOR\n ? CursorType\n : T extends PaginationType.OFFSET\n ? OffsetType\n : never;\n\ntype BothPageNeighbours<T = any> = { [P in PageNeighbour]: T };\ntype NextPageNeighbour<T = any> = Omit<BothPageNeighbours<T>, PageNeighbour.PREV>;\ntype PrevPageNeighbour<T = any> = Omit<BothPageNeighbours<T>, PageNeighbour.NEXT>;\n\ntype WithNextPageNeighbour<T = any> = BothPageNeighbours<T> | NextPageNeighbour<T>;\ntype WithPrevPageNeighbour<T = any> = BothPageNeighbours<T> | PrevPageNeighbour<T>;\ntype WithPageNeighbours<T = any> = WithNextPageNeighbour<T> | WithPrevPageNeighbour<T>;\n\ntype WhichPageNeighbour<T extends PaginationType> = ForPaginationType<T, string, boolean>;\n\nexport type WithEitherPages<T extends PaginationType> = WithPageNeighbours<WhichPageNeighbour<T>>;\nexport type WithNextPage<T extends PaginationType> = WithNextPageNeighbour<WhichPageNeighbour<T>>;\nexport type WithPrevPage<T extends PaginationType> = WithPrevPageNeighbour<WhichPageNeighbour<T>>;\n\nexport type WithPaginationCursor<T extends Record<any, any> = {}> = T & { cursor?: string };\nexport type WithPaginationLimit<T extends Record<any, any> = {}> = T & { limit?: number };\nexport type WithPaginationOffset<T extends Record<any, any> = {}> = T & { offset: number };\nexport type WithPaginationRecordSize<T extends Record<any, any> = {}> = T & { size?: number };\n\nexport type WithPaginationLimitSelection<T extends Record<any, any> = {}> = T & {\n limitOptions?: readonly number[];\n onLimitSelection?: (limit: number) => void;\n};\n\nexport type PaginatedResponseDataKeyword = 'hasNext' | 'hasPrevious' | '_links';\nexport type PaginatedResponseDataField<DataField extends string> = Exclude<DataField | PaginatedResponseDataKeyword, PaginatedResponseDataKeyword>;\n\nexport type BasePaginatedResponseData<T = any, DataField extends string = 'data'> = {\n [K in PaginatedResponseDataField<DataField>]?: T[];\n};\n\nexport type PaginatedResponseDataWithLinks<T = any, DataField extends string = 'data'> = BasePaginatedResponseData<T, DataField> & {\n [K in PageNeighbour]?: string;\n};\n\nexport type PaginatedResponseDataWithoutLinks<T = any, DataField extends string = 'data'> = BasePaginatedResponseData<T, DataField> & {\n hasNext?: boolean;\n hasPrevious?: boolean;\n};\n\nexport type PaginatedResponseData<T = any, DataField extends string = 'data'> =\n | PaginatedResponseDataWithLinks<T, DataField>\n | PaginatedResponseDataWithoutLinks<T, DataField>;\n\nexport interface UseFilters<S extends UseReactiveStateRecord> {\n canResetFilters: S['canResetState'];\n defaultFilters: S['defaultState'];\n filters: S['state'];\n resetFilters: S['resetState'];\n updateFilters: S['updateState'];\n}\n\nexport interface UsePagination extends Required<WithPaginationLimit>, WithPaginationRecordSize {\n goto: (page: number) => void;\n hasNext: boolean;\n hasPrev: boolean;\n next: () => void;\n page: number | undefined;\n pages: number | undefined;\n pageSize: number | undefined;\n prev: () => void;\n resetPagination: () => void;\n}\n\nexport type PaginationProps = WithPaginationLimitSelection<Omit<UsePagination, 'goto' | 'resetPagination'> & Partial<Pick<UsePagination, 'goto'>>>;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport {\n BasePaginatedRecordsInitOptions,\n PaginatedRecordsFetcherReturnValue,\n RequestPageCallback,\n RequestPageCallbackParams,\n RequestPageCallbackReturnValue,\n UsePaginatedRecords,\n} from './types';\nimport usePageLimit from './usePageLimit';\nimport useCursorPagination from './useCursorPagination';\nimport useOffsetPagination from './useOffsetPagination';\nimport usePaginatedRecordsFilters from './usePaginatedRecordsFilters';\nimport useBooleanState from '@src/hooks/useBooleanState';\nimport useMounted from '@src/hooks/useMounted';\nimport {\n PageNeighbour,\n PaginatedResponseData,\n PaginatedResponseDataField,\n PaginatedResponseDataWithLinks,\n PaginationType,\n WithEitherPages,\n} from '../types';\nimport AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\n\nconst pageNeighbours = [PageNeighbour.NEXT, PageNeighbour.PREV] as const;\nconst offsetPaginatedResponseFields = ['hasNext', 'hasPrevious'] as const;\n\nconst isCursorPaginatedResponseData = <T, DataField extends string>(\n data: PaginatedResponseData<T, DataField>\n): data is PaginatedResponseDataWithLinks<T, DataField> => {\n const dataProperties = Object.getOwnPropertyNames(data as PaginatedResponseDataWithLinks<T, DataField>);\n return !offsetPaginatedResponseFields.some(prop => dataProperties.includes(prop));\n};\n\nconst parseCursorPaginatedResponseData = <T, DataField extends string>(\n data: PaginatedResponseData<T, DataField>,\n dataField: PaginatedResponseDataField<DataField> = 'data' as PaginatedResponseDataField<DataField>\n) => {\n const records = data[dataField] as T[];\n\n if (isCursorPaginatedResponseData<T, DataField>(data)) {\n const paginationData = Object.fromEntries(\n (Object.entries(data || EMPTY_OBJECT) as [PageNeighbour, string][]).filter(\n ([neighbour, cursor]) => pageNeighbours.includes(neighbour as PageNeighbour) && cursor\n )\n ) as WithEitherPages<PaginationType.CURSOR>;\n\n return { records, paginationData };\n }\n\n throw new TypeError('MALFORMED_PAGINATED_DATA');\n};\n\nconst parseOffsetPaginatedResponseData = <T, DataField extends string>(\n data: PaginatedResponseData<T, DataField>,\n dataField: PaginatedResponseDataField<DataField> = 'data' as PaginatedResponseDataField<DataField>\n) => {\n const records = data[dataField] as T[];\n\n if (!isCursorPaginatedResponseData<T, DataField>(data)) {\n const { hasNext, hasPrevious } = data;\n\n const paginationData = {\n [PageNeighbour.NEXT]: hasNext === true,\n [PageNeighbour.PREV]: hasPrevious === true,\n } as WithEitherPages<PaginationType.OFFSET>;\n\n return { records, paginationData };\n }\n\n throw new TypeError('MALFORMED_PAGINATED_DATA');\n};\n\nconst usePaginatedRecords = <T, DataField extends string, FilterValue extends string, FilterParam extends string>({\n dataField = 'data' as PaginatedResponseDataField<DataField>,\n fetchRecords,\n filterParams = EMPTY_OBJECT,\n initialFiltersSameAsDefault = true,\n initialize,\n onFiltersChanged,\n onLimitChanged,\n pagination,\n preferredLimit,\n preferredLimitOptions,\n enabled,\n}: BasePaginatedRecordsInitOptions<T, DataField, FilterValue, FilterParam>): UsePaginatedRecords<T, FilterValue, FilterParam> => {\n const [records, setRecords] = useState<T[]>([]);\n const [fetching, updateFetching] = useBooleanState(true);\n const [error, setError] = useState<AdyenPlatformExperienceError>();\n const [preferredPageLimit, setPreferredPageLimit] = useState(preferredLimit);\n\n const $mounted = useMounted();\n const $initialFetchInProgress = useRef(true);\n const $lastRequestedPage = useRef(1);\n const $recordsFilters = usePaginatedRecordsFilters<FilterValue, FilterParam>(filterParams, initialFiltersSameAsDefault);\n\n const { limit, limitOptions } = usePageLimit({ preferredLimit: preferredPageLimit, preferredLimitOptions });\n const { defaultFilters, filters, updateFilters, ...filtersProps } = $recordsFilters;\n\n const [parsePaginatedResponseData, usePagination] = useMemo(\n () =>\n pagination === PaginationType.CURSOR\n ? [parseCursorPaginatedResponseData, useCursorPagination]\n : [parseOffsetPaginatedResponseData, useOffsetPagination],\n []\n );\n\n const updateLimit = useCallback((limit: number) => setPreferredPageLimit(limit), []);\n\n const { goto, page, pages, resetPagination, ...paginationProps } = usePagination(\n useCallback(\n async (\n { page, ...pageRequestParams }: RequestPageCallbackParams<PaginationType>,\n signal?: AbortSignal\n ): Promise<RequestPageCallbackReturnValue<PaginationType>> => {\n try {\n setError(undefined);\n $lastRequestedPage.current = page;\n\n if (!$mounted.current || <undefined>updateFetching(true)) return;\n\n const res = await fetchRecords({ ...pageRequestParams, ...filters }, signal);\n const { records, paginationData } = parsePaginatedResponseData<T, DataField>(res, dataField);\n\n if ($initialFetchInProgress.current) {\n initialize?.([records, paginationData] as PaginatedRecordsFetcherReturnValue<PaginationType, T>, $recordsFilters);\n $initialFetchInProgress.current = false;\n }\n\n if ($mounted.current) {\n setRecords(records);\n updateFetching(false);\n }\n\n return { ...paginationData, size: records?.length };\n } catch (err) {\n // TODO - Handle signal abortion and updateFetching\n if (signal?.aborted) return;\n updateFetching(false);\n setError(err as AdyenPlatformExperienceError);\n\n console.error(err);\n }\n },\n [fetchRecords, filters, limit]\n ) as RequestPageCallback<PaginationType>,\n limit\n );\n\n useMemo(() => {\n $initialFetchInProgress.current = true;\n /* eslint-disable-next-line */\n }, [filterParams]);\n\n useMemo(() => {\n resetPagination();\n $lastRequestedPage.current = 1;\n /* eslint-disable-next-line */\n }, [filters, limit, resetPagination]);\n\n useEffect(() => {\n if (enabled) goto($lastRequestedPage.current);\n }, [goto, enabled]);\n\n useEffect(() => {\n onFiltersChanged?.(filters);\n }, [filters]);\n\n useEffect(() => {\n onLimitChanged?.(limit);\n }, [limit]);\n\n return { error, fetching, filters, goto, limitOptions, page, pages, records, updateFilters, updateLimit, ...filtersProps, ...paginationProps };\n};\n\nexport default usePaginatedRecords;\n","import { PaginatedRecordsInitOptions, UsePaginatedRecords } from './types';\nimport usePaginatedRecords from './usePaginatedRecords';\nimport { PaginationType } from '../types';\n\nconst useCursorPaginatedRecords = <T, DataField extends string, FilterValue extends string, FilterParam extends string>(\n initOptions: PaginatedRecordsInitOptions<T, DataField, FilterValue, FilterParam>\n): UsePaginatedRecords<T, FilterValue, FilterParam> => {\n return usePaginatedRecords<T, DataField, FilterValue, FilterParam>({\n ...initOptions,\n pagination: PaginationType.CURSOR,\n });\n};\n\nexport default useCursorPaginatedRecords;\n","import $watchable from '@src/utils/watchable';\nimport { struct } from '@src/utils/common';\nimport { Clock } from './types';\n\nconst clock = (() => {\n let timestamp: number | null = null;\n let controller: AbortController;\n\n // Adopted from: https://gist.github.com/jakearchibald/cb03f15670817001b1157e62a076fe95\n const animationInterval = (ms: number, signal: AbortSignal, callback: () => any) => {\n const start = document.timeline.currentTime ?? performance.now();\n\n const scheduleFrame = (time: number) => {\n const elapsed = time - start;\n const roundedElapsed = Math.round(elapsed / ms) * ms;\n const targetNext = start + roundedElapsed + ms;\n const delay = targetNext - performance.now();\n setTimeout(() => requestAnimationFrame(frame), delay);\n };\n\n const frame = (time: number) => {\n if (signal.aborted) return;\n scheduleFrame(time);\n callback();\n };\n\n scheduleFrame(start);\n };\n\n const animationIntervalCallback = () => {\n timestamp = Date.now();\n watchable.notify();\n };\n\n const getTimestamp = () => timestamp ?? Date.now();\n const watchable = $watchable({ timestamp: getTimestamp });\n\n watchable.callback.resume = () => {\n controller = new AbortController();\n timestamp = Date.now();\n animationInterval(1000, controller.signal, animationIntervalCallback);\n };\n\n watchable.callback.idle = () => {\n controller.abort();\n timestamp = null;\n };\n\n return struct({\n timestamp: { get: getTimestamp },\n watch: { value: watchable.watch },\n }) as Clock;\n})();\n\nexport default clock;\n","import $restamper, { RestamperWithTimezone, systemToTimezone, timezoneToSystem } from '@src/core/Localization/datetime/restamper';\nimport $watchable from '@src/utils/watchable';\nimport { struct } from '@src/utils/common';\nimport { Today } from './types';\nimport clock from './clock';\n\nconst today = (() => {\n const timezones = new Map<NonNullable<RestamperWithTimezone['tz']['current']>, Today>();\n const restamper = $restamper();\n\n const getTimestampWithTomorrowOffset = (withTimestamp = clock.timestamp) => {\n const date = new Date(withTimestamp);\n const restampedDate = new Date(timezoneToSystem(restamper, withTimestamp));\n const dateDiff = (date.getDate() - restampedDate.getDate()) as -1 | 1 | 0;\n\n if (dateDiff) {\n // Correction for difference between first (1) and last (28, 29, 30, 31) day of month\n const dateOffset = dateDiff > 1 ? -1 : dateDiff < -1 ? 1 : dateDiff;\n date.setDate(date.getDate() - dateOffset);\n }\n\n const currentTimestamp = systemToTimezone(restamper, date.setHours(0, 0, 0, 0)); // current day start timestamp\n const nextTimestamp = systemToTimezone(restamper, date.setDate(date.getDate() + 1)); // next day start timestamp\n return [currentTimestamp, nextTimestamp - currentTimestamp] as const;\n };\n\n return (timezone?: RestamperWithTimezone['tz']['current']) => {\n restamper.tz = timezone;\n\n const tz = restamper.tz.current!;\n\n return (\n timezones.get(tz) ??\n (() => {\n let timestamp: number | null = null;\n let tomorrowOffset: number | null = null;\n let unwatch: ReturnType<Today['watch']> | null = null;\n\n const getTimestamp = () => {\n restamper.tz = tz; // switch restamper to this timezone\n return timestamp ?? getTimestampWithTomorrowOffset()[0];\n };\n\n const refreshTimestamps = (withTimestamp = clock.timestamp) => {\n restamper.tz = tz; // switch restamper to this timezone\n [timestamp, tomorrowOffset] = getTimestampWithTomorrowOffset(withTimestamp);\n };\n\n const watchable = $watchable({ timestamp: getTimestamp });\n\n watchable.callback.resume = () => {\n unwatch = clock.watch(snapshotOrSignal => {\n if (snapshotOrSignal === $watchable.UNWATCH) return;\n if (timestamp === null || tomorrowOffset === null) return refreshTimestamps();\n if (clock.timestamp - timestamp < tomorrowOffset) return;\n\n refreshTimestamps();\n watchable.notify();\n });\n };\n\n watchable.callback.idle = () => {\n unwatch?.();\n timestamp = tomorrowOffset = unwatch = null;\n };\n\n const instance = struct({\n timestamp: { get: getTimestamp },\n timezone: { value: tz },\n watch: { value: watchable.watch },\n }) as Today;\n\n timezones.set(tz, instance);\n return instance;\n })()\n );\n };\n})();\n\nexport default today;\n","import { useMemo, useRef, useState } from 'preact/hooks';\nimport restamper, { RestampContext } from '@src/core/Localization/datetime/restamper';\nimport { getGMTSuffixForTimezoneOffset, getTimezoneOffsetFromFormattedDateString } from '@src/core/Localization/datetime/restamper/utils';\nimport { EMPTY_ARRAY, EMPTY_OBJECT, noop } from '@src/utils/common';\nimport clock from '../clock';\n\nexport type UseTimezoneConfig = {\n timezone?: RestampContext['TIMEZONE'];\n withClock?: boolean;\n};\n\nexport const { getTimezoneTime, getUsedTimezone } = (() => {\n const REGEX_CLOCK_TIME_MATCHER = /(\\d{2}):(\\d{2})(?=:\\d{2}(?:\\.\\d+)?\\s+([AP]M))/i;\n const REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS = /^GMT|0(?=\\d:00)|:00/g;\n const $restamper = restamper();\n\n const getTimezoneTime = (timezone: RestampContext['TIMEZONE'], timestamp = Date.now()) => {\n $restamper.tz = timezone!; // switch restamper to this timezone\n\n const { formatted } = $restamper(timestamp);\n const [time = '', , , meridian = ''] = formatted?.match(REGEX_CLOCK_TIME_MATCHER) ?? EMPTY_ARRAY;\n const offset = getTimezoneOffsetFromFormattedDateString(formatted);\n const clockTime = `${time}${meridian && ` ${meridian}`}`;\n const GMTOffsetString = getGMTSuffixForTimezoneOffset(offset).replace(REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS, '');\n\n return [clockTime, GMTOffsetString] as const;\n };\n\n const getUsedTimezone = (timezone?: RestampContext['TIMEZONE']) => {\n $restamper.tz = timezone;\n return $restamper.tz.current!;\n };\n\n return { getTimezoneTime, getUsedTimezone } as const;\n})();\n\nconst useTimezone = ({ timezone: tz, withClock = false }: UseTimezoneConfig = EMPTY_OBJECT) => {\n const shouldWatchClock = useMemo(() => withClock === true, [withClock]);\n const timezone = useMemo(() => getUsedTimezone(tz), [tz]);\n const unwatchClock = useRef(noop);\n\n const [timestamp, setTimestamp] = useState(Date.now());\n const [clockTime, GMTOffset] = useMemo(() => getTimezoneTime(timezone, timestamp), [timestamp, timezone]);\n\n useMemo(() => {\n unwatchClock.current();\n\n unwatchClock.current = shouldWatchClock\n ? clock.watch(snapshotOrSignal => {\n if (typeof snapshotOrSignal === 'symbol') return;\n setTimestamp(snapshotOrSignal.timestamp);\n })\n : noop;\n }, [setTimestamp, shouldWatchClock]);\n\n return { clockTime, GMTOffset, timestamp, timezone } as const;\n};\n\nexport default useTimezone;\n","import { clamp, EMPTY_OBJECT, enumerable, hasOwnProperty, isBitSafeInteger, isFunction, struct, toString } from '@src/utils/common';\nimport type { WeekDay } from '../types';\nimport type {\n RangeTimestamp,\n RangeTimestampOffsets,\n RangeTimestamps,\n RangeTimestampsConfig,\n RangeTimestampsConfigContext,\n RangeTimestampsConfigParameter,\n RangeTimestampsConfigParameterValue,\n RangeTimestampsConfigRestampingContext,\n RangeTimestampsConfigWithFromOffsets,\n RangeTimestampsConfigWithoutOffsets,\n} from './types';\nimport { Restamper, RestamperWithTimezone, systemToTimezone, timezoneToSystem } from '@src/core/Localization/datetime/restamper';\n\nexport const asPlainObject = <T = any>(value: T): T extends Record<any, any> ? T : Readonly<{}> =>\n toString(value).slice(8, -1) === 'Object' ? value : EMPTY_OBJECT;\n\nexport const getter = <T = any>(get: () => T, enumerable = true): TypedPropertyDescriptor<T> =>\n ({\n enumerable: (enumerable as any) !== false,\n get,\n } as const);\n\nexport const createRangeTimestampsConfigRestampingContext = (restamper: RestamperWithTimezone) =>\n Object.freeze({\n systemToTimezone: enumerable((time?: Parameters<Restamper>[0]) => systemToTimezone(restamper, time)),\n timezoneToSystem: enumerable((time?: Parameters<Restamper>[0]) => timezoneToSystem(restamper, time)),\n timezoneOffset: enumerable((time?: Parameters<Restamper>[0]) => restamper(time).offset),\n }) as { [P in keyof RangeTimestampsConfigRestampingContext]: TypedPropertyDescriptor<RangeTimestampsConfigRestampingContext[P]> };\n\nexport const getRangeTimestampsContextIntegerPropertyFactory = <T extends number = number>(\n minInteger: T,\n maxInteger: T,\n defaultInteger: T = minInteger\n) => {\n const _getNormalizedValue = (value?: T | null, fallbackValue?: T) => {\n let normalizedValue = value as T;\n\n if (value == undefined) normalizedValue = defaultInteger;\n else if (!isBitSafeInteger(value)) normalizedValue = fallbackValue ?? defaultInteger;\n\n const clampedValue = clamp(minInteger, normalizedValue, maxInteger) as T;\n return clampedValue === normalizedValue ? clampedValue : fallbackValue ?? defaultInteger;\n };\n\n return (initialValue?: T) => {\n const valueGetter = getter(() => normalizedValue);\n let normalizedValue = _getNormalizedValue(initialValue);\n\n return struct({\n value: valueGetter,\n descriptor: enumerable({\n ...valueGetter,\n set(this: RangeTimestamps, value?: T | null) {\n const currentValue = normalizedValue;\n normalizedValue = _getNormalizedValue(value, normalizedValue);\n if (currentValue !== normalizedValue) this.now = this.now;\n },\n }),\n }) as Readonly<{\n value: T;\n descriptor: TypedPropertyDescriptor<T>;\n }>;\n };\n};\n\nexport const getRangeTimestampsConfigParameterUnwrapper =\n (config: RangeTimestampsConfig, context: RangeTimestampsConfigContext) =>\n <T = {}>(value: T): RangeTimestampsConfigParameterValue<T> =>\n isFunction(value) ? value.call(config, context) : value;\n\nexport const isRangeTimestampsConfigWithoutOffsets = (config: RangeTimestampsConfig): config is RangeTimestampsConfigWithoutOffsets =>\n !hasOwnProperty(config, 'offsets');\n\nexport const isRangeTimestampsConfigWithFromOffsets = (\n config: Exclude<RangeTimestampsConfig, RangeTimestampsConfigWithoutOffsets>\n): config is RangeTimestampsConfigWithFromOffsets => hasOwnProperty(config, 'from');\n\nexport const nowTimestamp = (({ now }) => now) satisfies RangeTimestampsConfigParameter<RangeTimestamp>;\n\nexport const offsetsForNDays = (() => {\n const _cache = new Map<number, RangeTimestampOffsets>();\n\n return (numberOfDays: number) => {\n let offsets = _cache.get(numberOfDays);\n\n if (offsets === undefined) {\n offsets = Object.freeze([0, 0, numberOfDays, 0, 0, 0, -1] as const);\n _cache.set(numberOfDays, offsets);\n }\n\n return offsets;\n };\n})();\n\nexport const parseRangeTimestamp = (timestamp: Date | RangeTimestamp): RangeTimestamp | undefined => {\n try {\n const normalizedTimestamp = timestamp instanceof Date || +timestamp === timestamp ? timestamp : undefined;\n const parsedTimestamp = new Date(normalizedTimestamp as RangeTimestamp).getTime();\n return isNaN(parsedTimestamp) ? undefined : parsedTimestamp;\n } catch {\n /* ignore any parsing exception and implicitly return `undefined` */\n }\n};\n\nexport const startOfDay = (date: Date) => date.setHours(0, 0, 0, 0);\n\nexport const startOfMonth = (date: Date) => {\n startOfDay(date);\n return date.setDate(1);\n};\n\nexport const startOfYear = (date: Date) => {\n startOfDay(date);\n return date.setMonth(0, 1);\n};\n\nexport const startOfWeekOffset = (firstWeekDay: WeekDay, weekDay: WeekDay = firstWeekDay) => {\n const offset = (((-weekDay % 7) + (firstWeekDay - 7)) % 7) as 0 | -1 | -2 | -3 | -4 | -5 | -6;\n return 0 + offset; // {0 + expression} => corrects -0 to 0\n};\n","import { EMPTY_OBJECT, struct } from '@src/utils/common';\nimport restamper, { RestamperWithTimezone } from '@src/core/Localization/datetime/restamper';\nimport type { RangeTimestamp, RangeTimestamps, RangeTimestampsConfig, RangeTimestampsConfigContext } from './types';\nimport {\n asPlainObject,\n createRangeTimestampsConfigRestampingContext,\n getRangeTimestampsConfigParameterUnwrapper,\n getter,\n isRangeTimestampsConfigWithFromOffsets,\n isRangeTimestampsConfigWithoutOffsets,\n parseRangeTimestamp,\n} from './utils';\n\nconst createRangeTimestampsFactory = <T extends Record<any, any> = {}>(\n config: RangeTimestampsConfig = EMPTY_OBJECT,\n additionalContext: { [P in keyof T]: TypedPropertyDescriptor<T[P]> } = EMPTY_OBJECT\n) => {\n const _config = asPlainObject(config);\n const _additionalContext = asPlainObject(additionalContext);\n\n return () => {\n const _restamper = restamper();\n const nowDescriptor = getter(() => NOW);\n const tzDescriptor = getter(() => _restamper.tz.current);\n const configContext = struct({\n now: nowDescriptor,\n timezone: tzDescriptor,\n ...createRangeTimestampsConfigRestampingContext(_restamper),\n }) as RangeTimestampsConfigContext;\n const unwrap = getRangeTimestampsConfigParameterUnwrapper(_config, configContext);\n\n let { from, to, now: NOW } = EMPTY_OBJECT as RangeTimestamps;\n\n const nowSetter = (timestamp?: Date | RangeTimestamp | null) => {\n NOW = parseRangeTimestamp((timestamp ?? Date.now()) as RangeTimestamp) ?? NOW;\n\n parsing: {\n if (isRangeTimestampsConfigWithoutOffsets(_config)) {\n from = parseRangeTimestamp(unwrap(_config.from)) ?? NOW;\n to = parseRangeTimestamp(unwrap(_config.to)) ?? NOW;\n break parsing;\n }\n\n let date: Date;\n let direction: 1 | -1;\n let withRangeFrom: boolean;\n\n if ((withRangeFrom = isRangeTimestampsConfigWithFromOffsets(_config))) {\n date = new Date((from = parseRangeTimestamp(unwrap(_config.from)) ?? NOW));\n direction = 1;\n } else {\n date = new Date((to = parseRangeTimestamp(unwrap(_config.to)) ?? NOW));\n direction = -1;\n }\n\n // revert timestamp to system timezone ahead of offset operations\n date = new Date(configContext.timezoneToSystem(date));\n\n const [years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0, ms = 0] = unwrap(_config.offsets);\n\n date.setFullYear(date.getFullYear() + years * direction, date.getMonth() + months * direction, date.getDate() + days * direction);\n\n date.setHours(\n date.getHours() + hours * direction,\n date.getMinutes() + minutes * direction,\n date.getSeconds() + seconds * direction,\n date.getMilliseconds() + ms * direction\n );\n\n // restamp timestamp to current target timezone before update range\n const timestamp = parseRangeTimestamp(configContext.systemToTimezone(date)) ?? NOW;\n\n withRangeFrom ? (to = timestamp) : (from = timestamp);\n }\n\n if (from > to) [from, to] = [to, from];\n };\n\n const tzSetter = (timezone?: RestamperWithTimezone['tz']['current'] | null) => {\n const tz = _restamper.tz;\n const currentTimezone = tz.current;\n _restamper.tz = timezone;\n if (tz.current !== currentTimezone) nowSetter(NOW);\n };\n\n nowSetter();\n\n return struct({\n ..._additionalContext,\n from: getter(() => from),\n now: { ...nowDescriptor, set: nowSetter },\n timezone: { ...tzDescriptor, set: tzSetter },\n to: getter(() => to),\n }) as RangeTimestamps<Omit<T, keyof RangeTimestamps>>;\n };\n};\n\nexport default createRangeTimestampsFactory;\n","import { clamp } from '@src/utils/common';\nimport createRangeTimestampsFactory from '../../factory';\nimport { getRangeTimestampsContextIntegerPropertyFactory, nowTimestamp, offsetsForNDays, startOfDay, startOfWeekOffset } from '../../utils';\nimport type { WeekDay } from '../../../types';\n\nexport const DEFAULT_FIRST_WEEK_DAY = 1;\nexport const ONE_WEEK_OFFSETS = offsetsForNDays(7);\n\nconst _getFirstWeekDayContext = getRangeTimestampsContextIntegerPropertyFactory<WeekDay>(0, 6, DEFAULT_FIRST_WEEK_DAY);\n\nconst offsetWeek = (weekCount: number = 0) => {\n const weeks = ~~clamp(0, weekCount as number, Infinity) || 0;\n\n return (firstWeekDay: WeekDay = DEFAULT_FIRST_WEEK_DAY) => {\n const restConfig = weeks ? { offsets: ONE_WEEK_OFFSETS } : { to: nowTimestamp };\n const firstWeekDayContext = _getFirstWeekDayContext(firstWeekDay);\n\n return createRangeTimestampsFactory(\n {\n from: ({ now, systemToTimezone, timezoneToSystem }) => {\n const date = new Date(now);\n const restampedDate = new Date(timezoneToSystem(now));\n const dayDiff = (date.getDay() - restampedDate.getDay()) as -1 | 1 | 0;\n\n startOfDay(date);\n\n if (dayDiff) {\n // Correction for difference between first (0) and last (6) week day\n const dateDiff = dayDiff > 1 ? -1 : dayDiff < -1 ? 1 : dayDiff;\n date.setDate(date.getDate() - dateDiff);\n }\n\n const dateOffset = startOfWeekOffset(firstWeekDayContext.value, date.getDay() as WeekDay) - weeks * 7;\n date.setDate(date.getDate() + dateOffset);\n\n return systemToTimezone(date);\n },\n ...restConfig,\n },\n { firstWeekDay: firstWeekDayContext.descriptor }\n )();\n };\n};\n\nexport default offsetWeek;\n","import { clamp } from '@src/utils/common';\nimport createRangeTimestampsFactory from '../../factory';\nimport type { RangeTimestampOffsets } from '../../types';\nimport { nowTimestamp, startOfMonth } from '../../utils';\n\nexport const ONE_MONTH_OFFSETS = Object.freeze([0, 1, 0, 0, 0, 0, -1] as const) as RangeTimestampOffsets;\n\nconst offsetMonth = (monthCount: number = 0) => {\n const months = ~~clamp(0, monthCount as number, Infinity) || 0;\n const restConfig = months ? { offsets: ONE_MONTH_OFFSETS } : { to: nowTimestamp };\n\n return createRangeTimestampsFactory({\n from: ({ now, systemToTimezone, timezoneToSystem }) => {\n const date = new Date(now);\n const restampedDate = new Date(timezoneToSystem(now));\n const monthDiff = (date.getMonth() - restampedDate.getMonth()) as -1 | 1 | 0;\n\n let monthOffset = months;\n\n if (monthDiff) {\n // Correction for difference between first (0) and last (11) month\n monthOffset += monthDiff > 1 ? -1 : monthDiff < -1 ? 1 : monthDiff;\n }\n\n startOfMonth(date);\n date.setMonth(date.getMonth() - monthOffset);\n return systemToTimezone(date);\n },\n ...restConfig,\n });\n};\n\nexport default offsetMonth;\n","import offsetMonth from './shared/offsetMonth';\nconst lastMonth = offsetMonth(1);\nexport default lastMonth;\n","import createRangeTimestampsFactory from '../factory';\nimport { getRangeTimestampsContextIntegerPropertyFactory, nowTimestamp, startOfDay } from '../utils';\n\nexport const MAX_NUM_DAYS = 365;\nexport const MIN_NUM_DAYS = 1;\nexport const DEFAULT_NUM_DAYS = 1;\n\nconst _getNumberOfDaysContext = getRangeTimestampsContextIntegerPropertyFactory<number>(MIN_NUM_DAYS, MAX_NUM_DAYS, DEFAULT_NUM_DAYS);\n\nconst lastNDays = (numberOfDays?: number) => {\n const numberOfDaysContext = _getNumberOfDaysContext(numberOfDays);\n\n return createRangeTimestampsFactory(\n {\n from: ({ now, systemToTimezone, timezoneToSystem }) => {\n const date = new Date(now);\n const restampedDate = new Date(timezoneToSystem(now));\n const dateDiff = (date.getDate() - restampedDate.getDate()) as -1 | 1 | 0;\n\n let dateOffset = numberOfDaysContext.value - 1;\n\n if (dateDiff) {\n // Correction for difference between first (1) and last (28, 29, 30, 31) day of month\n dateOffset += dateDiff > 1 ? -1 : dateDiff < -1 ? 1 : dateDiff;\n }\n\n startOfDay(date);\n date.setDate(date.getDate() - dateOffset);\n return systemToTimezone(date);\n },\n to: nowTimestamp,\n },\n { numberOfDays: numberOfDaysContext.descriptor }\n )();\n};\n\nexport default lastNDays;\n","import offsetWeek from './shared/offsetWeek';\nconst lastWeek = offsetWeek(1);\nexport default lastWeek;\n","import offsetMonth from './shared/offsetMonth';\nconst thisMonth = offsetMonth(0);\nexport default thisMonth;\n","import offsetWeek from './shared/offsetWeek';\nconst thisWeek = offsetWeek(0);\nexport default thisWeek;\n","import createRangeTimestampsFactory from '../factory';\nimport { nowTimestamp, startOfYear } from '../utils';\n\nconst yearToDate = createRangeTimestampsFactory({\n from: ({ now, systemToTimezone, timezoneToSystem }) => {\n const date = new Date(now);\n const restampedDate = new Date(timezoneToSystem(now));\n const yearOffset = (date.getFullYear() - restampedDate.getFullYear()) as -1 | 1 | 0;\n\n startOfYear(date);\n date.setFullYear(date.getFullYear() - yearOffset);\n return systemToTimezone(date);\n },\n to: nowTimestamp,\n});\n\nexport default yearToDate;\n","import { useCallback, useMemo, useRef, useState } from 'preact/hooks';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport type { RestampContext } from '@src/core/Localization/datetime/restamper';\nimport type { TranslationKey } from '@src/core/Localization/types';\nimport { RangeTimestamp, RangeTimestamps } from '@src/components/internal/Calendar/calendar/timerange';\nimport * as RangePreset from '@src/components/internal/Calendar/calendar/timerange/presets';\n\nexport type UseTimeRangeSelectionConfig = {\n now?: RangeTimestamp;\n options: Readonly<Partial<{ [P in TranslationKey]: RangeTimestamps }>>;\n selectedOption?: string;\n timezone?: RestampContext['TIMEZONE'];\n};\n\nexport type UseTimeRangeSelectionData = ReturnType<typeof useTimeRangeSelection>;\n\nexport const getTimeRangeSelectionDefaultPresetOptions = () =>\n Object.freeze({\n 'rangePreset.last7Days': RangePreset.lastNDays(7),\n 'rangePreset.thisWeek': RangePreset.thisWeek(),\n 'rangePreset.lastWeek': RangePreset.lastWeek(),\n 'rangePreset.thisMonth': RangePreset.thisMonth(),\n 'rangePreset.lastMonth': RangePreset.lastMonth(),\n 'rangePreset.yearToDate': RangePreset.yearToDate(),\n } as const);\n\nexport const useTimeRangeSelection = ({\n now = Date.now(),\n options: presetOptions,\n selectedOption: selectedPresetOption,\n timezone,\n}: UseTimeRangeSelectionConfig) => {\n const { i18n } = useCoreContext();\n const [from, setFrom] = useState<string>();\n const [to, setTo] = useState<string>();\n const [selectedOption, setSelectedOption] = useState<string>();\n const NOW = useRef<typeof now>();\n const TZ = useRef<typeof timezone>();\n\n const [customOption, getRangesForOption, selectionOptions] = useMemo(() => {\n const customOption = i18n.get('rangePreset.custom');\n const optionKeys = Object.keys(presetOptions);\n const selectionOptions = Object.freeze(optionKeys.map(key => i18n.get(key as TranslationKey)));\n\n const getRangesForOption = (option: string, options: readonly string[] = selectionOptions) => {\n const optionIndex = options.findIndex(currentOption => currentOption === option);\n return presetOptions[optionKeys[optionIndex] as keyof typeof presetOptions];\n };\n\n return [customOption, getRangesForOption, selectionOptions] as const;\n }, [i18n, presetOptions]);\n\n const [isCustomSelection, setIsCustomSelection] = useState(selectedPresetOption === customOption);\n const selectionOptionsWithCustomOption = useMemo(() => Object.freeze([...selectionOptions, customOption]), [customOption, selectionOptions]);\n\n const options = useMemo(\n () => (isCustomSelection ? selectionOptionsWithCustomOption : selectionOptions),\n [isCustomSelection, selectionOptions, selectionOptionsWithCustomOption]\n );\n\n const onSelection = useCallback(\n (option: string) => {\n const ranges = getRangesForOption(option, selectionOptions);\n if (!ranges) return;\n\n setFrom(i18n.fullDate(ranges.from));\n setTo(i18n.fullDate(ranges.to));\n setIsCustomSelection(false);\n setSelectedOption(option);\n },\n [i18n, customOption, getRangesForOption, selectedOption, selectionOptions]\n );\n\n const customSelection = useCallback(() => {\n setFrom(undefined);\n setTo(undefined);\n setIsCustomSelection(true);\n setSelectedOption(customOption);\n }, [customOption]);\n\n useMemo(() => {\n selectedPresetOption === customOption ? setSelectedOption(customOption) : onSelection(selectedPresetOption!);\n }, []);\n\n useMemo(() => {\n if (NOW.current !== now || TZ.current !== timezone) {\n const options = Object.values(presetOptions);\n\n options.forEach(ranges => {\n ranges.now = now;\n ranges.timezone = timezone;\n });\n\n NOW.current = now;\n TZ.current = options[0]?.timezone;\n\n onSelection(selectedOption!);\n }\n }, [now, timezone, presetOptions]);\n\n return {\n customSelection,\n from,\n onSelection,\n options,\n selectedOption,\n to,\n } as const;\n};\n\nexport default useTimeRangeSelection;\n","import { useCallback, useEffect, useMemo, useRef } from 'preact/hooks';\nimport Select from '@src/components/internal/FormFields/Select';\nimport { SelectItem } from '@src/components/internal/FormFields/Select/types';\nimport { useTimeRangeSelection, UseTimeRangeSelectionConfig } from './useTimeRangeSelection';\n\nconst TimeRangeSelector = ({\n calendarRef,\n onTimeRangeSelected,\n timestamp,\n ...useTimeRangeSelectionConfig\n}: UseTimeRangeSelectionConfig & {\n calendarRef?: any;\n onTimeRangeSelected?: (option: string) => any;\n timestamp: DOMHighResTimeStamp;\n}) => {\n const { customSelection, from, onSelection, options, selectedOption, to } = useTimeRangeSelection(useTimeRangeSelectionConfig);\n const selectOptions = useMemo(() => Object.freeze(options.map(id => ({ id, name: id } as SelectItem))), [options]);\n const onSelectedOptionChanged = useCallback(({ target }: any) => onSelection(target?.value), [onSelection]);\n const rangeSelectionInProgress = useRef(true);\n const cachedTimestamp = useRef(timestamp);\n\n useEffect(() => {\n if (calendarRef?.current && from && to) {\n rangeSelectionInProgress.current = true;\n calendarRef.current.from = new Date(from as string);\n calendarRef.current.to = new Date(to as string);\n }\n }, [calendarRef, from, to]);\n\n useEffect(() => {\n if (cachedTimestamp.current !== timestamp) {\n cachedTimestamp.current = timestamp;\n\n if (rangeSelectionInProgress.current) {\n rangeSelectionInProgress.current = false;\n } else customSelection();\n }\n }, [customSelection, timestamp]);\n\n useEffect(() => {\n selectedOption && onTimeRangeSelected?.(selectedOption);\n }, [selectedOption, onTimeRangeSelected]);\n\n return (\n <Select\n setToTargetWidth={true}\n items={selectOptions}\n filterable={false}\n multiSelect={false}\n onChange={onSelectedOptionChanged}\n selected={selectedOption}\n />\n );\n};\n\nexport default TimeRangeSelector;\n","import { parseClassName } from '@src/utils/class-name-utils';\nimport classnames from 'classnames';\nimport { JSX } from 'preact';\nimport { EMPTY_OBJECT, toString } from '@src/utils/common';\n\ntype PropertyDescriptor<T = any> = {\n configurable?: boolean;\n enumerable?: boolean;\n value?: T;\n writable?: boolean;\n get?(): T | undefined;\n set?(v?: T): void;\n};\n\ntype PropertyFactory = {\n <T = any>(setter?: false | ((value?: T) => T | undefined), value?: T): PropertyDescriptor<T>;\n is: (value: any) => value is PropertyDescriptor;\n isObject: (value: any) => value is Record<any, any>;\n immutable: <T = any>(value?: T) => PropertyDescriptor<T>;\n mutable: <T = any>(value?: T) => PropertyDescriptor<T>;\n restricted: () => PropertyDescriptor<undefined>;\n};\n\nexport const property = (() => {\n const descriptor = <T>(descriptor: PropertyDescriptor<T>) =>\n Object.freeze(\n Object.create(EMPTY_OBJECT, Object.fromEntries(Object.entries(descriptor).map(([field, value]) => [field, { value }])))\n ) as PropertyDescriptor<T>;\n\n const isPropDescriptor = (value: any): value is PropertyDescriptor => {\n try {\n return Object.getPrototypeOf(value) === EMPTY_OBJECT;\n } catch {\n return false;\n }\n };\n\n const prop = <T = any>(setter?: false | ((value?: T) => T | undefined), value?: T) => {\n if (!setter)\n return descriptor({\n enumerable: true,\n writable: setter !== false,\n value,\n });\n\n let currentValue = value;\n\n return descriptor({\n enumerable: true,\n get: () => currentValue,\n set: (value?: T) => {\n currentValue = setter(value);\n },\n });\n };\n\n return Object.defineProperties(prop, {\n is: { value: isPropDescriptor },\n isObject: { value: (value: any): value is Record<any, any> => toString(value).slice(8, -1) === 'Object' },\n immutable: { value: <T = any>(value?: T) => prop(false, value) },\n mutable: { value: <T = any>(value?: T) => prop(undefined, value) },\n restricted: { value: () => prop<undefined>(false) },\n }) as PropertyFactory;\n})();\n\nexport const propsProperty = (() => {\n type UnwrappedProps<T extends Record<string, any>> = {\n [K in keyof T]:\n | (T[K] extends PropertyDescriptor<infer U> ? (U extends Record<string, any> ? UnwrappedProps<U> : U) : T[K])\n | PropertyDescriptor<T[K]>;\n } & Record<string, any>;\n\n const propsProperty = <T extends Record<string, any> = {}>(props = {} as UnwrappedProps<T>, deepImmutable = false) => {\n const $props = Object.create(null) as UnwrappedProps<T>;\n\n for (const [prop, maybeDescriptor] of Object.entries<UnwrappedProps<T>[keyof T]>(props)) {\n try {\n const isDescriptor = property.is(maybeDescriptor);\n const isPlainObject = property.isObject(maybeDescriptor);\n\n if (isDescriptor || isPlainObject) {\n Object.defineProperty($props, prop, isDescriptor ? maybeDescriptor : propsProperty(maybeDescriptor, deepImmutable));\n continue;\n } else if (deepImmutable) {\n Object.defineProperty($props, prop, property.immutable(maybeDescriptor));\n continue;\n }\n } catch {\n /* no empty catch block */\n }\n\n $props[prop as keyof T] = maybeDescriptor;\n }\n\n return property((props = {} as UnwrappedProps<T>) => Object.assign($props, props), $props);\n };\n\n const unwrapped = <T extends Record<string, any> = {}>(props = {} as UnwrappedProps<T>, deepImmutable = false) => {\n const P = propsProperty(props, deepImmutable);\n return Object.create(null, { P }).P as T;\n };\n\n return Object.defineProperties(propsProperty, {\n unwrapped: { value: unwrapped },\n }) as {\n <T extends Record<string, any> = {}>(props?: UnwrappedProps<T>, deepImmutable?: boolean): PropertyDescriptor<UnwrappedProps<T>>;\n unwrapped: <T extends Record<string, any> = {}>(props?: UnwrappedProps<T>, deepImmutable?: boolean) => T;\n };\n})();\n","import { VNode } from 'preact';\nimport {\n CalendarConfig,\n CalendarGridControlRecord,\n CalendarSelection,\n CalendarShiftControls,\n FirstWeekDay,\n Time,\n TimeFrameSize,\n} from './calendar/types';\n\nexport const enum CalendarGridRenderToken {\n DATE,\n DAY_OF_WEEK,\n MONTH_HEADER,\n}\n\nexport interface CalendarGridCursorRootProps {\n onClickCapture: (evt: Event) => void;\n onMouseOverCapture: (evt: Event) => void;\n onPointerOverCapture: (evt: Event) => void;\n onKeyDownCapture: (evt: KeyboardEvent) => void;\n}\n\nexport interface CalendarHandle {\n clear: () => void;\n config: CalendarConfig;\n from?: Date;\n to?: Date;\n}\n\nexport interface CalendarProps {\n blocks?: TimeFrameSize;\n controls?: CalendarShiftControls;\n dynamicBlockRows?: boolean;\n firstWeekDay?: FirstWeekDay;\n highlight?: CalendarSelection | string;\n locale?: string;\n onHighlight?: (from?: number, to?: number) => any;\n onlyCellsWithin?: boolean;\n originDate?: Time | Time[];\n prepare?: (renderToken: CalendarGridRenderToken, renderContext: any) => any;\n renderControl?: (...args: CalendarGridControlRecord) => VNode | null;\n sinceDate?: Time;\n trackCurrentDay?: boolean;\n untilDate?: Time;\n useYearView?: boolean;\n}\n\nexport type CalendarRenderControl = Exclude<CalendarProps['renderControl'], undefined>;\nexport type CalendarControlRenderer = (targetElement: Element, ...args: CalendarGridControlRecord) => ReturnType<CalendarRenderControl>;\n","import { identity, isFunction, noop, sameValue } from '@src/utils/common';\nimport { MemoComparator, MemoComparatorGetters, MemoComparatorProp } from './types';\n\nconst memoComparator = (() => {\n const _comparedProps = new Set<string>();\n\n const _propHasChanged = <T = {}>(prev: T, next: T, prop: MemoComparatorProp<T>, getters?: MemoComparatorGetters<T>) => {\n let getter = getters?.[prop];\n getter = isFunction(getter) ? getter : identity;\n return !sameValue(getter(prev[prop]), getter(next[prop]));\n };\n\n const comparator = (<T = {}>(getters?: MemoComparatorGetters<T>) =>\n (prev: T, next: T) => {\n try {\n for (const prop in prev) {\n _comparedProps.add(prop);\n if (_propHasChanged(prev, next, prop, getters)) return false;\n }\n\n for (const prop in next) {\n if (_comparedProps.has(prop)) continue;\n _comparedProps.add(prop);\n if (_propHasChanged(prev, next, prop, getters)) return false;\n }\n\n return true;\n } finally {\n _comparedProps.clear();\n }\n }) as MemoComparator;\n\n return Object.defineProperty(comparator, 'exclude', { value: noop });\n})();\n\nexport default memoComparator;\n","import { getClassName } from '@src/utils/class-name-utils';\nimport { forwardRef, memo } from 'preact/compat';\nimport { CalendarGridDateProps, CalendarGridDateRenderProps } from './types';\nimport { property, propsProperty } from './utils';\nimport { EMPTY_OBJECT } from '@src/utils/common/constants';\nimport { CalendarGridRenderToken } from '../../types';\nimport memoComparator from '@src/utils/memoComparator';\n\nconst DEFAULT_DATE_CELL_CLASSNAME = 'adyen-pe-calendar__cell adyen-pe-calendar__cell--date';\nconst DEFAULT_DATE_TIME_CLASSNAME = 'adyen-pe-calendar__date';\n\nconst getGridDateRenderProps = (computedProps = EMPTY_OBJECT as any, prepare?: CalendarGridDateProps['prepare']) => {\n const renderProps = propsProperty.unwrapped<CalendarGridDateRenderProps>(\n {\n childClassName: property.mutable(DEFAULT_DATE_TIME_CLASSNAME),\n childProps: {\n children: property.restricted(),\n className: '',\n },\n className: property.mutable(DEFAULT_DATE_CELL_CLASSNAME),\n props: {\n ...computedProps,\n children: property.restricted(),\n className: '',\n },\n },\n true\n );\n\n prepare?.(CalendarGridRenderToken.DATE, renderProps);\n return renderProps;\n};\n\nconst CalendarGridDate = forwardRef(({ grid, prepare, datetime, flags, index, label, onlyCellsWithin }: CalendarGridDateProps, cursorElementRef) => {\n const withinMonth = flags.WITHIN_BLOCK;\n\n const props = {\n 'data-cursor-position': index,\n 'data-within-month': withinMonth,\n tabIndex: -1,\n } as any;\n\n if (withinMonth) {\n const withinRange = flags.WITHIN_RANGE;\n\n props['data-today'] = flags.CURRENT;\n props['data-first-week-day'] = flags.LINE_START;\n props['data-last-week-day'] = flags.LINE_END;\n props['data-weekend'] = flags.WEEKEND;\n props['data-first-month-day'] = flags.BLOCK_START;\n props['data-last-month-day'] = flags.BLOCK_END;\n\n props['data-within-range'] = withinRange;\n\n if (withinRange) {\n props['data-range-end'] = flags.RANGE_END;\n props['data-range-start'] = flags.RANGE_START;\n props['data-selection-end'] = flags.SELECTION_END;\n props['data-selection-start'] = flags.SELECTION_START;\n props['data-within-selection'] = flags.WITHIN_SELECTION;\n props['aria-selected'] = `${!!(flags.SELECTION_END || flags.SELECTION_START || flags.WITHIN_SELECTION)}`;\n }\n\n if (index === +grid.cursor) props.ref = cursorElementRef;\n }\n\n const renderProps = getGridDateRenderProps(props, prepare);\n const { children: _, className, ...extendedProps } = renderProps.props || EMPTY_OBJECT;\n const classes = getClassName(renderProps.className, DEFAULT_DATE_CELL_CLASSNAME, className);\n\n return (\n <td {...extendedProps} {...props} className={classes}>\n {(!onlyCellsWithin || withinMonth) &&\n (() => {\n const { children: _, className, ...extendedProps } = renderProps.childProps || EMPTY_OBJECT;\n const classes = getClassName(renderProps.childClassName, DEFAULT_DATE_TIME_CLASSNAME, className);\n return (\n <time {...extendedProps} className={classes} dateTime={datetime}>\n {label}\n </time>\n );\n })()}\n </td>\n );\n});\n\nexport default memo(\n CalendarGridDate,\n memoComparator({\n block: memoComparator.exclude,\n flags: value => +(value as number),\n })\n);\n","import { getClassName } from '@src/utils/class-name-utils';\nimport { memo } from 'preact/compat';\nimport { CalendarGridDayOfWeekProps, CalendarGridDayOfWeekRenderProps } from './types';\nimport { property, propsProperty } from './utils';\nimport { EMPTY_OBJECT } from '@src/utils/common/constants';\nimport { CalendarGridRenderToken } from '../../types';\nimport memoComparator from '@src/utils/memoComparator';\n\nconst DEFAULT_CELL_CLASSNAME = 'adyen-pe-calendar__cell adyen-pe-calendar__cell--day-of-week';\nconst DEFAULT_CELL_ABBR_CLASSNAME = 'adyen-pe-calendar__day-of-week';\n\nconst getGridDayOfWeekRenderProps = (computedProps = EMPTY_OBJECT as any, prepare?: CalendarGridDayOfWeekProps['prepare']) => {\n const renderProps = propsProperty.unwrapped<CalendarGridDayOfWeekRenderProps>(\n {\n childClassName: property.mutable(DEFAULT_CELL_ABBR_CLASSNAME),\n childProps: {\n children: property.restricted(),\n className: '',\n },\n className: property.mutable(DEFAULT_CELL_CLASSNAME),\n props: {\n ...computedProps,\n children: property.restricted(),\n className: '',\n },\n },\n true\n );\n\n prepare?.(CalendarGridRenderToken.DAY_OF_WEEK, renderProps);\n return renderProps;\n};\n\nconst CalendarGridDayOfWeek = ({ prepare, flags, labels: { long: longLabel, short: shortLabel } }: CalendarGridDayOfWeekProps) => {\n const props = {\n 'aria-label': longLabel,\n 'data-first-week-day': flags.LINE_START,\n 'data-last-week-day': flags.LINE_END,\n 'data-weekend': flags.WEEKEND,\n scope: 'col',\n };\n\n const renderProps = getGridDayOfWeekRenderProps(props, prepare);\n const { children: _, className, ...extendedProps } = renderProps.props || EMPTY_OBJECT;\n const classes = getClassName(renderProps.className, DEFAULT_CELL_CLASSNAME, className);\n\n const { children: __, className: childClassName, ...extendedChildProps } = renderProps.childProps || EMPTY_OBJECT;\n const childClasses = getClassName(renderProps.childClassName, DEFAULT_CELL_ABBR_CLASSNAME, childClassName);\n\n return (\n <th {...extendedProps} {...props} className={classes}>\n <abbr {...extendedChildProps} className={childClasses}>\n {shortLabel}\n </abbr>\n </th>\n );\n};\n\nexport default memo(\n CalendarGridDayOfWeek,\n memoComparator({\n block: memoComparator.exclude,\n flags: value => +(value as number),\n })\n);\n","import { forwardRef, memo } from 'preact/compat';\nimport { CalendarGridProps } from './types';\nimport CalendarGridDate from './CalendarGridDate';\nimport CalendarGridDayOfWeek from './CalendarGridDayOfWeek';\nimport '../../Calendar.scss';\n\nconst CalendarGrid = forwardRef(({ cursorRootProps, onlyCellsWithin, prepare, grid }: CalendarGridProps, cursorElementRef) => (\n <ol className={'adyen-pe-calendar'} role=\"none\" {...cursorRootProps}>\n {grid.map(block => (\n <li key={block.datetime} className={'adyen-pe-calendar__month'} role=\"none\">\n <div className={'adyen-pe-calendar__month-name'} role=\"none\">\n <time dateTime={block.datetime} aria-hidden=\"true\">\n {block.label}\n </time>\n </div>\n\n <table\n role=\"grid\"\n aria-multiselectable={true}\n aria-label={`${block.label} calendar`}\n className={'adyen-pe-calendar__grid'}\n style={{ '--adyen-pe-calendar-rowspan': grid.rowspan }}\n >\n <thead>\n <tr className={'adyen-pe-calendar__row'}>\n {grid.weekdays.map((data, index) => (\n <CalendarGridDayOfWeek key={data.labels['long']} grid={grid} block={block} prepare={prepare} cell={index} {...data} />\n ))}\n </tr>\n </thead>\n <tbody>\n {block.map((row, rowindex) => (\n <tr key={`${block.month}:${rowindex}`} className={'adyen-pe-calendar__row'}>\n {row.map((data, index) => (\n <CalendarGridDate\n key={`${block.month}:${data.timestamp}`}\n ref={cursorElementRef}\n grid={grid}\n block={block}\n prepare={prepare}\n cell={index}\n onlyCellsWithin={onlyCellsWithin}\n row={rowindex}\n {...data}\n />\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </li>\n ))}\n </ol>\n));\n\nexport default memo(CalendarGrid);\n","export const DAY_MS = 86400000 as const;\nexport const DAY_OF_WEEK_FORMATS = ['narrow', 'short', 'long'] as const;\nexport const FIRST_WEEK_DAYS = [0, 1, 6] as const;\nexport const FRAME_SIZES = [1, 2, 3, 4, 6, 12] as const;\nexport const MAXIMUM_MONTH_UNITS = 42 as const;\nexport const WEEKEND_DAYS_SEED = [0, 1] as const;\nexport const YEAR_MONTHS = 12 as const;\nexport const CONTROLS_ALL: unique symbol = Symbol();\nexport const CONTROLS_MINIMAL: unique symbol = Symbol();\nexport const CONTROLS_NONE: unique symbol = Symbol();\nexport const CALENDAR_CONTROLS = [CONTROLS_NONE, CONTROLS_MINIMAL, CONTROLS_ALL] as const;\nexport const SELECT_MANY: unique symbol = Symbol();\nexport const SELECT_NONE: unique symbol = Symbol();\nexport const SELECT_ONE: unique symbol = Symbol();\nexport const CALENDAR_SELECTIONS = [SELECT_NONE, SELECT_ONE, SELECT_MANY] as const;\nexport const CURSOR_BACKWARD: unique symbol = Symbol();\nexport const CURSOR_BLOCK_END: unique symbol = Symbol();\nexport const CURSOR_BLOCK_START: unique symbol = Symbol();\nexport const CURSOR_DOWNWARD: unique symbol = Symbol();\nexport const CURSOR_FORWARD: unique symbol = Symbol();\nexport const CURSOR_LINE_END: unique symbol = Symbol();\nexport const CURSOR_LINE_START: unique symbol = Symbol();\nexport const CURSOR_NEXT_BLOCK: unique symbol = Symbol();\nexport const CURSOR_PREV_BLOCK: unique symbol = Symbol();\nexport const CURSOR_UPWARD: unique symbol = Symbol();\nexport const RANGE_FROM: unique symbol = Symbol();\nexport const RANGE_TO: unique symbol = Symbol();\nexport const SELECTION_COLLAPSE: unique symbol = Symbol();\nexport const SELECTION_FARTHEST: unique symbol = Symbol();\nexport const SELECTION_FROM: unique symbol = Symbol();\nexport const SELECTION_NEAREST: unique symbol = Symbol();\nexport const SELECTION_TO: unique symbol = Symbol();\nexport const SHIFT_BLOCK: unique symbol = Symbol();\nexport const SHIFT_FRAME: unique symbol = Symbol();\nexport const SHIFT_PERIOD: unique symbol = Symbol();\n","import { Indexed, IndexedMapIteratorCallback, IndexedMapIteratorFactory } from './types';\nimport { isFunction, isNumber, struct, structFrom } from '@src/utils/common';\nimport { $true } from '@src/utils/common/constants';\nimport { isString } from '@src/utils/validator-utils';\n\nconst indexed = (() => {\n const mapIteratorFactory: IndexedMapIteratorFactory = function* (callback = (x: any) => x, thisArg: any) {\n for (let i = 0; i < this.length; i++) {\n yield callback.call(thisArg, this[i], i, this);\n }\n };\n\n const IterablePrototype = Object.freeze(\n struct({\n [Symbol.iterator]: {\n value(this: Indexed) {\n return mapIteratorFactory.call(this);\n },\n },\n map: {\n value(this: Indexed, callback?: IndexedMapIteratorCallback, thisArg?: any) {\n return [...mapIteratorFactory.call(this, callback, thisArg)];\n },\n },\n })\n );\n\n const ProxyGetTrap =\n <V>(getter: (index: number) => V) =>\n (target: Indexed<V>, property: string | symbol, receiver: any) => {\n if (isString(property)) {\n const index = +property;\n if (index >= 0 && index < target.length) {\n return getter(index);\n }\n }\n return Reflect.get(target, property, receiver);\n };\n\n return <V, T = {}>(\n iterablePropertyDescriptorsOrSize: PropertyDescriptorMap | (() => number) | number,\n iteratorValueGetter: (index: number) => V\n ): Indexed<V> & T => {\n if (isFunction(iterablePropertyDescriptorsOrSize)) {\n return indexed<V, T>(\n {\n length: { get: iterablePropertyDescriptorsOrSize },\n },\n iteratorValueGetter\n );\n }\n\n if (isNumber(iterablePropertyDescriptorsOrSize)) {\n return indexed<V, T>(\n {\n length: { value: iterablePropertyDescriptorsOrSize },\n },\n iteratorValueGetter\n );\n }\n\n return new Proxy(structFrom(IterablePrototype, iterablePropertyDescriptorsOrSize), {\n get: ProxyGetTrap(iteratorValueGetter),\n set: $true,\n }) as Indexed<V> & T;\n };\n})();\n\nexport default indexed;\n","import { FRAME_SIZES, WEEKEND_DAYS_SEED } from '../../constants';\nimport { FirstWeekDay, TimeFrameSize, WeekDay } from '../../types';\nimport { mod } from '@src/utils/common';\n\nexport const downsizeTimeFrame = (size: TimeFrameSize, maxsize: number): TimeFrameSize => {\n if (maxsize >= size) return size;\n let i = Math.max(1, FRAME_SIZES.indexOf(size));\n while (--i && maxsize < (FRAME_SIZES[i] as TimeFrameSize)) {}\n return FRAME_SIZES[i] as TimeFrameSize;\n};\n\nexport const resolveTimeFrameBlockSize = (size: TimeFrameSize) => FRAME_SIZES[Math.max(FRAME_SIZES.indexOf(size), 0)];\n\nexport const getWeekendDays = (firstWeekDay: FirstWeekDay = 0) =>\n // [TODO]: Derive weekend days based on locale\n Object.freeze(WEEKEND_DAYS_SEED.map(seed => mod(6 - firstWeekDay + seed, 7)) as [WeekDay, WeekDay]);\n","import { Month, MonthDays, Time } from './types';\nimport { isInfinite, mod } from '@src/utils/common';\n\nexport const computeTimestampOffset = (timestamp: number) => (isInfinite(timestamp) ? 0 : timestamp - new Date(timestamp).setHours(0, 0, 0, 0));\nexport const getDateObjectFromTimestamp = (timestamp?: number) => (timestamp === undefined ? timestamp : new Date(timestamp));\n\nexport const getEdgesDistance = (fromTime: Time, toTime: Time) => {\n if (isInfinite(fromTime) || isInfinite(toTime)) return Infinity;\n const from = new Date(fromTime);\n const to = new Date(toTime);\n return Math.abs(to.getMonth() - from.getMonth() + (to.getFullYear() - from.getFullYear()) * 12);\n};\n\nexport const getMonthDays = (() => {\n const DAYS = [31, [29, 28] as const, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] as const;\n\n return (month: Month, year: number, offset = 0) => {\n const nextMonth = month + offset;\n const monthIndex = mod(nextMonth, 12) as Month;\n const nextYear = year + Math.floor(nextMonth / 12);\n const days = monthIndex === 1 ? DAYS[1][(nextYear % 100 ? nextYear % 4 : nextYear % 400) && 1] : DAYS[monthIndex];\n\n return [days as MonthDays, monthIndex, nextYear] as const;\n };\n})();\n","import { RANGE_FROM, RANGE_TO } from '../constants';\nimport { Time, TimeFrameRangeEdge } from '../types';\nimport { computeTimestampOffset, getEdgesDistance } from '../utils';\n\nexport default class __TimeSlice__ {\n readonly #numberOfMonths: number = Infinity;\n readonly #endTimestamp: number = Infinity;\n readonly #startTimestamp: number = -Infinity;\n readonly #endTimestampOffset: number = 0;\n readonly #startTimestampOffset: number = 0;\n\n constructor(fromTime?: Time, toTime?: Time);\n constructor(time?: Time, timeEdge?: TimeFrameRangeEdge);\n constructor(...args: any[]) {\n if (args.length >= 2) {\n let timestamp = new Date(args[0]).getTime();\n\n if (typeof args[1] !== 'symbol') {\n this.#startTimestamp = timestamp || this.#startTimestamp;\n this.#endTimestamp = new Date(args[1]).getTime() || this.#endTimestamp;\n\n if (this.#endTimestamp < this.#startTimestamp) {\n [this.#endTimestamp, this.#startTimestamp] = [this.#startTimestamp, this.#endTimestamp];\n }\n\n this.#startTimestampOffset = computeTimestampOffset(this.#startTimestamp);\n this.#endTimestampOffset = computeTimestampOffset(this.#endTimestamp);\n this.#numberOfMonths = getEdgesDistance(this.#startTimestamp, this.#endTimestamp) + 1;\n } else if (!isNaN(timestamp)) {\n switch (args[1]) {\n case RANGE_TO:\n this.#endTimestamp = timestamp;\n this.#endTimestampOffset = computeTimestampOffset(this.#endTimestamp);\n break;\n\n case RANGE_FROM:\n default:\n this.#startTimestamp = timestamp;\n this.#startTimestampOffset = computeTimestampOffset(this.#startTimestamp);\n break;\n }\n }\n }\n }\n\n get numberOfMonths() {\n return this.#numberOfMonths;\n }\n\n get endTimestamp() {\n return this.#endTimestamp;\n }\n\n get endTimestampOffset() {\n return this.#endTimestampOffset;\n }\n\n get startTimestamp() {\n return this.#startTimestamp;\n }\n\n get startTimestampOffset() {\n return this.#startTimestampOffset;\n }\n}\n","import __TimeSlice__ from './TimeSlice';\nimport { RANGE_FROM, RANGE_TO } from '../constants';\nimport { TimeSlice, TimeSliceFactory } from '../types';\nimport { struct } from '@src/utils/common';\n\nconst factory = ((...args: any[]) => {\n const slice = new __TimeSlice__(...args);\n\n return struct({\n from: { value: slice.startTimestamp },\n to: { value: slice.endTimestamp },\n offsets: {\n value: struct({\n from: { value: slice.startTimestampOffset },\n to: { value: slice.endTimestampOffset },\n }),\n },\n span: { value: slice.numberOfMonths },\n }) as TimeSlice;\n}) as TimeSliceFactory;\n\nexport const UNBOUNDED_SLICE = factory();\nexport const sinceNow = () => factory(Date.now(), RANGE_FROM);\nexport const untilNow = () => factory(Date.now(), RANGE_TO);\n\nexport default ((...args: any[]) => (args.length === 0 ? UNBOUNDED_SLICE : factory(...args))) as TimeSliceFactory;\n","import {\n CONTROLS_ALL,\n CONTROLS_MINIMAL,\n CONTROLS_NONE,\n CURSOR_BACKWARD,\n CURSOR_BLOCK_END,\n CURSOR_BLOCK_START,\n CURSOR_DOWNWARD,\n CURSOR_FORWARD,\n CURSOR_LINE_END,\n CURSOR_LINE_START,\n CURSOR_NEXT_BLOCK,\n CURSOR_PREV_BLOCK,\n CURSOR_UPWARD,\n DAY_OF_WEEK_FORMATS,\n FIRST_WEEK_DAYS,\n FRAME_SIZES,\n RANGE_FROM,\n RANGE_TO,\n SHIFT_BLOCK,\n SHIFT_FRAME,\n SHIFT_PERIOD,\n SELECT_MANY,\n SELECT_NONE,\n SELECT_ONE,\n SELECTION_COLLAPSE,\n SELECTION_FARTHEST,\n SELECTION_FROM,\n SELECTION_NEAREST,\n SELECTION_TO,\n CALENDAR_CONTROLS,\n CALENDAR_SELECTIONS,\n} from './constants';\nimport { Indexed } from './shared/indexed/types';\nimport { WatchCallable } from '@src/utils/watchable/types';\n\nexport type WithGetSetProperty<T = any> = {\n get _(): T;\n set _($: T);\n};\n\n// export type WithGetSetProperties<K extends string, T = any> = {\n// [P in K]: WithGetSetProperty<T, X>['_'];\n// };\n\nexport type WithTimeEdges<T = {}> = {\n from: T;\n to: T;\n};\n\nexport type DayOfWeekLabelFormat = (typeof DAY_OF_WEEK_FORMATS)[number];\nexport type FirstWeekDay = (typeof FIRST_WEEK_DAYS)[number];\nexport type WeekDay = FirstWeekDay | 2 | 3 | 4 | 5;\nexport type Month = WeekDay | 7 | 8 | 9 | 10 | 11;\nexport type MonthDays = 28 | 29 | 30 | 31;\nexport type Time = Date | number | string;\n\nexport enum TimeFlag {\n CURRENT = 0x1,\n CURSOR = 0x2,\n WEEKEND = 0x4,\n LINE_START = 0x8,\n LINE_END = 0x10,\n WITHIN_BLOCK = 0x20,\n BLOCK_START = 0x40,\n BLOCK_END = 0x80,\n WITHIN_RANGE = 0x100,\n RANGE_START = 0x200,\n RANGE_END = 0x400,\n WITHIN_SELECTION = 0x800,\n SELECTION_START = 0x1000,\n SELECTION_END = 0x2000,\n ALL = 0x3fff,\n}\n\nexport type TimeFlagProp = Exclude<keyof typeof TimeFlag, 'ALL'>;\n\nexport type TimeFrameCursor =\n | typeof CURSOR_BACKWARD\n | typeof CURSOR_BLOCK_END\n | typeof CURSOR_BLOCK_START\n | typeof CURSOR_DOWNWARD\n | typeof CURSOR_FORWARD\n | typeof CURSOR_LINE_END\n | typeof CURSOR_LINE_START\n | typeof CURSOR_NEXT_BLOCK\n | typeof CURSOR_PREV_BLOCK\n | typeof CURSOR_UPWARD;\n\nexport type TimeFrameSelection =\n | typeof SELECTION_COLLAPSE\n | typeof SELECTION_FARTHEST\n | typeof SELECTION_FROM\n | typeof SELECTION_NEAREST\n | typeof SELECTION_TO;\n\nexport type TimeFrameRangeEdge = typeof RANGE_FROM | typeof RANGE_TO;\nexport type TimeFrameShift = typeof SHIFT_BLOCK | typeof SHIFT_FRAME | typeof SHIFT_PERIOD;\nexport type TimeFrameSize = (typeof FRAME_SIZES)[number];\n\ntype TimeFrameBlockMetrics<T extends string> = {\n [K in T]: Readonly<WithTimeEdges<number>> & { readonly units: number };\n};\n\nexport type TimeFrameBlock = TimeFrameBlockMetrics<'inner' | 'outer'> &\n Readonly<{\n [K: number]: readonly [number, number];\n month: Month;\n year: number;\n }>;\n\nexport type TimeSlice = Readonly<WithTimeEdges<number>> &\n Readonly<{\n offsets: Readonly<WithTimeEdges<number>>;\n span: number;\n }>;\n\nexport type TimeSliceFactory = {\n (fromTime?: Time, toTime?: Time): TimeSlice;\n (time?: Time, timeEdge?: TimeFrameRangeEdge): TimeSlice;\n};\n\nexport const enum CalendarShiftControlFlag {\n PREV = 0x1,\n BLOCK = 0x0,\n FRAME = 0x2,\n PERIOD = 0x4,\n}\n\nexport enum CalendarShiftControlsFlag {\n PREV_PERIOD = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.PERIOD,\n PREV_FRAME = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.FRAME,\n PREV = CalendarShiftControlFlag.PREV | CalendarShiftControlFlag.BLOCK,\n NEXT = CalendarShiftControlFlag.BLOCK,\n NEXT_FRAME = CalendarShiftControlFlag.FRAME,\n NEXT_PERIOD = CalendarShiftControlFlag.PERIOD,\n}\n\nexport type CalendarShiftControl = keyof typeof CalendarShiftControlsFlag;\nexport type CalendarShiftControls = (typeof CALENDAR_CONTROLS)[number];\nexport type CalendarSelection = (typeof CALENDAR_SELECTIONS)[number];\n\nexport type CalendarConfig = {\n blocks?: TimeFrameSize;\n controls?: CalendarShiftControls;\n firstWeekDay?: FirstWeekDay;\n fixedBlockHeight?: boolean;\n highlight?: CalendarSelection | string;\n locale?: string;\n minified?: boolean;\n timeslice?: TimeSlice;\n trackCurrentDay?: boolean;\n};\n\nexport type CalendarFlagsRecord = Readonly<{\n [K in TimeFlagProp]?: 1;\n}>;\n\nexport type CalendarBlock = Readonly<{\n datetime: string;\n label: string;\n month: number;\n year: number;\n}>;\n\nexport type CalendarBlockCellData = Readonly<{\n datetime: string;\n flags: CalendarFlagsRecord;\n index: number;\n label: string;\n timestamp: number;\n}>;\n\nexport type CalendarDayOfWeekData = Readonly<{\n flags: CalendarFlagsRecord;\n labels: Readonly<{ [K in DayOfWeekLabelFormat]: string }>;\n}>;\n\nexport type IndexedCalendarBlock = Indexed<Indexed<CalendarBlockCellData>> & CalendarBlock;\n\nexport type CalendarGridControls = Readonly<{\n [P in CalendarShiftControl]?: (evt?: Event) => boolean;\n}>;\n\nexport type CalendarGridControlRecord = [CalendarShiftControl, Exclude<CalendarGridControls[CalendarShiftControl], undefined>];\n\nexport type CalendarGrid = Indexed<IndexedCalendarBlock> &\n Readonly<{\n config: {\n (config?: CalendarConfig): CalendarConfig;\n cursorIndex: WithGetSetProperty<(this: CalendarConfig, evt: Event) => number | undefined>['_'];\n shiftFactor: WithGetSetProperty<(this: CalendarConfig, evt: Event, target: CalendarShiftControl) => number | undefined>['_'];\n watch: WithGetSetProperty<WatchCallable<any, CalendarConfig>>['_'];\n };\n controls: Indexed<CalendarGridControlRecord> & CalendarGridControls;\n cursor: (evt?: Event) => boolean;\n highlight: WithTimeEdges<WithGetSetProperty<number | undefined>['_']> & Readonly<{ blank: boolean }>;\n rowspan: number;\n weekdays: Indexed<CalendarDayOfWeekData>;\n }>;\n\nexport type CalendarFacade = {\n (init?: CalendarConfig | TimeFrameSize | WatchCallable<any, CalendarConfig>): Readonly<{\n readonly grid: CalendarGrid;\n readonly kill: () => void;\n }>;\n readonly controls: Readonly<{\n ALL: typeof CONTROLS_ALL;\n MINIMAL: typeof CONTROLS_MINIMAL;\n NONE: typeof CONTROLS_NONE;\n }>;\n readonly highlight: Readonly<{\n ONE: typeof SELECT_ONE;\n MANY: typeof SELECT_MANY;\n NONE: typeof SELECT_NONE;\n }>;\n readonly slice: TimeSliceFactory &\n Readonly<{\n FROM: typeof RANGE_FROM;\n SINCE_NOW: TimeSlice;\n TO: typeof RANGE_TO;\n UNBOUNDED: TimeSlice;\n UNTIL_NOW: TimeSlice;\n }>;\n};\n\nexport type CalendarWatchAtoms = Partial<WithTimeEdges<number>> & {\n blocks?: TimeFrameSize;\n cells?: number;\n controls?: CalendarShiftControls;\n cursor?: number;\n highlight?: CalendarSelection;\n locale?: string;\n minified?: boolean;\n origin?: number;\n today: number;\n};\n","import { CalendarFlagsRecord, TimeFlag, TimeFlagProp } from '../../types';\nimport { immutableProxyHandlers, struct } from '@src/utils/common';\nimport { isString } from '@src/utils/validator-utils';\n\nconst createFlagsRecord = (() => {\n const CACHE = {} as { [K: number]: CalendarFlagsRecord };\n const FLAG_PROPS = Object.keys(TimeFlag).filter(prop => isNaN(+prop)) as TimeFlagProp[];\n\n const isFlagProp = (property: string | symbol): property is TimeFlagProp =>\n property !== 'ALL' && isString(property) && FLAG_PROPS.includes(property as TimeFlagProp);\n\n return (flags: number): CalendarFlagsRecord => {\n const flagsTruncated = flags & TimeFlag.ALL;\n\n if (!CACHE[flagsTruncated]) {\n CACHE[flagsTruncated] = new Proxy(\n struct({\n valueOf: { value: () => flagsTruncated },\n }),\n {\n ...immutableProxyHandlers,\n get: (target: {}, property: string | symbol) => {\n switch (property) {\n case 'valueOf':\n return target.valueOf;\n case Symbol.toStringTag:\n return '_';\n default:\n if (!isFlagProp(property)) return;\n }\n\n return flagsTruncated & (TimeFlag[property] as number) ? 1 : undefined;\n },\n }\n ) as CalendarFlagsRecord;\n }\n\n return CACHE[flagsTruncated] as CalendarFlagsRecord;\n };\n})();\n\nexport default createFlagsRecord;\n","import { downsizeTimeFrame, resolveTimeFrameBlockSize } from '../common/utils';\nimport { UNBOUNDED_SLICE } from '../../timeslice';\nimport { computeTimestampOffset } from '../../utils';\nimport {\n CURSOR_BACKWARD,\n CURSOR_BLOCK_END,\n CURSOR_BLOCK_START,\n CURSOR_DOWNWARD,\n CURSOR_FORWARD,\n CURSOR_LINE_END,\n CURSOR_LINE_START,\n CURSOR_NEXT_BLOCK,\n CURSOR_PREV_BLOCK,\n CURSOR_UPWARD,\n FIRST_WEEK_DAYS,\n SELECTION_COLLAPSE,\n SELECTION_FARTHEST,\n SELECTION_FROM,\n SELECTION_NEAREST,\n SELECTION_TO,\n SHIFT_BLOCK,\n SHIFT_FRAME,\n SHIFT_PERIOD,\n} from '../../constants';\nimport createFlagsRecord from '../common/flags';\nimport indexed from '../../shared/indexed';\nimport { Indexed } from '../../shared/indexed/types';\nimport { clamp, enumerable, isBitSafeInteger, isFunction, isInfinite, mid, mod, struct } from '@src/utils/common';\nimport { WatchCallable } from '@src/utils/watchable/types';\nimport { today } from '../../../clock';\nimport {\n CalendarBlock,\n CalendarBlockCellData,\n CalendarDayOfWeekData,\n FirstWeekDay,\n IndexedCalendarBlock,\n Time,\n TimeFrameBlock,\n TimeFrameCursor,\n TimeFrameSelection,\n TimeFrameShift,\n TimeFrameSize,\n TimeSlice,\n} from '../../types';\n\nexport default abstract class TimeFrame {\n static #DEFAULT_LOCALE = 'en-US' as const;\n\n #cursorBlockIndex: number = 0;\n #cursorBlockStartIndex!: number;\n #cursorBlockEndIndex!: number;\n #cursorStartIndex: number = -1;\n #cursorEndIndex: number = -1;\n #cursorIndex!: number;\n #cursorOffset!: number;\n #cursorTimestamp!: number;\n #dynamicBlockHeight: boolean = false;\n #effect?: WatchCallable<any>;\n #firstWeekDay: FirstWeekDay = 0;\n #frameBlocksCached: IndexedCalendarBlock[] = [];\n #locale: string = TimeFrame.#DEFAULT_LOCALE;\n #maxFrameSize: TimeFrameSize = 12;\n #selectionStartTimestamp?: number;\n #selectionEndTimestamp?: number;\n #size: TimeFrameSize = 1;\n #timeslice!: TimeSlice;\n #today = today();\n #unwatchCurrentDay?: () => void;\n\n #fromTimestamp: number = -Infinity;\n #toTimestamp: number = Infinity;\n #fromBlockOffsetFromOrigin: number = -Infinity;\n #toBlockOffsetFromOrigin: number = Infinity;\n #numberOfBlocks: number = Infinity;\n #numberOfUnits: number = 0;\n\n protected daysInWeek: number = 0;\n protected origin!: number;\n protected originTimestamp!: number;\n\n protected abstract getCursorBlockOriginTimestampOffset(timestamp: number): number;\n protected abstract getDayOfWeekAtIndex(index: number): CalendarDayOfWeekData;\n protected abstract getEdgeBlockOffsetsFromOrigin(): [number, number];\n protected abstract getFormattedDataForBlockCell(time: Time): [string, string];\n protected abstract getFormattedDataForFrameBlock(time: Time): [string, string];\n protected abstract getFrameBlockAtIndex(index: number): TimeFrameBlock;\n protected abstract getUnitsForFrameBlockAtIndex(index: number): number;\n protected abstract getUnitsOffsetForTimestamp(startTimestamp: number, timestamp: number): number;\n protected abstract reoriginate(): void;\n protected abstract reslice(): void;\n protected abstract shiftOrigin(offset: number): void;\n\n abstract getTimestampAtIndex(indexOffset: number): number;\n abstract withCurrentDayTimestamp(timestamp: number): void;\n\n abstract get currentDayTimestamp(): number;\n abstract get rowspan(): number;\n\n #daysOfWeek = indexed(() => this.daysInWeek, this.getDayOfWeekAtIndex.bind(this));\n #frameBlocks = indexed(() => this.#size, this.#getFrameBlockAtIndex.bind(this));\n\n protected get fromTimestamp() {\n return this.#fromTimestamp;\n }\n\n protected get toTimestamp() {\n return this.#toTimestamp;\n }\n\n protected get numberOfBlocks() {\n return this.#numberOfBlocks;\n }\n\n get blankSelection() {\n return this.#selectionStartTimestamp === this.#selectionEndTimestamp && this.#selectionEndTimestamp === undefined;\n }\n\n get cursor() {\n return this.#cursorIndex ?? -1;\n }\n\n get daysOfWeek() {\n return this.#daysOfWeek;\n }\n\n get dynamicBlockHeight(): boolean {\n return this.#dynamicBlockHeight;\n }\n\n set dynamicBlockHeight(bool: boolean | null | undefined) {\n if (bool == undefined) this.#dynamicBlockHeight = !!bool;\n else if (bool === Boolean(bool)) this.#dynamicBlockHeight = bool;\n }\n\n set effect(effect: WatchCallable<any> | null | undefined) {\n if (effect == undefined) this.#effect = undefined;\n else if (isFunction(effect)) this.#effect = effect;\n }\n\n get firstWeekDay(): FirstWeekDay {\n return this.#firstWeekDay;\n }\n\n set firstWeekDay(day: FirstWeekDay | null | undefined) {\n if (day != undefined) {\n if (!FIRST_WEEK_DAYS.includes(day)) return;\n if (this.#firstWeekDay === (this.#firstWeekDay = day)) return;\n } else this.firstWeekDay = 0;\n }\n\n get frameBlocks() {\n return this.#frameBlocks;\n }\n\n get isAtEnd() {\n return !isInfinite(this.#toBlockOffsetFromOrigin) && this.#toBlockOffsetFromOrigin === this.#size - 1;\n }\n\n get isAtStart() {\n return !isInfinite(this.#fromBlockOffsetFromOrigin) && this.#fromBlockOffsetFromOrigin === 0;\n }\n\n get locale(): string {\n return this.#locale;\n }\n\n set locale(locale: string | Intl.Locale | null | undefined) {\n const currentLocale = this.#locale;\n\n if (locale == undefined) {\n this.#locale = TimeFrame.#DEFAULT_LOCALE;\n } else if (typeof Intl !== 'undefined') {\n try {\n this.#locale = new Intl.Locale(locale as NonNullable<typeof locale>).toString();\n } catch {\n this.#locale = TimeFrame.#DEFAULT_LOCALE;\n }\n }\n\n if (this.#locale !== currentLocale) this.refreshFrame(true);\n }\n\n get selectionStart() {\n return this.#selectionStartTimestamp;\n }\n\n get selectionEnd() {\n return this.#selectionEndTimestamp;\n }\n\n get size(): TimeFrameSize {\n return this.#size;\n }\n\n set size(size: TimeFrameSize | null | undefined) {\n const nextFrameSize = Math.min((size != undefined && resolveTimeFrameBlockSize(size)) || 1, this.#maxFrameSize) as TimeFrameSize;\n if (this.#size === (this.#size = nextFrameSize)) return;\n this.#shiftOriginIfNecessary();\n this.refreshFrame();\n }\n\n get timeslice(): TimeSlice {\n return this.#timeslice;\n }\n\n set timeslice(timeslice: TimeSlice | null | undefined) {\n if (timeslice === this.#timeslice || (timeslice == undefined && this.#timeslice === UNBOUNDED_SLICE)) return;\n\n const { from, to, span, offsets } = timeslice as TimeSlice;\n\n this.#timeslice = timeslice as TimeSlice;\n this.#fromTimestamp = from - offsets.from;\n this.#toTimestamp = to - offsets.to;\n this.#numberOfBlocks = span;\n\n const selectionStartTimestamp =\n this.#selectionStartTimestamp === undefined ? this.#selectionStartTimestamp : Math.max(this.#selectionStartTimestamp, from);\n const selectionEndTimestamp =\n this.#selectionEndTimestamp === undefined ? this.#selectionEndTimestamp : Math.min(this.#selectionEndTimestamp, to);\n\n if (selectionStartTimestamp === this.#selectionStartTimestamp || selectionEndTimestamp === this.#selectionEndTimestamp) {\n this.#selectionStartTimestamp = selectionStartTimestamp;\n this.#selectionEndTimestamp = selectionEndTimestamp;\n } else this.#selectionStartTimestamp = this.#selectionEndTimestamp = undefined;\n\n this.reslice();\n this.#maxFrameSize = downsizeTimeFrame(12, this.numberOfBlocks);\n this.#size = downsizeTimeFrame(this.#size, this.numberOfBlocks);\n\n this.shiftFrameToTimestamp(this.#cursorTimestamp);\n }\n\n set trackCurrentDay(bool: boolean | null | undefined) {\n if (bool === Boolean(bool)) {\n if (bool && !this.#unwatchCurrentDay) {\n this.#unwatchCurrentDay = this.#today.watch(this.refreshFrame.bind(this, true));\n } else if (!bool && this.#unwatchCurrentDay) {\n this.#unwatchCurrentDay();\n this.#unwatchCurrentDay = undefined;\n }\n } else if (bool == undefined) this.trackCurrentDay = false;\n }\n\n get units() {\n return this.#numberOfUnits;\n }\n\n #getClampedFrameOffset(frameOffset: number) {\n return clamp(this.#fromBlockOffsetFromOrigin, frameOffset || 0, this.#toBlockOffsetFromOrigin - this.#size + 1);\n }\n\n #getContainedTimestamp(time?: Time, withMidRangeFallback = true): [number, number] {\n let timestamp = new Date(time as Time).getTime();\n\n if (isNaN(timestamp)) return this.#getContainedTimestamp(Date.now());\n\n const { from, to } = this.#timeslice;\n const clampedTimestamp = clamp(from, timestamp, to);\n\n if (clampedTimestamp !== timestamp && withMidRangeFallback) {\n timestamp = mid(from, to);\n if (isNaN(timestamp) || isInfinite(timestamp)) {\n timestamp = clampedTimestamp;\n }\n } else timestamp = clampedTimestamp;\n\n const offset = computeTimestampOffset(timestamp);\n\n return [timestamp - offset, offset];\n }\n\n #getFrameBlockAtIndex(index: number): IndexedCalendarBlock | undefined {\n if (!(isBitSafeInteger(index) && index >= 0 && index < this.#size)) return;\n\n if (!this.#frameBlocksCached[index]) {\n const block = this.getFrameBlockAtIndex(index);\n if (!block) return undefined as unknown as IndexedCalendarBlock;\n\n const dateString = `${block.year}-${`0${1 + block.month}`.slice(-2)}-01`;\n const [label, datetime] = this.getFormattedDataForFrameBlock(new Date(dateString).setHours(12));\n const blockStartIndex = block.outer.from;\n\n this.#frameBlocksCached[index] = indexed<Indexed<CalendarBlockCellData>, CalendarBlock>(\n {\n datetime: enumerable(datetime),\n label: enumerable(label),\n length: enumerable(Math.ceil(block.outer.units / this.rowspan)),\n month: enumerable(block.month),\n year: enumerable(block.year),\n },\n index => {\n const indexOffset = index * this.rowspan;\n\n return indexed<CalendarBlockCellData>(this.rowspan, index => {\n const [timestamp, flags] = block[index + indexOffset] as (typeof block)[number];\n const [label, datetime] = this.getFormattedDataForBlockCell(new Date(timestamp).setHours(12));\n\n return struct({\n datetime: enumerable(datetime),\n flags: enumerable(createFlagsRecord(flags)),\n index: enumerable(blockStartIndex + index + indexOffset),\n label: enumerable(label),\n timestamp: enumerable(timestamp),\n }) as CalendarBlockCellData;\n });\n }\n );\n }\n\n return this.#frameBlocksCached[index] as IndexedCalendarBlock;\n }\n\n #shiftFrameCursorByOffset(offset: number): void {\n if (offset === 0) return;\n this.#cursorOffset += offset;\n this.refreshFrame();\n }\n\n #shiftOrigin(offset: number) {\n const clampedOffset = this.#getClampedFrameOffset(offset);\n if (clampedOffset) {\n this.shiftOrigin(clampedOffset);\n this.#fromBlockOffsetFromOrigin -= clampedOffset;\n this.#toBlockOffsetFromOrigin -= clampedOffset;\n this.#cursorBlockIndex = mod(this.#cursorBlockIndex - clampedOffset, this.#size);\n this.refreshFrame();\n }\n }\n\n #shiftOriginIfNecessary() {\n const size_1 = this.#size - 1;\n const offset = Math.min(size_1 - (this.origin % this.#size), this.#toBlockOffsetFromOrigin) - size_1;\n if (offset) this.#shiftOrigin(offset);\n }\n\n protected initialize() {\n this.withCurrentDayTimestamp(this.#today.timestamp);\n this.timeslice = UNBOUNDED_SLICE;\n }\n\n protected refreshFrame(skipCursorRefresh = false): void {\n this.#frameBlocksCached.length = 0;\n\n if (!(this.#cursorOffset === undefined || skipCursorRefresh)) {\n const cursorBlock = this.getFrameBlockAtIndex(this.#cursorBlockIndex) as TimeFrameBlock;\n const { from: startIndex, to: endIndex } = cursorBlock.inner;\n const [nextCursorTimestamp] = this.#getContainedTimestamp(this.getTimestampAtIndex(startIndex + this.#cursorOffset), false);\n\n this.#cursorOffset = this.getUnitsOffsetForTimestamp(this.getTimestampAtIndex(startIndex), nextCursorTimestamp);\n\n const nextCursorOffset = startIndex + this.#cursorOffset;\n const clampedNextCursorOffset = clamp(startIndex, nextCursorOffset, endIndex);\n\n if (clampedNextCursorOffset > nextCursorOffset) {\n this.#cursorOffset = this.getUnitsForFrameBlockAtIndex(--this.#cursorBlockIndex) + nextCursorOffset - clampedNextCursorOffset;\n if (this.#cursorBlockIndex >= 0) return this.refreshFrame();\n this.#cursorBlockIndex = this.#size - 1;\n return this.shiftFrameByOffset(-1, SHIFT_FRAME);\n }\n\n if (clampedNextCursorOffset < nextCursorOffset) {\n this.#cursorOffset = nextCursorOffset - clampedNextCursorOffset - 1;\n if (++this.#cursorBlockIndex < this.#size) return this.refreshFrame();\n this.#cursorBlockIndex = 0;\n return this.shiftFrameByOffset(1, SHIFT_FRAME);\n }\n\n this.#cursorBlockStartIndex = startIndex;\n this.#cursorBlockEndIndex = endIndex;\n this.#cursorTimestamp = this.#getContainedTimestamp(this.getTimestampAtIndex(nextCursorOffset), false)[0];\n this.#cursorOffset = this.getCursorBlockOriginTimestampOffset(this.#cursorTimestamp);\n this.#cursorIndex = startIndex + this.#cursorOffset;\n\n const firstBlock = this.#cursorBlockIndex > 0 ? (this.getFrameBlockAtIndex(0) as TimeFrameBlock) : cursorBlock;\n const lastBlock = this.#cursorBlockIndex < this.#size - 1 ? (this.getFrameBlockAtIndex(this.#size - 1) as TimeFrameBlock) : cursorBlock;\n\n this.#cursorStartIndex = firstBlock.inner.from;\n this.#cursorEndIndex = lastBlock.inner.to;\n this.#numberOfUnits = lastBlock.outer.to;\n }\n\n this.withCurrentDayTimestamp(this.#today.timestamp);\n this.#effect?.();\n }\n\n shiftFrameByOffset(offset?: number, offsetType?: TimeFrameShift) {\n if (offset && isBitSafeInteger(offset)) {\n switch (offsetType) {\n case SHIFT_BLOCK:\n return this.#shiftOrigin(offset);\n case SHIFT_PERIOD:\n return this.#shiftOrigin(offset * 12);\n case SHIFT_FRAME:\n default:\n return this.#shiftOrigin(offset * this.#size);\n }\n }\n }\n\n shiftFrameCursor(nextCursorPosition: TimeFrameCursor | number) {\n switch (nextCursorPosition) {\n case CURSOR_BACKWARD:\n return this.#shiftFrameCursorByOffset(-1);\n case CURSOR_FORWARD:\n return this.#shiftFrameCursorByOffset(1);\n case CURSOR_UPWARD:\n return this.#shiftFrameCursorByOffset(-this.rowspan);\n case CURSOR_DOWNWARD:\n return this.#shiftFrameCursorByOffset(this.rowspan);\n case CURSOR_BLOCK_START:\n return this.#shiftFrameCursorByOffset(this.#cursorBlockStartIndex - this.#cursorIndex);\n case CURSOR_BLOCK_END:\n return this.#shiftFrameCursorByOffset(this.#cursorBlockEndIndex - this.#cursorIndex);\n case CURSOR_LINE_START:\n return this.#shiftFrameCursorByOffset(-(this.#cursorIndex % this.rowspan));\n case CURSOR_LINE_END:\n return this.#shiftFrameCursorByOffset(this.rowspan - ((this.#cursorIndex % this.rowspan) + 1));\n case CURSOR_PREV_BLOCK:\n return this.#shiftFrameCursorByOffset(-this.getUnitsForFrameBlockAtIndex((this.#cursorBlockIndex ?? 0) - 1));\n case CURSOR_NEXT_BLOCK:\n return this.#shiftFrameCursorByOffset(this.getUnitsForFrameBlockAtIndex(this.#cursorBlockIndex ?? 0));\n }\n\n if (nextCursorPosition < 0) return;\n\n if (nextCursorPosition >= this.#cursorStartIndex && nextCursorPosition <= this.#cursorEndIndex) {\n return this.#shiftFrameCursorByOffset(nextCursorPosition - this.#cursorIndex);\n }\n }\n\n shiftFrameToTimestamp(timestamp?: number) {\n const containedTimestamp = this.#getContainedTimestamp(timestamp, false)[0];\n this.#cursorOffset = this.getCursorBlockOriginTimestampOffset((this.#cursorTimestamp = this.originTimestamp = containedTimestamp));\n this.reoriginate();\n\n [this.#fromBlockOffsetFromOrigin, this.#toBlockOffsetFromOrigin] = this.getEdgeBlockOffsetsFromOrigin();\n this.#shiftOriginIfNecessary();\n this.refreshFrame();\n\n this.#shiftFrameCursorByOffset(this.getUnitsOffsetForTimestamp(this.getTimestampAtIndex(this.#cursorIndex), containedTimestamp));\n }\n\n clearSelection() {\n if (this.blankSelection) return;\n this.#selectionStartTimestamp = this.#selectionEndTimestamp = undefined;\n this.refreshFrame(true);\n }\n\n getCursorOrderForTimeRelativeToSelectionEdge(time: Time, selectionEdge: typeof SELECTION_FROM | typeof SELECTION_TO = SELECTION_FROM) {\n let selectionEdgeTimestamp: number | undefined;\n let invertedComparison = false;\n\n switch (selectionEdge) {\n case SELECTION_FROM:\n selectionEdgeTimestamp = this.#selectionStartTimestamp;\n break;\n case SELECTION_TO:\n selectionEdgeTimestamp = this.#selectionEndTimestamp;\n invertedComparison = true;\n break;\n }\n\n if (selectionEdgeTimestamp === undefined) return 0;\n\n const timestamp = this.#getContainedTimestamp(time, false).reduce((a, b) => a + b, 0);\n const timestampOffset = this.getUnitsOffsetForTimestamp(selectionEdgeTimestamp, timestamp) * (invertedComparison ? -1 : 1);\n return timestampOffset && (timestampOffset > 0 ? 1 : -1);\n }\n\n updateSelection(time: Time, selection?: TimeFrameSelection) {\n const currentStart = this.#selectionStartTimestamp as number;\n const currentEnd = this.#selectionEndTimestamp as number;\n const timestamp = this.#getContainedTimestamp(time, false).reduce((a, b) => a + b, 0);\n\n if (selection === SELECTION_FARTHEST) {\n if (timestamp <= currentStart) selection = SELECTION_TO;\n else if (timestamp >= currentEnd) selection = SELECTION_FROM;\n }\n\n switch (selection) {\n case SELECTION_FROM:\n this.#selectionStartTimestamp = timestamp;\n this.#selectionEndTimestamp = Math.max(this.#selectionStartTimestamp, currentEnd ?? timestamp);\n break;\n case SELECTION_TO:\n this.#selectionEndTimestamp = timestamp;\n this.#selectionStartTimestamp = Math.min(currentStart ?? timestamp, this.#selectionEndTimestamp);\n break;\n case SELECTION_FARTHEST:\n case SELECTION_NEAREST: {\n let startDistance = Math.abs(timestamp - (currentStart ?? timestamp));\n let endDistance = Math.abs(timestamp - (currentEnd ?? timestamp));\n\n if (selection === SELECTION_NEAREST) {\n [startDistance, endDistance] = [endDistance, startDistance];\n }\n\n if (startDistance > endDistance) {\n this.#selectionStartTimestamp = timestamp;\n } else this.#selectionEndTimestamp = timestamp;\n\n break;\n }\n case SELECTION_COLLAPSE:\n default:\n this.#selectionStartTimestamp = this.#selectionEndTimestamp = timestamp;\n break;\n }\n\n if (this.#selectionStartTimestamp !== currentStart || this.#selectionEndTimestamp !== currentEnd) {\n this.refreshFrame(true);\n }\n }\n}\n","import TimeFrame from './TimeFrame';\nimport { getWeekendDays } from '../common/utils';\nimport { computeTimestampOffset, getEdgesDistance, getMonthDays } from '../../utils';\nimport { DAY_MS, DAY_OF_WEEK_FORMATS, MAXIMUM_MONTH_UNITS } from '../../constants';\nimport createFlagsRecord from '../common/flags';\nimport { enumerable, immutableProxyHandlers, isBitSafeInteger, isInfinite, struct, structFrom } from '@src/utils/common';\nimport { isString } from '@src/utils/validator-utils';\nimport {\n CalendarDayOfWeekData,\n DayOfWeekLabelFormat,\n FirstWeekDay,\n Month,\n MonthDays,\n Time,\n TimeFlag,\n TimeFrameBlock,\n TimeFrameSelection,\n WeekDay,\n} from '../../types';\n\nexport default class MonthFrame extends TimeFrame {\n #daysInWeek = 7 as const;\n #daysOfWeekCached: CalendarDayOfWeekData[] = [];\n #daysOfWeekend: readonly WeekDay[] = getWeekendDays(this.firstWeekDay);\n #currentDayTimestamp!: number;\n #fromTimestamp: number = -Infinity;\n #toTimestamp: number = Infinity;\n #numberOfBlocks: number = Infinity;\n #originMonthStartDate!: number;\n #originMonthStartOffset!: WeekDay;\n #originMonthStartTimestamp!: number;\n #originYear!: number;\n #selectionFromTimestamp?: number;\n #selectionToTimestamp?: number;\n\n protected daysInWeek: number = this.#daysInWeek;\n protected declare origin: Month;\n\n constructor() {\n super();\n this.initialize();\n }\n\n protected get fromTimestamp() {\n return this.#fromTimestamp;\n }\n\n protected get toTimestamp() {\n return this.#toTimestamp;\n }\n\n protected get numberOfBlocks() {\n return this.#numberOfBlocks;\n }\n\n get currentDayTimestamp() {\n return this.#currentDayTimestamp;\n }\n\n get dynamicBlockHeight(): boolean {\n return super.dynamicBlockHeight;\n }\n\n set dynamicBlockHeight(bool: boolean | null | undefined) {\n const current = this.dynamicBlockHeight;\n super.dynamicBlockHeight = bool;\n if (this.dynamicBlockHeight !== current) this.refreshFrame(true);\n }\n\n get rowspan() {\n return this.#daysInWeek;\n }\n\n get firstWeekDay(): FirstWeekDay {\n return super.firstWeekDay;\n }\n\n set firstWeekDay(day: FirstWeekDay | null | undefined) {\n const current = this.firstWeekDay;\n super.firstWeekDay = day;\n\n if (this.firstWeekDay === current) return;\n\n this.#daysOfWeekCached.length = 0;\n this.#daysOfWeekend = getWeekendDays(this.firstWeekDay);\n this.reoriginate();\n this.refreshFrame();\n }\n\n #getBlockTimestampOffsetFromOrigin(timestamp: number) {\n const offset = getEdgesDistance(timestamp, this.originTimestamp);\n return timestamp < this.originTimestamp ? 0 - offset : offset;\n }\n\n #getStartForTimestamp(timestamp?: number) {\n return timestamp === undefined || isInfinite(timestamp) ? timestamp : timestamp - computeTimestampOffset(timestamp);\n }\n\n #updateSelectionTimestamps() {\n this.#selectionFromTimestamp = this.#getStartForTimestamp(this.selectionStart);\n this.#selectionToTimestamp = this.#getStartForTimestamp(this.selectionEnd);\n }\n\n protected getCursorBlockOriginTimestampOffset(timestamp: number): number {\n return new Date(timestamp).getDate() - 1;\n }\n\n protected getDayOfWeekAtIndex(index: number) {\n if (!this.#daysOfWeekCached[index]) {\n const date = new Date(this.getTimestampAtIndex(index));\n let flags = 0;\n\n if (this.#daysOfWeekend.includes(index as WeekDay)) flags |= TimeFlag.WEEKEND;\n if (index === 0) flags |= TimeFlag.LINE_START;\n else if (index === 6) flags |= TimeFlag.LINE_END;\n\n const labelDescriptors = {} as {\n [K in DayOfWeekLabelFormat]: {\n enumerable: true;\n value: string;\n };\n };\n\n for (const format of DAY_OF_WEEK_FORMATS) {\n labelDescriptors[format] = enumerable(\n date.toLocaleDateString(this.locale, { weekday: format })\n ) as (typeof labelDescriptors)[typeof format];\n }\n\n this.#daysOfWeekCached[index] = struct({\n flags: enumerable(createFlagsRecord(flags)),\n labels: enumerable(struct(labelDescriptors)),\n }) as CalendarDayOfWeekData;\n }\n\n return this.#daysOfWeekCached[index] as CalendarDayOfWeekData;\n }\n\n protected getEdgeBlockOffsetsFromOrigin(): [number, number] {\n return [this.#getBlockTimestampOffsetFromOrigin(this.#fromTimestamp), this.#getBlockTimestampOffsetFromOrigin(this.#toTimestamp)];\n }\n\n protected getFormattedDataForBlockCell(time: Time): [string, string] {\n const ISOString = new Date(time).toISOString();\n return [Number(ISOString.slice(8, 10)).toLocaleString(this.locale), ISOString.slice(0, 10)];\n }\n\n protected getFormattedDataForFrameBlock(time: Time): [string, string] {\n const date = new Date(time);\n return [date.toLocaleDateString(this.locale, { month: 'long', year: 'numeric' }), date.toISOString().slice(0, 7)];\n }\n\n protected getFrameBlockAtIndex(index: number): TimeFrameBlock {\n const [monthDays, month, year] = getMonthDays(this.origin, this.#originYear, index);\n const innerStartIndex = index > 0 ? this.getFrameBlockAtIndex(index - 1).inner.to + 1 : this.#originMonthStartOffset;\n const innerEndIndex = innerStartIndex + monthDays - 1;\n const outerStartIndex = Math.floor(innerStartIndex / 7) * 7;\n const outerEndAfterIndex = this.dynamicBlockHeight ? Math.ceil((innerEndIndex + 1) / 7) * 7 : outerStartIndex + MAXIMUM_MONTH_UNITS;\n const numberOfUnits = this.dynamicBlockHeight ? outerEndAfterIndex - outerStartIndex : MAXIMUM_MONTH_UNITS;\n\n const proxyForIndexPropertyAccess = new Proxy(struct(), {\n ...immutableProxyHandlers,\n get: (target: {}, property: string | symbol, receiver: {}) => {\n if (isString(property)) {\n const offset = +property;\n\n if (isBitSafeInteger(offset) && offset >= 0 && offset < numberOfUnits) {\n const index = outerStartIndex + offset;\n const timestamp = this.getTimestampAtIndex(index);\n const weekDay = (index % this.#daysInWeek) as WeekDay;\n\n let flags = timestamp === this.currentDayTimestamp ? TimeFlag.CURRENT : 0;\n\n if (index === this.cursor) flags |= TimeFlag.CURSOR;\n if (this.#daysOfWeekend.includes(weekDay)) flags |= TimeFlag.WEEKEND;\n\n if (weekDay === 0) flags |= TimeFlag.LINE_START;\n else if (weekDay === this.#daysInWeek - 1) flags |= TimeFlag.LINE_END;\n\n if (index >= innerStartIndex && index <= innerEndIndex) {\n if (index === innerStartIndex) flags |= TimeFlag.BLOCK_START;\n else if (index === innerEndIndex) flags |= TimeFlag.BLOCK_END;\n flags |= TimeFlag.WITHIN_BLOCK;\n }\n\n if (timestamp >= this.fromTimestamp && timestamp <= this.toTimestamp) {\n if (timestamp === this.fromTimestamp) flags |= TimeFlag.RANGE_START;\n if (timestamp === this.toTimestamp) flags |= TimeFlag.RANGE_END;\n flags |= TimeFlag.WITHIN_RANGE;\n }\n\n if (timestamp >= (this.#selectionFromTimestamp as number) && timestamp <= (this.#selectionToTimestamp as number)) {\n if (timestamp === (this.#selectionFromTimestamp as number)) flags |= TimeFlag.SELECTION_START;\n if (timestamp === (this.#selectionToTimestamp as number)) flags |= TimeFlag.SELECTION_END;\n flags |= TimeFlag.WITHIN_SELECTION;\n }\n\n return [timestamp, flags] as const;\n }\n }\n\n return Reflect.get(target, property, receiver);\n },\n });\n\n return structFrom(proxyForIndexPropertyAccess, {\n inner: {\n value: struct({\n from: { value: innerStartIndex },\n to: { value: innerEndIndex },\n units: { value: monthDays },\n }),\n },\n month: { value: month },\n outer: {\n value: struct({\n from: { value: outerStartIndex },\n to: { value: outerEndAfterIndex - 1 },\n units: { value: numberOfUnits },\n }),\n },\n year: { value: year },\n }) as TimeFrameBlock;\n }\n\n protected getUnitsForFrameBlockAtIndex(index: number): MonthDays {\n return getMonthDays(this.origin, this.#originYear, index)[0];\n }\n\n protected getUnitsOffsetForTimestamp(startTimestamp: number, timestamp: number) {\n return Math.round((timestamp - startTimestamp) / DAY_MS);\n }\n\n protected reoriginate() {\n const date = new Date(this.originTimestamp);\n const firstDayOffset = ((8 - ((date.getDate() - date.getDay() + this.firstWeekDay) % 7)) % 7) as WeekDay;\n\n this.origin = date.getMonth() as Month;\n this.#originYear = date.getFullYear();\n this.originTimestamp = date.setDate(1);\n this.#originMonthStartOffset = firstDayOffset;\n this.#originMonthStartTimestamp = date.setDate(1 - firstDayOffset);\n this.#originMonthStartDate = date.getDate();\n }\n\n protected reslice() {\n this.#updateSelectionTimestamps();\n this.#fromTimestamp = this.#getStartForTimestamp(super.fromTimestamp) as number;\n this.#toTimestamp = this.#getStartForTimestamp(super.toTimestamp) as number;\n this.#numberOfBlocks = getEdgesDistance(super.fromTimestamp, super.toTimestamp) + 1;\n }\n\n protected shiftOrigin(offset: number) {\n this.originTimestamp = new Date(this.originTimestamp).setMonth(this.origin + offset);\n this.reoriginate();\n }\n\n clearSelection() {\n super.clearSelection();\n this.#updateSelectionTimestamps();\n this.refreshFrame(true);\n }\n\n getTimestampAtIndex(indexOffset: number) {\n return new Date(this.#originMonthStartTimestamp).setDate(this.#originMonthStartDate + indexOffset);\n }\n\n updateSelection(time: Time, selection?: TimeFrameSelection) {\n super.updateSelection(time, selection);\n this.#updateSelectionTimestamps();\n this.refreshFrame(true);\n }\n\n withCurrentDayTimestamp(timestamp: number) {\n this.#currentDayTimestamp = this.#getStartForTimestamp(timestamp) as number;\n }\n}\n","import { InteractionKeyCode } from '@src/components/types';\nimport {\n CALENDAR_CONTROLS,\n CALENDAR_SELECTIONS,\n CONTROLS_ALL,\n CONTROLS_MINIMAL,\n CONTROLS_NONE,\n CURSOR_BACKWARD,\n CURSOR_BLOCK_END,\n CURSOR_BLOCK_START,\n CURSOR_DOWNWARD,\n CURSOR_FORWARD,\n CURSOR_LINE_END,\n CURSOR_LINE_START,\n CURSOR_NEXT_BLOCK,\n CURSOR_PREV_BLOCK,\n CURSOR_UPWARD,\n FIRST_WEEK_DAYS,\n FRAME_SIZES,\n SELECT_MANY,\n SELECT_NONE,\n SELECT_ONE,\n SELECTION_COLLAPSE,\n SELECTION_FROM,\n SELECTION_TO,\n SHIFT_BLOCK,\n SHIFT_FRAME,\n SHIFT_PERIOD,\n} from '../constants';\nimport indexed from '../shared/indexed';\nimport {\n boolify,\n EMPTY_OBJECT,\n immutableProxyHandlers,\n isBitSafeInteger,\n isFunction,\n noop,\n pickFromCollection,\n struct,\n structFrom,\n} from '@src/utils/common';\nimport { isString } from '@src/utils/validator-utils';\nimport watchable from '@src/utils/watchable';\nimport { Watchable, WatchableFactory, WatchCallable, WatchCallback } from '@src/utils/watchable/types';\nimport { MonthFrame, TimeFrame /* , YearFrame */ } from '../timeframe';\nimport { today } from '../../clock';\nimport {\n CalendarConfig,\n CalendarDayOfWeekData,\n CalendarGrid,\n CalendarGridControlRecord,\n CalendarSelection,\n CalendarShiftControl,\n CalendarShiftControlFlag,\n CalendarShiftControlsFlag,\n CalendarWatchAtoms,\n} from '../types';\n\nexport default class Calendar {\n grid: CalendarGrid;\n kill: () => void;\n #config = EMPTY_OBJECT as CalendarConfig;\n #destructed = false;\n #frame?: TimeFrame;\n #highlightFrom?: number;\n #highlightTo?: number;\n #highlightInProgress = false;\n #highlightSelection?: CalendarSelection = SELECT_NONE;\n #pendingWatchNotification = false;\n #rangeOffsets?: [number, number, number, number, number, number];\n #lastHighlightRange?: string = this.#rangeOffsets?.join(' ');\n\n #cursorIndexFromEvent?: CalendarGrid['config']['cursorIndex'];\n #shiftFactorFromEvent?: CalendarGrid['config']['shiftFactor'];\n #watchCallback?: CalendarGrid['config']['watch'];\n #watchableEffect?: () => void;\n #unwatch?: () => void;\n\n #today = today();\n #shiftControlsHandles: CalendarGridControlRecord[1][] = [];\n #shiftControlsList?: CalendarShiftControl[];\n\n #shiftControls = new Proxy(\n indexed(() => this.#shiftControlsList?.length ?? 0, this.#getShiftControlRecordAtIndex.bind(this)),\n {\n ...immutableProxyHandlers,\n get: (target: {}, property: string | symbol, receiver: {}): any => {\n const index = this.#shiftControlsList?.indexOf(property as CalendarShiftControl) ?? -1;\n return index >= 0 ? this.#getShiftControlRecordAtIndex(index)?.[1] : Reflect.get(target, property, receiver);\n },\n }\n ) as CalendarGrid['controls'];\n\n #watchable?: Watchable<CalendarWatchAtoms> = watchable({\n blocks: () => this.#frame?.size,\n cells: () => this.#frame?.units,\n controls: () => pickFromCollection(CALENDAR_CONTROLS, this.#config.controls),\n cursor: () => this.#frame?.cursor,\n from: () => this.#frame?.selectionStart,\n highlight: () => this.#highlightSelection,\n locale: () => this.#frame?.locale,\n minified: () => boolify(this.#config.minified),\n origin: () => this.#frame?.getTimestampAtIndex(0),\n to: () => this.#frame?.selectionEnd,\n today: () => this.#today.timestamp,\n });\n\n #lastWatchableSnapshot?: CalendarWatchAtoms = this.#watchable?.snapshot;\n\n #chainedNotifyCallback?: ReturnType<WatchableFactory['withSyncEffect']> = watchable.withSyncEffect(\n () => this.#watchCallback && this.#watchable?.notify()\n );\n\n #chainedWatchCallback?: ReturnType<WatchableFactory['withSyncEffect']> = watchable.withSyncEffect(() =>\n this.#watchCallback?.call(this.#currentConfig)\n );\n\n #grid = structFrom(\n indexed(\n () => this.#frame?.size ?? 0,\n index => this.#frame?.frameBlocks[index]\n ),\n {\n config: {\n value: Object.defineProperties(\n (config?: CalendarConfig) => {\n config && this.#configure(config);\n return this.#currentConfig;\n },\n {\n cursorIndex: {\n get: () => this.#cursorIndexFromEvent,\n set: (fn: CalendarGrid['config']['cursorIndex'] | null | undefined) => {\n if (this.#destructed) return;\n if (fn == undefined) this.#cursorIndexFromEvent = undefined;\n else if (isFunction(fn)) this.#cursorIndexFromEvent = fn;\n },\n },\n shiftFactor: {\n get: () => this.#shiftFactorFromEvent,\n set: (fn: CalendarGrid['config']['shiftFactor'] | null | undefined) => {\n if (this.#destructed) return;\n if (fn == undefined) this.#shiftFactorFromEvent = undefined;\n else if (isFunction(fn)) this.#shiftFactorFromEvent = fn;\n },\n },\n watch: {\n get: () => this.#watchCallback,\n set: (fn: CalendarGrid['config']['watch'] | null | undefined) => {\n if (this.#destructed) return;\n if (isFunction(fn)) {\n this.#watchCallback = fn;\n\n if (!this.#watchableEffect) {\n const watchCallback = this.#chainedNotifyCallback?.(Calendar.#watchableEffectCallback.bind(this));\n\n if (watchCallback) {\n this.#watchableEffect = this.#chainedNotifyCallback?.(noop);\n this.#unwatch = this.#watchable?.watch(this.#chainedWatchCallback?.(watchCallback));\n this.#frame && (this.#frame.effect = this.#watchableEffect);\n }\n }\n\n if (!this.#pendingWatchNotification) return;\n\n this.#pendingWatchNotification = false;\n this.#watchableEffect?.();\n } else if (fn == undefined) this.#watchCallback = undefined;\n },\n },\n }\n ),\n },\n controls: { value: this.#shiftControls },\n cursor: {\n value: Object.defineProperties(\n (evt?: Event) => Calendar.#withNotifyEffect.call(this, (evt?: Event) => !!(evt && this.#cursorHandle(evt)))(evt),\n {\n valueOf: { value: () => this.#frame?.cursor ?? -1 },\n }\n ),\n },\n highlight: {\n value: (() => {\n const blank = () => this.#highlightFrom === this.#highlightTo && this.#highlightTo === undefined;\n\n const setter = (selection: typeof SELECTION_FROM | typeof SELECTION_TO) => (time?: number | null) =>\n Calendar.#withNotifyEffect.call(this, (time?: number | null) => {\n if (this.#destructed || !this.#highlightSelection || this.#highlightSelection === SELECT_NONE) return;\n if (time == undefined) return this.#clearHighlight();\n\n if (!blank()) {\n this.#frame?.updateSelection(time, selection);\n if (this.#highlightSelection === SELECT_MANY && this.#rangeOffsets) {\n this.#rangeHighlight(time, selection === SELECTION_FROM ? SELECTION_TO : SELECTION_FROM, this.#rangeOffsets);\n }\n } else this.#frame?.updateSelection(time, SELECTION_COLLAPSE);\n\n this.#highlightFrom = this.#frame?.selectionStart;\n this.#highlightTo = this.#frame?.selectionEnd;\n this.#frame?.shiftFrameToTimestamp(selection === SELECTION_FROM ? this.#highlightFrom : this.#highlightTo);\n })(time);\n\n return struct({\n blank: { get: blank },\n from: {\n get: () => this.#frame?.selectionStart ?? this.#highlightFrom,\n set: setter(SELECTION_FROM),\n },\n to: {\n get: () => this.#frame?.selectionEnd ?? this.#highlightTo,\n set: setter(SELECTION_TO),\n },\n });\n })(),\n },\n rowspan: { get: () => this.#frame?.rowspan ?? 0 },\n weekdays: { get: () => this.#frame?.daysOfWeek ?? Calendar.#DAYS_OF_WEEK_FALLBACK },\n }\n ) as CalendarGrid;\n\n static #RANGE_OFFSETS_FORMAT_REGEX = /^(?:0|[1-9]\\d*)(\\s+(?:0|[1-9]\\d*)?){0,5}?$/;\n static #CURSOR_POINTER_INTERACTION_EVENTS = ['click', 'mouseover', 'pointerover'];\n static #DAYS_OF_WEEK_FALLBACK = indexed<CalendarDayOfWeekData, {}>(0, noop as any);\n static #SHIFT_ACTIVATION_KEYS = [InteractionKeyCode.ENTER, InteractionKeyCode.SPACE];\n static #SHIFT_ALL_CONTROLS = Object.keys(CalendarShiftControlsFlag).filter(control => isNaN(+control)) as CalendarShiftControl[];\n static #SHIFT_MINIMAL_CONTROLS = ['PREV', 'NEXT'] as CalendarShiftControl[];\n\n static #getOffsetsFromRange(range?: string): [number, number, number, number, number, number] | undefined {\n if (!isString(range)) return;\n if (!Calendar.#RANGE_OFFSETS_FORMAT_REGEX.test(range)) return;\n const offsets = range.split(/\\s+/);\n return Array.from({ length: 6 }, (_, index) => parseInt(offsets[index] ?? '0')) as [number, number, number, number, number, number];\n }\n\n static #getShiftOffsetType(flags: number) {\n switch (flags & ~CalendarShiftControlFlag.PREV) {\n case CalendarShiftControlFlag.FRAME:\n return SHIFT_FRAME;\n case CalendarShiftControlFlag.PERIOD:\n return SHIFT_PERIOD;\n case CalendarShiftControlFlag.BLOCK:\n default:\n return SHIFT_BLOCK;\n }\n }\n\n static #getShiftOffsetUnit(flags: number) {\n return flags & CalendarShiftControlFlag.PREV ? -1 : 1;\n }\n\n static #watchableEffectCallback: WatchCallback<CalendarWatchAtoms> = function (this: Calendar, signalOrSnapshot) {\n if (typeof signalOrSnapshot === 'symbol') return;\n\n let controlsChanged = false;\n let highlightChanged = false;\n let selectionChanged = false;\n const highlightRange = this.#rangeOffsets?.join(' ');\n\n for (const key of Object.keys(signalOrSnapshot) as (keyof typeof signalOrSnapshot)[]) {\n if (signalOrSnapshot[key] === this.#lastWatchableSnapshot?.[key]) continue;\n if (key === 'controls') controlsChanged = true;\n else if (key === 'highlight') highlightChanged = true;\n else if (key === 'from' || key === 'to') selectionChanged = true;\n }\n\n if (this.#lastHighlightRange !== highlightRange) {\n this.#lastHighlightRange = highlightRange;\n highlightChanged = true;\n }\n\n this.#lastWatchableSnapshot = signalOrSnapshot;\n\n if (this.#highlightInProgress && !selectionChanged) this.#restoreHighlight();\n if (controlsChanged) this.#refreshShiftControls();\n if (highlightChanged) this.#refreshHighlighting();\n };\n\n static #withNotifyEffect<T extends WatchCallable<any> = WatchCallable<any>>(this: Calendar, fn: T) {\n return this.#chainedNotifyCallback?.(fn) ?? fn;\n }\n\n constructor() {\n this.grid = this.#grid;\n this.kill = this.#destruct.bind(this);\n }\n\n get #currentConfig() {\n return { ...this.#config } as CalendarConfig;\n }\n\n get #timeframe() {\n // return (this.#config.minified as boolean) ? new YearFrame() : new MonthFrame();\n return new MonthFrame();\n }\n\n #canShiftInDirection(shiftDirection: 1 | -1) {\n return !!this.#frame && !(shiftDirection > 0 ? this.#frame.isAtEnd : this.#frame.isAtStart);\n }\n\n #configure(config: CalendarConfig) {\n if (this.#destructed) return;\n\n this.#rangeOffsets = undefined;\n\n const highlight = config?.highlight;\n const minified = boolify(this.#config.minified);\n\n if (!isString(highlight)) {\n this.#highlightSelection = pickFromCollection(CALENDAR_SELECTIONS, highlight, this.#highlightSelection);\n } else if ((this.#rangeOffsets = Calendar.#getOffsetsFromRange(highlight))) {\n this.#highlightSelection = SELECT_MANY;\n }\n\n this.#config = {\n ...this.#config,\n ...config,\n blocks: pickFromCollection(FRAME_SIZES, config?.blocks, this.#config.blocks),\n controls: pickFromCollection(CALENDAR_CONTROLS, config?.controls, this.#config.controls),\n firstWeekDay: pickFromCollection(FIRST_WEEK_DAYS, config?.firstWeekDay, this.#config.firstWeekDay),\n fixedBlockHeight: boolify(config?.fixedBlockHeight, this.#config.fixedBlockHeight),\n highlight: this.#highlightSelection,\n minified: boolify(config?.minified, this.#config.minified),\n trackCurrentDay: boolify(config?.trackCurrentDay, this.#config.trackCurrentDay),\n };\n\n if (!isFunction(this.#watchCallback)) {\n if (!this.#frame) {\n this.#frame = this.#timeframe;\n this.#reframe();\n this.#refreshShiftControls();\n this.#refreshHighlighting();\n } else this.#pendingWatchNotification = true;\n\n return;\n }\n\n if (!this.#frame || minified !== this.#config.minified) {\n this.#frame = this.#timeframe;\n this.#frame.effect = this.#watchableEffect;\n }\n\n this.#reframe();\n this.#watchableEffect?.();\n }\n\n #cursorHandle(evt?: Event): true | undefined {\n if (!(evt && this.#frame && isFunction(this.#watchCallback))) return;\n\n if (evt instanceof KeyboardEvent) {\n switch (evt.code) {\n case InteractionKeyCode.ARROW_LEFT:\n this.#frame.shiftFrameCursor(CURSOR_BACKWARD);\n break;\n case InteractionKeyCode.ARROW_RIGHT:\n this.#frame.shiftFrameCursor(CURSOR_FORWARD);\n break;\n case InteractionKeyCode.ARROW_UP:\n this.#frame.shiftFrameCursor(CURSOR_UPWARD);\n break;\n case InteractionKeyCode.ARROW_DOWN:\n this.#frame.shiftFrameCursor(CURSOR_DOWNWARD);\n break;\n case InteractionKeyCode.HOME:\n this.#frame.shiftFrameCursor(evt.ctrlKey ? CURSOR_BLOCK_START : CURSOR_LINE_START);\n break;\n case InteractionKeyCode.END:\n this.#frame.shiftFrameCursor(evt.ctrlKey ? CURSOR_BLOCK_END : CURSOR_LINE_END);\n break;\n case InteractionKeyCode.PAGE_UP:\n evt.shiftKey ? this.#frame.shiftFrameByOffset(-1, SHIFT_PERIOD) : this.#frame.shiftFrameCursor(CURSOR_PREV_BLOCK);\n break;\n case InteractionKeyCode.PAGE_DOWN:\n evt.shiftKey ? this.#frame.shiftFrameByOffset(1, SHIFT_PERIOD) : this.#frame.shiftFrameCursor(CURSOR_NEXT_BLOCK);\n break;\n case InteractionKeyCode.SPACE:\n case InteractionKeyCode.ENTER:\n this.#highlight();\n return true;\n default:\n return;\n }\n\n this.#highlightInProgress && this.#highlight(EMPTY_OBJECT);\n return true;\n }\n\n if (evt instanceof MouseEvent && Calendar.#CURSOR_POINTER_INTERACTION_EVENTS.includes(evt.type) && isFunction(this.#cursorIndexFromEvent)) {\n const cursorIndex = this.#cursorIndexFromEvent.call(this.#currentConfig, evt);\n\n if (!isBitSafeInteger(cursorIndex)) return;\n\n const isClick = evt.type === 'click';\n\n if (!(isClick || this.#highlightInProgress)) return;\n this.#frame.shiftFrameCursor(cursorIndex);\n\n if (this.#frame.cursor === cursorIndex) {\n isClick ? this.#highlight() : this.#highlight(EMPTY_OBJECT);\n return true;\n }\n }\n }\n\n #destruct() {\n if (this.#destructed) return;\n\n this.#unwatch?.();\n\n this.#chainedNotifyCallback =\n this.#chainedWatchCallback =\n this.#cursorIndexFromEvent =\n this.#frame =\n this.#highlightSelection =\n this.#lastHighlightRange =\n this.#lastWatchableSnapshot =\n this.#rangeOffsets =\n this.#shiftFactorFromEvent =\n this.#unwatch =\n this.#watchable =\n this.#watchableEffect =\n this.#watchCallback =\n undefined;\n\n this.#config = EMPTY_OBJECT;\n this.#highlightInProgress = this.#pendingWatchNotification = false;\n this.#destructed = true;\n }\n\n #getShiftControlRecordAtIndex(index: number): CalendarGridControlRecord | undefined {\n if (!this.#shiftControlsList || index < 0 || index >= this.#shiftControlsList.length) return;\n\n const control = this.#shiftControlsList[index] as CalendarShiftControl;\n\n if (!this.#shiftControlsHandles[index]) {\n const flags = CalendarShiftControlsFlag[control];\n const shiftOffsetType = Calendar.#getShiftOffsetType(flags);\n const shiftOffsetUnit = Calendar.#getShiftOffsetUnit(flags);\n\n this.#shiftControlsHandles[index] = (...args: any[]) =>\n Calendar.#withNotifyEffect.call(this, (...args: any[]) => {\n const canShift = this.#canShiftInDirection(shiftOffsetUnit);\n if (!(canShift && args.length)) return canShift;\n\n const shiftFactor = this.#getShiftFactorFromEvent(control, args[0] as Event);\n if (shiftFactor === undefined) return false;\n\n this.#frame?.shiftFrameByOffset(shiftOffsetUnit * shiftFactor, shiftOffsetType);\n return true;\n })(...args);\n }\n\n return [control, this.#shiftControlsHandles[index] as CalendarGridControlRecord[1]];\n }\n\n #getShiftFactorFromEvent(target: CalendarShiftControl, evt?: Event): number | undefined {\n if (!(this.#frame && isFunction(this.#watchCallback))) return;\n\n if (evt instanceof MouseEvent) {\n if (evt.type !== 'click') return;\n } else if (evt instanceof KeyboardEvent) {\n if (!Calendar.#SHIFT_ACTIVATION_KEYS.includes(evt.code as InteractionKeyCode)) return;\n } else return;\n\n let shiftFactor = 1;\n\n if (isFunction(this.#shiftFactorFromEvent)) {\n const factor = Number(this.#shiftFactorFromEvent.call(this.#currentConfig, evt, target));\n shiftFactor = Number.isInteger(factor) && factor >= 1 ? factor : shiftFactor;\n }\n\n return shiftFactor;\n }\n\n #highlight(secretFauxHighlightingHint?: any) {\n if (this.#destructed || !this.#frame) return;\n\n switch (this.#highlightSelection) {\n case SELECT_MANY:\n case SELECT_ONE:\n break;\n case SELECT_NONE:\n default:\n return;\n }\n\n const cursor = this.#frame.cursor;\n const fromTimestamp = this.#frame.getTimestampAtIndex(cursor);\n const toTimestamp = this.#frame.getTimestampAtIndex(cursor + 1) - 1;\n const range = this.#rangeOffsets;\n\n if (this.#highlightSelection === SELECT_ONE || this.#frame.blankSelection || range) {\n this.#highlightInProgress = !(this.#highlightSelection === SELECT_ONE || range);\n\n if (this.#highlightSelection === SELECT_MANY && range) {\n const selectionDirection = toTimestamp >= (this.#frame.selectionEnd as number) ? SELECTION_FROM : SELECTION_TO;\n\n selectionDirection === SELECTION_FROM\n ? this.#frame.updateSelection(toTimestamp, SELECTION_TO)\n : this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n\n this.#rangeHighlight(\n (selectionDirection === SELECTION_FROM ? this.#frame.selectionEnd : this.#frame.selectionStart) as number,\n selectionDirection,\n range\n );\n } else {\n this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n }\n } else {\n const isFauxHighlighting = secretFauxHighlightingHint === EMPTY_OBJECT;\n\n if (!isFauxHighlighting) this.#highlightInProgress = false;\n\n if (fromTimestamp <= this.#frame.selectionStart!) {\n const selectionStartDay = new Date(this.#frame.selectionStart!);\n const selectionStartDayEndTimestamp = selectionStartDay.setDate(selectionStartDay.getDate() + 1) - 1;\n\n if (fromTimestamp === this.#frame.selectionStart! && toTimestamp <= selectionStartDayEndTimestamp) {\n this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n }\n\n this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n } else {\n const selectionEndDay = new Date(this.#frame.selectionEnd!);\n const selectionEndDayStartTimestamp = selectionEndDay.setHours(0, 0, 0, 0);\n\n if (fromTimestamp <= this.#frame.selectionEnd! && fromTimestamp >= selectionEndDayStartTimestamp) {\n this.#frame.updateSelection(fromTimestamp, SELECTION_FROM);\n }\n\n this.#frame.updateSelection(toTimestamp, SELECTION_TO);\n }\n\n if (isFauxHighlighting) return;\n }\n\n this.#highlightFrom = this.#frame.selectionStart;\n this.#highlightTo = this.#frame.selectionEnd;\n }\n\n #clearHighlight() {\n this.#frame?.clearSelection();\n this.#highlightInProgress = false;\n this.#highlightFrom = this.#highlightTo = undefined;\n }\n\n #rangeHighlight(\n time: number,\n selectionDirection: typeof SELECTION_FROM | typeof SELECTION_TO,\n rangeOffsets?: [number, number, number, number, number, number]\n ) {\n if (!this.#frame) return;\n\n const date = new Date(time);\n const direction = selectionDirection === SELECTION_FROM ? -1 : 1;\n const [years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0] = rangeOffsets ?? [];\n\n date.setFullYear(date.getFullYear() + years * direction, date.getMonth() + months * direction, date.getDate() + days * direction);\n date.setHours(date.getHours() + hours * direction, date.getMinutes() + minutes * direction, date.getSeconds() + seconds * direction);\n\n this.#frame.updateSelection(date.getTime() - direction, selectionDirection);\n }\n\n #restoreHighlight() {\n this.#highlightFrom && this.#frame?.updateSelection(this.#highlightFrom, SELECTION_FROM);\n this.#highlightTo && this.#frame?.updateSelection(this.#highlightTo, SELECTION_TO);\n this.#highlightInProgress = false;\n }\n\n #reframe() {\n if (!this.#frame) return;\n\n this.#frame.timeslice = this.#config.timeslice;\n this.#frame.dynamicBlockHeight = !this.#config.fixedBlockHeight;\n this.#frame.firstWeekDay = this.#config.firstWeekDay;\n this.#frame.locale = this.#config.locale;\n this.#frame.size = this.#config.blocks;\n this.#frame.trackCurrentDay = this.#config.trackCurrentDay;\n\n this.#restoreHighlight();\n }\n\n #refreshHighlighting() {\n switch (this.#highlightSelection) {\n case SELECT_MANY:\n if (this.#frame?.blankSelection === false && this.#rangeOffsets) {\n this.#rangeHighlight(this.#frame?.selectionStart as number, SELECTION_TO, this.#rangeOffsets);\n }\n break;\n case SELECT_ONE:\n if (this.#frame?.blankSelection === false) {\n this.#frame?.updateSelection(new Date(this.#frame?.selectionStart as number).setHours(23, 59, 59, 999), SELECTION_TO);\n }\n break;\n case SELECT_NONE:\n default:\n this.#clearHighlight();\n return;\n }\n }\n\n #refreshShiftControls() {\n switch (this.#watchable?.snapshot.controls) {\n case CONTROLS_ALL:\n this.#shiftControlsList = Calendar.#SHIFT_ALL_CONTROLS;\n break;\n case CONTROLS_MINIMAL:\n this.#shiftControlsList = Calendar.#SHIFT_MINIMAL_CONTROLS;\n break;\n case CONTROLS_NONE:\n default:\n this.#shiftControlsList = undefined;\n }\n\n this.#shiftControlsHandles.length = 0;\n this.#shiftControlsHandles.length = this.#shiftControlsList?.length ?? 0;\n }\n}\n","import Calendar from './Calendar';\nimport { CONTROLS_ALL, CONTROLS_MINIMAL, CONTROLS_NONE, RANGE_FROM, RANGE_TO, SELECT_MANY, SELECT_NONE, SELECT_ONE } from '../constants';\nimport { enumerable, isFunction, isNumber, struct } from '@src/utils/common';\nimport timeslice, { sinceNow, UNBOUNDED_SLICE, untilNow } from '../timeslice';\nimport { CalendarFacade } from '../types';\n\nconst calendar = (() => {\n const calendar = (init => {\n const { grid, kill } = new Calendar();\n\n if (isNumber(init)) grid.config({ blocks: init });\n else if (isFunction(init))\n Promise.resolve().then(() => {\n grid.config.watch = init;\n });\n else grid.config(init);\n\n return struct({\n grid: enumerable(grid),\n kill: enumerable(kill),\n }) as ReturnType<CalendarFacade>;\n }) as CalendarFacade;\n\n return Object.defineProperties(calendar, {\n controls: {\n value: struct({\n ALL: { value: CONTROLS_ALL },\n MINIMAL: { value: CONTROLS_MINIMAL },\n NONE: { value: CONTROLS_NONE },\n }),\n },\n highlight: {\n value: struct({\n ONE: { value: SELECT_ONE },\n MANY: { value: SELECT_MANY },\n NONE: { value: SELECT_NONE },\n }),\n },\n slice: {\n value: Object.defineProperties(timeslice.bind(null), {\n FROM: { value: RANGE_FROM },\n TO: { value: RANGE_TO },\n UNBOUNDED: { value: UNBOUNDED_SLICE },\n SINCE_NOW: { get: sinceNow },\n UNTIL_NOW: { get: untilNow },\n }),\n },\n });\n})();\n\nexport default calendar;\n","import { memo } from 'preact/compat';\nimport { CalendarControlsProps } from './types';\nimport calendar from '../../calendar';\nimport { isFunction } from '@src/utils/common';\n\nconst CalendarControls = ({ config, grid: { controls }, renderer }: CalendarControlsProps) => {\n if (config.controls === calendar.controls.NONE || !isFunction(renderer)) return null;\n return <>{controls.map(([control, handle]) => renderer(control, handle))}</>;\n};\n\nexport default memo(CalendarControls);\n","import { useCallback } from 'preact/hooks';\nimport useReflex, { ReflexAction } from '../useReflex';\n\nconst useFocusCursor = (callback?: ReflexAction<Element>) => {\n const finallyCallback = useCallback(\n ((current, previous) => {\n if (previous instanceof Element) previous.setAttribute('tabindex', '-1');\n if (current instanceof Element) {\n current.setAttribute('tabindex', '0');\n // schedule a microtask to focus the current element\n Promise.resolve().then(() => (current as HTMLElement)?.focus());\n }\n }) as ReflexAction<Element>,\n []\n );\n\n return useReflex<Element>(\n useCallback(\n (current, previous) => {\n try {\n callback?.(current, previous);\n } finally {\n finallyCallback(current, previous);\n }\n },\n [callback]\n )\n );\n};\n\nexport default useFocusCursor;\n","import { Ref } from 'preact';\nimport { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'preact/hooks';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport type { ReflexAction } from '@src/hooks/useReflex';\nimport { getDateObjectFromTimestamp } from '../calendar/utils';\nimport { isFunction } from '@src/utils/common';\nimport { EMPTY_OBJECT } from '@src/utils/common/constants';\nimport { CalendarGridCursorRootProps, CalendarHandle, CalendarProps } from '../types';\nimport useFocusCursor from '@src/hooks/element/useFocusCursor';\nimport calendar from '../calendar';\n\nconst useCalendar = (\n {\n blocks,\n controls,\n dynamicBlockRows,\n firstWeekDay,\n highlight,\n locale,\n onHighlight,\n originDate,\n renderControl,\n sinceDate,\n trackCurrentDay,\n untilDate,\n useYearView,\n }: CalendarProps,\n ref: Ref<unknown>\n) => {\n const { i18n } = useCoreContext();\n const [lastMutationTimestamp, setLastMutationTimestamp] = useState<DOMHighResTimeStamp>(performance.now());\n const timeslice = useMemo(() => calendar.slice(sinceDate, untilDate), [sinceDate, untilDate]);\n const config = useRef<ReturnType<typeof grid.config>>(EMPTY_OBJECT);\n\n const activeControls = useMemo(\n () => controls ?? (isFunction(renderControl) ? calendar.controls.MINIMAL : calendar.controls.NONE),\n [controls, renderControl]\n );\n\n const activeHighlight = useMemo(\n () => highlight ?? (isFunction(onHighlight) ? calendar.highlight.ONE : calendar.highlight.NONE),\n [highlight, onHighlight]\n );\n\n const { grid, kill } = useMemo(() => {\n const { grid, kill } = calendar(function () {\n setLastMutationTimestamp(performance.now());\n config.current = this;\n\n if (highlightStart === grid.highlight.from && highlightEnd === grid.highlight.to) return;\n\n highlightStart = grid.highlight.from;\n highlightEnd = grid.highlight.to;\n onHighlight?.(highlightStart, highlightEnd);\n });\n\n let { from: highlightStart, to: highlightEnd } = grid.highlight;\n\n grid.config.cursorIndex = (evt: Event): number | undefined => {\n let element: HTMLElement | null = evt.target as HTMLElement;\n\n while (element && element !== evt.currentTarget) {\n const index = Number(element.dataset.cursorPosition);\n if (Number.isFinite(index)) return index;\n element = element.parentNode as HTMLElement;\n }\n };\n\n grid.config.shiftFactor = function (evt: Event) {\n if (this.controls !== calendar.controls.MINIMAL) return;\n if ((evt as MouseEvent)?.shiftKey) return 12;\n if ((evt as MouseEvent)?.altKey) return this.blocks;\n return 1;\n };\n\n return { grid, kill };\n }, []);\n\n const cursorRootProps = useMemo(() => {\n const pointerHandle = (evt: Event) => {\n grid.cursor(evt);\n };\n\n return {\n onClickCapture: pointerHandle,\n onMouseOverCapture: pointerHandle,\n onPointerOverCapture: pointerHandle,\n onKeyDownCapture: (evt: KeyboardEvent) => {\n grid.cursor(evt) && evt.preventDefault();\n },\n } as CalendarGridCursorRootProps;\n }, [grid]);\n\n const cursorElementRef = useFocusCursor(\n useCallback(\n ((current, previous) => {\n if (previous instanceof Element) previous.removeAttribute('aria-selected');\n if (current instanceof Element) current.setAttribute('aria-selected', 'true');\n }) as ReflexAction<Element>,\n []\n )\n );\n\n useImperativeHandle(\n ref,\n () => {\n const { from, to } = grid?.highlight || EMPTY_OBJECT;\n return {\n clear: () => {\n grid?.highlight && (grid.highlight.from = undefined);\n },\n get config() {\n return { ...(config.current ?? EMPTY_OBJECT) };\n },\n get from() {\n return getDateObjectFromTimestamp(from);\n },\n set from(date) {\n grid?.highlight && date && (grid.highlight.from = date.getTime());\n },\n get to() {\n return getDateObjectFromTimestamp(to);\n },\n set to(date) {\n grid?.highlight && date && (grid.highlight.to = date.getTime());\n },\n } as CalendarHandle;\n },\n [grid, lastMutationTimestamp]\n );\n\n useEffect(() => {\n grid.config({\n blocks,\n controls: activeControls,\n firstWeekDay,\n fixedBlockHeight: !dynamicBlockRows,\n highlight: activeHighlight,\n locale: locale ?? i18n.locale,\n minified: useYearView,\n timeslice,\n trackCurrentDay,\n });\n }, [activeControls, activeHighlight, blocks, dynamicBlockRows, firstWeekDay, grid, i18n, locale, timeslice, trackCurrentDay, useYearView]);\n\n useEffect(() => {\n const origins = ([] as number[])\n .concat(originDate as ConcatArray<number>)\n .slice(0, 2)\n .map(Number)\n .filter(Boolean);\n if (origins[0]) grid.highlight.from = +origins[0];\n if (origins[1]) grid.highlight.to = +origins[1];\n return kill;\n }, []);\n\n return { cursorElementRef, cursorRootProps, grid };\n};\n\nexport default useCalendar;\n","import { forwardRef, memo } from 'preact/compat';\nimport CalendarGrid from './components/CalendarGrid';\nimport CalendarControls from './components/CalendarControls';\nimport useCalendar from './hooks/useCalendar';\nimport { CalendarProps } from './types';\nimport './Calendar.scss';\n\nconst Calendar = forwardRef((props: CalendarProps, ref) => {\n const calendar = useCalendar(props, ref);\n const config = calendar.grid.config();\n\n return (\n <div role=\"none\">\n <CalendarControls config={config} grid={calendar.grid} renderer={props.renderControl} />\n <CalendarGrid\n ref={calendar.cursorElementRef}\n config={config}\n cursorRootProps={calendar.cursorRootProps}\n grid={calendar.grid}\n onlyCellsWithin={props.onlyCellsWithin}\n prepare={props.prepare}\n />\n </div>\n );\n});\n\nexport default memo(Calendar);\n","import { Ref } from 'preact';\nimport { SVGProps } from 'preact/compat';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\n\nconst ChevronUp = fixedForwardRef(({ title, ...props }: Omit<SVGProps<SVGElement>, 'ref'>, ref: Ref<SVGSVGElement>) => (\n <svg {...props} ref={ref} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n {title && <title>{title}</title>}\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M13.53 11.03c-.3.3-.77.3-1.06 0L8 6.56l-4.47 4.47a.75.75 0 1 1-1.06-1.06l5-5c.3-.3.77-.3 1.06 0l5 5c.3.3.3.77 0 1.06Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n));\n\nexport default ChevronUp;\n","import { VNode } from 'preact';\nimport { createPortal } from 'preact/compat';\nimport { useMemo, useState } from 'preact/hooks';\nimport useReflex, { Nullable, Reflexable } from '../useReflex';\n\nconst useDetachedRender = (callback: (targetElement: Element, ...args: any[]) => VNode | null, targetRef?: Nullable<Reflexable<Element>>) => {\n const [render, setRender] = useState<(...args: any[]) => VNode | null>();\n\n const renderTarget = useReflex<Element>(\n useMemo(() => {\n const render =\n (targetElement: Element) =>\n (...args: any[]) => {\n const jsx = callback(targetElement, ...args);\n return jsx && createPortal(jsx, targetElement);\n };\n\n setRender(undefined);\n\n return targetElement => setRender(targetElement instanceof Element ? () => render(targetElement) : undefined);\n }, [callback, targetRef]),\n targetRef\n );\n\n return [render, renderTarget] as const;\n};\n\nexport default useDetachedRender;\n","import { ButtonVariant } from '@src/components/internal/Button/types';\nimport { useCallback } from 'preact/hooks';\nimport { isFunction } from '@src/utils/common';\nimport ChevronDown from '@src/components/internal/SVGIcons/ChevronDown';\nimport ChevronUp from '@src/components/internal/SVGIcons/ChevronUp';\nimport { CalendarControlRenderer, CalendarRenderControl } from '../types';\nimport useCoreContext from '../../../../core/Context/useCoreContext';\nimport useDetachedRender from '../../../../hooks/element/useDetachedRender';\nimport Button from '../../Button';\n\nconst useCalendarControlsRendering = (renderControl?: CalendarRenderControl) => {\n const { i18n } = useCoreContext();\n\n return useDetachedRender(\n useCallback(\n ((targetElement, control, handle) => {\n if (!(targetElement instanceof HTMLElement)) return null;\n if (isFunction(renderControl)) return renderControl(control, handle);\n\n let directionModifier: string;\n let labelModifier: 'next' | 'previous';\n let Chevron: typeof ChevronDown | typeof ChevronUp;\n\n switch (control) {\n case 'PREV':\n directionModifier = 'prev';\n labelModifier = 'previous';\n Chevron = ChevronUp;\n break;\n case 'NEXT':\n directionModifier = labelModifier = 'next';\n Chevron = ChevronDown;\n break;\n default:\n return null;\n }\n\n const shouldRenderControl = handle();\n\n return shouldRenderControl ? (\n <Button\n aria-label={i18n.get(`calendar.${labelModifier}Month`)}\n variant={ButtonVariant.TERTIARY}\n disabled={!shouldRenderControl}\n classNameModifiers={['circle', directionModifier]}\n iconButton={true}\n key={control}\n onClick={handle}\n >\n <Chevron role=\"presentation\" />\n </Button>\n ) : null;\n }) as CalendarControlRenderer,\n [i18n, renderControl]\n )\n );\n};\n\nexport default useCalendarControlsRendering;\n","import cx from 'classnames';\nimport { forwardRef } from 'preact/compat';\nimport { Ref, useCallback, useMemo, useState } from 'preact/hooks';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { EMPTY_OBJECT, noop } from '@src/utils/common';\nimport useReflex from '@src/hooks/useReflex';\nimport useTimezone from '@src/components/internal/Calendar/hooks/useTimezone';\nimport { DEFAULT_FIRST_WEEK_DAY } from '@src/components/internal/Calendar/calendar/timerange/presets/shared/offsetWeek';\nimport { DateFilterProps } from '@src/components/internal/FilterBar/filters/DateFilter/types';\nimport TimeRangeSelector from './components/TimeRangeSelector';\nimport Calendar from '../Calendar';\nimport calendar from '../Calendar/calendar';\nimport useCalendarControlsRendering from '../Calendar/hooks/useCalendarControlsRendering';\nimport { CalendarHandle, CalendarProps } from '../Calendar/types';\nimport './DatePicker.scss';\n\nexport type DatePickerProps = CalendarProps &\n Pick<DateFilterProps, 'now' | 'selectedPresetOption' | 'showTimezoneInfo' | 'timeRangePresetOptions' | 'timezone'> & {\n onPresetOptionSelected?: (option: string) => any;\n };\n\nconst DatePicker = forwardRef((props: DatePickerProps, ref) => {\n const { i18n } = useCoreContext();\n const [controlsRenderer, controlsContainerRef] = useCalendarControlsRendering(props.renderControl);\n const [lastUpdatedTimestamp, setLastUpdatedTimestamp] = useState<DOMHighResTimeStamp>(performance.now());\n\n const withTimezone = useMemo(() => props.showTimezoneInfo !== false, [props.showTimezoneInfo]);\n const { clockTime: time, GMTOffset: offset } = useTimezone({ timezone: props.timezone, withClock: withTimezone });\n\n const datePickerClassName = useMemo(() => cx([{ 'adyen-pe-datepicker--with-timezone': withTimezone }, 'adyen-pe-datepicker']), [withTimezone]);\n const timezoneI18nOptions = useMemo(() => (withTimezone ? { values: { offset, time } } : EMPTY_OBJECT), [offset, time, withTimezone]);\n\n const calendarRef = useReflex<CalendarHandle>(noop, ref as Ref<CalendarHandle>);\n\n const onHighlight = useCallback(() => {\n setLastUpdatedTimestamp(performance.now());\n\n if (calendarRef.current?.from && calendarRef.current?.to) {\n props.onHighlight?.(+calendarRef.current?.from, +calendarRef.current?.to);\n }\n }, [setLastUpdatedTimestamp, props.onHighlight]);\n\n return (\n <div className={datePickerClassName}>\n <div className={'adyen-pe-datepicker__selector-container'}>\n <TimeRangeSelector\n now={props.now}\n calendarRef={calendarRef}\n onTimeRangeSelected={props.onPresetOptionSelected}\n options={props.timeRangePresetOptions}\n selectedOption={props.selectedPresetOption}\n timestamp={lastUpdatedTimestamp}\n timezone={props.timezone}\n />\n </div>\n <div ref={controlsContainerRef} role=\"group\" className={'adyen-pe-datepicker__controls'} aria-label={i18n.get('calendar.controls')} />\n <Calendar\n {...props}\n ref={calendarRef}\n firstWeekDay={DEFAULT_FIRST_WEEK_DAY}\n dynamicBlockRows={true}\n onlyCellsWithin={true}\n controls={props.controls ?? calendar.controls.MINIMAL}\n highlight={props.highlight ?? calendar.highlight.MANY}\n onHighlight={onHighlight}\n renderControl={controlsRenderer}\n />\n {withTimezone && <div className={'adyen-pe-datepicker__timezone'}>{i18n.get('calendar.timezone', timezoneI18nOptions)}</div>}\n </div>\n );\n});\n\nexport default DatePicker;\n","import useButton from '@src/components/internal/Button/hooks/useButton';\nimport { TypographyElement, TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport { parseClassName } from '@src/utils/class-name-utils';\nimport { parseBoolean } from '@src/utils/common';\nimport { ForwardedRef, forwardRef } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { FilterButtonProps } from './types';\nimport './FilterButton.scss';\n\nconst DEFAULT_FILTER_BUTTON_CLASSNAME = 'adyen-pe-filter-button';\n\nfunction FilterButton(\n { className, classNameModifiers = [], children, disabled, onClick, ...restAttributes }: FilterButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const classNameValue = useMemo(() => parseClassName('', className) || '', [className]);\n const disabledValue = useMemo(() => parseBoolean(disabled), [disabled]);\n\n const { classes, click } = useButton(classNameValue, classNameModifiers, DEFAULT_FILTER_BUTTON_CLASSNAME, disabledValue, onClick);\n\n return (\n <button className={classes} ref={ref} onClick={click} {...restAttributes}>\n <Typography el={TypographyElement.SPAN} variant={TypographyVariant.BODY} stronger={true}>\n {children}\n </Typography>\n </button>\n );\n}\nexport default forwardRef(FilterButton);\n","import { ARIA_ERROR_SUFFIX } from '@src/core/Errors/constants';\nimport { hasOwnProperty } from '@src/utils/common';\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport { ForwardedRef, forwardRef, TargetedEvent } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\nimport { InputBaseProps } from './types';\nimport './FormFields.scss';\n\nfunction InputBase(\n { onInput, onKeyUp, trimOnBlur, onBlurHandler, onBlur, onFocusHandler, errorMessage, ...props }: InputBaseProps,\n ref: ForwardedRef<HTMLInputElement | null>\n) {\n const { autoCorrect, classNameModifiers, isInvalid, isValid, readonly = false, spellCheck, type, uniqueId, isCollatingErrors, disabled } = props;\n\n /**\n * To avoid confusion with misplaced/misdirected onChange handlers - InputBase only accepts onInput, onBlur & onFocus handlers.\n * The first 2 being the means by which we expect useForm--handleChangeFor validation functionality to be applied.\n */\n if (hasOwnProperty(props, 'onChange')) {\n console.error('Error: Form fields that rely on InputBase may not have an onChange property');\n }\n\n const handleInput = useCallback(\n (event: TargetedEvent<HTMLInputElement, Event>) => {\n onInput?.(event);\n },\n [onInput]\n );\n\n const handleKeyUp = useCallback(\n (event: h.JSX.TargetedKeyboardEvent<HTMLInputElement>) => {\n if (onKeyUp) onKeyUp(event);\n },\n [onKeyUp]\n );\n\n const handleBlur = useCallback(\n (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n onBlurHandler?.(event); // From Field component\n\n if (trimOnBlur) {\n (event.target as HTMLInputElement).value = (event.target as HTMLInputElement).value.trim(); // needed to trim trailing spaces in field (leading spaces can be done via formatting)\n }\n\n onBlur?.(event);\n },\n [onBlur, onBlurHandler, trimOnBlur]\n );\n\n const handleFocus = useCallback(\n (event: h.JSX.TargetedEvent<HTMLInputElement>) => {\n onFocusHandler?.(event); // From Field component\n },\n [onFocusHandler]\n );\n\n const inputClassNames = classNames(\n 'adyen-pe-input',\n [`adyen-pe-input--${type}`],\n props.className,\n {\n 'adyen-pe-input--invalid': isInvalid,\n 'adyen-pe-input--valid': isValid,\n },\n classNameModifiers?.map(m => `adyen-pe-input--${m}`)\n );\n\n // Don't spread classNameModifiers etc to input element (it ends up as an attribute on the element itself)\n const { classNameModifiers: cnm, uniqueId: uid, isInvalid: iiv, isValid: iv, isCollatingErrors: ce, ...newProps } = props;\n\n return (\n <>\n <input\n id={uniqueId}\n {...newProps}\n type={type}\n className={inputClassNames}\n readOnly={readonly}\n aria-describedby={isCollatingErrors ? undefined : `${uniqueId}${ARIA_ERROR_SUFFIX}`}\n aria-invalid={isInvalid}\n onInput={handleInput}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n disabled={disabled}\n ref={ref}\n />\n {isInvalid && errorMessage && (\n <span className=\"adyen-pe-input__invalid-value\" id={`${uniqueId}${ARIA_ERROR_SUFFIX}`}>\n {errorMessage}\n </span>\n )}\n </>\n );\n}\n\nInputBase.defaultProps = {\n type: 'text',\n classNameModifiers: [],\n onInput: () => {},\n};\n\nexport default forwardRef(InputBase);\n","import InputBase from './InputBase';\nimport { InputBaseProps } from './types';\nimport { ForwardedRef, forwardRef } from 'preact/compat';\n\nexport default forwardRef(function InputText(props: InputBaseProps, ref: ForwardedRef<HTMLInputElement | null>) {\n return <InputBase classNameModifiers={props.classNameModifiers} {...props} ref={ref} aria-required={props.required} type=\"text\" />;\n});\n","import { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport FilterButton from '@src/components/internal/FilterBar/components/FilterButton/FilterButton';\nimport Popover from '@src/components/internal/Popover/Popover';\nimport { PopoverContainerPosition, PopoverContainerVariant } from '@src/components/internal/Popover/types';\nimport { TypographyElement, TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport useCommitAction, { CommitAction } from '@src/hooks/useCommitAction';\nimport useUniqueIdentifier from '@src/hooks/element/useUniqueIdentifier';\nimport { isEmpty } from '@src/utils/validator-utils';\nimport { memo } from 'preact/compat';\nimport { Ref, useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport useBooleanState from '../../../../../hooks/useBooleanState';\nimport '../../../FormFields';\nimport InputText from '../../../FormFields/InputText';\nimport { BaseFilterProps, FilterEditModalRenderProps, FilterProps } from './types';\n\nconst isValueEmptyFallback = (value?: string) => {\n return !value || isEmpty(value);\n};\n\nconst renderFallback = (() => {\n const DefaultEditModalBody = <T extends BaseFilterProps>(props: FilterEditModalRenderProps<T>) => {\n const { editAction, name, onChange, onValueUpdated } = props;\n const [currentValue, setCurrentValue] = useState(props.value);\n\n const handleInput = useCallback(\n (e: Event) => {\n const value = (e.target as HTMLInputElement).value.trim();\n setCurrentValue(value);\n onValueUpdated(value);\n },\n [onValueUpdated]\n );\n\n useEffect(() => {\n if (editAction === CommitAction.CLEAR) {\n const value = '';\n setCurrentValue(value);\n onValueUpdated(value);\n onChange(value);\n }\n\n if (editAction === CommitAction.APPLY) {\n onChange(currentValue ?? '');\n }\n }, [currentValue, editAction, onChange, onValueUpdated]);\n\n return <InputText name={name} value={currentValue} onInput={handleInput} />;\n };\n\n return <T extends BaseFilterProps>(props: FilterEditModalRenderProps<T>) => <DefaultEditModalBody<T> {...props} />;\n})();\n\nconst BaseFilter = <T extends BaseFilterProps = BaseFilterProps>({ render, ...props }: FilterProps<T>) => {\n const isSmViewport = useMediaQuery(mediaQueries.down.xs);\n const [editMode, _updateEditMode] = useBooleanState(false);\n const [editModalMounting, updateEditModalMounting] = useBooleanState(false);\n const isValueEmpty = useMemo(() => props.isValueEmpty ?? isValueEmptyFallback, [props.isValueEmpty]);\n const [hasEmptyValue, updateHasEmptyValue] = useBooleanState(isValueEmpty(props.value));\n const [hasInitialValue, updateHasInitialValue] = useBooleanState(false);\n const [valueChanged, updateValueChanged] = useBooleanState(false);\n const [disabledApply, updateDisabledApply] = useBooleanState(isValueEmpty(props.value));\n const targetElement = useUniqueIdentifier() as Ref<Element | null>;\n\n const renderModalBody = useMemo(() => render ?? renderFallback<T>, [render]);\n\n const onValueUpdated = useCallback(\n (currentValue?: string | null) => {\n const hasEmptyValue = isValueEmpty(currentValue ?? undefined);\n updateHasEmptyValue(hasEmptyValue);\n updateDisabledApply(currentValue === null);\n updateValueChanged(hasInitialValue ? currentValue !== props.value : !hasEmptyValue);\n },\n [isValueEmpty, updateHasEmptyValue, updateDisabledApply, updateValueChanged, hasInitialValue, props.value]\n );\n\n const { commitAction, commitActionButtons, committing, resetCommitAction } = useCommitAction({\n applyDisabled: disabledApply || !valueChanged,\n resetDisabled: hasEmptyValue,\n });\n\n const [closeEditDialog, openEditDialog] = useMemo(() => {\n const updateEditMode = (mode: boolean) => () => {\n if (mode === editMode) return;\n\n if (mode) {\n resetCommitAction();\n updateValueChanged(false);\n updateHasInitialValue(false);\n }\n\n _updateEditMode(mode);\n updateEditModalMounting(mode);\n };\n\n return [updateEditMode(false), updateEditMode(true)];\n }, [_updateEditMode, editMode, resetCommitAction, updateEditModalMounting, updateHasInitialValue, updateValueChanged]);\n\n useEffect(() => {\n if (editModalMounting) {\n const hasEmptyValue = isValueEmpty(props.value);\n updateEditModalMounting(false);\n updateHasEmptyValue(hasEmptyValue);\n updateHasInitialValue(!hasEmptyValue);\n }\n }, [props.value, editModalMounting, isValueEmpty, updateEditModalMounting, updateHasEmptyValue, updateHasInitialValue]);\n\n useEffect(() => {\n committing && closeEditDialog();\n updateHasEmptyValue(hasEmptyValue);\n }, [committing, closeEditDialog, updateHasEmptyValue, hasEmptyValue]);\n const isOnlySmDevice = useMediaQuery(mediaQueries.only.sm);\n const isOnlyMdDevice = useMediaQuery(mediaQueries.only.md);\n\n return (\n <>\n <div className={`adyen-pe-filter adyen-pe-filter--${props.type}`}>\n {useMemo(\n () => (\n <FilterButton\n classNameModifiers={[\n ...(props.appliedFilterAmount ? ['with-counter'] : []),\n ...(props.classNameModifiers ?? []),\n ...(editMode ? ['active'] : []),\n ...(hasEmptyValue ? [] : ['has-selection']),\n ]}\n onClick={editMode ? closeEditDialog : openEditDialog}\n tabIndex={0}\n ref={targetElement as Ref<HTMLButtonElement | null>}\n >\n <div className=\"adyen-pe-filter-button__default-container\">\n <Typography\n el={TypographyElement.SPAN}\n variant={TypographyVariant.BODY}\n stronger={true}\n className=\"adyen-pe-filter-button__label\"\n >\n {props.label}\n </Typography>\n {!!props.appliedFilterAmount && (\n <div className=\"adyen-pe-filter-button__counter-wrapper\">\n <Typography\n el={TypographyElement.SPAN}\n variant={TypographyVariant.BODY}\n stronger={true}\n className=\"adyen-pe-filter-button__counter\"\n >\n {props.appliedFilterAmount}\n </Typography>\n </div>\n )}\n </div>\n </FilterButton>\n ),\n [\n props.appliedFilterAmount,\n props.classNameModifiers,\n props.label,\n editMode,\n hasEmptyValue,\n closeEditDialog,\n openEditDialog,\n targetElement,\n ]\n )}\n </div>\n {editMode && (\n <Popover\n actions={commitActionButtons}\n title={props.title?.trim()}\n variant={PopoverContainerVariant.POPOVER}\n modifiers={['filter']}\n open={editMode}\n aria-label={`${props.label}`}\n dismiss={closeEditDialog}\n dismissible={false}\n withContentPadding={props.withContentPadding ?? true}\n divider={true}\n targetElement={targetElement}\n disableFocusTrap={false}\n position={PopoverContainerPosition.BOTTOM}\n containerSize={props.containerSize}\n showOverlay={isSmViewport}\n fitPosition={isOnlySmDevice || isOnlyMdDevice}\n >\n {renderModalBody({ ...props, editAction: commitAction, onValueUpdated })}\n </Popover>\n )}\n </>\n );\n};\n\nexport default memo(BaseFilter);\n","import { UseTimeRangeSelectionConfig } from '@src/components/internal/DatePicker/components/TimeRangeSelector';\nimport { BaseFilterProps } from '../BaseFilter/types';\n\nexport const enum DateRangeFilterParam {\n FROM = 'from',\n TO = 'to',\n}\n\nexport interface DateFilterProps extends BaseFilterProps {\n onChange: (params?: { [P in DateRangeFilterParam | 'selectedPresetOption']?: string }) => void;\n sinceDate?: string;\n untilDate?: string;\n now?: UseTimeRangeSelectionConfig['now'];\n selectedPresetOption?: string;\n showTimezoneInfo?: boolean;\n timeRangePresetOptions: UseTimeRangeSelectionConfig['options'];\n timezone?: UseTimeRangeSelectionConfig['timezone'];\n [DateRangeFilterParam.FROM]?: string;\n [DateRangeFilterParam.TO]?: string;\n}\n","import Localization from '@src/core/Localization';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { CommitAction } from '@src/hooks/useCommitAction';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { CalendarHandle } from '../../../Calendar/types';\nimport DatePicker from '../../../DatePicker';\nimport BaseFilter from '../BaseFilter';\nimport { FilterEditModalRenderProps, FilterProps } from '../BaseFilter/types';\nimport { DateFilterProps, DateRangeFilterParam } from './types';\nimport './DateFilter.scss';\n\nconst formattingOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n} as const;\n\nconst baseDateTimeFormatter = new Intl.DateTimeFormat('en-US', formattingOptions);\n\nconst computeDateFilterValue = (i18n: Localization['i18n'], fromDate?: string, toDate?: string) => {\n const from = fromDate && i18n.fullDate(fromDate);\n const to = toDate && i18n.fullDate(toDate);\n\n if (from && to) return `${from} - ${to}`;\n if (from) return i18n.get('filter.date.since', { values: { date: from } });\n if (to) return i18n.get('filter.date.until', { values: { date: to } });\n};\n\nconst resolveDate = (date?: any) => {\n try {\n return new Date(date || '').toISOString();\n } catch {\n return '';\n }\n};\n\nconst renderDateFilterModalBody = (() => {\n const DateFilterEditModalBody = ({\n editAction,\n from,\n to,\n now,\n onChange,\n onValueUpdated,\n showTimezoneInfo,\n selectedPresetOption,\n timeRangePresetOptions,\n timezone,\n sinceDate,\n untilDate,\n }: FilterEditModalRenderProps<DateFilterProps>) => {\n const { i18n } = useCoreContext();\n const [presetOption, setPresetOption] = useState(selectedPresetOption);\n const originDate = useMemo(() => [new Date(from as string), new Date(to as string)], [from, to]);\n const datePickerRef = useRef<CalendarHandle & { selection?: string }>();\n\n const onHighlight = useCallback(\n (from?: number, to?: number) => {\n onValueUpdated(computeDateFilterValue(i18n, resolveDate(from), resolveDate(to)));\n },\n [i18n, onValueUpdated]\n );\n\n useEffect(() => {\n switch (editAction) {\n case CommitAction.APPLY:\n onChange({\n selectedPresetOption: presetOption,\n [DateRangeFilterParam.FROM]: resolveDate(datePickerRef.current?.from),\n [DateRangeFilterParam.TO]: resolveDate(datePickerRef.current?.to),\n });\n break;\n\n case CommitAction.CLEAR:\n datePickerRef.current?.clear();\n onChange();\n }\n }, [editAction, onChange, presetOption]);\n\n return (\n <DatePicker\n ref={datePickerRef}\n now={now}\n originDate={originDate}\n onHighlight={onHighlight}\n onPresetOptionSelected={setPresetOption}\n selectedPresetOption={selectedPresetOption}\n timeRangePresetOptions={timeRangePresetOptions}\n timezone={timezone}\n showTimezoneInfo={showTimezoneInfo}\n sinceDate={resolveDate(sinceDate)}\n untilDate={resolveDate(untilDate)}\n />\n );\n };\n\n return (props: FilterEditModalRenderProps<DateFilterProps>) => <DateFilterEditModalBody {...props} />;\n})();\n\nconst customDateRangeFormat = (formatter: Intl.DateTimeFormat, fromDate: Date, toDate: Date) => {\n return formatter.formatRange(fromDate, toDate);\n};\n\nexport default function DateFilter<T extends DateFilterProps = DateFilterProps>({ title, from, to, selectedPresetOption, ...props }: FilterProps<T>) {\n const { i18n } = useCoreContext();\n const [selectedPresetOptionValue, setSelectedPresetOption] = useState<string>();\n const [fromValue, setFrom] = useState<string>();\n const [toValue, setTo] = useState<string>();\n\n const onChange = useCallback<NonNullable<typeof props.onChange>>(\n params => {\n const { from, to, selectedPresetOption } = params ?? EMPTY_OBJECT;\n try {\n setSelectedPresetOption(selectedPresetOptionValue ?? selectedPresetOption);\n setFrom(resolveDate(fromValue ?? from));\n setTo(resolveDate(toValue ?? to));\n } finally {\n props.onChange({ from, to, selectedPresetOption });\n }\n },\n [selectedPresetOptionValue, fromValue, toValue, props]\n );\n\n const [customSelection, dateTimeFormatter] = useMemo(() => {\n let formatter = baseDateTimeFormatter;\n try {\n formatter = new Intl.DateTimeFormat(i18n.locale, formattingOptions);\n } catch {\n /* invalid locale: continue with base `en-US` formatter */\n }\n\n return [i18n.get('rangePreset.custom'), formatter] as const;\n }, [i18n]);\n\n useEffect(() => setSelectedPresetOption(selectedPresetOption), [selectedPresetOption]);\n useEffect(() => setFrom(resolveDate(from || Date.now())), [from]);\n useEffect(() => setTo(resolveDate(to || Date.now())), [to]);\n\n const label = useMemo(() => {\n if (selectedPresetOption === customSelection && fromValue && toValue) {\n return customDateRangeFormat(dateTimeFormatter, new Date(fromValue), new Date(toValue));\n }\n\n return selectedPresetOption ?? props.label;\n }, [customSelection, dateTimeFormatter, fromValue, toValue, selectedPresetOption, props.label]);\n\n return (\n <BaseFilter<T>\n {...(props as FilterProps<T>)}\n from={from}\n to={to}\n type={'date'}\n label={label}\n onChange={onChange}\n render={renderDateFilterModalBody}\n selectedPresetOption={selectedPresetOption}\n value={computeDateFilterValue(i18n, from, to)}\n withContentPadding={false}\n />\n );\n}\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport DateFilter from '@src/components/internal/FilterBar/filters/DateFilter';\nimport { DateFilterProps, DateRangeFilterParam } from '@src/components/internal/FilterBar/filters/DateFilter/types';\nimport { UsePaginatedRecords } from '@src/components/internal/Pagination/hooks/types';\nimport { useBalanceAccountSelection } from './BalanceAccountSelector';\nimport useDefaultTransactionsOverviewFilterParams from '../hooks/useDefaultTransactionsOverviewFilterParams';\nimport { TransactionFilterParam } from '../types';\nimport { EMPTY_OBJECT } from '@src/utils/common';\n\ntype TransactionsOverviewDateFilterProps = Pick<\n UsePaginatedRecords<any, string, TransactionFilterParam>,\n 'canResetFilters' | 'filters' | 'updateFilters'\n> &\n ReturnType<typeof useDefaultTransactionsOverviewFilterParams> & {\n balanceAccount?: ReturnType<typeof useBalanceAccountSelection>['activeBalanceAccount'];\n };\n\nconst TransactionsOverviewDateFilter = ({\n balanceAccount,\n canResetFilters,\n defaultParams,\n filters,\n nowTimestamp,\n refreshNowTimestamp,\n updateFilters,\n}: TransactionsOverviewDateFilterProps) => {\n const { i18n } = useCoreContext();\n const defaultTimeRangePreset = useMemo(() => i18n.get(defaultParams.current.defaultTimeRange), [i18n]);\n const [selectedTimeRangePreset, setSelectedTimeRangePreset] = useState(defaultTimeRangePreset);\n\n const updateCreatedDateFilter = useCallback(\n (params: Parameters<DateFilterProps['onChange']>[0] = EMPTY_OBJECT) => {\n for (const [param, value] of Object.entries(params) as [keyof typeof params, (typeof params)[keyof typeof params]][]) {\n switch (param) {\n case 'selectedPresetOption':\n setSelectedTimeRangePreset(value || defaultTimeRangePreset);\n break;\n case DateRangeFilterParam.FROM:\n updateFilters({\n [TransactionFilterParam.CREATED_SINCE]:\n value || defaultParams.current.defaultFilterParams[TransactionFilterParam.CREATED_SINCE],\n });\n break;\n case DateRangeFilterParam.TO:\n updateFilters({\n [TransactionFilterParam.CREATED_UNTIL]:\n value || defaultParams.current.defaultFilterParams[TransactionFilterParam.CREATED_UNTIL],\n });\n break;\n default:\n return;\n }\n\n refreshNowTimestamp();\n }\n },\n [defaultTimeRangePreset, refreshNowTimestamp, updateFilters]\n );\n\n useMemo(() => !canResetFilters && setSelectedTimeRangePreset(defaultTimeRangePreset), [canResetFilters, defaultTimeRangePreset]);\n\n const sinceDate = useMemo(() => {\n const date = new Date(nowTimestamp);\n date.setMonth(date.getMonth() - 24);\n return date.toString();\n }, [nowTimestamp]);\n\n return (\n <DateFilter\n label={i18n.get('dateRange')}\n name={TransactionFilterParam.CREATED_SINCE}\n sinceDate={sinceDate}\n untilDate={new Date(nowTimestamp).toString()}\n from={filters[TransactionFilterParam.CREATED_SINCE]}\n to={filters[TransactionFilterParam.CREATED_UNTIL]}\n selectedPresetOption={selectedTimeRangePreset}\n timeRangePresetOptions={defaultParams.current.timeRangeOptions}\n timezone={balanceAccount?.timeZone}\n onChange={updateCreatedDateFilter}\n showTimezoneInfo={true}\n now={nowTimestamp}\n />\n );\n};\n\nexport default TransactionsOverviewDateFilter;\n","export const BASE_CLASS = 'adyen-pe-transaction-totals';\nexport const ITEM_CLASS = 'adyen-pe-transaction-totals__item';\n","export const BASE_CLASS = 'adyen-pe-expandable-card';\nexport const CONTAINER_CLASS = BASE_CLASS + '__container';\nexport const CONTAINER_BUTTON_CLASS = CONTAINER_CLASS + '--button';\nexport const CONTAINER_FILLED_CLASS = CONTAINER_CLASS + '--filled';\nexport const CONTAINER_HIDDEN_CLASS = CONTAINER_CLASS + '--hidden';\nexport const CONTAINER_OVERLAY_CLASS = CONTAINER_CLASS + '--overlay';\nexport const CONTAINER_OVERLAY_ID = CONTAINER_OVERLAY_CLASS;\nexport const CONTENT_CLASS = BASE_CLASS + '__content';\nexport const CONTENT_EXPANDABLE_CLASS = CONTENT_CLASS + '--expandable';\nexport const CHEVRON_CLASS = BASE_CLASS + '__chevron';\n","export const DEFAULT_BASE_BUTTON_CLASSNAME = 'adyen-pe-base-button';\n","import useButton from '@src/components/internal/Button/hooks/useButton';\nimport { DEFAULT_BASE_BUTTON_CLASSNAME } from '@src/components/internal/BaseButton/constants';\nimport { parseClassName } from '@src/utils/class-name-utils';\nimport { parseBoolean } from '@src/utils/common';\nimport { Ref } from 'preact';\nimport { forwardRef } from 'preact/compat';\nimport { useMemo } from 'preact/hooks';\nimport { ButtonProps } from './types';\nimport './BaseButton.scss';\n\nfunction BaseButton(\n { disabled = false, onClick, classNameModifiers = [], type = 'button', children, className, fullWidth, ...restAttributes }: ButtonProps,\n ref: Ref<HTMLButtonElement>\n) {\n const classNameValue = useMemo(() => parseClassName('', className) || '', [className]);\n const disabledValue = useMemo(() => parseBoolean(disabled), [disabled]);\n\n const { classes, click } = useButton(\n classNameValue,\n [...classNameModifiers, ...(fullWidth ? ['full-width'] : [])],\n DEFAULT_BASE_BUTTON_CLASSNAME,\n disabledValue,\n onClick\n );\n\n return (\n <button className={classes} type={type} disabled={disabled} onClick={click} ref={ref} {...restAttributes}>\n {children}\n </button>\n );\n}\n\nexport default forwardRef(BaseButton);\n","import { ExpandableCardProps } from './types';\nimport { PropsWithChildren } from 'preact/compat';\nimport classNames from 'classnames';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport './ExpandableCard.scss';\nimport ChevronUp from '../SVGIcons/ChevronUp';\nimport ChevronDown from '../SVGIcons/ChevronDown';\nimport {\n BASE_CLASS,\n CHEVRON_CLASS,\n CONTAINER_BUTTON_CLASS,\n CONTAINER_CLASS,\n CONTAINER_FILLED_CLASS,\n CONTAINER_HIDDEN_CLASS,\n CONTAINER_OVERLAY_CLASS,\n CONTAINER_OVERLAY_ID,\n CONTENT_CLASS,\n CONTENT_EXPANDABLE_CLASS,\n} from '@src/components/internal/ExpandableCard/constants';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { useClickOutside } from '@src/hooks/element/useClickOutside';\nimport BaseButton from '@src/components/internal/BaseButton';\n\nconst ExpandableCard = ({ renderHeader, children, filled, fullWidth, ...listeners }: PropsWithChildren<ExpandableCardProps>) => {\n const { i18n } = useCoreContext();\n const [isOpen, setIsOpen] = useState(false);\n const toggleIsOpen = useCallback(() => setIsOpen(isOpen => !isOpen), [setIsOpen]);\n const expandButtonRef = useRef<HTMLButtonElement>(null);\n const isClosedFromOutside = useRef(false);\n const isOpenRef = useRef(isOpen);\n\n const clickOutsideRef = useClickOutside<HTMLElement>(\n undefined,\n useCallback(() => {\n if (isOpen) {\n toggleIsOpen();\n isClosedFromOutside.current = true;\n }\n }, [isOpen, toggleIsOpen])\n );\n\n useEffect(() => {\n if (isOpen) {\n clickOutsideRef.current?.focus();\n } else {\n // We want to manually focus the expand button only when the card is collapsed by inside clicks\n // Therefore we skip the manual focus initially when isOpen is false and when we have outside clicks\n if (isOpenRef.current !== isOpen && !isClosedFromOutside.current) {\n expandButtonRef.current?.focus();\n }\n isClosedFromOutside.current = false;\n }\n isOpenRef.current = isOpen;\n }, [isOpen, clickOutsideRef]);\n\n return (\n <div className={BASE_CLASS}>\n {children ? (\n <>\n <BaseButton\n className={classNames(CONTAINER_CLASS, CONTAINER_BUTTON_CLASS, { [CONTAINER_FILLED_CLASS]: filled })}\n disabled={isOpen}\n fullWidth={fullWidth}\n aria-controls={CONTAINER_OVERLAY_ID}\n aria-expanded={isOpen}\n aria-hidden={isOpen}\n onClick={toggleIsOpen}\n ref={expandButtonRef}\n data-testid={'expand-button'}\n {...listeners}\n >\n <span className=\"adyen-pe-sr-only\">{i18n.get('expandableCard.expand')}</span>\n <div className={classNames(CONTENT_CLASS, CONTENT_EXPANDABLE_CLASS)}>{renderHeader}</div>\n <div className={CHEVRON_CLASS}>\n <ChevronDown role=\"presentation\" />\n </div>\n </BaseButton>\n <BaseButton\n id={CONTAINER_OVERLAY_ID}\n className={classNames(CONTAINER_CLASS, CONTAINER_BUTTON_CLASS, CONTAINER_OVERLAY_CLASS, {\n [CONTAINER_FILLED_CLASS]: filled,\n [CONTAINER_HIDDEN_CLASS]: !isOpen,\n })}\n disabled={!isOpen}\n fullWidth={fullWidth}\n aria-controls={CONTAINER_OVERLAY_ID}\n aria-expanded={isOpen}\n aria-hidden={!isOpen}\n onClick={toggleIsOpen}\n ref={clickOutsideRef}\n data-testid={'collapse-button'}\n {...listeners}\n >\n <span className=\"adyen-pe-sr-only\">{i18n.get('expandableCard.collapse')}</span>\n <div className={classNames(CONTENT_CLASS, CONTENT_EXPANDABLE_CLASS)}>\n {renderHeader}\n <div>{children}</div>\n </div>\n <div className={CHEVRON_CLASS}>\n <ChevronUp role=\"presentation\" />\n </div>\n </BaseButton>\n </>\n ) : (\n <div className={classNames(CONTAINER_CLASS, { [CONTAINER_FILLED_CLASS]: filled })} {...listeners}>\n <div className={CONTENT_CLASS}>{renderHeader}</div>\n </div>\n )}\n </div>\n );\n};\n\nexport default ExpandableCard;\n","export const BASE_CLASS = 'adyen-pe-amount-skeleton';\nexport const MARGIN_CLASS = BASE_CLASS + '--has-margin';\nexport const LOADING_CLASS = BASE_CLASS + '--loading';\n","import classNames from 'classnames';\nimport { BASE_CLASS, LOADING_CLASS, MARGIN_CLASS } from '@src/components/external/TransactionsOverview/components/AmountSkeleton/constants';\nimport './AmountSkeleton.scss';\nimport { FC } from 'preact/compat';\nimport { AmountSkeletonProps } from '@src/components/external/TransactionsOverview/components/AmountSkeleton/types';\n\nexport const AmountSkeleton: FC<AmountSkeletonProps> = ({ hasMargin = false, isLoading = false, width }) => {\n return <span className={classNames(BASE_CLASS, { [LOADING_CLASS]: isLoading, [MARGIN_CLASS]: hasMargin })} style={{ width }}></span>;\n};\n\nexport default AmountSkeleton;\n","export const BASE_CLASS = 'adyen-pe-summary-item';\nexport const LABEL_CONTAINER_CLASS = BASE_CLASS + '__label-container';\nexport const LABEL_CONTAINER_CLASS_LOADING = LABEL_CONTAINER_CLASS + '--loading';\nexport const BODY_CLASS = BASE_CLASS + '--body';\nexport const LABEL_CLASS = BASE_CLASS + '__label';\nexport const PLACEHOLDER_CLASS = BASE_CLASS + '__placeholder';\nexport const AMOUNT_CLASS = BASE_CLASS + '__amount';\n","import {\n LABEL_CLASS,\n LABEL_CONTAINER_CLASS,\n LABEL_CONTAINER_CLASS_LOADING,\n} from '@src/components/external/TransactionsOverview/components/SummaryItem/constants';\nimport { SummaryItemLabelProps } from '@src/components/external/TransactionsOverview/components/SummaryItem/types';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport fixedForwardRef from '@src/utils/fixedForwardRef';\nimport classNames from 'classnames';\nimport { ForwardedRef } from 'preact/compat';\n\nexport const SummaryItemLabel = fixedForwardRef(\n ({ config, i18n, isSkeletonVisible, className, ...restArgs }: SummaryItemLabelProps, ref: ForwardedRef<HTMLSpanElement>) => {\n return (\n <span\n className={classNames(LABEL_CONTAINER_CLASS, className, { [LABEL_CONTAINER_CLASS_LOADING]: isSkeletonVisible })}\n style={{ cursor: 'default' }}\n ref={ref}\n {...restArgs}\n >\n {config.labelKey && (\n <Typography variant={TypographyVariant.CAPTION} className={LABEL_CLASS}>\n {i18n.get(config.labelKey)}\n </Typography>\n )}\n </span>\n );\n }\n);\n","import AmountSkeleton from '@src/components/external/TransactionsOverview/components/AmountSkeleton/AmountSkeleton';\nimport {\n AMOUNT_CLASS,\n BASE_CLASS,\n BODY_CLASS,\n LABEL_CLASS,\n PLACEHOLDER_CLASS,\n} from '@src/components/external/TransactionsOverview/components/SummaryItem/constants';\nimport { SummaryItemLabel } from '@src/components/external/TransactionsOverview/components/SummaryItem/SummaryItemLabel';\nimport { SummaryItemColumnConfig, SummaryItemProps } from '@src/components/external/TransactionsOverview/components/SummaryItem/types';\nimport { Tooltip } from '@src/components/internal/Tooltip/Tooltip';\nimport { TypographyVariant } from '@src/components/internal/Typography/types';\nimport Typography from '@src/components/internal/Typography/Typography';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport classNames from 'classnames';\nimport { useCallback, useEffect } from 'preact/hooks';\nimport './SummaryItem.scss';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\n\nexport const SummaryItem = ({\n columnConfigs,\n isHeader = false,\n isHovered = false,\n isSkeletonVisible = false,\n isLoading = false,\n widths,\n onWidthsSet,\n isEmpty,\n}: SummaryItemProps) => {\n const { i18n } = useCoreContext();\n\n useEffect(() => {\n const newWidths = columnConfigs.map(config => config.ref?.current?.getBoundingClientRect().width ?? 0);\n onWidthsSet(newWidths);\n // We need columnConfigs only for the refs, therefore we don't need to include them in effect dependencies\n // If we do include it though, we run into an infinite loop of re-rendering\n // TODO: Check what causes the infinite loop\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onWidthsSet]);\n\n const getColumnStyle = (index: number) => ({ width: widths && widths[index] ? widths[index] : 'auto' });\n\n const isXsScreen = useMediaQuery(mediaQueries.only.xs);\n\n const typographyVariant = useCallback(\n (config: SummaryItemColumnConfig, isLongValue: boolean) => {\n if (config.valueHasLabelStyle) {\n return TypographyVariant.CAPTION;\n }\n return isLongValue && !isXsScreen ? TypographyVariant.BODY : TypographyVariant.TITLE;\n },\n [isXsScreen]\n );\n\n return (\n <div className={classNames(BASE_CLASS, { [BODY_CLASS]: !isHeader })}>\n {columnConfigs.map((config, index) => {\n const value = config.getValue();\n const isLongValue = !!value && value.length > 12;\n return (\n <div key={index}>\n {isHeader &&\n (config.tooltipLabel ? (\n <Tooltip content={i18n.get(`${config.tooltipLabel}`)} isContainerHovered={isHovered}>\n <SummaryItemLabel config={config} i18n={i18n} isSkeletonVisible={isSkeletonVisible} />\n </Tooltip>\n ) : (\n <SummaryItemLabel config={config} i18n={i18n} isSkeletonVisible={isSkeletonVisible} />\n ))}\n {isSkeletonVisible ? (\n <AmountSkeleton isLoading={isLoading} hasMargin={config.hasSkeletonMargin} width={config.skeletonWidth + 'px'} />\n ) : isEmpty ? (\n <span className={classNames([BASE_CLASS, PLACEHOLDER_CLASS])}></span>\n ) : (\n <div ref={config.ref} style={getColumnStyle(index)}>\n <Typography\n variant={typographyVariant(config, isLongValue)}\n className={classNames({ [LABEL_CLASS]: config.valueHasLabelStyle, [AMOUNT_CLASS]: !config.valueHasLabelStyle })}\n >\n {value}\n </Typography>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n","import { TransactionTotalItemProps } from '@src/components/external/TransactionsOverview/components/TransactionTotalItem/types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { useMemo, useRef } from 'preact/hooks';\nimport { SummaryItemColumnConfig } from '@src/components/external/TransactionsOverview/components/SummaryItem/types';\nimport { SummaryItem } from '@src/components/external/TransactionsOverview/components/SummaryItem/SummaryItem';\n\nexport const TransactionTotalItem = ({\n total,\n hiddenField,\n isHeader = false,\n isHovered = false,\n isSkeleton = false,\n isLoading = false,\n widths,\n onWidthsSet,\n}: TransactionTotalItemProps) => {\n const { i18n } = useCoreContext();\n const incomingRef = useRef<HTMLDivElement>(null);\n const expenseRef = useRef<HTMLDivElement>(null);\n const currencyRef = useRef<HTMLDivElement>(null);\n\n const columnConfigs: SummaryItemColumnConfig[] = useMemo(() => {\n const incomingsConfig: SummaryItemColumnConfig = {\n labelKey: 'totalIncoming',\n ref: incomingRef,\n skeletonWidth: 80,\n getValue: () => total && i18n.amount(total.incomings, total.currency),\n tooltipLabel: 'tooltip.totalIncoming',\n };\n\n const expensesConfig: SummaryItemColumnConfig = {\n labelKey: 'totalOutgoing',\n ref: expenseRef,\n skeletonWidth: 80,\n getValue: () => total && i18n.amount(total.expenses, total.currency),\n tooltipLabel: 'tooltip.totalOutgoing',\n };\n\n return [\n ...(hiddenField !== 'incomings' ? [incomingsConfig] : []),\n ...(hiddenField !== 'expenses' ? [expensesConfig] : []),\n {\n ref: currencyRef,\n skeletonWidth: 40,\n valueHasLabelStyle: true,\n getValue: () => total?.currency,\n },\n ];\n }, [total, hiddenField, i18n]);\n\n return (\n <SummaryItem\n isHovered={isHovered}\n isEmpty={!total}\n columnConfigs={columnConfigs}\n isHeader={isHeader}\n isSkeletonVisible={isSkeleton}\n isLoading={isLoading}\n widths={widths}\n onWidthsSet={onWidthsSet}\n />\n );\n};\n","export const BASE_CLASS = 'adyen-pe-base-list';\n","import './BaseList.scss';\nimport { BASE_CLASS } from '@src/components/internal/BaseList/constants';\nimport { FC } from 'preact/compat';\nimport { BaseListProps } from '@src/components/internal/BaseList/types';\n\nexport const BaseList: FC<BaseListProps> = ({ children }) => {\n return <ul className={BASE_CLASS}>{children}</ul>;\n};\n","import { useCallback, useState } from 'preact/hooks';\n\nexport const useMaxWidthsState = (): [number[], (widths: number[]) => void] => {\n const [maxWidths, setMaxWidths] = useState<number[]>([]);\n const setMaxWidthsConditionally = useCallback((widths: number[]) => {\n setMaxWidths(currentMaxWidths =>\n widths.every(width => !width)\n ? widths\n : widths.map((width, index) => {\n const currentMaxWidth = currentMaxWidths[index];\n return !currentMaxWidth || width > currentMaxWidth ? width : currentMaxWidth;\n })\n );\n }, []);\n return [maxWidths, setMaxWidthsConditionally];\n};\n","import { useState } from 'preact/hooks';\nimport ExpandableCard from '@src/components/internal/ExpandableCard/ExpandableCard';\nimport { memo } from 'preact/compat';\nimport { TransactionTotalItem } from '@src/components/external/TransactionsOverview/components/TransactionTotalItem/TransactionTotalItem';\nimport { BaseList } from '@src/components/internal/BaseList/BaseList';\nimport { useMaxWidthsState } from '@src/components/external/TransactionsOverview/hooks/useMaxWidths';\nimport { ITransactionTotal } from '@src/types';\nimport './TransactionTotals.scss';\n\ntype TotalsCardProps = {\n totals: ITransactionTotal[];\n hiddenField?: 'incomings' | 'expenses';\n isLoading: boolean;\n fullWidth?: boolean;\n};\n\nexport const TotalsCard = memo(({ totals, isLoading, hiddenField, fullWidth }: TotalsCardProps) => {\n const [firstTotal, ...restOfTotals] = totals;\n const [maxWidths, setMaxWidths] = useMaxWidthsState();\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n <ExpandableCard\n renderHeader={\n <TransactionTotalItem\n isHovered={isHovered}\n total={firstTotal}\n hiddenField={hiddenField}\n widths={maxWidths}\n isHeader\n isSkeleton={isLoading}\n isLoading={isLoading}\n onWidthsSet={setMaxWidths}\n />\n }\n fullWidth={fullWidth}\n onMouseEnter={() => setIsHovered(true)}\n onFocus={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onBlur={() => setIsHovered(false)}\n >\n {!isLoading && restOfTotals.length && (\n <BaseList>\n {restOfTotals.map(total => (\n <li key={total.currency}>\n <TransactionTotalItem\n isHovered={isHovered}\n total={total}\n hiddenField={hiddenField}\n widths={maxWidths}\n onWidthsSet={setMaxWidths}\n />\n </li>\n ))}\n </BaseList>\n )}\n </ExpandableCard>\n );\n});\n","import { useSetupEndpoint } from '@src/hooks/useSetupEndpoint/useSetupEndpoint';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { useFetch } from '@src/hooks/useFetch/useFetch';\nimport { OperationParameters } from '@src/types/models/openapi/endpoints';\nimport { MakeFieldValueUndefined } from '@src/utils/types';\nimport { BASE_CLASS, ITEM_CLASS } from '@src/components/external/TransactionsOverview/components/TransactionTotals/constants';\nimport { memo } from 'preact/compat';\nimport { ITransaction } from '@src/types';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport './TransactionTotals.scss';\nimport { TotalsCard } from '@src/components/external/TransactionsOverview/components/TransactionTotals/TotalsCard';\n\ntype TransactionTotalsProps = Required<OperationParameters<'getTransactionTotals'>['query']> & {\n isAvailableCurrenciesFetching: boolean;\n availableCurrencies: ITransaction['amount']['currency'][] | undefined;\n fullWidth?: boolean;\n};\n\nconst TransactionTotals = memo(\n ({\n availableCurrencies,\n isAvailableCurrenciesFetching,\n balanceAccountId,\n createdSince,\n createdUntil,\n categories,\n statuses,\n maxAmount,\n minAmount,\n currencies,\n fullWidth,\n }: MakeFieldValueUndefined<TransactionTotalsProps, 'balanceAccountId' | 'minAmount' | 'maxAmount'>) => {\n const getTransactionTotals = useSetupEndpoint('getTransactionTotals');\n const fetchCallback = useCallback(async () => {\n return getTransactionTotals(EMPTY_OBJECT, {\n query: {\n createdSince,\n createdUntil,\n categories,\n statuses,\n maxAmount,\n minAmount,\n currencies,\n balanceAccountId: balanceAccountId!,\n },\n });\n }, [balanceAccountId, categories, createdSince, createdUntil, currencies, getTransactionTotals, maxAmount, minAmount, statuses]);\n\n const { data, isFetching } = useFetch({\n fetchOptions: useMemo(() => ({ enabled: !!balanceAccountId }), [balanceAccountId]),\n queryFn: fetchCallback,\n });\n const isLoading = !balanceAccountId || isFetching || isAvailableCurrenciesFetching;\n\n const getTotals = useCallback(() => {\n if (!availableCurrencies || !data) {\n return data?.totals;\n }\n\n const partialTotals = availableCurrencies.map(currency => {\n const totalOfCurrency = data.totals.find(total => total.currency === currency);\n return totalOfCurrency || { currency, incomings: 0, expenses: 0 };\n });\n\n return partialTotals.concat(data.totals.filter(total => !partialTotals.includes(total)));\n }, [availableCurrencies, data]);\n\n const totals = getTotals() ?? [];\n const isXsScreen = useMediaQuery(mediaQueries.only.xs);\n\n return (\n <div className={BASE_CLASS}>\n {isXsScreen ? (\n <>\n <div className={ITEM_CLASS}>\n <TotalsCard totals={totals} isLoading={isLoading} hiddenField=\"expenses\" fullWidth={fullWidth} />\n </div>\n <div className={ITEM_CLASS}>\n <TotalsCard totals={totals} isLoading={isLoading} hiddenField=\"incomings\" fullWidth={fullWidth} />\n </div>\n </>\n ) : (\n <TotalsCard totals={totals} isLoading={isLoading} fullWidth={fullWidth} />\n )}\n </div>\n );\n }\n);\n\nexport default TransactionTotals;\n","export const BASE_CLASS = 'adyen-pe-balances';\n","import useCoreContext from '@src/core/Context/useCoreContext';\nimport { useMemo, useRef } from 'preact/hooks';\nimport { BalanceItemProps } from '@src/components/external/TransactionsOverview/components/BalanceItem/types';\nimport { SummaryItemColumnConfig } from '@src/components/external/TransactionsOverview/components/SummaryItem/types';\nimport { SummaryItem } from '@src/components/external/TransactionsOverview/components/SummaryItem/SummaryItem';\n\nexport const BalanceItem = ({ balance, isHeader = false, isSkeleton = false, isLoading = false, widths, onWidthsSet, isEmpty }: BalanceItemProps) => {\n const { i18n } = useCoreContext();\n const amountRef = useRef<HTMLDivElement>(null);\n const currencyRef = useRef<HTMLDivElement>(null);\n const columnConfigs: SummaryItemColumnConfig[] = useMemo(\n () => [\n {\n labelKey: 'accountBalance',\n ref: amountRef,\n skeletonWidth: 80,\n getValue: () => balance && i18n.amount(balance.value, balance.currency),\n },\n {\n ref: currencyRef,\n skeletonWidth: 40,\n valueHasLabelStyle: true,\n getValue: () => balance?.currency,\n },\n ],\n [balance, amountRef, i18n]\n );\n\n return (\n <SummaryItem\n isEmpty={isEmpty}\n columnConfigs={columnConfigs}\n isHeader={isHeader}\n isSkeletonVisible={isSkeleton}\n isLoading={isLoading}\n widths={widths}\n onWidthsSet={onWidthsSet}\n />\n );\n};\n","import { useSetupEndpoint } from '@src/hooks/useSetupEndpoint/useSetupEndpoint';\nimport { useCallback, useEffect, useMemo } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { useFetch } from '@src/hooks/useFetch/useFetch';\nimport { OperationParameters } from '@src/types/models/openapi/endpoints';\nimport { MakeFieldValueUndefined } from '@src/utils/types';\nimport { memo } from 'preact/compat';\nimport { BASE_CLASS } from '@src/components/external/TransactionsOverview/components/Balances/constants';\nimport ExpandableCard from '@src/components/internal/ExpandableCard/ExpandableCard';\nimport { BaseList } from '@src/components/internal/BaseList/BaseList';\nimport { BalanceItem } from '@src/components/external/TransactionsOverview/components/BalanceItem/BalanceItem';\nimport { useMaxWidthsState } from '@src/components/external/TransactionsOverview/hooks/useMaxWidths';\nimport { ITransaction } from '@src/types';\n\ntype TransactionTotalsProps = Required<OperationParameters<'getBalances'>['path']>;\n\ntype BalancesProps = MakeFieldValueUndefined<TransactionTotalsProps, 'balanceAccountId'> & {\n onCurrenciesChange: (currencies: ITransaction['amount']['currency'][] | undefined, isFetching: boolean) => any;\n fullWidth?: boolean;\n};\n\nexport const Balances = memo(({ balanceAccountId, onCurrenciesChange, fullWidth }: BalancesProps) => {\n const getAccountsBalance = useSetupEndpoint('getBalances');\n\n const fetchCallback = useCallback(async () => {\n return getAccountsBalance(EMPTY_OBJECT, {\n path: { balanceAccountId: balanceAccountId! },\n });\n }, [balanceAccountId, getAccountsBalance]);\n\n const { data, error, isFetching } = useFetch({\n fetchOptions: useMemo(() => ({ enabled: !!balanceAccountId }), [balanceAccountId]),\n queryFn: fetchCallback,\n });\n\n const isLoading = !balanceAccountId || isFetching;\n const isEmpty = !!error || !data?.balances.length;\n\n const balances = data?.balances.sort((a, b) => a.currency.localeCompare(b.currency));\n const [firstBalance, ...restOfBalances] = balances ?? [];\n\n const [maxWidths, setMaxWidths] = useMaxWidthsState();\n\n useEffect(() => {\n const currencies = new Set(balances?.map(({ currency }) => currency) || []);\n onCurrenciesChange(Array.from(currencies), isFetching);\n }, [balances, isFetching, onCurrenciesChange]);\n\n return (\n <div className={BASE_CLASS}>\n <ExpandableCard\n renderHeader={\n <BalanceItem\n isEmpty={isEmpty}\n balance={firstBalance}\n widths={maxWidths}\n isHeader\n isSkeleton={isLoading}\n isLoading={isLoading}\n onWidthsSet={setMaxWidths}\n />\n }\n filled\n fullWidth={fullWidth}\n >\n {restOfBalances.length && (\n <BaseList>\n {restOfBalances.map(balance => (\n <li key={balance.currency}>\n <BalanceItem balance={balance} widths={maxWidths} onWidthsSet={setMaxWidths} />\n </li>\n ))}\n </BaseList>\n )}\n </ExpandableCard>\n </div>\n );\n});\n","import { memo } from 'preact/compat';\nimport Select from '@src/components/internal/FormFields/Select';\nimport useBalanceAccountSelection from './useBalanceAccountSelection';\nimport './BalanceAccountSelector.scss';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\n\nconst BalanceAccountSelector = memo(\n ({\n activeBalanceAccount,\n balanceAccountSelectionOptions,\n onBalanceAccountSelection,\n }: Omit<ReturnType<typeof useBalanceAccountSelection>, 'resetBalanceAccountSelection'>) => {\n const isSmViewport = useMediaQuery(mediaQueries.down.xs);\n\n return balanceAccountSelectionOptions && balanceAccountSelectionOptions.length > 1 ? (\n <Select\n popoverClassNameModifiers={['adyen-pe-balance-account-selector']}\n onChange={onBalanceAccountSelection}\n filterable={false}\n multiSelect={false}\n selected={activeBalanceAccount?.id}\n withoutCollapseIndicator={true}\n items={balanceAccountSelectionOptions}\n showOverlay={isSmViewport}\n />\n ) : null;\n }\n);\n\nexport default BalanceAccountSelector;\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport type { SelectItem } from '@src/components/internal/FormFields/Select/types';\nimport type { IBalanceAccountBase } from '@src/types';\n\nconst useBalanceAccountSelection = (balanceAccounts?: IBalanceAccountBase[]) => {\n const [selectedBalanceAccountIndex, setSelectedBalanceAccountIndex] = useState(0);\n const resetBalanceAccountSelection = useCallback(() => setSelectedBalanceAccountIndex(0), [setSelectedBalanceAccountIndex]);\n\n const activeBalanceAccount = useMemo(() => {\n return balanceAccounts?.[selectedBalanceAccountIndex];\n }, [balanceAccounts, selectedBalanceAccountIndex]);\n\n const balanceAccountSelectionOptions = useMemo(\n () =>\n balanceAccounts && balanceAccounts.length > 1\n ? Object.freeze(balanceAccounts.map(({ id }) => ({ id, name: id } as SelectItem)))\n : undefined,\n [balanceAccounts]\n );\n\n const onBalanceAccountSelection = useCallback(\n ({ target }: any) => {\n const balanceAccountId = target?.value;\n const index = balanceAccounts?.findIndex(({ id }) => id === balanceAccountId);\n if (index! >= 0) setSelectedBalanceAccountIndex(index!);\n },\n [balanceAccounts, setSelectedBalanceAccountIndex]\n );\n\n return { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection, resetBalanceAccountSelection } as const;\n};\n\nexport default useBalanceAccountSelection;\n","import { memo } from 'preact/compat';\nimport Select from '@src/components/internal/FormFields/Select';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\nimport type { SelectProps } from '@src/components/internal/FormFields/Select/types';\nimport useMultiSelectionFilter from './useMultiSelectionFilter';\n\nconst MultiSelectionFilter = memo(\n <FilterParam extends string = string, FilterValue extends string = string>({\n placeholder,\n selection,\n selectionOptions,\n updateSelection,\n }: ReturnType<typeof useMultiSelectionFilter<FilterParam, FilterValue>> & Pick<SelectProps<any>, 'placeholder'>) => {\n const isSmViewport = useMediaQuery(mediaQueries.down.xs);\n const isOnlySmDevice = useMediaQuery(mediaQueries.only.sm);\n const isOnlyMdDevice = useMediaQuery(mediaQueries.only.md);\n\n return selectionOptions && selectionOptions.length > 1 ? (\n <Select\n onChange={updateSelection}\n filterable={false}\n multiSelect={true}\n placeholder={placeholder}\n selected={selection}\n withoutCollapseIndicator={true}\n items={selectionOptions}\n showOverlay={isSmViewport}\n fitPosition={isOnlyMdDevice || isOnlySmDevice}\n />\n ) : null;\n }\n);\n\nexport default MultiSelectionFilter;\n","import { EMPTY_ARRAY } from '@src/utils/common';\nimport { SelectItem } from '@src/components/internal/FormFields/Select/types';\nimport { SelectionOptionsList } from './types';\n\nexport const listFrom = <T extends string = string>(value?: string | any[]) => {\n const stringedValue = `${value || ''}`.trim();\n return (stringedValue ? stringedValue.split(/(?:\\s*,\\s*)+/).filter(Boolean) : EMPTY_ARRAY) as T[];\n};\n\nexport const selectionOptionsFor = <T extends string = string>(list: SelectionOptionsList<T>) =>\n Object.freeze(list.map(id => ({ id, name: id } as SelectItem)));\n","import { useCallback, useMemo, useState } from 'preact/hooks';\nimport { listFrom, selectionOptionsFor } from './utils';\nimport type { SelectionOptionsList, UseMultiSelectionFilterConfig, UseMultiSelectionFilterConfigWithoutValues } from './types';\n\nexport const useMultiSelectionFilter = <FilterParam extends string = string, FilterValue extends string = string>({\n filterParam,\n filterValues,\n filters,\n defaultFilters,\n updateFilters,\n}: UseMultiSelectionFilterConfig<FilterParam, FilterValue>) => {\n const selection = useMemo(() => {\n return listFrom<FilterValue>(filters?.[filterParam] ?? defaultFilters?.[filterParam] ?? '');\n }, [defaultFilters, filters, filterParam]);\n\n const selectionOptions = useMemo(() => filterValues && selectionOptionsFor(filterValues), [filterValues]);\n\n const updateSelection = useCallback(\n ({ target }: any) => {\n updateFilters?.({ [filterParam]: target?.value || '' });\n },\n [updateFilters, filterParam]\n );\n\n return { selection, selectionOptions, updateSelection } as const;\n};\n\nexport const useMultiSelectionFilterWithoutValues = <FilterParam extends string = string, FilterValue extends string = string>(\n config: UseMultiSelectionFilterConfigWithoutValues<FilterParam, FilterValue>\n) => {\n const [filterValues, updateFilterValues] = useState<SelectionOptionsList<FilterValue>>();\n const useMultiSelectionFilterProperties = useMultiSelectionFilter({ ...config, filterValues });\n return { ...useMultiSelectionFilterProperties, filterValues, updateFilterValues } as const;\n};\n\nexport default useMultiSelectionFilter;\n","import { ITransaction } from '@src/types';\nimport { TransactionsOverviewMultiSelectionFilterParam } from './types';\nimport { TransactionFilterParam } from '../../../types';\n\nexport const TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTERS = [\n TransactionFilterParam.CURRENCIES,\n TransactionFilterParam.CATEGORIES,\n TransactionFilterParam.STATUSES,\n] as const;\n\nexport const DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS = Object.freeze(\n Object.fromEntries(TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTERS.map(param => [param, '']))\n) as Readonly<{ [P in TransactionsOverviewMultiSelectionFilterParam]: string }>;\n\nexport const TRANSACTION_CATEGORIES: readonly ITransaction['category'][] = [\n 'ATM',\n 'Capital',\n 'Chargeback',\n 'Correction',\n 'Fee',\n 'Payment',\n 'Refund',\n 'Transfer',\n 'Other',\n] as const;\n\nexport const TRANSACTION_STATUSES: readonly ITransaction['status'][] = ['Booked', 'Pending', 'Reversed'] as const;\n","import { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { getTimeRangeSelectionDefaultPresetOptions } from '@src/components/internal/DatePicker/components/TimeRangeSelector';\nimport { DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS } from '../components/MultiSelectionFilter';\nimport { useBalanceAccountSelection } from '../components/BalanceAccountSelector';\nimport { TransactionFilterParam } from '../types';\n\nconst getDefaultTransactionsFilterParams = (balanceAccount?: ReturnType<typeof useBalanceAccountSelection>['activeBalanceAccount']) => {\n const timeRangeOptions = getTimeRangeSelectionDefaultPresetOptions();\n const defaultTimeRange = 'rangePreset.last7Days';\n const { from, to } = timeRangeOptions[defaultTimeRange];\n\n const defaultFilterParams = {\n ...DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS,\n [TransactionFilterParam.BALANCE_ACCOUNT]: balanceAccount?.id,\n [TransactionFilterParam.CREATED_SINCE]: new Date(from).toISOString(),\n [TransactionFilterParam.CREATED_UNTIL]: new Date(to).toISOString(),\n [TransactionFilterParam.MIN_AMOUNT]: undefined,\n [TransactionFilterParam.MAX_AMOUNT]: undefined,\n } as const;\n\n return { defaultFilterParams, defaultTimeRange, timeRangeOptions } as const;\n};\n\nconst useDefaultTransactionsOverviewFilterParams = (balanceAccount?: ReturnType<typeof useBalanceAccountSelection>['activeBalanceAccount']) => {\n const [nowTimestamp, setNowTimestamp] = useState(Date.now());\n const defaultParams = useRef(getDefaultTransactionsFilterParams(balanceAccount));\n const refreshNowTimestamp = useCallback(() => setNowTimestamp(Date.now()), [setNowTimestamp]);\n\n useEffect(() => {\n refreshNowTimestamp();\n }, [balanceAccount, refreshNowTimestamp]);\n\n return { defaultParams, nowTimestamp, refreshNowTimestamp } as const;\n};\n\nexport default useDefaultTransactionsOverviewFilterParams;\n","import { ITransaction } from '@src/types';\nimport { TransactionFilterParam } from '../types';\nimport {\n DEFAULT_TRANSACTIONS_OVERVIEW_MULTI_SELECTION_FILTER_PARAMS as defaultFilters,\n TRANSACTION_CATEGORIES,\n TRANSACTION_STATUSES,\n TransactionsOverviewMultiSelectionFilterParam,\n useMultiSelectionFilter,\n UseMultiSelectionFilterConfig,\n} from '../components/MultiSelectionFilter';\n\nconst useTransactionsOverviewMultiSelectionFilters = (\n filtersConfig: Pick<UseMultiSelectionFilterConfig<TransactionsOverviewMultiSelectionFilterParam>, 'filters' | 'updateFilters'>,\n currencies: ITransaction['amount']['currency'][] | undefined\n) => {\n const categoriesFilter = useMultiSelectionFilter({\n filterParam: TransactionFilterParam.CATEGORIES,\n filterValues: TRANSACTION_CATEGORIES,\n defaultFilters,\n ...filtersConfig,\n });\n const statusesFilter = useMultiSelectionFilter({\n filterParam: TransactionFilterParam.STATUSES,\n filterValues: TRANSACTION_STATUSES,\n defaultFilters,\n ...filtersConfig,\n });\n\n const currenciesFilter = useMultiSelectionFilter({\n filterParam: TransactionFilterParam.CURRENCIES,\n filterValues: currencies,\n defaultFilters,\n ...filtersConfig,\n });\n\n return {\n categoriesFilter,\n currenciesFilter,\n statusesFilter,\n } as const;\n};\n\nexport default useTransactionsOverviewMultiSelectionFilters;\n","export const AMOUNT_MULTIPLIER = 100000;\n","import { FilterEditModalRenderProps } from '../BaseFilter/types';\nimport { RangeFilterBody } from './types';\nimport InputBase from '@src/components/internal/FormFields/InputBase';\nimport './AmountFilter.scss';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { CommitAction } from '@src/hooks/useCommitAction';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { AMOUNT_MULTIPLIER } from './constants';\n\nexport const RangeSelection = ({\n onChange,\n editAction,\n onValueUpdated,\n selectedCurrencies,\n availableCurrencies,\n value,\n ...props\n}: FilterEditModalRenderProps<RangeFilterBody>) => {\n const { i18n } = useCoreContext();\n\n const [minAmount, setMinAmount] = useState<number | undefined>(\n props.minAmount !== undefined ? parseFloat(props.minAmount) / AMOUNT_MULTIPLIER : undefined\n );\n const [maxAmount, setMaxAmount] = useState<number | undefined>(\n props.maxAmount !== undefined ? parseFloat(props.maxAmount) / AMOUNT_MULTIPLIER : undefined\n );\n\n const applyFilter = useCallback(() => {\n onChange({ minAmount, maxAmount });\n }, [maxAmount, minAmount, onChange]);\n\n const clearFilter = useCallback(() => {\n onChange({ minAmount: undefined, maxAmount: undefined });\n setMaxAmount(undefined);\n setMinAmount(undefined);\n }, [onChange]);\n\n useEffect(() => {\n if (editAction === CommitAction.APPLY) applyFilter();\n if (editAction === CommitAction.CLEAR) clearFilter();\n }, [applyFilter, clearFilter, editAction]);\n\n const filterValue = useMemo(() => ({ minAmount, maxAmount }), [maxAmount, minAmount]);\n\n useEffect(() => {\n if (filterValue.minAmount || filterValue.maxAmount) onValueUpdated(`${filterValue.minAmount}-${filterValue.maxAmount}`);\n else onValueUpdated(null);\n }, [filterValue, onValueUpdated]);\n\n return (\n <div className=\"adyen-pe-range-selection-filter\">\n <div className=\"adyen-pe-range-selection-filter__input\">\n <label htmlFor=\"minValue\">{`${i18n.get('from')}:`}</label>\n <InputBase\n lang={i18n.locale}\n name={'minValue'}\n type=\"number\"\n value={minAmount}\n onInput={e => {\n e.currentTarget && setMinAmount(e.currentTarget.value !== '' ? parseFloat(e.currentTarget.value) : undefined);\n }}\n min={0}\n isInvalid={minAmount ? minAmount < 0 : false}\n errorMessage={i18n.get('noNegativeNumbersAllowed')}\n />\n </div>\n <div className=\"adyen-pe-range-selection-filter__input\">\n <label htmlFor=\"maxValue\">{`${i18n.get('to')}:`}</label>\n <InputBase\n lang={i18n.locale}\n name={'maxValue'}\n type=\"number\"\n value={maxAmount}\n onInput={e => {\n e.currentTarget && setMaxAmount(e.currentTarget.value !== '' ? parseFloat(e.currentTarget.value) : undefined);\n }}\n min={minAmount}\n isInvalid={maxAmount !== undefined && minAmount !== undefined ? maxAmount < minAmount : false}\n errorMessage={i18n.get('secondValueShouldBeGreaterThanTheFirstOne')}\n />\n </div>\n </div>\n );\n};\n","import BaseFilter from '../BaseFilter';\nimport { FilterProps } from '../BaseFilter/types';\nimport { RangeFilterProps } from './types';\nimport { RangeSelection } from './RangeSelection';\nimport { useCallback, useMemo, useState } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { PopoverContainerSize } from '@src/components/internal/Popover/types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { AMOUNT_MULTIPLIER } from './constants';\n\nexport const AmountFilter = ({ updateFilters, selectedCurrencies, availableCurrencies, ...props }: FilterProps<RangeFilterProps>) => {\n const { i18n } = useCoreContext();\n const [value, setValue] = useState<{ minAmount: number | undefined; maxAmount: number | undefined } | undefined>();\n const [formattedValue, setValueFormattedValue] = useState<string | undefined>();\n\n const showCurrencySymbol = useMemo(() => {\n if (selectedCurrencies?.length === 1 || availableCurrencies?.length === 1) return true;\n return false;\n }, [availableCurrencies?.length, selectedCurrencies?.length]);\n\n const formatAmount = useCallback(\n (amount: number, showSymbol: boolean) => {\n const currencyCode = selectedCurrencies?.[0] || availableCurrencies?.[0];\n const options =\n showSymbol && currencyCode\n ? {\n style: 'currency',\n currency: currencyCode,\n currencyDisplay: 'symbol',\n }\n : undefined;\n return amount.toLocaleString(i18n.locale, options);\n },\n [availableCurrencies, i18n, selectedCurrencies]\n );\n\n const onFilterChange = useCallback(\n (params: { minAmount: number | undefined; maxAmount: number | undefined; filterValue: string | undefined }) => {\n const { minAmount, maxAmount } = params ?? EMPTY_OBJECT;\n setValue({ minAmount, maxAmount });\n if (minAmount === undefined && maxAmount === undefined) setValueFormattedValue(undefined);\n updateFilters({\n minAmount: minAmount !== undefined ? String(minAmount * AMOUNT_MULTIPLIER) : undefined,\n maxAmount: maxAmount !== undefined ? String(maxAmount * AMOUNT_MULTIPLIER) : undefined,\n });\n },\n [updateFilters]\n );\n\n if (value && (value.minAmount || value.maxAmount)) {\n const { minAmount, maxAmount } = value ?? {};\n if (minAmount !== undefined && maxAmount !== undefined && minAmount <= maxAmount) {\n setValueFormattedValue(\n `${formatAmount(minAmount, showCurrencySymbol)} ${i18n.get('to').toLowerCase()} ${formatAmount(maxAmount, showCurrencySymbol)}`\n );\n } else if (minAmount !== undefined && maxAmount === undefined && minAmount >= 0) {\n setValueFormattedValue(`${i18n.get('from')} ${formatAmount(minAmount, showCurrencySymbol)}`);\n } else if (minAmount === undefined && maxAmount !== undefined) {\n setValueFormattedValue(`${i18n.get('to')} ${formatAmount(maxAmount, showCurrencySymbol)}`);\n } else {\n setValueFormattedValue(undefined);\n }\n }\n\n return (\n <BaseFilter<RangeFilterProps>\n {...props}\n updateFilters={updateFilters}\n minAmount={props.minAmount}\n maxAmount={props.maxAmount}\n onChange={onFilterChange}\n value={formattedValue}\n label={formattedValue ? formattedValue : props.label}\n type={'text'}\n containerSize={PopoverContainerSize.MEDIUM}\n selectedCurrencies={selectedCurrencies}\n availableCurrencies={availableCurrencies}\n render={RangeSelection}\n />\n );\n};\n","export const BASE_CLASS = 'adyen-pe-transactions-overview';\nexport const SUMMARY_CLASS = BASE_CLASS + '__summary';\nexport const SUMMARY_ITEM_CLASS = BASE_CLASS + '__summary-item';\n","import FilterBar from '@src/components/internal/FilterBar';\nimport { ExternalUIComponentProps } from '@src/components/types';\nimport { TransactionsComponentProps, TransactionFilterParam } from '../../types';\nimport { TransactionsDisplay } from '@src/components/external/TransactionsOverview/components/TransactionsDisplay/TransactionsDisplay';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { SetupHttpOptions, useSetupEndpoint } from '@src/hooks/useSetupEndpoint/useSetupEndpoint';\nimport { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { useCursorPaginatedRecords } from '@src/components/internal/Pagination/hooks';\nimport { IBalanceAccountBase, ITransaction } from '@src/types';\nimport { isFunction } from '@src/utils/common';\nimport { DEFAULT_PAGE_LIMIT, LIMIT_OPTIONS } from '@src/components/internal/Pagination/constants';\nimport TransactionsOverviewDateFilter from '@src/components/external/TransactionsOverview/components/TransactionsOverviewDateFilter';\nimport TransactionTotals from '@src/components/external/TransactionsOverview/components/TransactionTotals/TransactionTotals';\nimport { Balances } from '@src/components/external/TransactionsOverview/components/Balances/Balances';\nimport BalanceAccountSelector, { useBalanceAccountSelection } from '../BalanceAccountSelector';\nimport MultiSelectionFilter, { listFrom } from '../MultiSelectionFilter';\nimport useDefaultTransactionsOverviewFilterParams from '../../hooks/useDefaultTransactionsOverviewFilterParams';\nimport useTransactionsOverviewMultiSelectionFilters from '../../hooks/useTransactionsOverviewMultiSelectionFilters';\nimport AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\nimport { AmountFilter } from '@src/components/internal/FilterBar/filters/AmountFilter/AmountFilter';\nimport {\n BASE_CLASS,\n SUMMARY_CLASS,\n SUMMARY_ITEM_CLASS,\n} from '@src/components/external/TransactionsOverview/components/TransactionsOverview/constants';\nimport './TransactionsOverview.scss';\nimport { mediaQueries, useMediaQuery } from '@src/components/external/TransactionsOverview/hooks/useMediaQuery';\n\nexport const TransactionsOverview = ({\n onFiltersChanged,\n onLimitChanged,\n balanceAccounts,\n allowLimitSelection,\n preferredLimit = DEFAULT_PAGE_LIMIT,\n onTransactionSelected,\n showDetails,\n isLoadingBalanceAccount,\n onContactSupport,\n}: ExternalUIComponentProps<\n TransactionsComponentProps & { balanceAccounts: IBalanceAccountBase[] | undefined; isLoadingBalanceAccount: boolean }\n>) => {\n const { i18n } = useCoreContext();\n const transactionsEndpointCall = useSetupEndpoint('getTransactions');\n const { activeBalanceAccount, balanceAccountSelectionOptions, onBalanceAccountSelection } = useBalanceAccountSelection(balanceAccounts);\n const { defaultParams, nowTimestamp, refreshNowTimestamp } = useDefaultTransactionsOverviewFilterParams(activeBalanceAccount);\n\n const getTransactions = useCallback(\n async ({ balanceAccount, ...pageRequestParams }: Record<TransactionFilterParam | 'cursor', string>, signal?: AbortSignal) => {\n const requestOptions: SetupHttpOptions = { signal, errorLevel: 'error' };\n\n return transactionsEndpointCall(requestOptions, {\n query: {\n ...pageRequestParams,\n statuses: listFrom<ITransaction['status']>(pageRequestParams[TransactionFilterParam.STATUSES]),\n categories: listFrom<ITransaction['category']>(pageRequestParams[TransactionFilterParam.CATEGORIES]),\n currencies: listFrom<ITransaction['amount']['currency']>(pageRequestParams[TransactionFilterParam.CURRENCIES]),\n createdSince:\n pageRequestParams[TransactionFilterParam.CREATED_SINCE] ??\n defaultParams.current.defaultFilterParams[TransactionFilterParam.CREATED_SINCE],\n createdUntil:\n pageRequestParams[TransactionFilterParam.CREATED_UNTIL] ??\n defaultParams.current.defaultFilterParams[TransactionFilterParam.CREATED_UNTIL],\n sortDirection: 'desc' as const,\n balanceAccountId: activeBalanceAccount?.id ?? '',\n minAmount: pageRequestParams.minAmount !== undefined ? parseFloat(pageRequestParams.minAmount) : undefined,\n maxAmount: pageRequestParams.maxAmount !== undefined ? parseFloat(pageRequestParams.maxAmount) : undefined,\n },\n });\n },\n [activeBalanceAccount?.id, defaultParams, transactionsEndpointCall]\n );\n\n // FILTERS\n const _onFiltersChanged = useMemo(() => (isFunction(onFiltersChanged) ? onFiltersChanged : void 0), [onFiltersChanged]);\n const _onLimitChanged = useMemo(() => (isFunction(onLimitChanged) ? onLimitChanged : void 0), [onLimitChanged]);\n const preferredLimitOptions = useMemo(() => (allowLimitSelection ? LIMIT_OPTIONS : undefined), [allowLimitSelection]);\n\n //TODO - Infer the return type of getTransactions instead of having to specify it\n const { canResetFilters, error, fetching, filters, limit, limitOptions, records, resetFilters, updateFilters, updateLimit, ...paginationProps } =\n useCursorPaginatedRecords<ITransaction, 'transactions', string, TransactionFilterParam>({\n fetchRecords: getTransactions,\n dataField: 'transactions',\n filterParams: defaultParams.current.defaultFilterParams,\n initialFiltersSameAsDefault: true,\n onLimitChanged: _onLimitChanged,\n onFiltersChanged: _onFiltersChanged,\n preferredLimit,\n preferredLimitOptions,\n enabled: !!activeBalanceAccount?.id,\n });\n\n const [availableCurrencies, setAvailableCurrencies] = useState<ITransaction['amount']['currency'][] | undefined>([]);\n const [isAvailableCurrenciesFetching, setIsAvailableCurrenciesFetching] = useState(false);\n const handleCurrenciesChange = useCallback((currencies: ITransaction['amount']['currency'][] | undefined, isFetching: boolean) => {\n setAvailableCurrencies(currencies);\n setIsAvailableCurrenciesFetching(isFetching);\n }, []);\n const { categoriesFilter, currenciesFilter, statusesFilter } = useTransactionsOverviewMultiSelectionFilters(\n {\n filters,\n updateFilters,\n },\n availableCurrencies\n );\n\n useEffect(() => {\n setAvailableCurrencies(undefined);\n updateFilters({\n [TransactionFilterParam.BALANCE_ACCOUNT]: activeBalanceAccount?.id,\n [TransactionFilterParam.CURRENCIES]: undefined,\n });\n }, [updateFilters, activeBalanceAccount?.id]);\n\n useEffect(() => {\n refreshNowTimestamp();\n }, [filters, refreshNowTimestamp]);\n\n // Set status filter's value fixed as \"Booked\" temporarily\n useEffect(() => {\n statusesFilter.updateSelection({ target: { value: 'Booked', name: 'status' } });\n }, [statusesFilter]);\n\n const isNarrowViewport = useMediaQuery(mediaQueries.down.sm);\n\n return (\n <div className={BASE_CLASS}>\n <FilterBar>\n <BalanceAccountSelector\n activeBalanceAccount={activeBalanceAccount}\n balanceAccountSelectionOptions={balanceAccountSelectionOptions}\n onBalanceAccountSelection={onBalanceAccountSelection}\n />\n <TransactionsOverviewDateFilter\n canResetFilters={canResetFilters}\n defaultParams={defaultParams}\n filters={filters}\n nowTimestamp={nowTimestamp}\n refreshNowTimestamp={refreshNowTimestamp}\n updateFilters={updateFilters}\n />\n {/* Remove status filter temporarily */}\n {/* <MultiSelectionFilter {...statusesFilter} placeholder={i18n.get('filterPlaceholder.status')} /> */}\n <MultiSelectionFilter {...categoriesFilter} placeholder={i18n.get('filterPlaceholder.category')} />\n <AmountFilter\n availableCurrencies={availableCurrencies}\n selectedCurrencies={listFrom(filters[TransactionFilterParam.CURRENCIES])}\n name={'range'}\n label={i18n.get('amount')}\n minAmount={filters[TransactionFilterParam.MIN_AMOUNT]}\n maxAmount={filters[TransactionFilterParam.MAX_AMOUNT]}\n updateFilters={updateFilters}\n onChange={updateFilters}\n />\n <MultiSelectionFilter {...currenciesFilter} placeholder={i18n.get('filterPlaceholder.currency')} />\n </FilterBar>\n <div className={SUMMARY_CLASS}>\n <div className={SUMMARY_ITEM_CLASS}>\n <TransactionTotals\n availableCurrencies={availableCurrencies}\n isAvailableCurrenciesFetching={isAvailableCurrenciesFetching}\n balanceAccountId={activeBalanceAccount?.id}\n statuses={statusesFilter.selection}\n categories={categoriesFilter.selection}\n createdUntil={filters[TransactionFilterParam.CREATED_UNTIL]!}\n createdSince={filters[TransactionFilterParam.CREATED_SINCE]!}\n currencies={currenciesFilter.selection}\n minAmount={filters[TransactionFilterParam.MIN_AMOUNT] ? parseFloat(filters[TransactionFilterParam.MIN_AMOUNT]) : undefined}\n maxAmount={filters[TransactionFilterParam.MAX_AMOUNT] ? parseFloat(filters[TransactionFilterParam.MAX_AMOUNT]) : undefined}\n fullWidth={isNarrowViewport}\n />\n </div>\n <div className={SUMMARY_ITEM_CLASS}>\n <Balances balanceAccountId={activeBalanceAccount?.id} onCurrenciesChange={handleCurrenciesChange} fullWidth={isNarrowViewport} />\n </div>\n </div>\n\n <TransactionsDisplay\n balanceAccounts={balanceAccounts}\n availableCurrencies={availableCurrencies}\n loading={fetching || isLoadingBalanceAccount || !balanceAccounts}\n transactions={records}\n onTransactionSelected={onTransactionSelected}\n showPagination={true}\n showDetails={showDetails}\n balanceAccountDescription={activeBalanceAccount?.description || ''}\n limit={limit}\n limitOptions={limitOptions}\n onContactSupport={onContactSupport}\n onLimitSelection={updateLimit}\n error={error as AdyenPlatformExperienceError}\n {...paginationProps}\n />\n </div>\n );\n};\n","export const BASE_CLASS = 'adyen-pe-transactions-overview-container';\nexport const WITH_ERROR_CLASS = BASE_CLASS + '--with-error';\n","import { TransactionsComponentProps } from '../../types';\nimport { ExternalUIComponentProps } from '../../../../types';\nimport { useSetupEndpoint } from '@src/hooks/useSetupEndpoint/useSetupEndpoint';\nimport { useFetch } from '@src/hooks/useFetch/useFetch';\nimport { TransactionsOverview } from '@src/components/external/TransactionsOverview/components/TransactionsOverview/TransactionsOverview';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport useAuthContext from '@src/core/Auth/useAuthContext';\nimport cx from 'classnames';\nimport { ErrorMessageDisplay } from '@src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { BASE_CLASS, WITH_ERROR_CLASS } from '@src/components/external/TransactionsOverview/components/TransactionsOverviewContainer/constants';\nimport './TransactionsOverviewContainer.scss';\n\nfunction TransactionsOverviewContainer(props: ExternalUIComponentProps<TransactionsComponentProps>) {\n const { sessionSetupError, endpoints } = useAuthContext();\n\n // Balance Accounts\n const balanceAccountEndpointCall = useSetupEndpoint('getBalanceAccounts');\n\n const { data, isFetching } = useFetch({\n fetchOptions: { enabled: !!endpoints.getBalanceAccounts, keepPrevData: true },\n queryFn: useCallback(async () => {\n return balanceAccountEndpointCall(EMPTY_OBJECT);\n }, [balanceAccountEndpointCall]),\n });\n\n const balanceAccounts = useMemo(\n () => data?.balanceAccounts.filter(account => (props.balanceAccountId ? account.id === props.balanceAccountId : true)),\n [data?.balanceAccounts, props.balanceAccountId]\n );\n\n const wrongBalanceAccountId = useMemo(\n () => !!props.balanceAccountId && !!data?.balanceAccounts.length && balanceAccounts?.length === 0,\n [balanceAccounts?.length, data?.balanceAccounts.length, props.balanceAccountId]\n );\n\n return (\n <div className={cx(BASE_CLASS, { [WITH_ERROR_CLASS]: sessionSetupError })}>\n {sessionSetupError ? (\n <ErrorMessageDisplay\n withImage\n centered\n title={'somethingWentWrong'}\n message={['weCouldNotLoadTheTransactionsOverview', 'tryRefreshingThePageOrComeBackLater']}\n refreshComponent={true}\n />\n ) : wrongBalanceAccountId ? (\n <ErrorMessageDisplay\n withImage\n centered\n title={'somethingWentWrong'}\n message={['weCouldNotLoadTheTransactionsOverview', 'theSelectedBalanceAccountIsIncorrect']}\n />\n ) : (\n <TransactionsOverview {...props} balanceAccounts={balanceAccounts} isLoadingBalanceAccount={isFetching} />\n )}\n </div>\n );\n}\n\nexport default TransactionsOverviewContainer;\n","import UIElement from '../UIElement';\nimport Transactions from './components/TransactionsOverviewContainer/TransactionsOverviewContainer';\nimport { TransactionsComponentProps } from './types';\nimport { _UIComponentProps } from '../../types';\n\nexport class TransactionsElement extends UIElement<TransactionsComponentProps> {\n public static type = 'transactions';\n\n constructor(props: _UIComponentProps<TransactionsComponentProps>) {\n super(props);\n this.elementRef = (props && props.elementRef) || this;\n this.componentToRender = this.componentToRender.bind(this);\n }\n\n public componentToRender = () => {\n return (\n <Transactions\n {...this.props}\n balanceAccountId={this.props.core.options.balanceAccountId}\n ref={(ref: UIElement<TransactionsComponentProps>) => {\n this.componentRef = ref;\n }}\n elementRef={this.elementRef}\n />\n );\n };\n}\n\nexport default TransactionsElement;\n","import cx from 'classnames';\nimport { useMemo } from 'preact/hooks';\n\nconst TransactionDataSkeleton = ({ isLoading, skeletonRowNumber = 0 }: { isLoading?: boolean; skeletonRowNumber?: number }) => {\n const skeletonRows = useMemo(() => Array.from({ length: skeletonRowNumber }, (_, index) => index), [skeletonRowNumber]);\n\n return (\n <>\n {skeletonRows.map(key => (\n <span\n className={cx({\n 'adyen-pe-transaction-data__skeleton': true,\n 'adyen-pe-transaction-data__skeleton-loading-content': isLoading,\n })}\n key={`transaction-data-skeleton-${key}`}\n />\n ))}\n </>\n );\n};\n\nexport default TransactionDataSkeleton;\n","import { TransactionDetailData } from '@src/components';\nimport TransactionDataSkeleton from '@src/components/external/TransactionDetails/components/TransactionDataSkeleton';\nimport { Image } from '@src/components/internal/Image/Image';\nimport { parsePaymentMethodType } from '@src/components/external/TransactionsOverview/components/utils';\nimport { Tag } from '@src/components/internal/Tag/Tag';\nimport { TagVariant } from '@src/components/internal/Tag/types';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport { useMemo } from 'preact/hooks';\n\nexport const TransactionData = ({ transaction, isFetching }: { transaction?: TransactionDetailData; isFetching?: boolean }) => {\n const { i18n } = useCoreContext();\n const creationDate = useMemo(\n () =>\n transaction\n ? i18n\n .date(new Date(transaction.creationDate), {\n weekday: 'long',\n month: 'long',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n timeZoneName: 'shortOffset',\n })\n .toString()\n : '',\n [transaction, i18n]\n );\n\n const amountStyle = transaction?.status === 'Booked' ? 'default' : transaction?.status === 'Reversed' ? 'error' : 'pending';\n\n return (\n <>\n {!transaction ? (\n <TransactionDataSkeleton isLoading={isFetching} skeletonRowNumber={6} />\n ) : (\n <div className={'adyen-pe-transaction-data'}>\n <div className={'adyen-pe-transaction-data__container'}>\n {(transaction?.status || transaction?.category) && (\n <div className={'adyen-pe-transaction-data__section adyen-pe-transaction-data__tag-container'}>\n {transaction?.status && (\n <Tag\n label={i18n.get(transaction.status)}\n variant={\n transaction.status === 'Booked'\n ? TagVariant.SUCCESS\n : transaction.status === 'Reversed'\n ? TagVariant.ERROR\n : TagVariant.DEFAULT\n }\n />\n )}\n {transaction.category && <Tag label={i18n.get(`txType.${transaction.category}`)} variant={TagVariant.DEFAULT} />}\n </div>\n )}\n <div\n className={`adyen-pe-transaction-data__section adyen-pe-transaction-data__amount adyen-pe-transaction-data__amount--${amountStyle}`}\n >\n {transaction.amount\n ? i18n.amount(transaction.amount.value, transaction.amount.currency, {\n currencyDisplay: 'symbol',\n })\n : null}\n </div>\n {(transaction?.paymentMethod || transaction?.bankAccount) && (\n <div className=\"adyen-pe-transaction-data__section adyen-pe-transaction-data__payment-method\">\n <div className=\"adyen-pe-transaction-data__payment-method-logo-container\">\n <Image\n name={transaction.paymentMethod ? transaction.paymentMethod.type : 'bankTransfer'}\n alt={transaction.paymentMethod ? transaction.paymentMethod.type : 'bankTransfer'}\n folder={'logos/'}\n className={'adyen-pe-transactions__payment-method-logo'}\n />\n </div>\n\n <div className={'adyen-pe-transaction-data__payment-method-detail'}>\n {transaction?.paymentMethod\n ? parsePaymentMethodType(transaction?.paymentMethod, 'detail')\n : transaction?.bankAccount?.accountNumberLastFourDigits}\n </div>\n </div>\n )}\n <div className={'adyen-pe-transaction-data__section adyen-pe-transaction-data__label'}>{creationDate}</div>\n </div>\n\n {transaction?.balanceAccountDescription && (\n <div className={'adyen-pe-transaction-data__container'}>\n <div className={'adyen-pe-transaction-data__label'}>{i18n.get('account')}</div>\n <div>{transaction.balanceAccountDescription}</div>\n </div>\n )}\n <div className={'adyen-pe-transaction-data__container'}>\n <div className={'adyen-pe-transaction-data__label'}>{i18n.get('referenceID')}</div>\n <div aria-label={i18n.get('referenceID')}>{transaction.id}</div>\n </div>\n </div>\n )}\n {/*{transaction && <div className={'adyen-pe-transaction-data__container adyen-pe-transaction-data__action-buttons'}>*/}\n {/* <Button aria-label={i18n.get('export')} variant={ButtonVariant.SECONDARY} onClick={() => {}}>*/}\n {/* {i18n.get('export')}*/}\n {/* </Button>*/}\n {/*</div>}*/}\n </>\n );\n};\n","import { TransactionData } from '@src/components/external/TransactionDetails/components/TransactionData';\nimport { ErrorMessageDisplay } from '@src/components/internal/ErrorMessageDisplay/ErrorMessageDisplay';\nimport { getErrorMessage } from '@src/components/utils/transactionResourceErrorCodes';\nimport useCoreContext from '@src/core/Context/useCoreContext';\nimport AdyenPlatformExperienceError from '@src/core/Errors/AdyenPlatformExperienceError';\nimport { useFetch } from '@src/hooks/useFetch/useFetch';\nimport { useSetupEndpoint } from '@src/hooks/useSetupEndpoint/useSetupEndpoint';\nimport { EMPTY_OBJECT } from '@src/utils/common';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { ExternalUIComponentProps } from '../../../types';\nimport { TransactionDetailsComponentProps, TransactionDetailsWithoutIdProps } from '../types';\nimport './TransactionDetails.scss';\n\nconst isTransactionWithoutId = (props: TransactionDetailsComponentProps): props is TransactionDetailsWithoutIdProps => 'transaction' in props;\n\nexport default function TransactionDetails(props: ExternalUIComponentProps<TransactionDetailsComponentProps>) {\n const transaction = useMemo(() => (isTransactionWithoutId(props) ? props.transaction : null), [props]);\n const transactionId = useMemo(() => (!isTransactionWithoutId(props) ? props.transactionId : null), [props]);\n\n const { i18n } = useCoreContext();\n\n const getTransactionDetail = useSetupEndpoint('getTransaction');\n\n const fetchCallback = useCallback(async () => {\n if (transactionId) {\n return getTransactionDetail(EMPTY_OBJECT, {\n path: { transactionId },\n });\n }\n }, [getTransactionDetail, transactionId]);\n\n const { data, error, isFetching } = useFetch({\n fetchOptions: useMemo(() => ({ enabled: !!transactionId }), [transactionId]),\n queryFn: fetchCallback,\n });\n\n const errorProps = useMemo(() => {\n if (error) {\n return getErrorMessage(error as AdyenPlatformExperienceError, props.onContactSupport);\n }\n }, [error, props.onContactSupport]);\n\n const transactionData = transaction ?? data;\n return (\n <div className=\"adyen-pe-transaction\">\n {props.title && <div className=\"adyen-pe-title\">{i18n.get(props.title)}</div>}\n\n {error && errorProps && (\n <div className=\"adyen-pe-transaction--error-container\">\n <ErrorMessageDisplay centered withImage {...errorProps} />\n </div>\n )}\n\n <TransactionData transaction={transactionData} isFetching={isFetching} />\n </div>\n );\n}\n","import { _UIComponentProps } from '@src/components/types';\nimport UIElement from '../UIElement';\nimport TransactionDetails from './components/TransactionDetails';\nimport { TransactionDetailsComponentProps } from './types';\n\nexport class TransactionsElement extends UIElement<TransactionDetailsComponentProps> {\n public static type = 'transactionsDetails';\n\n constructor(props: _UIComponentProps<TransactionDetailsComponentProps>) {\n super(props);\n this.elementRef = (props && props.elementRef) || this;\n this.componentToRender = this.componentToRender.bind(this);\n }\n\n public componentToRender = () => {\n return <TransactionDetails {...this.props} />;\n };\n}\n\nexport default TransactionsElement;\n","import { Core, CoreOptions } from './core';\nimport './components/shared.scss';\nimport './style/index.scss';\n\nexport * from './core';\nexport * from './components';\nexport * from './types';\nexport async function AdyenPlatformExperience<T extends CoreOptions<T>>(props: T) {\n const core = new Core<T>(props);\n return await core.initialize();\n}\n"],"names":["type","ErrorTypes","value","Storage","e","CURRENCY_DECIMALS","CURRENCY_CODES","amount","p","s","defaultLocaleTranslation","a","b","BASE_LOCALE","BASE_FORMAT_OPTIONS","SYSTEM_TIMEZONE","SYSTEM_TIMEZONE_FORMATTER","date","_a","restamper","restamp","_","k","_locale","_supportedLocales","noop","callbackUnwatchCallbacksCount","watchable","index","timezone","Session","c","_b","_c","l","u","i","o","r","f","v","h","n","y","t","d","g","m","w","x","z","L","P","C","D","H","I","T","j","A","N","$","S","q","M","B","F","createContext","useState","useRef","useEffect","jsx","toChildArray","state","useCallback","useBooleanState","useMemo","isString","uuid","EventEmitter","render","returnImage","name","BaseElement","status","AuthProvider","CoreProvider","useContext","useAuthContext","useCoreContext","useReducer","ButtonVariant","TypographyVariant","TypographyModifier","TypographyElement","Tag","memo","classnames","jsxs","Fragment","Typography","forwardRef","Button","Close","Filter","TransactionFilterParam","selectedDetail","BASE_CLASS","ButtonActionsLayoutBasic","ButtonActionsLayoutExtended","PopoverContainerVariant","PopoverContainerPosition","PopoverContainerSize","InteractionKeyCode","action","useLayoutEffect","ClickOutsideVariant","useReflex","id","open","dismiss","createPortal","classNames","PopoverTitle","PopoverDismissButton","ButtonActions","cloneElement","CellTextPosition","message","CommitAction","ChevronDown","SelectListItem","selection","useSelect","mod","useCommitAction","item","showList","SelectButton","SelectList","Select","ChevronLeft","ChevronRight","paymentMethod","TagVariant","Image","AMOUNT_CLASS","transactions","TransactionListError","lazy","transactionDetails","Suspense","Spinner","limit","useMounted","page","size","hasNextPage","usePagination","useReactiveState","PageNeighbour","PaginationType","usePaginatedRecordsFilters","usePageLimit","useCursorPagination","useOffsetPagination","records","usePaginatedRecords","$watchable","$restamper","clock","REGEX_GMT_OFFSET_UNWANTED_SUBSTRINGS","getTimezoneTime","getUsedTimezone","enumerable","_config","unwrap","from","to","timestamp","createRangeTimestampsFactory","systemToTimezone","timezoneToSystem","offsetMonth","offsetWeek","RangePreset.lastNDays","RangePreset.thisWeek","RangePreset.lastWeek","RangePreset.thisMonth","RangePreset.lastMonth","RangePreset.yearToDate","customOption","selectionOptions","getRangesForOption","options","descriptor","propsProperty","props","CalendarGridRenderToken","getter","className","extendedProps","classes","memoComparator","CalendarGridDayOfWeek","CalendarGridDate","property","TimeFlag","CalendarShiftControlFlag","CalendarShiftControlsFlag","today","indexed","timeslice","label","datetime","createFlagsRecord","_fromTimestamp","_toTimestamp","_numberOfBlocks","_today","_d","_e","evt","time","args","calendar","Calendar","grid","kill","useImperativeHandle","useCalendar","CalendarControls","CalendarGrid","useDetachedRender","ChevronUp","useCalendarControlsRendering","TimeRangeSelector","InputText","InputBase","hasEmptyValue","FilterButton","DateRangeFilterParam","DatePicker","selectedPresetOption","BaseFilter","balanceAccount","nowTimestamp","isOpen","BaseButton","isEmpty","balanceAccountId","currency","balances","useMultiSelectionFilter","defaultFilters","useBalanceAccountSelection","useDefaultTransactionsOverviewFilterParams","useCursorPaginatedRecords","useTransactionsOverviewMultiSelectionFilters","BalanceAccountSelector","MultiSelectionFilter","account","UIElement","Transactions","TransactionsElement","Core"],"mappings":"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EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACT;AAEA,MAAA,mBAAe;AC1Kf,MAAM,oBAAoB;AAAA;AAAA,EAEtB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA;AAAA,EAGL,KAAK;AAAA;AAAA,EAGL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACT;AAEA,MAAA,sBAAe;ACxBR,MAAM,aAAa,CAAC,iBAAiCC,oBAAkB,YAAmC,KAAK;AAO/G,MAAM,sBAAsB,CAAC,iBAAuD,CAAC,CAACC,iBAAe,YAA4B;AAK3H,MAAA,kBAAkB,CAAC,iBAAyC,oBAAoB,YAAY,IAAIA,iBAAe,YAAY,IAAI;AAK/H,MAAA,mBAAmB,CAACC,SAAyB,iBAAiC;AACjF,QAAA,UAAU,WAAW,YAAY;AACvC,SAAO,SAAS,OAAOA,OAAM,GAAG,EAAE,IAAI;AAC1C;AAKa,MAAA,qBAAqB,CAC9BA,SACA,QACA,cACA,eAAe,OACf,UAAoC,OAC3B;AACH,QAAA,eAAeA,QAAO;AACtB,QAAA,gBAAgB,iBAAiB,cAAc,YAAY;AAEjE,QAAM,kBAAkB,OAAO,QAAQ,KAAK,GAAG;AAC/C,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA;AAGH,MAAA;AACO,WAAA,eACD,4BAA4B,iBAAiB,kBAAkB,aAAa,IAC5E,cAAc,eAAe,iBAAiB,gBAAgB;AAAA,WAC/DH,IAAG;AACD,WAAA;AAAA,EACX;AACJ;AAEO,MAAM,8BAA8B,CAAC,QAAgB,SAAmCG,YAAmB;AACvG,SAAA,KAAK,aAAa,QAAQ,OAAO,EACnC,cAAcA,OAAM,EACpB,OAAO,CAAKC,OAAAA,GAAE,SAAS,UAAU,EACjC,OAAO,CAACC,IAAGD,OAAMC,KAAID,GAAE,OAAO,EAAE,EAChC,KAAK;AACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DO,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqBE;ACN3B,MAAM,oBAAoB;AAAA,EAC7B;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;AACJ;AAEO,MAAM,0BAA0B,EAAE,MAAM,WAAW,OAAO,WAAW,KAAK;AAC1E,MAAM,kBAAkB;AACxB,MAAM,gBAAgB,CAAC,eAAe,QAAQ,SAAS,uBAAuB;ACjC9E,MAAM,gBAAgB,OAAO;AAC7B,MAAM,QAAQ,MAAM;AACpB,MAAM,yBAAyB,EAAE,gBAAgB,OAAO,KAAK,MAAM;AACnE,MAAM,cAAc,OAAO,OAAO,CAAA,CAAE;AACpC,MAAM,eAAe,OAAO,OAAO,cAAc,IAAI,CAAC;ACAtD,MAAM,OAAO,SAAS,UAAU,KAAK,KAAK,SAAS,UAAU,IAAI;AACjE,MAAM,SAAS,KAAK,eAAe,QAAQ,IAAI;AACzC,MAAA,aAAa,KAAK,eAAe,MAAM;AAC7C,MAAM,WAAW,KAAK,OAAO,UAAU,QAAQ;AAC/C,MAAM,iBAAiB,KAAK,OAAO,UAAU,cAAc;AAErD,MAAA,OAAO,IAAI,MAAM,MAAM;AAAC,GAAG,sBAAsB;AAGvD,MAAM,aAAa,CAAsBR,QAAU,WAAoB,WACzE;AAAA,EACG,UAAW,aAAqB;AAAA,EAChC,YAAY;AAAA,EACZ,OAAAA;AACJ;AAES,MAAA,WAAW,CAAUA,WAAcA;AACnC,MAAA,UAAU,CAACA,QAAa,oBAA+B,OAAOA,WAAU,YAAYA,SAAQ,CAAC,CAAC;AACpG,MAAM,QAAQ,CAA4B,KAAQA,QAAU,QAAW,KAAK,IAAI,KAAe,KAAK,IAAIA,QAAiB,GAAa,CAAC;AACjI,MAAA,MAAM,CAAC,KAAa,SAAiB,MAAM,KAAK,OAAO,OAAO,OAAO,CAAC;AAC5E,MAAM,MAAM,CAACA,QAAe,YAAqBA,SAAQ,SAAU,UAAU;AAC7E,MAAM,aAAa,CAACA,WAAiD,OAAOA,WAAU;AACtF,MAAM,WAAW,CAACA,WAAgC,OAAOA,WAAU;AACnE,MAAM,aAAa,CAACA,WAAgC,SAASA,MAAK,KAAK,IAAIA,WAAU;AAC/E,MAAA,mBAAmB,CAACA,WAAgC,SAASA,MAAK,KAAKA,WAAU,CAAC,CAACA;AAMnF,MAAA,YAAY,CAACS,IAAQC,OAAWD,OAAMC,MAAK,EAAED,OAAMA,MAAKC,OAAMA;AAEpE,MAAM,qBAAqB,CAA2B,YAAe,QAAoB,kBAA8B;AACtH,MAAA,WAAW,SAAS,MAAM;AAAU,WAAA;AACxC,MAAI,UAAU;AAAW,WAAO,WAAW,CAAC;AAC5C,SAAO,WAAW,SAAS,aAAa,IAAI,gBAAgB,WAAW,CAAC;AAC5E;AACO,MAAM,eAAe,CAACV,WACzBA,UAAS,OAAOA,WAAU,cAAaA,UAAA,gBAAAA,OAAO,SAAQ,CAAC,EAACA,UAAA,gBAAAA,OAAO,SAAQ,CAAC,CAACA;ACxCtE,MAAM,kBAAkB,WAAA,mDAAA;AAExB,MAAM,EAAE,qBAAqB,aAAa,iBAAiB,0BAAA,KAA+B,MAAM;AACnG,QAAMW,eAAc;AACpB,QAAM,WAAW;AACjB,QAAM,UAAU;AAChB,QAAM,QAAQ;AACd,QAAM,UAAU;AAChB,QAAM,2BAA2B;AAE3BC,QAAAA,uBAA4D,OAAO,OAAO;AAAA,IAC5E,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,wBAAwB;AAAA,IACxB,cAAc;AAAA;AAAA,EAAA,CACjB;AAEGC,MAAAA;AACAC,MAAAA;AAEA,MAAA;AACAA,iCAA4B,IAAI,KAAK,eAAeH,cAAaC,oBAAmB;AACpFC,uBAAkBC,2BAA0B,gBAAkB,EAAA;AAAA,WACzD,IAAI;AACTD,uBAAkB;AAAA,EACtB;AAEO,SAAA,EAAE,qBAAAD,sBAAqB,aAAAD,cAAa,iBAAAE,kBAAiB,2BAAAC;AAChE,GAAG;AC9BH,MAAM,uCAAuC;AAC7C,MAAM,+BAA+B,WAAA,kBAAA;AAE9B,MAAM,iCAAiC,CAAC,CAAC,aAAa,aAAa,OACrE,KAAK,IAAI,cAAc,EAAE,IAAI,kBAAkB,cAAc,IAAI,KAAK;AAEpE,MAAM,oCAAoC,CAAC,4BAC9C,OAAO,OAAO;AAAA,EACV,KAAK,MAAM,0BAA0B,EAAE;AAAA;AAAA,EACvC,IAAI,yBAAyB,EAAE;AAAA;AACnC,CAAU;AAEP,MAAM,sBAAsB,CAAC,WAA4B,SAAS,QAAkB,EAAE,KAAK;AAMrF,MAAA,gCAAgC,CAAC,mBAAoD;AACxF,QAAA,UAAU,kCAAkC,cAAc;AAChE,QAAM,eAAe,QAAQ,IAAI,CAAA,WAAU,GAAG,MAAM,GAAG,QAAQ,8BAA8B,KAAK,CAAC,EAAE,KAAK,GAAG;AAC7G,SAAO,OAAO,YAAY,GAAG,QAAQ,sCAAsC,EAAE;AACjF;AAYa,MAAA,2CAA2C,CAACC,UAA0B;;AAC/E,QAAM,YAAUC,MAAAD,SAAA,gBAAAA,MAAM,MAAM,qBAAZ,gBAAAC,IAA+B,GAAG,MAAM,KAAK,GAAG,IAAI,yBAAyB;AACtF,SAAA,+BAA+B,QAAQ,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAqB;AAC9F;AAEO,MAAM,gCAAgC,CAAC,WAAmB,oBAAiD,8BAA8B;AAC5I,QAAM,eAAe,yCAAyC,uEAA2B,OAAO,UAAU;AAC1G,QAAM,iBAAiB,yCAAyC,uDAAmB,OAAO,UAAU;AACpG,SAAO,iBAAiB;AAC5B;AAEA,MAAM,UAAU,CAAkCC,YAAc,MAAwB,YAAoB,MAAM;AAC9G,QAAM,EAAE,QAAQ,UAAU,IAAIA,WAAU,IAAI;AACtC,QAAAF,QAAO,IAAI,KAAK,SAAS;AAC/B,SAAOA,MAAK,WAAWA,MAAK,WAAW,IAAI,SAAS,SAAS;AACjE;AAEO,MAAM,mBAAmB,CAAkCE,YAAc,SAA2B,QAAQA,YAAW,MAAM,CAAC;AAC9H,MAAM,mBAAmB,CAAkCA,YAAc,SAA2B,QAAQA,YAAW,MAAM,EAAE;ACnDtI,MAAM,aAAa,MAAM;AACjB,MAAA;AACA,MAAA;AAEJ,MAAI,oBAAoB,QAAW;AAC/B,kBAAc,WAAY;AACtB,aAAO,KAAK;AAAA,IAAA;AAGhB,kBAAc,SAAU,UAAU;AAC9B,UAAI,YAAY,QAAW;AACnB,YAAA;AACM,gBAAA,gBAAgB,IAAI,KAAK,eAAe,aAAa,EAAE,GAAG,qBAAqB,SAAA,CAAU;AACzF,gBAAA,eAAe,cAAc,gBAAA,EAAkB;AAErD,cAAI,KAAK,aAAa;AAAc;AAEpC,eAAK,WAAW;AAChB,eAAK,YAAY;AAAA,iBACZ,IAAI;AAAA,QAGb;AAAA,MAAA,OACG;AACH,aAAK,WAAW;AAChB,aAAK,YAAY;AAAA,MACrB;AAAA,IAAA;AAAA,EAER;AAEA,WAASC,YAAiC,MAAkD;AACxF,QAAI,KAAK,WAAW;AAAG,aAAOA,SAAQ,KAAK,MAAM,KAAK,IAAK,CAAA;AAErD,UAAA,OAAO,KAAK,CAAC;AACnB,UAAM,YAAY,IAAI,KAAK,IAAgC,EAAE,QAAQ;AAC/D,UAAA,YAAY,KAAK,aAAa;AAEpC,WAAO,OAAO,OAAO;AAAA,MACjB,WAAW,uCAAW,OAAO;AAAA,MAC7B,QAAQ,8BAA8B,WAAW,SAAS;AAAA,MAC1D;AAAA,IAAA,CACM;AAAA,EACd;AAEA,SAAO,MAAM;AACH,UAAA,UAAU,EAAE,UAAU;AACtB,UAAA,MAAM,2CAAa,KAAK;AAE9B,UAAM,KAAK,OAAO;AAAA,MACd,SAAS,EAAE,KAAK,2CAAa,KAAK,UAAU,IAAI;AAAA,MAChD,QAAQ,EAAE,OAAO,gBAAgB;AAAA,IAAA,CACpC;AAED,WAAO,OAAO,iBAAiBA,SAAQ,KAAK,OAAO,GAA4B;AAAA,MAC3E,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI;AAAA,IAAA,CAC5B;AAAA,EAAA;AAET;AAEA,MAAA,cAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrCF,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,KAAK,EAAE,IAAI,IAAI;AACf,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AACxB,MAAA,QAAQ,EAAE,OAAO,OAAO;AAC9B,MAAM,cAAc;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,IAAI;AACR;ACtEa,MAAA,kBAAkB,CAAC,WAAmB,OAAO,UAAU,GAAG,CAAC,EAAE;AAW1D,SAAA,YAAY,QAAgB,kBAAwE;AAChH,MAAI,CAAC;AAAe,WAAA;AACd,QAAA,gBAAgB,gBAAgB,MAAyB;AAC/D,SAAQ,iBAAiB,KAAK,CAAA,oBAAmB,gBAAgB,eAAe,MAAM,aAAa,KAAyB;AAChI;AAUO,SAAS,aAAa,QAAwC;AACjE,QAAM,eAAe,OAAO,QAAQ,KAAK,GAAG;AAGxC,MAAA,oBAAoB,KAAK,YAAY;AAAU,WAAA;AAGnD,QAAM,CAAC,cAAc,WAAW,IAAI,aAAa,MAAM,GAAG;AAGtD,MAAA,CAAC,gBAAgB,CAAC;AAAoB,WAAA;AAGpC,QAAA,aAAa,GAAG,aAAa,YAAA,CAAa,IAAI,YAAY,YAAa,CAAA;AAEtE,SAAA,WAAW,WAAW,IAAI,aAAa;AAClD;AASgB,SAAA,YAAY,QAAgB,kBAAkF;AACpH,QAAA,gBAAgB,OAAO;AAE7B,MAAI,CAAC,iBAAiB,cAAc,SAAS,KAAK,cAAc,SAAS;AAAU,WAAA;AAE7E,QAAA,kBAAkB,aAAa,aAAa;AAElD,MAAI,mBAAmB,iBAAiB,QAAQ,eAAe,IAAI;AAAW,WAAA;AAE9E,SAAO,YAAY,mBAAmB,eAAe,CAAC,GAAG,gBAAgB,CAAC;AAC9E;AAOO,SAAS,yBACZ,qBAAyC,CAAC,GAC1C,kBACmB;AACnB,SAAQ,OAAO,KAAK,kBAAkB,EAAkD,OAAO,CAAC,cAAc,WAAW;AACrH,UAAM,kBAAkB,aAAa,MAAM,KAAK,YAAY,QAAQ,gBAAgB;AAChF,QAAA,mBAAmB,mBAAmB,MAAM,GAAG;AAClC,mBAAA,eAAe,IAAI,mBAAmB,MAAM;AAAA,IAC7D;AACO,WAAA;AAAA,EACX,GAAG,CAAwB,CAAA;AAC/B;AAEA,MAAM,2BAA2B,CAAC,aAAqB,WAAiC;AAC7E,SAAA,YAAY,QAAQ,aAAa,CAACC,IAAGC,QAAM,iCAASA,QAAM,EAAE;AACvE;AAUa,MAAA,iBAAiB,CAC1B,cACA,KACA,UAA8B,EAAE,QAAQ,CAAC,GAAG,OAAO,QACnC;AACV,QAAA,QAAQ,QAAQ,SAAS;AAC/B,QAAM,WAAW,GAAG,GAAG,KAAK,KAAK;AAGjC,MAAI,eAAe,cAAc,QAAQ,KAAK,aAAa,QAAQ,GAAG;AAClE,WAAO,yBAAyB,aAAa,QAAQ,GAAa,QAAQ,MAAM;AAAA,EACpF;AAEM,QAAA,YAAY,GAAG,GAAG;AAGpB,MAAA,eAAe,cAAc,SAAS,KAAK,QAAQ,KAAK,aAAa,SAAS,GAAG;AACjF,WAAO,yBAAyB,aAAa,SAAS,GAAa,QAAQ,MAAM;AAAA,EACrF;AAGA,MAAI,eAAe,cAAc,GAAG,KAAK,aAAa,GAAG,GAAG;AACxD,WAAO,yBAAyB,aAAa,GAAG,GAAa,QAAQ,MAAM;AAAA,EAC/E;AAEO,SAAA;AACX;AAOO,MAAM,mBAAmB,OAC5B,QACA,cACA,qBAAyC,CAAA,MACxC;AACD,QAAM,mBAAmB,gBAAgB,EAAE,SAAS,MAAM,OAAO;AAEjE,QAAM,eAAe,YAAY,QAAQ,OAAO,KAAK,gBAAgB,CAAsB,KAAK;AAC1F,QAAA,eAAe,iBAAiB,YAAY;AAE3C,SAAA;AAAA,IACH,GAAG;AAAA;AAAA,IACH,GAAG;AAAA;AAAA,IACH,GAAI,CAAC,CAAC,mBAAmB,MAAM,KAAK,mBAAmB,MAAM;AAAA;AAAA,EAAA;AAErE;AC9IO,SAAS,2BAA6C;AAOzD,MAAIC,WAAU,KAAK;AACnB,MAAI,mBAAmBA;AACvB,MAAIC,qBAAoB,KAAK;AAE7B,SAAO,OAAO;AAAA,IACV,MAAM,EAAE,OAAO,CAAC,uBAA4C,iBAAiBD,UAAS,KAAK,uBAAuB,kBAAkB,EAAE;AAAA,IACtI,QAAQ;AAAA,MACJ,KAAK,MAAMA;AAAA,MACX,KAAK,CAAC,WAAqC;AACpB,2BAAA;AACnB,QAAAA,WAAU,aAAa,MAAM,KAAK,YAAY,QAAQC,kBAAiB,KAAK;AAAA,MAChF;AAAA,IACJ;AAAA,IACA,kBAAkB;AAAA,MACd,KAAK,MAAMD;AAAA,MACX,IAA8B,kBAAgD;AACtD,QAAAC,qBAAA;AACpB,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ;AAAA,EAAA,CACH;AACL;AAEO,SAAS,kCAAoD;AAChE,QAAM,cAAc,CAAA;AAET,aAAA,CAAC,MAAM,UAAU,KAAK,OAAO,QAAQ,OAAO,0BAA0B,aAAa,SAAS,CAAC,GAAG;AACnG,QAAA,cAAc,SAAS,IAAsC;AAAG;AAEhE,QAAA,WAAW,WAAW,GAAG,GAAG;AAChB,kBAAA,IAAI,IAAI,EAAE,KAAK,WAAW,IAAI,KAAK,IAAI;IAC5C,WAAA,WAAW,WAAW,KAAK,GAAG;AACzB,kBAAA,IAAI,IAAI,EAAE,OAAO,WAAW,MAAM,KAAK,IAAI;IAAE,OACtD;AACH,kBAAY,IAAI,IAAI,EAAE,KAAK,MAAM,KAAK,IAA0B;IACpE;AAAA,EACJ;AAEO,SAAA;AACX;AClDA,MAAM,yBAAyB,MAAM;AAC3B,QAAAC,QAAO,CAAoD,OAAa;AAC9E,QAAM,OAAO;AAEb,SAAO,CAAC,WAAgC;AACpC,QAAI,WAAW;AAAkB,aAAAA;AAEjC,UAAM,iBAAuC,CAAA;AAEtC,WAAA,CAAoD,OACtD,IAAI,SAAgB;AACjB,UAAI,YAAY;AACZ,UAAA;AACA,uBAAe,KAAK,EAAE;AACf,eAAA,GAAG,GAAG,IAAI;AAAA,eACZ,IAAI;AACT,cAAO,YAAY;AAAA,MAAA,UACrB;AACE,uBAAe,IAAI;AACf,YAAA,eAAe,WAAW,KAAK,cAAc;AAAa;MAClE;AAAA,IAAA;AAAA,EACJ;AAEZ;AAEA,MAAA,aAAe;ACzBR,MAAM,2BAA2B,CAAgC,iBAAiB,OAAwB;AAC7G,QAAM,cAAc,CAAA;AAOpB,aAAW,OAAO,OAAO,KAAK,cAAc,GAAkB;AAC1D,UAAM,EAAE,KAAK,OAAAvB,WAAU,OAAO,yBAAyB,gBAAgB,GAAG;AAC1E,gBAAY,GAAG,IAAI;AAAA,MACf,YAAY;AAAA,MACZ,KACI,QACC,WAAWA,MAAK,IACXA,OAAM,KAAK,cAAc,IACzB,MAAMA;AAAA,IAAA;AAAA,EAExB;AAEA,SAAO,OAAO,WAAW;AAC7B;AAEO,MAAM,+BAA+B,MAAqC;AAC7E,QAAM,YAAsC,EAAE,MAAM,MAAM,QAAQ,KAAK;AACvE,QAAM,cAAc,CAAA;AAEpB,aAAW,OAAO,OAAO,KAAK,SAAS,GAAiC;AACpE,gBAAY,GAAG,IAAI;AAAA,MACf,KAAK,MAAM,UAAU,GAAG;AAAA,MACxB,KAAK,CAAC,aAAyC;AAC3C,YAAI,YAAY,QAAW;AACvB,oBAAU,GAAG,IAAI;AAAA,QAAA,WACV,WAAW,QAAQ,KAAK,aAAa,UAAU,GAAG,GAAG;AAC5D,oBAAU,GAAG,IAAI;AAAA,QACrB;AAAA,MACJ;AAAA,IAAA;AAAA,EAER;AAEA,SAAO,OAAO,WAAW;AAC7B;AC5CO,MAAM,iBAAgC,OAAO;ACKpD,MAAqB,cAA6C;AAAA,EAQ9D,YAAY,iBAAiB,IAAqB;AAPzC;AACA;AAET;AACA,8DAAwB;AACxB,4DAAsB;AAGlB,uBAAK,gBAAiB;AACjB,uBAAA,YAAa,yBAAyB,cAAc;AACzD,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AAAA,EACrC;AAAA,EAEA,IAAI,OAAO;AACA,WAAA,mBAAK,iBAAgB,SAAS;AAAA,EACzC;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAW;AACJ,WAAA,mBAAK,uBAAsB,OAAO,OAAO,EAAE,GAAG,mBAAK,aAAY;AAAA,EAC1E;AAAA,EAEA,eAAe,QAAgC;AACvC,QAAA,mBAAK,iBAAgB,SAAS;AAAG;AAErC,QAAI,WAAW,gBAAgB;AAC3B,yBAAK,iBAAgB,QAAQ,CAACmB,IAAG,OAAO,GAAG,MAAM,CAAC;AAC3C,aAAA;AAAA,IACX;AAEA,UAAM,kBAAkB,mBAAK;AAC7B,uBAAK,oBAAqB,OAAO,OAAO,EAAE,GAAG,mBAAK,aAAY;AAE9D,eAAW,OAAO,OAAO,KAAK,mBAAK,mBAAkB,GAAkB;AACnE,UAAI,UAAU,mBAAK,oBAAmB,GAAG,GAAG,gBAAgB,GAAG,CAAC;AAAG;AAC9D,yBAAA,iBAAgB,QAAQ,CAACA,IAAG,OAAO,GAAG,mBAAK,mBAAiC,CAAC;AAC3E,aAAA;AAAA,IACX;AAEO,WAAA;AAAA,EACX;AAAA,EAEA,MAAM,eAAkC;AACpC,QAAI,CAAC;AAAsB,aAAA;AAE3B,QAAI,kBAAkB,mBAAK,mBAAkB,IAAI,aAAa;AAC9D,UAAM,gCAAgC,mBAAK,iBAAgB,IAAI,aAAa,KAAK;AACjF,UAAM,aAAa,KAAK;AAExB,QAAI,CAAC,iBAAiB;AAClB,UAAI,UAAU,MAAM;AAChB,cAAMK,iCAAgC,mBAAK,iBAAgB,IAAI,aAAa,KAAK;AAEjF,YAAIA,mCAAkC,GAAG;AAC3B,oBAAA;AACL,6BAAA,mBAAkB,OAAO,aAAa;AACtC,6BAAA,iBAAgB,OAAO,aAAa;AAErC,cAAA,mBAAK,iBAAgB,SAAS,GAAG;AACjC,+BAAK,oBAAqB;AAC1B,+BAAK,gBAAe;UACxB;AAAA,QAAA,WACOA,iCAAgC,GAAG;AAC1C,6BAAK,iBAAgB,IAAI,eAAeA,iCAAgC,CAAC;AAAA,QAC7E;AAAA,MAAA;AAGJ,yBAAK,mBAAkB,IAAI,eAAgB,kBAAkB,MAAM,oCAAY;AAAA,IACnF;AAEA,uBAAK,iBAAgB,IAAI,eAAe,gCAAgC,CAAC;AAEzE,QAAI,YAAY;AACZ,yBAAK,oBAAqB,OAAO,OAAO,EAAE,GAAG,mBAAK,aAAY;AAC9D,yBAAK,gBAAe;IACxB;AAEA,kBAAc,mBAAK,mBAAiC;AAE7C,WAAA;AAAA,EACX;AACJ;AArFa;AACA;AAET;AACA;AACA;ACLJ,MAAM,YAAa,CAAkB,mBAAA;AAC3B,QAAA,WAAW,IAAI,cAAc,cAAc;AAEjD,SAAO,OAAO;AAAA,IACV,UAAU,EAAE,OAAO,SAAS,cAAc;AAAA,IAC1C,MAAM,EAAE,KAAK,MAAM,SAAS,KAAK;AAAA,IACjC,QAAQ,EAAE,OAAO,SAAS,eAAe;AAAA,IACzC,UAAU,EAAE,KAAK,MAAM,SAAS,SAAS;AAAA,IACzC,OAAO,EAAE,OAAO,SAAS,MAAM;AAAA,EAAA,CAClC;AACL;AAEA,MAAA,cAAe,OAAO,iBAAiB,WAAW;AAAA,EAC9C,SAAS,EAAE,OAAO,eAAe;AAAA,EACjC,gBAAgB,EAAE,OAAO,WAAW;AACxC,CAAC;ACVD,MAAqB,aAAa;AAAA,EAmB9B,YAAY,SAAmC,iBAAiB,mBAAgC;AAqEhG;AAvFA,gCAAoC;AACpC,sCAAwB,gBAAgB,mBAAK,QAAO;AACpD,0CAA4D;AAE5D;AACA,sCAAwC;AACxC,4CAAsB,yBAAyB,KAAK,IAAI;AAExD,+BAAwB,QAAQ;AAChC;AACA;AACA,0CAAoBC,YAAU,EAAE,WAAW,MAAM,YAAY,OAAO;AACpE,iCAAkCR,YAAU;AAEpC,iCAAQ,mBAAK,mBAAkB,MAAM,KAAK,MAAS;AACpD,gCAA2D,OAAO,gCAAgC,KAAK,IAAI,CAAC;AAC5G;AAGH,SAAK,MAAM,IAAI;AAEf,SAAK,wBACD,qBACA,kBAAkB,OAAO,CAAC,MAAM,UAAU,EAAE,GAAG,MAAM,GAAG,KAAS,IAAA;AAAA,MAC7D,CAAC,eAAe,GAAG,MAAM,OAAO;AAAA,IAAA,CACnC;AACL,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,IAAI,qBAAyC;AAClC,WAAA,mBAAK,wBAAwB;EACxC;AAAA,EAEA,IAAI,mBAAmB,oBAA2D;AAC9E,QAAI,eAA+C;AAC/C,QAAA,mBAAiD,CAAC,GAAG,eAAe;AAExE,QAAI,sBAAsB,QAAW;AAClB,qBAAA,yBAAyB,oBAAoB,eAAe;AACrE,YAAA,gCAAgC,OAAO,KAAK,YAAY;AAG9D,yBAAmB,CAAC,GAAG,iBAAiB,GAAG,6BAA6B,EAAE;AAAA,QACtE,CAAC,QAAQS,QAAO,YAAY,QAAQ,QAAQ,MAAM,MAAMA;AAAA,MAAA;AAAA,IAEhE;AAEA,uBAAK,qBAAoB,mBAAmB;AAC5C,0BAAK,8CAAL,WAA0B;AAAA,EAC9B;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,uBAAuB;AAChB,WAAA,mBAAK,mBAAkB,SAAS;AAAA,EAC3C;AAAA,EAEA,IAAI,SAAmC;AACnC,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,QAAqD;AAC5D,QAAI,UAAU,QAAW;AACrB,yBAAK,qBAAoB,SAAS;AAC9B,UAAA,mBAAK,aAAY,mBAAK,qBAAoB;AAAQ;AACjD,4BAAA,8CAAA,WAAqB,mBAAK;AAAA,IACnC;AAAO,WAAK,SAAS;AAAA,EACzB;AAAA,EAEA,IAAI,QAAuB;AACvB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,mBAA2D;AAC3D,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmD;AAC5C,WAAA,mBAAK,UAAS,GAAG;AAAA,EAC5B;AAAA,EAEA,IAAI,SAASC,WAAqC;AAC9C,uBAAK,UAAS,KAAKA;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuCA,IAAI,KAAqB,SAAsC;AAC3D,UAAM,cAAc,eAAe,mBAAK,gBAAe,KAAK,OAAO;AAC5D,WAAA,gBAAgB,OAAO,cAAc;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,KAAa,SAAqD;AAClE,UAAM,cAAc,eAAe,mBAAK,gBAAe,KAAK,OAAO;AACnE,WAAO,CAAC,CAAC;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAOtB,SAAgB,cAAsB,SAAuC;AAChF,UAAM,EAAE,cAAc,GAAG,cAAc,IAAI,WAAW,CAAA;AACtD,UAAM,kBAAkB,mBAAmBA,SAAQ,mBAAK,UAAS,cAAc,cAAc;AAAA,MACzF,GAAG;AAAA,MACH,iBAAiB;AAAA,MACjB,aAAa;AAAA,IAAA,CAChB;AAED,WAAOA,UAAS,IAAI,KAAK,eAAe,KAAK;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAKU,OAA8B,UAAsC,IAAI;AACnE,UAAA,cAAc,EAAE,GAAG,yBAAyB,UAAU,mBAAK,UAAS,GAAG,SAAS,GAAG;AACzF,WAAO,IAAI,KAAKA,KAAI,EAAE,mBAAmB,mBAAK,UAAS,WAAW;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAASA,OAA8B;AACnC,UAAM,YAAY,iBAAiB,mBAAK,WAAUA,KAAI;AACtD,UAAM,CAAG,EAAA,OAAO,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,MAAM;AAC9E,WAAO,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI;AAAA,EAC5C;AACJ;AAhLI;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AA2EA;AAAA,kCAAqB,oBAAyC;AACtD,MAAA,mBAAK,wBAAuB,QAAW;AAClC,uBAAA,QAAS,IAAI,QAAc,CAAW,YAAA;AACvC,yBAAK,oBAAqB,MAAM;AAC5B,gBAAQ,mBAAK,gBAAe;AACvB,2BAAA,iBAAkB,mBAAK,oBAAqB;AAAA,MAAA;AAAA,IACrD,CACH;AAAA,EACL;AAEA,QAAM,qBAAqB,MAAM;;AAC7B,QAAI,mBAAK,qBAAoB;AAAgB,OAAAC,MAAA,mBAAK,wBAAL,gBAAAA,IAAA;AAAA,EAA0B;AAGrE,QAAA,iBAAkB,mBAAK,kBAAmB,YAAY;AACxD,uBAAK,eAAgB,MAAM,mBAAK,qBAAoB,KAAK,kBAAkB;AACtE,uBAAA,SAAU,mBAAK,qBAAoB;AACnC,uBAAA,mBAAoB,mBAAK,qBAAoB;AAClD,uBAAK,qBAAsB;AACtB,uBAAA,eAAgB,gBAAgB,mBAAK,QAAO;AACjD,uBAAK,mBAAkB;EAAO;AAGlC,iBAAe,KAAK,kBAAkB,EAAE,MAAM,CAAU,WAAA;AACjC;AAGnB,YAAQ,MAAM,MAAM;AAAA,EAAA,CACvB;AACL;ACxHJ,MAAM,eAAe;AAErB,MAAM,KAAqC;AAAA,EAkBvC,YAAY,SAAyB;AAX9B;AACA;AACA;AACA,sCAAiC,CAAA;AACjC;AACA;AACA;AAEA;AAAA;AACA;AAmBA,yCAAgB,YAAY;;AAC3B,UAAA;AACA,YAAI,KAAK,QAAQ,mBAAmB,CAAC,KAAK,wBAAwB;AAC9D,eAAK,yBAAyB;AACzB,eAAA,UAAU,IAAIY,UAAQ,MAAM,KAAK,QAAQ,gBAAmB,GAAA,KAAK,cAAe;AACrF,kBAAMZ,MAAA,KAAK,YAAL,gBAAAA,IAAc,aAAa,KAAK;AAChC,gBAAA,KAAK,OAAO,CAAA,CAAE;AACpB,eAAK,yBAAyB;AACvB,iBAAA;AAAA,QACX;AAAA,eACK,OAAO;AACZ,YAAI,KAAK,QAAQ;AAAc,eAAA,QAAQ,QAAQ,KAAK;AAEpD,aAAK,oBAAoB;AACzB,cAAM,KAAK;AACX,aAAK,yBAAyB;AACvB,eAAA;AAAA,MACX;AAAA,IAAA;AASG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAS,CAAC,UAAmC,cAAc,cAAc,UAAyB;AACrG,WAAK,WAAW,OAAO;AAEvB,aAAO,KAAK,WAAW,WAAW,EAAE,KAAK,MAAM;AAEtC,aAAA,WAAW,QAAQ,CAAAa,OAAKA,GAAE,OAAO,KAAK,qBAAqB,KAAK,OAAO,CAAC,CAAC;AAEvE,eAAA;AAAA,MAAA,CACV;AAAA,IAAA;AAQE;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAS,CAAC,cAAsC;AAC9C,WAAA,aAAa,KAAK,WAAW,OAAO,QAAKA,GAAE,QAAQ,UAAU,GAAG;AACrE,gBAAU,QAAQ;AAEX,aAAA;AAAA,IAAA;AAQJ;AAAA;AAAA;AAAA;AAAA,6CAAoB,CAAC,cAAgC;AACnD,WAAA,WAAW,KAAK,SAAS;AAAA,IAAA;AAU1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAa,CAAC,YAA2C;;AAC7D,WAAK,UAAU,EAAE,GAAG,KAAK,SAAS,GAAG;AAEhC,WAAA,aAAa,UAASb,MAAA,KAAK,YAAL,gBAAAA,IAAc;AACpC,WAAA,aAAa,sBAAqBc,MAAA,KAAK,YAAL,gBAAAA,IAAc;AAChD,WAAA,aAAa,YAAWC,MAAA,KAAK,YAAL,gBAAAA,IAAc;AACtC,WAAA,kBAAkB,KAAK,QAAQ;AACpC,WAAK,UAAU;AAAA;AAAA,QAEX,MAAM,KAAK,aAAa;AAAA,MAAA;AASrB,aAAA;AAAA,IAAA;AAnGP,SAAK,UAAU,EAAE,aAAa,cAAc,GAAG,QAAQ;AAEvD,SAAK,yBAAyB;AAC9B,SAAK,eAAe,IAAI,aAAa,QAAQ,QAAQ,QAAQ,qBAAqB;AAC7E,SAAA,iBAAoD,mBAAA,KAAA,mBAAmC;AAC5F,SAAK,WAAW,OAAO;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,cAAc,OAAsB;AAC7C,QAAA,CAAC,KAAK,sBAAsB,eAAgB,CAAC,KAAK,WAAW,KAAK,kBAAmB;AACrF,YAAM,KAAK;IACf;AAEO,WAAA,QAAQ,IAAI,CAAC,KAAK,aAAa,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6FQ,qBAAqB,SAAc;AAChC,WAAA;AAAA,MACH,GAAG;AAAA,MACH,MAAM,KAAK,QAAQ;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,gBAAgB,KAAK;AAAA,MACrB,iBAAiB;AAAA,IAAA;AAAA,EAEzB;AACJ;AAvII,cADE,MACqB,WAAU;AAAA,EAC7B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAY;AAqI7B,MAAA,SAAe;;;ACpJZ,IAAC,GAAEC,KAAEC,KAAIC,KAAEC,KAAEC,KAAEC,KAAEnC,KAAE2B,MAAE,CAAE,GAACtB,MAAE,CAAA,GAAGE,MAAE,qEAAoE6B,MAAE,MAAM;AAAQ,SAASC,IAAEC,IAAER,IAAE;AAAC,WAAQC,MAAKD;AAAE,IAAAQ,GAAEP,EAAC,IAAED,GAAEC,EAAC;AAAE,SAAOO;AAAC;AAAC,SAASlC,IAAEkC,IAAE;AAAC,MAAIR,KAAEQ,GAAE;AAAW,EAAAR,MAAGA,GAAE,YAAYQ,EAAC;AAAC;AAAC,SAASC,IAAET,IAAEC,IAAES,IAAE;AAAC,MAAIR,IAAEC,IAAEC,IAAEC,KAAE,CAAE;AAAC,OAAID,MAAKH;AAAE,aAAOG,KAAEF,KAAED,GAAEG,EAAC,IAAE,SAAOA,KAAED,KAAEF,GAAEG,EAAC,IAAEC,GAAED,EAAC,IAAEH,GAAEG,EAAC;AAAE,MAAG,UAAU,SAAO,MAAIC,GAAE,WAAS,UAAU,SAAO,IAAE,EAAE,KAAK,WAAU,CAAC,IAAEK,KAAG,cAAY,OAAOV,MAAG,QAAMA,GAAE;AAAa,SAAII,MAAKJ,GAAE;AAAa,iBAASK,GAAED,EAAC,MAAIC,GAAED,EAAC,IAAEJ,GAAE,aAAaI,EAAC;AAAG,SAAOO,IAAEX,IAAEK,IAAEH,IAAEC,IAAE,IAAI;AAAC;AAAC,SAASQ,IAAEH,IAAEE,IAAER,IAAEC,IAAEC,IAAE;AAAC,MAAIC,KAAE,EAAC,MAAKG,IAAE,OAAME,IAAE,KAAIR,IAAE,KAAIC,IAAE,KAAI,MAAK,IAAG,MAAK,KAAI,GAAE,KAAI,MAAK,KAAI,QAAO,KAAI,MAAK,KAAI,MAAK,aAAY,QAAO,KAAI,QAAMC,KAAE,EAAEH,MAAEG,GAAC;AAAE,SAAO,QAAMA,MAAG,QAAMJ,IAAE,SAAOA,IAAE,MAAMK,EAAC,GAAEA;AAAC;AAAmC,SAASjB,IAAEoB,IAAE;AAAC,SAAOA,GAAE;AAAQ;AAAC,SAAS9B,IAAE8B,IAAER,IAAE;AAAC,OAAK,QAAMQ,IAAE,KAAK,UAAQR;AAAC;AAAC,SAASY,IAAEJ,IAAER,IAAE;AAAC,MAAG,QAAMA;AAAE,WAAOQ,GAAE,KAAGI,IAAEJ,GAAE,IAAGA,GAAE,GAAG,IAAI,QAAQA,EAAC,IAAE,CAAC,IAAE;AAAK,WAAQP,IAAED,KAAEQ,GAAE,IAAI,QAAOR;AAAI,QAAG,SAAOC,KAAEO,GAAE,IAAIR,EAAC,MAAI,QAAMC,GAAE;AAAI,aAAOA,GAAE,OAAKA,GAAE;AAAI,SAAM,cAAY,OAAOO,GAAE,OAAKI,IAAEJ,EAAC,IAAE;AAAI;AAAC,SAASK,IAAEL,IAAE;AAAC,MAAIR,IAAEC;AAAE,MAAG,SAAOO,KAAEA,GAAE,OAAK,QAAMA,GAAE,KAAI;AAAC,SAAIA,GAAE,MAAIA,GAAE,IAAI,OAAK,MAAKR,KAAE,GAAEA,KAAEQ,GAAE,IAAI,QAAOR;AAAI,UAAG,SAAOC,KAAEO,GAAE,IAAIR,EAAC,MAAI,QAAMC,GAAE,KAAI;AAAC,QAAAO,GAAE,MAAIA,GAAE,IAAI,OAAKP,GAAE;AAAI;AAAA,MAAK;AAAC,WAAOY,IAAEL,EAAC;AAAA,EAAC;AAAC;AAAC,SAASM,IAAEN,IAAE;AAAC,GAAC,CAACA,GAAE,QAAMA,GAAE,MAAI,SAAKN,IAAE,KAAKM,EAAC,KAAG,CAACO,IAAE,SAAOZ,QAAIH,IAAE,wBAAsBG,MAAEH,IAAE,sBAAoBI,KAAGW,GAAC;AAAC;AAAC,SAASA,MAAG;AAAC,MAAIP,IAAER,IAAEC,IAAES,IAAEP,IAAEC,IAAElC,IAAE2B,IAAEtB;AAAE,OAAI2B,IAAE,KAAKG,GAAC,GAAEG,KAAEN,IAAE,MAAO;AAAE,IAAAM,GAAE,QAAMR,KAAEE,IAAE,QAAOQ,KAAE,QAAOP,KAAE,QAAOC,KAAE,QAAOP,MAAG3B,MAAG+B,KAAEO,IAAG,KAAK,MAAKjC,KAAE0B,GAAE,SAAOS,KAAE,CAAA,GAAGP,KAAE,CAAE,IAAEC,KAAEG,IAAE,IAAGrC,EAAC,GAAG,MAAIA,GAAE,MAAI,GAAE8C,IAAEzC,IAAEL,IAAEkC,IAAEH,GAAE,KAAI,WAAS1B,GAAE,iBAAgB,QAAML,GAAE,MAAI,CAAC2B,EAAC,IAAE,MAAKa,IAAE,QAAMb,KAAEe,IAAE1C,EAAC,IAAE2B,IAAE3B,GAAE,KAAIiC,EAAC,GAAEc,IAAEP,IAAExC,IAAEiC,EAAC,GAAEjC,GAAE,OAAK2B,MAAGgB,IAAE3C,EAAC,IAAGgC,IAAE,SAAOF,MAAGE,IAAE,KAAKG,GAAC;AAAGU,MAAE,MAAI;AAAC;AAAC,SAASG,IAAEV,IAAER,IAAEC,IAAES,IAAER,IAAEC,IAAEC,IAAEC,IAAEnC,IAAEO,IAAE8B,IAAE;AAAC,MAAIjC,IAAEmC,IAAEtB,IAAET,IAAEmC,IAAEC,IAAEC,IAAEG,IAAEC,IAAEC,KAAE,GAAEC,KAAEX,MAAGA,GAAE,OAAKnC,KAAE+C,KAAED,GAAE,QAAOE,KAAED,IAAEE,KAAExB,GAAE;AAAO,OAAIC,GAAE,MAAI,CAAE,GAAC3B,KAAE,GAAEA,KAAEkD,IAAElD;AAAI,aAAOI,KAAEuB,GAAE,IAAI3B,EAAC,IAAE,SAAOI,KAAEsB,GAAE1B,EAAC,MAAI,aAAW,OAAOI,MAAG,cAAY,OAAOA,KAAE,OAAK,YAAU,OAAOA,MAAG,YAAU,OAAOA,MAAG,YAAU,OAAOA,KAAEiC,IAAE,MAAKjC,IAAE,MAAK,MAAKA,EAAC,IAAE4B,IAAE5B,EAAC,IAAEiC,IAAEvB,KAAE,EAAC,UAASV,GAAC,GAAE,MAAK,MAAK,IAAI,IAAEA,GAAE,MAAI,IAAEiC,IAAEjC,GAAE,MAAKA,GAAE,OAAMA,GAAE,KAAIA,GAAE,MAAIA,GAAE,MAAI,MAAKA,GAAE,GAAG,IAAEA,OAAIA,GAAE,KAAGuB,IAAEvB,GAAE,MAAIuB,GAAE,MAAI,GAAE,QAAMiB,KAAEO,IAAE/C,IAAE2C,IAAEN,KAAEzC,KAAE8C,IAAEG,EAAC,KAAGpC,KAAEU,OAAGV,KAAEkC,GAAEH,EAAC,KAAGrB,KAAEwB,GAAEH,EAAC,IAAE,QAAOK,OAAKP,IAAER,IAAE9B,IAAES,IAAEe,IAAEC,IAAEC,IAAEC,IAAEnC,IAAEO,IAAE8B,EAAC,GAAEM,KAAEnC,GAAE,MAAK+B,KAAE/B,GAAE,QAAMS,GAAE,OAAKsB,OAAItB,GAAE,OAAKuC,IAAEvC,GAAE,KAAI,MAAKT,EAAC,GAAE6B,GAAE,KAAKE,IAAE/B,GAAE,OAAKmC,IAAEnC,EAAC,IAAG,QAAMmC,OAAI,QAAMC,OAAIA,KAAED,MAAIM,KAAEhC,OAAIU,OAAG,SAAOV,GAAE,OAAK,MAAI+B,MAAGE,OAAIF,OAAIH,OAAIG,OAAIH,KAAE,IAAEK,OAAIF,KAAEH,KAAEQ,KAAEC,KAAET,KAAEK,MAAGF,KAAEH,KAAEK,OAAIA,KAAEF,KAAEH,MAAGG,MAAGH,KAAE,IAAEG,KAAEH,KAAE,IAAGA,KAAEzC,KAAE8C,IAAE,cAAY,OAAO1C,GAAE,QAAMwC,OAAIH,MAAG5B,GAAE,QAAMT,GAAE,MAAI,cAAY,OAAOA,GAAE,QAAMwC,OAAIH,MAAG,CAACI,KAAE,WAASzC,GAAE,OAAKR,KAAEQ,GAAE,KAAIA,GAAE,MAAI,UAAQR,KAAE2C,GAAE,cAAY3C,KAAE,EAAEsC,IAAEK,IAAE3C,EAAC,IAAEA,KAAEyD,IAAEjD,IAAER,IAAEsC,EAAC,GAAE,cAAY,OAAOP,GAAE,SAAOA,GAAE,MAAI/B,SAAMiB,KAAEkC,GAAE/C,EAAC,MAAI,QAAMa,GAAE,OAAKA,GAAE,QAAMA,GAAE,OAAKjB,OAAIiB,GAAE,KAAGuB,IAAExC,KAAE0C,IAAEzB,EAAC,IAAG,EAAEA,IAAEA,IAAE,KAAE,GAAEkC,GAAE/C,EAAC,IAAE;AAAM,OAAI2B,GAAE,MAAIa,IAAExC,KAAEgD,IAAEhD;AAAK,YAAM+C,GAAE/C,EAAC,MAAI,cAAY,OAAO2B,GAAE,QAAM,QAAMoB,GAAE/C,EAAC,EAAE,OAAK+C,GAAE/C,EAAC,EAAE,OAAK2B,GAAE,QAAMA,GAAE,MAAIoB,GAAE/C,EAAC,EAAE,IAAI,cAAa,EAAE+C,GAAE/C,EAAC,GAAE+C,GAAE/C,EAAC,CAAC;AAAE;AAAC,SAASqD,IAAEnB,IAAER,IAAEC,IAAE;AAAC,WAAQS,IAAER,KAAEM,GAAE,KAAIL,KAAE,GAAED,MAAGC,KAAED,GAAE,QAAOC;AAAI,KAACO,KAAER,GAAEC,EAAC,OAAKO,GAAE,KAAGF,IAAER,KAAE,cAAY,OAAOU,GAAE,OAAKiB,IAAEjB,IAAEV,IAAEC,EAAC,IAAE,EAAEA,IAAES,GAAE,KAAIV,EAAC;AAAG,SAAOA;AAAC;AAAC,SAASmB,IAAEX,IAAER,IAAE;AAAC,SAAOA,KAAEA,MAAG,CAAE,GAAC,QAAMQ,MAAG,aAAW,OAAOA,OAAIF,IAAEE,EAAC,IAAEA,GAAE,KAAK,SAASA,IAAE;AAACW,QAAEX,IAAER,EAAC;AAAA,EAAC,CAAC,IAAEA,GAAE,KAAKQ,EAAC,IAAGR;AAAC;AAAC,SAAS,EAAEQ,IAAER,IAAEC,IAAE;AAAC,SAAO,QAAMA,MAAGA,GAAE,eAAaO,KAAEA,GAAE,aAAaR,IAAE,IAAI,IAAEA,MAAGC,MAAG,QAAMD,GAAE,cAAYQ,GAAE,aAAaR,IAAEC,EAAC,GAAED,GAAE;AAAW;AAAC,SAASyB,IAAEjB,IAAER,IAAEC,IAAES,IAAE;AAAC,MAAIR,KAAEM,GAAE,KAAIL,KAAEK,GAAE,MAAKJ,KAAEH,KAAE,GAAEI,KAAEJ,KAAE,GAAE/B,KAAE8B,GAAEC,EAAC;AAAE,MAAG,SAAO/B,MAAGA,MAAGgC,MAAGhC,GAAE,OAAKiC,OAAIjC,GAAE;AAAK,WAAO+B;AAAE,MAAGS,MAAG,QAAMxC,KAAE,IAAE;AAAG,WAAKkC,MAAG,KAAGC,KAAEL,GAAE,UAAQ;AAAC,UAAGI,MAAG,GAAE;AAAC,aAAIlC,KAAE8B,GAAEI,EAAC,MAAIF,MAAGhC,GAAE,OAAKiC,OAAIjC,GAAE;AAAK,iBAAOkC;AAAE,QAAAA;AAAA,MAAG;AAAC,UAAGC,KAAEL,GAAE,QAAO;AAAC,aAAI9B,KAAE8B,GAAEK,EAAC,MAAIH,MAAGhC,GAAE,OAAKiC,OAAIjC,GAAE;AAAK,iBAAOmC;AAAE,QAAAA;AAAA,MAAG;AAAA,IAAC;AAAC,SAAM;AAAE;AAAC,SAASe,IAAEZ,IAAER,IAAEC,IAAES,IAAER,IAAE;AAAC,MAAIC;AAAE,OAAIA,MAAKF;AAAE,mBAAaE,MAAG,UAAQA,MAAGA,MAAKH,MAAGsB,IAAEd,IAAEL,IAAE,MAAKF,GAAEE,EAAC,GAAEO,EAAC;AAAE,OAAIP,MAAKH;AAAE,IAAAE,MAAG,cAAY,OAAOF,GAAEG,EAAC,KAAG,eAAaA,MAAG,UAAQA,MAAG,YAAUA,MAAG,cAAYA,MAAGF,GAAEE,EAAC,MAAIH,GAAEG,EAAC,KAAGmB,IAAEd,IAAEL,IAAEH,GAAEG,EAAC,GAAEF,GAAEE,EAAC,GAAEO,EAAC;AAAC;AAAC,SAASW,IAAEb,IAAER,IAAEC,IAAE;AAAC,UAAMD,GAAE,CAAC,IAAEQ,GAAE,YAAYR,IAAE,QAAMC,KAAE,KAAGA,EAAC,IAAEO,GAAER,EAAC,IAAE,QAAMC,KAAE,KAAG,YAAU,OAAOA,MAAGxB,IAAE,KAAKuB,EAAC,IAAEC,KAAEA,KAAE;AAAI;AAAC,SAASqB,IAAEd,IAAER,IAAEC,IAAES,IAAER,IAAE;AAAC,MAAIC;AAAE;AAAE,QAAG,YAAUH;AAAE,UAAG,YAAU,OAAOC;AAAE,QAAAO,GAAE,MAAM,UAAQP;AAAA,WAAM;AAAC,YAAG,YAAU,OAAOS,OAAIF,GAAE,MAAM,UAAQE,KAAE,KAAIA;AAAE,eAAIV,MAAKU;AAAE,YAAAT,MAAGD,MAAKC,MAAGoB,IAAEb,GAAE,OAAMR,IAAE,EAAE;AAAE,YAAGC;AAAE,eAAID,MAAKC;AAAE,YAAAS,MAAGT,GAAED,EAAC,MAAIU,GAAEV,EAAC,KAAGqB,IAAEb,GAAE,OAAMR,IAAEC,GAAED,EAAC,CAAC;AAAA,MAAC;AAAA,aAAS,QAAMA,GAAE,CAAC,KAAG,QAAMA,GAAE,CAAC;AAAE,MAAAG,KAAEH,QAAKA,KAAEA,GAAE,QAAQ,8BAA6B,IAAI,IAAGA,KAAEA,GAAE,YAAW,KAAKQ,KAAER,GAAE,YAAa,EAAC,MAAM,CAAC,IAAEA,GAAE,MAAM,CAAC,GAAEQ,GAAE,MAAIA,GAAE,IAAE,CAAA,IAAIA,GAAE,EAAER,KAAEG,EAAC,IAAEF,IAAEA,KAAES,KAAET,GAAE,IAAES,GAAE,KAAGT,GAAE,IAAE,KAAK,IAAG,GAAGO,GAAE,iBAAiBR,IAAEG,KAAEqB,MAAED,KAAEpB,EAAC,KAAGK,GAAE,oBAAoBR,IAAEG,KAAEqB,MAAED,KAAEpB,EAAC;AAAA,aAAU,8BAA4BH,IAAE;AAAC,UAAGE;AAAE,QAAAF,KAAEA,GAAE,QAAQ,eAAc,GAAG,EAAE,QAAQ,UAAS,GAAG;AAAA,eAAU,YAAUA,MAAG,aAAWA,MAAG,WAASA,MAAG,WAASA,MAAG,WAASA,MAAG,eAAaA,MAAG,eAAaA,MAAG,cAAYA,MAAG,cAAYA,MAAG,WAASA,MAAGA,MAAKQ;AAAE,YAAG;AAAC,UAAAA,GAAER,EAAC,IAAE,QAAMC,KAAE,KAAGA;AAAE,gBAAM;AAAA,QAAC,SAAOO,IAAE;AAAA,QAAE;AAAA,oBAAY,OAAOP,OAAI,QAAMA,MAAG,UAAKA,MAAG,QAAMD,GAAE,CAAC,IAAEQ,GAAE,gBAAgBR,EAAC,IAAEQ,GAAE,aAAaR,IAAEC,EAAC;AAAA,IAAE;AAAC;AAAC,SAASsB,IAAEf,IAAE;AAAC,MAAIP,KAAE,KAAK,EAAEO,GAAE,OAAK,KAAE;AAAE,MAAGA,GAAE,GAAE;AAAC,QAAGA,GAAE,KAAGP,GAAE;AAAE;AAAA,EAAM;AAAM,IAAAO,GAAE,IAAE,KAAK,IAAG;AAAG,SAAOP,GAAED,IAAE,QAAMA,IAAE,MAAMQ,EAAC,IAAEA,EAAC;AAAC;AAAC,SAASgB,IAAEhB,IAAE;AAAC,SAAO,KAAK,EAAEA,GAAE,OAAK,IAAE,EAAER,IAAE,QAAMA,IAAE,MAAMQ,EAAC,IAAEA,EAAC;AAAC;AAAC,SAASQ,IAAER,IAAEP,IAAES,IAAER,IAAEC,IAAEC,IAAEC,IAAEnC,IAAE2B,IAAEtB,IAAE;AAAC,MAAIE,IAAEH,IAAEmC,IAAEE,IAAExB,IAAEyB,IAAEC,IAAEC,IAAEC,IAAEY,IAAER,IAAES,IAAEH,IAAEL,IAAEC,IAAEC,KAAErB,GAAE;AAAK,MAAG,WAASA,GAAE;AAAY,WAAO;AAAK,UAAMS,GAAE,QAAMb,KAAEa,GAAE,KAAIxC,KAAE+B,GAAE,MAAIS,GAAE,KAAIT,GAAE,MAAI,MAAKG,KAAE,CAAClC,EAAC,KAAIO,KAAEuB,IAAE,QAAMvB,GAAEwB,EAAC;AAAE;AAAE,QAAG,cAAY,OAAOqB;AAAE,UAAG;AAAC,YAAGR,KAAEb,GAAE,OAAMc,MAAGtC,KAAE6C,GAAE,gBAAcpB,GAAEzB,GAAE,GAAG,GAAEkD,KAAElD,KAAEsC,KAAEA,GAAE,MAAM,QAAMtC,GAAE,KAAGyB,IAAEQ,GAAE,MAAIG,MAAGvC,KAAE2B,GAAE,MAAIS,GAAE,KAAK,KAAGpC,GAAE,OAAK,eAAcgD,MAAGA,GAAE,UAAU,SAAOrB,GAAE,MAAI3B,KAAE,IAAIgD,GAAER,IAAEa,EAAC,KAAG1B,GAAE,MAAI3B,KAAE,IAAII,IAAEoC,IAAEa,EAAC,GAAErD,GAAE,cAAYgD,IAAEhD,GAAE,SAAOuD,MAAGd,MAAGA,GAAE,IAAIzC,EAAC,GAAEA,GAAE,QAAMwC,IAAExC,GAAE,UAAQA,GAAE,QAAM,CAAA,IAAIA,GAAE,UAAQqD,IAAErD,GAAE,MAAI4B,IAAEO,KAAEnC,GAAE,MAAI,MAAGA,GAAE,MAAI,CAAA,GAAGA,GAAE,MAAI,CAAE,IAAE,QAAMA,GAAE,QAAMA,GAAE,MAAIA,GAAE,QAAO,QAAMgD,GAAE,6BAA2BhD,GAAE,OAAKA,GAAE,UAAQA,GAAE,MAAIiC,IAAE,CAAA,GAAGjC,GAAE,GAAG,IAAGiC,IAAEjC,GAAE,KAAIgD,GAAE,yBAAyBR,IAAExC,GAAE,GAAG,CAAC,IAAGqC,KAAErC,GAAE,OAAMa,KAAEb,GAAE,OAAMA,GAAE,MAAI2B,IAAEQ;AAAE,kBAAMa,GAAE,4BAA0B,QAAMhD,GAAE,sBAAoBA,GAAE,mBAAkB,GAAG,QAAMA,GAAE,qBAAmBA,GAAE,IAAI,KAAKA,GAAE,iBAAiB;AAAA,aAAM;AAAC,cAAG,QAAMgD,GAAE,4BAA0BR,OAAIH,MAAG,QAAMrC,GAAE,6BAA2BA,GAAE,0BAA0BwC,IAAEa,EAAC,GAAE,CAACrD,GAAE,QAAM,QAAMA,GAAE,yBAAuB,UAAKA,GAAE,sBAAsBwC,IAAExC,GAAE,KAAIqD,EAAC,KAAG1B,GAAE,QAAMS,GAAE,MAAK;AAAC,iBAAIT,GAAE,QAAMS,GAAE,QAAMpC,GAAE,QAAMwC,IAAExC,GAAE,QAAMA,GAAE,KAAIA,GAAE,MAAI,QAAI2B,GAAE,MAAIS,GAAE,KAAIT,GAAE,MAAIS,GAAE,KAAIT,GAAE,IAAI,QAAQ,SAASO,IAAE;AAAC,cAAAA,OAAIA,GAAE,KAAGP;AAAA,YAAE,CAAC,GAAEkB,KAAE,GAAEA,KAAE7C,GAAE,IAAI,QAAO6C;AAAI,cAAA7C,GAAE,IAAI,KAAKA,GAAE,IAAI6C,EAAC,CAAC;AAAE,YAAA7C,GAAE,MAAI,CAAE,GAACA,GAAE,IAAI,UAAQ+B,GAAE,KAAK/B,EAAC;AAAE,kBAAM;AAAA,UAAC;AAAC,kBAAMA,GAAE,uBAAqBA,GAAE,oBAAoBwC,IAAExC,GAAE,KAAIqD,EAAC,GAAE,QAAMrD,GAAE,sBAAoBA,GAAE,IAAI,KAAK,WAAU;AAAC,YAAAA,GAAE,mBAAmBqC,IAAExB,IAAEyB,EAAC;AAAA,UAAC,CAAC;AAAA,QAAC;AAAC,YAAGtC,GAAE,UAAQqD,IAAErD,GAAE,QAAMwC,IAAExC,GAAE,MAAIkC,IAAElC,GAAE,MAAI,OAAGsD,KAAE5B,IAAE,KAAIyB,KAAE,GAAE,eAAcH,MAAGA,GAAE,UAAU,QAAO;AAAC,eAAIhD,GAAE,QAAMA,GAAE,KAAIA,GAAE,MAAI,OAAGsD,MAAGA,GAAE3B,EAAC,GAAExB,KAAEH,GAAE,OAAOA,GAAE,OAAMA,GAAE,OAAMA,GAAE,OAAO,GAAE8C,KAAE,GAAEA,KAAE9C,GAAE,IAAI,QAAO8C;AAAI,YAAA9C,GAAE,IAAI,KAAKA,GAAE,IAAI8C,EAAC,CAAC;AAAE,UAAA9C,GAAE,MAAI,CAAA;AAAA,QAAE;AAAM,aAAE;AAAC,YAAAA,GAAE,MAAI,OAAGsD,MAAGA,GAAE3B,EAAC,GAAExB,KAAEH,GAAE,OAAOA,GAAE,OAAMA,GAAE,OAAMA,GAAE,OAAO,GAAEA,GAAE,QAAMA,GAAE;AAAA,UAAG,SAAOA,GAAE,OAAK,EAAEmD,KAAE;AAAI,QAAAnD,GAAE,QAAMA,GAAE,KAAI,QAAMA,GAAE,oBAAkB4B,KAAEK,IAAEA,IAAE,CAAA,GAAGL,EAAC,GAAE5B,GAAE,gBAAe,CAAE,IAAGmC,MAAG,QAAMnC,GAAE,4BAA0BsC,KAAEtC,GAAE,wBAAwBqC,IAAExB,EAAC,IAAG+B,IAAEV,IAAEF,IAAEe,KAAE,QAAM5C,MAAGA,GAAE,SAAOW,OAAG,QAAMX,GAAE,MAAIA,GAAE,MAAM,WAASA,EAAC,IAAE4C,KAAE,CAACA,EAAC,GAAEpB,IAAES,IAAER,IAAEC,IAAEC,IAAEC,IAAEnC,IAAE2B,IAAEtB,EAAC,GAAED,GAAE,OAAK2B,GAAE,KAAIA,GAAE,MAAI,MAAK3B,GAAE,IAAI,UAAQ+B,GAAE,KAAK/B,EAAC,GAAEuC,OAAIvC,GAAE,MAAIA,GAAE,KAAG;AAAA,MAAK,SAAOkC,IAAE;AAAC,QAAAP,GAAE,MAAI,OAAMJ,MAAG,QAAMO,QAAKH,GAAE,MAAI/B,IAAE+B,GAAE,MAAI,CAAC,CAACJ,IAAEO,GAAEA,GAAE,QAAQlC,EAAC,CAAC,IAAE,OAAM8B,IAAE,IAAIQ,IAAEP,IAAES,EAAC;AAAA,MAAC;AAAA;AAAM,cAAMN,MAAGH,GAAE,QAAMS,GAAE,OAAKT,GAAE,MAAIS,GAAE,KAAIT,GAAE,MAAIS,GAAE,OAAKT,GAAE,MAAI6B,IAAEpB,GAAE,KAAIT,IAAES,IAAER,IAAEC,IAAEC,IAAEC,IAAER,IAAEtB,EAAC;AAAE,GAACE,KAAEuB,IAAE,WAASvB,GAAEwB,EAAC;AAAC;AAAC,SAASgB,IAAET,IAAEP,IAAES,IAAE;AAAC,WAAQR,KAAE,GAAEA,KAAEQ,GAAE,QAAOR;AAAIwB,QAAEhB,GAAER,EAAC,GAAEQ,GAAE,EAAER,EAAC,GAAEQ,GAAE,EAAER,EAAC,CAAC;AAAEF,MAAE,OAAKA,IAAE,IAAIC,IAAEO,EAAC,GAAEA,GAAE,KAAK,SAASP,IAAE;AAAC,QAAG;AAAC,MAAAO,KAAEP,GAAE,KAAIA,GAAE,MAAI,IAAGO,GAAE,KAAK,SAASA,IAAE;AAAC,QAAAA,GAAE,KAAKP,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,SAAOO,IAAE;AAACR,UAAE,IAAIQ,IAAEP,GAAE,GAAG;AAAA,IAAC;AAAA,EAAC,CAAC;AAAC;AAAC,SAAS6B,IAAE9B,IAAEC,IAAES,IAAER,IAAEC,IAAEC,IAAEC,IAAEnC,IAAEK,IAAE;AAAC,MAAIE,IAAE8B,IAAEE,IAAEE,KAAED,GAAE,OAAMvB,KAAEc,GAAE,OAAMb,KAAEa,GAAE,MAAKvB,KAAE;AAAE,MAAG,UAAQU,OAAIe,KAAE,OAAI,QAAMC;AAAE,WAAK1B,KAAE0B,GAAE,QAAO1B;AAAI,WAAID,KAAE2B,GAAE1B,EAAC,MAAI,kBAAiBD,MAAG,CAAC,CAACW,OAAIA,KAAEX,GAAE,cAAYW,KAAE,MAAIX,GAAE,WAAU;AAAC,QAAAuB,KAAEvB,IAAE2B,GAAE1B,EAAC,IAAE;AAAK;AAAA,MAAK;AAAA;AAAC,MAAG,QAAMsB,IAAE;AAAC,QAAG,SAAOZ;AAAE,aAAO,SAAS,eAAeD,EAAC;AAAE,IAAAa,KAAEG,KAAE,SAAS,gBAAgB,8BAA6Bf,EAAC,IAAE,SAAS,cAAcA,IAAED,GAAE,MAAIA,EAAC,GAAEiB,KAAE,MAAKlC,KAAE;AAAA,EAAE;AAAC,MAAG,SAAOkB;AAAE,IAAAuB,OAAIxB,MAAGjB,MAAG8B,GAAE,SAAOb,OAAIa,GAAE,OAAKb;AAAA,OAAO;AAAC,QAAGiB,KAAEA,MAAG,EAAE,KAAKJ,GAAE,UAAU,GAAEO,MAAGI,KAAED,GAAE,SAAOb,KAAG,yBAAwBY,KAAEtB,GAAE,yBAAwB,CAACjB,IAAE;AAAC,UAAG,QAAMkC;AAAE,aAAIO,KAAE,CAAA,GAAGjC,KAAE,GAAEA,KAAEsB,GAAE,WAAW,QAAOtB;AAAI,UAAAiC,GAAEX,GAAE,WAAWtB,EAAC,EAAE,IAAI,IAAEsB,GAAE,WAAWtB,EAAC,EAAE;AAAM,OAAC+B,MAAGF,QAAKE,OAAIF,MAAGE,GAAE,UAAQF,GAAE,UAAQE,GAAE,WAAST,GAAE,eAAaA,GAAE,YAAUS,MAAGA,GAAE,UAAQ;AAAA,IAAI;AAAC,QAAGW,IAAEpB,IAAEb,IAAEwB,IAAER,IAAEjC,EAAC,GAAEuC;AAAE,MAAAR,GAAE,MAAI,CAAE;AAAA,aAASiB,IAAElB,IAAEM,IAAE5B,KAAEuB,GAAE,MAAM,QAAQ,IAAEvB,KAAE,CAACA,EAAC,GAAEuB,IAAES,IAAER,IAAEC,MAAG,oBAAkBf,IAAEgB,IAAEC,IAAED,KAAEA,GAAE,CAAC,IAAEM,GAAE,OAAKE,IAAEF,IAAE,CAAC,GAAExC,IAAEK,EAAC,GAAE,QAAM6B;AAAE,WAAI1B,KAAE0B,GAAE,QAAO1B;AAAK,gBAAM0B,GAAE1B,EAAC,KAAGJ,IAAE8B,GAAE1B,EAAC,CAAC;AAAE,IAAAR,OAAI,WAAUiB,MAAG,YAAUT,KAAES,GAAE,WAAST,OAAIsB,GAAE,SAAO,eAAaZ,MAAG,CAACV,MAAG,aAAWU,MAAGV,OAAIiC,GAAE,UAAQW,IAAEtB,IAAE,SAAQtB,IAAEiC,GAAE,OAAM,KAAE,GAAE,aAAYxB,MAAG,YAAUT,KAAES,GAAE,YAAUT,OAAIsB,GAAE,WAASsB,IAAEtB,IAAE,WAAUtB,IAAEiC,GAAE,SAAQ,KAAE;AAAA,EAAE;AAAC,SAAOX;AAAC;AAAC,SAAS0B,IAAElB,IAAEP,IAAES,IAAE;AAAC,MAAG;AAAC,kBAAY,OAAOF,KAAEA,GAAEP,EAAC,IAAEO,GAAE,UAAQP;AAAA,EAAC,SAAOO,IAAE;AAACR,QAAE,IAAIQ,IAAEE,EAAC;AAAA,EAAC;AAAC;AAAC,SAAS,EAAEF,IAAEP,IAAES,IAAE;AAAC,MAAIR,IAAEC;AAAE,MAAGH,IAAE,WAASA,IAAE,QAAQQ,EAAC,IAAGN,KAAEM,GAAE,SAAON,GAAE,WAASA,GAAE,YAAUM,GAAE,OAAKkB,IAAExB,IAAE,MAAKD,EAAC,IAAG,SAAOC,KAAEM,GAAE,MAAK;AAAC,QAAGN,GAAE;AAAqB,UAAG;AAAC,QAAAA,GAAE,qBAAsB;AAAA,MAAA,SAAOM,IAAE;AAACR,YAAE,IAAIQ,IAAEP,EAAC;AAAA,MAAC;AAAC,IAAAC,GAAE,OAAKA,GAAE,MAAI,MAAKM,GAAE,MAAI;AAAA,EAAM;AAAC,MAAGN,KAAEM,GAAE;AAAI,SAAIL,KAAE,GAAEA,KAAED,GAAE,QAAOC;AAAI,MAAAD,GAAEC,EAAC,KAAG,EAAED,GAAEC,EAAC,GAAEF,IAAES,MAAG,cAAY,OAAOF,GAAE,IAAI;AAAE,EAAAE,MAAG,QAAMF,GAAE,OAAKlC,IAAEkC,GAAE,GAAG,GAAEA,GAAE,KAAGA,GAAE,MAAIA,GAAE,MAAI;AAAM;AAAC,SAASqB,IAAErB,IAAER,IAAEC,IAAE;AAAC,SAAO,KAAK,YAAYO,IAAEP,EAAC;AAAC;AAAC,SAAS8B,IAAE9B,IAAES,IAAER,IAAE;AAAC,MAAIC,IAAEC,IAAEC,IAAEnC;AAAE8B,MAAE,MAAIA,IAAE,GAAGC,IAAES,EAAC,GAAEN,MAAGD,KAAE,cAAY,OAAOD,MAAG,OAAKA,MAAGA,GAAE,OAAKQ,GAAE,KAAIL,KAAE,CAAA,GAAGnC,KAAE,CAAE,GAAC8C,IAAEN,IAAET,MAAG,CAACE,MAAGD,MAAGQ,IAAG,MAAID,IAAErB,KAAE,MAAK,CAACa,EAAC,CAAC,GAAEG,MAAGP,KAAEA,KAAE,WAASa,GAAE,iBAAgB,CAACP,MAAGD,KAAE,CAACA,EAAC,IAAEE,KAAE,OAAKM,GAAE,aAAW,EAAE,KAAKA,GAAE,UAAU,IAAE,MAAKL,IAAE,CAACF,MAAGD,KAAEA,KAAEE,KAAEA,GAAE,MAAIM,GAAE,YAAWP,IAAEjC,EAAC,GAAE+C,IAAEZ,IAAEJ,IAAE/B,EAAC;AAAC;AAA0B,SAAS8D,IAAEhC,IAAEC,IAAES,IAAE;AAAC,MAAIR,IAAEC,IAAEC,IAAEC,IAAEnC,KAAEqC,IAAE,CAAE,GAACP,GAAE,KAAK;AAAE,OAAII,MAAKJ,GAAE,QAAMA,GAAE,KAAK,iBAAeK,KAAEL,GAAE,KAAK,eAAcC;AAAE,aAAOG,KAAEF,KAAED,GAAEG,EAAC,IAAE,SAAOA,KAAED,KAAEF,GAAEG,EAAC,IAAElC,GAAEkC,EAAC,IAAE,WAASH,GAAEG,EAAC,KAAG,WAASC,KAAEA,GAAED,EAAC,IAAEH,GAAEG,EAAC;AAAE,SAAO,UAAU,SAAO,MAAIlC,GAAE,WAAS,UAAU,SAAO,IAAE,EAAE,KAAK,WAAU,CAAC,IAAEwC,KAAGC,IAAEX,GAAE,MAAK9B,IAAEgC,MAAGF,GAAE,KAAIG,MAAGH,GAAE,KAAI,IAAI;AAAC;AAAC,SAAS,EAAEQ,IAAER,IAAE;AAAC,MAAIC,KAAE,EAAC,KAAID,KAAE,SAAO9B,OAAI,IAAGsC,IAAE,UAAS,SAASA,IAAER,IAAE;AAAC,WAAOQ,GAAE,SAASR,EAAC;AAAA,EAAC,GAAE,UAAS,SAASQ,IAAE;AAAC,QAAIP,IAAES;AAAE,WAAO,KAAK,oBAAkBT,KAAE,CAAA,IAAIS,KAAE,CAAA,GAAIV,EAAC,IAAE,MAAK,KAAK,kBAAgB,WAAU;AAAC,aAAOU;AAAA,IAAC,GAAE,KAAK,wBAAsB,SAASF,IAAE;AAAC,WAAK,MAAM,UAAQA,GAAE,SAAOP,GAAE,KAAK,SAASO,IAAE;AAAC,QAAAA,GAAE,MAAI,MAAGM,IAAEN,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,GAAE,KAAK,MAAI,SAASA,IAAE;AAAC,MAAAP,GAAE,KAAKO,EAAC;AAAE,UAAIR,KAAEQ,GAAE;AAAqB,MAAAA,GAAE,uBAAqB,WAAU;AAAC,QAAAP,GAAE,OAAOA,GAAE,QAAQO,EAAC,GAAE,CAAC,GAAER,MAAGA,GAAE,KAAKQ,EAAC;AAAA,MAAC;AAAA,IAAC,IAAGA,GAAE;AAAA,EAAQ,EAAC;AAAE,SAAOP,GAAE,SAAS,KAAGA,GAAE,SAAS,cAAYA;AAAC;AAAC,IAAE1B,IAAE,OAAMyB,MAAE,EAAC,KAAI,SAASQ,IAAER,IAAEC,IAAES,IAAE;AAAC,WAAQR,IAAEC,IAAEC,IAAEJ,KAAEA,GAAE;AAAI,SAAIE,KAAEF,GAAE,QAAM,CAACE,GAAE;AAAG,UAAG;AAAC,aAAIC,KAAED,GAAE,gBAAc,QAAMC,GAAE,6BAA2BD,GAAE,SAASC,GAAE,yBAAyBK,EAAC,CAAC,GAAEJ,KAAEF,GAAE,MAAK,QAAMA,GAAE,sBAAoBA,GAAE,kBAAkBM,IAAEE,MAAG,CAAA,CAAE,GAAEN,KAAEF,GAAE,MAAKE;AAAE,iBAAOF,GAAE,MAAIA;AAAA,MAAC,SAAOF,IAAE;AAAC,QAAAQ,KAAER;AAAA,MAAC;AAAC,QAAMQ;AAAC,EAAC,GAAEP,MAAE,GAAwDvB,IAAE,UAAU,WAAS,SAAS8B,IAAER,IAAE;AAAC,MAAIC;AAAE,EAAAA,KAAE,QAAM,KAAK,OAAK,KAAK,QAAM,KAAK,QAAM,KAAK,MAAI,KAAK,MAAIM,IAAE,IAAG,KAAK,KAAK,GAAE,cAAY,OAAOC,OAAIA,KAAEA,GAAED,IAAE,CAAE,GAACN,EAAC,GAAE,KAAK,KAAK,IAAGO,MAAGD,IAAEN,IAAEO,EAAC,GAAE,QAAMA,MAAG,KAAK,QAAMR,MAAG,KAAK,IAAI,KAAKA,EAAC,GAAEc,IAAE,IAAI;AAAE,GAAEpC,IAAE,UAAU,cAAY,SAAS8B,IAAE;AAAC,OAAK,QAAM,KAAK,MAAI,MAAGA,MAAG,KAAK,IAAI,KAAKA,EAAC,GAAEM,IAAE,IAAI;AAAE,GAAEpC,IAAE,UAAU,SAAOU,KAAEc,MAAE,CAAA,GAAGE,MAAE,cAAY,OAAO,UAAQ,QAAQ,UAAU,KAAK,KAAK,QAAQ,QAAS,CAAA,IAAE,YAAWC,MAAE,SAASG,IAAER,IAAE;AAAC,SAAOQ,GAAE,IAAI,MAAIR,GAAE,IAAI;AAAG,GAAEe,IAAE,MAAI,GAAE7C,MAAE;ACA54U,IAAIiB,MAAE;AAAE,SAASgB,IAAEA,IAAEjC,IAAEsC,IAAEE,IAAEL,IAAEL,IAAE;AAAC,MAAIzB,IAAE0B,IAAExB,KAAE,CAAA;AAAG,OAAIwB,MAAK/B;AAAE,aAAO+B,KAAE1B,KAAEL,GAAE+B,EAAC,IAAExB,GAAEwB,EAAC,IAAE/B,GAAE+B,EAAC;AAAE,MAAIC,KAAE,EAAC,MAAKC,IAAE,OAAM1B,IAAE,KAAI+B,IAAE,KAAIjC,IAAE,KAAI,MAAK,IAAG,MAAK,KAAI,GAAE,KAAI,MAAK,KAAI,QAAO,KAAI,MAAK,KAAI,MAAK,aAAY,QAAO,KAAI,EAAEY,KAAE,UAASkB,IAAE,QAAOL,GAAC;AAAE,MAAG,cAAY,OAAOG,OAAI5B,KAAE4B,GAAE;AAAc,SAAIF,MAAK1B;AAAE,iBAASE,GAAEwB,EAAC,MAAIxB,GAAEwB,EAAC,IAAE1B,GAAE0B,EAAC;AAAG,SAAOG,IAAE,SAAOA,IAAE,MAAMF,EAAC,GAAEA;AAAC;ACItY,MAAM,cAAc+B,EAAgC;AAAA,EACvD,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAChB,CAAC;ACRgC,IAAI,GAAE,GAAE,GAAE,GAAE,IAAE,GAAE,IAAE,CAAE,GAAC,IAAE,CAAA,GAAG,IAAEzB,IAAE,KAAI,IAAEA,IAAE,KAAI,IAAEA,IAAE,QAAO,IAAEA,IAAE,KAAI,IAAEA,IAAE;AAAQ,SAAS,EAAEE,IAAET,IAAE;AAACO,MAAE,OAAKA,IAAE,IAAI,GAAEE,IAAE,KAAGT,EAAC,GAAE,IAAE;AAAE,MAAIC,KAAE,EAAE,QAAM,EAAE,MAAI,EAAC,IAAG,IAAG,KAAI,CAAA,EAAE;AAAG,SAAOQ,MAAGR,GAAE,GAAG,UAAQA,GAAE,GAAG,KAAK,EAAC,KAAI,EAAC,CAAC,GAAEA,GAAE,GAAGQ,EAAC;AAAC;AAAC,SAAS,EAAEF,IAAE;AAAC,SAAO,IAAE,GAAE,EAAEuB,KAAEvB,EAAC;AAAC;AAAC,SAAS,EAAEA,IAAEP,IAAEC,IAAE;AAAC,MAAIC,KAAE,EAAE,KAAI,CAAC;AAAE,MAAGA,GAAE,IAAEK,IAAE,CAACL,GAAE,QAAMA,GAAE,KAAG,CAACD,KAAEA,GAAED,EAAC,IAAE8B,IAAE,QAAO9B,EAAC,GAAE,SAASO,IAAE;AAAC,QAAIE,KAAEP,GAAE,MAAIA,GAAE,IAAI,CAAC,IAAEA,GAAE,GAAG,CAAC,GAAEC,KAAED,GAAE,EAAEO,IAAEF,EAAC;AAAE,IAAAE,OAAIN,OAAID,GAAE,MAAI,CAACC,IAAED,GAAE,GAAG,CAAC,CAAC,GAAEA,GAAE,IAAI,SAAS,EAAE;AAAA,EAAE,CAAC,GAAEA,GAAE,MAAI,GAAE,CAAC,EAAE,IAAG;AAAC,QAAIE,KAAE,SAASG,IAAEE,IAAEN,IAAE;AAAC,UAAG,CAACD,GAAE,IAAI;AAAI,eAAM;AAAG,UAAIF,KAAEE,GAAE,IAAI,IAAI,GAAG,OAAO,SAASK,IAAE;AAAC,eAAOA,GAAE;AAAA,MAAG,CAAC;AAAE,UAAGP,GAAE,MAAM,SAASO,IAAE;AAAC,eAAM,CAACA,GAAE;AAAA,MAAG,CAAC;AAAE,eAAM,CAACX,MAAGA,GAAE,KAAK,MAAKW,IAAEE,IAAEN,EAAC;AAAE,UAAIF,KAAE;AAAG,aAAOD,GAAE,QAAQ,SAASO,IAAE;AAAC,YAAGA,GAAE,KAAI;AAAC,cAAIE,KAAEF,GAAE,GAAG,CAAC;AAAE,UAAAA,GAAE,KAAGA,GAAE,KAAIA,GAAE,MAAI,QAAOE,OAAIF,GAAE,GAAG,CAAC,MAAIN,KAAE;AAAA,QAAG;AAAA,MAAC,CAAC,GAAE,EAAE,CAACA,MAAGC,GAAE,IAAI,UAAQK,QAAK,CAACX,MAAGA,GAAE,KAAK,MAAKW,IAAEE,IAAEN,EAAC;AAAA,IAAE;AAAE,MAAE,IAAE;AAAG,QAAIP,KAAE,EAAE,uBAAsB3B,KAAE,EAAE;AAAoB,MAAE,sBAAoB,SAASsC,IAAEE,IAAEN,IAAE;AAAC,UAAG,KAAK,KAAI;AAAC,YAAIH,KAAEJ;AAAE,QAAAA,KAAE,QAAOQ,GAAEG,IAAEE,IAAEN,EAAC,GAAEP,KAAEI;AAAA,MAAC;AAAC,MAAA/B,MAAGA,GAAE,KAAK,MAAKsC,IAAEE,IAAEN,EAAC;AAAA,IAAC,GAAE,EAAE,wBAAsBC;AAAA,EAAC;AAAC,SAAOF,GAAE,OAAKA,GAAE;AAAE;AAAC,SAAS,EAAEF,IAAEC,IAAE;AAAC,MAAIC,KAAE,EAAE,KAAI,CAAC;AAAE,GAACK,IAAE,OAAKQ,IAAEb,GAAE,KAAID,EAAC,MAAIC,GAAE,KAAGF,IAAEE,GAAE,IAAED,IAAE,EAAE,IAAI,IAAI,KAAKC,EAAC;AAAE;AAAC,SAAS,EAAEF,IAAEC,IAAE;AAAC,MAAIC,KAAE,EAAE,KAAI,CAAC;AAAE,GAACK,IAAE,OAAKQ,IAAEb,GAAE,KAAID,EAAC,MAAIC,GAAE,KAAGF,IAAEE,GAAE,IAAED,IAAE,EAAE,IAAI,KAAKC,EAAC;AAAE;AAAC,SAAS,EAAEK,IAAE;AAAC,SAAO,IAAE,GAAEwB,IAAE,WAAU;AAAC,WAAM,EAAC,SAAQxB,GAAC;AAAA,EAAC,GAAE,CAAE,CAAA;AAAC;AAAC,SAAS,EAAEA,IAAEE,IAAEN,IAAE;AAAC,MAAE,GAAE,EAAE,WAAU;AAAC,WAAM,cAAY,OAAOI,MAAGA,GAAEE,IAAG,GAAE,WAAU;AAAC,aAAOF,GAAE,IAAI;AAAA,IAAC,KAAGA,MAAGA,GAAE,UAAQE,GAAG,GAAC,WAAU;AAAC,aAAOF,GAAE,UAAQ;AAAA,IAAI,KAAG;AAAA,EAAM,GAAE,QAAMJ,KAAEA,KAAEA,GAAE,OAAOI,EAAC,CAAC;AAAC;AAAC,SAASwB,IAAExB,IAAEJ,IAAE;AAAC,MAAIH,KAAE,EAAE,KAAI,CAAC;AAAE,SAAOe,IAAEf,GAAE,KAAIG,EAAC,KAAGH,GAAE,MAAIO,MAAIP,GAAE,IAAEG,IAAEH,GAAE,MAAIO,IAAEP,GAAE,OAAKA,GAAE;AAAE;AAAC,SAASsB,IAAEf,IAAEE,IAAE;AAAC,SAAO,IAAE,GAAEsB,IAAE,WAAU;AAAC,WAAOxB;AAAA,EAAC,GAAEE,EAAC;AAAC;AAAC,SAASmB,IAAErB,IAAE;AAAC,MAAIP,KAAE,EAAE,QAAQO,GAAE,GAAG,GAAEN,KAAE,EAAE,KAAI,CAAC;AAAE,SAAOA,GAAE,IAAEM,IAAEP,MAAG,QAAMC,GAAE,OAAKA,GAAE,KAAG,MAAGD,GAAE,IAAI,CAAC,IAAGA,GAAE,MAAM,SAAOO,GAAE;AAAE;AAA6X,SAAS,IAAG;AAAC,WAAQE,IAAEA,KAAE,EAAE,MAAK;AAAI,QAAGA,GAAE,OAAKA,GAAE;AAAI,UAAG;AAAC,QAAAA,GAAE,IAAI,IAAI,QAAQtB,GAAC,GAAEsB,GAAE,IAAI,IAAI,QAAQI,GAAC,GAAEJ,GAAE,IAAI,MAAI,CAAA;AAAA,MAAE,SAAON,IAAE;AAAC,QAAAM,GAAE,IAAI,MAAI,CAAE,GAACF,IAAE,IAAIJ,IAAEM,GAAE,GAAG;AAAA,MAAC;AAAC;AAACF,IAAE,MAAI,SAASA,IAAE;AAAC,MAAE,MAAK,KAAG,EAAEA,EAAC;AAAC,GAAEA,IAAE,MAAI,SAASA,IAAE;AAAC,OAAG,EAAEA,EAAC,GAAE,IAAE;AAAE,MAAIN,MAAG,IAAEM,GAAE,KAAK;AAAI,EAAAN,OAAI,MAAI,KAAGA,GAAE,MAAI,IAAG,EAAE,MAAI,CAAA,GAAGA,GAAE,GAAG,QAAQ,SAASM,IAAE;AAAC,IAAAA,GAAE,QAAMA,GAAE,KAAGA,GAAE,MAAKA,GAAE,MAAI,GAAEA,GAAE,MAAIA,GAAE,IAAE;AAAA,EAAM,CAAC,MAAIN,GAAE,IAAI,QAAQd,GAAC,GAAEc,GAAE,IAAI,QAAQY,GAAC,GAAEZ,GAAE,MAAI,CAAE,GAAC,IAAE,KAAI,IAAE;AAAC,GAAEM,IAAE,SAAO,SAASE,IAAE;AAAC,OAAG,EAAEA,EAAC;AAAE,MAAIP,KAAEO,GAAE;AAAI,EAAAP,MAAGA,GAAE,QAAMA,GAAE,IAAI,IAAI,WAAS,MAAI,EAAE,KAAKA,EAAC,KAAG,MAAIK,IAAE,2BAAyB,IAAEA,IAAE,0BAAwBgB,KAAG,CAAC,IAAGrB,GAAE,IAAI,GAAG,QAAQ,SAASK,IAAE;AAAC,IAAAA,GAAE,MAAIA,GAAE,MAAIA,GAAE,IAAGA,GAAE,QAAM,MAAIA,GAAE,KAAGA,GAAE,MAAKA,GAAE,IAAE,QAAOA,GAAE,MAAI;AAAA,EAAC,CAAC,IAAG,IAAE,IAAE;AAAI,GAAEA,IAAE,MAAI,SAASE,IAAEN,IAAE;AAAC,EAAAA,GAAE,KAAK,SAASM,IAAE;AAAC,QAAG;AAAC,MAAAA,GAAE,IAAI,QAAQtB,GAAC,GAAEsB,GAAE,MAAIA,GAAE,IAAI,OAAO,SAASF,IAAE;AAAC,eAAM,CAACA,GAAE,MAAIM,IAAEN,EAAC;AAAA,MAAC,CAAC;AAAA,IAAC,SAAOP,IAAE;AAAC,MAAAG,GAAE,KAAK,SAASI,IAAE;AAAC,QAAAA,GAAE,QAAMA,GAAE,MAAI,CAAE;AAAA,MAAC,CAAC,GAAEJ,KAAE,CAAA,GAAGI,IAAE,IAAIP,IAAES,GAAE,GAAG;AAAA,IAAC;AAAA,EAAC,CAAC,GAAE,KAAG,EAAEA,IAAEN,EAAC;AAAC,GAAEI,IAAE,UAAQ,SAASE,IAAE;AAAC,OAAG,EAAEA,EAAC;AAAE,MAAIN,IAAEH,KAAES,GAAE;AAAI,EAAAT,MAAGA,GAAE,QAAMA,GAAE,IAAI,GAAG,QAAQ,SAASO,IAAE;AAAC,QAAG;AAACpB,UAAEoB,EAAC;AAAA,IAAC,SAAOA,IAAE;AAAC,MAAAJ,KAAEI;AAAA,IAAC;AAAA,EAAC,CAAC,GAAEP,GAAE,MAAI,QAAOG,MAAGI,IAAE,IAAIJ,IAAEH,GAAE,GAAG;AAAE;AAAE,IAAIW,MAAE,cAAY,OAAO;AAAsB,SAASY,IAAEhB,IAAE;AAAC,MAAIE,IAAEN,KAAE,WAAU;AAAC,iBAAaH,EAAC,GAAEW,OAAG,qBAAqBF,EAAC,GAAE,WAAWF,EAAC;AAAA,EAAC,GAAEP,KAAE,WAAWG,IAAE,GAAG;AAAEQ,UAAIF,KAAE,sBAAsBN,EAAC;AAAE;AAAC,SAAShB,IAAEoB,IAAE;AAAC,MAAIE,KAAE,GAAET,KAAEO,GAAE;AAAI,gBAAY,OAAOP,OAAIO,GAAE,MAAI,QAAOP,GAAC,IAAI,IAAES;AAAC;AAAC,SAASI,IAAEN,IAAE;AAAC,MAAIE,KAAE;AAAE,EAAAF,GAAE,MAAIA,GAAE,GAAI,GAAC,IAAEE;AAAC;AAAC,SAASM,IAAER,IAAEE,IAAE;AAAC,SAAM,CAACF,MAAGA,GAAE,WAASE,GAAE,UAAQA,GAAE,KAAK,SAASA,IAAEN,IAAE;AAAC,WAAOM,OAAIF,GAAEJ,EAAC;AAAA,EAAC,CAAC;AAAC;AAAC,SAAS2B,IAAEvB,IAAEE,IAAE;AAAC,SAAM,cAAY,OAAOA,KAAEA,GAAEF,EAAC,IAAEE;AAAC;ACM13G,MAAM,eAAe,CAAC,EAAE,OAAO,WAAW,UAAU,YAAY,wBAA2C;AACvG,QAAM,CAAC,iBAAiB,kBAAkB,IAAIwB,EAAkB;AAC1D,QAAA,eAAeC,EAAe,EAAE;AAEtCC,IAAU,MAAM;AACR,QAAA,aAAa,YAAY,OAAO;AAChC,mBAAa,UAAU;AACvB,yBAAmB,KAAK;AAAA,IAC5B;AAAA,EAAA,GACD,CAAC,KAAK,CAAC;AAEV,QAAM,SAAS,YAAY;AACvB,uBAAmB,IAAI;AACvB,QAAI,YAAY;AACN,YAAA,WAAW,cAAc,IAAI;AAAA,IACvC;AAAA,EAAA;AAGJ,SACKC,oBAAA,YAAY,UAAZ,EAAqB,OAAO,EAAE,OAAO,WAAW,YAAY,QAAQ,mBAAmB,mBACnF,UAAAC,IAAa,QAAQ,EAC1B,CAAA;AAER;AAEA,MAAA,iBAAe;AC3BR,MAAM,cAAcL,EAAkE;AAAA,EACzF,MAAM,IAAI,aAAA,EAAe;AAAA,EACzB,gBAAgB;AAAA,EAChB,aAAa,CAAC;AAClB,CAAC;ACND,MAAM,kBAAkB,CAAC,eAAe,UAAU;AAC9C,QAAM,CAAEM,QAAO,QAAS,IAAIL,EAAS,YAAY;AAC3C,QAAA,cAAcM,IAAY,CAACD,YAAmB,SAASA,OAAK,GAAG,CAAA,CAAE;AACjE,QAAA,cAAcC,IAAY,MAAM,SAAS,CAAAD,YAAS,CAACA,OAAK,GAAG,CAAA,CAAE;AAC5D,SAAA,CAAEA,QAAO,aAAa,WAAY;AAC7C;AAEA,MAAA,oBAAe;ACEf,MAAM,eAAe,CAAC;AAAA,EAClB,OAAO,IAAI,aAAA,EAAe;AAAA,EAC1B;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB;AACpB,MAAyB;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAIE,kBAAgB,KAAK;AACzC,QAAA,cAAcC,IAAQ,MAAM,gBAAgB,CAAA,GAAI,CAAC,YAAY,CAAC;AACpE,QAAM,iBAAiBA,IAAQ,MAAM,mBAAmB,IAAI,CAAC,eAAe,CAAC;AAE7EN,IAAU,MAAM;AACZ,KAAC,YAAY;AACT,aAAM,6BAAM;AACZ,eAAS,IAAI;AAAA,IAAA,KACZ,MAAM;AAAA,EACf,GAAG,CAAE,CAAA;AAEL,MAAI,CAAC;AAAc,WAAA;AAEnB,SAAQC,oBAAA,YAAY,UAAZ,EAAqB,OAAO,EAAE,MAAM,aAAa,eAAe,GAAI,UAAaC,IAAA,QAAQ,EAAE,CAAA;AACvG;AAEA,MAAA,iBAAe;ACjCf,MAAM,aAAa;AAAA,EAAnB;AACW,kCAAwC,CAAA;AAExC,8BAAK,CAAC,WAAmB,OAAuB;;AACnD,WAAK,OAAO,SAAS,IAAI,KAAK,OAAO,SAAS,KAAK;AACnD,OAAAtD,MAAA,KAAK,OAAO,SAAS,MAArB,gBAAAA,IAAwB,KAAK;AAAA,IAAE;AAG5B,+BAAM,CAAC,WAAmB,OAAuB;AAChD,UAAA,KAAK,OAAO,SAAS,GAAG;AACnB,aAAA,OAAO,SAAS,IAAI,KAAK,OAAO,SAAS,EAAG,OAAO,CAAC,KAAK,QAAQ;AAClE,cAAI,QAAQ;AAAI,gBAAI,KAAK,GAAG;AACrB,iBAAA;AAAA,QACX,GAAG,CAAgB,CAAA;AAAA,MACvB;AAAA,IAAA;AAGG,gCAAO,CAAC,WAAmB,SAAqB;;AAC/C,UAAA,KAAK,OAAO,SAAS,GAAG;AACxB,SAAAA,MAAA,KAAK,OAAO,SAAS,MAArB,gBAAAA,IAAwB,QAAQ,CAAM,OAAA;AAClC,aAAG,IAAI;AAAA,QAAA;AAAA,MAEf;AAAA,IAAA;AAAA;AAER;AAEA,MAAA,iBAAe;AC1Bf,SAAwB,SAAiB;AAC9B,SAAA,uCAAuC,QAAQ,SAAS,CAAKa,OAAA;AAC1D,UAAAO,KAAK,KAAK,OAAW,IAAA,KAAM,GAC7BE,KAAIT,MAAK,MAAMO,KAAKA,KAAI,IAAO;AAC5B,WAAAE,GAAE,SAAS,EAAE;AAAA,EAAA,CACvB;AACL;ACaa,MAAA,UAAU,CAAC,UAAmB,CAAC,EAAE,SAAS,QAAQ,UAAU,KAAK,KAAK;AAE5E,MAAMqC,aAAW,CAAC,UAAiC,OAAO,UAAU,YAAY,iBAAiB;ACZxG,MAAM,YAAe;AAAA,EAkBP,YAAY,OAA6B;AAfnC,+BAAM,IAAI,UAAK,gBAAL,mBAAyC,IAAI,IAAIC,OAAM,CAAA;AAC1E;AACA;AACA,wCAAe,CAAA;AACf;AACA;AACA,wCAAe,IAAIC;AACP;AACZ;AAGA;AAAA;AACA;AACA;AAGE,SAAA,QAAQ,KAAK,YAAY,EAAE,GAAG,6BAAM,cAAc,GAAG,MAAA,CAAO;AAC5D,SAAA,kBAAkB,KAAK,MAAM;AAClC,SAAK,QAAQ;AACb,SAAK,QAAQ;AACR,SAAA,iBAAiB,KAAK,MAAM,KAAK;AACtC,SAAK,OAAO,KAAK,MAAM,KAAK,QAAQ;AAC/B,SAAA,UAAU,KAAK,MAAM,KAAK;AAC1B,SAAA,MAAM,KAAK,kBAAkB,IAAI;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,YAAY,OAAkC;AAC7C,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,aAAa;AACnB,WAAO;EACX;AAAA,EAEU,SAAS,UAAwB;AACvC,SAAK,QAAQ,EAAE,GAAG,KAAK,OAAO,GAAG;EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,OAAY;AACL,WAAA;AAAA,MACH,GAAG,KAAK,WAAW;AAAA,MACnB,0BAA0B;AAAA,IAAA;AAAA,EAElC;AAAA,EAEO,SAAiC;AAE9B,UAAA,IAAI,MAAM,+BAA+B;AAAA,EACnD;AAAA,EASO,MAAM,SAAmB;;AACxB,QAAA;AACA,QAAAF,WAAS,OAAO,GAAG;AACZ,aAAA,SAAS,cAAc,OAAO;AAAA,IAAA,OAClC;AACI,aAAA;AAAA,IACX;AAEA,QAAI,CAAC,MAAM;AACD,YAAA,IAAI,MAAM,qDAAqD;AAAA,IACzE;AAEA,QAAI,KAAK,OAAO;AACZ,WAAK,QAAQ;AAAA,IAAA,OACV;AAEH,UAAI,KAAK,MAAM,WAAW,KAAK,MAAM,QAAQ,WAAW;AAC/C,aAAA,MAAM,QAAQ,UAAU,KAAK;AAAA,UAC9B,gBAAgB,QAAQ,KAAK;AAAA,UAC7B,aAAY3D,MAAA,KAAK,gBAAL,gBAAAA,IAAyC,oBAAkBc,MAAA,KAAK,gBAAL,gBAAAA,IAAyC;AAAA,UAChH,QAAQ;AAAA,QAAA,CACX;AAAA,MACL;AAAA,IACJ;AAEA,SAAK,QAAQ;AACR,SAAA,aAAa,KAAK;AAEhBgD,QAAA,KAAK,YAAY,IAAI;AAErB,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,OAAO,OAAgB;AAUrB,SAAA,QAAQ,KAAK,YAAY,EAAE,GAAG,KAAK,OAAO,GAAG,MAAA,CAAO;AACpD,SAAA,oBAAoB,KAAK,MAAM,KAAK;AACpC,SAAA,UAAU,KAAK,MAAM,KAAK;AAC1B,SAAA,aAAa,KAAK;AACvB,QAAI,KAAK;AAAcA,UAAA,KAAK,YAAY,KAAK,KAAK;AAE3C,WAAA;AAAA,EAIX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,QAAQ,WAAmC;AAC1C,QAAA,CAAC,KAAK,OAAO;AACP,YAAA,IAAI,MAAM,2BAA2B;AAAA,IAC/C;AAEM,UAAA,eAAe,aAAa,KAAK,OAAO;AAEvCA,QAAA,cAAc,KAAK,OAAO,MAAS;AAEnC,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKO,UAAgB;AACnB,QAAI,KAAK,OAAO;AACLA,UAAA,MAAM,KAAK,KAAK;AAAA,IAC3B;AAEO,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,SAAS;AACZ,SAAK,QAAQ;AAEb,QAAI,KAAK,iBAAiB;AACjB,WAAA,gBAAgB,OAAO,IAAI;AAAA,IACpC;AAAA,EACJ;AACJ;AA1KI,cADE,aACY;AACd,cAFE,aAEY;AA2KlB,MAAA,gBAAe;ACxKf,MAAMC,gBAAc,CAAC,EAAE,MAAAC,OAAM,gBAAgB,cAAc,IAAI,eAAe,IAAI,WAAW,OAAO,IAAI,YAAY,GAAA,MAChH,GAAG,cAAc,UAAU,WAAW,GAAG,SAAS,GAAG,YAAY,GAAGA,KAAI,GAAG,IAAI,IAAI,SAAS;AAEnF,MAAA,cAAc,CAAC,EAAE,iBAAiB,kBAAkB,YAAY,OAAO,GAAG,cAAsC,CACzHA,UACS;AACT,QAAM,eAA6B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAAA;AAAA,IACA,GAAG;AAAA,EAAA;AAGP,SAAOD,cAAY,YAAY;AACnC;AAEA,MAAA,WAAe;ACrBR,MAAM,kBAAqBE,cAAsD;AAAA,EAMpF,YAAY,OAA8C;AACtD,UAAM,KAAK;AANL;AACH;AACA;AACA;AA6DC;AAzDJ,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,mBAAmB,MAAM;AAC9B,SAAK,eAAe;AACpB,SAAK,aAAc,KAAK,SAAS,KAAK,MAAM,cAAe;AAC3D,SAAK,oBAAoB;AACpB,SAAA,oBAAoB,KAAK,MAAM,KAAK;AAAA,EAC7C;AAAA,EAEA,IAAI,UAAU;AACH,WAAA,CAAC,CAAC,KAAK,MAAM;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAe;;AACR,WAAA,SAAS,EAAE,gBAAgB,KAAK,eAAgB,CAAA,GAAGjE,MAAA,KAAK,gBAAL,gBAAAA,IAAuC,IAAI;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,cAAsB;;AACtB,WAAO,KAAK,MAAM,UAASA,MAAA,KAAK,gBAAL,gBAAAA,IAAuC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAyB;AACzB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAY,OAAmC;AACpC,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACF,WAAA;AAAA,MACH,GAAG,KAAK;AAAA,IAAA;AAAA,EAEhB;AAAA,EAEO,SAAS,UAAkC;AAC9C,SAAK,QAAQ,EAAE,GAAG,KAAK,OAAO,GAAG;EACrC;AAAA,EAIO,UAAUkE,SAAyB,OAAiC;;AACnE,SAAAlE,MAAA,KAAK,iBAAL,gBAAAA,IAAmB,WAAW;AACzB,WAAA,aAAa,UAAUkE,SAAQ,KAAK;AAAA,IAAA,OACtC;AACH,OAAApD,MAAA,KAAK,uBAAL,gBAAAA,IAAA,WAA0BoD;AAAA,IAC9B;AACO,WAAA;AAAA,EACX;AAAA,EAEA,SAAS;;AAED,WAAAb;AAAAA,MAACc;AAAAA,MAAA;AAAA,QACG,aAAWrD,OAAAd,MAAA,KAAK,YAAL,gBAAAA,IAAc,kBAAd,gBAAAc,IAA6B,cAAc;AAAA,QACtD,SAAOC,MAAA,KAAK,YAAL,gBAAAA,IAAc,UAAS;AAAA,QAC9B,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,MAAM,IAAI;AAAA,QACvD,mBAAmB,KAAK;AAAA,QAExB,8BAACqD,gBAAa,EAAA,MAAM,KAAK,MAAM,gBAAgB,KAAK,gBAC/C,UAAK,KAAA,yCAAsB,OAAI,EAAA,WAAU,sBAAsB,UAAK,KAAA,oBAAoB,CAAA,GAC7F;AAAA,MAAA;AAAA,IAAA;AAAA,EAGZ;AACJ;AAEA,MAAA,cAAe;ACpGf,MAAM,iBAAiB,MAAMC,IAAW,WAAW;AAEnD,MAAA,mBAAe;ACEf,MAAM,iBAAiB,MAAM;AACrB,MAAA;AACA,MAAA;AACJ,SAAO,CAAC,iBAAyB;AAC7B,QAAI,iBAAiB,OAAO;AAChB,cAAA;AACC,eAAA,CAAI,SAAsC,QAAoB,SACnE,KAAQ,EAAE,GAAG,SAAS,SAAS,EAAE,GAAG,QAAQ,SAAS,eAAe,UAAU,KAAK,MAAM,UAAU,IAAI;AAAA,IAC/G;AACO,WAAA;AAAA,EAAA;AAEf;AAEA,SAAS,yBAAyB;AAC9B,QAAM,EAAE,OAAO,YAAY,oBAAoBC,iBAAe;AACxD,QAAA,gBAAgBnB,EAAiC,IAAI;AAErD,QAAA,eAAeO,IAAQ,MAAM;AAC/B,QAAI,UAAoC;AAClC,UAAA,UAAU,IAAI,QAAQ,CAAY,aAAA;AAC1B,gBAAA;AAAA,IAAA,CACb;AAED,kBAAc,QAAQ,OAAO;AAE7B,kBAAc,UAAU;AAElB,UAAA,WAAW,cAAc,KAAK;AAE7B,WAAA,OAAU,SAAsC,QAAoB,SAA2B;AAC9F,UAAA;AACA,eAAO,OAAO,kBAAkB,UAAU,QAAQ,WAAW,KAAK,MAAM,SAAY,EAAE,GAAG,QAAA,GAAW,QAAQ,IAAI,CAAC;AAAA,eAC5GxE,IAAQ;AACb,YAAIA,GAAE,SAAS,WAAW,iBAAiB,CAAC,iBAAiB;AACzD,gBAAM,WAAW;AACjB,kBAAQ,KAAK;AAAA,QACjB;AACM,cAAAA;AAAA,MACV;AAAA,IAAA;AAAA,EAEL,GAAA,CAAC,OAAO,YAAY,eAAe,CAAC;AAEvC,SAAO,EAAE,aAAa;AAC1B;AC/CA,MAAM,iBAAiB,MAAMmF,IAAW,WAAW;AAEnD,MAAA,mBAAe;ACoBF,MAAA,mBAAmB,CAAiF,aAAuB;AAC9H,QAAA,EAAE,cAAcC;AAChB,QAAA,EAAE,mBAAmBC;AACrB,QAAA,EAAE,iBAAiB;AAElB,SAAAf;AAAAA,IACH,UAAU,SAAmF;AACnF,YAAA,iBAAiB,KAAK,CAAC;AACvB,YAAA,SAAS,KAAK,CAAC,KAAK;AAEpB,YAAA,YAAY,UAAU,QAAQ;AAEpC,YAAM,YAAa,OAAe;AAElC,UAAI,OAAO,UAAU;AAErB,UAAI,WAAW;AACX,cAAM,eAAe,OAAO,KAAK,SAAS,EAAE,CAAC;AAC7C,eAAO,KAAK,QAAQ,IAAI,YAAY,KAAK,UAAU,YAAY,CAAC;AAAA,MACpE;AACO,aAAA;AAAA,QACH,EAAE,gBAAgB,MAAM,GAAG,gBAAgB,QAAQ,OAAO,SAAS,kBAAkB,OAAO,KAAK,EAAE;AAAA,QAClG,UAAU,UAAyB;AAAA,MAAA;AAAA,IAE5C;AAAA,IACA,CAAC,UAAU,WAAW,cAAc,cAAc;AAAA,EAAA;AAE1D;AC1BO,SAAS,SAAiG;AAAA,EAC7G,eAAe,EAAE,cAAc,KAAK;AAAA,EACpC;AAAA,EACA;AACJ,GAAsC;AAEpBL,IAAqB,oBAAA,KAAK;AAElC,QAAA,gBAAgBA,EAAgB,KAAK;AAC3C,QAAM,eAAyB;AAAA,IAC3B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY,aAAa,YAAY;AAAA,EAAA;AAEnC,QAAA,eAAe,CAACI,SAAiB,WAAgC;AACnE,YAAQ,OAAO,MAAM;AAAA,MACjB,KAAK;AACM,eAAA,EAAE,GAAG,cAAc,YAAY,MAAM,MAAM,aAAa,eAAeA,QAAM,OAAO,OAAU;AAAA,MACzG,KAAK;AACD,eAAO,EAAE,GAAG,cAAc,MAAM,OAAO,SAAS,YAAY;MAChE,KAAK;AACD,eAAO,EAAE,GAAG,cAAc,OAAO,OAAO,SAAS,YAAY;MACjE;AACWA,eAAAA;AAAAA,IACf;AAAA,EAAA;AAGJ,QAAM,CAACA,QAAO,QAAQ,IAAIiB,EAAW,cAAc,YAAY;AAEzD,QAAA,YAAYhB,IAAY,YAAY;AAO7B,aAAA,EAAE,MAAM,UAAA,CAAW;AAExB,QAAA;AACA,UAAI,cAAc;AAAS;AACrB,YAAA,OAAO,MAAM;AAInB,eAAS,EAAE,MAAM,WAAW,SAAS,KAAM,CAAA;AAAA,aACtC,OAAO;AACZ,UAAI,cAAc;AAAS;AAC3B,eAAS,EAAE,MAAM,SAAS,SAAS,MAAgB,CAAA;AAAA,IACvD;AAAA,EAAA,GACD,CAAC,UAAU,OAAO,CAAC;AAEtBJ,IAAU,MAAM;AACZ,kBAAc,UAAU;AAExB,QAAI,aAAa,YAAY;AAAO,WAAK,UAAU;AAGnD,WAAO,MAAM;AACT,oBAAc,UAAU;AAAA,IAAA;AAAA,EAE7B,GAAA,CAAC,aAAa,SAAS,SAAS,CAAC;AAE7B,SAAAG;AACX;ACzFO,MAAM,cAAc;AAAA,EACvB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACR;ACAO,MAAM,eAAe;AAAA,EACxB,IAAI;AAAA,IACA,IAAI,eAAe,YAAY,EAAE;AAAA,IACjC,IAAI,eAAe,YAAY,EAAE;AAAA,IACjC,IAAI,eAAe,YAAY,EAAE;AAAA,EACrC;AAAA,EACA,MAAM;AAAA,IACF,IAAI,eAAe,YAAY,KAAK,CAAC;AAAA,IACrC,IAAI,eAAe,YAAY,KAAK,CAAC;AAAA,IACrC,IAAI,eAAe,YAAY,KAAK,CAAC;AAAA,EACzC;AAAA,EACA,MAAM;AAAA,IACF,IAAI,eAAe,YAAY,KAAK,CAAC;AAAA,IACrC,IAAI,eAAe,YAAY,EAAE,uBAAuB,YAAY,KAAK,CAAC;AAAA,IAC1E,IAAI,eAAe,YAAY,EAAE,uBAAuB,YAAY,KAAK,CAAC;AAAA,IAC1E,IAAI,eAAe,YAAY,EAAE;AAAA,EACrC;AACJ;AAQa,MAAA,gBAAgB,CAAC,UAA4B;AAChD,QAAA,OAAOG,IAAQ,MAAM,OAAO,WAAW,KAAK,GAAG,CAAC,KAAK,CAAC;AAC5D,QAAM,CAAC,SAAS,UAAU,IAAIR,EAAS,KAAK,OAAO;AAEnDE,IAAU,MAAM;AACZ,UAAM,eAAe,CAAC,UAA+B,WAAW,MAAM,OAAO;AACxE,SAAA,iBAAiB,UAAU,YAAY;AAC5C,WAAO,MAAM,KAAK,oBAAoB,UAAU,YAAY;AAAA,EAAA,GAC7D,CAAC,IAAI,CAAC;AAETA,IAAU,MAAM;AACZ,eAAW,KAAK,OAAO;AAAA,EAAA,GACxB,CAAC,IAAI,CAAC;AAEF,SAAA;AACX;AChCY,IAAA,kCAAAqB,mBAAL;AACHA,iBAAA,SAAU,IAAA;AACVA,iBAAA,WAAY,IAAA;AACZA,iBAAA,UAAW,IAAA;AACXA,iBAAA,MAAO,IAAA;AAJCA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;ACVZ,MAAM,QAAQ,CAAC,EAAE,GAAG,MAAM,0BACrB,OAAI,EAAA,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC/F,UAAApB;AAAAA,EAAC;AAAA,EAAA;AAAA,IACG,UAAS;AAAA,IACT,UAAS;AAAA,IACT,GAAE;AAAA,IACF,MAAK;AAAA,EAAA;AACT,EACJ,CAAA;AAGJ,MAAA,UAAe;ACXf,MAAM,SAAS,CAAC,EAAE,GAAG,MAAM,0BACtB,OAAI,EAAA,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC/F,UAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACG,GAAE;AAAA,IACF,MAAK;AAAA,EAAA;AACT,EACJ,CAAA;AAGJ,MAAA,WAAe;ACXH,IAAA,sCAAAqB,uBAAL;AACHA,qBAAA,SAAU,IAAA;AACVA,qBAAA,MAAO,IAAA;AACPA,qBAAA,UAAW,IAAA;AACXA,qBAAA,OAAQ,IAAA;AAJAA,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AAOA,IAAA,uCAAAC,wBAAL;AACHA,sBAAA,MAAO,IAAA;AACPA,sBAAA,UAAW,IAAA;AACXA,sBAAA,eAAgB,IAAA;AAChBA,sBAAA,WAAY,IAAA;AACZA,sBAAA,gBAAiB,IAAA;AACjBA,sBAAA,QAAS,IAAA;AACTA,sBAAA,OAAQ,IAAA;AACRA,sBAAA,QAAS,IAAA;AARDA,SAAAA;AAAA,GAAA,sBAAA,CAAA,CAAA;AAWA,IAAA,sCAAAC,uBAAL;AACHA,qBAAA,IAAK,IAAA;AACLA,qBAAA,IAAK,IAAA;AACLA,qBAAA,IAAK,IAAA;AACLA,qBAAA,IAAK,IAAA;AACLA,qBAAA,IAAK,IAAA;AACLA,qBAAA,IAAK,IAAA;AACLA,qBAAA,KAAM,IAAA;AACNA,qBAAA,WAAY,IAAA;AACZA,qBAAA,MAAO,IAAA;AATCA,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AClBL,MAAM,+BAA+B;ACAwb,SAAS,EAAEpD,IAAEE,IAAE;AAAC,WAAQxC,MAAKwC;AAAE,IAAAF,GAAEtC,EAAC,IAAEwC,GAAExC,EAAC;AAAE,SAAOsC;AAAC;AAAC,SAAS,EAAEA,IAAEE,IAAE;AAAC,WAAQxC,MAAKsC;AAAE,QAAG,eAAatC,MAAG,EAAEA,MAAKwC;AAAG,aAAM;AAAG,WAAQN,MAAKM;AAAE,QAAG,eAAaN,MAAGI,GAAEJ,EAAC,MAAIM,GAAEN,EAAC;AAAE,aAAM;AAAG,SAAM;AAAE;AAA6D,SAAS,EAAEI,IAAE;AAAC,OAAK,QAAMA;AAAC;AAAC,SAAS,EAAEA,IAAEtC,IAAE;AAAC,WAASkC,GAAEI,IAAE;AAAC,QAAIE,KAAE,KAAK,MAAM,KAAIN,KAAEM,MAAGF,GAAE;AAAI,WAAM,CAACJ,MAAGM,OAAIA,GAAE,OAAKA,GAAE,IAAI,IAAEA,GAAE,UAAQ,OAAMxC,KAAE,CAACA,GAAE,KAAK,OAAMsC,EAAC,KAAG,CAACJ,KAAE,EAAE,KAAK,OAAMI,EAAC;AAAA,EAAC;AAAC,WAASP,GAAE/B,IAAE;AAAC,WAAO,KAAK,wBAAsBkC,IAAEM,IAAEF,IAAEtC,EAAC;AAAA,EAAC;AAAC,SAAO+B,GAAE,cAAY,WAASO,GAAE,eAAaA,GAAE,QAAM,KAAIP,GAAE,UAAU,mBAAiB,MAAGA,GAAE,MAAI,MAAGA;AAAC;AAAA,CAAE,EAAE,YAAU,IAAIO,OAAG,uBAAqB,MAAG,EAAE,UAAU,wBAAsB,SAASA,IAAEE,IAAE;AAAC,SAAO,EAAE,KAAK,OAAMF,EAAC,KAAG,EAAE,KAAK,OAAME,EAAC;AAAC;AAAE,IAAI,IAAExC,IAAE;AAAIA,IAAE,MAAI,SAASsC,IAAE;AAAC,EAAAA,GAAE,QAAMA,GAAE,KAAK,OAAKA,GAAE,QAAMA,GAAE,MAAM,MAAIA,GAAE,KAAIA,GAAE,MAAI,OAAM,KAAG,EAAEA,EAAC;AAAC;AAAE,IAAI,IAAE,eAAa,OAAO,UAAQ,OAAO,OAAK,OAAO,IAAI,mBAAmB,KAAG;AAAK,SAAS,EAAEA,IAAE;AAAC,WAASE,GAAEA,IAAE;AAAC,QAAIxC,KAAE,EAAE,CAAA,GAAGwC,EAAC;AAAE,WAAO,OAAOxC,GAAE,KAAIsC,GAAEtC,IAAEwC,GAAE,OAAK,IAAI;AAAA,EAAC;AAAC,SAAOA,GAAE,WAAS,GAAEA,GAAE,SAAOA,IAAEA,GAAE,UAAU,mBAAiBA,GAAE,MAAI,MAAGA,GAAE,cAAY,iBAAeF,GAAE,eAAaA,GAAE,QAAM,KAAIE;AAAC;AAAI,IAA2M,IAAExC,IAAE;AAAIA,IAAE,MAAI,SAASsC,IAAEE,IAAExC,IAAEkC,IAAE;AAAC,MAAGI,GAAE;AAAK,aAAQP,IAAEE,KAAEO,IAAEP,KAAEA,GAAE;AAAI,WAAIF,KAAEE,GAAE,QAAMF,GAAE;AAAI,eAAO,QAAMS,GAAE,QAAMA,GAAE,MAAIxC,GAAE,KAAIwC,GAAE,MAAIxC,GAAE,MAAK+B,GAAE,IAAIO,IAAEE,EAAC;AAAA;AAAE,IAAEF,IAAEE,IAAExC,IAAEkC,EAAC;AAAC;AAAE,IAAI,IAAElC,IAAE;AAAQ,SAAS,EAAEsC,IAAEE,IAAExC,IAAE;AAAC,SAAOsC,OAAIA,GAAE,OAAKA,GAAE,IAAI,QAAMA,GAAE,IAAI,IAAI,GAAG,QAAQ,SAASA,IAAE;AAAC,kBAAY,OAAOA,GAAE,OAAKA,GAAE,IAAG;AAAA,EAAE,CAAC,GAAEA,GAAE,IAAI,MAAI,OAAM,SAAOA,KAAE,EAAE,CAAA,GAAGA,EAAC,GAAG,QAAMA,GAAE,IAAI,QAAMtC,OAAIsC,GAAE,IAAI,MAAIE,KAAGF,GAAE,MAAI,OAAMA,GAAE,MAAIA,GAAE,OAAKA,GAAE,IAAI,IAAI,SAASA,IAAE;AAAC,WAAO,EAAEA,IAAEE,IAAExC,EAAC;AAAA,EAAC,CAAC,IAAGsC;AAAC;AAAC,SAAS,EAAEA,IAAEE,IAAExC,IAAE;AAAC,SAAOsC,MAAGtC,OAAIsC,GAAE,MAAI,MAAKA,GAAE,MAAIA,GAAE,OAAKA,GAAE,IAAI,IAAI,SAASA,IAAE;AAAC,WAAO,EAAEA,IAAEE,IAAExC,EAAC;AAAA,EAAC,CAAC,GAAEsC,GAAE,OAAKA,GAAE,IAAI,QAAME,OAAIF,GAAE,OAAKtC,GAAE,aAAasC,GAAE,KAAIA,GAAE,GAAG,GAAEA,GAAE,IAAI,MAAI,MAAGA,GAAE,IAAI,MAAItC,MAAIsC;AAAC;AAAC,SAAS,IAAG;AAAC,OAAK,MAAI,GAAE,KAAK,IAAE,MAAK,KAAK,MAAI;AAAI;AAAC,SAAS,EAAEA,IAAE;AAAC,MAAIE,KAAEF,GAAE,GAAG;AAAI,SAAOE,MAAGA,GAAE,OAAKA,GAAE,IAAIF,EAAC;AAAC;AAAC,SAAS,EAAEA,IAAE;AAAC,MAAItC,IAAEkC,IAAEH;AAAE,WAASE,GAAEA,IAAE;AAAC,QAAGjC,OAAIA,KAAEsC,GAAG,GAAE,KAAK,SAASA,IAAE;AAAC,MAAAJ,KAAEI,GAAE,WAASA;AAAA,IAAC,GAAE,SAASA,IAAE;AAAC,MAAAP,KAAEO;AAAA,IAAC,CAAC,GAAEP;AAAE,YAAMA;AAAE,QAAG,CAACG;AAAE,YAAMlC;AAAE,WAAOwC,IAAEN,IAAED,EAAC;AAAA,EAAC;AAAC,SAAOA,GAAE,cAAY,QAAOA,GAAE,MAAI,MAAGA;AAAC;AAAC,SAAS,IAAG;AAAC,OAAK,IAAE,MAAK,KAAK,IAAE;AAAI;AAACjC,IAAE,UAAQ,SAASsC,IAAE;AAAC,MAAIE,KAAEF,GAAE;AAAI,EAAAE,MAAGA,GAAE,OAAKA,GAAE,IAAK,GAACA,MAAG,SAAKF,GAAE,QAAMA,GAAE,OAAK,OAAM,KAAG,EAAEA,EAAC;AAAC,IAAG,EAAE,YAAU,IAAIA,OAAG,MAAI,SAASA,IAAEE,IAAE;AAAC,MAAIxC,KAAEwC,GAAE,KAAIN,KAAE;AAAK,UAAMA,GAAE,MAAIA,GAAE,IAAE,CAAA,IAAIA,GAAE,EAAE,KAAKlC,EAAC;AAAE,MAAI+B,KAAE,EAAEG,GAAE,GAAG,GAAED,KAAE,OAAGD,KAAE,WAAU;AAAC,IAAAC,OAAIA,KAAE,MAAGjC,GAAE,MAAI,MAAK+B,KAAEA,GAAED,EAAC,IAAEA;EAAI;AAAE,EAAA9B,GAAE,MAAIgC;AAAE,MAAIF,KAAE,WAAU;AAAC,QAAG,CAAC,EAAEI,GAAE,KAAI;AAAC,UAAGA,GAAE,MAAM,KAAI;AAAC,YAAII,KAAEJ,GAAE,MAAM;AAAI,QAAAA,GAAE,IAAI,IAAI,CAAC,IAAE,EAAEI,IAAEA,GAAE,IAAI,KAAIA,GAAE,IAAI,GAAG;AAAA,MAAC;AAAC,UAAIE;AAAE,WAAIN,GAAE,SAAS,EAAC,KAAIA,GAAE,MAAI,KAAI,CAAC,GAAEM,KAAEN,GAAE,EAAE,IAAK;AAAE,QAAAM,GAAE;IAAa;AAAA,EAAC,GAAEb,KAAE,SAAKa,GAAE;AAAI,EAAAN,GAAE,SAAOP,MAAGO,GAAE,SAAS,EAAC,KAAIA,GAAE,MAAIA,GAAE,IAAI,IAAI,CAAC,EAAC,CAAC,GAAEI,GAAE,KAAKN,IAAEA,EAAC;AAAC,GAAE,EAAE,UAAU,uBAAqB,WAAU;AAAC,OAAK,IAAE,CAAA;AAAE,GAAE,EAAE,UAAU,SAAO,SAASM,IAAEtC,IAAE;AAAC,MAAG,KAAK,KAAI;AAAC,QAAG,KAAK,IAAI,KAAI;AAAC,UAAIkC,KAAE,SAAS,cAAc,KAAK,GAAED,KAAE,KAAK,IAAI,IAAI,CAAC,EAAE;AAAI,WAAK,IAAI,IAAI,CAAC,IAAE,EAAE,KAAK,KAAIC,IAAED,GAAE,MAAIA,GAAE,GAAG;AAAA,IAAC;AAAC,SAAK,MAAI;AAAA,EAAI;AAAC,MAAID,KAAEhC,GAAE,OAAKwC,IAAET,KAAE,MAAKO,GAAE,QAAQ;AAAE,SAAON,OAAIA,GAAE,MAAI,OAAM,CAACQ,IAAET,KAAE,MAAK/B,GAAE,MAAI,OAAKsC,GAAE,QAAQ,GAAEN,EAAC;AAAC;AAAE,IAAI,IAAE,SAASM,IAAEE,IAAExC,IAAE;AAAC,MAAG,EAAEA,GAAE,CAAC,MAAIA,GAAE,CAAC,KAAGsC,GAAE,EAAE,OAAOE,EAAC,GAAEF,GAAE,MAAM,gBAAc,QAAMA,GAAE,MAAM,YAAY,CAAC,KAAG,CAACA,GAAE,EAAE;AAAM,SAAItC,KAAEsC,GAAE,GAAEtC,MAAG;AAAC,aAAKA,GAAE,SAAO;AAAG,QAAAA,GAAE,IAAK,EAAA;AAAG,UAAGA,GAAE,CAAC,IAAEA,GAAE,CAAC;AAAE;AAAM,MAAAsC,GAAE,IAAEtC,KAAEA,GAAE,CAAC;AAAA,IAAC;AAAC;AAAE,SAAS,EAAEsC,IAAE;AAAC,SAAO,KAAK,kBAAgB,WAAU;AAAC,WAAOA,GAAE;AAAA,EAAO,GAAEA,GAAE;AAAQ;AAAC,SAAS,EAAEA,IAAE;AAAC,MAAItC,KAAE,MAAKkC,KAAEI,GAAE;AAAE,EAAAtC,GAAE,uBAAqB,WAAU;AAACiC,QAAE,MAAKjC,GAAE,CAAC,GAAEA,GAAE,IAAE,MAAKA,GAAE,IAAE;AAAA,EAAI,GAAEA,GAAE,KAAGA,GAAE,MAAIkC,MAAGlC,GAAE,qBAAsB,GAACA,GAAE,MAAIA,GAAE,IAAEkC,IAAElC,GAAE,IAAE,EAAC,UAAS,GAAE,YAAWkC,IAAE,YAAW,CAAA,GAAG,aAAY,SAASI,IAAE;AAAC,SAAK,WAAW,KAAKA,EAAC,GAAEtC,GAAE,EAAE,YAAYsC,EAAC;AAAA,EAAC,GAAE,cAAa,SAASA,IAAEE,IAAE;AAAC,SAAK,WAAW,KAAKF,EAAC,GAAEtC,GAAE,EAAE,YAAYsC,EAAC;AAAA,EAAC,GAAE,aAAY,SAASA,IAAE;AAAC,SAAK,WAAW,OAAO,KAAK,WAAW,QAAQA,EAAC,MAAI,GAAE,CAAC,GAAEtC,GAAE,EAAE,YAAYsC,EAAC;AAAA,EAAC,EAAC,IAAGL,IAAEO,IAAE,GAAE,EAAC,SAAQxC,GAAE,QAAO,GAAEsC,GAAE,GAAG,GAAEtC,GAAE,CAAC;AAAC;AAAC,SAAS,EAAEsC,IAAEtC,IAAE;AAAC,MAAIkC,KAAEM,IAAE,GAAE,EAAC,KAAIF,IAAE,GAAEtC,GAAC,CAAC;AAAE,SAAOkC,GAAE,gBAAclC,IAAEkC;AAAC;AAAA,CAAE,EAAE,YAAU,IAAII,OAAG,MAAI,SAASA,IAAE;AAAC,MAAIE,KAAE,MAAKxC,KAAE,EAAEwC,GAAE,GAAG,GAAEN,KAAEM,GAAE,EAAE,IAAIF,EAAC;AAAE,SAAOJ,GAAE,CAAC,KAAI,SAASH,IAAE;AAAC,QAAIE,KAAE,WAAU;AAAC,MAAAO,GAAE,MAAM,eAAaN,GAAE,KAAKH,EAAC,GAAE,EAAES,IAAEF,IAAEJ,EAAC,KAAGH,GAAG;AAAA,IAAA;AAAE,IAAA/B,KAAEA,GAAEiC,EAAC,IAAEA,GAAG;AAAA,EAAA;AAAC,GAAE,EAAE,UAAU,SAAO,SAASK,IAAE;AAAC,OAAK,IAAE,MAAK,KAAK,IAAE,oBAAI;AAAI,MAAIE,KAAEN,IAAEI,GAAE,QAAQ;AAAE,EAAAA,GAAE,eAAa,QAAMA,GAAE,YAAY,CAAC,KAAGE,GAAE;AAAU,WAAQxC,KAAEwC,GAAE,QAAOxC;AAAK,SAAK,EAAE,IAAIwC,GAAExC,EAAC,GAAE,KAAK,IAAE,CAAC,GAAE,GAAE,KAAK,CAAC,CAAC;AAAE,SAAOsC,GAAE;AAAQ,GAAE,EAAE,UAAU,qBAAmB,EAAE,UAAU,oBAAkB,WAAU;AAAC,MAAIA,KAAE;AAAK,OAAK,EAAE,QAAQ,SAASE,IAAExC,IAAE;AAAC,MAAEsC,IAAEtC,IAAEwC,EAAC;AAAA,EAAC,CAAC;AAAC;AAAE,IAAI,IAAE,eAAa,OAAO,UAAQ,OAAO,OAAK,OAAO,IAAI,eAAe,KAAG,OAAM,IAAE,+RAA8R,IAAE,oCAAmC,IAAE,aAAY,IAAE,eAAa,OAAO,UAAS,IAAE,SAASF,IAAE;AAAC,UAAO,eAAa,OAAO,UAAQ,YAAU,OAAO,OAAQ,IAAC,gBAAc,cAAc,KAAKA,EAAC;AAAC;AAAgLA,IAAE,UAAU,mBAAiB,IAAG,CAAC,sBAAqB,6BAA4B,qBAAqB,EAAE,QAAQ,SAASE,IAAE;AAAC,SAAO,eAAeF,IAAE,WAAUE,IAAE,EAAC,cAAa,MAAG,KAAI,WAAU;AAAC,WAAO,KAAK,YAAUA,EAAC;AAAA,EAAC,GAAE,KAAI,SAASF,IAAE;AAAC,WAAO,eAAe,MAAKE,IAAE,EAAC,cAAa,MAAG,UAAS,MAAG,OAAMF,GAAC,CAAC;AAAA,EAAC,EAAC,CAAC;AAAC,CAAC;AAAE,IAAI,IAAEtC,IAAE;AAAM,SAAS,IAAG;AAAE;AAAA,SAAS,IAAG;AAAC,SAAO,KAAK;AAAY;AAAC,SAAS,KAAI;AAAC,SAAO,KAAK;AAAgB;AAACA,IAAE,QAAM,SAASsC,IAAE;AAAC,SAAO,MAAIA,KAAE,EAAEA,EAAC,IAAGA,GAAE,UAAQ,GAAEA,GAAE,uBAAqB,GAAEA,GAAE,qBAAmB,IAAGA,GAAE,cAAYA;AAAC;AAAK,IAAI,KAAG,EAAC,YAAW,OAAG,cAAa,MAAG,KAAI,WAAU;AAAC,SAAO,KAAK;AAAK,EAAC,GAAE,KAAGtC,IAAE;AAAMA,IAAE,QAAM,SAASsC,IAAE;AAAC,cAAU,OAAOA,GAAE,QAAM,SAASA,IAAE;AAAC,QAAIE,KAAEF,GAAE,OAAMtC,KAAEsC,GAAE,MAAKP,KAAE,CAAE;AAAC,aAAQE,MAAKO,IAAE;AAAC,UAAIR,KAAEQ,GAAEP,EAAC;AAAE,UAAG,EAAE,YAAUA,MAAG,kBAAiBO,MAAG,QAAMR,MAAG,KAAG,eAAaC,MAAG,eAAajC,MAAG,YAAUiC,MAAG,gBAAcA,KAAG;AAAC,YAAIH,KAAEG,GAAE,YAAW;AAAG,2BAAiBA,MAAG,WAAUO,MAAG,QAAMA,GAAE,QAAMP,KAAE,UAAQ,eAAaA,MAAG,SAAKD,KAAEA,KAAE,KAAG,oBAAkBF,KAAEG,KAAE,eAAa,eAAaH,MAAG,YAAU9B,MAAG,eAAaA,MAAG,EAAEwC,GAAE,IAAI,IAAE,cAAYV,KAAEG,KAAE,cAAY,aAAWH,KAAEG,KAAE,eAAa,EAAE,KAAKA,EAAC,IAAEA,KAAEH,KAAE,OAAK9B,GAAE,QAAQ,GAAG,KAAG,EAAE,KAAKiC,EAAC,IAAEA,KAAEA,GAAE,QAAQ,GAAE,KAAK,EAAE,YAAa,IAAC,SAAOD,OAAIA,KAAE,UAAQF,KAAEG,KAAE,WAAU,cAAYH,MAAGC,GAAEE,KAAEH,EAAC,MAAIG,KAAE,mBAAkBF,GAAEE,EAAC,IAAED;AAAA,MAAC;AAAA,IAAC;AAAC,gBAAUhC,MAAG+B,GAAE,YAAU,MAAM,QAAQA,GAAE,KAAK,MAAIA,GAAE,QAAMG,IAAEM,GAAE,QAAQ,EAAE,QAAQ,SAASF,IAAE;AAAC,MAAAA,GAAE,MAAM,WAAS,MAAIP,GAAE,MAAM,QAAQO,GAAE,MAAM,KAAK;AAAA,IAAC,CAAC,IAAG,YAAUtC,MAAG,QAAM+B,GAAE,iBAAeA,GAAE,QAAMG,IAAEM,GAAE,QAAQ,EAAE,QAAQ,SAASF,IAAE;AAAC,MAAAA,GAAE,MAAM,WAASP,GAAE,WAAS,MAAIA,GAAE,aAAa,QAAQO,GAAE,MAAM,KAAK,IAAEP,GAAE,gBAAcO,GAAE,MAAM;AAAA,IAAK,CAAC,IAAGE,GAAE,SAAO,CAACA,GAAE,aAAWT,GAAE,QAAMS,GAAE,OAAM,OAAO,eAAeT,IAAE,aAAY,EAAE,MAAIS,GAAE,aAAW,CAACA,GAAE,SAAOA,GAAE,SAAOA,GAAE,eAAaT,GAAE,QAAMA,GAAE,YAAUS,GAAE,YAAWF,GAAE,QAAMP;AAAA,EAAC,EAAEO,EAAC,GAAEA,GAAE,WAAS,GAAE,MAAI,GAAGA,EAAC;AAAC;AAAE,IAAI,KAAGtC,IAAE;AAAIA,IAAE,MAAI,SAASsC,IAAE;AAAC,QAAI,GAAGA,EAAC,GAAKA,GAAE;AAAG;AAAE,IAAI,KAAGtC,IAAE;AAAOA,IAAE,SAAO,SAASsC,IAAE;AAAC,QAAI,GAAGA,EAAC;AAAE,MAAIE,KAAEF,GAAE,OAAMtC,KAAEsC,GAAE;AAAI,UAAMtC,MAAG,eAAasC,GAAE,QAAM,WAAUE,MAAGA,GAAE,UAAQxC,GAAE,UAAQA,GAAE,QAAM,QAAMwC,GAAE,QAAM,KAAGA,GAAE;AAAc;;ACoBr7O,SAAS,WAAW,EAAE,IAAI,WAAW,UAAU,WAAW,SAAS,QAAQ,OAAO,MAAM,SAAA,GAAgD;AACpI,QAAMmD,OAAM,MAAM;AAClB,QAAM,qBAAqBnB;AAAAA,IACvB,OAAO;AAAA;AAAA,MAEH,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,OAAO,EAAE,GAAG,YAAY,kBAAkB;AAAA,MACjG,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,OAAO,IAAI,mBAAmB,IAAI,EAAE,GACvF,YAAY,kBAAkB,WAAW;AAAA,MAC7C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,OAAO,IAAI,mBAAmB,QAAQ,EAAE,GAC3F,YAAY,kBAAkB,WAAW;AAAA;AAAA,MAG7C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,IAAI,EAAE,GAAG,YAAY,kBAAkB;AAAA,MAC9F,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,IAAI,IAAI,mBAAmB,IAAI,EAAE,GAAG,YAAY,kBAAkB,QAAQ;AAAA,MACjI,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,IAAI,IAAI,mBAAmB,QAAQ,EAAE,GACxF,YAAY,kBAAkB,QAAQ;AAAA,MAC1C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,IAAI,IAAI,mBAAmB,SAAS,EAAE,GACzF,YAAY,kBAAkB,QAAQ;AAAA;AAAA,MAG1C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,QAAQ,EAAE,GAAG,YAAY,kBAAkB;AAAA,MAClG,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,QAAQ,IAAI,mBAAmB,QAAQ,EAAE,GAC5F,YAAY,kBAAkB,YAAY;AAAA;AAAA,MAG9C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,KAAK,EAAE,GAAG,YAAY,kBAAkB,SAAS,CAAC,UAAU,CAAC;AAAA,MACpH,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,KAAK,IAAI,mBAAmB,MAAM,EAAE,GACvF,YAAY,kBAAkB,SAAS;AAAA,MAC3C,CAAC,GAAG,4BAA4B,KAAK,kBAAkB,KAAK,IAAI,mBAAmB,KAAK,EAAE,GAAG,YAAY,kBAAkB,SAAS;AAAA,IAAA;AAAA,IAExI,CAAC,SAAS,MAAM,UAAU,QAAQ,OAAO,SAAS;AAAA,EAAA;AAGtD,SAAQL,oBAAAwB,MAAA,EAAI,WAAW,GAAG,CAAC,GAAG,4BAA4B,IAAI,oBAAoB,SAAS,CAAC,GAAI,SAAS,CAAA;AAC7G;AAEA,MAAeC,eAAAA,EAAK,UAAU;ACrD9B,MAAM,yBAAyB;AAElB,MAAA,iBAAiB,CAAC,mBAA2B,cAAqE;AACrH,QAAA,UAAU,YAAa,OAAO,cAAc,WAAW,aAAY,uCAAW,UAAS,KAAM;AAC5F,SAAA,QAAQ,QAAQ,wBAAwB,EAAE,KAAK,kBAAkB,QAAQ,wBAAwB,EAAE,KAAK;AACnH;AAEO,MAAM,eAAe,CACxB,WACA,mBACA,sBACCC,GAAW,eAAe,IAAI,iBAAiB,GAAG,eAAe,eAAe,IAAI,iBAAiB,KAAK,IAAI,SAAS,CAAC;AAEhH,MAAA,qBAAqB,CAAC,QAAgB,YAAsB,IAAI,cAAwB,CAAA,MACjGA,GAAW,CAAC,GAAG,aAAa,GAAG,uCAAW,IAAI,CAAAlD,OAAM,SAAS,GAAG,MAAM,KAAKA,EAAC,KAAKA,GAAG,CAAC;ACbzF,MAAM,YAAY,CACd,WACA,oBACA,kBACA,UACA,YACC;AACD,QAAM,QAAQ2B;AAAAA,IACV,CAACtE,OAAW;AACR,MAAAA,GAAE,eAAe;AAEjB,UAAI,CAAC,UAAU;AACX,2CAAUA;AAAA,MACd;AAAA,IACJ;AAAA,IACA,CAAC,UAAU,OAAO;AAAA,EAAA;AAGtB,QAAM,UAAUwE;AAAAA,IACZ,MAAM,mBAAmB,kBAAkB,oBAAoB,CAAC,kBAAkB,SAAS,CAAC;AAAA,IAC5F,CAAC,oBAAoB,SAAS;AAAA,EAAA;AAG3B,SAAA,EAAE,SAAS;AACtB;AC5BO,MAAM,2BAA2B;AAC3B,MAAA,0BAA0B,GAAG,wBAAwB;AACrD,MAAA,wBAAwB,GAAG,wBAAwB;AACnD,MAAA,gCAAgC,GAAG,wBAAwB;AAC3D,MAAA,oCAAoC,GAAG,uBAAuB;AAC9D,MAAA,yBAAyB,GAAG,wBAAwB;AACpD,MAAA,8BAA8B,GAAG,wBAAwB;AACzD,MAAA,6BAA6B,GAAG,wBAAwB;;ACarE,SAAS,OACL;AAAA,EACI,UAAU,cAAc;AAAA,EACxB,WAAW;AAAA,EACX;AAAA,EACA,qBAAqB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,MAAA5E,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACP,GACA,KACF;AACQ,QAAA,iBAAiB4E,IAAQ,MAAM,eAAe,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;AAC/E,QAAA,gBAAgBA,IAAQ,MAAM,aAAa,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAEtE,QAAM,EAAE,SAAS,UAAU,UAAU,gBAAgB,CAAC,GAAG,oBAAoB,OAAO,GAAG,0BAA0B,eAAe,OAAO;AAGnI,SAAAL;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,aAAa,GAAG,qBAAqB,IAAI,OAAO,KAAK;AAAA,MAChE,MAAAvE;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACC,GAAG;AAAA,MAEH,UAAA,iCACI,OAAI,EAAA,WAAW,GAAG,6BAA6B,IAAK,SAAS,CAAA,IAGzDkG,oBAAAC,KAAA,EAAA,UAAA;AAAA,QAAA,YAAa5B,oBAAA,QAAA,EAAK,WAAW,4BAA6B,UAAS,UAAA;AAAA,QACnEA,oBAAA6B,cAAA,EAAW,WAAW,wBAAwB,IAAI,kBAAkB,MAAM,SAAS,kBAAkB,MAAM,UAAU,MACjH,SACL,CAAA;AAAA,QACC,aAAa7B,oBAAC,QAAK,EAAA,WAAW,6BAA8B,UAAU,WAAA;AAAA,MAAA,GAC3E;AAAA,IAAA;AAAA,EAAA;AAIhB;AAEA,MAAe8B,WAAAA,EAAW,MAAM;;ACnDhC,SAAwB,UAAU,OAA0C;AAClE,QAAA,EAAE,SAASZ;AACjB,QAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AACvD,QAAM,CAAC,aAAa,cAAc,IAAIrB,EAAS,CAAC,YAAY;AAE5DE,IAAU,MAAM;AACZ,mBAAe,CAAC,YAAY;AAAA,EAAA,GAC7B,CAAC,YAAY,CAAC;AAEjB,SAES4B,oBAAAC,KAAA,EAAA,UAAA;AAAA,IACG,gBAAAD,oBAAC,OAAI,EAAA,WAAU,+BACX,UAAA;AAAA,MAAA3B,oBAAC6B,gBAAW,SAAS,kBAAkB,UAAW,UAAK,KAAA,IAAI,cAAc,GAAE;AAAA,MAC3E7B;AAAAA,QAAC+B;AAAAA,QAAA;AAAA,UACG,WAAW;AAAA,UACX,SAAS,cAAc;AAAA,UACvB,YAAU;AAAA,UACV,SAAS,MAAM,eAAe,CAAA,cAAa,CAAC,SAAS;AAAA,UAEpD,UAAc,cAAA/B,oBAACgC,SAAM,CAAA,CAAA,wBAAMC,UAAO,EAAA;AAAA,QAAA;AAAA,MACvC;AAAA,IAAA,GACJ;AAAA,IAEH,eACGN;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,cAAY,KAAK,IAAI,WAAW;AAAA,QAChC,WAAW,GAAG,uBAAuB,EAAE,wCAAwC,cAAc;AAAA,QAE5F,UAAA;AAAA,UAAM,MAAA;AAAA,UACN,MAAM,mBAAmB,CAAC,CAAC,MAAM,gBAC7B3B,oBAAA+B,UAAA,EAAO,SAAS,cAAc,UAAU,SAAS,MAAM,cACnD,UAAK,KAAA,IAAI,iBAAiB,GAC/B;AAAA,QAAA;AAAA,MAAA;AAAA,IAER;AAAA,EAER,EAAA,CAAA;AAER;ACjDkB,IAAA,2CAAAG,4BAAX;AACHA,0BAAA,iBAAkB,IAAA;AAClBA,0BAAA,YAAa,IAAA;AACbA,0BAAA,YAAa,IAAA;AACbA,0BAAA,UAAW,IAAA;AACXA,0BAAA,eAAgB,IAAA;AAChBA,0BAAA,eAAgB,IAAA;AAChBA,0BAAA,YAAa,IAAA;AACbA,0BAAA,YAAa,IAAA;AARCA,SAAAA;AAAA,GAAA,0BAAA,CAAA,CAAA;;ACMlB,SAAS,aAAarG,IAAkC;AACpD,MAAI,CAACA,MAAK,EAAE,cAAcA,KAAI;AACnB,WAAA;AAAA,EACX;AACO,SAAA;AACX;AACA,SAAwB,MAAM;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,qBAAqB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP,GAAG;AACP,GAAe;AACL,QAAA,oBAAoBiE,EAAuB,IAAI;AAC/C,QAAA,EAAE,SAASoB;AACjB,QAAM,qBAAqBf;AAAAA,IACvB,CAACtE,OAAuC;;AACpC,UAAI,iBAAiB,UAAU,aAAaA,GAAE,MAAM,KAAK,GAACc,MAAA,uDAAmB,YAAnB,gBAAAA,IAA4B,SAASd,GAAE,UAAS;AAC9F;MACZ;AAAA,IACJ;AAAA,IACA,CAAC,eAAe,QAAQ,OAAO;AAAA,EAAA;AAGnC,QAAM,eAAesE;AAAAA,IACjB,CAACtE,OAAqB;AAClB,UAAIA,GAAE,QAAQ,YAAY,UAAU,eAAe;AACvC;MACZ;AAAA,IACJ;AAAA,IACA,CAAC,QAAQ,eAAe,OAAO;AAAA,EAAA;AAGnCkE,IAAU,MAAM;AACZ,QAAI,QAAQ;AACD,aAAA,iBAAiB,WAAW,YAAY;AAAA,IAAA,OAC5C;AACI,aAAA,oBAAoB,WAAW,YAAY;AAAA,IACtD;AACA,WAAO,MAAM,OAAO,oBAAoB,WAAW,YAAY;AAAA,EAAA,GAChE,CAAC,QAAQ,YAAY,CAAC;AAEzB,oCAES,UACG,UAAAC;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA,mBAAmB,IAAI,CAAKxB,OAAA,2BAA2BA,EAAC,EAAE;AAAA,QAC1D,EAAE,gCAAgC,QAAQ,uCAAuC,cAAc;AAAA,MACnG;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,eAAa,CAAC;AAAA,MACd,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAAmD;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAW,GAAG,kBAAkB;AAAA,YAC5B,yBAAyB,SAAS;AAAA,YAClC,yBAAyB,SAAS;AAAA,YAClC,yBAAyB,SAAS;AAAA,YAClC,+BAA+B,SAAS;AAAA,YACxC,+BAA+B,SAAS;AAAA,UAAA,CAC3C;AAAA,UACD,KAAK;AAAA,UAEL,UAAA;AAAA,YAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAW,GAAG,0BAA0B;AAAA,kBACpC,sCAAsC;AAAA,kBACtC,8CAA8C;AAAA,gBAAA,CACjD;AAAA,gBAEA,UAAA;AAAA,kBAAA,SAAU3B,oBAAA,OAAA,EAAI,WAAW,iCAAkC,UAAM,OAAA;AAAA,kBAEjE,iBACGA;AAAAA,oBAAC+B;AAAAA,oBAAA;AAAA,sBACG,SAAS;AAAA,sBACT,SAAS,cAAc;AAAA,sBACvB,WAAW;AAAA,sBACX,cAAY,KAAK,IAAI,SAAS;AAAA,sBAE9B,8BAACC,SAAM,EAAA;AAAA,oBAAA;AAAA,kBACX;AAAA,gBAAA;AAAA,cAAA;AAAA,YAER;AAAA,YACChC,oBAAA,OAAA,EAAI,WAAW,2BAA4B,SAAS,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACzD;AAAA,IAAA;AAAA,EAGZ,EAAA,CAAA;AAER;AC1GO,MAAM,eAAe,MAA6C;AACrE,MAAI,cAA+D,CAAA;AAE7D,QAAA,8BAA8B,CAAC,cAA6B;AAC9D,UAAM3C,SAAQ,UAAU,OAAO,CAACA,SAAe,SAAsB;AACjE,YAAM,iBACF,gBAAgB,OACV,YAAY,UAAU,CAAc,eAAA;AAChC,cAAM,eAAe,WAAW,QAAQ,aAAa,IAAI;AACzD,cAAM,SAAS,SAAS,6BAAsB,gBAAgB,6BAAsB,aAAa,QAAQ;AACzG,eAAO,iBAAiB;AAAA,MAAA,CAC3B,IACD;AACNA,UAAAA,YAAU,MAAM,mBAAmB;AAAW,eAAA;AAC3CA,aAAAA;AAAAA,IAAA,GACR,EAAE;AACL,QAAIA,WAAU,IAAI;AACd,0BAAoB,CAAC;AAAA,IAAA,OAClB;AACH,MAAAA,SAAQ,KAAK,YAAY,SAAS,KAAK,oBAAoBA,SAAQ,CAAC;AAAA,IACxE;AAAA,EAAA;AAGE,QAAA,SAAS,CAAC,eAAkB;AAC9B,UAAMA,SAAQ,YAAY,UAAU,CAAA,SAAQ,KAAK,QAAQ,aAAa,IAAI,MAAM,WAAW,aAAa,IAAI,CAAC;AAC7G,QAAIA,UAAS,GAAG;AACA,kBAAA,OAAOA,QAAO,CAAC;AAAA,IAC/B;AAAA,EAAA;AAGE,QAAA,MAAM,CAAC,YAAe,aAA4B;AACpD,UAAMA,SAAQ,YAAY,UAAU,CAAA,SAAQ,KAAK,QAAQ,aAAa,IAAI,MAAM,WAAW,aAAa,IAAI,CAAC;AAC7G,QAAIA,UAAS;AAAG;AAChB,gBAAY,KAAK,EAAE,SAAS,YAAY,SAAoB,CAAA;AAAA,EAAA;AAG1D,QAAA,sBAAsB,CAAC,cAAsB;;AAC/C,UAAM,gBAAgB,YAAY;AAClC,aAASQ,KAAI,WAAWA,KAAI,eAAeA,MAAK;AAC9B,OAAAJ,OAAAd,MAAA,2CAAAkB,QAAA,gBAAAlB,IAAI,aAAJ,gBAAAc,IAAA,KAAAd;AAAA,IAClB;AACA,gBAAY,OAAO,SAAS;AAAA,EAAA;AAGhC,QAAM,WAAW,MAAM;AACnB,gBAAY,QAAQ,CAAA,QAAO;;AAAA,cAAAA,MAAA,2BAAK,aAAL,gBAAAA,IAAA;AAAA,KAAiB;AAC5C,kBAAc,CAAA;AAAA,EAAC;AAGnB,SAAO,EAAE,KAAK,QAAQ,UAAU,4BAA4B;AAChE,GAAG;;AChCH,MAAM,UAAU,CAAC,EAAE,SAAS,OAAO,OAAO,cACtCqD,oBAAC,OAAI,EAAA,WAAW,6BAA6B,SAAS,sCAAsC,EAAE,IAC1F,UAAAA,oBAAC,SAAI,WAAW,sCAAsC,IAAI,GAAI,CAAA,EAClE,CAAA;AAGJ,MAAA,YAAe;ACSR,SAAS,YAAY,SAAuD;AAC/E,SAAO,cAAc;AACzB;ACtBA,SAAS,gBAAqD,SAAkB;AAC5E,QAAM,CAAC,gBAAgB,iBAAiB,IAAIH,EAAyC,IAAI;AACzF,QAAM,gBAAgBM;AAAAA,IAClB,CAAoCD,WAA2F;;AAC3H,UAAIA,UAAS,YAAY,QAAQA,OAAM,UAAU,IAAI,CAAC,GAAG;AAC9C,eAAA;AAAA,UACH,YAAUvD,MAAA,mCAAUuD,OAAM,UAAU,UAA1B,gBAAAvD,IAAiC,YACrC,CACI,SAAA;;AAGC,oBAAAc,OAAAd,MAAA,QAAQuD,OAAM,UAAU,IAAI,MAA5B,gBAAAvD,IAA+B,aAA/B,gBAAAc,IAAA,KAAAd,KAA0C,EAAE,WAAW,MAAM,kBAAkBuD,MAAK,GAAG,GAAG;cAC/F,MAAM;;AAAA,qBAAAvD,MAAA,QAAQuD,OAAM,UAAU,IAAI,MAA5B,gBAAAvD,IAA+B,gBAAe,kBAAkBuD,MAAK;AAAA;AAAA,QAAA;AAAA,MAEzF;AACA,wBAAkBA,MAAK;AACvB,aAAO;IACX;AAAA,IACA,CAAC,OAAO;AAAA,EAAA;AAEZ,QAAM,eAAeC,IAAY,MAAM,kBAAkB,IAAI,GAAG,CAAA,CAAE;AAE5D,QAAA,gBAAgBE,IAAQ,MAAM;AAChC,UAAM,UAAU,CAAA;AAEhB,eAAW,UAAU,SAAS;AACpB8B,YAAAA,kBAAiB,QAAQ,MAAM;AACrC,cAAQ,MAAM,IAAI,EAACA,mDAAgB,gBAAe,CAAC,CAACA,gBAAe;AAAA,IACvE;AAEO,WAAA;AAAA,EAAA,GACR,CAAC,OAAO,CAAC;AAEL,SAAA;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;ACpDO,MAAMC,eAAa;AACnB,MAAM,0BAA0BA,eAAa;;ACWxC,IAAA,6CAAAC,8BAAL;AACHA,4BAAA,aAAc,IAAA;AACdA,4BAAA,gBAAiB,IAAA;AACjBA,4BAAA,eAAgB,IAAA;AAChBA,4BAAA,gBAAiB,IAAA;AAJTA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAOA,IAAA,gDAAAC,iCAAL;AACHA,+BAAA,eAAgB,IAAA;AADRA,SAAAA;AAAA,GAAA,+BAAA,CAAA,CAAA;AAIL,MAAM,sBAAsB,EAAE,GAAG,0BAA0B,GAAG,4BAA4B;;ACXjG,SAAS,cAAc,EAAE,SAAS,SAAS,oBAAoB,eAAmC;AAC9F,QAAM,qBAAqB,MAAc;AAC9B,WAAA,GAAG,uBAAuB,KAAK,MAAM;AAAA,EAAA;AAG1C,QAAA,+BAA+B,CAAC,gBAAwB;AACpD,UAAA,kBAAkB,QAAQ,SAAS;AACzC,WAAO,gBAAgB,kBAAkB,cAAc,UAAU,cAAc;AAAA,EAAA;AAG7E,QAAA,kBAAkBjC,IAAQ,MAAM,CAAC,GAAG,OAAO,EAAE,QAAQ,GAAG,CAAC,OAAO,CAAC;AAEvE,6BACK,OAAI,EAAA,WAAW,yBACZ,UAACL,oBAAA,OAAA,EAAI,WAAW,GAAG,iCAAiC,IAAI,mBAAoB,CAAA,IAAI,MAAK,SAChF,0BAAgB,IAAI,CAAC,QAAQ3C,WAC1B2C;AAAAA,IAAC+B;AAAAA,IAAA;AAAA,MACG,cAAY,OAAO;AAAA,MAEnB,UAAU,OAAO;AAAA,MACjB,SAAS,OAAO,WAAW,6BAA6B1E,MAAK;AAAA,MAC7D,SAAS,OAAO;AAAA,MAEf,UAAO,OAAA;AAAA,IAAA;AAAA,IALHA;AAAA,EAAA,CAOZ,GACL,EACJ,CAAA;AAER;AAEA,MAAeoE,kBAAAA,EAAK,aAAa;AC3C1B,MAAM,4BAA4B;AAClC,MAAM,4BAA4B;AAC5B,MAAA,8BAA8B,GAAG,yBAAyB;AAC1D,MAAA,2BAA2B,GAAG,yBAAyB;AACvD,MAAA,iCAAiC,GAAG,yBAAyB;AAC7D,MAAA,4BAA4B,GAAG,yBAAyB;AACxD,MAAA,4BAA4B,GAAG,yBAAyB;AACxD,MAAA,2BAA2B,GAAG,yBAAyB;;ACIpE,SAAS,qBAAqB,EAAE,QAAQ,MAAM,WAAsC;AAC1E,QAAA,EAAE,SAASP;AACjB,QAAM,wBAAwB,MAAc;AACxC,WAAO,QAAQ,8CAA8C;AAAA,EAAA;AAEjE,SAEQlB,oBAAA4B,KAAA,EAAA,UAAA5B;AAAAA,IAAC+B;AAAAA,IAAA;AAAA,MACG,WAAW,sBAAsB;AAAA,MACjC,YAAY;AAAA,MACZ,SAAS,cAAc;AAAA,MACvB;AAAA,MACA,cAAY,KAAK,IAAI,gBAAgB;AAAA,MAErC,UAAAJ,oBAAC,OAAI,EAAA,MAAK,OAAM,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,MAAK,QAC3E,UAAA;AAAA,QAAA3B,oBAAC,WAAO,UAAU,UAAA,CAAA;AAAA,QAClBA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,UAAS;AAAA,YACT,GAAE;AAAA,YACF,UAAS;AAAA,UAAA;AAAA,QACb;AAAA,MAAA,GACJ;AAAA,IAAA;AAAA,EAER,EAAA,CAAA;AAER;AAEA,MAAeyB,yBAAAA,EAAK,oBAAoB;AC/BxC,SAAS,aAAa,EAAE,OAAO,eAAe,SAA4B;AACtE,QAAM,aAAa,MAAyB;AACjC,WAAA,eAAe,kBAAkB,WAAW,kBAAkB;AAAA,EAAA;AAIrE,SAAAzB,oBAAC6B,gBAAW,WAAW,CAAC,cAAc,SAAS,cAC1C,UACL,MAAA,CAAA;AAER;AAEA,MAAeJ,iBAAAA,EAAK,YAAY;ACfpB,IAAA,4CAAAc,6BAAL;AACHA,2BAAA,SAAU,IAAA;AACVA,2BAAA,SAAU,IAAA;AAFFA,SAAAA;AAAA,GAAA,2BAAA,CAAA,CAAA;AAiCA,IAAA,6CAAAC,8BAAL;AACHA,4BAAA,KAAM,IAAA;AACNA,4BAAA,UAAW,IAAA;AACXA,4BAAA,OAAQ,IAAA;AACRA,4BAAA,QAAS,IAAA;AACTA,4BAAA,aAAc,IAAA;AACdA,4BAAA,MAAO,IAAA;AANCA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AASA,IAAA,yCAAAC,0BAAL;AACHA,wBAAA,QAAS,IAAA;AACTA,wBAAA,MAAO,IAAA;AAFCA,SAAAA;AAAA,GAAA,wBAAA,CAAA,CAAA;AC1CM,IAAA,uCAAAC,wBAAX;AACHA,sBAAA,YAAa,IAAA;AACbA,sBAAA,YAAa,IAAA;AACbA,sBAAA,aAAc,IAAA;AACdA,sBAAA,UAAW,IAAA;AACXA,sBAAA,WAAY,IAAA;AACZA,sBAAA,KAAM,IAAA;AACNA,sBAAA,OAAQ,IAAA;AACRA,sBAAA,QAAS,IAAA;AACTA,sBAAA,MAAO,IAAA;AACPA,sBAAA,WAAY,IAAA;AACZA,sBAAA,SAAU,IAAA;AACVA,sBAAA,OAAQ,IAAA;AACRA,sBAAA,KAAM,IAAA;AAbQA,SAAAA;AAAA,GAAA,sBAAA,CAAA,CAAA;ACLL,MAAA,MAAqB,OAAO,MAAM;ACAxC,MAAM,oBAAoB,MAAM;AAAC;AACjC,MAAM,wBAAwB,YAAY;AAAC;AAC3C,MAAM,iCAAiC,YAAY;AAAC;ACGpD,SAAS,mBAA4B/G,QAA+C;AACnF,MAAA,CAAC,WAAWA,MAAK;AAAG,UAAM,IAAI,yBAAyB;AAC/D;AAEa,MAAA,WAAW,CAAUA,WAAmC;AAC7D,MAAA;AACA,QAAI,WAAWA,MAAK,KAAK,eAAeA,QAAO,SAAS,KAAK,eAAeA,QAAO,GAAG,KAAK,CAAC,UAAUA,QAAQA,OAAoB,GAAG,CAAC,GAAG;AACrI,YAAM,aAAcA,OAAoB,QAAQ,IAAI,YAA+B;AAC7E,YAAA,OAAQA,OAAoB,QAAQ;AAE1C,aAAO,eAAe,UAAa,OAAO,UAAU,IAAI,KAAK,QAAQ;AAAA,IACzE;AAAA,EAAA,QACI;AAAA,EAER;AAEO,SAAA;AACX;AAEa,MAAA,SAAS,CAAU,eAAuC,SAAY,UAAU,IAAI,OAAO,WAAW,GAAG,CAAC,IAAI;AClBpH,MAAM,wBAAwB,MAAM;AACjC,QAAA,mBAAmB,CAAU,UAAsC,QAAiC;AAChG,UAAA,SAAS,SAAS,IAAI,GAAG;AAC/B,QAAI,CAAC;AAAQ,YAAM,IAAI,gBAAgB;AAChC,WAAA;AAAA,EAAA;AAGX,QAAM,oBAAoB,CACtB,UACA,YACA,WACqB;AACjB,QAAA;AACA,QAAA;AAEE,UAAA,OAAO,OAAO,UAAU;AAE1B,QAAA;AACS,eAAA,iBAAiB,UAAU,IAAI;AAAA,IAAA,QACpC;AAMJ,yBAAsB,MAAM;AAAA,IAChC;AAEI,QAAA;AAAS,OAAE,EAAA,OAAO,IAAI;AAAA,SACrB;AACK,YAAA,gBAAgB,WAAW,IAAI;AAE/B,YAAA,yBAA2C,gBAC3C,CAAY,aAAA;AACR,aAAM,WAAW,QAAS;AAAA,UAE9B,CAAY,aAAA;AACR,aAAK,UAAU;AACf,mBAAW,KAAK;AAAA,MAAA;AAG1B,YAAM,SAAU,CAAY,aAAA;AACpB,YAAA,QAAQ,SAAS,GAAG;AAKpB;AAAA,QACJ;AAEA,cAAM,WAAW;AAEjB,+BAAuB,QAAQ;AAE/B,YAAI,CAAC,UAAU,UAAU,QAAQ,GAAG;AACrB,qBAAA,CAACgH,OAAM,KAAK,SAAS;AAC5BA,oBAAO,UAAU,QAAQ;AAAA,UAC7B;AAAA,QACJ;AAAA,MAAA;AAGA,UAAA,WAAwB,gBAAgB,OAAO,KAAK;AAE/C,eAAA,IAAI,MAAO,SAAS,CAAC,QAAS,UAAU,oBAAI,IAAM,CAAA,CAAE;AAE7D,aAAO,iBAAiB,QAAQ;AAAA,QAC5B,CAAC,GAAG,GAAG,EAAE,OAAO,KAAK;AAAA,QACrB,SAAS;AAAA,UACL,OAAO,OAAO;AAAA,YACV,KAAK,EAAE,OAAO,QAAQ,IAAI,KAAK,OAAO,EAAE;AAAA,YACxC,MAAM,EAAE,KAAK,MAAM,QAAQ,KAAK;AAAA,UAAA,CACnC;AAAA,QACL;AAAA,QACA,SAAS;AAAA,UACL,KAAK,MAAM;AAAA,UACX,KAAK,gBAAiB,SAAsC;AAAA,QAChE;AAAA,MAAA,CACH;AAAA,IACL;AAEA,QAAI,QAAQ;AACR,cAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE;AAAA,IACtD;AAEA,WAAO,OAAO,CAAC;AAAA,EAAA;AAGnB,QAAM,sBAAsB,CAAU,UAAsC,YAA2B,WAAkC;AAC/H,UAAA,OAAO,OAAO,UAAU;AAC9B,UAAM,CAAG,EAAA,OAAO,IAAI,iBAAiB,UAAU,IAAI;AACnD,UAAM,WAAW,QAAQ,IAAI,MAAM,KAAK;AAExC,QAAI,aAAa;AAAG,cAAQ,OAAO,MAAM;AAAA,aAChC,WAAW;AAAW,cAAA,IAAI,QAAQ,WAAW,CAAC;AACvD,QAAI,QAAQ,SAAS;AAAG,eAAS,OAAO,IAAI;AAAA,EAAA;AAGhD,SAAO,MAAsB;AACnB,UAAA,gCAAgB;AACtB,WAAO,OAAO;AAAA,MACV,MAAM,WAAW,kBAAkB,KAAK,QAAQ,SAAS,CAAC;AAAA,MAC1D,QAAQ,WAAW,oBAAoB,KAAK,QAAQ,SAAS,CAAC;AAAA,IAAA,CACjE;AAAA,EAAA;AAET;AAEA,MAAA,YAAe,qBAAqB;AC1GvB,MAAA,2BAA2B,CAAU,WAAuC;AACrF,qBAAsB,MAAM;AAEtB,QAAA,WAAW,IAAI,QAAiC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEnE,QAAM,SAAU,CAAY,aAAA;AACpB,QAAA,UAAU,UAAU,QAAQ;AAAG;AACnC,UAAM,WAAW;AACT,WAAA,WAAW,UAAW,QAAQ;AAAA,EAAA;AAG1C,MAAI,WAAwB;AAErB,SAAA,OAAO,iBAAiB,QAAQ;AAAA,IACnC,CAAC,GAAG,GAAG,EAAE,OAAO,OAAO;AAAA,IACvB,SAAS;AAAA,MACL,OAAO,OAAO;AAAA,QACV,KAAK,EAAE,OAAO,SAAS,IAAI,KAAK,QAAQ,EAAE;AAAA,QAC1C,MAAM,EAAE,OAAO,EAAE;AAAA,MAAA,CACpB;AAAA,IACL;AAAA,IACA,SAAS;AAAA,MACL,KAAK,MAAM;AAAA,MACX,KAAK;AAAA,IACT;AAAA,EAAA,CACH;AACL;AAEO,MAAM,wBAAwB,MAAmC;AAChE,MAAA;AACJ,MAAI,cAA8C;AAC9C,MAAA;AACJ,MAAI,YAAY;AAEV,QAAA,oBAAoB,CAAC,WAA4B;AACzC,cAAA;AACI,kBAAA;AACE,oBAAA;AACJ,gBAAA;AAAA,EAAA;AAGhB,QAAM,oBAAoB,MAAM;AAC5B,QAAI,CAAC,WAAW;AACQ;AACR,kBAAA;AAAA,IAChB;AAAA,EAAA;AAGJ,QAAM,sBAAsB,MAAM;AAC1B,QAAA;AACA,UAAI,CAAC;AAAa;AACR,gBAAA,OAAO,aAAa,aAAa;AAAA,IAAA,QACvC;AAAA,IAER;AAAA,EAAA;AAGE,QAAA,mBAAmB,CAAC,QAAyB,eAAyC;AACxF,uBAAsB,MAAM;AAExB,QAAA;AAAW,wBAAkB,MAAM;AAEjC,UAAA,oBAAoB,cAAc,SAAY,OAAO;AAEvD,QAAA,kBAAkB,UAAU,gBAAgB,mBAAmB;AAC3D,UAAA;AAAS;AAAA,eACN,aAAa;AACpB,UAAI,UAAU,OAAO,WAAW,GAAG,OAAO,iBAAkC,CAAC,GAAG;AAClE,kBAAA,UAAU,KAAK,aAAa,MAAM;AACxB;AACJ,wBAAA;AAChB;AAAA,MACJ;AAEoB;IACxB;AAEgB,oBAAA;AAEL,eAAA,cAAc,qBAAqB,UAAU,KAAK,aAAa,aAAa,IAAI,yBAAyB,aAAa;AAAA,EAAA;AAGrI,SAAO,OAAO;AAAA,IACV,QAAQ,EAAE,KAAK,MAAM,cAAc;AAAA,IACnC,QAAQ,EAAE,KAAK,MAAM,QAAQ;AAAA,IAC7B,SAAS,EAAE,OAAO,kBAAkB;AAAA,IACpC,QAAQ,EAAE,OAAO,iBAAiB;AAAA,EAAA,CACrC;AACL;AC1FA,MAAM,YAAY,CAAU,QAAyB,eAAyC;AACpF,QAAA,YAAY7C,EAAO,sBAAA,CAA0B;AAEnD8C,IAAgB,MAAM,UAAU,QAAQ,SAAS,CAAE,CAAA;AAEnD,SAAOvC,IAAQ,MAAM;AACP,cAAA,QAAQ,OAAO,QAAQ,UAAU;AAC3C,WAAO,UAAU,QAAQ;AAAA,EAAA,GAC1B,CAAC,QAAQ,UAAU,CAAC;AAC3B;AAEA,MAAA,cAAe;ACXG,IAAA,wCAAAwC,yBAAX;AACHA,uBAAA,SAAU,IAAA;AACVA,uBAAA,SAAU,IAAA;AAFIA,SAAAA;AAAA,GAAA,uBAAA,CAAA,CAAA;AAIlB,MAAM,oBAAoB,CAAChH,OAAa;AACpC,EAAAA,GAAE,yBAAyB;AAC/B;AACO,MAAM,kBAAkB,CAC3B,gBACA,UACA,qBACA,YACC;AACK,QAAA,MAAMiE,EAAoB,IAAI;AAEpC,QAAM,qBAAqBK;AAAAA,IACvB,CAACtE,OAAa;AACJ,YAAA,YAA2BA,GAAE;AAC/B,UAAA,EAAE,OAAO,IAAI;AAAU;AAC3B,UAAI,YAAY,WAA6B;AACzC,oBAAY,4BAA4B,SAAS;AAAA,MAAA,OAC9C;AACH,YAAI,UAAU,QAAQ;AACZ,gBAAA,WAAW,UAAU,KAAK,CAAS,UAAA,6BAAY,eAAe,KAAW,WAAW,IAAI,OAAY,CAAC;AACvG,cAAA,YAAY,CAAC,UAAU;AACvB,qBAAS,IAAI;AAAA,UACjB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,CAAC,KAAK,UAAU,OAAO;AAAA,EAAA;AAGrB,QAAA,yBAAyBiE,EAAO,kBAAkB;AAExDC,IAAU,MAAM;AACZ,WAAO,MAAM;AACT,UAAI,IAAI;AAAqB,oBAAA,OAAO,IAAI,OAAO;AAC/C,eAAS,oBAAoB,SAAS,uBAAuB,SAAS,IAAI;AAAA,IAAA;AAAA,EAElF,GAAG,CAAE,CAAA;AAELA,IAAU,MAAM;AACZ,aAAS,oBAAoB,SAAS,uBAAuB,SAAS,IAAI;AAC1E,2BAAuB,UAAU;AACjC,aAAS,iBAAiB,SAAS,uBAAuB,SAAS,IAAI;AACvE,QAAI,YAAY,WAA6B;AACzC,UAAI,IAAI,mBAAmB;AAAqB,oBAAA,IAAI,IAAI,SAAS,QAAQ;AAAA,IAC7E;AACA,WAAO,MAAM;AACT,UAAI,IAAI;AAAqB,oBAAA,OAAO,IAAI,OAAO;AAC/C,eAAS,oBAAoB,SAAS,uBAAuB,SAAS,IAAI;AAAA,IAAA;AAAA,EAE/E,GAAA,CAAC,oBAAoB,UAAU,OAAO,CAAC;AAE1CA,IAAU,MAAM;AACZ,QAAI,qBAAqB;AACrB,eAAS,oBAAoB,SAAS,uBAAuB,SAAS,IAAI;AAAA,IAAA,OACvE;AACH,eAAS,iBAAiB,SAAS,uBAAuB,SAAS,IAAI;AAAA,IAC3E;AAAA,EAAA,GACD,CAAC,mBAAmB,CAAC;AAEjB,SAAA+C;AAAAA,IACH3C;AAAAA,MACI,CAAC,SAAsB,aAAa;AAChC,YAAI,oBAAoB,SAAS;AACpB,mBAAA,oBAAoB,YAAY,mBAAmB,IAAI;AAAA,QACpE;AACA,YAAI,mBAAmB,SAAS;AAC5B,cAAI,CAAC,qBAAqB;AACd,oBAAA,iBAAiB,YAAY,mBAAmB,IAAI;AAC5D,gBAAI,UAAU;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,qBAAqB,OAAO;AAAA,IACjC;AAAA,IACA;AAAA,EAAA;AAER;AC3EO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,QAAQ,OAAO,EAAE;AAEnB,MAAM,aAAa,CAAC,mBAAmB,YAAY,YAAY,UAAU,QAAQ,SAAS,UAAU;AACpG,MAAM,qCAAqB;AAE3B,MAAM,OAAO,SAAS,UAAU,KAAK,KAAK,MAAM,UAAU,IAAI;AAE9D,MAAM,UAAU,CAAC,YAAkD,QAAQ,YAAY;AACvF,MAAM,UAAU,CAAC,YAAkD,QAAQ,OAAO,KAAK,QAAQ,SAAS;AACxG,MAAM,iBAAiB,CAAC,YAAkD;AACtE,QAAMQ,QAAQ,QAA6B;AAC3C,QAAM,OAAQ,QAA6B;AACrC,QAAA,uBAAuB,eAAe,IAAI,IAAuB;AAEnE,MAAA,eAAe,6DAAsB,IAAIA;AAEzC,MAAA,iBAAiB,UAAa,MAAM;AACpC,mBAAgB,KAAK,cAAc,2BAA2BA,KAAI,YAAY,KAA0B;AACzF,mBAAA,IAAI,OAAO,wBAAwB,oBAAI,IAAwC,GAAA,IAAIA,OAAM,YAAY,CAAC;AAAA,EACzH;AAEA,SAAO,iBAAiB;AAC5B;AAEA,MAAM,gBAAgB,CAAC,WAAsB,YAA8B;AACvE,aAAW,UAAU,SAAS;AACtB,QAAA,OAAO,SAAS,cAAc;AAC1B,UAAA,KAAK,OAAO,YAAY,CAAC,SAAe,gBAAgB,WAAW,WAAW,IAAe,CAAC;AAAU,eAAA;AACxG,UAAA,KAAK,OAAO,cAAc,CAAC,SAAe,UAAU,SAAS,IAAe,CAAC;AAAU,eAAA;AAAA,IAAA,WACpF,WAAW,OAAO,MAAiB;AAAU,aAAA;AAAA,aAC/C,UAAU,SAAS,OAAO,MAAiB;AAAU,aAAA;AAAA,EAClE;AACO,SAAA;AACX;AAEO,MAAM,gBAAgB,CAAC,cAAuB,SAAS,MAAM,qBAA+C;AAC/G,MAAI,gBAAgB;AAAkB,WAAA;AACtC,MAAI,oBAAoB;AAAW,WAAO,CAAC,CAAC,SAAS,iBAAiB,cAAc,aAAa,SAAS,aAAa;AAEvH,MAAI,gBAAgB,qDAAkB;AAEtC,SAAO,eAAe;AAClB,QAAI,kBAAkB;AAAoB,aAAA;AAC1C,oBAAgB,+CAAe;AAAA,EACnC;AAEO,SAAA;AACX;AAEa,MAAA,cAAc,CAAC,YACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAYQ,CAAC,QAAQ,QAAQ,SAAS;AAAA,CACf,mCAA8B;AAC/B,YAAY,KAAK,QAAQ,aAAa,OAAO,CAAW;AACvD,QAAQ,OAAO,KAAK,QAAQ;AAItC,MAAA,aAAa,CAAC,YACvB,EAES,QAAQ,OAAO,KAAK,CAAC,eAAe,OAAO;AAAA,CAC3C,mCAAyB,YAAW;AACrC,CAAC,YAAY,OAAO;AAIzB,MAAM,mBAAmB,MAAM;AAC5B,QAAA,WAAW,IAAI,iBAAiB,CAAA,YAAW,cAAc,WAAW,OAAO,KAAK,aAAA,CAAc;AACpG,QAAM,YAAuB,CAAA;AAE7B,MAAI,eAAe;AACnB,MAAI,OAAuB;AAErB,QAAA,UAAU,CAAC,kBAA0B;;AACvC,QAAI,gBAAgB;AAAG;AACvB,UAAM,mBAAmB,KAAK,IAAI,eAAe,UAAU,SAAS,CAAC;AACrE,QAAI,iBAAiB;AAAiC,qBAAA;AACrD,KAAAhE,MAAA,UAAU,YAAY,MAAtB,gBAAAA,IAAyC;AAAA,EAAM;AAGpD,QAAM,eAAe,MAAM;AACvB,cAAU,SAAS;AACnB,QAAI,EAAE,gBAAgB;AAAU;AAC3B,SAAA,iBAAiB,SAAS,EAAE,QAAQ,CAAA,kBAAiB,WAAW,aAAa,KAAK,UAAU,KAAK,aAAa,CAAC;AAChH,QAAA,CAAC,cAAc,IAAI;AAAG;AAC1B,iBAAa,UAAU,SAAS;AAAA,EAAA;AAG9B,QAAA,eAAe,OAAO,OAAO,MAAM;AAAA,IACrC,SAAS;AAAA,MACL,KAAK,MAAM,UAAU,YAAY,KAAK;AAAA,MACtC,KAAK,CAAC,0BAAmD;AACrD,YAAI,CAAC;AAAuB;AACxB,YAAA,CAAC,SAAS,qBAAqB;AAAG,iBAAO,QAAQ,UAAU,QAAQ,qBAAqB,CAAC;AACzF,YAAA,0BAA0B,CAAC,CAAC;AAAuB;AACvD,eAAO,QAAQ,IAAI,eAAe,uBAAuB,UAAU,MAAM,CAAC;AAAA,MAC9E;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF,KAAK,MAAM;AAAA,MACX,KAAK,CAAC,iBAAuB;AACzB,YAAI,iBAAiB;AAAM;AAE3B,gBAAQ,SAAS;AACV,eAAA,wBAAwB,UAAU,eAAe;AACxD,kBAAU,SAAS;AAEnB,YAAI,CAAC;AAAM;AAEX,iBAAS,QAAQ,MAAM;AAAA,UACnB,iBAAiB;AAAA,UACjB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,SAAS;AAAA,QAAA,CACZ;AAEY;MACjB;AAAA,IACJ;AAAA,IACA,WAAW,EAAE,OAAO,UAAU;AAAA,EAAA,CACjC;AAEM,SAAA;AACX;ACrJA,MAAM,eAAe,CAAC,gBAA+C,aAAsD;AACjH,QAAA,eAAemD,EAAO,KAAK;AAC3B,QAAA,eAAeA,EAAuB,IAAI;AAC1C,QAAA,wBAAwBA,EAAO,KAAK;AAC1C,QAAM,eAAeO,IAAQ,kBAAkB,CAAE,CAAA;AAE3C,QAAA,iBAAiBA,IAAQ,MAAM;AACjC,QAAI,uBAAuC;AACvC,QAAA;AAEJ,WAAO,CAAC,QAAe;AACnB,UAAI,QAAQ;AAAW,6BAAqB,GAAG;AAC/C,UAAI,UAAU,IAAI;AACX,aAAA,WAAW,YAAY,IAAI,eAAe;AACzC,YAAA,YAAY,OAAO,GAAG;AACC,iCAAA;AACvB,gBAAM,sBAAsB,MAAM;AAC9B,kBAAM,sBAAsB,MAAM;;AAC9B,kBAAI,aAAa,YAAY,wBAAwB,gCAAgC,aAAa;AAC7F,iBAAA1D,MAAA,aAAa,UAAU,yBAAvB,gBAAAA,IAA8C;AAAA,cACnD;AACuB,qCAAA;AACjB,oBAAA;AAAA,YAAA,CACT;AAAA,UAAA,CACJ;AACD;AAAA,QACJ;AACA,kBAAU,QAAQ;AAAA,MACtB;AAAA,IAAA;AAAA,EAER,GAAG,CAAE,CAAA;AAEC,QAAA,mBAAmBwD,IAAY,CAAC,QAAoB;AACzC,iBAAA,UAAU,aAAa,UAAU,IAAI;AAAA,EACtD,GAAG,CAAE,CAAA;AAEC,QAAA,oBAAoBA,IAAY,CAAC,QAAoB;AACvD,QAAI,aAAa,UAAU,SAAS,IAAI,aAAwB;AAAG;AACnE,QAAI,cAAc,IAAI,eAA0B,IAAI,aAA+B;AAAG;AACtF,QAAI,sBAAsB;AAAS;AAEnC,iBAAa,UAAU;AAEvB,0BAAsB,MAAM;AACxB,UAAI,aAAa;AAAmB,iBAAA,aAAa,UAAU,KAAM;AAAA,IAAA,CACpE;AAAA,EACL,GAAG,CAAE,CAAA;AAEC,QAAA,mBAAmBE,IAAQ,MAAM;AAC/B,QAAA;AAEJ,WAAO,CAAC,QAAuB;AAC3B,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACpB,+BAAqB,GAAa;AAClC,gBAAM,sBAAsB,MAAM;AAC9B,kBAAM,sBAAsB,MAAM;AAC9B,oCAAsB,UAAU;AAC1B,oBAAA;AAAA,YAAA,CACT;AAAA,UAAA,CACJ;AACD,gCAAsB,UAAU;AAChC;AAAA,MACR;AACI,UAAA,IAAI,SAAS,mBAAmB,KAAK;AACrC,YAAI,eAAe;AACN,qBAAA,UAAU,IAAI,WAAW,KAAK;AAAA,MAC/C,WAAW,IAAI,SAAS,mBAAmB;AAAQ,iBAAS,IAAI;AAAA,IAAA;AAAA,EAExE,GAAG,CAAE,CAAA;AAEE,SAAAyC;AAAAA,IACH3C,IAAY,CAAC,SAAS,aAAa;AAC/B,UAAI,oBAAoB,SAAS;AAC5B,iBAAyB,oBAAoB,WAAW,kBAAkB,IAAI;AAC9E,iBAAyB,oBAAoB,WAAW,kBAAkB,IAAI;AAC9E,iBAAyB,oBAAoB,YAAY,mBAAmB,IAAI;AAChF,gBAAwB,oBAAoB,SAAS,gBAAgB,IAAI;AAAA,MAC9E;AAEA,UAAI,mBAAmB,SAAS;AAC3B,gBAAwB,iBAAiB,WAAW,kBAAkB,IAAI;AAC1E,gBAAwB,iBAAiB,WAAW,kBAAkB,IAAI;AAC1E,gBAAwB,iBAAiB,YAAY,mBAAmB,IAAI;AAC5E,gBAAwB,iBAAiB,SAAS,gBAAgB,IAAI;AACvE,qBAAa,UAAU;AACvB,qBAAa,OAAO;AAAA,MACxB;AAAO,qBAAa,OAAO;AAAA,IAC/B,GAAG,EAAE;AAAA,IACL;AAAA,EAAA;AAER;AC5FA,MAAM,2BAA2B,MAAM;AAC7B,QAAA,0CAA0B;AAEhC,QAAM,2BAA2B,OAAO;AAAA,IACpC,QAAQ,WAAW,WAAY;AAC3B,aAAO,KAAK,gBAAgB;AAAA,IAAA,CACO;AAAA,EAAA,CAC1C;AAEK,QAAA,eAAe,CAAC,eAAiC;AAC/C,QAAA,mBAAmB,oBAAoB,IAAI,UAAU;AAEzD,QAAI,qBAAqB,QAAW;AAChC,YAAM,WAAW,IAAI;AAAA,QACjB,CAAW,YAAA;AACP,kBAAQ,QAAQ,CAAS,UAAA;AACjB,gBAAA;AAAY,yBAAW,KAAK;AAAA,UAAA,CACnC;AAAA,QACL;AAAA,QACA,EAAE,MAAM,MAAM,YAAY,IAAI,WAAW,CAAC,CAAC,EAAE;AAAA,MAAA;AAGjD,yBAAmB,WAAW,0BAA0B;AAAA,QACpD,kBAAkB,WAAW,UAAU;AAAA,QACvC,UAAU,WAAW,QAAQ;AAAA,MAAA,CAChC;AAEmB,0BAAA,IAAI,YAAY,gBAAgB;AAAA,IACxD;AAEO,WAAA;AAAA,EAAA;AAGL,QAAA,SAAS,CAAC,eAAiC;AACvC,UAAA,kBAAkB,oBAAoB,IAAI,UAAU;AAC1D,uDAAiB,SAAS;AAC1B,wBAAoB,OAAO,UAAU;AAAA,EAAA;AAGlC,SAAA;AACX,GAAG;AChDH,MAAM,kBAAkB,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAOM;AACF,QAAM,gBAAgB,+CAAe;AAErC,MAAI,aAAa;AACjB,MAAI,aAAa;AACX,QAAA,iBAAiB,cAAc;AAC/B,QAAA,eAAe,SAAS,KAAK,sBAAsB;AAEzD,QAAM,iBAAiB,mCAAS;AAChC,QAAM,oBAAoB,aAAa,OAAO,aAAa,QAAQ,IAAI,eAAe,cAAc;AACpG,QAAM,YAAY,eAAe,OAAO,eAAe,QAAQ,IAAI,eAAe,cAAc;AAChG,QAAM,YAAY,eAAe,MAAM,eAAe,SAAS,IAAI,eAAe,eAAe;AACjG,UAAQ,UAAU;AAAA,IACd,KAAK,yBAAyB;AACb,mBAAA,YACP,oBACA,YAAY,wBAAwB,UACpC,YAAY,OAAO,WACnB,iDAAgB,QAAO,OAAO;AACpC,oBAAa,iDAAgB,QAAM,iDAAgB,UAAS,OAAO,UAAU,OAAO,CAAC;AACrF;AAAA,IACJ,KAAK,yBAAyB;AAC1B,oBAAa,iDAAgB,SAAQ,OAAO,UAAU,QAAQ;AAC9D,oBAAa,iDAAgB,QAAM,iDAAgB,UAAS,OAAO,UAAU,OAAO,CAAC;AACrF;AAAA,IACJ,KAAK,yBAAyB;AACb,mBAAA,YAAY,wBAAwB,UAAU,YAAY,OAAO,UAAU,eAAe,OAAO,OAAO;AACrH,oBAAa,iDAAgB,QAAM,iDAAgB,gBAAe,OAAO,UAAU,OAAO,CAAC;AAC3F;AAAA,IACJ,KAAK,yBAAyB;AAC1B,mBAAa,eAAe,OAAO,eAAe,QAAQ,OAAO,UAAU,OAAO,CAAC;AAE/E,mBAAA,YAAY,wBAAwB,UAC9B,YAAY,OAAO,WACnB,iDAAgB,QAAM,iDAAgB,UAAS,IAAI,OAAO;AACpE;AAAA,IACJ,KAAK,yBAAyB;AAC1B,oBAAa,iDAAgB,SAAO,mCAAS,eAAc,OAAO,UAAU,OAAO,CAAC;AAEhF,mBAAA,YAAY,wBAAwB,UAC9B,YAAY,OAAO,WACnB,iDAAgB,OAAM,OAAO,WAAU,iDAAgB,UAAS;AAC1E;AAAA,EACR;AAEA,QAAM,SAAS,CAAC,YAAY,YAAY,CAAC;AAEzC,QAAM,MAAM,OAAO,OAAO,CAAC,KAAK,YAAY9C,WAAU;AAClD,QAAIA,WAAU,GAAG;AACN,aAAA,MAAM,GAAG,UAAU;AAAA,IACnB,WAAAA,WAAU,OAAO,SAAS,GAAG;AAC7B,aAAA,MAAM,IAAI,UAAU;AAAA,IAAA,OACxB;AACI,aAAA,MAAM,IAAI,UAAU;AAAA,IAC/B;AAAA,KACD,cAAc;AAEjB,SAAO,8DAA8D,GAAG;AAC5E;AACA,MAAM,uBAAuB,CACzB,QACA,eACA,SACA,UACA,UACA,kBACA,aACA,aACA,QACC;AACD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIwC,EAAS,IAAI;AACrD,QAAA,CAAC,aAAa,cAAc,IAAIA,EAAS,cAAc,CAAC,cAAc,CAAC,CAAC,QAAQ;AACtF,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,EAAS,YAAY,yBAAyB,GAAG;AAC/F,QAAM,CAAC,kBAAkB,kBAAkB,IAAIA,EAAoD,CAAE,CAAA;AAErG,QAAM,mBAAmBM;AAAAA,IACrB,CAAC,UAAqC;AAClC,UAAI,MAAM,sBAAsB;AAAG,eAAO,eAAe,IAAI;AAC7D,UAAI,CAAC,mBAAmB,MAAM,sBAAsB,GAAG;AACnD,YAAI,oBAAoB,iBAAiB,YAAY,cAAc,IAAI,IAAI;AACvE,gBAAM,UAAU,iBAAiB,OAAO,CAAC,KAAK,QAAQ;AAClD,gBAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAAU,qBAAA;AACrB,mBAAA;AAAA,UAAA,GACR,iBAAiB,CAAC,CAAE;AACJ,6BAAA,QAAQ,CAAC,CAAC;AAC7B,yBAAe,IAAI;AACnB;AAAA,QACJ;AACA,uBAAe,KAAK;AACpB,gBAAQ,iBAAiB;AAAA,UACrB,KAAK,yBAAyB;AACP,+BAAA,CAAAxE,WAAS,CAAC,GAAGA,QAAO,CAAC,yBAAyB,KAAK,MAAM,iBAAiB,CAAC,CAAC;AAC/F,+BAAmB,yBAAyB,MAAM;AAClD;AAAA,UACJ,KAAK,yBAAyB;AACP,+BAAA,CAAAA,WAAS,CAAC,GAAGA,QAAO,CAAC,yBAAyB,QAAQ,MAAM,iBAAiB,CAAC,CAAC;AAClG,+BAAmB,cAAc,yBAAyB,cAAc,yBAAyB,KAAK;AACtG;AAAA,UACJ,KAAK,yBAAyB;AACP,+BAAA,CAAAA,WAAS,CAAC,GAAGA,QAAO,CAAC,yBAAyB,QAAQ,MAAM,iBAAiB,CAAC,CAAC;AAClG,+BAAmB,yBAAyB,KAAK;AACjD;AAAA,UACJ,KAAK,yBAAyB;AACP,+BAAA,CAAAA,WAAS,CAAC,GAAGA,QAAO,CAAC,yBAAyB,OAAO,MAAM,iBAAiB,CAAC,CAAC;AACjG,+BAAmB,yBAAyB,IAAI;AAChD;AAAA,UACJ,KAAK,yBAAyB;AACP,+BAAA,CAAAA,WAAS,CAAC,GAAGA,QAAO,CAAC,yBAAyB,MAAM,MAAM,iBAAiB,CAAC,CAAC;AAChG,+BAAmB,yBAAyB,GAAG;AAC/C;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,CAAC,iBAAiB,kBAAkB,iBAAiB,WAAW;AAAA,EAAA;AAE9D,QAAA,sBAAsBmE,EAAO,gBAAgB;AAEnDC,IAAU,MAAM;AACY,4BAAA,oBAAoB,OAAO,EAAE,OAAO;AAC5D,wBAAoB,UAAU;AAAA,EAAA,GAC/B,CAAC,gBAAgB,CAAC;AAEd,SAAA+C;AAAAA,IACH3C;AAAAA,MACI,CAAC,SAAS,aAAa;;AACf,YAAA,aAAa,CAAC,YAAY,cAAc;AAClC,gBAAA,WAAW,wBAAwB,gBAAgB,EAAE;AAC3D,mBAAS,UAAU,QAAQ;AAAA,QAC/B;AAEI,YAAA,WAAW,cAAc,SAAS;AAC9B,cAAA,CAAC,YAAY,aAAa;AACpB,kBAAA,WAAW,wBAAwB,gBAAgB,EAAE;AAC3D,qBAAS,QAAQ,OAAO;AAAA,UAC5B;AACA,cAAI,EAAE,mBAAmB;AAAU;AACnC,gBAAM,eAAe,gBAAgB;AAAA,YACjC,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,WAAW,eAAe;AAAA,UAAA,CAC7B;AACK,gBAAA,QAAQ,cAAc,eAAe,wBAAwB;AAEnE,gBAAM,iBAAiB,mBACjB,QAAQ,oCAAkCxD,MAAA,cAAc,YAAd,gBAAAA,IAAuB,eAAc,OAC/E;AACN,kBAAQ,aAAa,SAAS,GAAG,cAAc,EAAE;AAE7C,cAAA;AAAiB,+BAAmB,KAAK;AAE7C,cAAI,WAAW,YAAY,wBAAwB,WAAW,UAAU;AAC3D,aAAAc,MAAA,SAAA,YAAA,gBAAAA,IAAS,aAAa,0BAA0B;AAAA,UAC7D;AAAA,QACJ;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IACA;AAAA,EAAA;AAER;AClMA,IAAI,YAAY,KAAK;AAER,MAAA,cAAc,CAAC,SAAS,YAAY;AAChC,eAAA;AACN,SAAA,GAAG,MAAM,IAAI,SAAS;AACjC;ACDA,MAAM,sBAAsB,CAAC,QAAwC;AACjE,QAAMsF,MAAKjD;AAEJ,SAAAgD;AAAAA,IACH3C;AAAAA,MACI,CAAC,SAAS,aAAa;AACnB,YAAI,oBAAoB,WAAW,SAAS,OAAO4C,IAAG;AAAS,mBAAS,KAAK;AAC7E,YAAI,EAAE,mBAAmB;AAAU;AACnC,gBAAQ,KAAKA,IAAG,YAAYA,IAAG,UAAU,YAAY,UAAU;AAAA,MACnE;AAAA,MACA,CAAC,GAAG;AAAA,IACR;AAAA,IACA;AAAA,EAAA;AAER;;ACWA,MAAM,4BAA4B,CAAC,SAAkB;;AAC7C,MAAA;AACE,QAAA,YAAWpG,MAAA,KAAK,cAAc,IAAI,yBAAyB,EAAE,MAAlD,gBAAAA,IAAqD,iBAAiB;AACvF,MAAI,UAAU;AACV,UAAM,UAAU,KAAK,KAAK,UAAU,CAAQ,SAAA;AACxC,UAAI,YAAY,IAAI;AAAG,eAAQ,YAAY;AAAA,IAAA,CAC9C;AACM,WAAA;AAAA,EACX;AACO,SAAA;AACX;AAEA,MAAM,kBAAkB,CAAC,YAAuE;AAC5F,SAAO,YAAY,wBAAwB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AACxF;AAEA,SAAS,QAAQ;AAAA,EACb;AAAA,EACA,mBAAmB;AAAA,EACnB,gBAAgB,yBAAyB;AAAA,EACzC,UAAU,wBAAwB;AAAA,EAClC;AAAA,EACA,MAAAqG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACP,GAAoC;AAC1B,QAAA,gBAAgB5C,IAAQ,MAAM,WAAW4C,QAAO,KAAK,gBAAgB,OAAO,CAACA,UAAS,WAAW,CAAC;AACxG,QAAM,WAAW;AACjB,QAAM,cAAcnD;AAEpB,QAAM,mBAAmBK;AAAAA,IACrB,CAAC,0BAAmC;;AAChC,MAAA8C,YAAWA,SAAQ;AACnB,UAAI,uBAAuB;AACtB,SAAAtG,MAAA,+CAAe,YAAf,gBAAAA,IAAwC;AAAA,MAC7C;AAAA,IACJ;AAAA,IACA,CAACsG,UAAS,aAAa;AAAA,EAAA;AAG3B,QAAM,YAAY9C;AAAAA,IACd,CAACtE,OAAqB;AACd,UAAAA,GAAE,SAAS,mBAAmB,QAAQ;AACtC,QAAAoH,YAAWA,SAAQ;AAClB,SAAA,+CAAe,SAAwB;MAC5C;AAAA,IACJ;AAAA,IACA,CAACA,UAAS,aAAa;AAAA,EAAA;AAGrB,QAAA,kBAAkBnD,EAAO,SAAS;AACxC,QAAM,qBAAqBA;AAE3B,QAAM,+BAA+B;AAAA,IACjC,qBAAqB,gBAAgB,OAAO,GAAG,eAAe,SAAS,UAAU,UAAU,kBAAkB,aAAa,WAAW;AAAA,IACrImD;AAAA,IACA,YAAY,wBAAwB,WAAW,CAACD;AAAA,IAChD,oBAAoB;AAAA,EAAA;AAExB,QAAM,0BAA0B,aAAa,mBAAmB,OAAO,8BAA8B,gBAAgB;AAErH,QAAM,iBAAiBF;AAAAA,IACnB3C;AAAAA,MACI,CAAW,YAAA;AACP,YAAI,mBAAmB,SAAS;AAC5B,+BAAqB,mBAAmB,OAAQ;AAE7B,6BAAA,UAAU,sBAAsB,MAAM;AACrD,gBAAI,YAAY,YAAY6C;AAAM;AAC9B,gBAAA,EAAE,YAAY,UAAUA;AAAO;AAC7B,kBAAA,YAAY,0BAA0B,OAAO;AACnD,mDAAW;AAAA,UAAM,CACpB;AAAA,QACL;AAAA,MACJ;AAAA,MACA,CAACA,KAAI;AAAA,IACT;AAAA,IACA,mBAAmB,+BAA+B;AAAA,EAAA;AAGhD,QAAA,uBAAuB,oBAAoB,cAAc;AAE/D,QAAM,qBAAqB3C;AAAAA,IACvB,OAAO;AAAA,MACH,CAAC,GAAG,yBAAyB,UAAU,GAAG,kBAAkB,qBAAqB;AAAA,MACjF,CAAC,GAAG,yBAAyB,gBAAgB,GAAG,CAAC,CAAC;AAAA,MAClD,CAAC,GAAG,yBAAyB,QAAQ,GAAG,kBAAkB,qBAAqB;AAAA,MAC/E,CAAC,GAAG,yBAAyB,eAAe,GAAG;AAAA,MAC/C,CAAC,GAAG,yBAAyB,iBAAiB,GAAG;AAAA,MACjD,CAAC,GAAG,yBAAyB,cAAc,GAAG;AAAA,IAAA;AAAA,IAElD,CAAC,eAAe,SAAS,cAAc,YAAY,WAAW;AAAA,EAAA;AAGlEN,IAAU,MAAM;AACH,aAAA,oBAAoB,WAAW,gBAAgB,OAAO;AAC/D,aAAS,iBAAiB,WAAY,gBAAgB,UAAU,SAAU;AAC1E,WAAO,MAAM,SAAS,oBAAoB,WAAW,gBAAgB,OAAO;AAAA,EAAA,GAC7E,CAAC,SAAS,CAAC;AAER,QAAA,sBACF,YAAY,wBAAwB,UAAU,4BAA4B,GAAG,yBAAyB,IAAI,2BAA2B;AACzI,QAAM,6BAA6B,YAAY,wBAAwB,UAAU,4BAA4B,GAAG,yBAAyB;AAElI,SAAAmD;AAAAA,IACHlD,oBAAA4B,KAAA,EACK,kBAEQD,oBAAAC,KAAA,EAAA,UAAA;AAAA,MAAe,eAAA5B,oBAAC,OAAI,EAAA,WAAU,4BAA4B,CAAA;AAAA,MAC3D2B;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,IAAG;AAAA,UACH,KAAK;AAAA,UACJ,GAAG;AAAA,UACJ,WAAWwB,GAAW,qBAAqB,oBAAoB,kBAAkB;AAAA,UACjF,OAAO,EAAE,YAAY,SAAS;AAAA,UAC9B,MAAM,kBAAkB,SAAS,YAAY,wBAAwB,UAAU,WAAW;AAAA,UAExF,UAAA;AAAA,aAAS,SAAA,kBACNxB,oBAAA,OAAA,EAAI,WAAW,mBAAmB,0BAA0B,WAAW,CAAC,wBAAwB,CAAC,GAC7F,UAAA;AAAA,cAAA,6BACI,OAAI,EAAA,WAAW,gCACZ,UAAC3B,oBAAAoD,gBAAA,EAAa,OAAc,EAChC,CAAA;AAAA,cAEH,iBAAiBpD,oBAACqD,wBAAqB,EAAA,SAASJ,SAAU,CAAA;AAAA,YAAA,GAC/D;AAAA,YAEH,YAEOtB,oBAAAC,KAAA,EAAA,UAAA;AAAA,cAAA5B;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACG,WAAWmD,GAAW,4BAA4B;AAAA,oBAC9C,CAAC,GAAG,yBAAyB,gBAAgB,GAAG;AAAA,oBAChD,CAAC,GAAG,yBAAyB,WAAW,GAAG;AAAA,kBAAA,CAC9C;AAAA,kBAEA;AAAA,gBAAA;AAAA,cACL;AAAA,cACC,YAAY,wBAAwB,WAChCnD,oBAAA,QAAA,EAAK,0BAAuB,UAAS,KAAK,UAAU,WAAU,0BAA0B,CAAA;AAAA,YAAA,GAEjG;AAAA,YAEH,WACIA,oBAAA,OAAA,EAAI,WAAW,0BACZ,8BAACsD,iBAAc,EAAA,SAAkB,QAAQ,cAAA,CAAe,EAC5D,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAER;AAAA,IAAA,EACJ,CAAA,IACA,MACR;AAAA,IACA,SAAS,qBAAqB,MAAM,EAAE,CAAC;AAAA,EAAA;AAE/C;ACzLO,MAAM,sBAAsB,MAG9B;AACD,QAAM,CAAC,WAAW,YAAY,IAAIlD,kBAAgB;AAC5C,QAAA,cAAcD,IAAY,MAAM,aAAa,IAAI,GAAG,CAAC,YAAY,CAAC;AAClE,QAAA,cAAcA,IAAY,MAAM,aAAa,KAAK,GAAG,CAAC,YAAY,CAAC;AAEzE,QAAM,YAAYA;AAAAA,IACd,CAAC,QAAuB;AACpB,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK,mBAAmB;AACR;AACZ;AAAA,MAGR;AAAA,IACJ;AAAA,IACA,CAAC,WAAW;AAAA,EAAA;AAGT,SAAA;AAAA,IACH,WAAW;AAAA,MACP,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,EAAA;AAER;;AC5BA,MAAM,WAAW,CAAC,YAAiC;AAC/C,SAAO,OAAO,YAAY;AAC9B;AAEa,MAAA,UAAU,CAAC,EAAE,SAAS,UAAU,YAAY,aAAa,UAAU,qBAAqB,YAA6C;;AAC9I,QAAM,gBAAgB;AACtB,QAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AACvD,QAAM,EAAE,WAAW,UAAU,IAAI,oBAAoB;AAEjD,MAAA;AAAc,sCAAU,SAAS,CAAA;AAErC,SAESwB,oBAAAC,KAAA,EAAA,UAAA;AAAA,IAAA,WACK2B,IAAa,UAAU;AAAA,MACnB,GAAG,qCAAU;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,MACV,KAAK;AAAA,MACL,aAAW5G,MAAA,qCAAU,UAAV,gBAAAA,IAAiB,aACtBwG,GAAW,IAAG1F,MAAA,qCAAU,UAAV,gBAAAA,IAAiB,SAAS,6BAA6B;AAAA,QACjE,sCAAsC;AAAA,MACzC,CAAA,IACD0F,GAAW,4BAA4B,EAAE,qCAAqC,oBAAoB;AAAA,MACxG,GAAG;AAAA,MACH,oBAAoB,YAAWzF,MAAA,cAAc,YAAd,gBAAAA,IAAuB,EAAE;AAAA,IAC3D,CAAA,IACD;AAAA,KAEJ,aAAa,gBACXsC;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,SAAS,wBAAwB;AAAA,QACjC,eAAgB,cAAc;AAAA,QAC9B;AAAA,QACA,MAAM,aAAa;AAAA,QAEnB,UAAGA,oBAAA4B,KAAA,EAAA,UAAA,WAAW,SAAS,OAAO,IAAK5B,oBAAA6B,cAAA,EAAW,SAAS,kBAAkB,SAAU,UAAA,SAAQ,IAAgB,EAAE,WAAU;AAAA,MAAA;AAAA,IAC3H;AAAA,EAER,EAAA,CAAA;AAER;ACnDA,SAAS,SAAS,EAAE,OAAAlG,QAAO,sBAAqC;AACtD,QAAA,EAAE,SAASuF;AAEX,QAAA,aAAa,WAAWvF,MAAK;AAEnC,oCAES,UAAK,KAAA,IAAI,UAAU,yBACf,SAAQ,EAAA,SAAS,KAAK,IAAI,UAAU,GAAG,oBACpC,8BAAC,QAAM,EAAA,UAAAA,OAAA,CAAM,EACjB,CAAA,EAER,CAAA;AAER;;AChBA,SAAwB,aAAa,EAAE,UAAU,GAAG,SAAkE;AAE9G,SAAAqE,oBAAC,QAAG,MAAK,QAAO,WAAU,4BAA4B,GAAG,OACpD,SACL,CAAA;AAER;ACJO,MAAM,aAAa,CAIxB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAKM;AACF,oCAES,UAAQ,QAAA,IAAI,CAAC,EAAE,UAAU;AACtB,QAAI,2CAAc;AACd,aACKA,oBAAA,cAAA;AAAA,QAAa,mBAAiB,OAAO,GAAG;AAAA;AAAA,QAGjC,UAAA,YAAY,GAAG,EAAG;AAAA,UACd;AAAA,UACA,OAAO,KAAK,GAAG;AAAA,UACf;AAAA,UACA;AAAA,QAAA,CACI;AAAA,MAAA,GARiC,GAUjD;AAIJ,WAAAA,oBAAC,gBAAa,mBAAiB,OAAO,GAAG,GACpC,UAAA,KAAK,GAAG,EAAA,GADoC,GAEjD;AAAA,EAEP,CAAA,EACL,CAAA;AAER;ACvCO,MAAM,YAAY,CAKvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAA2F;AACjF,QAAA,EAAE,SAASkB;AACjB,SAESlB,oBAAA4B,KAAA,EAAA,UAAA,6BAAM,IAAI,CAAC,MAAMvE,WACd2C;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MAEV,cAAc,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAW3C,MAAK,IAAI;AAAA,MAChF,SAAS,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAWA,MAAK,IAAI;AAAA,MAC3E,cAAc,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAA,IAAe;AAAA,MAC3E,QAAQ,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAA,IAAe;AAAA,MAErE,8BAAC,YAAwC,EAAA,SAAkB,aAA0B,MAAY,UAAUA,QAAO;AAAA,IAAA;AAAA,IAN7G;AAAA,EAQZ,GACL,CAAA;AAER;AC7BO,MAAM,yBAAyB,CAAC,EAAE,gBAAuC;AACtE,QAAA,CAAC6C,QAAO,QAAQ,IAAIiB;AAAAA,IACtB,CAAC,cAAc,WAAW;AACtB,YAAM,QAAQ;AAEd,UAAI,QAAQ,GAAG;AACX,cAAM,YAAY,OAAO;AAErB,YAAA,YAAY,SAAS,aAAc,GAAG;AAClC,cAAA,OAAO,SAAS,UAAU;AAC1B,mBAAO,OAAO,OAAO,EAAE,GAAG,cAAc,OAAO,OAAO,SAAS,GAAG,aAAa,OAAO,MAAO,CAAA;AAAA,UAAA,OAC1F;AACI,mBAAA,OAAO,OAAO,EAAE,GAAG,cAAc,OAAO,OAAO,SAAS,GAAG,aAAa,GAAI,CAAA;AAAA,UACvF;AAAA,QACJ;AAAA,MACJ;AACO,aAAA;AAAA,IACX;AAAA,IACA;AAAA,EAAA;AAGJ,QAAM,MAAM2B;AAAAA,IACR3C;AAAAA,MACI,CAAW,YAAA;;AACP,YAAI,EAAE,mBAAmB;AAAU;AAEnC,cAAM,cAAc,QAAQxD,MAAA,QAAwB,YAAxB,gBAAAA,IAAiC,KAAK;AAElE,YAAKuD,OAAM,gBAAgB,MAAM,gBAAgB,KAAM,gBAAgBA,OAAM,OAAO;AACxE,kBAAA,aAAa,YAAY,GAAG;AAAA,QAAA,OACjC;AACK,kBAAA,aAAa,YAAY,IAAI;AAAA,QACzC;AACI,YAAA,gBAAgBA,OAAM,aAAa;AAClC,6CAAyB;AAAA,QAC9B;AAAA,MACJ;AAAA,MACA,CAACA,OAAM,aAAaA,OAAM,KAAK;AAAA,IACnC;AAAA,EAAA;AAGJ,QAAM,mBAAmBC;AAAAA,IACrB,CAAC,QAAuB;;AACd,YAAA,UAASxD,MAAA,IAAI,WAAJ,gBAAAA,IAA4B,eAAc;AACzD,UAAI,CAAC,OAAO;AACJ,YAAA,IAAI,SAAS,mBAAmB,YAAY;AACnC,mBAAA;AAAA,YACL,MAAM;AAAA,YACN,OAAOuD,OAAM;AAAA,UAAA,CAChB;AAAA,QACL;AACA;AAAA,MACJ;AACA,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACX,mBAAA;AAAA,YACL,MAAM;AAAA,YACN,OAAO,IAAI,SAAS,mBAAmB,aAAaA,OAAM,QAAQ,IAAIA,OAAM,QAAQ;AAAA,UAAA,CACvF;AACD;AAAA,QACJ,KAAK,mBAAmB;AACX,mBAAA;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,UAAA,CACV;AACD;AAAA,QACJ,KAAK,mBAAmB;AACX,mBAAA;AAAA,YACL,MAAM;AAAA,YACN,OAAO,YAAY;AAAA,UAAA,CACtB;AACD;AAAA,QACJ,KAAK,mBAAmB;AACnB,WAAAzC,MAAA,IAAI,kBAAJ,gBAAAA,IAAmC;AACpC;AAAA,QACJ;AACI;AAAA,MACR;AACA,UAAI,gBAAgB;AAAA,IACxB;AAAA,IAEA,CAAC,WAAWyC,OAAM,KAAK;AAAA,EAAA;AAG3B,QAAM,iBAAiBC;AAAAA,IACnB,CAAC9C,WAAkB,CAAC,QAAe;;AACzB,YAAA,UAASV,MAAA,IAAI,WAAJ,gBAAAA,IAA4B,eAAc;AACrD,UAAA,CAAC,SAASuD,OAAM,UAAU;AAAI,iBAAS,EAAE,MAAM,WAAW,OAAA7C,OAAc,CAAA;AAAA,IAChF;AAAA,IACA,CAAC6C,OAAM,KAAK;AAAA,EAAA;AAGhB,SAAO,EAAE,WAAW,EAAE,kBAAkB,eAAe,GAAG,KAAK,aAAaA,OAAM,aAAa,cAAcA,OAAM,MAAM;AAC7H;AC3FO,MAAM,kBAAkB,CAK7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAuE;AACnE,QAAM,kBAAkBC;AAAAA,IACpB,CAAC,SAAwB,MAAM,yCAAY,UAAS,yCAAY,kBAAiB,KAAK,WAAW,cAAc,IAAI;AAAA,IACnH,CAAC,UAAU;AAAA,EAAA;AAGT,QAAA,EAAE,SAASe;AAEX,QAAA,EAAE,cAAc,WAAW,QAAQ,uBAAuB,EAAE,YAAW,6BAAM,WAAU,EAAG,CAAA;AAEhG,SAESlB,oBAAA4B,KAAA,EAAA,UAAA,6BAAM,IAAI,CAAC,MAAMvE,WACd2C;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,cAAc,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAW3C,MAAK,IAAI;AAAA,MAChF,SAAS,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAWA,MAAK,IAAI;AAAA,MAC3E,cAAc,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAA,IAAe;AAAA,MAC3E,QAAQ,KAAK,IAAI,WAAW,6BAAM,QAAQ,EAAE,IAAI,MAAM,WAAA,IAAe;AAAA,MACrE;AAAA,MACA,iBAAeA,WAAU;AAAA,MACzB,cAAYA;AAAA,MACZ,WAAU;AAAA,MAEV,SAAS,gBAAgB,IAAI;AAAA,MAC7B,gBAAgB,UAAU,eAAeA,MAAK;AAAA,MAC9C,kBAAkB,UAAU;AAAA,MAE5B,8BAAC,YAAW,EAAA,SAAkB,aAA0B,MAAY,UAAUA,QAAO;AAAA,IAAA;AAAA,IALhF;AAAA,EAOZ,GACL,CAAA;AAER;AC/CY,IAAA,qCAAAmG,sBAAL;AACHA,oBAAA,QAAS,IAAA;AACTA,oBAAA,OAAQ,IAAA;AAFAA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;ACAZ,MAAM,eAAe,CAAC,EAAE,eAAe,SAAS,0BAAoG;AAC1I,QAAA,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAM,GAAA,CAAC1G,IAAGO,WAAUA,MAAK;AACrD,QAAA,UAAU,MAAM,KAAK,EAAE,QAAQ,cAAiB,GAAA,CAACP,IAAGO,WAAUA,MAAK;AACzE,SAESsE,oBAAAC,KAAA,EAAA,UAAA;AAAA,IAAA,KAAK,IAAI,CAAC9E,IAAGe,OACVmC,oBAAC,QAAG,WAAU,2BACT,UAAQ,QAAA,IAAI,CAAClD,KAAGO,WACZ2C,oBAAA,MAAA,EAAqD,WAAU,8DAC5D,UAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAW,GAAG;AAAA,UACV,gGAAgG;AAAA,UAChG,kCAAkC,CAAC;AAAA,QAAA,CACtC;AAAA,MAAA;AAAA,IAAA,KALA,oCAAoC3C,MAAK,EAOlD,CACH,EAVwC,GAAA,mCAAmCQ,EAAC,EAWjF,CACH;AAAA,IACA,CAAC,WAAW,uBAAuB;AAAA,EACxC,EAAA,CAAA;AAER;;AC1BA,MAAe,YAAA;ACUR,MAAM,yBAAyB;AAAA,EAClC,IAAI;AAAA,EACJ,IAAI;AACR;AAaO,MAAM,sBAAsB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAgC;AACtB,QAAA,EAAE,SAASqD;AACX,QAAA,EAAE,eAAeD;AACvB,QAAM,gBAAgBd;AAAAA,IAClB,CAAC,iBAAoD;AAC7C,UAAA,MAAM,QAAQ,YAAY,GAAG;AAC7B,eAAO,aAAa;AAAA,UAAI,CAACsD,UAAS5F,OAC9BA,OAAM,IAEG8D,oBAAAC,KAAA,EAAA,UAAA;AAAA,YAAA,KAAK,IAAI6B,QAAO;AAAA,YAChB,qBAAqB,kBAAkBA,QAAO,KAAQzD,oBAAA4B,KAAA,EAAA,UAAA,kBAAkB6B,QAAO,GAAE;AAAA,UAAA,EAAA,CACtF,IAGI9B,oBAAAC,KAAA,EAAA,UAAA;AAAA,YAAA5B,oBAAC,MAAG,EAAA;AAAA,YACH,KAAK,IAAIyD,QAAO;AAAA,YAChB,qBAAqB,kBAAkBA,QAAO,KAAQzD,oBAAA4B,KAAA,EAAA,UAAA,kBAAkB6B,QAAO,GAAE;AAAA,UAAA,GACtF;AAAA,QAAA;AAAA,MAGZ;AACO,aAAA,KAAK,IAAI,YAAY;AAAA,IAChC;AAAA,IACA,CAAC,MAAM,iBAAiB;AAAA,EAAA;AAG5B,6BACK,OAAI,EAAA,WAAW,kCAAkC,WAAW,6CAA6C,EAAE,IACtG,UAAA;AAAA,KAAA,gBAAgB,eAAe,cAC7BzD,oBAAC,SAAI,WAAU,gDACX,8BAAC,WACG,EAAA,UAAA;AAAA,MAACA,oBAAA,UAAA,EAAO,MAAK,iBAAgB,OAAO,eAAe,uBAAuB,EAAE,OAAO,QAAQ,aAAc,CAAA;AAAA,MACzGA,oBAAC,UAAO,EAAA,MAAK,iBAAgB,OAAO,eAAe,uBAAuB,EAAE,OAAO,QAAQ,YAAa,CAAA;AAAA,MACxGA,oBAAC,SAAI,QAAQ,gBAAgB,WAAW,KAAK,KAAK,IAAI,2BAA2B,GAAG;AAAA,IAAA,EAAA,CACxF,EACJ,CAAA;AAAA,IAEJA,oBAAC6B,gBAAW,SAAS,kBAAkB,OAAQ,UAAK,KAAA,IAAI,KAAK,GAAE;AAAA,IAC9D,+BAAYA,cAAW,EAAA,SAAS,kBAAkB,MAAO,UAAA,cAAc,OAAO,GAAE;AAAA,KAE/E,oBAAoB,qBACjBF,oBAAA,OAAA,EAAI,WAAW,0CACX,UAAA;AAAA,MAAA,wCAAqBI,UAAO,EAAA,SAAS,kBAAmB,UAAK,KAAA,IAAI,mBAAmB,GAAE;AAAA,MACtF,CAAC,oBAAoB,oBAAqB/B,oBAAA+B,UAAA,EAAO,SAAS,YAAa,UAAA,KAAK,IAAI,SAAS,EAAE,CAAA;AAAA,IAAA,GAChG;AAAA,EAER,EAAA,CAAA;AAER;ACpFA,MAAe,iBAAA;ACWF,MAAA,gBAAgB,OAAO,OAAO;AAAA,EACvC,aAAa;AAAA,EACb,OAAO;AACX,CAAC;AAuBD,SAAS,SAKP,EAAE,cAAc,GAAG,SAAmE;;AAC9E,QAAA,WAAW9B,IAAa,MAAM,QAAQ;AACtC,QAAA,SAAS,SAAS,KAAK,CAAC,WAA2B,+BAAgB,aAAY,cAAc;AAC7F,QAAA,YAAY,CAAC,MAAM,aAAWtD,MAAA,MAAM,SAAN,gBAAAA,IAAY,YAAW,KAAK,CAAC,MAAM;AACvE,QAAM,cAAc0D,IAAQ,MAAO,CAAC,MAAM,WAAW,aAAc,MAAM,OAAO,CAAC,WAAW,MAAM,OAAO,MAAM,OAAO,CAAC;AAGnH,SAAAL;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW0B,GAAW,sBAAsB;AAAA,QACxC,iCAAiC,MAAM;AAAA,QACvC,+BAA+B,MAAM;AAAA,QACrC,kCAAkC,MAAM;AAAA,QACxC,+BAA+B,MAAM;AAAA,QACrC,6BAA6B,aAAa,MAAM;AAAA,MAAA,CACnD;AAAA,MAED,UACIC,oBAAAC,KAAA,EAAA,UAAA;AAAA,QAACD,oBAAA,OAAA,EAAI,WAAU,qCACX,UAAA;AAAA,UAACA,oBAAA,SAAA,EAAM,WAAU,6BACb,UAAA;AAAA,YAAA3B,oBAAC,SAAM,EAAA,WAAU,4BACb,UAAAA,oBAAC,MAAG,EAAA,MAAK,aAAY,WAAU,2BAC1B,UAAA,MAAM,QAAQ,IAAI,CACf,SAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,IAAI,OAAO,KAAK,GAAG;AAAA,gBACnB,WAAW0B,GAAW,8DAA8D;AAAA,kBAChF,mCAAmC,KAAK,aAAa,iBAAiB;AAAA,kBACtE,oCAAoC,KAAK,aAAa,iBAAiB;AAAA,gBAAA,CAC1E;AAAA,gBAGA,UAAK,KAAA;AAAA,cAAA;AAAA,cAFD,KAAK;AAAA,YAAA,CAIjB,GACL,EACJ,CAAA;AAAA,YAEC1B,oBAAA,cAAA,EAAyD,GAAG,OAAO,UAAsB,CAAA;AAAA,UAAA,GAC9F;AAAA,UACC,gBACI,MAAM,SAAS,eACZ,aAEA,IAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,SAAOvC,MAAA,MAAM,sBAAN,gBAAAA,IAAyB,UAAS;AAAA,cACzC,UAASC,MAAA,MAAM,sBAAN,gBAAAA,IAAyB;AAAA,cAClC,cAAc;AAAA,cACd,UAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ,GAEZ;AAAA,QACC;AAAA,MAAA,GACL;AAAA,IAAA;AAAA,EAAA;AAGZ;AAEA,SAAS,aAKP,OAA0F;AACxF,QAAM,eAAe2C,IAAQ,MAAM,MAAM,WAAW,MAAM,aAAa,MAAM,OAAO,CAAC,MAAM,WAAW,MAAM,OAAO,MAAM,OAAO,CAAC;AAEjI,6BACK,SAAM,EAAA,WAAWqB,GAAW,0BAA0B,GAClD,yBACI1B,oBAAA,cAAA,EAAa,eAAe,MAAM,QAAQ,QAAQ,SAAS,MAAM,SAAS,IAC3E,MAAM,aACNA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY,MAAM;AAAA,MAClB,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,YAAY,MAAM;AAAA,MAClB,aAAa,MAAM;AAAA,IAAA;AAAA,EAAA,IAGvBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY,MAAM;AAAA,MAClB,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,IAAA;AAAA,EAG3B,EAAA,CAAA;AAER;AAEA,SAAS,SAAS;AAElB,SAAS,eAAe,EAAE,YAA0C;AAChE,SAAQA,oBAAA,OAAA,EAAI,WAAU,8BAA8B,SAAS,CAAA;AACjE;AAEA,SAAS,eAAe;AAAA,EACpB,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAChB;;AC7IO,MAAM,oBAAoB;ACErB,IAAA,iCAAA0D,kBAAL;AACHA,gBAAAA,cAAA,UAAO,CAAP,IAAA;AACAA,gBAAAA,cAAA,WAAQ,CAAR,IAAA;AACAA,gBAAAA,cAAA,WAAQ,CAAR,IAAA;AAHQA,SAAAA;AAAA,GAAA,gBAAA,CAAA,CAAA;ACKZ,MAAM,kBAAkB,CAAC,EAAE,eAAe,YAAY,eAAe,eAAsC,iBAAyC;AAC1I,QAAA,EAAE,SAASxC;AACjB,QAAM,CAAC,cAAc,eAAe,IAAIrB,EAAS,aAAa,IAAI;AAClE,QAAM,CAAC,YAAY,aAAa,IAAIA,EAAS,iBAAiB,aAAa,IAAI;AAEzE,QAAA,cAAcM,IAAY,MAAM,gBAAgB,aAAa,KAAK,GAAG,CAAC,eAAe,CAAC;AACtF,QAAA,cAAcA,IAAY,MAAM,gBAAgB,aAAa,KAAK,GAAG,CAAC,eAAe,CAAC;AACtF,QAAA,oBAAoBA,IAAY,MAAM,gBAAgB,aAAa,IAAI,GAAG,CAAC,eAAe,CAAC;AAEjG,QAAM,oBAAoBE;AAAAA,IACtB,OACK;AAAA,MACG,UAAW,kBAA0B;AAAA,MACrC,OAAO;AAAA,MACP,QAAO,yCAAY,WAAU,KAAK,IAAI,OAAO;AAAA,MAC7C,SAAS,cAAc;AAAA,IAAA;AAAA,IAE/B,CAAC,MAAM,aAAa,eAAe,UAAU;AAAA,EAAA;AAGjD,QAAM,oBAAoBA;AAAAA,IACtB,OACK;AAAA,MACG,UAAW,kBAA0B;AAAA,MACrC,OAAO;AAAA,MACP,QAAO,yCAAY,WAAU,KAAK,IAAI,OAAO;AAAA,MAC7C,SAAS,cAAc;AAAA,IAAA;AAAA,IAE/B,CAAC,MAAM,aAAa,eAAe,UAAU;AAAA,EAAA;AAG3C,QAAA,sBAAsBA,IAAQ,MAAM,CAAC,mBAAmB,iBAAiB,GAAY,CAAC,mBAAmB,iBAAiB,CAAC;AAEjIN,IAAU,MAAM;AACE,kBAAA,iBAAiB,aAAa,IAAI;AAChD,YAAQ,cAAc;AAAA,MAClB,KAAK,aAAa;AAAA,MAClB,KAAK,aAAa;AACI;AAClB;AAAA,IACR;AAAA,EACD,GAAA,CAAC,cAAc,eAAe,iBAAiB,CAAC;AAEnD,SAAO,EAAE,cAAc,qBAAqB,YAAY,kBAAkB;AAC9E;AAEA,MAAA,oBAAe;;AC/Cf,SAAwB,IAAI,OAAiB;AACzC,QAAM,EAAE,gBAAgB,IAAI,YAAY,IAAI,qBAAqB,CAAI,GAAA,MAAM,IAAI,MAAM,IAAI,cAAc,UAAU;AACjH,QAAM,CAAC,QAAQ,SAAS,IAAIF,EAAS,KAAK;AACpC,QAAA,WAAWC,EAAO,IAAI;AAE5B,QAAM,aAAa,MAAM;AACrB,cAAU,IAAI;AAAA,EAAA;AAGlB,QAAM,cAAc,MAAM;AACtB,cAAU,WAAW;AAAA,EAAA;AAGzB,QAAM,aAAa;AAAA,IACf,CAAC,SAAS;AAAA,IACV;AAAA,IACA,EAAE,0BAA0B,OAAO;AAAA,IACnC,GAAG,mBAAmB,IAAI,CAAY,aAAA,mBAAmB,QAAQ,EAAE;AAAA,EAAA;AAGvEC,IAAU,MAAM;AACZ,UAAM,QAAQ,gBAAgB,IAAI,MAAA,IAAU,SAAS;AACrD,QAAI,OAAO;AACP,YAAM,MAAM,iBAAiB;AAC7B,YAAM,SAAS;AAAA,IACnB;AACU,cAAA,CAAC,EAAC,+BAAO,SAAQ;AAAA,EAC/B,GAAG,CAAE,CAAA;AAEL,MAAI,eAAe;AACR,WAAAC,oBAAC,SAAI,OAAO,EAAE,iBAAuC,GAAG,OAAO,WAAW,WAAY,CAAA;AAAA,EACjG;AAEO,SAAAA,oBAAC,OAAK,EAAA,GAAG,OAAO,KAAU,KAAK,UAAU,WAAW,YAAY,SAAS,YAAa,CAAA;AACjG;AC/BA,MAAM,kBAAkB,CAAO,WAC3B8B,EAAW,MAAM;ACNrB,MAAM,cAAc,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACxFH,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACxG,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACxBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,UAAS;AAAA,MACT,GAAE;AAAA,MACF,UAAS;AAAA,IAAA;AAAA,EACb;AAAA,EAAA,CACJ,CACH;AAED,MAAA,gBAAe;ACZR,MAAM,sBAAsB;AACtB,MAAA,4BAA4B,mBAAmB,0BAA0B,CAAC,cAAc,SAAS,GAAG,CAAC,wBAAwB,CAAC;AAC9H,MAAA,wBAAwB,GAAG,mBAAmB;AAC9C,MAAA,+BAA+B,GAAG,qBAAqB;AACvD,MAAA,2CAA2C,GAAG,qBAAqB;AACnE,MAAA,sCAAsC,GAAG,qBAAqB;AAC9D,MAAA,6BAA6B,GAAG,qBAAqB;AACrD,MAAA,6CAA6C,GAAG,qBAAqB;AACrE,MAAA,iCAAiC,GAAG,qBAAqB;AACzD,MAAA,6BAA6B,GAAG,qBAAqB;AACrD,MAAA,8BAA8B,GAAG,qBAAqB;AACtD,MAAA,gCAAgC,GAAG,qBAAqB;AACxD,MAAA,yBAAyB,GAAG,mBAAmB;AAC/C,MAAA,gCAAgC,GAAG,sBAAsB;AACzD,MAAA,kCAAkC,GAAG,sBAAsB;AAC3D,MAAA,mCAAmC,GAAG,sBAAsB;AAC5D,MAAA,iCAAiC,GAAG,sBAAsB;AAC1D,MAAA,kCAAkC,GAAG,sBAAsB;AAC3D,MAAA,8BAA8B,GAAG,sBAAsB;AACvD,MAAA,mCAAmC,GAAG,sBAAsB;AAC5D,MAAA,sBAAsB,GAAG,mBAAmB;AAC5C,MAAA,6BAA6B,GAAG,mBAAmB;AACnD,MAAA,8BAA8B,GAAG,mBAAmB;ACAjE,MAAM,sBAAsB,CAAuB;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAA6G;AACzG,QAAM,gBAAgBK,IAAQ,MAAO,aAAa,GAAG,2BAA2B,SAAS,IAAI,WAAY,CAAC,WAAW,UAAU,CAAC;AACzH,SAAA,iCACF,OAAK,EAAA,GAAG,OAAO,WAAW,eAAe,KAAK,gBAAA,CAAwC,IAEvFL;AAAAA,IAAC+B;AAAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ,WAAW;AAAA,MACX;AAAA,MACA,SAAS,cAAc;AAAA,MACvB,KAAK;AAAA,IAAA;AAAA,EAAA;AAGjB;AAEA,MAAM,eAAe,CAAuB,UAAkE;;AACpG,QAAA,EAAE,SAASb;AACX,QAAA,EAAE,QAAQ,YAAY,aAAa,aAAa,UAAU,UAAU,yBAA6B,IAAA;AACvG,QAAM,kBAAkBb,IAAQ,OAAM,2CAAa,WAAU,KAAK,IAAI,2BAA2B,GAAG,CAAC,MAAM,WAAW,CAAC;AACvH,QAAM,mBAAmBA,IAAQ,MAAO,gBAAgB,OAAO,SAAY,OAAO,CAAC,GAAI,CAAC,QAAQ,WAAW,CAAC;AACtG,QAAA,kBAAkBA,IAAQ,MAAM;;AAAA,aAAA1D,MAAA,qDAAkB,SAAlB,gBAAAA,IAAwB,WAAU;AAAA,KAAiB,CAAC,kBAAkB,eAAe,CAAC;AAGxH,SAAAgF;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,UAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,iBAAc;AAAA,MACd,WAAW,GAAG,uBAAuB;AAAA,QACjC,CAAC,4BAA4B,GAAG;AAAA,QAChC,CAAC,mCAAmC,GAAG,CAAC,CAAC,OAAO;AAAA,QAChD,CAAC,8BAA8B,GAAG;AAAA,QAClC,CAAC,6BAA6B,GAAG,MAAM;AAAA,QACvC,CAAC,2BAA2B,GAAG,MAAM;AAAA,MAAA,CACxC;AAAA,MACD;AAAA,MACA,SAAS,CAAC,WAAW,MAAM,aAAa;AAAA,MACxC,WAAW,CAAC,WAAW,MAAM,kBAAkB;AAAA,MAC/C,MAAM,aAAa,WAAW;AAAA,MAC9B,UAAU;AAAA,MACV,OAAO;AAAA,MACP,iBAAiB,MAAM;AAAA,MACvB,MAAM,CAAC,aAAa,WAAW;AAAA,MAC/B,oBAAkB,MAAM;AAAA,MACxB,IAAI,MAAM,MAAM;AAAA,MAEf,UAAA;AAAA,QAAA,YAAY,aACT3B;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,qBAAkB;AAAA,YAClB,iBAAe,MAAM;AAAA,YACrB,iBAAe;AAAA,YACf,aAAW,MAAM;AAAA,YACjB,cAAa;AAAA,YACb,WAAU;AAAA,YACV,SAAS,MAAM;AAAA,YACf,aAAa;AAAA,YACb,KAAK,MAAM;AAAA,YACX,MAAK;AAAA,YACL,MAAK;AAAA,UAAA;AAAA,QAAA,IAIJ2B,oBAAAC,KAAA,EAAA,UAAA;AAAA,WAAA,qDAAkB,SACf5B,oBAAC,KAAI,EAAA,WAAW,4BAA4B,KAAK,iBAAiB,MAAM,KAAK,iBAAiB,KAAK,KAAQ,EAAA,CAAA;AAAA,UAE9GA,oBAAA,QAAA,EAAK,WAAW,4BACZ,YAAkBrD,MAAA,qDAAA,uBAAA,gBAAAA,IAAoB,YAAU,qDAAkB,KAAK,WAAU,gBACtF,CAAA;AAAA,UACC,eAAe,MAAM,sBAAsB,yBACvC,OAAI,EAAA,WAAW,4CACZ,UAACqD,oBAAA6B,cAAA,EAAW,IAAI,kBAAkB,MAAM,SAAS,kBAAkB,MAAM,UAAU,MAC9E,UAAA,MAAM,qBACX,EACJ,CAAA;AAAA,QAAA,GAER;AAAA,QAEH,CAAC,4BACE7B,oBAAC,QAAK,EAAA,WAAW,0CACb,UAACA,oBAAA2D,eAAA,EAAY,MAAK,eAAA,CAAe,EACrC,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhB;AAEA,MAAA,iBAAe;ACpHf,MAAM,aAAa,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACvFhC,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACxG,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACxBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,GAAE;AAAA,IAAA;AAAA,EACN;AAAA,EAAA,CACJ,CACH;ACRD,MAAM,eAAe,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACzF2B,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACxG,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACvBA,oBAAA,QAAA,EAAK,QAAO,gBAAe,GAAE,6FAA4F;AAAA,EAAA,CAC9H,CACH;ACLD,MAAM,YAAY,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACtF2B,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,8BAA6B,MAAK,QAAO,OAAM,MAAK,SAAQ,aAAY,QAAO,MAC1G,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACxBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,aAAU;AAAA,MACV,GAAE;AAAA,MACF,aAAU;AAAA,IAAA;AAAA,EACd;AAAA,EAAA,CACJ,CACH;ACMM,MAAM,8BAA8B,CAAuB;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAES2B,oBAAAC,KAAA,EAAA,UAAA;AAAA,EAAA,eACI5B,oBAAA,QAAA,EAAK,WAAW,iCACZ,qBAAYA,oBAAA,YAAA,EAAW,MAAK,eAAe,CAAA,IAAKA,oBAAC,cAAa,EAAA,MAAK,eAAe,CAAA,GACvF;AAAA,EAEJ2B,oBAAC,OAAI,EAAA,WAAW,gCACX,UAAA;AAAA,IAAK,KAAA,QAAS3B,oBAAA,KAAA,EAAI,WAAW,eAAyB,KAAK,KAAK,MAAM,KAAK,KAAK,KAAM,CAAA;AAAA,IACvFA,oBAAC,QAAM,EAAA,UAAA,KAAK,KAAK,CAAA;AAAA,EAAA,GACrB;AAAA,EACC,CAAC,eAAeA,oBAAC,QAAK,EAAA,WAAW,kCAAmC,UAAA,YAAaA,oBAAA,WAAA,EAAU,MAAK,eAAA,CAAe,EAAG,CAAA;AAAA,EACvH,CAAA;AAGJ,MAAM,iBAAiB,CAAuB,EAAE,MAAM,aAAa,WAAW,UAAU,gBAAgB,eAAmC;AACjI,QAAA,WAAW,CAAC,CAAC,KAAK;AAKlB,QAAA,eAAe,KAAK,aAAa,QAAQ;AAEzC,QAAA,gBAAgB,GAAG,wBAAwB;AAAA,IAC7C,CAAC,6BAA6B,GAAG;AAAA,IACjC,CAAC,+BAA+B,GAAG;AAAA,EAAA,CACtC;AAGG,SAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,WAAW;AAAA,MACX,iBAAe;AAAA,MACf,cAAY,KAAK;AAAA,MACjB,SAAS;AAAA,MACT;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,MAAK;AAAA,MACL,UAAU;AAAA,MAET,yBAAe,EAAE,MAAM,aAAa,UAAU,eAAe,6BAA6B;AAAA,IAAA;AAAA,EAAA;AAGvG;AAEA,MAAeyB,mBAAAA,EAAK,cAAc;AC1DlC,MAAM,aAAa;AAAA,EACf,CACI;AAAA,IACI;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAEJ,QACC;AACK,UAAA,EAAE,SAASP;AACjB,UAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AACvD,UAAM,gBAAgB,MAAM,OAAO,CAAA,SAAQ,CAAC,cAAc,KAAK,KAAK,YAAY,EAAE,SAAS,UAAU,CAAC;AAChG,UAAA,gBAAgB,GAAG,qBAAqB,EAAE,CAAC,0BAA0B,GAAG,UAAU;AAClF,UAAA,qBAAqB,GAAG,wBAAwB,gCAAgC;AAChF,UAAA,qBAAqBb,IAAQ,MAAO,WAAW,cAAc,IAAI,iBAAiB,6BAA8B,CAAC,cAAc,CAAC;AACtI,UAAM,oBAAoBA,IAAQ,MAAM,gBAAgB,MAAM,CAAC,WAAW,CAAC;AAE3E,WAAO,WACHL;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,oBAAoB;AAAA,QACpB,SAAS,oBAAoB,gBAAgB;AAAA,QAC7C,kBAAkB;AAAA,QAClB,SAAS;AAAA,QACT,SAAS;AAAA,QACT,aAAa;AAAA,QACb,MAAM;AAAA,QACN;AAAA,QACA,eAAe,qBAAqB;AAAA,QACpC,SAAS,wBAAwB;AAAA,QACjC,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,UAAU,yBAAyB;AAAA,QACnC,aAAa,eAAe;AAAA,QAC5B;AAAA,QAEA,UAACA,oBAAA,MAAA,EAAG,WAAW,eAAe,IAAI,cAAc,KAAU,MAAK,WAAU,wBAAsB,mBAC1F,UAAA,cAAc,SACX,cAAc,IAAI,CAAQ,SAAA;AAElB,iBAAAA;AAAAA,YAAC4D;AAAAA,YAAA;AAAA,cACG;AAAA,cAEA,aAAa;AAAA,cACb;AAAA,cACA;AAAA,cACA,gBAAgB;AAAA,cAChB,UAAU,OAAO,SAAS,IAAI;AAAA,YAAA;AAAA,YALzB,KAAK;AAAA,UAAA;AAAA,QAQrB,CAAA,IAED5D,oBAAC,OAAI,EAAA,WAAW,oBAAqB,UAAK,KAAA,IAAI,uBAAuB,EAAA,CAAE,EAE/E,CAAA;AAAA,MAAA;AAAA,IAEJ,IAAA;AAAA,EACR;AACJ;AAEA,MAAeyB,eAAAA,EAAK,UAAU;ACjF9B,MAAM,YAAY,CAAuB,EAAE,OAAO,aAAa,eAA2E;AACtI,QAAM,mBAAmBtB;AAAAA,IACrB,CAAC,gBAAiC,gBAAgB;AAC9C,YAAM,YAAa,YAAmC,OAAO,iBAAiB,WAAW,EAAE,OAAO,OAAO;AACnG,YAAA,iBAAiB,MAAM,OAAO,CAAA,SAAQ,UAAU,SAAS,KAAK,EAAE,CAAC;AACvE,YAAM0D,aAAY,cAAc,iBAAiB,eAAe,MAAM,GAAG,CAAC;AAC1E,aAAOA,WAAU,SAAS,OAAO,OAAOA,UAAS,IAAI;AAAA,IACzD;AAAA,IACA,CAAC,OAAO,WAAW;AAAA,EAAA;AAGvB,QAAM,CAAC,WAAW,YAAY,IAAIhE,EAAS,iBAAiB,QAAQ,CAAC;AAErE,QAAM,iBAAiBM;AAAAA,IACnB,CAAC0D,aAAgC,gBAAgB;AAC7C,YAAM,gBAAgBA,WAAU,OAAO,UAAQ,MAAM,SAAS,IAAI,CAAC;AACnE,mBAAa,cAAc,SAAS,OAAO,OAAO,aAAa,IAAI,WAAW;AAAA,IAClF;AAAA,IACA,CAAC,OAAO,YAAY;AAAA,EAAA;AAGxB,QAAM,SAAS1D;AAAAA,IACX,CAAC,SAAY;AACT,mBAAa,CAAoB,qBAAA;AACvB,cAAA9C,SAAQ,iBAAiB,QAAQ,IAAI;AAG3C,YAAIA,SAAQ;AAAG,iBAAO,OAAO,QAAS,cAAc,mBAAmB,aAA8B,OAAO,IAAI,CAAC;AAGjH,YAAI,CAAC;AAAoB,iBAAA;AAGnB,cAAA,gBAAgB,CAAC,GAAG,gBAAgB;AAC5B,sBAAA,OAAOA,QAAO,CAAC;AAC7B,eAAO,cAAc,SAAS,OAAO,OAAO,aAAa,IAAI;AAAA,MAAA,CAChE;AAAA,IACL;AAAA,IACA,CAAC,aAAa,YAAY;AAAA,EAAA;AAGpB0C,IAAA,MAAM,aAAa,iBAAiB,QAAQ,CAAC,GAAG,CAAC,kBAAkB,UAAU,YAAY,CAAC;AAE7F,SAAA,EAAE,gBAAgB,QAAQ;AACrC;AAEA,MAAA,cAAe;;ACnCf,MAAM,SAAS,CAAuB;AAAA,EAClC;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA,MAAAY;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B;AAAA,EAC3B,cAAc;AAAA,EACd;AACJ,MAAsB;AACZ,QAAA,EAAE,gBAAgB,QAAQ,UAAU,IAAImD,YAAU,EAAE,OAAO,aAAa,SAAA,CAAU;AACxF,QAAM,CAAC,UAAU,WAAW,IAAIjE,EAAkB,KAAK;AACvD,QAAM,CAAC,YAAY,aAAa,IAAIA,EAAiB,EAAE;AACjD,QAAA,iBAAiBC,EAAyB,IAAI;AAC9C,QAAA,gBAAgBA,EAAyB,IAAI;AAC7C,QAAA,kBAAkBA,EAA0B,IAAI;AACtD,QAAM,eAAeA,EAAO,UAAUS,OAAA,CAAM,EAAE;AAC9C,QAAM,CAAC,qBAAqB,sBAAsB,IAAIV,EAAS,CAAC;AAEhE,QAAM,qBAAqBC;AACrB,QAAA,uCAAuCA,EAAO,IAAI;AAClD,QAAA,2BAA2BA,EAAO,KAAK;AACvC,QAAA,sBAAsBA,EAAO,SAAS;AACtC,QAAA,gBAAgBA,EAAO,SAAS;AAEhC,QAAA,iBAAiBK,IAAY,MAAM;AACrC,kBAAc,EAAE;AAChB,gBAAY,KAAK;AACjB,QAAI,UAAU;AACV,qBAAe,oBAAoB,OAAO;AAC1C,2CAAqC,UAAU;AAAA,IACnD;AAAA,KACD,CAAC,gBAAgB,aAAa,eAAe,QAAQ,CAAC;AAezD,QAAM,oBAAoBE;AAAAA,IACtB,MACI,GAAG;AAAA,MACC;AAAA,MACA,EAAE,CAAC,2BAA2B,GAAG,gBAAgB,KAAK;AAAA,MACtD,GAAG,mBAAmB,IAAI,CAAA0D,SAAO,GAAG,mBAAmB,KAAKA,IAAG,EAAE;AAAA,MACjE;AAAA,IAAA,CACH;AAAA,IACL,CAAC,WAAW,oBAAoB,WAAW;AAAA,EAAA;AAG/C,QAAM,EAAE,cAAc,qBAAqB,YAAY,kBAAA,IAAsBC,kBAAgB;AAAA,IACzF,eAAe,CAAC,UAAU;AAAA,EAAA,CAC7B;AAOK,QAAA,YAAY7D,IAAY,MAAM;;AAChC,kBAAc,EAAE;AAChB,gBAAY,KAAK;AACC;AAEd,QAAA,CAAC,qCAAqC,SAAS;AAC/C,OAAAxD,MAAA,gBAAgB,YAAhB,gBAAAA,IAAyB;AAAA,IAC7B;AAAO,2CAAqC,UAAU;AAAA,EACvD,GAAA,CAAC,mBAAmB,aAAa,aAAa,CAAC;AAE5C,QAAA,kBAAkBwD,IAAY,MAAM;AACtC,wBAAoB,UAAU;AACxB,UAAAxE,SAAQ,GAAG,UAAU,IAAI,CAAC,EAAE,IAAAoH,IAAS,MAAAA,GAAE,CAAC;AAC9C,aAAS,EAAE,QAAQ,EAAE,OAAApH,QAAO,MAAAgF,MAAA,EAAQ,CAAA;AAAA,EACrC,GAAA,CAACA,OAAM,UAAU,SAAS,CAAC;AAE9BZ,IAAU,MAAM;AACZ,YAAQ,cAAc;AAAA,MAClB,KAAK,aAAa;AACE;AAChB;AAAA,MACJ,KAAK,aAAa;AACC;AACf,iCAAyB,UAAU;AACnC;AAAA,IACR;AAAA,EACD,GAAA,CAAC,cAAc,iBAAiB,cAAc,CAAC;AAMlD,QAAM,eAAeI;AAAAA,IACjB,CAACtE,OAAa;;AACV,MAAAA,GAAE,eAAe;AAGX,YAAA,SACFA,GAAE,mBAAiBc,MAAA,+CAAe,YAAf,gBAAAA,IAAwB,SAASd,GAAE,kBAC/CA,GAAE,gBACH;AAEV,UAAI,UAAU,CAAC,OAAO,aAAa,eAAe,GAAG;AAC3C,cAAAF,SAAQ,OAAO,aAAa,YAAY;AAC9C,cAAM,OAAO,MAAM,KAAK,CAAAsI,UAAQA,MAAK,OAAOtI,MAAK;AACjD,eAAO,IAAI;AAAA,MACf;AAAA,IACJ;AAAA,IACA,CAAC,OAAO,MAAM;AAAA,EAAA;AAGlBoE,IAAU,MAAM;AACR,QAAA,cAAc,YAAY,WAAW;AACrC,oBAAc,UAAU;AACpB,UAAA,CAAC,eAAe,yBAAyB,SAAS;AAClC;AACN;MACd;AAAA,IACJ;AACA,6BAAyB,UAAU;AAAA,KACpC,CAAC,WAAW,iBAAiB,aAAa,SAAS,CAAC;AAEvDA,IAAU,MAAM;AACZ,QAAI,YAAY;AACZ,6BAAuB,UAAU,MAAM;AAC7B;IACd;AAAA,EAAA,GACD,CAAC,YAAY,WAAW,wBAAwB,UAAU,MAAM,CAAC;AAOpE,QAAM,sBAAsBI;AAAAA,IACxB,CAAC,QAAuB;AACpB,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AAMpB,sBAAY,UAAU;AACe,+CAAA,UAAU,IAAI,QAAQ,mBAAmB;AAC9E;AAAA,QACJ,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACpB,cAAI,cAAc,UAAU;AACpB,gBAAA,IAAI,QAAQ,mBAAmB,OAAO;AAClC,kBAAA;AAAY,6BAAa,GAAG;AAAA;AAC3B;AAAA,YACT;AACA;AAAA,UACJ;AACA;AAAA,QACJ,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACpB;AAAA,QACJ;AACI;AAAA,MACR;AAEA,UAAI,eAAe;AACnB,kBAAY,IAAI;AAAA,IACpB;AAAA,IACA,CAAC,WAAW,YAAY,cAAc,UAAU,aAAa,UAAU;AAAA,EAAA;AAG3EJ,IAAU,MAAM;AACZ,QAAI,UAAU;AACV,2BAAqB,mBAAmB,OAAQ;AAE7B,yBAAA,UAAU,sBAAsB,MAAM;;AAC9C,eAAA;AACC,cAAA,QAAOpD,MAAA,cAAc,YAAd,gBAAAA,IAAuB;AAC9B,cAAA;AAEJ,iBAAO,MAAM;AACT,gBAAI,EAAE,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,SAAS;AAC9D,kBAAI,KAAK,aAAa,eAAe,MAAM,QAAQ;AAC/C,qBAAK,MAAM;AACL,sBAAA;AAAA,cACV;AACA,mCAAqB,sBAAsB;AAAA,YAC/C;AACA,mBAAO,KAAK;AAAA,UAChB;AAEI,cAAA;AAAoB,+BAAmB,MAAM;AAAA,QACrD;AAAA,MAAA,CACH;AAAA,IACL;AAAA,EAAA,GACD,CAAC,QAAQ,CAAC;AAOb,QAAM,oBAAoBwD;AAAAA,IACtB,CAAC,QAAuB;AACpB,YAAM,SAAS,IAAI;AAEnB,cAAQ,IAAI,MAAM;AAAA,QACd,KAAK,mBAAmB;AACpB,cAAI,eAAe;AAET;AACV;AAAA,QACJ,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACpB,uBAAa,GAAG;AAChB;AAAA,QACJ,KAAK,mBAAmB,YAAY;AAChC,cAAI,eAAe;AACnB,cAAI,OAAO,OAAO;AAClB,iBAAO,MAAM;AACT,gBAAI,EAAE,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,SAAS;AAC9D,mBAAK,MAAM;AACX;AAAA,YACJ;AACA,mBAAO,KAAK;AAAA,UAChB;AACA;AAAA,QACJ;AAAA,QACA,KAAK,mBAAmB,UAAU;AAC9B,cAAI,eAAe;AACZ,iBAAA;AACH,gBAAI,OAAO,OAAO;AAClB,mBAAO,MAAM;AACT,kBAAI,EAAE,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,SAAS;AAC9D,qBAAK,MAAM;AACL,sBAAA;AAAA,cACV;AACA,qBAAO,KAAK;AAAA,YAChB;AACI,gBAAA,cAAc,eAAe,SAAS;AACtC,6BAAe,QAAQ;YAC3B;AAAA,UACJ;AACA;AAAA,QACJ;AAAA,QACA,KAAK,mBAAmB;AACV;AACV;AAAA,MAER;AAAA,IACJ;AAAA,IACA,CAAC,WAAW,YAAY,YAAY;AAAA,EAAA;AAOxC,QAAM,mBAAmBA;AAAAA,IACrB,CAACtE,OAAa;AACJ,YAAAF,SAAiBE,GAAE,OAA4B;AACvC,oBAAAF,OAAM,aAAa;AAAA,IACrC;AAAA,IACA,CAAC,aAAa;AAAA,EAAA;AAOlB,QAAM,aAAawE;AAAAA,IACf,CAACtE,OAAa;AACV,MAAAA,GAAE,eAAe;AACL,kBAAA,CAAAqI,cAAY,CAACA,SAAQ;AACrB,kBAAA,eAAe,oBAAoB,OAAO;AAAA,IAC1D;AAAA,IACA,CAAC,aAAa,UAAU,cAAc;AAAA,EAAA;AAG1CnE,IAAU,MAAM;;AACZ,QAAI,YAAY,YAAY;AACxB,OAAApD,MAAA,eAAe,YAAf,gBAAAA,IAAwB;AAAA,IAC5B;AAAA,EAAA,GACD,CAAC,YAAY,QAAQ,CAAC;AAGrB,SAAAgF,oBAAC,OAAI,EAAA,WAAW,mBACZ,UAAA;AAAA,IAAA3B;AAAAA,MAACmE;AAAAA,MAAA;AAAA,QACG,IAAI,YAAY;AAAA,QAChB;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,aAAa;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB,CAAC,qBAAqB,WAAW,GAAG,QAAQ,GAAG,iBAAiB,KAAK;AAAA,MAAA;AAAA,IAC1F;AAAA,IACAnE;AAAAA,MAACoE;AAAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,UAAU;AAAA,QACV,cAAc,aAAa;AAAA,QAC3B,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACJ;AAAA,EACJ,EAAA,CAAA;AAER;AAEA,MAAA,WAAe;ACvWf,MAAM,cAAc,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACxFzC,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,KAAI,QAAO,MAAK,SAAQ,YAAW,MAAK,QAAO,OAAM,8BAChF,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EAExBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,GAAE;AAAA,MACF,MAAM,MAAM,WAAW,YAAY;AAAA,IAAA;AAAA,EACvC;AAAA,EAAA,CACJ,CACH;AAED,MAAA,gBAAe;ACXf,MAAM,eAAe,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACzF2B,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,KAAI,QAAO,MAAK,SAAQ,YAAW,MAAK,QAAO,OAAM,8BAChF,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACxBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,GAAE;AAAA,MACF,MAAM,MAAM,WAAW,YAAY;AAAA,IAAA;AAAA,EACvC;AAAA,EAAA,CACJ,CACH;AAED,MAAA,iBAAe;ACDS,SAAA,WAAW,EAAE,MAAM,SAAS,SAAS,MAAM,MAAM,OAAO,cAAc,oBAAqC;AACzH,QAAA,EAAE,SAASkB;AAEjB,QAAM,gBAAgBb;AAAAA,IAClB,MAAM,gBAAgB,OAAO,OAAO,aAAa,IAAI,CAAW,YAAA,EAAE,IAAI,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,KAAmB,CAAC;AAAA,IACtH,CAAC,YAAY;AAAA,EAAA;AAGjB,QAAM,kBAAkBF;AAAAA,IACpB,CAAC,EAAE,OAAA,MAAkB;AACjB,WAAI,iCAAQ,UAAS;AAAW;AACb,2DAAA,CAAC,OAAO;AAAA,IAC/B;AAAA,IACA,CAAC,gBAAgB;AAAA,EAAA;AAGrB,SACKwB,oBAAA,OAAA,EAAI,cAAY,KAAK,IAAI,qBAAqB,GAAG,WAAW,uBAAuBD,GAAW,CAAE,CAAA,CAAC,IAC9F,UAAA;AAAA,IAACC,oBAAA,OAAA,EAAI,WAAU,gCACX,UAAA;AAAA,MAAAA,oBAAC,QACI,EAAA,UAAA;AAAA,QAAA,KAAK,IAAI,iBAAiB;AAAA,QAAE;AAAA,QAAE;AAAA,MAAA,GACnC;AAAA,MACC,iBAAiB,oBACb3B,oBAAA,OAAA,EAAI,WAAU,uCACX,UAAAA;AAAAA,QAACqE;AAAAA,QAAA;AAAA,UACG,kBAAkB;AAAA,UAClB,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU;AAAA,UACV,UAAU,GAAG,SAAS,EAAE;AAAA,QAAA;AAAA,MAAA,GAEhC;AAAA,IAAA,GAER;AAAA,IAEA1C,oBAAC,OAAI,EAAA,WAAU,iCACX,UAAA;AAAA,MAAA3B;AAAAA,QAAC+B;AAAAA,QAAA;AAAA,UACG,cAAY,KAAK,IAAI,yBAAyB;AAAA,UAC9C,SAAS,cAAc;AAAA,UACvB,UAAU,CAAC;AAAA,UACX,YAAY;AAAA,UACZ,oBAAoB,CAAC,QAAQ,EAAE,OAAO,UAAU,cAAc,UAAU;AAAA,UACxE,SAAS;AAAA,UAET,UAAC/B,oBAAAsE,eAAA,EAAY,UAAU,CAAC,QAAS,CAAA;AAAA,QAAA;AAAA,MACrC;AAAA,MACAtE;AAAAA,QAAC+B;AAAAA,QAAA;AAAA,UACG,cAAY,KAAK,IAAI,qBAAqB;AAAA,UAC1C,SAAS,cAAc;AAAA,UACvB,UAAU,CAAC;AAAA,UACX,YAAY;AAAA,UACZ,oBAAoB,CAAC,QAAQ,EAAE,OAAO,UAAU,cAAc,UAAU;AAAA,UACxE,SAAS;AAAA,UAET,UAAC/B,oBAAAuE,gBAAA,EAAa,UAAU,CAAC,QAAS,CAAA;AAAA,QAAA;AAAA,MACtC;AAAA,IAAA,GACJ;AAAA,EACJ,EAAA,CAAA;AAER;ACvEA,MAAM,SAAS;AAAA,EACX,IAAI;AAAA,EACJ,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AACd;AAEa,MAAA,WAAW,CAAC,QAA6B;AAC3C,SAAA,OAAO,GAAG,KAAK;AAC1B;AAEA,MAAM,kBAAkB,OAAO,OAAO;AAAA,EAClC,QAAQ;AAAA,EACR,QAAQ;AACZ,CAAC;AAEe,SAAA,uBAAuBC,gBAA2D,QAAiC;AAC/H,MAAIA,eAAc;AAAgB,WAAO,WAAW,WAAW,oBAAoBA,eAAc,iBAAiBA,eAAc;AAEhI,SAAO,gBAAgBA,eAAc,IAAoC,KAAKA,eAAc;AAChG;ACnCY,IAAA,+BAAAC,gBAAL;AACHA,cAAA,SAAU,IAAA;AACVA,cAAA,SAAU,IAAA;AACVA,cAAA,OAAQ,IAAA;AACRA,cAAA,SAAU,IAAA;AACVA,cAAA,OAAQ,IAAA;AALAA,SAAAA;AAAA,GAAA,cAAA,CAAA,CAAA;;ACIC,MAAA,MAAMhD,EAAK,CAAC,EAAE,UAAU,WAAW,SAAS,YAAsB;AAEvE,SAAAzB;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,GAAG,gBAAgB;AAAA,QAC1B,yBAAyB,YAAY,WAAW;AAAA,QAChD,yBAAyB,YAAY,WAAW;AAAA,QAChD,yBAAyB,YAAY,WAAW;AAAA,QAChD,uBAAuB,YAAY,WAAW;AAAA,QAC9C,uBAAuB,YAAY,WAAW;AAAA,MAAA,CACjD;AAAA,MAEA,UAAA;AAAA,IAAA;AAAA,EAAA;AAGb,CAAC;ACbD,MAAM,uBAAuB;AAY7B,MAAM,cAAc,CAAC;AAAA,EACjB,MAAAW;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,YAAY;AAChB,MAAoB;AAChB,QAAM,OAAO,WAAW,WAAW,IAAI,SAAS,IAAI,YAAY,IAAIA,KAAI,GAAG,IAAI,IAAI,SAAS,GAAG,QAAQ,QAAQ,GAAG;AAC3G,SAAA,GAAG,eAAe,GAAG,IAAI;AACpC;AAEO,MAAM,cAAc,CAAC,EAAE,UAAU,cAAc,MAAAA,YAA6D;AACzG,QAAA,EAAE,mBAAmBO;AAG3B,QAAM,QAAQb;AAAAA,IACV,MACI,YAAY;AAAA,MACR,iBAAiB;AAAA,MACjB,MAAAM;AAAA,MACA,GAAG;AAAA,IAAA,CACN;AAAA,IACL,CAAC,gBAAgBA,OAAM,OAAO;AAAA,EAAA;AAG3B,SAAA;AACX;ACjCa,MAAA+D,UAAQ,CAAC,EAAE,SAAS,eAAe,WAAW,KAAK,MAAA/D,OAAM,gBAA4B;AAC9F,QAAM,WAAW,YAAY;AAAA,IACzB,SAASN,IAAQ,OAAO,EAAE,aAAa,QAAQ,UAAA,IAAc,CAAC,WAAW,MAAM,CAAC;AAAA,IAChF,MAAAM;AAAA,EAAA,CACH;AAEM,SAAAX,oBAAC,SAAI,WAAW,GAAG,mBAAmB,SAAS,GAAG,KAAU,KAAK,SAAU,CAAA;AACtF;ACjBA,MAAM,OAAO,CAAC,EAAE,GAAG,MAAA,MACdA,oBAAA,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC/F,UAACA,oBAAA,QAAA,EAAK,GAAE,inBAAA,CAAinB,EAC7nB,CAAA;;ACEJ,MAAM,WAAW,CAAC,EAAE,WAA6B;AAC7C,QAAM,CAAC,cAAc,eAAe,IAAIH,EAAS,IAAI;AAE/C,QAAA,UAAUM,IAAY,YAAY;AACpC,QAAI,MAAM;AACF,UAAA;AACM,cAAA,UAAU,UAAU,UAAU,IAAI;AACxC,wBAAgB,QAAQ;AAAA,eACnBtE,IAAG;AACR,gBAAQ,IAAIA,EAAC;AAAA,MACjB;AAAA,IACJ;AAAA,EAAA,GACD,CAAC,IAAI,CAAC;AAEH,QAAA,oBAAoBsE,IAAY,MAAM;AACxC,oBAAgB,IAAI;AAAA,EAAA,GACrB,CAAC,iBAAiB,IAAI,CAAC;AAGtB,SAAAH,oBAAC,SAAQ,EAAA,SAAS,cACd,UAAA2B;AAAAA,IAACI;AAAAA,IAAA;AAAA,MACG,SAAS,cAAc;AAAA,MACvB,WAAW;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,MACR,qBAAqB;AAAA,MAErB,UAAA;AAAA,QAAC/B,oBAAA,QAAA,EAAK,WAAW,mCAAoC,UAAK,MAAA;AAAA,QAC1DA,oBAAC,MAAK,EAAA,MAAM,UAAW,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAE/B,EAAA,CAAA;AAER;AC1BA,MAAM,kBAAkB,EAAE,OAAO,6BAA6B,SAAS,CAAC,sCAAsC;AACjG,MAAA,kBAAkB,CAAC,OAAiD,qBAAgD;AAC7H,MAAI,CAAC;AAAc,WAAA;AACnB,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AACM,aAAA;AAAA,QACH,OAAO;AAAA,QACP,SAAS,CAAC,kCAAkC,qCAAqC;AAAA,QACjF,kBAAkB;AAAA,MAAA;AAAA,IAE1B,KAAK;AACM,aAAA;AAAA,QACH,OAAO;AAAA,QACP,SAAS,mBACH,CAAC,kCAAkC,gBAAgB,IACnD,CAAC,kCAAkC,wCAAwC;AAAA,QACjF;AAAA,QACA,mBAAmB,mBACb,EAAE,iBAAgB,+BAAO,aAAaA,oBAAA,UAAA,EAAS,MAAM,MAAM,UAAW,CAAA,IAAK,KAC3E,IAAA,EAAE,wCAAwC,MAAM,YAAYA,oBAAC,YAAS,MAAM,MAAM,UAAW,CAAA,IAAK,KAAK;AAAA,MAAA;AAAA,IAErH,KAAK;AACM,aAAA;AAAA,QACH,OAAO;AAAA,QACP,SAAS,CAAC,sCAAsC;AAAA,QAChD;AAAA,MAAA;AAAA,IAER,KAAK;AACM,aAAA;AAAA,QACH,OAAO;AAAA,QACP,SAAS,CAAC,yBAAyB;AAAA,QACnC;AAAA,MAAA;AAAA,IAER,KAAK;AAAA,IACL;AACW,aAAA;AAAA,EACf;AACJ;AC9CA,MAAM,uBAAuB,CAAC,EAAE,OAAO,uBAA2G;AACxI,QAAA,EAAE,OAAO,SAAS,kBAAkB,mBAAmB,kBAAkB,mBAAmB,gBAAgB,OAAO,gBAAgB;AAGrI,SAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAS;AAAA,MACT,UAAQ;AAAA,MACR;AAAA,MACA,kBAAkB;AAAA,IAAA;AAAA,EAAA;AAG9B;AAEA,MAAA,yBAAe;ACpBR,MAAMoC,eAAa;AACnB,MAAMuC,iBAAevC,eAAa;AAClC,MAAM,uBAAuBA,eAAa;AAC1C,MAAM,sCAAsCA,eAAa;AACzD,MAAM,4BAA4BA,eAAa;;ACuBtD,MAAM,SAAS,CAAC,gBAAgB,iBAAiB,mBAAmB,QAAQ;AAErE,MAAM,oBAA+C,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAAwC;AAAA,EACA,GAAG;AACP,MAAM;AACI,QAAA,EAAE,SAAS1D;AACjB,QAAM,CAAC,YAAY,aAAa,IAAIrB,EAA6B;AACjE,QAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AAEvD,QAAM,UAAUQ;AAAAA,IACZ,MACI,OAAO,IAAI,CAAO,QAAA;AACd,YAAM,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC;AACpC,UAAI,QAAQ,UAAU;AACX,eAAA;AAAA,UACH;AAAA,UACA,OAAO,wBACD,QACA,GAAG,KAAK,IAAI,uBAAuB,oBAAoB,CAAC,IAAI,IAAI,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE;AAAA,UACrH,UAAU,QAAQ,WAAW,iBAAiB,QAAQ;AAAA,QAAA;AAAA,MAE9D;AAEO,aAAA,EAAE,KAAK;IACjB,CAAA,EAAE,OAAO,CAAA,WAAU,EAAE,gBAAgB,CAAC,UAAU,MAAM,EAAE,SAAS,OAAO,GAAG,EAAE;AAAA,IAClF,CAAC,qBAAqB,uBAAuB,MAAM,YAAY;AAAA,EAAA;AAGnE,QAAM,sBAAsB;AAAA,IACxB,OAAO;AAAA,IACP,SAAS,CAAC,uDAAuD;AAAA,EAAA;AAGrE,QAAM,UAAUF;AAAAA,IACZ,CAAC9C,WAAmB;AAChB,oBAAcA,UAAS,MAAS;AAAA,IACpC;AAAA,IACA,CAAC,aAAa;AAAA,EAAA;AAGlB,QAAM,eAAegD,IAAQ,MAAM,MAAOL,oBAAA6E,wBAAA,EAAqB,OAAc,iBAAoC,CAAA,GAAI,CAAC,OAAO,gBAAgB,CAAC;AAE1I,SAAA7E,oBAAC,OAAI,EAAA,WAAWoC,cACZ,UAAApC;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM4E;AAAA,MACN;AAAA,MACA,SAAS;AAAA,MACT,YAAY,EAAE,UAAU,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUT,iBAAiB,CAAC,EAAE,MAAM,eAAe;AAC/B,gBAAA,aAAa,WAAW,KAAK,QAAQ;AAC3C,iBAAO,KAAK,WACR,KAAK,IAAI,UAAU,wBACd,UAAS,EAAA,OAAO,KAAK,UAAU,oBAAoB,aAAa,YAAY,wBAE5E,QAAM,EAAA,UAAA,KAAK,SAAS,CAAA,IAEzB;AAAA,QACR;AAAA,QACA,cAAc,CAAC,EAAE,OAAAjJ,aAAY,KAAK,SAASA,MAAK;AAAA,QAChD,QAAQ,CAAC,EAAE,OAAAA,aAAY;AACb,gBAAAK,UAAS,KAAK,OAAOL,OAAM,OAAOA,OAAM,UAAU,EAAE,cAAc,CAAC,sBAAuB,CAAA;AAChG,iBAAQqE,oBAAA,QAAA,EAAK,WAAW2E,gBAAe,UAAO3I,QAAA,CAAA;AAAA,QAClD;AAAA,QACA,eAAe,CAAC,EAAE,WAAW;;AAErB,iBAAAgE,oBAAA4B,KAAA,EACK,eAAK,iBAAiB,KAAK,cACvBD,oBAAA,OAAA,EAAI,WAAW,sBACZ,UAAA;AAAA,YAAC3B,oBAAA,OAAA,EAAI,WAAW,qCACZ,UAAAA;AAAAA,cAAC0E;AAAAA,cAAA;AAAA,gBACG,MAAM,KAAK,gBAAgB,KAAK,cAAc,OAAO;AAAA,gBACrD,KAAK,KAAK,gBAAgB,KAAK,cAAc,OAAO;AAAA,gBACpD,QAAQ;AAAA,gBACR,WAAW;AAAA,cAAA;AAAA,YAAA,GAEnB;AAAA,YACC,KAAK,gBACA,uBAAuB,KAAK,aAAa,KACzC/H,MAAA,KAAK,gBAAL,gBAAAA,IAAkB;AAAA,UAC5B,EAAA,CAAA,IAECqD,oBAAA,KAAA,EAAI,OAAO,KAAK,IAAI,QAAQ,GAAG,SAAS,WAAW,MAAO,CAAA,EAEnE,CAAA;AAAA,QAER;AAAA,MACJ;AAAA,MAEC,UAAA,sCACI,SAAS,QAAT,EACG,UAACA,oBAAA,YAAA,EAAY,GAAG,gBAAA,CAAiB,EACrC,CAAA;AAAA,IAAA;AAAA,EAGZ,EAAA,CAAA;AAER;ACvIA,MAAM,eAAe8E,EAAK,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA,QAAA,4BAAiB,CAAC,CAAA;AAElD,MAAM,sBAAmD,CAAC;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAAF;AAAA,EACA,GAAG;AACP,MAA+B;AACrB,QAAA,EAAE,SAAS1D;AACjB,QAAM,wBAAwB,CAAC,CAAC,uBAAuB,oBAAoB,SAAS;AAEpF,QAAM6D,sBAAqB1E;AAAAA,IACvB,OAAO;AAAA,MACH,aAAa,eAAe;AAAA,MAC5B,UAAU;AAAA,IAAA;AAAA,IAEd,CAAC,aAAa,qBAAqB;AAAA,EAAA;AAGjC,QAAA,eAAeA,IAAQ,OAAO,EAAE,aAAa0E,wBAAuB,CAACA,mBAAkB,CAAC;AAE9F,QAAM,EAAE,eAAe,cAAc,eAAe,IAAI,gBAAgB,YAAY;AAEpF,QAAM,aAAa5E;AAAAA,IACf,CAACxE,WAAwB;AACP,oBAAA;AAAA,QACV,WAAW,EAAE,MAAM,eAAe,MAAM,EAAE,GAAGA,QAAO,4BAA4B;AAAA,QAChF,WAAW;AAAA,MAAA,CACd,EAAE,SAAS,EAAE,IAAIA,OAAM,GAAI,CAAA;AAAA,IAChC;AAAA,IACA,CAAC,eAAe,yBAAyB;AAAA,EAAA;AAGvC,QAAA,cAAc,CAAC,CAAC;AAEtBoE,IAAU,MAAM;AACZ,QAAI,aAAa;AACb,kBAAY,SAAS;AAAA,IACzB;AAAA,EAAA,GACD,CAAC,WAAW,CAAC;AAGZ,SAAA4B,oBAAC,OAAI,EAAA,WAAWS,cACZ,UAAA;AAAA,IAAApC;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAA4E;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACR;AAAA,IACA5E;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,QAAO,iDAAgB,SAAQ,KAAK,IAAI,eAAe,KAAK,IAAI;AAAA,QAChE,QAAQ,CAAC,CAAC;AAAA,QACV,cAAY,KAAK,IAAI,oBAAoB;AAAA,QACzC,SAAS;AAAA,QACT,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB,OAAM,iDAAgB,cAAa;AAAA,QAElC,UACG,kBAAAA;AAAAA,UAACgF;AAAAA,UAAA;AAAA,YACG,8BACK,QAAK,EAAA,WAAW,yBACb,UAAChF,oBAAAiF,WAAA,EAAQ,MAAM,SAAA,CAAU,EAC7B,CAAA;AAAA,YAGJ,UAACjF,oBAAA,cAAA,EAAa,MAAM,eAAe,UAAU,MAAM;AAAA,UAAA;AAAA,QACvD;AAAA,MAAA;AAAA,IAER;AAAA,EACJ,EAAA,CAAA;AAER;ACjGO,MAAM,gBAAgB,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5C,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;ACArB,MAAA,sBAAsB,CAAC,cAAuB;AACjD,QAAA,QAAQ,CAAC,CAAE;AACjB,SAAO,UAAU,aAAa,QAAQ,IAAI,KAAK,IAAI,OAAO,cAAc,IAAI,KAAK,IAAI,OAAO,CAAC;AACjG;ACCa,MAAA,iCAAiC,CAAC,MAAgB,WAA2B;AAChF,QAAA,YAAY,KAAK,SAAS;AAEhC,MAAI,YAAY;AAAU,WAAA;AACtB,MAAA,UAAW,KAAK,CAAC;AAAc,WAAO,KAAK,CAAC;AAC5C,MAAA,UAAW,KAAK,SAAS;AAAc,WAAO,KAAK,SAAS;AAEhE,MAAI3C,SAAQ,GACR,KAAK,GACL,KAAK;AAET,SAAO,MAAM;AACT,UAAM,UAAU,KAAMA,SAAQ,IAAI,IAAI,EAAE,CAAE;AACtC,QAAA,KAAK,MAAM,WAAW;AAAgB,aAAA;AAC1C,aAAS,UAAW,KAAKA,SAAQ,IAAM,KAAKA,SAAQ;AAAA,EACxD;AACJ;AAEA,MAAM,eAAe,CAAC;AAAA,EAClB,iBAAiB;AAAA,EACjB;AACJ,MAA6G;AACzG,QAAM,qBAAqByC;AAC3B,QAAM,cAAcA;AAEd,QAAA,UAAUO,IAAQ,MAAM;AACtB,QAAA;AACM,YAAA,oCAAoB;AAE1B,iBAAW,UAAU,uBAAmC;AAC9C6E,cAAAA,SAAQ,oBAAoB,MAAM;AACxC,YAAIA,SAAQ;AAAG,wBAAc,IAAIA,MAAK;AAAA,MAC1C;AAEA,aAAO,OAAO,OAAO,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC9I,IAAGC,OAAMD,KAAIC,EAAC,CAAC;AAAA,IAAA,QACzD;AAAA,IAER;AAAA,EAAA,GACD,CAAC,qBAAqB,CAAC;AAEpB,QAAA,QAAQgE,IAAQ,MAAM;AACpB6E,QAAAA,SAAQ,oBAAoB,cAAc,KAAK;AAEnD;AAAa,UAAA;AACT,YAAI,mBAAmB,YAAY;AAAe,gBAAA;AAElD,cAAM,gBAAgB,IAAI,IAAK,mBAAmB,UAAU,OAAQ;AAEhE,YAAA,cAAc,SAAS,GAAG;AAC1B,6BAAmB,UAAU;AACvB,gBAAA;AAAA,QACV;AAEI,YAAA,YAAY,YAAYA,QAAO;AACpB,qBAAA;AACP,gBAAI,cAAc,SAAS,cAAc,IAAIA,MAAK,EAAE,MAAM;AAChD,oBAAA;AAAA,YACV;AAAO,4BAAc,OAAOA,MAAK;AAEjC,gBAAI,cAAc,SAAS,cAAc,IAAI,YAAY,OAAiB,EAAE,MAAM;AAC1E,kBAAA,SAAS,YAAY,OAAO,GAAG;AAC/BA,yBAAQ,YAAY;AACd,sBAAA;AAAA,cACV;AAAA,YACJ;AAAqB,4BAAA,OAAO,YAAY,OAAiB;AAGzDA,qBAAQ,+BAA+B,mBAAmB,SAAqBA,MAAK;AAAA,UACxF;AAAA,QACJ;AAAA,MAAA,QACI;AAAA,MAER;AAEA,WAAQ,YAAY,UAAUA;AAAAA,EAAA,GAC/B,CAAC,SAAS,cAAc,CAAC;AAErB,SAAA,EAAE,OAAO,cAAc;AAClC;AAEA,MAAA,iBAAe;ACpFf,MAAM,aAAa,CAAsC,kBAAsB;AACrE,QAAA,WAAWpF,EAAO,KAAK;AAC7B,QAAM,UAAUO,IAAQ,MAAM,eAAe,CAAC,aAAa,CAAC;AAE5DN,IAAU,MAAM;AACZ,aAAS,UAAU;AAEnB,WAAO,MAAM;AACT,eAAS,UAAU;AACnB,iBAAW,QAAQ;AAAA,IAAA;AAAA,EACvB,GACD,CAAC,OAAO,CAAC;AAEL,SAAA;AACX;AAEA,MAAA,eAAe;ACVf,MAAM,gBAAgB,CAClB,uBACA,qBACA,cACgB;AAChB,QAAM,cAAcD;AACpB,QAAM,kBAAkBA;AACxB,QAAM,sBAAsBA;AAC5B,QAAM,QAAQA;AAEd,QAAM,WAAWqF;AAAAA,IACbhF,IAAY,MAAM;;AACd,OAAAxD,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACrB,kBAAY,UAAU;AAAA,IAC1B,GAAG,EAAE;AAAA,EAAA;AAGT,QAAM,CAAC,MAAM,cAAc,IAAIkD,EAAS,MAAM,OAAO;AACrD,QAAM,CAAC,mBAAmB,uBAAuB,IAAIO,kBAAgB,KAAK;AACpE,QAAA,QAAQC,IAAQ,MAAM,oBAAoB,SAAS,GAAG,CAAC,SAAS,CAAC;AAEvE,QAAM,EAAE,cAAc,eAAe,gBAAgB,qBAAqB;AAEpE,QAAA,OAAOA,IAAQ,MAAM;AAChB,WAAA,sBACD,CAAC+E,UAAiB;;AACd,UAAI,EAAE,SAAS,OAAO,UAAUA,KAAI;AAAI;AAExC,YAAM,QAAQ;AACd,YAAM,gBAAgBA,QAAO,IAAIA,QAAO,QAAQ,IAAIA;AACpD,YAAM,qBAAqB,gBAAgB,MAAM,QAAQ,iBAAiB,QAAQ,kBAAkB;AAEpG,UAAI,CAAC;AAAoB;AAEzB,OAAAzI,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACT,kBAAA,UAAU,IAAI;AAE1B,UAAI,CAAC,SAAS;AAAS;AAEvB,WAAK,MAAM,UAAU,iBAAiB,KAAK,OAAO;AAC9C,uBAAe,MAAM,OAAO;AAAA,MAChC;AAEA,OAAC,YAAY;AACH,cAAA,EAAE,OAAO,IAAI,YAAY;AACzB,cAAA,SAAS,EAAE,GAAG,cAAc,eAAe,KAAK,GAAG,OAAO,MAAM;AAElE,YAAA;AACA,gBAAM,OAAO,MAAM,oBAAoB,QAAQ,MAAM;AACjD,cAAA,CAAC,QAAQ,CAAC,SAAS;AAAS;AAEhC,gBAAM,EAAE,MAAA0I,OAAM,GAAG,mBAAmB;AAEnB,2BAAA,eAAe,OAAO,cAAc;AACrC,0BAAA,UAAU,MAAM,WAAW,KAAK,IAAI,MAAM,SAAS,gBAAgB,WAAW,SAAS;AAEvG,cAAI,MAAM,WAAW,MAAM,YAAY,gBAAgB;AAAS,gCAAoB,UAAUA;AAC1F,cAAA,MAAM,YAAY,KAAKA,QAAO;AAAG,2BAAe,MAAM,OAAO;AAEjE,gBAAM,UAAU;AAChB,kCAAwB,IAAI;AAAA,iBACvB,IAAI;AACT,cAAI,OAAO;AAAS;AACpB,kBAAQ,MAAM,EAAE;AAAA,QACpB;AAAA,MAAA;IAGP,IAAA;AAAA,EAAA,GACR,CAAC,OAAO,mBAAmB,CAAC;AAEzB,QAAA,OAAOlF,IAAY,MAAM;AAC3B,YAAQ,KAAK,KAAK,IAAI,OAAO,GAAG,aAAc,CAAA,CAAC;AAAA,EAAA,GAChD,CAAC,MAAM,IAAI,CAAC;AAET,QAAA,OAAOA,IAAY,MAAM;AAC3B,YAAQ,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,EAAA,GACnC,CAAC,MAAM,IAAI,CAAC;AAET,QAAA,QAAQE,IAAQ,MAAM,kBAAkB,QAAQ,QAAW,CAAC,MAAM,iBAAiB,CAAC;AAC1F,QAAM,UAAUA,IAAQ,MAAM,CAAC,EAAE,QAAQ,UAAU,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;AACxE,QAAA,UAAUA,IAAQ,MAAM,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,IAAI,CAAC;AAExD,QAAM,OAAOA;AAAAA,IACT,MAAO,gBAAgB,WAAW,gBAAgB,UAAU,KAAK,SAAS,oBAAoB,WAAW,KAAK;AAAA,IAC9G,CAAC,MAAM,iBAAiB;AAAA,EAAA;AAG5B,QAAM,WAAWA,IAAQ,MAAM,SAAS,KAAK,IAAI,OAAO,QAAQ,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;AAE1F,QAAA,kBAAkBF,IAAY,MAAM;AACvB;AACf,oBAAgB,UAAU,oBAAoB,UAAU,MAAM,UAAU;AAC/D,aAAA,WAAW,eAAe,MAAM,OAAO;AAAA,EAAA,GACjD,CAAC,cAAc,CAAC;AAEnBJ,IAAU,MAAM;AACR,QAAA,SAAS,WAAW,mBAAmB;AACvC,8BAAwB,KAAK;AAAA,IACjC;AAAA,EAAA,GACD,CAAC,iBAAiB,CAAC;AAEf,SAAA,EAAE,MAAM,SAAS,SAAS,OAAO,MAAM,MAAM,OAAO,UAAU,MAAM,iBAAiB,KAAK;AACrG;AAEA,MAAA,kBAAe;ACrGR,MAAMuF,gBAAc,CAAC3J,WAAgD2E,WAAU3E,OAAsB,IAAI;AACzG,MAAM,cAAc,CAACA,WAAgD2E,WAAU3E,OAAsB,IAAI;AAEhH,MAAM,sBAAsB,CAAC,qBAAkE,cAAsC;AAC3H,QAAA,wBAAwB0E,IAAQ,MAAM;AACxC,UAAM,UAA4B,CAAA;AAC5B,UAAA,eAAe,MAAM,QAAQ;AACnC,UAAM,iBAAiB,MAAM;AACzB,cAAQ,SAAS;AAAA,IAAA;AAEf,UAAA,gBAAgB,CAAC,UAAkB,EAAE,QAAQ,QAAQ,OAAO,CAAC,EAAE;AAE/D,UAAA,eAAe,CAAC,QAAwB,SAAiB;AACrD,YAAA,gBAAgB,QAAQ,OAAO,CAAC;AAEjC,WAAA,SAAS,KAAK,UAAU,QAAQ,UAAU,KAAK,MAAM,kBAAkB,QAAW;AACnF,gBAAQ,OAAO,CAAC,IAAI,SAAS,mBAAmB,MAAM,IAAI;AAAA,MAC9D;AAAA,IAAA;AAGJ,UAAM,mBAAmB,CAAC,MAAc,OAAe,mBAAmC;AACtF,UAAIiF,cAAY,cAAc;AAAgB,qBAAA,eAAe,MAAM,OAAO,CAAC;AAC3E,UAAI,YAAY,cAAc;AAAgB,qBAAA,eAAe,MAAM,OAAO,CAAC;AAAA,IAAA;AAG/E,WAAO,EAAE,cAAc,eAAe,gBAAgB,iBAAiB;AAAA,EAC3E,GAAG,CAAE,CAAA;AAEE,SAAAC,gBAAqC,uBAAuB,qBAAqB,SAAS;AACrG;AAEA,MAAA,wBAAe;ACnCF,MAAA,cAAc,CAAC5J,WAAiDA,OAAsB;AAEnG,MAAM,sBAAsB,CACxB,qBACA,cACgB;AACV,QAAA,wBAAwB0E,IAAQ,MAAM;AACxC,QAAI,cAAc;AAClB,UAAM,eAAe,MAAM;AAC3B,UAAM,iBAAiB,MAAM;AAAgB,oBAAA;AAAA,IAAA;AACvC,UAAA,gBAAgB,CAAC,MAAc,WAAmB,EAAE,SAAS,OAAO,KAAK,MAAM;AAErF,UAAM,mBAAmB,CAAC,MAAc,OAAe,mBAAmC;AACtF,UAAI,YAAY,cAAc,KAAK,eAAe,MAAM;AACpD,sBAAc,KAAK,IAAI,aAAa,OAAO,CAAC;AAAA,MAChD;AAAA,IAAA;AAGJ,WAAO,EAAE,cAAc,eAAe,gBAAgB,iBAAiB;AAAA,EAC3E,GAAG,CAAE,CAAA;AAEE,SAAAkF,gBAAqC,uBAAuB,qBAAqB,SAAS;AACrG;AAEA,MAAA,wBAAe;AC1Bf,MAAM,mBAAmB,CACrB,SAA4C,cAC5C,4BAA4B,SACW;AACjC,QAAA,mBAAmBzF,EAAO,yBAAyB;AACnD,QAAA,gBAAgBA,EAAO,OAAO,OAAO,EAAE,GAAG,OAAQ,CAAA,CAAsC;AACxF,QAAA,eAAeA,EAAO,IAAI,IAAI,OAAO,KAAK,cAAc,OAAO,CAAY,CAAC;AAClF,QAAM,iBAAiBA,EAAW,oBAAA,IAAY,CAAA;AAC9C,QAAM,WAAWqF;AAEjB,QAAM,CAAC,YAAY,WAAW,IAAI9E,IAAQ,MAAM;AACtC,UAAA,qBAAqB,CAAC,uBAAiE;AACzF,UAAI,CAAC,SAAS;AAAS;AACvB,eAAS,kBAAkB;AAAA,IAAA;AAGxB,WAAA;AAAA,MACH,MAAM,mBAAmB,OAAO;AAAA,MAChC,CAAC,uBAA0E,mBAAmB,kBAAkB;AAAA,IAAA;AAAA,EACpH,GACD,CAAC,QAAQ,CAAC;AAEb,QAAM,CAACH,QAAO,QAAQ,IAAIiB,EAAW,CAACjB,SAAO,uBAAiE;AAC1G,QAAI,uBAAuB,SAAS;AAChC,qBAAe,QAAQ;AACvB,aAAO,cAAc;AAAA,IACzB;AAEM,UAAA,cAAc,EAAE,GAAG;AACnB,UAAA,mBAAmB,CAAC,CAAC;AAE1B,WAAO,KAAK,WAAW,EAAc,QAAQ,CAAC,KAAK7C,WAAU;AAC1D,UAAI,CAAC,aAAa,QAAQ,IAAI,GAAG;AAAG;AAE9B,YAAA,eAAe6C,QAAM,GAAG,KAAK;AACnC,YAAM,eAAe,cAAc,QAAQ,GAAG,KAAK;AAC7C,YAAA,cAAc,YAAY,GAAG,KAAK;AAExC,UAAI,gBAAgB;AAAc;AAElC,YAAM,YAAY,KAAK,MAAM7C,SAAQ,EAAE;AACjC,YAAA,aAAa,KAAKA,SAAQ;AAEhC,kBAAY,GAAG,IAAI;AACnB,uBAAiB,SAAS,KAAK;AAC/B,qBAAe,QAAQ,gBAAgB,eAAe,WAAW,KAAK,EAAE,GAAG;AAAA,IAAA,CAC9E;AAEK,UAAA,QAAQ,iBAAiB,KAAK,CAAA,SAAQ,IAAI,IAC1C,iBAAiB,WAAW,eAAe,QAAQ,SAAS,IACxD,cAAc,UACd,OAAO,OAAO,EAAE,GAAG6C,SAAO,GAAG,aAAa,IAC9CA;AAEF,QAAA,CAAC,iBAAiB,SAAS;AAG3B,oBAAc,UAAU;AACxB,uBAAiB,UAAU;AAAA,IAC/B;AAEO,WAAA;AAAA,EAAA,GACR,cAAc,OAAO;AAElB,QAAA,gBAAgBG,IAAQ,MAAM,CAAC,CAAC,eAAe,QAAQ,MAAM,CAAA,CAAE;AAErEN,IAAU,MAAM;AACZ,kBAAc,UAAU,OAAO,OAAO,EAAE,GAAG,QAAQ;AACnD,iBAAa,UAAU,IAAI,IAAI,OAAO,KAAK,cAAc,OAAO,CAAY;AAC5E,qBAAiB,UAAU;AAChB;EACZ,GAAA,CAAC,2BAA2B,QAAQ,UAAU,CAAC;AAClD,SAAO,EAAE,eAAe,cAAc,cAAc,SAAS,YAAY,OAAAG,QAAO;AACpF;AAEA,MAAA,qBAAe;AC3Ef,MAAM,6BAA6B,CAC/B,eAA8D,cAC9D,gCACuD;AACjD,QAAA;AAAA,IACF,eAAe;AAAA,IACf,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA,IACbsF,mBAA2C,cAAc,2BAA2B;AAExF,SAAO,EAAE,iBAAiB,gBAAgB,SAAS,cAAc,cAAc;AACnF;AAEA,MAAA,+BAAe;AClBG,IAAA,kCAAAC,mBAAX;AACHA,iBAAA,MAAO,IAAA;AACPA,iBAAA,MAAO,IAAA;AAFOA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AAKA,IAAA,mCAAAC,oBAAX;AACHA,kBAAA,QAAS,IAAA;AACTA,kBAAA,QAAS,IAAA;AAFKA,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;ACmBlB,MAAM,iBAAiB,CAAC,cAAc,MAAM,cAAc,IAAI;AAC9D,MAAM,gCAAgC,CAAC,WAAW,aAAa;AAE/D,MAAM,gCAAgC,CAClC,SACuD;AACjD,QAAA,iBAAiB,OAAO,oBAAoB,IAAoD;AACtG,SAAO,CAAC,8BAA8B,KAAK,UAAQ,eAAe,SAAS,IAAI,CAAC;AACpF;AAEA,MAAM,mCAAmC,CACrC,MACA,YAAmD,WAClD;AACK,QAAA,UAAU,KAAK,SAAS;AAE1B,MAAA,8BAA4C,IAAI,GAAG;AACnD,UAAM,iBAAiB,OAAO;AAAA,MACzB,OAAO,QAAQ,QAAQ,YAAY,EAAgC;AAAA,QAChE,CAAC,CAAC,WAAW,MAAM,MAAM,eAAe,SAAS,SAA0B,KAAK;AAAA,MACpF;AAAA,IAAA;AAGG,WAAA,EAAE,SAAS;EACtB;AAEM,QAAA,IAAI,UAAU,0BAA0B;AAClD;AAEA,MAAM,mCAAmC,CACrC,MACA,YAAmD,WAClD;AACK,QAAA,UAAU,KAAK,SAAS;AAE1B,MAAA,CAAC,8BAA4C,IAAI,GAAG;AAC9C,UAAA,EAAE,SAAS,YAAgB,IAAA;AAEjC,UAAM,iBAAiB;AAAA,MACnB,CAAC,cAAc,IAAI,GAAG,YAAY;AAAA,MAClC,CAAC,cAAc,IAAI,GAAG,gBAAgB;AAAA,IAAA;AAGnC,WAAA,EAAE,SAAS;EACtB;AAEM,QAAA,IAAI,UAAU,0BAA0B;AAClD;AAEA,MAAM,sBAAsB,CAAsF;AAAA,EAC9G,YAAY;AAAA,EACZ;AAAA,EACA,eAAe;AAAA,EACf,8BAA8B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAiI;AAC7H,QAAM,CAAC,SAAS,UAAU,IAAI7F,EAAc,CAAE,CAAA;AAC9C,QAAM,CAAC,UAAU,cAAc,IAAIO,kBAAgB,IAAI;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAIP,EAAuC;AACjE,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,EAAS,cAAc;AAE3E,QAAM,WAAWsF;AACX,QAAA,0BAA0BrF,EAAO,IAAI;AACrC,QAAA,qBAAqBA,EAAO,CAAC;AAC7B,QAAA,kBAAkB6F,6BAAqD,cAAc,2BAA2B;AAEhH,QAAA,EAAE,OAAO,iBAAiBC,eAAa,EAAE,gBAAgB,oBAAoB,sBAAA,CAAuB;AAC1G,QAAM,EAAE,gBAAgB,SAAS,eAAe,GAAG,aAAiB,IAAA;AAE9D,QAAA,CAAC,4BAA4BL,cAAa,IAAIlF;AAAAA,IAChD,MACI,eAAe,eAAe,SACxB,CAAC,kCAAkCwF,qBAAmB,IACtD,CAAC,kCAAkCC,qBAAmB;AAAA,IAChE,CAAC;AAAA,EAAA;AAGC,QAAA,cAAc3F,IAAY,CAAC+E,WAAkB,sBAAsBA,MAAK,GAAG,CAAA,CAAE;AAEnF,QAAM,EAAE,MAAM,MAAM,OAAO,iBAAiB,GAAG,oBAAoBK;AAAA,IAC/DpF;AAAAA,MACI,OACI,EAAE,MAAAiF,OAAM,GAAG,kBAAA,GACX,WAC0D;AACtD,YAAA;AACA,mBAAS,MAAS;AAClB,6BAAmB,UAAUA;AAE7B,cAAI,CAAC,SAAS,WAAsB,eAAe,IAAI;AAAG;AAEpD,gBAAA,MAAM,MAAM,aAAa,EAAE,GAAG,mBAAmB,GAAG,QAAQ,GAAG,MAAM;AAC3E,gBAAM,EAAE,SAAAW,UAAS,eAAmB,IAAA,2BAAyC,KAAK,SAAS;AAE3F,cAAI,wBAAwB,SAAS;AACjC,qDAAa,CAACA,UAAS,cAAc,GAA4D;AACjG,oCAAwB,UAAU;AAAA,UACtC;AAEA,cAAI,SAAS,SAAS;AAClB,uBAAWA,QAAO;AAClB,2BAAe,KAAK;AAAA,UACxB;AAEA,iBAAO,EAAE,GAAG,gBAAgB,MAAMA,qCAAS,OAAO;AAAA,iBAC7C,KAAK;AAEV,cAAI,iCAAQ;AAAS;AACrB,yBAAe,KAAK;AACpB,mBAAS,GAAmC;AAE5C,kBAAQ,MAAM,GAAG;AAAA,QACrB;AAAA,MACJ;AAAA,MACA,CAAC,cAAc,SAAS,KAAK;AAAA,IACjC;AAAA,IACA;AAAA,EAAA;AAGJ1F,MAAQ,MAAM;AACV,4BAAwB,UAAU;AAAA,EAAA,GAEnC,CAAC,YAAY,CAAC;AAEjBA,MAAQ,MAAM;AACM;AAChB,uBAAmB,UAAU;AAAA,EAE9B,GAAA,CAAC,SAAS,OAAO,eAAe,CAAC;AAEpCN,IAAU,MAAM;AACR,QAAA;AAAS,WAAK,mBAAmB,OAAO;AAAA,EAAA,GAC7C,CAAC,MAAM,OAAO,CAAC;AAElBA,IAAU,MAAM;AACZ,yDAAmB;AAAA,EAAO,GAC3B,CAAC,OAAO,CAAC;AAEZA,IAAU,MAAM;AACZ,qDAAiB;AAAA,EAAK,GACvB,CAAC,KAAK,CAAC;AAEV,SAAO,EAAE,OAAO,UAAU,SAAS,MAAM,cAAc,MAAM,OAAO,SAAS,eAAe,aAAa,GAAG,cAAc,GAAG,gBAAgB;AACjJ;AAEA,MAAA,wBAAe;AC7Kf,MAAM,4BAA4B,CAC9B,gBACmD;AACnD,SAAOiG,sBAA4D;AAAA,IAC/D,GAAG;AAAA,IACH,YAAY,eAAe;AAAA,EAAA,CAC9B;AACL;AAEA,MAAA,8BAAe;ACTf,MAAM,SAAS,MAAM;AACjB,MAAI,YAA2B;AAC3B,MAAA;AAGJ,QAAM,oBAAoB,CAAC,IAAY,QAAqB,aAAwB;AAChF,UAAM,QAAQ,SAAS,SAAS,eAAe,YAAY;AAErD,UAAA,gBAAgB,CAAC,SAAiB;AACpC,YAAM,UAAU,OAAO;AACvB,YAAM,iBAAiB,KAAK,MAAM,UAAU,EAAE,IAAI;AAC5C,YAAA,aAAa,QAAQ,iBAAiB;AACtC,YAAA,QAAQ,aAAa,YAAY,IAAI;AAC3C,iBAAW,MAAM,sBAAsB,KAAK,GAAG,KAAK;AAAA,IAAA;AAGlD,UAAA,QAAQ,CAAC,SAAiB;AAC5B,UAAI,OAAO;AAAS;AACpB,oBAAc,IAAI;AACT;IAAA;AAGb,kBAAc,KAAK;AAAA,EAAA;AAGvB,QAAM,4BAA4B,MAAM;AACpC,gBAAY,KAAK;AACjB,IAAA5I,WAAU,OAAO;AAAA,EAAA;AAGrB,QAAM,eAAe,MAAM,aAAa,KAAK,IAAI;AACjD,QAAMA,aAAY6I,YAAW,EAAE,WAAW,aAAc,CAAA;AAE9C,EAAA7I,WAAA,SAAS,SAAS,MAAM;AAC9B,iBAAa,IAAI;AACjB,gBAAY,KAAK;AACC,sBAAA,KAAM,WAAW,QAAQ,yBAAyB;AAAA,EAAA;AAG9D,EAAAA,WAAA,SAAS,OAAO,MAAM;AAC5B,eAAW,MAAM;AACL,gBAAA;AAAA,EAAA;AAGhB,SAAO,OAAO;AAAA,IACV,WAAW,EAAE,KAAK,aAAa;AAAA,IAC/B,OAAO,EAAE,OAAOA,WAAU,MAAM;AAAA,EAAA,CACnC;AACL;AAEA,MAAA,UAAe;AChDf,MAAM,SAAS,MAAM;AACX,QAAA,gCAAgB;AACtB,QAAMR,aAAYsJ;AAElB,QAAM,iCAAiC,CAAC,gBAAgBC,QAAM,cAAc;AAClE,UAAAzJ,QAAO,IAAI,KAAK,aAAa;AACnC,UAAM,gBAAgB,IAAI,KAAK,iBAAiBE,YAAW,aAAa,CAAC;AACzE,UAAM,WAAYF,MAAK,QAAQ,IAAI,cAAc,QAAQ;AAEzD,QAAI,UAAU;AAEV,YAAM,aAAa,WAAW,IAAI,KAAK,WAAW,KAAK,IAAI;AAC3D,MAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,UAAU;AAAA,IAC5C;AAEM,UAAA,mBAAmB,iBAAiBE,YAAWF,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;AACxE,UAAA,gBAAgB,iBAAiBE,YAAWF,MAAK,QAAQA,MAAK,QAAA,IAAY,CAAC,CAAC;AAC3E,WAAA,CAAC,kBAAkB,gBAAgB,gBAAgB;AAAA,EAAA;AAG9D,SAAO,CAACY,cAAsD;AAC1D,IAAAV,WAAU,KAAKU;AAET,UAAA,KAAKV,WAAU,GAAG;AAExB,WACI,UAAU,IAAI,EAAE,MACf,MAAM;AACH,UAAI,YAA2B;AAC/B,UAAI,iBAAgC;AACpC,UAAI,UAA6C;AAEjD,YAAM,eAAe,MAAM;AACvB,QAAAA,WAAU,KAAK;AACR,eAAA,aAAa,iCAAiC,CAAC;AAAA,MAAA;AAG1D,YAAM,oBAAoB,CAAC,gBAAgBuJ,QAAM,cAAc;AAC3D,QAAAvJ,WAAU,KAAK;AACf,SAAC,WAAW,cAAc,IAAI,+BAA+B,aAAa;AAAA,MAAA;AAG9E,YAAMQ,aAAY6I,YAAW,EAAE,WAAW,aAAc,CAAA;AAE9C,MAAA7I,WAAA,SAAS,SAAS,MAAM;AACpB,kBAAA+I,QAAM,MAAM,CAAoB,qBAAA;AACtC,cAAI,qBAAqBF,YAAW;AAAS;AACzC,cAAA,cAAc,QAAQ,mBAAmB;AAAM,mBAAO,kBAAkB;AACxE,cAAAE,QAAM,YAAY,YAAY;AAAgB;AAEhC;AAClB,UAAA/I,WAAU,OAAO;AAAA,QAAA,CACpB;AAAA,MAAA;AAGK,MAAAA,WAAA,SAAS,OAAO,MAAM;AAClB;AACV,oBAAY,iBAAiB,UAAU;AAAA,MAAA;AAG3C,YAAM,WAAW,OAAO;AAAA,QACpB,WAAW,EAAE,KAAK,aAAa;AAAA,QAC/B,UAAU,EAAE,OAAO,GAAG;AAAA,QACtB,OAAO,EAAE,OAAOA,WAAU,MAAM;AAAA,MAAA,CACnC;AAES,gBAAA,IAAI,IAAI,QAAQ;AACnB,aAAA;AAAA,IAAA;EACR;AAGf;AAEA,MAAA,UAAe;ACpER,MAAM,EAAE,iBAAiB,gBAAgB,KAAK,MAAM;AACvD,QAAM,2BAA2B;AACjC,QAAMgJ,wCAAuC;AAC7C,QAAM,aAAaxJ;AAEnB,QAAMyJ,mBAAkB,CAAC/I,WAAsC,YAAY,KAAK,UAAU;AACtF,eAAW,KAAKA;AAEhB,UAAM,EAAE,UAAA,IAAc,WAAW,SAAS;AACpC,UAAA,CAAC,OAAO,IAAA,EAAA,EAAQ,WAAW,EAAE,KAAI,uCAAW,MAAM,8BAA6B;AAC/E,UAAA,SAAS,yCAAyC,SAAS;AACjE,UAAM,YAAY,GAAG,IAAI,GAAG,YAAY,IAAI,QAAQ,EAAE;AACtD,UAAM,kBAAkB,8BAA8B,MAAM,EAAE,QAAQ8I,uCAAsC,EAAE;AAEvG,WAAA,CAAC,WAAW,eAAe;AAAA,EAAA;AAGhCE,QAAAA,mBAAkB,CAAChJ,cAA0C;AAC/D,eAAW,KAAKA;AAChB,WAAO,WAAW,GAAG;AAAA,EAAA;AAGzB,SAAO,EAAE,iBAAA+I,kBAAiB,iBAAAC,iBAAgB;AAC9C;AAEA,MAAM,cAAc,CAAC,EAAE,UAAU,IAAI,YAAY,UAA6B,iBAAiB;AAC3F,QAAM,mBAAmBjG,IAAQ,MAAM,cAAc,MAAM,CAAC,SAAS,CAAC;AAChE,QAAA/C,YAAW+C,IAAQ,MAAM,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;AAClD,QAAA,eAAeP,EAAO,IAAI;AAEhC,QAAM,CAAC,WAAW,YAAY,IAAID,EAAS,KAAK,KAAK;AACrD,QAAM,CAAC,WAAW,SAAS,IAAIQ,IAAQ,MAAM,gBAAgB/C,WAAU,SAAS,GAAG,CAAC,WAAWA,SAAQ,CAAC;AAExG+C,MAAQ,MAAM;AACV,iBAAa,QAAQ;AAErB,iBAAa,UAAU,mBACjB8F,QAAM,MAAM,CAAoB,qBAAA;AAC5B,UAAI,OAAO,qBAAqB;AAAU;AAC1C,mBAAa,iBAAiB,SAAS;AAAA,IAC1C,CAAA,IACD;AAAA,EAAA,GACP,CAAC,cAAc,gBAAgB,CAAC;AAEnC,SAAO,EAAE,WAAW,WAAW,WAAW,UAAA7I,UAAS;AACvD;ACxCa,MAAA,gBAAgB,CAAU3B,WACnC,SAASA,MAAK,EAAE,MAAM,GAAG,EAAE,MAAM,WAAWA,SAAQ;AAEjD,MAAM,SAAS,CAAU,KAAc4K,cAAa,UACtD;AAAA,EACG,YAAaA,gBAAuB;AAAA,EACpC;AACJ;AAEG,MAAM,+CAA+C,CAAC3J,eACzD,OAAO,OAAO;AAAA,EACV,kBAAkB,WAAW,CAAC,SAAoC,iBAAiBA,YAAW,IAAI,CAAC;AAAA,EACnG,kBAAkB,WAAW,CAAC,SAAoC,iBAAiBA,YAAW,IAAI,CAAC;AAAA,EACnG,gBAAgB,WAAW,CAAC,SAAoCA,WAAU,IAAI,EAAE,MAAM;AAC1F,CAAC;AAEE,MAAM,kDAAkD,CAC3D,YACA,YACA,iBAAoB,eACnB;AACK,QAAA,sBAAsB,CAACjB,QAAkB,kBAAsB;AACjE,QAAI,kBAAkBA;AAEtB,QAAIA,UAAS;AAA6B,wBAAA;AAAA,aACjC,CAAC,iBAAiBA,MAAK;AAAG,wBAAkB,iBAAiB;AAEtE,UAAM,eAAe,MAAM,YAAY,iBAAiB,UAAU;AAC3D,WAAA,iBAAiB,kBAAkB,eAAe,iBAAiB;AAAA,EAAA;AAG9E,SAAO,CAAC,iBAAqB;AACnB,UAAA,cAAc,OAAO,MAAM,eAAe;AAC5C,QAAA,kBAAkB,oBAAoB,YAAY;AAEtD,WAAO,OAAO;AAAA,MACV,OAAO;AAAA,MACP,YAAY,WAAW;AAAA,QACnB,GAAG;AAAA,QACH,IAA2BA,QAAkB;AACzC,gBAAM,eAAe;AACH,4BAAA,oBAAoBA,QAAO,eAAe;AAC5D,cAAI,iBAAiB;AAAiB,iBAAK,MAAM,KAAK;AAAA,QAC1D;AAAA,MAAA,CACH;AAAA,IAAA,CACJ;AAAA,EAAA;AAKT;AAEO,MAAM,6CACT,CAAC,QAA+B,YAChC,CAASA,WACL,WAAWA,MAAK,IAAIA,OAAM,KAAK,QAAQ,OAAO,IAAIA;AAEnD,MAAM,wCAAwC,CAAC,WAClD,CAAC,eAAe,QAAQ,SAAS;AAE9B,MAAM,yCAAyC,CAClD,WACiD,eAAe,QAAQ,MAAM;AAE3E,MAAM,eAAgB,CAAC,EAAE,IAAU,MAAA;AAEnC,MAAM,mBAAmB,MAAM;AAC5B,QAAA,6BAAa;AAEnB,SAAO,CAAC,iBAAyB;AACzB,QAAA,UAAU,OAAO,IAAI,YAAY;AAErC,QAAI,YAAY,QAAW;AACb,gBAAA,OAAO,OAAO,CAAC,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,EAAE,CAAU;AAC3D,aAAA,IAAI,cAAc,OAAO;AAAA,IACpC;AAEO,WAAA;AAAA,EAAA;AAEf;AAEa,MAAA,sBAAsB,CAAC,cAAiE;AAC7F,MAAA;AACA,UAAM,sBAAsB,qBAAqB,QAAQ,CAAC,cAAc,YAAY,YAAY;AAChG,UAAM,kBAAkB,IAAI,KAAK,mBAAqC,EAAE,QAAQ;AACzE,WAAA,MAAM,eAAe,IAAI,SAAY;AAAA,EAAA,QACxC;AAAA,EAER;AACJ;AAEa,MAAA,aAAa,CAACe,UAAeA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAErD,MAAA,eAAe,CAACA,UAAe;AACxC,aAAWA,KAAI;AACR,SAAAA,MAAK,QAAQ,CAAC;AACzB;AAEa,MAAA,cAAc,CAACA,UAAe;AACvC,aAAWA,KAAI;AACR,SAAAA,MAAK,SAAS,GAAG,CAAC;AAC7B;AAEO,MAAM,oBAAoB,CAAC,cAAuB,UAAmB,iBAAiB;AACzF,QAAM,UAAY,CAAC,UAAU,KAAM,eAAe,MAAM;AACxD,SAAO,IAAI;AACf;AC7GA,MAAM,+BAA+B,CACjC,SAAgC,cAChC,oBAAuE,iBACtE;AACK,QAAA8J,WAAU,cAAc,MAAM;AAC9B,QAAA,qBAAqB,cAAc,iBAAiB;AAE1D,SAAO,MAAM;AACT,UAAM,aAAa5J;AACb,UAAA,gBAAgB,OAAO,MAAM,GAAG;AACtC,UAAM,eAAe,OAAO,MAAM,WAAW,GAAG,OAAO;AACvD,UAAM,gBAAgB,OAAO;AAAA,MACzB,KAAK;AAAA,MACL,UAAU;AAAA,MACV,GAAG,6CAA6C,UAAU;AAAA,IAAA,CAC7D;AACK,UAAA6J,UAAS,2CAA2CD,UAAS,aAAa;AAEhF,QAAI,EAAE,MAAAE,OAAM,IAAAC,KAAI,KAAK,QAAQ;AAEvB,UAAA,YAAY,CAAC,cAA6C;AAC5D,YAAM,oBAAqB,aAAa,KAAK,IAAA,CAAwB,KAAK;AAEjE,eAAA;AACD,YAAA,sCAAsCH,QAAO,GAAG;AAChD,UAAAE,QAAO,oBAAoBD,QAAOD,SAAQ,IAAI,CAAC,KAAK;AACpD,UAAAG,MAAK,oBAAoBF,QAAOD,SAAQ,EAAE,CAAC,KAAK;AAC1C,gBAAA;AAAA,QACV;AAEI,YAAA9J;AACA,YAAA;AACA,YAAA;AAEC,YAAA,gBAAgB,uCAAuC8J,QAAO,GAAI;AAC5D,UAAA9J,QAAA,IAAI,KAAMgK,QAAO,oBAAoBD,QAAOD,SAAQ,IAAI,CAAC,KAAK,GAAI;AAC7D,sBAAA;AAAA,QAAA,OACT;AACI,UAAA9J,QAAA,IAAI,KAAMiK,MAAK,oBAAoBF,QAAOD,SAAQ,EAAE,CAAC,KAAK,GAAI;AACzD,sBAAA;AAAA,QAChB;AAGA,QAAA9J,QAAO,IAAI,KAAK,cAAc,iBAAiBA,KAAI,CAAC;AAEpD,cAAM,CAAC,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI+J,QAAOD,SAAQ,OAAO;AAE7G,QAAA9J,MAAK,YAAYA,MAAK,YAAY,IAAI,QAAQ,WAAWA,MAAK,SAAS,IAAI,SAAS,WAAWA,MAAK,QAAQ,IAAI,OAAO,SAAS;AAE3H,QAAAA,MAAA;AAAA,UACDA,MAAK,aAAa,QAAQ;AAAA,UAC1BA,MAAK,eAAe,UAAU;AAAA,UAC9BA,MAAK,eAAe,UAAU;AAAA,UAC9BA,MAAK,oBAAoB,KAAK;AAAA,QAAA;AAIlC,cAAMkK,aAAY,oBAAoB,cAAc,iBAAiBlK,KAAI,CAAC,KAAK;AAE9D,wBAAAiK,MAAKC,aAAcF,QAAOE;AAAAA,MAC/C;AAEA,UAAIF,QAAOC;AAAI,SAACD,OAAMC,GAAE,IAAI,CAACA,KAAID,KAAI;AAAA,IAAA;AAGnC,UAAA,WAAW,CAACpJ,cAA6D;AAC3E,YAAM,KAAK,WAAW;AACtB,YAAM,kBAAkB,GAAG;AAC3B,iBAAW,KAAKA;AAChB,UAAI,GAAG,YAAY;AAAiB,kBAAU,GAAG;AAAA,IAAA;AAG3C;AAEV,WAAO,OAAO;AAAA,MACV,GAAG;AAAA,MACH,MAAM,OAAO,MAAMoJ,KAAI;AAAA,MACvB,KAAK,EAAE,GAAG,eAAe,KAAK,UAAU;AAAA,MACxC,UAAU,EAAE,GAAG,cAAc,KAAK,SAAS;AAAA,MAC3C,IAAI,OAAO,MAAMC,GAAE;AAAA,IAAA,CACtB;AAAA,EAAA;AAET;AAEA,MAAA,iCAAe;AC5FR,MAAM,yBAAyB;AACzB,MAAA,mBAAmB,gBAAgB,CAAC;AAEjD,MAAM,0BAA0B,gDAAyD,GAAG,GAAG,sBAAsB;AAErH,MAAM,aAAa,CAAC,YAAoB,MAAM;AAC1C,QAAM,QAAQ,CAAC,CAAC,MAAM,GAAG,WAAqB,QAAQ,KAAK;AAEpD,SAAA,CAAC,eAAwB,2BAA2B;AACjD,UAAA,aAAa,QAAQ,EAAE,SAAS,qBAAqB,EAAE,IAAI;AAC3D,UAAA,sBAAsB,wBAAwB,YAAY;AAEzD,WAAAE;AAAAA,MACH;AAAA,QACI,MAAM,CAAC,EAAE,KAAK,kBAAAC,mBAAkB,kBAAAC,wBAAuB;AAC7C,gBAAArK,QAAO,IAAI,KAAK,GAAG;AACzB,gBAAM,gBAAgB,IAAI,KAAKqK,kBAAiB,GAAG,CAAC;AACpD,gBAAM,UAAWrK,MAAK,OAAO,IAAI,cAAc,OAAO;AAEtD,qBAAWA,KAAI;AAEf,cAAI,SAAS;AAET,kBAAM,WAAW,UAAU,IAAI,KAAK,UAAU,KAAK,IAAI;AACvD,YAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,QAAQ;AAAA,UAC1C;AAEM,gBAAA,aAAa,kBAAkB,oBAAoB,OAAOA,MAAK,OAAmB,CAAA,IAAI,QAAQ;AACpG,UAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,UAAU;AAExC,iBAAOoK,kBAAiBpK,KAAI;AAAA,QAChC;AAAA,QACA,GAAG;AAAA,MACP;AAAA,MACA,EAAE,cAAc,oBAAoB,WAAW;AAAA,IAAA;EACjD;AAEV;AAEA,MAAA,eAAe;ACvCF,MAAA,oBAAoB,OAAO,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAU;AAE9E,MAAM,cAAc,CAAC,aAAqB,MAAM;AAC5C,QAAM,SAAS,CAAC,CAAC,MAAM,GAAG,YAAsB,QAAQ,KAAK;AACvD,QAAA,aAAa,SAAS,EAAE,SAAS,sBAAsB,EAAE,IAAI;AAEnE,SAAOmK,+BAA6B;AAAA,IAChC,MAAM,CAAC,EAAE,KAAK,kBAAAC,mBAAkB,kBAAAC,wBAAuB;AAC7C,YAAArK,QAAO,IAAI,KAAK,GAAG;AACzB,YAAM,gBAAgB,IAAI,KAAKqK,kBAAiB,GAAG,CAAC;AACpD,YAAM,YAAarK,MAAK,SAAS,IAAI,cAAc,SAAS;AAE5D,UAAI,cAAc;AAElB,UAAI,WAAW;AAEX,uBAAe,YAAY,IAAI,KAAK,YAAY,KAAK,IAAI;AAAA,MAC7D;AAEA,mBAAaA,KAAI;AACjB,MAAAA,MAAK,SAASA,MAAK,SAAS,IAAI,WAAW;AAC3C,aAAOoK,kBAAiBpK,KAAI;AAAA,IAChC;AAAA,IACA,GAAG;AAAA,EAAA,CACN;AACL;AAEA,MAAA,gBAAe;AC/Bf,MAAM,YAAYsK,cAAY,CAAC;AAC/B,MAAA,cAAe;ACCR,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,mBAAmB;AAEhC,MAAM,0BAA0B,gDAAwD,cAAc,cAAc,gBAAgB;AAEpI,MAAM,YAAY,CAAC,iBAA0B;AACnC,QAAA,sBAAsB,wBAAwB,YAAY;AAEzD,SAAAH;AAAAA,IACH;AAAA,MACI,MAAM,CAAC,EAAE,KAAK,kBAAAC,mBAAkB,kBAAAC,wBAAuB;AAC7C,cAAArK,QAAO,IAAI,KAAK,GAAG;AACzB,cAAM,gBAAgB,IAAI,KAAKqK,kBAAiB,GAAG,CAAC;AACpD,cAAM,WAAYrK,MAAK,QAAQ,IAAI,cAAc,QAAQ;AAErD,YAAA,aAAa,oBAAoB,QAAQ;AAE7C,YAAI,UAAU;AAEV,wBAAc,WAAW,IAAI,KAAK,WAAW,KAAK,IAAI;AAAA,QAC1D;AAEA,mBAAWA,KAAI;AACf,QAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,UAAU;AACxC,eAAOoK,kBAAiBpK,KAAI;AAAA,MAChC;AAAA,MACA,IAAI;AAAA,IACR;AAAA,IACA,EAAE,cAAc,oBAAoB,WAAW;AAAA,EAAA;AAEvD;AAEA,MAAA,cAAe;ACnCf,MAAM,WAAWuK,aAAW,CAAC;AAC7B,MAAA,aAAe;ACDf,MAAM,YAAYD,cAAY,CAAC;AAC/B,MAAA,cAAe;ACDf,MAAM,WAAWC,aAAW,CAAC;AAC7B,MAAA,aAAe;ACCf,MAAM,aAAaJ,+BAA6B;AAAA,EAC5C,MAAM,CAAC,EAAE,KAAK,kBAAAC,mBAAkB,kBAAAC,wBAAuB;AAC7C,UAAArK,QAAO,IAAI,KAAK,GAAG;AACzB,UAAM,gBAAgB,IAAI,KAAKqK,kBAAiB,GAAG,CAAC;AACpD,UAAM,aAAcrK,MAAK,YAAY,IAAI,cAAc,YAAY;AAEnE,gBAAYA,KAAI;AAChB,IAAAA,MAAK,YAAYA,MAAK,YAAY,IAAI,UAAU;AAChD,WAAOoK,kBAAiBpK,KAAI;AAAA,EAChC;AAAA,EACA,IAAI;AACR,CAAC;AAED,MAAA,eAAe;ACAF,MAAA,4CAA4C,MACrD,OAAO,OAAO;AAAA,EACV,yBAAyBwK,YAAsB,CAAC;AAAA,EAChD,wBAAwBC,WAAqB;AAAA,EAC7C,wBAAwBC,WAAqB;AAAA,EAC7C,yBAAyBC,YAAsB;AAAA,EAC/C,yBAAyBC,YAAsB;AAAA,EAC/C,0BAA0BC,aAAuB;AACrD,CAAU;AAEP,MAAM,wBAAwB,CAAC;AAAA,EAClC,MAAM,KAAK,IAAI;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,UAAAjK;AACJ,MAAmC;AACzB,QAAA,EAAE,SAAS4D;AACjB,QAAM,CAACwF,OAAM,OAAO,IAAI7G,EAAiB;AACzC,QAAM,CAAC8G,KAAI,KAAK,IAAI9G,EAAiB;AACrC,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,EAAiB;AAC7D,QAAM,MAAMC;AACZ,QAAM,KAAKA;AAEX,QAAM,CAAC,cAAc,oBAAoB,gBAAgB,IAAIO,IAAQ,MAAM;AACjEmH,UAAAA,gBAAe,KAAK,IAAI,oBAAoB;AAC5C,UAAA,aAAa,OAAO,KAAK,aAAa;AACtCC,UAAAA,oBAAmB,OAAO,OAAO,WAAW,IAAI,SAAO,KAAK,IAAI,GAAqB,CAAC,CAAC;AAE7F,UAAMC,sBAAqB,CAAC,QAAgBC,WAA6BF,sBAAqB;AAC1F,YAAM,cAAcE,SAAQ,UAAU,CAAA,kBAAiB,kBAAkB,MAAM;AACxE,aAAA,cAAc,WAAW,WAAW,CAA+B;AAAA,IAAA;AAGvE,WAAA,CAACH,eAAcE,qBAAoBD,iBAAgB;AAAA,EAAA,GAC3D,CAAC,MAAM,aAAa,CAAC;AAExB,QAAM,CAAC,mBAAmB,oBAAoB,IAAI5H,EAAS,yBAAyB,YAAY;AAChG,QAAM,mCAAmCQ,IAAQ,MAAM,OAAO,OAAO,CAAC,GAAG,kBAAkB,YAAY,CAAC,GAAG,CAAC,cAAc,gBAAgB,CAAC;AAE3I,QAAM,UAAUA;AAAAA,IACZ,MAAO,oBAAoB,mCAAmC;AAAA,IAC9D,CAAC,mBAAmB,kBAAkB,gCAAgC;AAAA,EAAA;AAG1E,QAAM,cAAcF;AAAAA,IAChB,CAAC,WAAmB;AACV,YAAA,SAAS,mBAAmB,QAAQ,gBAAgB;AAC1D,UAAI,CAAC;AAAQ;AAEb,cAAQ,KAAK,SAAS,OAAO,IAAI,CAAC;AAClC,YAAM,KAAK,SAAS,OAAO,EAAE,CAAC;AAC9B,2BAAqB,KAAK;AAC1B,wBAAkB,MAAM;AAAA,IAC5B;AAAA,IACA,CAAC,MAAM,cAAc,oBAAoB,gBAAgB,gBAAgB;AAAA,EAAA;AAGvE,QAAA,kBAAkBA,IAAY,MAAM;AACtC,YAAQ,MAAS;AACjB,UAAM,MAAS;AACf,yBAAqB,IAAI;AACzB,sBAAkB,YAAY;AAAA,EAAA,GAC/B,CAAC,YAAY,CAAC;AAEjBE,MAAQ,MAAM;AACV,6BAAyB,eAAe,kBAAkB,YAAY,IAAI,YAAY,oBAAqB;AAAA,EAC/G,GAAG,CAAE,CAAA;AAELA,MAAQ,MAAM;;AACV,QAAI,IAAI,YAAY,OAAO,GAAG,YAAY/C,WAAU;AAC1CqK,YAAAA,WAAU,OAAO,OAAO,aAAa;AAE3CA,eAAQ,QAAQ,CAAU,WAAA;AACtB,eAAO,MAAM;AACb,eAAO,WAAWrK;AAAA,MAAA,CACrB;AAED,UAAI,UAAU;AACX,SAAA,WAAUqK,MAAAA,SAAQ,CAAC,MAATA,gBAAAA,IAAY;AAEzB,kBAAY,cAAe;AAAA,IAC/B;AAAA,EACD,GAAA,CAAC,KAAKrK,WAAU,aAAa,CAAC;AAE1B,SAAA;AAAA,IACH;AAAA,IACA,MAAAoJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAAC;AAAA,EAAA;AAER;ACvGA,MAAM,oBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAIM;AACI,QAAA,EAAE,iBAAiB,MAAAD,OAAM,aAAa,SAAS,gBAAgB,IAAAC,IAAO,IAAA,sBAAsB,2BAA2B;AAC7H,QAAM,gBAAgBtG,IAAQ,MAAM,OAAO,OAAO,QAAQ,IAAI,CAAA0C,SAAO,EAAE,IAAAA,KAAI,MAAMA,IAAG,EAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;AACjH,QAAM,0BAA0B5C,IAAY,CAAC,EAAE,OAAO,MAAW,YAAY,iCAAQ,KAAK,GAAG,CAAC,WAAW,CAAC;AACpG,QAAA,2BAA2BL,EAAO,IAAI;AACtC,QAAA,kBAAkBA,EAAO,SAAS;AAExCC,IAAU,MAAM;AACR,SAAA,2CAAa,YAAW2G,SAAQC,KAAI;AACpC,+BAAyB,UAAU;AACnC,kBAAY,QAAQ,OAAO,IAAI,KAAKD,KAAc;AAClD,kBAAY,QAAQ,KAAK,IAAI,KAAKC,GAAY;AAAA,IAClD;AAAA,EACD,GAAA,CAAC,aAAaD,OAAMC,GAAE,CAAC;AAE1B5G,IAAU,MAAM;AACR,QAAA,gBAAgB,YAAY,WAAW;AACvC,sBAAgB,UAAU;AAE1B,UAAI,yBAAyB,SAAS;AAClC,iCAAyB,UAAU;AAAA,MACvC;AAAuB;IAC3B;AAAA,EAAA,GACD,CAAC,iBAAiB,SAAS,CAAC;AAE/BA,IAAU,MAAM;AACZ,uBAAkB,2DAAsB;AAAA,EAAc,GACvD,CAAC,gBAAgB,mBAAmB,CAAC;AAGpC,SAAAC;AAAAA,IAACqE;AAAAA,IAAA;AAAA,MACG,kBAAkB;AAAA,MAClB,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,IAAA;AAAA,EAAA;AAGtB;AAEA,MAAA,sBAAe;AChCR,MAAM,YAAY,MAAM;AACrB,QAAA,aAAa,CAAIuD,gBACnB,OAAO;AAAA,IACH,OAAO,OAAO,cAAc,OAAO,YAAY,OAAO,QAAQA,WAAU,EAAE,IAAI,CAAC,CAAC,OAAOjM,MAAK,MAAM,CAAC,OAAO,EAAE,OAAAA,OAAM,CAAC,CAAC,CAAC,CAAC;AAAA,EAAA;AAGxH,QAAA,mBAAmB,CAACA,WAA4C;AAC9D,QAAA;AACO,aAAA,OAAO,eAAeA,MAAK,MAAM;AAAA,IAAA,QACpC;AACG,aAAA;AAAA,IACX;AAAA,EAAA;AAGE,QAAA,OAAO,CAAU,QAAiDA,WAAc;AAClF,QAAI,CAAC;AACD,aAAO,WAAW;AAAA,QACd,YAAY;AAAA,QACZ,UAAU,WAAW;AAAA,QACrB,OAAAA;AAAA,MAAA,CACH;AAEL,QAAI,eAAeA;AAEnB,WAAO,WAAW;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,MAAM;AAAA,MACX,KAAK,CAACA,YAAc;AAChB,uBAAe,OAAOA,OAAK;AAAA,MAC/B;AAAA,IAAA,CACH;AAAA,EAAA;AAGE,SAAA,OAAO,iBAAiB,MAAM;AAAA,IACjC,IAAI,EAAE,OAAO,iBAAiB;AAAA,IAC9B,UAAU,EAAE,OAAO,CAACA,WAA0C,SAASA,MAAK,EAAE,MAAM,GAAG,EAAE,MAAM,SAAS;AAAA,IACxG,WAAW,EAAE,OAAO,CAAUA,WAAc,KAAK,OAAOA,MAAK,EAAE;AAAA,IAC/D,SAAS,EAAE,OAAO,CAAUA,WAAc,KAAK,QAAWA,MAAK,EAAE;AAAA,IACjE,YAAY,EAAE,OAAO,MAAM,KAAgB,KAAK,EAAE;AAAA,EAAA,CACrD;AACL;AAEO,MAAM,iBAAiB,MAAM;AAOhC,QAAMkM,iBAAgB,CAAqC,QAAQ,CAAA,GAAyB,gBAAgB,UAAU;AAC5G,UAAA,SAAgB,uBAAA,OAAO,IAAI;AAEjC,eAAW,CAAC,MAAM,eAAe,KAAK,OAAO,QAAoC,KAAK,GAAG;AACjF,UAAA;AACM,cAAA,eAAe,SAAS,GAAG,eAAe;AAC1C,cAAA,gBAAgB,SAAS,SAAS,eAAe;AAEvD,YAAI,gBAAgB,eAAe;AACxB,iBAAA,eAAe,QAAQ,MAAM,eAAe,kBAAkBA,eAAc,iBAAiB,aAAa,CAAC;AAClH;AAAA,mBACO,eAAe;AACtB,iBAAO,eAAe,QAAQ,MAAM,SAAS,UAAU,eAAe,CAAC;AACvE;AAAA,QACJ;AAAA,MAAA,QACI;AAAA,MAER;AAEA,aAAO,IAAe,IAAI;AAAA,IAC9B;AAEO,WAAA,SAAS,CAACC,SAAQ,OAA4B,OAAO,OAAO,QAAQA,MAAK,GAAG,MAAM;AAAA,EAAA;AAG7F,QAAM,YAAY,CAAqC,QAAQ,CAAA,GAAyB,gBAAgB,UAAU;AACxG,UAAAjJ,KAAIgJ,eAAc,OAAO,aAAa;AAC5C,WAAO,OAAO,OAAO,MAAM,EAAE,GAAAhJ,GAAA,CAAG,EAAE;AAAA,EAAA;AAG/B,SAAA,OAAO,iBAAiBgJ,gBAAe;AAAA,IAC1C,WAAW,EAAE,OAAO,UAAU;AAAA,EAAA,CACjC;AAIL,GAAG;ACjGe,IAAA,4CAAAE,6BAAX;AACHA,2BAAA,yBAAA,MAAA,IAAA,CAAA,IAAA;AACAA,2BAAA,yBAAA,aAAA,IAAA,CAAA,IAAA;AACAA,2BAAA,yBAAA,cAAA,IAAA,CAAA,IAAA;AAHcA,SAAAA;AAAA,GAAA,2BAAA,CAAA,CAAA;ACRlB,MAAM,kBAAkB,MAAM;AACpB,QAAA,qCAAqB;AAE3B,QAAM,kBAAkB,CAAS,MAAS,MAAS,MAA6B,YAAuC;AAC/G,QAAAC,UAAS,mCAAU;AACd,IAAAA,UAAA,WAAWA,OAAM,IAAIA,UAAS;AAChC,WAAA,CAAC,UAAUA,QAAO,KAAK,IAAI,CAAC,GAAGA,QAAO,KAAK,IAAI,CAAC,CAAC;AAAA,EAAA;AAG5D,QAAM,aAAc,CAAS,YACzB,CAAC,MAAS,SAAY;AACd,QAAA;AACA,iBAAW,QAAQ,MAAM;AACrB,uBAAe,IAAI,IAAI;AACvB,YAAI,gBAAgB,MAAM,MAAM,MAAM,OAAO;AAAU,iBAAA;AAAA,MAC3D;AAEA,iBAAW,QAAQ,MAAM;AACjB,YAAA,eAAe,IAAI,IAAI;AAAG;AAC9B,uBAAe,IAAI,IAAI;AACvB,YAAI,gBAAgB,MAAM,MAAM,MAAM,OAAO;AAAU,iBAAA;AAAA,MAC3D;AAEO,aAAA;AAAA,IAAA,UACT;AACE,qBAAe,MAAM;AAAA,IACzB;AAAA,EAAA;AAGR,SAAO,OAAO,eAAe,YAAY,WAAW,EAAE,OAAO,MAAM;AACvE;AAEA,MAAA,mBAAe;AC3Bf,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AAEpC,MAAM,yBAAyB,CAAC,gBAAgB,cAAqB,YAA+C;AAChH,QAAM,cAAc,cAAc;AAAA,IAC9B;AAAA,MACI,gBAAgB,SAAS,QAAQ,2BAA2B;AAAA,MAC5D,YAAY;AAAA,QACR,UAAU,SAAS,WAAW;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,MACA,WAAW,SAAS,QAAQ,2BAA2B;AAAA,MACvD,OAAO;AAAA,QACH,GAAG;AAAA,QACH,UAAU,SAAS,WAAW;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,IACJ;AAAA,IACA;AAAA,EAAA;AAGM,qCAAA,wBAAwB,MAAM;AACjC,SAAA;AACX;AAEA,MAAM,mBAAmBlG,EAAW,CAAC,EAAE,MAAM,SAAS,UAAU,OAAO,OAAAzE,QAAO,OAAO,gBAAgB,GAA0B,qBAAqB;AAChJ,QAAM,cAAc,MAAM;AAE1B,QAAM,QAAQ;AAAA,IACV,wBAAwBA;AAAA,IACxB,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAAA;AAGd,MAAI,aAAa;AACb,UAAM,cAAc,MAAM;AAEpB,UAAA,YAAY,IAAI,MAAM;AACtB,UAAA,qBAAqB,IAAI,MAAM;AAC/B,UAAA,oBAAoB,IAAI,MAAM;AAC9B,UAAA,cAAc,IAAI,MAAM;AACxB,UAAA,sBAAsB,IAAI,MAAM;AAChC,UAAA,qBAAqB,IAAI,MAAM;AAErC,UAAM,mBAAmB,IAAI;AAE7B,QAAI,aAAa;AACP,YAAA,gBAAgB,IAAI,MAAM;AAC1B,YAAA,kBAAkB,IAAI,MAAM;AAC5B,YAAA,oBAAoB,IAAI,MAAM;AAC9B,YAAA,sBAAsB,IAAI,MAAM;AAChC,YAAA,uBAAuB,IAAI,MAAM;AACjC,YAAA,eAAe,IAAI,GAAG,CAAC,EAAE,MAAM,iBAAiB,MAAM,mBAAmB,MAAM,iBAAiB;AAAA,IAC1G;AAEI,QAAAA,WAAU,CAAC,KAAK;AAAQ,YAAM,MAAM;AAAA,EAC5C;AAEM,QAAA,cAAc,uBAAuB,OAAO,OAAO;AACnD,QAAA,EAAE,UAAUP,IAAG,WAAW,GAAG,kBAAkB,YAAY,SAAS;AAC1E,QAAM,UAAU,aAAa,YAAY,WAAW,6BAA6B,SAAS;AAGtF,SAAAkD,oBAAC,MAAI,EAAA,GAAG,eAAgB,GAAG,OAAO,WAAW,SACvC,WAAA,CAAC,mBAAmB,iBACjB,MAAM;AACG,UAAA,EAAE,UAAUlD,KAAG,WAAAmL,YAAW,GAAGC,mBAAkB,YAAY,cAAc;AAC/E,UAAMC,WAAU,aAAa,YAAY,gBAAgB,6BAA6BF,UAAS;AAE3F,WAAAjI,oBAAC,UAAM,GAAGkI,gBAAe,WAAWC,UAAS,UAAU,UAClD,UACL,MAAA,CAAA;AAAA,OAGhB,CAAA;AAER,CAAC;AAED,MAAA,qBAAe1G;AAAAA,EACX;AAAA,EACA2G,iBAAe;AAAA,IACX,OAAOA,iBAAe;AAAA,IACtB,OAAO,YAAS,CAAEzM;AAAA,EAAA,CACrB;AACL;ACpFA,MAAM,yBAAyB;AAC/B,MAAM,8BAA8B;AAEpC,MAAM,8BAA8B,CAAC,gBAAgB,cAAqB,YAAoD;AAC1H,QAAM,cAAc,cAAc;AAAA,IAC9B;AAAA,MACI,gBAAgB,SAAS,QAAQ,2BAA2B;AAAA,MAC5D,YAAY;AAAA,QACR,UAAU,SAAS,WAAW;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,MACA,WAAW,SAAS,QAAQ,sBAAsB;AAAA,MAClD,OAAO;AAAA,QACH,GAAG;AAAA,QACH,UAAU,SAAS,WAAW;AAAA,QAC9B,WAAW;AAAA,MACf;AAAA,IACJ;AAAA,IACA;AAAA,EAAA;AAGM,qCAAA,wBAAwB,aAAa;AACxC,SAAA;AACX;AAEA,MAAM,wBAAwB,CAAC,EAAE,SAAS,OAAO,QAAQ,EAAE,MAAM,WAAW,OAAO,WAAW,QAAoC;AAC9H,QAAM,QAAQ;AAAA,IACV,cAAc;AAAA,IACd,uBAAuB,MAAM;AAAA,IAC7B,sBAAsB,MAAM;AAAA,IAC5B,gBAAgB,MAAM;AAAA,IACtB,OAAO;AAAA,EAAA;AAGL,QAAA,cAAc,4BAA4B,OAAO,OAAO;AACxD,QAAA,EAAE,UAAUmB,IAAG,WAAW,GAAG,kBAAkB,YAAY,SAAS;AAC1E,QAAM,UAAU,aAAa,YAAY,WAAW,wBAAwB,SAAS;AAE/E,QAAA,EAAE,UAAU,IAAI,WAAW,gBAAgB,GAAG,uBAAuB,YAAY,cAAc;AACrG,QAAM,eAAe,aAAa,YAAY,gBAAgB,6BAA6B,cAAc;AAEzG,SACKkD,oBAAA,MAAA,EAAI,GAAG,eAAgB,GAAG,OAAO,WAAW,SACzC,UAAAA,oBAAC,UAAM,GAAG,oBAAoB,WAAW,cACpC,sBACL,EACJ,CAAA;AAER;AAEA,MAAA,0BAAeyB;AAAAA,EACX;AAAA,EACA2G,iBAAe;AAAA,IACX,OAAOA,iBAAe;AAAA,IACtB,OAAO,YAAS,CAAEzM;AAAA,EAAA,CACrB;AACL;;AC1DA,MAAM,eAAemG,EAAW,CAAC,EAAE,iBAAiB,iBAAiB,SAAS,QAA2B,qBACrG9B,oBAAC,MAAG,EAAA,WAAW,qBAAqB,MAAK,QAAQ,GAAG,iBAC/C,UAAK,KAAA,IAAI,CACN,UAAA2B,oBAAC,MAAwB,EAAA,WAAW,4BAA4B,MAAK,QACjE,UAAA;AAAA,EAAA3B,oBAAC,OAAI,EAAA,WAAW,iCAAiC,MAAK,QAClD,UAACA,oBAAA,QAAA,EAAK,UAAU,MAAM,UAAU,eAAY,QACvC,UAAA,MAAM,MACX,CAAA,GACJ;AAAA,EAEA2B;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,wBAAsB;AAAA,MACtB,cAAY,GAAG,MAAM,KAAK;AAAA,MAC1B,WAAW;AAAA,MACX,OAAO,EAAE,+BAA+B,KAAK,QAAQ;AAAA,MAErD,UAAA;AAAA,QAAC3B,oBAAA,SAAA,EACG,UAACA,oBAAA,MAAA,EAAG,WAAW,0BACV,UAAK,KAAA,SAAS,IAAI,CAAC,MAAM3C,WACrB2C,oBAAAqI,yBAAA,EAAgD,MAAY,OAAc,SAAkB,MAAMhL,QAAQ,GAAG,KAAA,GAAlF,KAAK,OAAO,MAAM,CAAsE,CACvH,EAAA,CACL,EACJ,CAAA;AAAA,QACC2C,oBAAA,SAAA,EACI,UAAM,MAAA,IAAI,CAAC,KAAK,aACZA,oBAAA,MAAA,EAAsC,WAAW,0BAC7C,UAAA,IAAI,IAAI,CAAC,MAAM3C,WACZ2C;AAAAA,UAACsI;AAAAA,UAAA;AAAA,YAEG,KAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAMjL;AAAA,YACN;AAAA,YACA,KAAK;AAAA,YACJ,GAAG;AAAA,UAAA;AAAA,UARC,GAAG,MAAM,KAAK,IAAI,KAAK,SAAS;AAAA,QAAA,CAU5C,KAbI,GAAG,MAAM,KAAK,IAAI,QAAQ,EAcnC,CACH,GACL;AAAA,MAAA;AAAA,IAAA;AAAA,EACJ;AAAA,EAAA,GAxCK,MAAM,QAyCf,CACH,EAAA,CACL,CACH;AAED,MAAeoE,iBAAAA,EAAK,YAAY;ACvDzB,MAAM,SAAS;AACf,MAAM,sBAAsB,CAAC,UAAU,SAAS,MAAM;AACtD,MAAM,kBAAkB,CAAC,GAAG,GAAG,CAAC;AAChC,MAAM,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AACtC,MAAM,sBAAsB;AACtB,MAAA,oBAAoB,CAAC,GAAG,CAAC;AAE/B,MAAM,eAA8B,OAAO;AAC3C,MAAM,mBAAkC,OAAO;AAC/C,MAAM,gBAA+B,OAAO;AAC5C,MAAM,oBAAoB,CAAC,eAAe,kBAAkB,YAAY;AACxE,MAAM,cAA6B,OAAO;AAC1C,MAAM,cAA6B,OAAO;AAC1C,MAAM,aAA4B,OAAO;AACzC,MAAM,sBAAsB,CAAC,aAAa,YAAY,WAAW;AACjE,MAAM,kBAAiC,OAAO;AAC9C,MAAM,mBAAkC,OAAO;AAC/C,MAAM,qBAAoC,OAAO;AACjD,MAAM,kBAAiC,OAAO;AAC9C,MAAM,iBAAgC,OAAO;AAC7C,MAAM,kBAAiC,OAAO;AAC9C,MAAM,oBAAmC,OAAO;AAChD,MAAM,oBAAmC,OAAO;AAChD,MAAM,oBAAmC,OAAO;AAChD,MAAM,gBAA+B,OAAO;AAC5C,MAAM,aAA4B,OAAO;AACzC,MAAM,WAA0B,OAAO;AACvC,MAAM,qBAAoC,OAAO;AACjD,MAAM,qBAAoC,OAAO;AACjD,MAAM,iBAAgC,OAAO;AAC7C,MAAM,oBAAmC,OAAO;AAChD,MAAM,eAA8B,OAAO;AAC3C,MAAM,cAA6B,OAAO;AAC1C,MAAM,cAA6B,OAAO;AAC1C,MAAM,eAA8B,OAAO;AC7BlD,MAAM,WAAW,MAAM;AACnB,QAAM,qBAAgD,WAAW,WAAW,CAAC/C,OAAWA,IAAG,SAAc;AACrG,aAASb,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,YAAM,SAAS,KAAK,SAAS,KAAKA,EAAC,GAAGA,IAAG,IAAI;AAAA,IACjD;AAAA,EAAA;AAGJ,QAAM,oBAAoB,OAAO;AAAA,IAC7B,OAAO;AAAA,MACH,CAAC,OAAO,QAAQ,GAAG;AAAA,QACf,QAAqB;AACV,iBAAA,mBAAmB,KAAK,IAAI;AAAA,QACvC;AAAA,MACJ;AAAA,MACA,KAAK;AAAA,QACD,MAAqB,UAAuC,SAAe;AACvE,iBAAO,CAAC,GAAG,mBAAmB,KAAK,MAAM,UAAU,OAAO,CAAC;AAAA,QAC/D;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,EAAA;AAGL,QAAM,eACF,CAAImK,YACJ,CAAC,QAAoBO,WAA2B,aAAkB;AAC1D,QAAAjI,WAASiI,SAAQ,GAAG;AACpB,YAAMlL,SAAQ,CAACkL;AACf,UAAIlL,UAAS,KAAKA,SAAQ,OAAO,QAAQ;AACrC,eAAO2K,QAAO3K,MAAK;AAAA,MACvB;AAAA,IACJ;AACA,WAAO,QAAQ,IAAI,QAAQkL,WAAU,QAAQ;AAAA,EAAA;AAG9C,SAAA,CACH,mCACA,wBACiB;AACb,QAAA,WAAW,iCAAiC,GAAG;AACxC,aAAA;AAAA,QACH;AAAA,UACI,QAAQ,EAAE,KAAK,kCAAkC;AAAA,QACrD;AAAA,QACA;AAAA,MAAA;AAAA,IAER;AAEI,QAAA,SAAS,iCAAiC,GAAG;AACtC,aAAA;AAAA,QACH;AAAA,UACI,QAAQ,EAAE,OAAO,kCAAkC;AAAA,QACvD;AAAA,QACA;AAAA,MAAA;AAAA,IAER;AAEA,WAAO,IAAI,MAAM,WAAW,mBAAmB,iCAAiC,GAAG;AAAA,MAC/E,KAAK,aAAa,mBAAmB;AAAA,MACrC,KAAK;AAAA,IAAA,CACR;AAAA,EAAA;AAET;AAEA,MAAA,YAAe;AChEF,MAAA,oBAAoB,CAAC,MAAqB,YAAmC;AACtF,MAAI,WAAW;AAAa,WAAA;AAC5B,MAAI1K,KAAI,KAAK,IAAI,GAAG,YAAY,QAAQ,IAAI,CAAC;AAC7C,SAAO,EAAEA,MAAK,UAAW,YAAYA,EAAC,GAAqB;AAAA,EAAC;AAC5D,SAAO,YAAYA,EAAC;AACxB;AAEa,MAAA,4BAA4B,CAAC,SAAwB,YAAY,KAAK,IAAI,YAAY,QAAQ,IAAI,GAAG,CAAC,CAAC;AAEvG,MAAA,iBAAiB,CAAC,eAA6B;AAAA;AAAA,EAExD,OAAO,OAAO,kBAAkB,IAAI,CAAA,SAAQ,IAAI,IAAI,eAAe,MAAM,CAAC,CAAC,CAAuB;AAAA;ACZ/F,MAAM,yBAAyB,CAAC,cAAuB,WAAW,SAAS,IAAI,IAAI,YAAY,IAAI,KAAK,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AAChI,MAAA,6BAA6B,CAAC,cAAwB,cAAc,SAAY,YAAY,IAAI,KAAK,SAAS;AAE9G,MAAA,mBAAmB,CAAC,UAAgB,WAAiB;AAC9D,MAAI,WAAW,QAAQ,KAAK,WAAW,MAAM;AAAU,WAAA;AACjD,QAAA6I,QAAO,IAAI,KAAK,QAAQ;AACxB,QAAAC,MAAK,IAAI,KAAK,MAAM;AAC1B,SAAO,KAAK,IAAIA,IAAG,aAAaD,MAAK,SAAA,KAAcC,IAAG,YAAY,IAAID,MAAK,iBAAiB,EAAE;AAClG;AAEO,MAAM,gBAAgB,MAAM;AAC/B,QAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAY,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAE3E,SAAO,CAAC,OAAc,MAAc,SAAS,MAAM;AAC/C,UAAM,YAAY,QAAQ;AACpB,UAAA,aAAa,IAAI,WAAW,EAAE;AACpC,UAAM,WAAW,OAAO,KAAK,MAAM,YAAY,EAAE;AACjD,UAAM,OAAO,eAAe,IAAI,KAAK,CAAC,GAAG,WAAW,MAAM,WAAW,IAAI,WAAW,QAAQ,CAAC,IAAI,KAAK,UAAU;AAEzG,WAAA,CAAC,MAAmB,YAAY,QAAQ;AAAA,EAAA;AAEvD,GAAG;ACpBH,MAAqB,cAAc;AAAA,EAS/B,eAAe,MAAa;AARnB,wCAA0B;AAC1B,sCAAwB;AACxB,wCAA0B;AAC1B,4CAA8B;AAC9B,8CAAgC;AAKjC,QAAA,KAAK,UAAU,GAAG;AAClB,UAAI,YAAY,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAElC,UAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AACxB,2BAAA,iBAAkB,aAAa,mBAAK;AACpC,2BAAA,eAAgB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,mBAAK;AAErD,YAAA,mBAAK,iBAAgB,mBAAK,kBAAiB;AAC1C,WAAA,yCAAoB,yCAAoB,IAAI,CAAC,mBAAK,kBAAiB,mBAAK,cAAa;AAAA,QAC1F;AAEK,2BAAA,uBAAwB,uBAAuB,mBAAK,gBAAe;AACnE,2BAAA,qBAAsB,uBAAuB,mBAAK,cAAa;AACpE,2BAAK,iBAAkB,iBAAiB,mBAAK,kBAAiB,mBAAK,cAAa,IAAI;AAAA,MAAA,WAC7E,CAAC,MAAM,SAAS,GAAG;AAClB,gBAAA,KAAK,CAAC,GAAG;AAAA,UACb,KAAK;AACD,+BAAK,eAAgB;AAChB,+BAAA,qBAAsB,uBAAuB,mBAAK,cAAa;AACpE;AAAA,UAEJ,KAAK;AAAA,UACL;AACI,+BAAK,iBAAkB;AAClB,+BAAA,uBAAwB,uBAAuB,mBAAK,gBAAe;AACxE;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,qBAAqB;AACrB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,uBAAuB;AACvB,WAAO,mBAAK;AAAA,EAChB;AACJ;AA3Da;AACA;AACA;AACA;AACA;ACJb,MAAM,UAAW,IAAI,SAAgB;AACjC,QAAM,QAAQ,IAAI,cAAc,GAAG,IAAI;AAEvC,SAAO,OAAO;AAAA,IACV,MAAM,EAAE,OAAO,MAAM,eAAe;AAAA,IACpC,IAAI,EAAE,OAAO,MAAM,aAAa;AAAA,IAChC,SAAS;AAAA,MACL,OAAO,OAAO;AAAA,QACV,MAAM,EAAE,OAAO,MAAM,qBAAqB;AAAA,QAC1C,IAAI,EAAE,OAAO,MAAM,mBAAmB;AAAA,MAAA,CACzC;AAAA,IACL;AAAA,IACA,MAAM,EAAE,OAAO,MAAM,eAAe;AAAA,EAAA,CACvC;AACL;AAEO,MAAM,kBAAkB,QAAQ;AAChC,MAAM,WAAW,MAAM,QAAQ,KAAK,OAAO,UAAU;AACrD,MAAM,WAAW,MAAM,QAAQ,KAAK,OAAO,QAAQ;AAE1D,MAAA,YAAgB,IAAI,SAAiB,KAAK,WAAW,IAAI,kBAAkB,QAAQ,GAAG,IAAI;ACgC9E,IAAA,6BAAA8B,cAAL;AACHA,YAAAA,UAAA,aAAU,CAAV,IAAA;AACAA,YAAAA,UAAA,YAAS,CAAT,IAAA;AACAA,YAAAA,UAAA,aAAU,CAAV,IAAA;AACAA,YAAAA,UAAA,gBAAa,CAAb,IAAA;AACAA,YAAAA,UAAA,cAAW,EAAX,IAAA;AACAA,YAAAA,UAAA,kBAAe,EAAf,IAAA;AACAA,YAAAA,UAAA,iBAAc,EAAd,IAAA;AACAA,YAAAA,UAAA,eAAY,GAAZ,IAAA;AACAA,YAAAA,UAAA,kBAAe,GAAf,IAAA;AACAA,YAAAA,UAAA,iBAAc,GAAd,IAAA;AACAA,YAAAA,UAAA,eAAY,IAAZ,IAAA;AACAA,YAAAA,UAAA,sBAAmB,IAAnB,IAAA;AACAA,YAAAA,UAAA,qBAAkB,IAAlB,IAAA;AACAA,YAAAA,UAAA,mBAAgB,IAAhB,IAAA;AACAA,YAAAA,UAAA,SAAM,KAAN,IAAA;AAfQA,SAAAA;AAAA,GAAA,YAAA,CAAA,CAAA;AAiEM,IAAA,6CAAAC,8BAAX;AACHA,4BAAAA,0BAAA,UAAO,CAAP,IAAA;AACAA,4BAAAA,0BAAA,WAAQ,CAAR,IAAA;AACAA,4BAAAA,0BAAA,WAAQ,CAAR,IAAA;AACAA,4BAAAA,0BAAA,YAAS,CAAT,IAAA;AAJcA,SAAAA;AAAA,GAAA,4BAAA,CAAA,CAAA;AAON,IAAA,8CAAAC,+BAAL;AACHA,6BAAAA,2BAAA,iBAAc,CAAd,IAAA;AACAA,6BAAAA,2BAAA,gBAAa,CAAb,IAAA;AACAA,6BAAAA,2BAAA,UAAO,CAAP,IAAA;AACAA;AAAAA,IAAAA,2BAAA,UAAO;AAAA;AAAA,EAAP,IAAA;AACAA;AAAAA,IAAAA,2BAAA,gBAAa;AAAA;AAAA,EAAb,IAAA;AACAA;AAAAA,IAAAA,2BAAA,iBAAc;AAAA;AAAA,EAAd,IAAA;AANQA,SAAAA;AAAA,GAAA,6BAAA,CAAA,CAAA;AC7HZ,MAAM,qBAAqB,MAAM;AAC7B,QAAM,QAAQ,CAAA;AACR,QAAA,aAAa,OAAO,KAAK,QAAQ,EAAE,OAAO,CAAQ,SAAA,MAAM,CAAC,IAAI,CAAC;AAE9D,QAAA,aAAa,CAACH,cAChBA,cAAa,SAASjI,WAASiI,SAAQ,KAAK,WAAW,SAASA,SAAwB;AAE5F,SAAO,CAAC,UAAuC;AACrC,UAAA,iBAAiB,QAAQ,SAAS;AAEpC,QAAA,CAAC,MAAM,cAAc,GAAG;AAClB,YAAA,cAAc,IAAI,IAAI;AAAA,QACxB,OAAO;AAAA,UACH,SAAS,EAAE,OAAO,MAAM,eAAe;AAAA,QAAA,CAC1C;AAAA,QACD;AAAA,UACI,GAAG;AAAA,UACH,KAAK,CAAC,QAAYA,cAA8B;AAC5C,oBAAQA,WAAU;AAAA,cACd,KAAK;AACD,uBAAO,OAAO;AAAA,cAClB,KAAK,OAAO;AACD,uBAAA;AAAA,cACX;AACQ,oBAAA,CAAC,WAAWA,SAAQ;AAAG;AAAA,YACnC;AAEA,mBAAO,iBAAkB,SAASA,SAAQ,IAAe,IAAI;AAAA,UACjE;AAAA,QACJ;AAAA,MAAA;AAAA,IAER;AAEA,WAAO,MAAM,cAAc;AAAA,EAAA;AAEnC;AAEA,MAAA,sBAAe;ACIf,MAA8B,aAA9B,MAA8B,WAAU;AAAA,EAAxC;AA0MI;AAIA;AAoBA;AAyCA;AAMA;AAWA;AAzRA,0CAA4B;AAC5B;AACA;AACA,0CAA4B;AAC5B,wCAA0B;AAC1B;AACA;AACA;AACA,4CAA+B;AAC/B;AACA,sCAA8B;AAC9B,2CAA6C,CAAA;AAC7C,uBAAAvL,UAAkB,yBAAU;AAC5B,sCAA+B;AAC/B;AACA;AACA,8BAAuB;AACvB;AACA,+BAAS2L,QAAM;AACf;AAEA,uCAAyB;AACzB,qCAAuB;AACvB,mDAAqC;AACrC,iDAAmC;AACnC,wCAA0B;AAC1B,uCAAyB;AAEf,sCAAqB;AACrB;AACA;AAoBV,oCAAcC,UAAQ,MAAM,KAAK,YAAY,KAAK,oBAAoB,KAAK,IAAI,CAAC;AAChF,qCAAeA,UAAQ,MAAM,mBAAK,QAAO,sBAAK,gDAAsB,KAAK,IAAI,CAAC;AAAA;AAAA,EAE9E,IAAc,gBAAgB;AAC1B,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAc,cAAc;AACxB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAc,iBAAiB;AAC3B,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,mBAAK,8BAA6B,mBAAK,2BAA0B,mBAAK,4BAA2B;AAAA,EAC5G;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,mBAAK,iBAAgB;AAAA,EAChC;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,qBAA8B;AAC9B,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,mBAAmB,MAAkC;AACrD,QAAI,QAAQ;AAAgB,yBAAA,qBAAsB,CAAC,CAAC;AAAA,aAC3C,SAAS,QAAQ,IAAI;AAAG,yBAAK,qBAAsB;AAAA,EAChE;AAAA,EAEA,IAAI,OAAO,QAA+C;AACtD,QAAI,UAAU;AAAW,yBAAK,SAAU;AAAA,aAC/B,WAAW,MAAM;AAAG,yBAAK,SAAU;AAAA,EAChD;AAAA,EAEA,IAAI,eAA6B;AAC7B,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,aAAa,KAAsC;AACnD,QAAI,OAAO,QAAW;AACd,UAAA,CAAC,gBAAgB,SAAS,GAAG;AAAG;AAChC,UAAA,mBAAK,mBAAmB,mBAAK,eAAgB;AAAM;AAAA,IAC3D;AAAO,WAAK,eAAe;AAAA,EAC/B;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACH,WAAA,CAAC,WAAW,mBAAK,yBAAwB,KAAK,mBAAK,8BAA6B,mBAAK,SAAQ;AAAA,EACxG;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,CAAC,WAAW,mBAAK,2BAA0B,KAAK,mBAAK,gCAA+B;AAAA,EAC/F;AAAA,EAEA,IAAI,SAAiB;AACjB,WAAO,mBAAK5L;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,QAAiD;AACxD,UAAM,gBAAgB,mBAAKA;AAE3B,QAAI,UAAU,QAAW;AACrB,yBAAKA,UAAU,yBAAU;AAAA,IAAA,WAClB,OAAO,SAAS,aAAa;AAChC,UAAA;AACA,2BAAKA,UAAU,IAAI,KAAK,OAAO,MAAoC,EAAE;MAAS,QAC1E;AACJ,2BAAKA,UAAU,yBAAU;AAAA,MAC7B;AAAA,IACJ;AAEA,QAAI,mBAAKA,cAAY;AAAe,WAAK,aAAa,IAAI;AAAA,EAC9D;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAsB;AACtB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,KAAK,MAAwC;AACvC,UAAA,gBAAgB,KAAK,IAAK,QAAQ,UAAa,0BAA0B,IAAI,KAAM,GAAG,mBAAK,cAAa;AAC1G,QAAA,mBAAK,WAAW,mBAAK,OAAQ;AAAgB;AACjD,0BAAK,oDAAL;AACA,SAAK,aAAa;AAAA,EACtB;AAAA,EAEA,IAAI,YAAuB;AACvB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU6L,YAAyC;AACnD,QAAIA,eAAc,mBAAK,eAAeA,cAAa,UAAa,mBAAK,gBAAe;AAAkB;AAEtG,UAAM,EAAE,MAAAnC,OAAM,IAAAC,KAAI,MAAM,YAAYkC;AAEpC,uBAAK,YAAaA;AACb,uBAAA,gBAAiBnC,QAAO,QAAQ;AAChC,uBAAA,cAAeC,MAAK,QAAQ;AACjC,uBAAK,iBAAkB;AAEjB,UAAA,0BACF,mBAAK,8BAA6B,SAAY,mBAAK,4BAA2B,KAAK,IAAI,mBAAK,2BAA0BD,KAAI;AACxH,UAAA,wBACF,mBAAK,4BAA2B,SAAY,mBAAK,0BAAyB,KAAK,IAAI,mBAAK,yBAAwBC,GAAE;AAEtH,QAAI,4BAA4B,mBAAK,6BAA4B,0BAA0B,mBAAK,yBAAwB;AACpH,yBAAK,0BAA2B;AAChC,yBAAK,wBAAyB;AAAA,IAClC;AAAY,yBAAA,0BAA2B,mBAAK,wBAAyB;AAErE,SAAK,QAAQ;AACb,uBAAK,eAAgB,kBAAkB,IAAI,KAAK,cAAc;AAC9D,uBAAK,OAAQ,kBAAkB,mBAAK,QAAO,KAAK,cAAc;AAEzD,SAAA,sBAAsB,mBAAK,iBAAgB;AAAA,EACpD;AAAA,EAEA,IAAI,gBAAgB,MAAkC;AAC9C,QAAA,SAAS,QAAQ,IAAI,GAAG;AACpB,UAAA,QAAQ,CAAC,mBAAK,qBAAoB;AAC7B,2BAAA,oBAAqB,mBAAK,QAAO,MAAM,KAAK,aAAa,KAAK,MAAM,IAAI,CAAC;AAAA,MACvE,WAAA,CAAC,QAAQ,mBAAK,qBAAoB;AACzC,2BAAK,oBAAL;AACA,2BAAK,oBAAqB;AAAA,MAC9B;AAAA,IAAA,WACO,QAAQ;AAAW,WAAK,kBAAkB;AAAA,EACzD;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,mBAAK;AAAA,EAChB;AAAA,EA0FU,aAAa;AACd,SAAA,wBAAwB,mBAAK,QAAO,SAAS;AAClD,SAAK,YAAY;AAAA,EACrB;AAAA,EAEU,aAAa,oBAAoB,OAAa;;AACpD,uBAAK,oBAAmB,SAAS;AAEjC,QAAI,EAAE,mBAAK,mBAAkB,UAAa,oBAAoB;AAC1D,YAAM,cAAc,KAAK,qBAAqB,mBAAK,kBAAiB;AACpE,YAAM,EAAE,MAAM,YAAY,IAAI,aAAa,YAAY;AACjD,YAAA,CAAC,mBAAmB,IAAI,sBAAK,kDAAL,WAA4B,KAAK,oBAAoB,aAAa,mBAAK,cAAa,GAAG;AAErH,yBAAK,eAAgB,KAAK,2BAA2B,KAAK,oBAAoB,UAAU,GAAG,mBAAmB;AAExG,YAAA,mBAAmB,aAAa,mBAAK;AAC3C,YAAM,0BAA0B,MAAM,YAAY,kBAAkB,QAAQ;AAE5E,UAAI,0BAA0B,kBAAkB;AAC5C,2BAAK,eAAgB,KAAK,6BAAoC,EAAL,uBAAK,mBAAL,CAAsB,IAAI,mBAAmB;AACtG,YAAI,mBAAK,sBAAqB;AAAG,iBAAO,KAAK;AACxC,2BAAA,mBAAoB,mBAAK,SAAQ;AAC/B,eAAA,KAAK,mBAAmB,IAAI,WAAW;AAAA,MAClD;AAEA,UAAI,0BAA0B,kBAAkB;AACvC,2BAAA,eAAgB,mBAAmB,0BAA0B;AAC9D,YAAO,EAAL,uBAAK,mBAAL,IAAyB,mBAAK;AAAO,iBAAO,KAAK;AACvD,2BAAK,mBAAoB;AAClB,eAAA,KAAK,mBAAmB,GAAG,WAAW;AAAA,MACjD;AAEA,yBAAK,wBAAyB;AAC9B,yBAAK,sBAAuB;AACvB,yBAAA,kBAAmB,sBAAK,kDAAL,WAA4B,KAAK,oBAAoB,gBAAgB,GAAG,OAAO,CAAC;AACxG,yBAAK,eAAgB,KAAK,oCAAoC,mBAAK,iBAAgB;AAC9E,yBAAA,cAAe,aAAa,mBAAK;AAEtC,YAAM,aAAa,mBAAK,qBAAoB,IAAK,KAAK,qBAAqB,CAAC,IAAuB;AAC7F,YAAA,YAAY,mBAAK,qBAAoB,mBAAK,SAAQ,IAAK,KAAK,qBAAqB,mBAAK,SAAQ,CAAC,IAAuB;AAEvH,yBAAA,mBAAoB,WAAW,MAAM;AACrC,yBAAA,iBAAkB,UAAU,MAAM;AAClC,yBAAA,gBAAiB,UAAU,MAAM;AAAA,IAC1C;AAEK,SAAA,wBAAwB,mBAAK,QAAO,SAAS;AAClD,KAAAhK,MAAA,mBAAK,aAAL,gBAAAA,IAAA;AAAA,EACJ;AAAA,EAEA,mBAAmB,QAAiB,YAA6B;AACzD,QAAA,UAAU,iBAAiB,MAAM,GAAG;AACpC,cAAQ,YAAY;AAAA,QAChB,KAAK;AACM,iBAAA,sBAAK,8BAAL,WAAkB;AAAA,QAC7B,KAAK;AACM,iBAAA,sBAAK,8BAAL,WAAkB,SAAS;AAAA,QACtC,KAAK;AAAA,QACL;AACI,iBAAO,sBAAK,8BAAL,WAAkB,SAAS,mBAAK;AAAA,MAC/C;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,iBAAiB,oBAA8C;AAC3D,YAAQ,oBAAoB;AAAA,MACxB,KAAK;AACM,eAAA,sBAAK,wDAAL,WAA+B;AAAA,MAC1C,KAAK;AACM,eAAA,sBAAK,wDAAL,WAA+B;AAAA,MAC1C,KAAK;AACD,eAAO,sBAAK,wDAAL,WAA+B,CAAC,KAAK;AAAA,MAChD,KAAK;AACM,eAAA,sBAAK,wDAAL,WAA+B,KAAK;AAAA,MAC/C,KAAK;AACD,eAAO,sBAAK,wDAAL,WAA+B,mBAAK,0BAAyB,mBAAK;AAAA,MAC7E,KAAK;AACD,eAAO,sBAAK,wDAAL,WAA+B,mBAAK,wBAAuB,mBAAK;AAAA,MAC3E,KAAK;AACD,eAAO,sBAAK,wDAAL,WAA+B,EAAE,mBAAK,gBAAe,KAAK;AAAA,MACrE,KAAK;AACM,eAAA,sBAAK,wDAAL,WAA+B,KAAK,WAAY,mBAAK,gBAAe,KAAK,UAAW;AAAA,MAC/F,KAAK;AACM,eAAA,sBAAK,wDAAL,WAA+B,CAAC,KAAK,8BAA8B,mBAAK,sBAAqB,KAAK,CAAC;AAAA,MAC9G,KAAK;AACD,eAAO,sBAAK,wDAAL,WAA+B,KAAK,6BAA6B,mBAAK,sBAAqB,CAAC;AAAA,IAC3G;AAEA,QAAI,qBAAqB;AAAG;AAE5B,QAAI,sBAAsB,mBAAK,sBAAqB,sBAAsB,mBAAK,kBAAiB;AAC5F,aAAO,sBAAK,wDAAL,WAA+B,qBAAqB,mBAAK;AAAA,IACpE;AAAA,EACJ;AAAA,EAEA,sBAAsB,WAAoB;AACtC,UAAM,qBAAqB,sBAAK,kDAAL,WAA4B,WAAW,OAAO,CAAC;AAC1E,uBAAK,eAAgB,KAAK,oCAAqC,mBAAK,kBAAmB,KAAK,kBAAkB,mBAAmB;AACjI,SAAK,YAAY;AAEjB,KAAC,sDAAiC,kDAA6B,IAAI,KAAK;AACxE,0BAAK,oDAAL;AACA,SAAK,aAAa;AAEb,0BAAA,wDAAA,WAA0B,KAAK,2BAA2B,KAAK,oBAAoB,mBAAK,aAAY,GAAG,kBAAkB;AAAA,EAClI;AAAA,EAEA,iBAAiB;AACb,QAAI,KAAK;AAAgB;AACpB,uBAAA,0BAA2B,mBAAK,wBAAyB;AAC9D,SAAK,aAAa,IAAI;AAAA,EAC1B;AAAA,EAEA,6CAA6C,MAAY,gBAA6D,gBAAgB;AAC9H,QAAA;AACJ,QAAI,qBAAqB;AAEzB,YAAQ,eAAe;AAAA,MACnB,KAAK;AACD,iCAAyB,mBAAK;AAC9B;AAAA,MACJ,KAAK;AACD,iCAAyB,mBAAK;AACT,6BAAA;AACrB;AAAA,IACR;AAEA,QAAI,2BAA2B;AAAkB,aAAA;AAEjD,UAAM,YAAY,sBAAK,kDAAL,WAA4B,MAAM,OAAO,OAAO,CAACP,IAAGC,OAAMD,KAAIC,IAAG,CAAC;AACpF,UAAM,kBAAkB,KAAK,2BAA2B,wBAAwB,SAAS,KAAK,qBAAqB,KAAK;AACjH,WAAA,oBAAoB,kBAAkB,IAAI,IAAI;AAAA,EACzD;AAAA,EAEA,gBAAgB,MAAY,WAAgC;AACxD,UAAM,eAAe,mBAAK;AAC1B,UAAM,aAAa,mBAAK;AACxB,UAAM,YAAY,sBAAK,kDAAL,WAA4B,MAAM,OAAO,OAAO,CAACD,IAAGC,OAAMD,KAAIC,IAAG,CAAC;AAEpF,QAAI,cAAc,oBAAoB;AAClC,UAAI,aAAa;AAA0B,oBAAA;AAAA,eAClC,aAAa;AAAwB,oBAAA;AAAA,IAClD;AAEA,YAAQ,WAAW;AAAA,MACf,KAAK;AACD,2BAAK,0BAA2B;AAChC,2BAAK,wBAAyB,KAAK,IAAI,mBAAK,2BAA0B,cAAc,SAAS;AAC7F;AAAA,MACJ,KAAK;AACD,2BAAK,wBAAyB;AAC9B,2BAAK,0BAA2B,KAAK,IAAI,gBAAgB,WAAW,mBAAK,uBAAsB;AAC/F;AAAA,MACJ,KAAK;AAAA,MACL,KAAK,mBAAmB;AACpB,YAAI,gBAAgB,KAAK,IAAI,aAAa,gBAAgB,UAAU;AACpE,YAAI,cAAc,KAAK,IAAI,aAAa,cAAc,UAAU;AAEhE,YAAI,cAAc,mBAAmB;AACjC,WAAC,eAAe,WAAW,IAAI,CAAC,aAAa,aAAa;AAAA,QAC9D;AAEA,YAAI,gBAAgB,aAAa;AAC7B,6BAAK,0BAA2B;AAAA,QACpC;AAAO,6BAAK,wBAAyB;AAErC;AAAA,MACJ;AAAA,MACA,KAAK;AAAA,MACL;AACS,2BAAA,0BAA2B,mBAAK,wBAAyB;AAC9D;AAAA,IACR;AAEA,QAAI,mBAAK,8BAA6B,gBAAgB,mBAAK,4BAA2B,YAAY;AAC9F,WAAK,aAAa,IAAI;AAAA,IAC1B;AAAA,EACJ;AACJ;AAndW;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAW,WAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA;AAoJA;AAAA,oCAAuB,aAAqB;AACjC,SAAA,MAAM,mBAAK,6BAA4B,eAAe,GAAG,mBAAK,4BAA2B,mBAAK,SAAQ,CAAC;AAClH;AAEA;AAAA,2BAAA,SAAuB,MAAa,uBAAuB,MAAwB;AAC/E,MAAI,YAAY,IAAI,KAAK,IAAY,EAAE,QAAQ;AAE/C,MAAI,MAAM,SAAS;AAAG,WAAO,sBAAK,kDAAL,WAA4B,KAAK,IAAK;AAEnE,QAAM,EAAE,MAAA0J,OAAM,IAAAC,QAAO,mBAAK;AAC1B,QAAM,mBAAmB,MAAMD,OAAM,WAAWC,GAAE;AAE9C,MAAA,qBAAqB,aAAa,sBAAsB;AAC5C,gBAAA,IAAID,OAAMC,GAAE;AACxB,QAAI,MAAM,SAAS,KAAK,WAAW,SAAS,GAAG;AAC/B,kBAAA;AAAA,IAChB;AAAA,EACJ;AAAmB,gBAAA;AAEb,QAAA,SAAS,uBAAuB,SAAS;AAExC,SAAA,CAAC,YAAY,QAAQ,MAAM;AACtC;AAEA;AAAA,mCAAsBtJ,QAAiD;AACnE,MAAI,EAAE,iBAAiBA,MAAK,KAAKA,UAAS,KAAKA,SAAQ,mBAAK;AAAQ;AAEpE,MAAI,CAAC,mBAAK,oBAAmBA,MAAK,GAAG;AAC3B,UAAA,QAAQ,KAAK,qBAAqBA,MAAK;AAC7C,QAAI,CAAC;AAAc,aAAA;AAEnB,UAAM,aAAa,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AACnE,UAAM,CAAC,OAAO,QAAQ,IAAI,KAAK,8BAA8B,IAAI,KAAK,UAAU,EAAE,SAAS,EAAE,CAAC;AACxF,UAAA,kBAAkB,MAAM,MAAM;AAE/B,uBAAA,oBAAmBA,MAAK,IAAIuL;AAAAA,MAC7B;AAAA,QACI,UAAU,WAAW,QAAQ;AAAA,QAC7B,OAAO,WAAW,KAAK;AAAA,QACvB,QAAQ,WAAW,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,QAC9D,OAAO,WAAW,MAAM,KAAK;AAAA,QAC7B,MAAM,WAAW,MAAM,IAAI;AAAA,MAC/B;AAAA,MACA,CAAAvL,YAAS;AACC,cAAA,cAAcA,UAAQ,KAAK;AAEjC,eAAOuL,UAA+B,KAAK,SAAS,CAAAvL,WAAS;AACzD,gBAAM,CAAC,WAAW,KAAK,IAAI,MAAMA,SAAQ,WAAW;AACpD,gBAAM,CAACyL,QAAOC,SAAQ,IAAI,KAAK,6BAA6B,IAAI,KAAK,SAAS,EAAE,SAAS,EAAE,CAAC;AAE5F,iBAAO,OAAO;AAAA,YACV,UAAU,WAAWA,SAAQ;AAAA,YAC7B,OAAO,WAAWC,oBAAkB,KAAK,CAAC;AAAA,YAC1C,OAAO,WAAW,kBAAkB3L,SAAQ,WAAW;AAAA,YACvD,OAAO,WAAWyL,MAAK;AAAA,YACvB,WAAW,WAAW,SAAS;AAAA,UAAA,CAClC;AAAA,QAAA,CACJ;AAAA,MACL;AAAA,IAAA;AAAA,EAER;AAEO,SAAA,mBAAK,oBAAmBzL,MAAK;AACxC;AAEA;AAAA,uCAA0B,QAAsB;AAC5C,MAAI,WAAW;AAAG;AAClB,qBAAK,eAAL,mBAAK,iBAAiB;AACtB,OAAK,aAAa;AACtB;AAEA;AAAA,0BAAa,QAAgB;AACnB,QAAA,gBAAgB,sBAAK,kDAAL,WAA4B;AAClD,MAAI,eAAe;AACf,SAAK,YAAY,aAAa;AAC9B,uBAAK,4BAAL,mBAAK,8BAA8B;AACnC,uBAAK,0BAAL,mBAAK,4BAA4B;AACjC,uBAAK,mBAAoB,IAAI,mBAAK,qBAAoB,eAAe,mBAAK,MAAK;AAC/E,SAAK,aAAa;AAAA,EACtB;AACJ;AAEA;AAAA,4BAA0B,WAAA;AAChB,QAAA,SAAS,mBAAK,SAAQ;AACtB,QAAA,SAAS,KAAK,IAAI,SAAU,KAAK,SAAS,mBAAK,QAAQ,mBAAK,yBAAwB,IAAI;AAC1F,MAAA;AAAQ,0BAAK,8BAAL,WAAkB;AAClC;AA/RA,aAD0B,YACnB,iBAAkB;AAD7B,IAA8B,YAA9B;ACzBA,MAAqB,mBAAmB,UAAU;AAAA,EAkB9C,cAAc;AACJ;AAkDV;AAKA;AAIA;AA7EA,oCAAc;AACd,0CAA6C,CAAA;AAC7C,uCAAqC,eAAe,KAAK,YAAY;AACrE;AACA,uBAAA4L,iBAAyB;AACzB,uBAAAC,eAAuB;AACvB,uBAAAC,kBAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AAEU,sCAAqB,mBAAK;AAKhC,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAc,gBAAgB;AAC1B,WAAO,mBAAKF;AAAA,EAChB;AAAA,EAEA,IAAc,cAAc;AACxB,WAAO,mBAAKC;AAAA,EAChB;AAAA,EAEA,IAAc,iBAAiB;AAC3B,WAAO,mBAAKC;AAAA,EAChB;AAAA,EAEA,IAAI,sBAAsB;AACtB,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,qBAA8B;AAC9B,WAAO,MAAM;AAAA,EACjB;AAAA,EAEA,IAAI,mBAAmB,MAAkC;AACrD,UAAM,UAAU,KAAK;AACrB,UAAM,qBAAqB;AAC3B,QAAI,KAAK,uBAAuB;AAAS,WAAK,aAAa,IAAI;AAAA,EACnE;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,mBAAK;AAAA,EAChB;AAAA,EAEA,IAAI,eAA6B;AAC7B,WAAO,MAAM;AAAA,EACjB;AAAA,EAEA,IAAI,aAAa,KAAsC;AACnD,UAAM,UAAU,KAAK;AACrB,UAAM,eAAe;AAErB,QAAI,KAAK,iBAAiB;AAAS;AAEnC,uBAAK,mBAAkB,SAAS;AAC3B,uBAAA,gBAAiB,eAAe,KAAK,YAAY;AACtD,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACtB;AAAA,EAgBU,oCAAoC,WAA2B;AACrE,WAAO,IAAI,KAAK,SAAS,EAAE,YAAY;AAAA,EAC3C;AAAA,EAEU,oBAAoB9L,QAAe;AACzC,QAAI,CAAC,mBAAK,mBAAkBA,MAAK,GAAG;AAChC,YAAMX,QAAO,IAAI,KAAK,KAAK,oBAAoBW,MAAK,CAAC;AACrD,UAAI,QAAQ;AAER,UAAA,mBAAK,gBAAe,SAASA,MAAgB;AAAG,iBAAS,SAAS;AACtE,UAAIA,WAAU;AAAG,iBAAS,SAAS;AAAA,eAC1BA,WAAU;AAAG,iBAAS,SAAS;AAExC,YAAM,mBAAmB,CAAA;AAOzB,iBAAW,UAAU,qBAAqB;AACtC,yBAAiB,MAAM,IAAI;AAAA,UACvBX,MAAK,mBAAmB,KAAK,QAAQ,EAAE,SAAS,QAAQ;AAAA,QAAA;AAAA,MAEhE;AAEK,yBAAA,mBAAkBW,MAAK,IAAI,OAAO;AAAA,QACnC,OAAO,WAAW2L,oBAAkB,KAAK,CAAC;AAAA,QAC1C,QAAQ,WAAW,OAAO,gBAAgB,CAAC;AAAA,MAAA,CAC9C;AAAA,IACL;AAEO,WAAA,mBAAK,mBAAkB3L,MAAK;AAAA,EACvC;AAAA,EAEU,gCAAkD;AACjD,WAAA,CAAC,sBAAK,0EAAL,WAAwC,mBAAK4L,mBAAiB,sBAAK,0EAAL,WAAwC,mBAAKC,eAAa;AAAA,EACpI;AAAA,EAEU,6BAA6B,MAA8B;AACjE,UAAM,YAAY,IAAI,KAAK,IAAI,EAAE,YAAY;AAC7C,WAAO,CAAC,OAAO,UAAU,MAAM,GAAG,EAAE,CAAC,EAAE,eAAe,KAAK,MAAM,GAAG,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,EAC9F;AAAA,EAEU,8BAA8B,MAA8B;AAC5D,UAAAxM,QAAO,IAAI,KAAK,IAAI;AAC1B,WAAO,CAACA,MAAK,mBAAmB,KAAK,QAAQ,EAAE,OAAO,QAAQ,MAAM,UAAW,CAAA,GAAGA,MAAK,YAAA,EAAc,MAAM,GAAG,CAAC,CAAC;AAAA,EACpH;AAAA,EAEU,qBAAqBW,QAA+B;AACpD,UAAA,CAAC,WAAW,OAAO,IAAI,IAAI,aAAa,KAAK,QAAQ,mBAAK,cAAaA,MAAK;AAC5E,UAAA,kBAAkBA,SAAQ,IAAI,KAAK,qBAAqBA,SAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,mBAAK;AACvF,UAAA,gBAAgB,kBAAkB,YAAY;AACpD,UAAM,kBAAkB,KAAK,MAAM,kBAAkB,CAAC,IAAI;AACpD,UAAA,qBAAqB,KAAK,qBAAqB,KAAK,MAAM,gBAAgB,KAAK,CAAC,IAAI,IAAI,kBAAkB;AAChH,UAAM,gBAAgB,KAAK,qBAAqB,qBAAqB,kBAAkB;AAEvF,UAAM,8BAA8B,IAAI,MAAM,UAAU;AAAA,MACpD,GAAG;AAAA,MACH,KAAK,CAAC,QAAYkL,WAA2B,aAAiB;AACtD,YAAAjI,WAASiI,SAAQ,GAAG;AACpB,gBAAM,SAAS,CAACA;AAEhB,cAAI,iBAAiB,MAAM,KAAK,UAAU,KAAK,SAAS,eAAe;AACnE,kBAAMlL,UAAQ,kBAAkB;AAC1B,kBAAA,YAAY,KAAK,oBAAoBA,OAAK;AAC1C,kBAAA,UAAWA,UAAQ,mBAAK;AAE9B,gBAAI,QAAQ,cAAc,KAAK,sBAAsB,SAAS,UAAU;AAExE,gBAAIA,YAAU,KAAK;AAAQ,uBAAS,SAAS;AACzC,gBAAA,mBAAK,gBAAe,SAAS,OAAO;AAAG,uBAAS,SAAS;AAE7D,gBAAI,YAAY;AAAG,uBAAS,SAAS;AAAA,qBAC5B,YAAY,mBAAK,eAAc;AAAG,uBAAS,SAAS;AAEzDA,gBAAAA,WAAS,mBAAmBA,WAAS,eAAe;AACpD,kBAAIA,YAAU;AAAiB,yBAAS,SAAS;AAAA,uBACxCA,YAAU;AAAe,yBAAS,SAAS;AACpD,uBAAS,SAAS;AAAA,YACtB;AAEA,gBAAI,aAAa,KAAK,iBAAiB,aAAa,KAAK,aAAa;AAClE,kBAAI,cAAc,KAAK;AAAe,yBAAS,SAAS;AACxD,kBAAI,cAAc,KAAK;AAAa,yBAAS,SAAS;AACtD,uBAAS,SAAS;AAAA,YACtB;AAEA,gBAAI,aAAc,mBAAK,4BAAsC,aAAc,mBAAK,wBAAkC;AAC9G,kBAAI,cAAe,mBAAK;AAAoC,yBAAS,SAAS;AAC9E,kBAAI,cAAe,mBAAK;AAAkC,yBAAS,SAAS;AAC5E,uBAAS,SAAS;AAAA,YACtB;AAEO,mBAAA,CAAC,WAAW,KAAK;AAAA,UAC5B;AAAA,QACJ;AAEA,eAAO,QAAQ,IAAI,QAAQkL,WAAU,QAAQ;AAAA,MACjD;AAAA,IAAA,CACH;AAED,WAAO,WAAW,6BAA6B;AAAA,MAC3C,OAAO;AAAA,QACH,OAAO,OAAO;AAAA,UACV,MAAM,EAAE,OAAO,gBAAgB;AAAA,UAC/B,IAAI,EAAE,OAAO,cAAc;AAAA,UAC3B,OAAO,EAAE,OAAO,UAAU;AAAA,QAAA,CAC7B;AAAA,MACL;AAAA,MACA,OAAO,EAAE,OAAO,MAAM;AAAA,MACtB,OAAO;AAAA,QACH,OAAO,OAAO;AAAA,UACV,MAAM,EAAE,OAAO,gBAAgB;AAAA,UAC/B,IAAI,EAAE,OAAO,qBAAqB,EAAE;AAAA,UACpC,OAAO,EAAE,OAAO,cAAc;AAAA,QAAA,CACjC;AAAA,MACL;AAAA,MACA,MAAM,EAAE,OAAO,KAAK;AAAA,IAAA,CACvB;AAAA,EACL;AAAA,EAEU,6BAA6BlL,QAA0B;AAC7D,WAAO,aAAa,KAAK,QAAQ,mBAAK,cAAaA,MAAK,EAAE,CAAC;AAAA,EAC/D;AAAA,EAEU,2BAA2B,gBAAwB,WAAmB;AAC5E,WAAO,KAAK,OAAO,YAAY,kBAAkB,MAAM;AAAA,EAC3D;AAAA,EAEU,cAAc;AACpB,UAAMX,QAAO,IAAI,KAAK,KAAK,eAAe;AACpC,UAAA,kBAAmB,KAAMA,MAAK,QAAQ,IAAIA,MAAK,OAAO,IAAI,KAAK,gBAAgB,KAAM;AAEtF,SAAA,SAASA,MAAK;AACd,uBAAA,aAAcA,MAAK;AACnB,SAAA,kBAAkBA,MAAK,QAAQ,CAAC;AACrC,uBAAK,yBAA0B;AAC/B,uBAAK,4BAA6BA,MAAK,QAAQ,IAAI,cAAc;AAC5D,uBAAA,uBAAwBA,MAAK;EACtC;AAAA,EAEU,UAAU;AAChB,0BAAK,0DAAL;AACA,uBAAKuM,iBAAiB,sBAAK,gDAAL,WAA2B,MAAM;AACvD,uBAAKC,eAAe,sBAAK,gDAAL,WAA2B,MAAM;AACrD,uBAAKC,kBAAkB,iBAAiB,MAAM,eAAe,MAAM,WAAW,IAAI;AAAA,EACtF;AAAA,EAEU,YAAY,QAAgB;AAC7B,SAAA,kBAAkB,IAAI,KAAK,KAAK,eAAe,EAAE,SAAS,KAAK,SAAS,MAAM;AACnF,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,iBAAiB;AACb,UAAM,eAAe;AACrB,0BAAK,0DAAL;AACA,SAAK,aAAa,IAAI;AAAA,EAC1B;AAAA,EAEA,oBAAoB,aAAqB;AAC9B,WAAA,IAAI,KAAK,mBAAK,2BAA0B,EAAE,QAAQ,mBAAK,yBAAwB,WAAW;AAAA,EACrG;AAAA,EAEA,gBAAgB,MAAY,WAAgC;AAClD,UAAA,gBAAgB,MAAM,SAAS;AACrC,0BAAK,0DAAL;AACA,SAAK,aAAa,IAAI;AAAA,EAC1B;AAAA,EAEA,wBAAwB,WAAmB;AAClC,uBAAA,sBAAuB,sBAAK,gDAAL,WAA2B;AAAA,EAC3D;AACJ;AA/PI;AACA;AACA;AACA;AACAF,kBAAA;AACAC,gBAAA;AACAC,mBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAwDA;AAAA,gDAAmC,WAAmB;AAClD,QAAM,SAAS,iBAAiB,WAAW,KAAK,eAAe;AAC/D,SAAO,YAAY,KAAK,kBAAkB,IAAI,SAAS;AAC3D;AAEA;AAAA,mCAAsB,WAAoB;AAC/B,SAAA,cAAc,UAAa,WAAW,SAAS,IAAI,YAAY,YAAY,uBAAuB,SAAS;AACtH;AAEA;AAAA,+BAA6B,WAAA;AACzB,qBAAK,yBAA0B,sBAAK,gDAAL,WAA2B,KAAK;AAC/D,qBAAK,uBAAwB,sBAAK,gDAAL,WAA2B,KAAK;AACjE;AC3CJ,IAAA,cAAA,WAA8B;AAAA,EAgO1B,cAAc;AAKd,uBAAI;AAIJ,uBAAI;AAKJ;AAIA;AA8CA;AA0DA;AAyBA;AA0BA;AAmBA;AAoEA;AAMA;AAiBA;AAMA;AAaA;AAmBA;AAhiBA;AACA;AACA,gCAAU;AACV,oCAAc;AACd;AACA;AACA;AACA,6CAAuB;AACvB,4CAA0C;AAC1C,kDAA4B;AAC5B;AACA,6CAA+B,wBAAK,mBAAL,mBAAoB,KAAK;AAExD;AACA;AACA;AACA;AACA;AAEA,uBAAAC,SAAST,QAAM;AACf,8CAAwD,CAAA;AACxD;AAEA,uCAAiB,IAAI;AAAA,MACjBC,UAAQ,MAAA;;AAAM,iBAAAjM,MAAA,mBAAK,wBAAL,gBAAAA,IAAyB,WAAU;AAAA,SAAG,sBAAK,gEAA8B,KAAK,IAAI,CAAC;AAAA,MACjG;AAAA,QACI,GAAG;AAAA,QACH,KAAK,CAAC,QAAY4L,WAA2B,aAAsB;;AAC/D,gBAAMlL,WAAQV,MAAA,mBAAK,wBAAL,gBAAAA,IAAyB,QAAQ4L,eAAqC;AACpF,iBAAOlL,UAAS,KAAII,MAAA,sBAAK,gEAAL,WAAmCJ,YAAnC,gBAAAI,IAA4C,KAAK,QAAQ,IAAI,QAAQ8K,WAAU,QAAQ;AAAA,QAC/G;AAAA,MACJ;AAAA,IAAA;AAGJ,mCAA6CnL,YAAU;AAAA,MACnD,QAAQ,MAAA;;AAAM,gBAAAT,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MAC3B,OAAO,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MAC1B,UAAU,MAAM,mBAAmB,mBAAmB,mBAAK,SAAQ,QAAQ;AAAA,MAC3E,QAAQ,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MAC3B,MAAM,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MACzB,WAAW,MAAM,mBAAK;AAAA,MACtB,QAAQ,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MAC3B,UAAU,MAAM,QAAQ,mBAAK,SAAQ,QAAQ;AAAA,MAC7C,QAAQ,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa,oBAAoB;AAAA;AAAA,MAC/C,IAAI,MAAA;;AAAM,gBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAAA;AAAA,MACvB,OAAO,MAAM,mBAAKyM,SAAO;AAAA,IAAA,CAC5B;AAED,gDAA8C,wBAAK,gBAAL,mBAAiB;AAE/D,+CAA0EhM,YAAU;AAAA,MAChF,MAAA;;AAAM,kCAAK,qBAAkBT,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB;AAAA;AAAA,IAAO;AAGzD,8CAAyES,YAAU;AAAA,MAAe,MAAA;;AAC9F,gBAAAT,MAAA,mBAAK,oBAAL,gBAAAA,IAAqB,KAAK,mBAAK;AAAA;AAAA,IAAc;AAGjD,8BAAQ;AAAA,MACJiM;AAAAA,QACI;;AAAM,mBAAAjM,MAAA,mBAAK,YAAL,gBAAAA,IAAa,SAAQ;AAAA;AAAA,QAC3B,CAASU,WAAA;;AAAA,kBAAAV,MAAA,mBAAK,YAAL,gBAAAA,IAAa,YAAYU;AAAA;AAAA,MACtC;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,UACJ,OAAO,OAAO;AAAA,YACV,CAAC,WAA4B;AACf,wBAAA,sBAAK,0BAAL,WAAgB;AAC1B,qBAAO,mBAAK;AAAA,YAChB;AAAA,YACA;AAAA,cACI,aAAa;AAAA,gBACT,KAAK,MAAM,mBAAK;AAAA,gBAChB,KAAK,CAAC,OAAiE;AACnE,sBAAI,mBAAK;AAAa;AACtB,sBAAI,MAAM;AAAW,uCAAK,uBAAwB;AAAA,2BACzC,WAAW,EAAE;AAAG,uCAAK,uBAAwB;AAAA,gBAC1D;AAAA,cACJ;AAAA,cACA,aAAa;AAAA,gBACT,KAAK,MAAM,mBAAK;AAAA,gBAChB,KAAK,CAAC,OAAiE;AACnE,sBAAI,mBAAK;AAAa;AACtB,sBAAI,MAAM;AAAW,uCAAK,uBAAwB;AAAA,2BACzC,WAAW,EAAE;AAAG,uCAAK,uBAAwB;AAAA,gBAC1D;AAAA,cACJ;AAAA,cACA,OAAO;AAAA,gBACH,KAAK,MAAM,mBAAK;AAAA,gBAChB,KAAK,CAAC,OAA2D;;AAC7D,sBAAI,mBAAK;AAAa;AAClB,sBAAA,WAAW,EAAE,GAAG;AAChB,uCAAK,gBAAiB;AAElB,wBAAA,CAAC,mBAAK,mBAAkB;AACxB,4BAAM,iBAAgBV,MAAA,mBAAK,4BAAL,gBAAAA,IAAA,WAA8B,iBAAS,0BAAyB,KAAK,IAAI;AAE/F,0BAAI,eAAe;AACV,2CAAA,mBAAmBc,MAAA,mBAAK,4BAAL,gBAAAA,IAAA,WAA8B;AACtD,2CAAK,WAAW4L,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB,OAAM3L,MAAA,mBAAK,2BAAL,gBAAAA,IAAA,WAA6B;AACpE,2CAAK,YAAW,mBAAK,QAAO,SAAS,mBAAK;AAAA,sBAC9C;AAAA,oBACJ;AAEA,wBAAI,CAAC,mBAAK;AAA2B;AAErC,uCAAK,2BAA4B;AACjC,qBAAA4L,MAAA,mBAAK,sBAAL,gBAAAA,IAAA;AAAA,kBAAwB,WACjB,MAAM;AAAW,uCAAK,gBAAiB;AAAA,gBACtD;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAU,EAAE,OAAO,mBAAK,gBAAe;AAAA,QACvC,QAAQ;AAAA,UACJ,OAAO,OAAO;AAAA,YACV,CAAC,QAAgB,oBAAS,wCAAkB,KAAK,MAAM,CAACC,SAAgB,CAAC,EAAEA,QAAO,sBAAK,gCAAL,WAAmBA,MAAK,EAAE,GAAG;AAAA,YAC/G;AAAA,cACI,SAAS,EAAE,OAAO,MAAM;;AAAA,yBAAA5M,MAAA,mBAAK,YAAL,gBAAAA,IAAa,WAAU;AAAA,gBAAG;AAAA,YACtD;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAW;AAAA,UACP,QAAQ,MAAM;AACV,kBAAM,QAAQ,MAAM,mBAAK,oBAAmB,mBAAK,iBAAgB,mBAAK,kBAAiB;AAEjF,kBAAA,SAAS,CAAC,cAA2D,CAAC,SACxE,oBAAS,wCAAkB,KAAK,MAAM,CAAC6M,UAAyB;;AAC5D,kBAAI,mBAAK,gBAAe,CAAC,mBAAK,wBAAuB,mBAAK,yBAAwB;AAAa;AAC/F,kBAAIA,SAAQ;AAAW,uBAAO,sBAAK,oCAAL;AAE1B,kBAAA,CAAC,SAAS;AACL,iBAAA7M,MAAA,mBAAA,YAAA,gBAAAA,IAAQ,gBAAgB6M,OAAM;AACnC,oBAAI,mBAAK,yBAAwB,eAAe,mBAAK,gBAAe;AAChE,wCAAK,oCAAL,WAAqBA,OAAM,cAAc,iBAAiB,eAAe,gBAAgB,mBAAK;AAAA,gBAClG;AAAA,cACJ;AAAY,iBAAA/L,MAAA,mBAAA,YAAA,gBAAAA,IAAQ,gBAAgB+L,OAAM;AAErC,iCAAA,iBAAiB9L,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AAC9B,iCAAA,eAAe2L,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AACjC,eAAAC,MAAA,mBAAK,YAAL,gBAAAA,IAAa,sBAAsB,cAAc,iBAAiB,mBAAK,kBAAiB,mBAAK;AAAA,YAAY,CAC5G,EAAE,IAAI;AAEX,mBAAO,OAAO;AAAA,cACV,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,MAAM;AAAA,gBACF,KAAK,MAAA;;AAAM,2BAAA3M,MAAA,mBAAK,YAAL,gBAAAA,IAAa,mBAAkB,mBAAK;AAAA;AAAA,gBAC/C,KAAK,OAAO,cAAc;AAAA,cAC9B;AAAA,cACA,IAAI;AAAA,gBACA,KAAK,MAAA;;AAAM,2BAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa,iBAAgB,mBAAK;AAAA;AAAA,gBAC7C,KAAK,OAAO,YAAY;AAAA,cAC5B;AAAA,YAAA,CACH;AAAA,UAAA,GACF;AAAA,QACP;AAAA,QACA,SAAS,EAAE,KAAK,MAAA;;AAAM,mBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa,YAAW;AAAA,UAAE;AAAA,QAChD,UAAU,EAAE,KAAK,MAAM;;AAAA,mBAAAA,MAAA,mBAAK,YAAL,gBAAAA,IAAa,eAAc,iBAAS;AAAA,UAAuB;AAAA,MACtF;AAAA,IAAA;AAiEA,SAAK,OAAO,mBAAK;AACjB,SAAK,OAAO,sBAAK,wBAAU,KAAK,IAAI;AAAA,EACxC;AA8UJ,GA9iBI,yBACA,6BACA,wBACA,gCACA,8BACA,sCACA,qCACA,2CACA,+BACA,qCAEA,uCACA,uCACA,gCACA,kCACA,0BAEAyM,UAAA,eACA,uCACA,oCAEA,gCAWA,4BAcA,wCAEA,wCAIA,uCAIA,uBAwGO,6CACA,oDACA,wCACA,wCACA,qCACA,yCAEA,wEAAqB,OAA8E;AAClG,MAAA,CAAC9I,WAAS,KAAK;AAAG;AACtB,MAAI,CAAC,iBAAS,6BAA4B,KAAK,KAAK;AAAG;AACjD,QAAA,UAAU,MAAM,MAAM,KAAK;AACjC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAK,GAAA,CAACxD,IAAGO,WAAU,SAAS,QAAQA,MAAK,KAAK,GAAG,CAAC;AAClF,GAEO,sEAAoB,OAAe;AAC9B,UAAA,QAAQ,CAAC,yBAAyB,MAAM;AAAA,IAC5C,KAAK,yBAAyB;AACnB,aAAA;AAAA,IACX,KAAK,yBAAyB;AACnB,aAAA;AAAA,IACX,KAAK,yBAAyB;AAAA,IAC9B;AACW,aAAA;AAAA,EACf;AACJ,GAEO,sEAAoB,OAAe;AAC/B,SAAA,QAAQ,yBAAyB,OAAO,KAAK;AACxD,GAEO,0CA2BA,kEAAqF,IAAO;;AACxF,WAAAV,MAAA,mBAAK,4BAAL,gBAAAA,IAAA,WAA8B,QAAO;AAChD,GAOI,oDAAiB,WAAA;AACV,SAAA,EAAE,GAAG,mBAAK;AACrB,GAEI,4CAAa,WAAA;AAEb,SAAO,IAAI,WAAW;AAC1B,GAEA,wEAAqB,gBAAwB;AAClC,SAAA,CAAC,CAAC,mBAAK,WAAU,EAAE,iBAAiB,IAAI,mBAAK,QAAO,UAAU,mBAAK,QAAO;AACrF,GAEA,oDAAW,QAAwB;;AAC/B,MAAI,mBAAK;AAAa;AAEtB,qBAAK,eAAgB;AAErB,QAAM,YAAY,iCAAQ;AAC1B,QAAM,WAAW,QAAQ,mBAAK,SAAQ,QAAQ;AAE1C,MAAA,CAAC2D,WAAS,SAAS,GAAG;AACtB,uBAAK,qBAAsB,mBAAmB,qBAAqB,WAAW,mBAAK,oBAAmB;AAAA,EAAA,WAC9F,mBAAK,eAAgB,gBAAA3D,MAAA,IAAS,8CAAT,KAAAA,KAA8B,aAAa;AACxE,uBAAK,qBAAsB;AAAA,EAC/B;AAEA,qBAAK,SAAU;AAAA,IACX,GAAG,mBAAK;AAAA,IACR,GAAG;AAAA,IACH,QAAQ,mBAAmB,aAAa,iCAAQ,QAAQ,mBAAK,SAAQ,MAAM;AAAA,IAC3E,UAAU,mBAAmB,mBAAmB,iCAAQ,UAAU,mBAAK,SAAQ,QAAQ;AAAA,IACvF,cAAc,mBAAmB,iBAAiB,iCAAQ,cAAc,mBAAK,SAAQ,YAAY;AAAA,IACjG,kBAAkB,QAAQ,iCAAQ,kBAAkB,mBAAK,SAAQ,gBAAgB;AAAA,IACjF,WAAW,mBAAK;AAAA,IAChB,UAAU,QAAQ,iCAAQ,UAAU,mBAAK,SAAQ,QAAQ;AAAA,IACzD,iBAAiB,QAAQ,iCAAQ,iBAAiB,mBAAK,SAAQ,eAAe;AAAA,EAAA;AAGlF,MAAI,CAAC,WAAW,mBAAK,eAAc,GAAG;AAC9B,QAAA,CAAC,mBAAK,SAAQ;AACd,yBAAK,QAAS,mBAAK;AACnB,4BAAK,sBAAL;AACA,4BAAK,gDAAL;AACA,4BAAK,8CAAL;AAAA,IACJ;AAAO,yBAAK,2BAA4B;AAExC;AAAA,EACJ;AAEA,MAAI,CAAC,mBAAK,WAAU,aAAa,mBAAK,SAAQ,UAAU;AACpD,uBAAK,QAAS,mBAAK;AACd,uBAAA,QAAO,SAAS,mBAAK;AAAA,EAC9B;AAEA,wBAAK,sBAAL;AACA,GAAAc,MAAA,mBAAK,sBAAL,gBAAAA,IAAA;AACJ,GAEA,0DAAc,KAA+B;AACzC,MAAI,EAAE,OAAO,mBAAK,WAAU,WAAW,mBAAK,eAAc;AAAI;AAE9D,MAAI,eAAe,eAAe;AAC9B,YAAQ,IAAI,MAAM;AAAA,MACd,KAAK,mBAAmB;AACf,2BAAA,QAAO,iBAAiB,eAAe;AAC5C;AAAA,MACJ,KAAK,mBAAmB;AACf,2BAAA,QAAO,iBAAiB,cAAc;AAC3C;AAAA,MACJ,KAAK,mBAAmB;AACf,2BAAA,QAAO,iBAAiB,aAAa;AAC1C;AAAA,MACJ,KAAK,mBAAmB;AACf,2BAAA,QAAO,iBAAiB,eAAe;AAC5C;AAAA,MACJ,KAAK,mBAAmB;AACpB,2BAAK,QAAO,iBAAiB,IAAI,UAAU,qBAAqB,iBAAiB;AACjF;AAAA,MACJ,KAAK,mBAAmB;AACpB,2BAAK,QAAO,iBAAiB,IAAI,UAAU,mBAAmB,eAAe;AAC7E;AAAA,MACJ,KAAK,mBAAmB;AAChB,YAAA,WAAW,mBAAK,QAAO,mBAAmB,IAAI,YAAY,IAAI,mBAAK,QAAO,iBAAiB,iBAAiB;AAChH;AAAA,MACJ,KAAK,mBAAmB;AAChB,YAAA,WAAW,mBAAK,QAAO,mBAAmB,GAAG,YAAY,IAAI,mBAAK,QAAO,iBAAiB,iBAAiB;AAC/G;AAAA,MACJ,KAAK,mBAAmB;AAAA,MACxB,KAAK,mBAAmB;AACpB,8BAAK,0BAAL;AACO,eAAA;AAAA,MACX;AACI;AAAA,IACR;AAEK,uBAAA,yBAAwB,sBAAK,0BAAL,WAAgB;AACtC,WAAA;AAAA,EACX;AAEI,MAAA,eAAe,cAAc,iBAAS,oCAAmC,SAAS,IAAI,IAAI,KAAK,WAAW,mBAAK,sBAAqB,GAAG;AACvI,UAAM,cAAc,mBAAK,uBAAsB,KAAK,mBAAK,oCAAgB,GAAG;AAExE,QAAA,CAAC,iBAAiB,WAAW;AAAG;AAE9B,UAAA,UAAU,IAAI,SAAS;AAEzB,QAAA,EAAE,WAAW,mBAAK;AAAuB;AACxC,uBAAA,QAAO,iBAAiB,WAAW;AAEpC,QAAA,mBAAK,QAAO,WAAW,aAAa;AACpC,gBAAU,sBAAK,0BAAL,aAAoB,sBAAK,0BAAL,WAAgB;AACvC,aAAA;AAAA,IACX;AAAA,EACJ;AACJ,GAEA,yCAAY,WAAA;;AACR,MAAI,mBAAK;AAAa;AAEtB,GAAAd,MAAA,mBAAK,cAAL,gBAAAA,IAAA;AAEK,qBAAA,wBACD,mBAAK,uBACL,mBAAK,uBACL,mBAAK,QACL,mBAAK,qBACL,mBAAK,qBACL,mBAAK,wBACL,mBAAK,eACL,mBAAK,uBACL,mBAAK,UACL,mBAAK,YACL,mBAAK,kBACL,mBAAK,gBACD;AAER,qBAAK,SAAU;AACV,qBAAA,sBAAuB,mBAAK,2BAA4B;AAC7D,qBAAK,aAAc;AACvB,GAEA,0FAA8BU,QAAsD;;AAChF,MAAI,CAAC,mBAAK,uBAAsBA,SAAQ,KAAKA,UAAS,mBAAK,oBAAmB;AAAQ;AAEhF,QAAA,UAAU,mBAAK,oBAAmBA,MAAK;AAE7C,MAAI,CAAC,mBAAK,uBAAsBA,MAAK,GAAG;AAC9B,UAAA,QAAQ,0BAA0B,OAAO;AACzC,UAAA,kBAAkB,gBAAAV,MAAA,IAAS,4CAAT,KAAAA,KAA6B;AAC/C,UAAA,kBAAkB,gBAAAc,MAAA,IAAS,4CAAT,KAAAA,KAA6B;AAEhD,uBAAA,uBAAsBJ,MAAK,IAAI,IAAI,SACpC,oBAAS,wCAAkB,KAAK,MAAM,IAAIoM,UAAgB;;AAChD,YAAA,WAAW,sBAAK,8CAAL,WAA0B;AACvC,UAAA,EAAE,YAAYA,MAAK;AAAgB,eAAA;AAEvC,YAAM,cAAc,sBAAK,sDAAL,WAA8B,SAASA,MAAK,CAAC;AACjE,UAAI,gBAAgB;AAAkB,eAAA;AAEtC,OAAA9M,MAAA,mBAAK,YAAL,gBAAAA,IAAa,mBAAmB,kBAAkB,aAAa;AACxD,aAAA;AAAA,IAAA,CACV,EAAE,GAAG,IAAI;AAAA,EAClB;AAEA,SAAO,CAAC,SAAS,mBAAK,uBAAsBU,MAAK,CAAiC;AACtF,GAEA,uEAAA,SAAyB,QAA8B,KAAiC;AACpF,MAAI,EAAE,mBAAK,WAAU,WAAW,mBAAK,eAAc;AAAI;AAEvD,MAAI,eAAe,YAAY;AAC3B,QAAI,IAAI,SAAS;AAAS;AAAA,EAAA,WACnB,eAAe,eAAe;AACrC,QAAI,CAAC,iBAAS,wBAAuB,SAAS,IAAI,IAA0B;AAAG;AAAA,EACnF;AAAO;AAEP,MAAI,cAAc;AAEd,MAAA,WAAW,mBAAK,sBAAqB,GAAG;AAClC,UAAA,SAAS,OAAO,mBAAK,uBAAsB,KAAK,mBAAK,oCAAgB,KAAK,MAAM,CAAC;AACvF,kBAAc,OAAO,UAAU,MAAM,KAAK,UAAU,IAAI,SAAS;AAAA,EACrE;AAEO,SAAA;AACX,GAEA,oDAAW,4BAAkC;AACrC,MAAA,mBAAK,gBAAe,CAAC,mBAAK;AAAQ;AAEtC,UAAQ,mBAAK,sBAAqB;AAAA,IAC9B,KAAK;AAAA,IACL,KAAK;AACD;AAAA,IACJ,KAAK;AAAA,IACL;AACI;AAAA,EACR;AAEM,QAAA,SAAS,mBAAK,QAAO;AAC3B,QAAM,gBAAgB,mBAAK,QAAO,oBAAoB,MAAM;AAC5D,QAAM,cAAc,mBAAK,QAAO,oBAAoB,SAAS,CAAC,IAAI;AAClE,QAAM,QAAQ,mBAAK;AAEnB,MAAI,mBAAK,yBAAwB,cAAc,mBAAK,QAAO,kBAAkB,OAAO;AAChF,uBAAK,sBAAuB,EAAE,mBAAK,yBAAwB,cAAc;AAErE,QAAA,mBAAK,yBAAwB,eAAe,OAAO;AACnD,YAAM,qBAAqB,eAAgB,mBAAK,QAAO,eAA0B,iBAAiB;AAE3E,6BAAA,iBACjB,mBAAK,QAAO,gBAAgB,aAAa,YAAY,IACrD,mBAAK,QAAO,gBAAgB,eAAe,cAAc;AAE1D,4BAAA,oCAAA,WACA,uBAAuB,iBAAiB,mBAAK,QAAO,eAAe,mBAAK,QAAO,gBAChF,oBACA;AAAA,IACJ,OACG;AACE,yBAAA,QAAO,gBAAgB,eAAe,cAAc;AACpD,yBAAA,QAAO,gBAAgB,aAAa,YAAY;AAAA,IACzD;AAAA,EAAA,OACG;AACH,UAAM,qBAAqB,+BAA+B;AAE1D,QAAI,CAAC;AAAoB,yBAAK,sBAAuB;AAEjD,QAAA,iBAAiB,mBAAK,QAAO,gBAAiB;AAC9C,YAAM,oBAAoB,IAAI,KAAK,mBAAK,QAAO,cAAe;AAC9D,YAAM,gCAAgC,kBAAkB,QAAQ,kBAAkB,YAAY,CAAC,IAAI;AAEnG,UAAI,kBAAkB,mBAAK,QAAO,kBAAmB,eAAe,+BAA+B;AAC1F,2BAAA,QAAO,gBAAgB,aAAa,YAAY;AAAA,MACzD;AAEK,yBAAA,QAAO,gBAAgB,eAAe,cAAc;AAAA,IAAA,OACtD;AACH,YAAM,kBAAkB,IAAI,KAAK,mBAAK,QAAO,YAAa;AAC1D,YAAM,gCAAgC,gBAAgB,SAAS,GAAG,GAAG,GAAG,CAAC;AAEzE,UAAI,iBAAiB,mBAAK,QAAO,gBAAiB,iBAAiB,+BAA+B;AACzF,2BAAA,QAAO,gBAAgB,eAAe,cAAc;AAAA,MAC7D;AAEK,yBAAA,QAAO,gBAAgB,aAAa,YAAY;AAAA,IACzD;AAEI,QAAA;AAAoB;AAAA,EAC5B;AAEK,qBAAA,gBAAiB,mBAAK,QAAO;AAC7B,qBAAA,cAAe,mBAAK,QAAO;AACpC,GAEA,qDAAkB,WAAA;;AACd,GAAAV,MAAA,mBAAK,YAAL,gBAAAA,IAAa;AACb,qBAAK,sBAAuB;AACvB,qBAAA,gBAAiB,mBAAK,cAAe;AAC9C,GAEA,qDAAA,SACI,MACA,oBACA,cACF;AACE,MAAI,CAAC,mBAAK;AAAQ;AAEZ,QAAAD,QAAO,IAAI,KAAK,IAAI;AACpB,QAAA,YAAY,uBAAuB,iBAAiB,KAAK;AAC/D,QAAM,CAAC,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,IAAI,gBAAgB;AAE/F,EAAAA,MAAK,YAAYA,MAAK,YAAY,IAAI,QAAQ,WAAWA,MAAK,SAAS,IAAI,SAAS,WAAWA,MAAK,QAAQ,IAAI,OAAO,SAAS;AAChI,EAAAA,MAAK,SAASA,MAAK,SAAS,IAAI,QAAQ,WAAWA,MAAK,WAAW,IAAI,UAAU,WAAWA,MAAK,WAAW,IAAI,UAAU,SAAS;AAEnI,qBAAK,QAAO,gBAAgBA,MAAK,YAAY,WAAW,kBAAkB;AAC9E,GAEA,yDAAoB,WAAA;;AAChB,qBAAK,qBAAkBC,MAAA,mBAAK,YAAL,gBAAAA,IAAa,gBAAgB,mBAAK,iBAAgB;AACzE,qBAAK,mBAAgBc,MAAA,mBAAK,YAAL,gBAAAA,IAAa,gBAAgB,mBAAK,eAAc;AACrE,qBAAK,sBAAuB;AAChC,GAEA,uCAAW,WAAA;AACP,MAAI,CAAC,mBAAK;AAAQ;AAEb,qBAAA,QAAO,YAAY,mBAAK,SAAQ;AACrC,qBAAK,QAAO,qBAAqB,CAAC,mBAAK,SAAQ;AAC1C,qBAAA,QAAO,eAAe,mBAAK,SAAQ;AACnC,qBAAA,QAAO,SAAS,mBAAK,SAAQ;AAC7B,qBAAA,QAAO,OAAO,mBAAK,SAAQ;AAC3B,qBAAA,QAAO,kBAAkB,mBAAK,SAAQ;AAE3C,wBAAK,wCAAL;AACJ,GAEA,+DAAuB,WAAA;;AACnB,UAAQ,mBAAK,sBAAqB;AAAA,IAC9B,KAAK;AACD,YAAId,MAAA,mBAAK,YAAL,gBAAAA,IAAa,oBAAmB,SAAS,mBAAK,gBAAe;AAC7D,8BAAK,oCAAL,YAAqBc,MAAA,mBAAK,YAAL,gBAAAA,IAAa,gBAA0B,cAAc,mBAAK;AAAA,MACnF;AACA;AAAA,IACJ,KAAK;AACG,YAAAC,MAAA,mBAAK,YAAL,gBAAAA,IAAa,oBAAmB,OAAO;AACvC,SAAA4L,MAAA,mBAAK,YAAL,gBAAAA,IAAa,gBAAgB,IAAI,MAAKD,MAAA,mBAAK,YAAL,gBAAAA,IAAa,cAAwB,EAAE,SAAS,IAAI,IAAI,IAAI,GAAG,GAAG;AAAA,MAC5G;AACA;AAAA,IACJ,KAAK;AAAA,IACL;AACI,4BAAK,oCAAL;AACA;AAAA,EACR;AACJ,GAEA,iEAAwB,WAAA;;AACZ,WAAA1M,MAAA,mBAAK,gBAAL,gBAAAA,IAAiB,SAAS,UAAU;AAAA,IACxC,KAAK;AACD,yBAAK,oBAAqB,iBAAS;AACnC;AAAA,IACJ,KAAK;AACD,yBAAK,oBAAqB,iBAAS;AACnC;AAAA,IACJ,KAAK;AAAA,IACL;AACI,yBAAK,oBAAqB;AAAA,EAClC;AAEA,qBAAK,uBAAsB,SAAS;AACpC,qBAAK,uBAAsB,WAASc,MAAA,mBAAK,wBAAL,gBAAAA,IAAyB,WAAU;AAC3E,GAtYA,aA1KJ,IA0KW,uBAOP,aAjLJ,IAiLW,sBAYP,aA7LJ,IA6LW,sBA+BP,aA5NJ,IA4NW,oBAzDP,aAnKJ,IAmKW,6BAA8B,+CACrC,aApKJ,IAoKW,oCAAqC,CAAC,SAAS,aAAa,aAAa,IAChF,aArKJ,IAqKW,wBAAyBmL,UAAmC,GAAG,IAAW,IACjF,aAtKJ,IAsKW,wBAAyB,CAAC,mBAAmB,OAAO,mBAAmB,KAAK,IACnF,aAvKJ,IAuKW,qBAAsB,OAAO,KAAK,yBAAyB,EAAE,OAAO,CAAW,YAAA,MAAM,CAAC,OAAO,CAAC,IACrG,aAxKJ,IAwKW,yBAA0B,CAAC,QAAQ,MAAM,IAyBhD,aAjMJ,IAiMW,0BAA8D,SAA0B,kBAAkB;;AAC7G,MAAI,OAAO,qBAAqB;AAAU;AAE1C,MAAI,kBAAkB;AACtB,MAAI,mBAAmB;AACvB,MAAI,mBAAmB;AACvB,QAAM,kBAAiBjM,MAAA,mBAAK,mBAAL,gBAAAA,IAAoB,KAAK;AAEhD,aAAW,OAAO,OAAO,KAAK,gBAAgB,GAAwC;AAClF,QAAI,iBAAiB,GAAG,QAAMc,MAAA,mBAAK,4BAAL,gBAAAA,IAA8B;AAAM;AAClE,QAAI,QAAQ;AAA8B,wBAAA;AAAA,aACjC,QAAQ;AAAgC,yBAAA;AAAA,aACxC,QAAQ,UAAU,QAAQ;AAAyB,yBAAA;AAAA,EAChE;AAEI,MAAA,mBAAK,yBAAwB,gBAAgB;AAC7C,uBAAK,qBAAsB;AACR,uBAAA;AAAA,EACvB;AAEA,qBAAK,wBAAyB;AAE1B,MAAA,mBAAK,yBAAwB,CAAC;AAAkB,0BAAK,wCAAL;AAChD,MAAA;AAAiB,0BAAK,gDAAL;AACjB,MAAA;AAAkB,0BAAK,8CAAL;AAA0B,IAzNxD;ACpDA,MAAM,YAAY,MAAM;AACpB,QAAMiM,YAAY,CAAQ,SAAA;AACtB,UAAM,EAAE,MAAM,SAAS,IAAIC,WAAS;AAEpC,QAAI,SAAS,IAAI;AAAG,WAAK,OAAO,EAAE,QAAQ,KAAM,CAAA;AAAA,aACvC,WAAW,IAAI;AACZ,cAAA,UAAU,KAAK,MAAM;AACzB,aAAK,OAAO,QAAQ;AAAA,MAAA,CACvB;AAAA;AACA,WAAK,OAAO,IAAI;AAErB,WAAO,OAAO;AAAA,MACV,MAAM,WAAW,IAAI;AAAA,MACrB,MAAM,WAAW,IAAI;AAAA,IAAA,CACxB;AAAA,EAAA;AAGE,SAAA,OAAO,iBAAiBD,WAAU;AAAA,IACrC,UAAU;AAAA,MACN,OAAO,OAAO;AAAA,QACV,KAAK,EAAE,OAAO,aAAa;AAAA,QAC3B,SAAS,EAAE,OAAO,iBAAiB;AAAA,QACnC,MAAM,EAAE,OAAO,cAAc;AAAA,MAAA,CAChC;AAAA,IACL;AAAA,IACA,WAAW;AAAA,MACP,OAAO,OAAO;AAAA,QACV,KAAK,EAAE,OAAO,WAAW;AAAA,QACzB,MAAM,EAAE,OAAO,YAAY;AAAA,QAC3B,MAAM,EAAE,OAAO,YAAY;AAAA,MAAA,CAC9B;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACH,OAAO,OAAO,iBAAiB,UAAU,KAAK,IAAI,GAAG;AAAA,QACjD,MAAM,EAAE,OAAO,WAAW;AAAA,QAC1B,IAAI,EAAE,OAAO,SAAS;AAAA,QACtB,WAAW,EAAE,OAAO,gBAAgB;AAAA,QACpC,WAAW,EAAE,KAAK,SAAS;AAAA,QAC3B,WAAW,EAAE,KAAK,SAAS;AAAA,MAAA,CAC9B;AAAA,IACL;AAAA,EAAA,CACH;AACL;AAEA,MAAA,aAAe;AC7Cf,MAAM,mBAAmB,CAAC,EAAE,QAAQ,MAAM,EAAE,SAAA,GAAY,eAAsC;AAC1F,MAAI,OAAO,aAAaA,WAAS,SAAS,QAAQ,CAAC,WAAW,QAAQ;AAAU,WAAA;AAChF,SAAU1J,oBAAA4B,KAAA,EAAA,UAAA,SAAS,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,SAAS,SAAS,MAAM,CAAC,EAAE,CAAA;AAC7E;AAEA,MAAeH,qBAAAA,EAAK,gBAAgB;ACPpC,MAAM,iBAAiB,CAAC,aAAqC;AACzD,QAAM,kBAAkBtB;AAAAA,IACnB,CAAC,SAAS,aAAa;AACpB,UAAI,oBAAoB;AAAkB,iBAAA,aAAa,YAAY,IAAI;AACvE,UAAI,mBAAmB,SAAS;AACpB,gBAAA,aAAa,YAAY,GAAG;AAEpC,gBAAQ,UAAU,KAAK,MAAO,mCAAyB,OAAO;AAAA,MAClE;AAAA,IACJ;AAAA,IACA,CAAC;AAAA,EAAA;AAGE,SAAA2C;AAAAA,IACH3C;AAAAA,MACI,CAAC,SAAS,aAAa;AACf,YAAA;AACA,+CAAW,SAAS;AAAA,QAAQ,UAC9B;AACE,0BAAgB,SAAS,QAAQ;AAAA,QACrC;AAAA,MACJ;AAAA,MACA,CAAC,QAAQ;AAAA,IACb;AAAA,EAAA;AAER;ACjBA,MAAM,cAAc,CAChB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GACA,QACC;AACK,QAAA,EAAE,SAASe;AACjB,QAAM,CAAC,uBAAuB,wBAAwB,IAAIrB,EAA8B,YAAY,KAAK;AACnG,QAAAgJ,aAAYxI,IAAQ,MAAMqJ,WAAS,MAAM,WAAW,SAAS,GAAG,CAAC,WAAW,SAAS,CAAC;AACtF,QAAA,SAAS5J,EAAuC,YAAY;AAElE,QAAM,iBAAiBO;AAAAA,IACnB,MAAM,aAAa,WAAW,aAAa,IAAIqJ,WAAS,SAAS,UAAUA,WAAS,SAAS;AAAA,IAC7F,CAAC,UAAU,aAAa;AAAA,EAAA;AAG5B,QAAM,kBAAkBrJ;AAAAA,IACpB,MAAM,cAAc,WAAW,WAAW,IAAIqJ,WAAS,UAAU,MAAMA,WAAS,UAAU;AAAA,IAC1F,CAAC,WAAW,WAAW;AAAA,EAAA;AAG3B,QAAM,EAAE,MAAM,KAAK,IAAIrJ,IAAQ,MAAM;AACjC,UAAM,EAAE,MAAAuJ,OAAM,MAAAC,MAAK,IAAIH,WAAS,WAAY;AACf,+BAAA,YAAY,KAAK;AAC1C,aAAO,UAAU;AAEjB,UAAI,mBAAmBE,MAAK,UAAU,QAAQ,iBAAiBA,MAAK,UAAU;AAAI;AAElF,uBAAiBA,MAAK,UAAU;AAChC,qBAAeA,MAAK,UAAU;AAC9B,iDAAc,gBAAgB;AAAA,IAAY,CAC7C;AAED,QAAI,EAAE,MAAM,gBAAgB,IAAI,iBAAiBA,MAAK;AAEtDA,UAAK,OAAO,cAAc,CAAC,QAAmC;AAC1D,UAAI,UAA8B,IAAI;AAE/B,aAAA,WAAW,YAAY,IAAI,eAAe;AAC7C,cAAMvM,SAAQ,OAAO,QAAQ,QAAQ,cAAc;AAC/C,YAAA,OAAO,SAASA,MAAK;AAAU,iBAAAA;AACnC,kBAAU,QAAQ;AAAA,MACtB;AAAA,IAAA;AAGJuM,UAAK,OAAO,cAAc,SAAU,KAAY;AACxC,UAAA,KAAK,aAAaF,WAAS,SAAS;AAAS;AACjD,UAAK,2BAAoB;AAAiB,eAAA;AAC1C,UAAK,2BAAoB;AAAQ,eAAO,KAAK;AACtC,aAAA;AAAA,IAAA;AAGX,WAAO,EAAE,MAAAE,OAAM,MAAAC,MAAK;AAAA,EACxB,GAAG,CAAE,CAAA;AAEC,QAAA,kBAAkBxJ,IAAQ,MAAM;AAC5B,UAAA,gBAAgB,CAAC,QAAe;AAClC,WAAK,OAAO,GAAG;AAAA,IAAA;AAGZ,WAAA;AAAA,MACH,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,kBAAkB,CAAC,QAAuB;AACtC,aAAK,OAAO,GAAG,KAAK,IAAI,eAAe;AAAA,MAC3C;AAAA,IAAA;AAAA,EACJ,GACD,CAAC,IAAI,CAAC;AAET,QAAM,mBAAmB;AAAA,IACrBF;AAAAA,MACK,CAAC,SAAS,aAAa;AACpB,YAAI,oBAAoB;AAAS,mBAAS,gBAAgB,eAAe;AACzE,YAAI,mBAAmB;AAAiB,kBAAA,aAAa,iBAAiB,MAAM;AAAA,MAChF;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EAAA;AAGJ2J;AAAAA,IACI;AAAA,IACA,MAAM;AACF,YAAM,EAAE,MAAApD,OAAM,IAAAC,IAAG,KAAI,6BAAM,cAAa;AACjC,aAAA;AAAA,QACH,OAAO,MAAM;AACH,wCAAA,eAAc,KAAK,UAAU,OAAO;AAAA,QAC9C;AAAA,QACA,IAAI,SAAS;AACT,iBAAO,EAAE,GAAI,OAAO,WAAW,aAAc;AAAA,QACjD;AAAA,QACA,IAAI,OAAO;AACP,iBAAO,2BAA2BD,KAAI;AAAA,QAC1C;AAAA,QACA,IAAI,KAAKhK,OAAM;AACX,wCAAM,cAAaA,UAAS,KAAK,UAAU,OAAOA,MAAK,QAAQ;AAAA,QACnE;AAAA,QACA,IAAI,KAAK;AACL,iBAAO,2BAA2BiK,GAAE;AAAA,QACxC;AAAA,QACA,IAAI,GAAGjK,OAAM;AACT,wCAAM,cAAaA,UAAS,KAAK,UAAU,KAAKA,MAAK,QAAQ;AAAA,QACjE;AAAA,MAAA;AAAA,IAER;AAAA,IACA,CAAC,MAAM,qBAAqB;AAAA,EAAA;AAGhCqD,IAAU,MAAM;AACZ,SAAK,OAAO;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,kBAAkB,CAAC;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ,UAAU,KAAK;AAAA,MACvB,UAAU;AAAA,MACV,WAAA8I;AAAA,MACA;AAAA,IAAA,CACH;AAAA,EACF,GAAA,CAAC,gBAAgB,iBAAiB,QAAQ,kBAAkB,cAAc,MAAM,MAAM,QAAQA,YAAW,iBAAiB,WAAW,CAAC;AAEzI9I,IAAU,MAAM;AACZ,UAAM,UAAW,CACZ,EAAA,OAAO,UAAiC,EACxC,MAAM,GAAG,CAAC,EACV,IAAI,MAAM,EACV,OAAO,OAAO;AACnB,QAAI,QAAQ,CAAC;AAAG,WAAK,UAAU,OAAO,CAAC,QAAQ,CAAC;AAChD,QAAI,QAAQ,CAAC;AAAG,WAAK,UAAU,KAAK,CAAC,QAAQ,CAAC;AACvC,WAAA;AAAA,EACX,GAAG,CAAE,CAAA;AAEE,SAAA,EAAE,kBAAkB,iBAAiB;AAChD;AAEA,MAAA,gBAAe;ACxJf,MAAM,WAAW+B,EAAW,CAAC,OAAsB,QAAQ;AACjD,QAAA4H,YAAWK,cAAY,OAAO,GAAG;AACjC,QAAA,SAASL,UAAS,KAAK,OAAO;AAGhC,SAAA/H,oBAAC,OAAI,EAAA,MAAK,QACN,UAAA;AAAA,IAAA3B,oBAACgK,sBAAiB,QAAgB,MAAMN,UAAS,MAAM,UAAU,MAAM,eAAe;AAAA,IACtF1J;AAAAA,MAACiK;AAAAA,MAAA;AAAA,QACG,KAAKP,UAAS;AAAA,QACd;AAAA,QACA,iBAAiBA,UAAS;AAAA,QAC1B,MAAMA,UAAS;AAAA,QACf,iBAAiB,MAAM;AAAA,QACvB,SAAS,MAAM;AAAA,MAAA;AAAA,IACnB;AAAA,EACJ,EAAA,CAAA;AAER,CAAC;AAED,MAAejI,aAAAA,EAAK,QAAQ;ACtB5B,MAAM,YAAY,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAA4C,QACtFE,oBAAA,OAAA,EAAK,GAAG,OAAO,KAAU,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACxG,UAAA;AAAA,EAAS,SAAA3B,oBAAC,WAAO,UAAM,MAAA,CAAA;AAAA,EACxBA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,UAAS;AAAA,MACT,GAAE;AAAA,MACF,UAAS;AAAA,IAAA;AAAA,EACb;AAAA,EAAA,CACJ,CACH;AAED,MAAA,cAAe;ACXf,MAAM,oBAAoB,CAAC,UAAoE,cAA8C;AACzI,QAAM,CAAC,QAAQ,SAAS,IAAIH,EAA2C;AAEvE,QAAM,eAAeiD;AAAAA,IACjBzC,IAAQ,MAAM;AACV,YAAMI,UACF,CAAC,kBACD,IAAI,SAAgB;AAChB,cAAM,MAAM,SAAS,eAAe,GAAG,IAAI;AACpC,eAAA,OAAOyC,EAAa,KAAK,aAAa;AAAA,MAAA;AAGrD,gBAAU,MAAS;AAEZ,aAAA,CAAA,kBAAiB,UAAU,yBAAyB,UAAU,MAAMzC,QAAO,aAAa,IAAI,MAAS;AAAA,IAAA,GAC7G,CAAC,UAAU,SAAS,CAAC;AAAA,IACxB;AAAA,EAAA;AAGG,SAAA,CAAC,QAAQ,YAAY;AAChC;AAEA,MAAA,sBAAe;ACjBf,MAAM,+BAA+B,CAAC,kBAA0C;AACtE,QAAA,EAAE,SAASS;AAEV,SAAAgJ;AAAAA,IACH/J;AAAAA,MACK,CAAC,eAAe,SAAS,WAAW;AACjC,YAAI,EAAE,yBAAyB;AAAqB,iBAAA;AACpD,YAAI,WAAW,aAAa;AAAU,iBAAA,cAAc,SAAS,MAAM;AAE/D,YAAA;AACA,YAAA;AACA,YAAA;AAEJ,gBAAQ,SAAS;AAAA,UACb,KAAK;AACmB,gCAAA;AACJ,4BAAA;AACN,sBAAAgK;AACV;AAAA,UACJ,KAAK;AACD,gCAAoB,gBAAgB;AAC1B,sBAAAxG;AACV;AAAA,UACJ;AACW,mBAAA;AAAA,QACf;AAEA,cAAM,sBAAsB;AAE5B,eAAO,sBACH3D;AAAAA,UAAC+B;AAAAA,UAAA;AAAA,YACG,cAAY,KAAK,IAAI,YAAY,aAAa,OAAO;AAAA,YACrD,SAAS,cAAc;AAAA,YACvB,UAAU,CAAC;AAAA,YACX,oBAAoB,CAAC,UAAU,iBAAiB;AAAA,YAChD,YAAY;AAAA,YAEZ,SAAS;AAAA,YAET,UAAA/B,oBAAC,SAAQ,EAAA,MAAK,eAAe,CAAA;AAAA,UAAA;AAAA,UAHxB;AAAA,QAKT,IAAA;AAAA,MACR;AAAA,MACA,CAAC,MAAM,aAAa;AAAA,IACxB;AAAA,EAAA;AAER;AAEA,MAAA,iCAAe;;ACrCf,MAAM,aAAa8B,EAAW,CAAC,OAAwB,QAAQ;AACrD,QAAA,EAAE,SAASZ;AACjB,QAAM,CAAC,kBAAkB,oBAAoB,IAAIkJ,+BAA6B,MAAM,aAAa;AACjG,QAAM,CAAC,sBAAsB,uBAAuB,IAAIvK,EAA8B,YAAY,KAAK;AAEjG,QAAA,eAAeQ,IAAQ,MAAM,MAAM,qBAAqB,OAAO,CAAC,MAAM,gBAAgB,CAAC;AAC7F,QAAM,EAAE,WAAW,MAAM,WAAW,OAAO,IAAI,YAAY,EAAE,UAAU,MAAM,UAAU,WAAW,aAAc,CAAA;AAEhH,QAAM,sBAAsBA,IAAQ,MAAM,GAAG,CAAC,EAAE,sCAAsC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC;AAC7I,QAAM,sBAAsBA,IAAQ,MAAO,eAAe,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,cAAe,CAAC,QAAQ,MAAM,YAAY,CAAC;AAE9H,QAAA,cAAcyC,YAA0B,MAAM,GAA0B;AAExE,QAAA,cAAc3C,IAAY,MAAM;;AACV,4BAAA,YAAY,KAAK;AAEzC,UAAIxD,MAAA,YAAY,YAAZ,gBAAAA,IAAqB,WAAQc,MAAA,YAAY,YAAZ,gBAAAA,IAAqB,KAAI;AAChD,OAAA6L,MAAA,MAAA,gBAAA,gBAAAA,IAAA,YAAc,GAAC5L,MAAA,YAAY,YAAZ,gBAAAA,IAAqB,OAAM,GAAC2L,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AAAA,IAC1E;AAAA,EACD,GAAA,CAAC,yBAAyB,MAAM,WAAW,CAAC;AAG3C,SAAA1H,oBAAC,OAAI,EAAA,WAAW,qBACZ,UAAA;AAAA,IAAC3B,oBAAA,OAAA,EAAI,WAAW,2CACZ,UAAAA;AAAAA,MAACqK;AAAAA,MAAA;AAAA,QACG,KAAK,MAAM;AAAA,QACX;AAAA,QACA,qBAAqB,MAAM;AAAA,QAC3B,SAAS,MAAM;AAAA,QACf,gBAAgB,MAAM;AAAA,QACtB,WAAW;AAAA,QACX,UAAU,MAAM;AAAA,MAAA;AAAA,IAAA,GAExB;AAAA,IACCrK,oBAAA,OAAA,EAAI,KAAK,sBAAsB,MAAK,SAAQ,WAAW,iCAAiC,cAAY,KAAK,IAAI,mBAAmB,EAAG,CAAA;AAAA,IACpIA;AAAAA,MAAC2J;AAAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,UAAU,MAAM,YAAYD,WAAS,SAAS;AAAA,QAC9C,WAAW,MAAM,aAAaA,WAAS,UAAU;AAAA,QACjD;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,IACnB;AAAA,IACC,oCAAiB,OAAI,EAAA,WAAW,iCAAkC,UAAK,KAAA,IAAI,qBAAqB,mBAAmB,EAAE,CAAA;AAAA,EAC1H,EAAA,CAAA;AAER,CAAC;AAED,MAAA,eAAe;;AC9Df,MAAM,kCAAkC;AAExC,SAAS,aACL,EAAE,WAAW,qBAAqB,IAAI,UAAU,UAAU,SAAS,GAAG,eAAe,GACrF,KACF;AACQ,QAAA,iBAAiBrJ,IAAQ,MAAM,eAAe,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;AAC/E,QAAA,gBAAgBA,IAAQ,MAAM,aAAa,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAEhE,QAAA,EAAE,SAAS,MAAM,IAAI,UAAU,gBAAgB,oBAAoB,iCAAiC,eAAe,OAAO;AAG5H,SAAAL,oBAAC,YAAO,WAAW,SAAS,KAAU,SAAS,OAAQ,GAAG,gBACtD,UAAAA,oBAAC6B,gBAAW,IAAI,kBAAkB,MAAM,SAAS,kBAAkB,MAAM,UAAU,MAC9E,SACL,CAAA,EACJ,CAAA;AAER;AACA,MAAeC,iBAAAA,EAAW,YAAY;;ACpBtC,SAAS,UACL,EAAE,SAAS,SAAS,YAAY,eAAe,QAAQ,gBAAgB,cAAc,GAAG,MAAM,GAC9F,KACF;AACE,QAAM,EAAE,aAAa,oBAAoB,WAAW,SAAS,WAAW,OAAO,YAAY,MAAArG,OAAM,UAAU,mBAAmB,SAAA,IAAa;AAMvI,MAAA,eAAe,OAAO,UAAU,GAAG;AACnC,YAAQ,MAAM,6EAA6E;AAAA,EAC/F;AAEA,QAAM,cAAc0E;AAAAA,IAChB,CAAC,UAAkD;AAC/C,yCAAU;AAAA,IACd;AAAA,IACA,CAAC,OAAO;AAAA,EAAA;AAGZ,QAAM,cAAcA;AAAAA,IAChB,CAAC,UAAyD;AAClD,UAAA;AAAS,gBAAQ,KAAK;AAAA,IAC9B;AAAA,IACA,CAAC,OAAO;AAAA,EAAA;AAGZ,QAAM,aAAaA;AAAAA,IACf,CAAC,UAAiD;AAC9C,qDAAgB;AAEhB,UAAI,YAAY;AACX,cAAM,OAA4B,QAAS,MAAM,OAA4B,MAAM;MACxF;AAEA,uCAAS;AAAA,IACb;AAAA,IACA,CAAC,QAAQ,eAAe,UAAU;AAAA,EAAA;AAGtC,QAAM,cAAcA;AAAAA,IAChB,CAAC,UAAiD;AAC9C,uDAAiB;AAAA,IACrB;AAAA,IACA,CAAC,cAAc;AAAA,EAAA;AAGnB,QAAM,kBAAkBgD;AAAAA,IACpB;AAAA,IACA,CAAC,mBAAmB1H,KAAI,EAAE;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,MACI,2BAA2B;AAAA,MAC3B,yBAAyB;AAAA,IAC7B;AAAA,IACA,yDAAoB,IAAI,CAAK+C,OAAA,mBAAmBA,EAAC;AAAA,EAAE;AAIvD,QAAM,EAAE,oBAAoB,KAAK,UAAU,KAAK,WAAW,KAAK,SAAS,IAAI,mBAAmB,IAAI,GAAG,aAAa;AAEpH,SAEQmD,oBAAAC,KAAA,EAAA,UAAA;AAAA,IAAA5B;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,IAAI;AAAA,QACH,GAAG;AAAA,QACJ,MAAAvE;AAAA,QACA,WAAW;AAAA,QACX,UAAU;AAAA,QACV,oBAAkB,oBAAoB,SAAY,GAAG,QAAQ,GAAG,iBAAiB;AAAA,QACjF,gBAAc;AAAA,QACd,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,IACJ;AAAA,IACC,aAAa,gBACTuE,oBAAA,QAAA,EAAK,WAAU,iCAAgC,IAAI,GAAG,QAAQ,GAAG,iBAAiB,IAC9E,UACL,aAAA,CAAA;AAAA,EAER,EAAA,CAAA;AAER;AAEA,UAAU,eAAe;AAAA,EACrB,MAAM;AAAA,EACN,oBAAoB,CAAC;AAAA,EACrB,SAAS,MAAM;AAAA,EAAC;AACpB;AAEA,MAAe8B,cAAAA,EAAW,SAAS;ACnGnC,MAAeA,YAAAA,EAAW,SAASwI,WAAU,OAAuB,KAA4C;AAC5G,SAAQtK,oBAAAuK,aAAA,EAAU,oBAAoB,MAAM,oBAAqB,GAAG,OAAO,KAAU,iBAAe,MAAM,UAAU,MAAK,OAAO,CAAA;AACpI,CAAC;ACUD,MAAM,uBAAuB,CAAC5O,WAAmB;AACtC,SAAA,CAACA,UAAS,QAAQA,MAAK;AAClC;AAEA,MAAM,kBAAkB,MAAM;AACpB,QAAA,uBAAuB,CAA4B,UAAyC;AAC9F,UAAM,EAAE,YAAY,MAAAgF,OAAM,UAAU,mBAAmB;AACvD,UAAM,CAAC,cAAc,eAAe,IAAId,EAAS,MAAM,KAAK;AAE5D,UAAM,cAAcM;AAAAA,MAChB,CAACtE,OAAa;AACV,cAAMF,SAASE,GAAE,OAA4B,MAAM,KAAK;AACxD,wBAAgBF,MAAK;AACrB,uBAAeA,MAAK;AAAA,MACxB;AAAA,MACA,CAAC,cAAc;AAAA,IAAA;AAGnBoE,MAAU,MAAM;AACR,UAAA,eAAe,aAAa,OAAO;AACnC,cAAMpE,SAAQ;AACd,wBAAgBA,MAAK;AACrB,uBAAeA,MAAK;AACpB,iBAASA,MAAK;AAAA,MAClB;AAEI,UAAA,eAAe,aAAa,OAAO;AACnC,iBAAS,gBAAgB,EAAE;AAAA,MAC/B;AAAA,OACD,CAAC,cAAc,YAAY,UAAU,cAAc,CAAC;AAEvD,+BAAQ,WAAU,EAAA,MAAAgF,OAAY,OAAO,cAAc,SAAS,YAAa,CAAA;AAAA,EAAA;AAG7E,SAAO,CAA4B,UAA0CX,oBAAA,sBAAA,EAAyB,GAAG,MAAO,CAAA;AACpH;AAEA,MAAM,aAAa,CAA8C,EAAE,QAAQ,GAAG,YAA4B;;AACtG,QAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AACvD,QAAM,CAAC,UAAU,eAAe,IAAII,kBAAgB,KAAK;AACzD,QAAM,CAAC,mBAAmB,uBAAuB,IAAIA,kBAAgB,KAAK;AACpE,QAAA,eAAeC,IAAQ,MAAM,MAAM,gBAAgB,sBAAsB,CAAC,MAAM,YAAY,CAAC;AAC7F,QAAA,CAAC,eAAe,mBAAmB,IAAID,kBAAgB,aAAa,MAAM,KAAK,CAAC;AACtF,QAAM,CAAC,iBAAiB,qBAAqB,IAAIA,kBAAgB,KAAK;AACtE,QAAM,CAAC,cAAc,kBAAkB,IAAIA,kBAAgB,KAAK;AAC1D,QAAA,CAAC,eAAe,mBAAmB,IAAIA,kBAAgB,aAAa,MAAM,KAAK,CAAC;AACtF,QAAM,gBAAgB;AAEtB,QAAM,kBAAkBC,IAAQ,MAAM,UAAU,gBAAmB,CAAC,MAAM,CAAC;AAE3E,QAAM,iBAAiBF;AAAAA,IACnB,CAAC,iBAAiC;AACxBqK,YAAAA,iBAAgB,aAAa,gBAAgB,MAAS;AAC5D,0BAAoBA,cAAa;AACjC,0BAAoB,iBAAiB,IAAI;AACzC,yBAAmB,kBAAkB,iBAAiB,MAAM,QAAQ,CAACA,cAAa;AAAA,IACtF;AAAA,IACA,CAAC,cAAc,qBAAqB,qBAAqB,oBAAoB,iBAAiB,MAAM,KAAK;AAAA,EAAA;AAG7G,QAAM,EAAE,cAAc,qBAAqB,YAAY,kBAAA,IAAsBxG,kBAAgB;AAAA,IACzF,eAAe,iBAAiB,CAAC;AAAA,IACjC,eAAe;AAAA,EAAA,CAClB;AAED,QAAM,CAAC,iBAAiB,cAAc,IAAI3D,IAAQ,MAAM;AAC9C,UAAA,iBAAiB,CAAC,SAAkB,MAAM;AAC5C,UAAI,SAAS;AAAU;AAEvB,UAAI,MAAM;AACY;AAClB,2BAAmB,KAAK;AACxB,8BAAsB,KAAK;AAAA,MAC/B;AAEA,sBAAgB,IAAI;AACpB,8BAAwB,IAAI;AAAA,IAAA;AAGhC,WAAO,CAAC,eAAe,KAAK,GAAG,eAAe,IAAI,CAAC;AAAA,EAAA,GACpD,CAAC,iBAAiB,UAAU,mBAAmB,yBAAyB,uBAAuB,kBAAkB,CAAC;AAErHN,IAAU,MAAM;AACZ,QAAI,mBAAmB;AACbyK,YAAAA,iBAAgB,aAAa,MAAM,KAAK;AAC9C,8BAAwB,KAAK;AAC7B,0BAAoBA,cAAa;AACjC,4BAAsB,CAACA,cAAa;AAAA,IACxC;AAAA,EAAA,GACD,CAAC,MAAM,OAAO,mBAAmB,cAAc,yBAAyB,qBAAqB,qBAAqB,CAAC;AAEtHzK,IAAU,MAAM;AACZ,kBAAc,gBAAgB;AAC9B,wBAAoB,aAAa;AAAA,KAClC,CAAC,YAAY,iBAAiB,qBAAqB,aAAa,CAAC;AACpE,QAAM,iBAAiB,cAAc,aAAa,KAAK,EAAE;AACzD,QAAM,iBAAiB,cAAc,aAAa,KAAK,EAAE;AAEzD,SAEQ4B,oBAAAC,KAAA,EAAA,UAAA;AAAA,IAAA5B,oBAAC,OAAI,EAAA,WAAW,oCAAoC,MAAM,IAAI,IACzD,UAAAK;AAAAA,MACG,MACIL;AAAAA,QAACyK;AAAAA,QAAA;AAAA,UACG,oBAAoB;AAAA,YAChB,GAAI,MAAM,sBAAsB,CAAC,cAAc,IAAI,CAAC;AAAA,YACpD,GAAI,MAAM,sBAAsB,CAAC;AAAA,YACjC,GAAI,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,YAC7B,GAAI,gBAAgB,KAAK,CAAC,eAAe;AAAA,UAC7C;AAAA,UACA,SAAS,WAAW,kBAAkB;AAAA,UACtC,UAAU;AAAA,UACV,KAAK;AAAA,UAEL,UAAA9I,oBAAC,OAAI,EAAA,WAAU,6CACX,UAAA;AAAA,YAAA3B;AAAAA,cAAC6B;AAAAA,cAAA;AAAA,gBACG,IAAI,kBAAkB;AAAA,gBACtB,SAAS,kBAAkB;AAAA,gBAC3B,UAAU;AAAA,gBACV,WAAU;AAAA,gBAET,UAAM,MAAA;AAAA,cAAA;AAAA,YACX;AAAA,YACC,CAAC,CAAC,MAAM,uBACJ7B,oBAAA,OAAA,EAAI,WAAU,2CACX,UAAAA;AAAAA,cAAC6B;AAAAA,cAAA;AAAA,gBACG,IAAI,kBAAkB;AAAA,gBACtB,SAAS,kBAAkB;AAAA,gBAC3B,UAAU;AAAA,gBACV,WAAU;AAAA,gBAET,UAAM,MAAA;AAAA,cAAA;AAAA,YAAA,GAEf;AAAA,UAAA,GAER;AAAA,QAAA;AAAA,MACJ;AAAA,MAEJ;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IAAA,GAER;AAAA,IACC,YACG7B;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,SAAS;AAAA,QACT,QAAOrD,MAAA,MAAM,UAAN,gBAAAA,IAAa;AAAA,QACpB,SAAS,wBAAwB;AAAA,QACjC,WAAW,CAAC,QAAQ;AAAA,QACpB,MAAM;AAAA,QACN,cAAY,GAAG,MAAM,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,oBAAoB,MAAM,sBAAsB;AAAA,QAChD,SAAS;AAAA,QACT;AAAA,QACA,kBAAkB;AAAA,QAClB,UAAU,yBAAyB;AAAA,QACnC,eAAe,MAAM;AAAA,QACrB,aAAa;AAAA,QACb,aAAa,kBAAkB;AAAA,QAE9B,0BAAgB,EAAE,GAAG,OAAO,YAAY,cAAc,gBAAgB;AAAA,MAAA;AAAA,IAC3E;AAAA,EAER,EAAA,CAAA;AAER;AAEA,MAAe8E,eAAAA,EAAK,UAAU;AC7LZ,IAAA,yCAAAiJ,0BAAX;AACHA,wBAAA,MAAO,IAAA;AACPA,wBAAA,IAAK,IAAA;AAFSA,SAAAA;AAAA,GAAA,wBAAA,CAAA,CAAA;;ACSlB,MAAM,oBAAoB;AAAA,EACtB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AACV;AAEA,MAAM,wBAAwB,IAAI,KAAK,eAAe,SAAS,iBAAiB;AAEhF,MAAM,yBAAyB,CAAC,MAA4B,UAAmB,WAAoB;AAC/F,QAAMhE,QAAO,YAAY,KAAK,SAAS,QAAQ;AAC/C,QAAMC,MAAK,UAAU,KAAK,SAAS,MAAM;AAEzC,MAAID,SAAQC;AAAW,WAAA,GAAGD,KAAI,MAAMC,GAAE;AAClC,MAAAD;AAAa,WAAA,KAAK,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAMA,MAAK,EAAA,CAAG;AACrE,MAAAC;AAAW,WAAA,KAAK,IAAI,qBAAqB,EAAE,QAAQ,EAAE,MAAMA,IAAG,EAAA,CAAG;AACzE;AAEA,MAAM,cAAc,CAACjK,UAAe;AAC5B,MAAA;AACA,WAAO,IAAI,KAAKA,SAAQ,EAAE,EAAE,YAAY;AAAA,EAAA,QACpC;AACG,WAAA;AAAA,EACX;AACJ;AAEA,MAAM,6BAA6B,MAAM;AACrC,QAAM,0BAA0B,CAAC;AAAA,IAC7B;AAAA,IACA,MAAAgK;AAAA,IACA,IAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAArJ;AAAA,IACA;AAAA,IACA;AAAA,EAAA,MAC+C;AACzC,UAAA,EAAE,SAAS4D;AACjB,UAAM,CAAC,cAAc,eAAe,IAAIrB,EAAS,oBAAoB;AACrE,UAAM,aAAaQ,IAAQ,MAAM,CAAC,IAAI,KAAKqG,KAAc,GAAG,IAAI,KAAKC,GAAY,CAAC,GAAG,CAACD,OAAMC,GAAE,CAAC;AAC/F,UAAM,gBAAgB7G;AAEtB,UAAM,cAAcK;AAAAA,MAChB,CAACuG,QAAeC,SAAgB;AACb,uBAAA,uBAAuB,MAAM,YAAYD,MAAI,GAAG,YAAYC,IAAE,CAAC,CAAC;AAAA,MACnF;AAAA,MACA,CAAC,MAAM,cAAc;AAAA,IAAA;AAGzB5G,MAAU,MAAM;;AACZ,cAAQ,YAAY;AAAA,QAChB,KAAK,aAAa;AACL,mBAAA;AAAA,YACL,sBAAsB;AAAA,YACtB,CAAC,qBAAqB,IAAI,GAAG,aAAYpD,MAAA,cAAc,YAAd,gBAAAA,IAAuB,IAAI;AAAA,YACpE,CAAC,qBAAqB,EAAE,GAAG,aAAYc,MAAA,cAAc,YAAd,gBAAAA,IAAuB,EAAE;AAAA,UAAA,CACnE;AACD;AAAA,QAEJ,KAAK,aAAa;AACd,WAAAC,MAAA,cAAc,YAAd,gBAAAA,IAAuB;AACd;MACjB;AAAA,IACD,GAAA,CAAC,YAAY,UAAU,YAAY,CAAC;AAGnC,WAAAsC;AAAAA,MAAC2K;AAAAA,MAAA;AAAA,QACG,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,wBAAwB;AAAA,QACxB;AAAA,QACA;AAAA,QACA,UAAArN;AAAA,QACA;AAAA,QACA,WAAW,YAAY,SAAS;AAAA,QAChC,WAAW,YAAY,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACpC;AAIR,SAAO,CAAC,UAAwD0C,oBAAA,yBAAA,EAAyB,GAAG,MAAO,CAAA;AACvG;AAEA,MAAM,wBAAwB,CAAC,WAAgC,UAAgB,WAAiB;AACrF,SAAA,UAAU,YAAY,UAAU,MAAM;AACjD;AAEwB,SAAA,WAAwD,EAAE,OAAO,MAAA0G,OAAM,IAAAC,KAAI,sBAAsB,GAAG,SAAyB;AAC3I,QAAA,EAAE,SAASzF;AACjB,QAAM,CAAC,2BAA2B,uBAAuB,IAAIrB,EAAiB;AAC9E,QAAM,CAAC,WAAW,OAAO,IAAIA,EAAiB;AAC9C,QAAM,CAAC,SAAS,KAAK,IAAIA,EAAiB;AAE1C,QAAM,WAAWM;AAAAA,IACb,CAAU,WAAA;AACA,YAAA,EAAE,MAAAuG,QAAM,IAAAC,MAAI,sBAAAiE,sBAAAA,IAAyB,UAAU;AACjD,UAAA;AACA,gCAAwB,6BAA6BA,qBAAoB;AACjE,gBAAA,YAAY,aAAalE,MAAI,CAAC;AAChC,cAAA,YAAY,WAAWC,IAAE,CAAC;AAAA,MAAA,UAClC;AACQ,cAAA,SAAS,EAAE,MAAAD,QAAM,IAAAC,MAAI,sBAAAiE,uBAAsB;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,CAAC,2BAA2B,WAAW,SAAS,KAAK;AAAA,EAAA;AAGzD,QAAM,CAAC,iBAAiB,iBAAiB,IAAIvK,IAAQ,MAAM;AACvD,QAAI,YAAY;AACZ,QAAA;AACA,kBAAY,IAAI,KAAK,eAAe,KAAK,QAAQ,iBAAiB;AAAA,IAAA,QAC9D;AAAA,IAER;AAEA,WAAO,CAAC,KAAK,IAAI,oBAAoB,GAAG,SAAS;AAAA,EAAA,GAClD,CAAC,IAAI,CAAC;AAETN,IAAU,MAAM,wBAAwB,oBAAoB,GAAG,CAAC,oBAAoB,CAAC;AAC3EA,IAAA,MAAM,QAAQ,YAAY2G,SAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAACA,KAAI,CAAC;AACtD3G,IAAA,MAAM,MAAM,YAAY4G,OAAM,KAAK,IAAI,CAAC,CAAC,GAAG,CAACA,GAAE,CAAC;AAEpD,QAAA,QAAQtG,IAAQ,MAAM;AACpB,QAAA,yBAAyB,mBAAmB,aAAa,SAAS;AAC3D,aAAA,sBAAsB,mBAAmB,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;AAAA,IAC1F;AAEA,WAAO,wBAAwB,MAAM;AAAA,EAAA,GACtC,CAAC,iBAAiB,mBAAmB,WAAW,SAAS,sBAAsB,MAAM,KAAK,CAAC;AAG1F,SAAAL;AAAAA,IAAC6K;AAAAA,IAAA;AAAA,MACI,GAAI;AAAA,MACL,MAAAnE;AAAA,MACA,IAAAC;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA,OAAO,uBAAuB,MAAMD,OAAMC,GAAE;AAAA,MAC5C,oBAAoB;AAAA,IAAA;AAAA,EAAA;AAGhC;AC/IA,MAAM,iCAAiC,CAAC;AAAA,EACpC,gBAAAmE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA;AAAA,EACA;AACJ,MAA2C;AACjC,QAAA,EAAE,SAAS7J;AACX,QAAA,yBAAyBb,IAAQ,MAAM,KAAK,IAAI,cAAc,QAAQ,gBAAgB,GAAG,CAAC,IAAI,CAAC;AACrG,QAAM,CAAC,yBAAyB,0BAA0B,IAAIR,EAAS,sBAAsB;AAE7F,QAAM,0BAA0BM;AAAAA,IAC5B,CAAC,SAAqD,iBAAiB;AACnE,iBAAW,CAAC,OAAOxE,MAAK,KAAK,OAAO,QAAQ,MAAM,GAAoE;AAClH,gBAAQ,OAAO;AAAA,UACX,KAAK;AACD,uCAA2BA,UAAS,sBAAsB;AAC1D;AAAA,UACJ,KAAK,qBAAqB;AACR,0BAAA;AAAA,cACV,CAAC,uBAAuB,aAAa,GACjCA,UAAS,cAAc,QAAQ,oBAAoB,uBAAuB,aAAa;AAAA,YAAA,CAC9F;AACD;AAAA,UACJ,KAAK,qBAAqB;AACR,0BAAA;AAAA,cACV,CAAC,uBAAuB,aAAa,GACjCA,UAAS,cAAc,QAAQ,oBAAoB,uBAAuB,aAAa;AAAA,YAAA,CAC9F;AACD;AAAA,UACJ;AACI;AAAA,QACR;AAEoB;MACxB;AAAA,IACJ;AAAA,IACA,CAAC,wBAAwB,qBAAqB,aAAa;AAAA,EAAA;AAGvD0E,MAAA,MAAM,CAAC,mBAAmB,2BAA2B,sBAAsB,GAAG,CAAC,iBAAiB,sBAAsB,CAAC;AAEzH,QAAA,YAAYA,IAAQ,MAAM;AACtB,UAAA3D,QAAO,IAAI,KAAKqO,aAAY;AAClC,IAAArO,MAAK,SAASA,MAAK,SAAS,IAAI,EAAE;AAClC,WAAOA,MAAK;EAAS,GACtB,CAACqO,aAAY,CAAC;AAGb,SAAA/K;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,OAAO,KAAK,IAAI,WAAW;AAAA,MAC3B,MAAM,uBAAuB;AAAA,MAC7B;AAAA,MACA,WAAW,IAAI,KAAK+K,aAAY,EAAE,SAAS;AAAA,MAC3C,MAAM,QAAQ,uBAAuB,aAAa;AAAA,MAClD,IAAI,QAAQ,uBAAuB,aAAa;AAAA,MAChD,sBAAsB;AAAA,MACtB,wBAAwB,cAAc,QAAQ;AAAA,MAC9C,UAAUD,mBAAA,gBAAAA,gBAAgB;AAAA,MAC1B,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,KAAKC;AAAA,IAAA;AAAA,EAAA;AAGjB;ACpFO,MAAM3I,eAAa;AACnB,MAAM,aAAa;;;ACDnB,MAAMA,eAAa;AACnB,MAAM,kBAAkBA,eAAa;AACrC,MAAM,yBAAyB,kBAAkB;AACjD,MAAM,yBAAyB,kBAAkB;AACjD,MAAM,yBAAyB,kBAAkB;AACjD,MAAM,0BAA0B,kBAAkB;AAClD,MAAM,uBAAuB;AAC7B,MAAM,gBAAgBA,eAAa;AACnC,MAAM,2BAA2B,gBAAgB;AACjD,MAAM,gBAAgBA,eAAa;ACTnC,MAAM,gCAAgC;;ACU7C,SAAS,WACL,EAAE,WAAW,OAAO,SAAS,qBAAqB,CAAA,GAAI,MAAA3G,QAAO,UAAU,UAAU,WAAW,WAAW,GAAG,eAAA,GAC1G,KACF;AACQ,QAAA,iBAAiB4E,IAAQ,MAAM,eAAe,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;AAC/E,QAAA,gBAAgBA,IAAQ,MAAM,aAAa,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAEhE,QAAA,EAAE,SAAS,MAAA,IAAU;AAAA,IACvB;AAAA,IACA,CAAC,GAAG,oBAAoB,GAAI,YAAY,CAAC,YAAY,IAAI,CAAA,CAAG;AAAA,IAC5D;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIA,SAAAL,oBAAC,UAAO,EAAA,WAAW,SAAS,MAAAvE,OAAY,UAAoB,SAAS,OAAO,KAAW,GAAG,gBACrF,SACL,CAAA;AAER;AAEA,MAAeqG,eAAAA,EAAW,UAAU;ACTpC,MAAM,iBAAiB,CAAC,EAAE,cAAc,UAAU,QAAQ,WAAW,GAAG,gBAAwD;AACtH,QAAA,EAAE,SAASZ;AACjB,QAAM,CAAC,QAAQ,SAAS,IAAIrB,EAAS,KAAK;AACpC,QAAA,eAAeM,IAAY,MAAM,UAAU,CAAA6K,YAAU,CAACA,OAAM,GAAG,CAAC,SAAS,CAAC;AAC1E,QAAA,kBAAkBlL,EAA0B,IAAI;AAChD,QAAA,sBAAsBA,EAAO,KAAK;AAClC,QAAA,YAAYA,EAAO,MAAM;AAE/B,QAAM,kBAAkB;AAAA,IACpB;AAAA,IACAK,IAAY,MAAM;AACd,UAAI,QAAQ;AACK;AACb,4BAAoB,UAAU;AAAA,MAClC;AAAA,IAAA,GACD,CAAC,QAAQ,YAAY,CAAC;AAAA,EAAA;AAG7BJ,IAAU,MAAM;;AACZ,QAAI,QAAQ;AACR,OAAApD,MAAA,gBAAgB,YAAhB,gBAAAA,IAAyB;AAAA,IAAM,OAC5B;AAGH,UAAI,UAAU,YAAY,UAAU,CAAC,oBAAoB,SAAS;AAC9D,SAAAc,MAAA,gBAAgB,YAAhB,gBAAAA,IAAyB;AAAA,MAC7B;AACA,0BAAoB,UAAU;AAAA,IAClC;AACA,cAAU,UAAU;AAAA,EAAA,GACrB,CAAC,QAAQ,eAAe,CAAC;AAE5B,SACKuC,oBAAA,OAAA,EAAI,WAAWoC,cACX,qBAEOT,oBAAAC,KAAA,EAAA,UAAA;AAAA,IAAAD;AAAAA,MAACsJ;AAAAA,MAAA;AAAA,QACG,WAAW9H,GAAW,iBAAiB,wBAAwB,EAAE,CAAC,sBAAsB,GAAG,QAAQ;AAAA,QACnG,UAAU;AAAA,QACV;AAAA,QACA,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,eAAa;AAAA,QACb,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAa;AAAA,QACZ,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAAnD,oBAAC,UAAK,WAAU,oBAAoB,UAAK,KAAA,IAAI,uBAAuB,GAAE;AAAA,8BACrE,OAAI,EAAA,WAAWmD,GAAW,eAAe,wBAAwB,GAAI,UAAa,cAAA;AAAA,UACnFnD,oBAAC,SAAI,WAAW,eACZ,8BAAC2D,eAAY,EAAA,MAAK,gBAAe,EACrC,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,IACAhC;AAAAA,MAACsJ;AAAAA,MAAA;AAAA,QACG,IAAI;AAAA,QACJ,WAAW9H,GAAW,iBAAiB,wBAAwB,yBAAyB;AAAA,UACpF,CAAC,sBAAsB,GAAG;AAAA,UAC1B,CAAC,sBAAsB,GAAG,CAAC;AAAA,QAAA,CAC9B;AAAA,QACD,UAAU,CAAC;AAAA,QACX;AAAA,QACA,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,eAAa,CAAC;AAAA,QACd,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAa;AAAA,QACZ,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAAnD,oBAAC,UAAK,WAAU,oBAAoB,UAAK,KAAA,IAAI,yBAAyB,GAAE;AAAA,8BACvE,OAAI,EAAA,WAAWmD,GAAW,eAAe,wBAAwB,GAC7D,UAAA;AAAA,YAAA;AAAA,YACDnD,oBAAC,SAAK,UAAS;AAAA,UAAA,GACnB;AAAA,UACAA,oBAAC,SAAI,WAAW,eACZ,8BAACmK,aAAU,EAAA,MAAK,gBAAe,EACnC,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EACJ,EAAA,CAAA,wBAEC,OAAI,EAAA,WAAWhH,GAAW,iBAAiB,EAAE,CAAC,sBAAsB,GAAG,QAAQ,GAAI,GAAG,WACnF,UAAAnD,oBAAC,SAAI,WAAW,eAAgB,UAAa,aAAA,CAAA,EACjD,CAAA,EAER,CAAA;AAER;AC9GO,MAAMoC,eAAa;AACnB,MAAM,eAAeA,eAAa;AAClC,MAAM,gBAAgBA,eAAa;;ACI7B,MAAA,iBAA0C,CAAC,EAAE,YAAY,OAAO,YAAY,OAAO,YAAY;AACxG,6BAAQ,QAAK,EAAA,WAAWe,GAAWf,cAAY,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,GAAG,OAAO,EAAE,MAAS,EAAA,CAAA;AACjI;ACRO,MAAMA,eAAa;AACnB,MAAM,wBAAwBA,eAAa;AAC3C,MAAM,gCAAgC,wBAAwB;AAC9D,MAAM,aAAaA,eAAa;AAChC,MAAM,cAAcA,eAAa;AACjC,MAAM,oBAAoBA,eAAa;AACvC,MAAM,eAAeA,eAAa;ACMlC,MAAM,mBAAmB;AAAA,EAC5B,CAAC,EAAE,QAAQ,MAAM,mBAAmB,WAAW,GAAG,SAAS,GAA0B,QAAuC;AAEpH,WAAApC;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAWmD,GAAW,uBAAuB,WAAW,EAAE,CAAC,6BAA6B,GAAG,mBAAmB;AAAA,QAC9G,OAAO,EAAE,QAAQ,UAAU;AAAA,QAC3B;AAAA,QACC,GAAG;AAAA,QAEH,UAAO,OAAA,YACHnD,oBAAA6B,cAAA,EAAW,SAAS,kBAAkB,SAAS,WAAW,aACtD,UAAA,KAAK,IAAI,OAAO,QAAQ,GAC7B;AAAA,MAAA;AAAA,IAAA;AAAA,EAIhB;AACJ;;ACVO,MAAM,cAAc,CAAC;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,SAAAqJ;AACJ,MAAwB;AACd,QAAA,EAAE,SAAShK;AAEjBnB,IAAU,MAAM;AACN,UAAA,YAAY,cAAc,IAAI,CAAU,WAAA;;AAAA,eAAAtC,OAAAd,MAAA,OAAO,QAAP,gBAAAA,IAAY,YAAZ,gBAAAc,IAAqB,wBAAwB,UAAS;AAAA,KAAC;AACrG,gBAAY,SAAS;AAAA,EAAA,GAKtB,CAAC,WAAW,CAAC;AAEhB,QAAM,iBAAiB,CAACJ,YAAmB,EAAE,OAAO,UAAU,OAAOA,MAAK,IAAI,OAAOA,MAAK,IAAI,OAAO;AAErG,QAAM,aAAa,cAAc,aAAa,KAAK,EAAE;AAErD,QAAM,oBAAoB8C;AAAAA,IACtB,CAAC,QAAiC,gBAAyB;AACvD,UAAI,OAAO,oBAAoB;AAC3B,eAAO,kBAAkB;AAAA,MAC7B;AACA,aAAO,eAAe,CAAC,aAAa,kBAAkB,OAAO,kBAAkB;AAAA,IACnF;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGf,6BACK,OAAI,EAAA,WAAWgD,GAAWf,cAAY,EAAE,CAAC,UAAU,GAAG,CAAC,UAAU,GAC7D,wBAAc,IAAI,CAAC,QAAQ/E,WAAU;AAC5B,UAAA1B,SAAQ,OAAO;AACrB,UAAM,cAAc,CAAC,CAACA,UAASA,OAAM,SAAS;AAC9C,+BACK,OACI,EAAA,UAAA;AAAA,MACI,aAAA,OAAO,eACJqE,oBAAC,SAAQ,EAAA,SAAS,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,GAAG,oBAAoB,WACtE,UAAAA,oBAAC,kBAAiB,EAAA,QAAgB,MAAY,kBAAA,CAAsC,EACxF,CAAA,IAECA,oBAAA,kBAAA,EAAiB,QAAgB,MAAY,kBAAsC,CAAA;AAAA,MAE3F,oBACGA,oBAAC,gBAAe,EAAA,WAAsB,WAAW,OAAO,mBAAmB,OAAO,OAAO,gBAAgB,KAAM,CAAA,IAC/GkL,WACClL,oBAAA,QAAA,EAAK,WAAWmD,GAAW,CAACf,cAAY,iBAAiB,CAAC,EAAG,CAAA,IAE9DpC,oBAAC,OAAI,EAAA,KAAK,OAAO,KAAK,OAAO,eAAe3C,MAAK,GAC7C,UAAA2C;AAAAA,QAAC6B;AAAAA,QAAA;AAAA,UACG,SAAS,kBAAkB,QAAQ,WAAW;AAAA,UAC9C,WAAWsB,GAAW,EAAE,CAAC,WAAW,GAAG,OAAO,oBAAoB,CAAC,YAAY,GAAG,CAAC,OAAO,oBAAoB;AAAA,UAE7G,UAAAxH;AAAA,QAAA;AAAA,MAAA,GAET;AAAA,IAAA,EAAA,GArBE0B,MAuBV;AAAA,EAEP,CAAA,EACL,CAAA;AAER;AClFO,MAAM,uBAAuB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AAAA,EACZ;AAAA,EACA;AACJ,MAAiC;AACvB,QAAA,EAAE,SAAS6D;AACX,QAAA,cAAcpB,EAAuB,IAAI;AACzC,QAAA,aAAaA,EAAuB,IAAI;AACxC,QAAA,cAAcA,EAAuB,IAAI;AAEzC,QAAA,gBAA2CO,IAAQ,MAAM;AAC3D,UAAM,kBAA2C;AAAA,MAC7C,UAAU;AAAA,MACV,KAAK;AAAA,MACL,eAAe;AAAA,MACf,UAAU,MAAM,SAAS,KAAK,OAAO,MAAM,WAAW,MAAM,QAAQ;AAAA,MACpE,cAAc;AAAA,IAAA;AAGlB,UAAM,iBAA0C;AAAA,MAC5C,UAAU;AAAA,MACV,KAAK;AAAA,MACL,eAAe;AAAA,MACf,UAAU,MAAM,SAAS,KAAK,OAAO,MAAM,UAAU,MAAM,QAAQ;AAAA,MACnE,cAAc;AAAA,IAAA;AAGX,WAAA;AAAA,MACH,GAAI,gBAAgB,cAAc,CAAC,eAAe,IAAI,CAAC;AAAA,MACvD,GAAI,gBAAgB,aAAa,CAAC,cAAc,IAAI,CAAC;AAAA,MACrD;AAAA,QACI,KAAK;AAAA,QACL,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,UAAU,MAAM,+BAAO;AAAA,MAC3B;AAAA,IAAA;AAAA,EAEL,GAAA,CAAC,OAAO,aAAa,IAAI,CAAC;AAGzB,SAAAL;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,SAAS,CAAC;AAAA,MACV;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAGZ;;AC9DO,MAAMoC,eAAa;ACKnB,MAAM,WAA8B,CAAC,EAAE,eAAe;AACzD,SAAQpC,oBAAA,MAAA,EAAG,WAAWoC,cAAa,SAAS,CAAA;AAChD;ACLO,MAAM,oBAAoB,MAA8C;AAC3E,QAAM,CAAC,WAAW,YAAY,IAAIvC,EAAmB,CAAE,CAAA;AACjD,QAAA,4BAA4BM,IAAY,CAAC,WAAqB;AAChE;AAAA,MAAa,CACT,qBAAA,OAAO,MAAM,CAAA,UAAS,CAAC,KAAK,IACtB,SACA,OAAO,IAAI,CAAC,OAAO9C,WAAU;AACnB,cAAA,kBAAkB,iBAAiBA,MAAK;AAC9C,eAAO,CAAC,mBAAmB,QAAQ,kBAAkB,QAAQ;AAAA,MAAA,CAChE;AAAA,IAAA;AAAA,EAEf,GAAG,CAAE,CAAA;AACE,SAAA,CAAC,WAAW,yBAAyB;AAChD;ACCa,MAAA,aAAaoE,EAAK,CAAC,EAAE,QAAQ,WAAW,aAAa,gBAAiC;AAC/F,QAAM,CAAC,YAAY,GAAG,YAAY,IAAI;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,kBAAkB;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI5B,EAAS,KAAK;AAG5C,SAAAG;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,cACIA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA,OAAO;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,UACR,UAAQ;AAAA,UACR,YAAY;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,QAAA;AAAA,MACjB;AAAA,MAEJ;AAAA,MACA,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,SAAS,MAAM,aAAa,IAAI;AAAA,MAChC,cAAc,MAAM,aAAa,KAAK;AAAA,MACtC,QAAQ,MAAM,aAAa,KAAK;AAAA,MAE/B,UAAA,CAAC,aAAa,aAAa,UACxBA,oBAAC,YACI,UAAa,aAAA,IAAI,CACd,UAAAA,oBAAC,MACG,EAAA,UAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QAAA;AAAA,MANZ,EAAA,GAAA,MAAM,QAQf,CACH,GACL;AAAA,IAAA;AAAA,EAAA;AAIhB,CAAC;ACvCD,MAAM,oBAAoByB;AAAAA,EACtB,CAAC;AAAA,IACG;AAAA,IACA;AAAA,IACA,kBAAA0J;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,MACmG;AAC7F,UAAA,uBAAuB,iBAAiB,sBAAsB;AAC9D,UAAA,gBAAgBhL,IAAY,YAAY;AAC1C,aAAO,qBAAqB,cAAc;AAAA,QACtC,OAAO;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,kBAAAgL;AAAA,QACJ;AAAA,MAAA,CACH;AAAA,IACL,GAAG,CAACA,mBAAkB,YAAY,cAAc,cAAc,YAAY,sBAAsB,WAAW,WAAW,QAAQ,CAAC;AAE/H,UAAM,EAAE,MAAM,WAAW,IAAI,SAAS;AAAA,MAClC,cAAc9K,IAAQ,OAAO,EAAE,SAAS,CAAC,CAAC8K,kBAAiB,IAAI,CAACA,iBAAgB,CAAC;AAAA,MACjF,SAAS;AAAA,IAAA,CACZ;AACK,UAAA,YAAY,CAACA,qBAAoB,cAAc;AAE/C,UAAA,YAAYhL,IAAY,MAAM;AAC5B,UAAA,CAAC,uBAAuB,CAAC,MAAM;AAC/B,eAAO,6BAAM;AAAA,MACjB;AAEM,YAAA,gBAAgB,oBAAoB,IAAI,CAAYiL,cAAA;AACtD,cAAM,kBAAkB,KAAK,OAAO,KAAK,CAAS,UAAA,MAAM,aAAaA,SAAQ;AAC7E,eAAO,mBAAmB,EAAE,UAAAA,WAAU,WAAW,GAAG,UAAU;MAAE,CACnE;AAEM,aAAA,cAAc,OAAO,KAAK,OAAO,OAAO,CAAS,UAAA,CAAC,cAAc,SAAS,KAAK,CAAC,CAAC;AAAA,IAAA,GACxF,CAAC,qBAAqB,IAAI,CAAC;AAExB,UAAA,SAAS,UAAU,KAAK;AAC9B,UAAM,aAAa,cAAc,aAAa,KAAK,EAAE;AAErD,WACKpL,oBAAA,OAAA,EAAI,WAAWoC,cACX,uBAEOT,oBAAAC,KAAA,EAAA,UAAA;AAAA,MAAC5B,oBAAA,OAAA,EAAI,WAAW,YACZ,UAACA,oBAAA,YAAA,EAAW,QAAgB,WAAsB,aAAY,YAAW,UAAA,CAAsB,EACnG,CAAA;AAAA,MACAA,oBAAC,OAAI,EAAA,WAAW,YACZ,UAAAA,oBAAC,YAAW,EAAA,QAAgB,WAAsB,aAAY,aAAY,UAAA,CAAsB,EACpG,CAAA;AAAA,IAAA,GACJ,IAECA,oBAAA,YAAA,EAAW,QAAgB,WAAsB,WAAsB,EAEhF,CAAA;AAAA,EAER;AACJ;ACxFO,MAAMoC,eAAa;ACMnB,MAAM,cAAc,CAAC,EAAE,SAAS,WAAW,OAAO,aAAa,OAAO,YAAY,OAAO,QAAQ,aAAa,SAAA8I,eAAgC;AAC3I,QAAA,EAAE,SAAShK;AACX,QAAA,YAAYpB,EAAuB,IAAI;AACvC,QAAA,cAAcA,EAAuB,IAAI;AAC/C,QAAM,gBAA2CO;AAAAA,IAC7C,MAAM;AAAA,MACF;AAAA,QACI,UAAU;AAAA,QACV,KAAK;AAAA,QACL,eAAe;AAAA,QACf,UAAU,MAAM,WAAW,KAAK,OAAO,QAAQ,OAAO,QAAQ,QAAQ;AAAA,MAC1E;AAAA,MACA;AAAA,QACI,KAAK;AAAA,QACL,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,UAAU,MAAM,mCAAS;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,CAAC,SAAS,WAAW,IAAI;AAAA,EAAA;AAIzB,SAAAL;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAAkL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAGZ;AClBO,MAAM,WAAWzJ,EAAK,CAAC,EAAE,kBAAA0J,mBAAkB,oBAAoB,gBAA+B;AAC3F,QAAA,qBAAqB,iBAAiB,aAAa;AAEnD,QAAA,gBAAgBhL,IAAY,YAAY;AAC1C,WAAO,mBAAmB,cAAc;AAAA,MACpC,MAAM,EAAE,kBAAAgL,kBAAoC;AAAA,IAAA,CAC/C;AAAA,EAAA,GACF,CAACA,mBAAkB,kBAAkB,CAAC;AAEzC,QAAM,EAAE,MAAM,OAAO,WAAA,IAAe,SAAS;AAAA,IACzC,cAAc9K,IAAQ,OAAO,EAAE,SAAS,CAAC,CAAC8K,kBAAiB,IAAI,CAACA,iBAAgB,CAAC;AAAA,IACjF,SAAS;AAAA,EAAA,CACZ;AAEK,QAAA,YAAY,CAACA,qBAAoB;AACvC,QAAMD,WAAU,CAAC,CAAC,SAAS,EAAC,6BAAM,SAAS;AAE3C,QAAMG,YAAW,6BAAM,SAAS,KAAK,CAACjP,IAAGC,OAAMD,GAAE,SAAS,cAAcC,GAAE,QAAQ;AAClF,QAAM,CAAC,cAAc,GAAG,cAAc,IAAIgP,aAAY,CAAA;AAEtD,QAAM,CAAC,WAAW,YAAY,IAAI,kBAAkB;AAEpDtL,IAAU,MAAM;AACZ,UAAM,aAAa,IAAI,KAAIsL,aAAA,gBAAAA,UAAU,IAAI,CAAC,EAAE,UAAAD,gBAAeA,eAAa,CAAA,CAAE;AAC1E,uBAAmB,MAAM,KAAK,UAAU,GAAG,UAAU;AAAA,EACtD,GAAA,CAACC,WAAU,YAAY,kBAAkB,CAAC;AAGzC,SAAArL,oBAAC,OAAI,EAAA,WAAWoC,cACZ,UAAApC;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,cACIA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,SAAAkL;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,UAAQ;AAAA,UACR,YAAY;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,QAAA;AAAA,MACjB;AAAA,MAEJ,QAAM;AAAA,MACN;AAAA,MAEC,UAAA,eAAe,UACXlL,oBAAA,UAAA,EACI,yBAAe,IAAI,CAAA,gCACf,MACG,EAAA,UAAAA,oBAAC,eAAY,SAAkB,QAAQ,WAAW,aAAa,aAAA,CAAc,KADxE,QAAQ,QAEjB,CACH,EACL,CAAA;AAAA,IAAA;AAAA,EAGZ,EAAA,CAAA;AAER,CAAC;;ACvED,MAAM,yBAAyByB;AAAAA,EAC3B,CAAC;AAAA,IACG;AAAA,IACA;AAAA,IACA;AAAA,EAAA,MACuF;AACvF,UAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AAEhD,WAAA,kCAAkC,+BAA+B,SAAS,IAC7EzB;AAAAA,MAACqE;AAAAA,MAAA;AAAA,QACG,2BAA2B,CAAC,mCAAmC;AAAA,QAC/D,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,UAAU,6DAAsB;AAAA,QAChC,0BAA0B;AAAA,QAC1B,OAAO;AAAA,QACP,aAAa;AAAA,MAAA;AAAA,IAEjB,IAAA;AAAA,EACR;AACJ;AAEA,MAAA,2BAAe;ACzBf,MAAM,6BAA6B,CAAC,oBAA4C;AAC5E,QAAM,CAAC,6BAA6B,8BAA8B,IAAIxE,EAAS,CAAC;AAC1E,QAAA,+BAA+BM,IAAY,MAAM,+BAA+B,CAAC,GAAG,CAAC,8BAA8B,CAAC;AAEpH,QAAA,uBAAuBE,IAAQ,MAAM;AACvC,WAAO,mDAAkB;AAAA,EAA2B,GACrD,CAAC,iBAAiB,2BAA2B,CAAC;AAEjD,QAAM,iCAAiCA;AAAAA,IACnC,MACI,mBAAmB,gBAAgB,SAAS,IACtC,OAAO,OAAO,gBAAgB,IAAI,CAAC,EAAE,IAAA0C,IAAA,OAAU,EAAE,IAAAA,KAAI,MAAMA,MAAmB,CAAC,IAC/E;AAAA,IACV,CAAC,eAAe;AAAA,EAAA;AAGpB,QAAM,4BAA4B5C;AAAAA,IAC9B,CAAC,EAAE,OAAA,MAAkB;AACjB,YAAMgL,oBAAmB,iCAAQ;AAC3B,YAAA9N,SAAQ,mDAAiB,UAAU,CAAC,EAAE,IAAA0F,UAASA,QAAOoI;AAC5D,UAAI9N,UAAU;AAAG,uCAA+BA,MAAM;AAAA,IAC1D;AAAA,IACA,CAAC,iBAAiB,8BAA8B;AAAA,EAAA;AAGpD,SAAO,EAAE,sBAAsB,gCAAgC,2BAA2B,6BAA6B;AAC3H;AAEA,MAAA,+BAAe;AC1Bf,MAAM,uBAAuBoE;AAAAA,EACzB,CAA2E;AAAA,IACvE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,MACgH;AAChH,UAAM,eAAe,cAAc,aAAa,KAAK,EAAE;AACvD,UAAM,iBAAiB,cAAc,aAAa,KAAK,EAAE;AACzD,UAAM,iBAAiB,cAAc,aAAa,KAAK,EAAE;AAElD,WAAA,oBAAoB,iBAAiB,SAAS,IACjDzB;AAAAA,MAACqE;AAAAA,MAAA;AAAA,QACG,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,aAAa;AAAA,QACb;AAAA,QACA,UAAU;AAAA,QACV,0BAA0B;AAAA,QAC1B,OAAO;AAAA,QACP,aAAa;AAAA,QACb,aAAa,kBAAkB;AAAA,MAAA;AAAA,IAEnC,IAAA;AAAA,EACR;AACJ;AAEA,MAAA,yBAAe;AC7BF,MAAA,WAAW,CAA4B1I,WAA2B;AAC3E,QAAM,gBAAgB,GAAGA,UAAS,EAAE,GAAG;AACvC,SAAQ,gBAAgB,cAAc,MAAM,cAAc,EAAE,OAAO,OAAO,IAAI;AAClF;AAEO,MAAM,sBAAsB,CAA4B,SAC3D,OAAO,OAAO,KAAK,IAAI,CAAAoH,SAAO,EAAE,IAAAA,KAAI,MAAMA,IAAA,EAAmB,CAAC;ACN3D,MAAM,0BAA0B,CAA2E;AAAA,EAC9G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAA+D;AACrD,QAAA,YAAY1C,IAAQ,MAAM;AAC5B,WAAO,UAAsB,mCAAU,kBAAgB,iDAAiB,iBAAgB,EAAE;AAAA,EAC3F,GAAA,CAAC,gBAAgB,SAAS,WAAW,CAAC;AAEnC,QAAA,mBAAmBA,IAAQ,MAAM,gBAAgB,oBAAoB,YAAY,GAAG,CAAC,YAAY,CAAC;AAExG,QAAM,kBAAkBF;AAAAA,IACpB,CAAC,EAAE,OAAA,MAAkB;AACjB,qDAAgB,EAAE,CAAC,WAAW,IAAG,iCAAQ,UAAS;IACtD;AAAA,IACA,CAAC,eAAe,WAAW;AAAA,EAAA;AAGxB,SAAA,EAAE,WAAW,kBAAkB;AAC1C;AAUA,MAAA,4BAAe;AC/BR,MAAM,gDAAgD;AAAA,EACzD,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAC3B;AAEO,MAAM,8DAA8D,OAAO;AAAA,EAC9E,OAAO,YAAY,8CAA8C,IAAI,WAAS,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9F;AAEO,MAAM,yBAA8D;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,uBAA0D,CAAC,UAAU,WAAW,UAAU;ACpBvG,MAAM,qCAAqC,CAAC2K,oBAA2F;AACnI,QAAM,mBAAmB;AACzB,QAAM,mBAAmB;AACzB,QAAM,EAAE,MAAApE,OAAM,IAAAC,IAAG,IAAI,iBAAiB,gBAAgB;AAEtD,QAAM,sBAAsB;AAAA,IACxB,GAAG;AAAA,IACH,CAAC,uBAAuB,eAAe,GAAGmE,mBAAA,gBAAAA,gBAAgB;AAAA,IAC1D,CAAC,uBAAuB,aAAa,GAAG,IAAI,KAAKpE,KAAI,EAAE,YAAY;AAAA,IACnE,CAAC,uBAAuB,aAAa,GAAG,IAAI,KAAKC,GAAE,EAAE,YAAY;AAAA,IACjE,CAAC,uBAAuB,UAAU,GAAG;AAAA,IACrC,CAAC,uBAAuB,UAAU,GAAG;AAAA,EAAA;AAGlC,SAAA,EAAE,qBAAqB,kBAAkB;AACpD;AAEA,MAAM,6CAA6C,CAACmE,oBAA2F;AAC3I,QAAM,CAACC,eAAc,eAAe,IAAIlL,EAAS,KAAK,KAAK;AAC3D,QAAM,gBAAgBC,EAAO,mCAAmCgL,eAAc,CAAC;AACzE,QAAA,sBAAsB3K,IAAY,MAAM,gBAAgB,KAAK,KAAK,GAAG,CAAC,eAAe,CAAC;AAE5FJ,IAAU,MAAM;AACQ;EAAA,GACrB,CAAC+K,iBAAgB,mBAAmB,CAAC;AAEjC,SAAA,EAAE,eAAe,cAAAC,eAAc;AAC1C;AAEA,MAAA,+CAAe;ACxBf,MAAM,+CAA+C,CACjD,eACA,eACC;AACD,QAAM,mBAAmBO,0BAAwB;AAAA,IAC7C,aAAa,uBAAuB;AAAA,IACpC,cAAc;AAAA,IAAA,gBACdC;AAAAA,IACA,GAAG;AAAA,EAAA,CACN;AACD,QAAM,iBAAiBD,0BAAwB;AAAA,IAC3C,aAAa,uBAAuB;AAAA,IACpC,cAAc;AAAA,IAAA,gBACdC;AAAAA,IACA,GAAG;AAAA,EAAA,CACN;AAED,QAAM,mBAAmBD,0BAAwB;AAAA,IAC7C,aAAa,uBAAuB;AAAA,IACpC,cAAc;AAAA,IAAA,gBACdC;AAAAA,IACA,GAAG;AAAA,EAAA,CACN;AAEM,SAAA;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;AAEA,MAAA,iDAAe;;AC1CR,MAAM,oBAAoB;ACS1B,MAAM,iBAAiB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAA5P;AAAA,EACA,GAAG;AACP,MAAmD;AACzC,QAAA,EAAE,SAASuF;AAEX,QAAA,CAAC,WAAW,YAAY,IAAIrB;AAAAA,IAC9B,MAAM,cAAc,SAAY,WAAW,MAAM,SAAS,IAAI,oBAAoB;AAAA,EAAA;AAEhF,QAAA,CAAC,WAAW,YAAY,IAAIA;AAAAA,IAC9B,MAAM,cAAc,SAAY,WAAW,MAAM,SAAS,IAAI,oBAAoB;AAAA,EAAA;AAGhF,QAAA,cAAcM,IAAY,MAAM;AACzB,aAAA,EAAE,WAAW,UAAA,CAAW;AAAA,EAClC,GAAA,CAAC,WAAW,WAAW,QAAQ,CAAC;AAE7B,QAAA,cAAcA,IAAY,MAAM;AAClC,aAAS,EAAE,WAAW,QAAW,WAAW,QAAW;AACvD,iBAAa,MAAS;AACtB,iBAAa,MAAS;AAAA,EAAA,GACvB,CAAC,QAAQ,CAAC;AAEbJ,IAAU,MAAM;AACZ,QAAI,eAAe,aAAa;AAAmB;AACnD,QAAI,eAAe,aAAa;AAAmB;EACpD,GAAA,CAAC,aAAa,aAAa,UAAU,CAAC;AAEnC,QAAA,cAAcM,IAAQ,OAAO,EAAE,WAAW,UAAc,IAAA,CAAC,WAAW,SAAS,CAAC;AAEpFN,IAAU,MAAM;AACR,QAAA,YAAY,aAAa,YAAY;AAAW,qBAAe,GAAG,YAAY,SAAS,IAAI,YAAY,SAAS,EAAE;AAAA;AACjH,qBAAe,IAAI;AAAA,EAAA,GACzB,CAAC,aAAa,cAAc,CAAC;AAG5B,SAAA4B,oBAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,IAACA,oBAAA,OAAA,EAAI,WAAU,0CACX,UAAA;AAAA,MAAC3B,oBAAA,SAAA,EAAM,SAAQ,YAAY,UAAA,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,CAAA;AAAA,MAClDA;AAAAA,QAACuK;AAAAA,QAAA;AAAA,UACG,MAAM,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAK;AAAA,UACL,OAAO;AAAA,UACP,SAAS,CAAK1O,OAAA;AACR,YAAAA,GAAA,iBAAiB,aAAaA,GAAE,cAAc,UAAU,KAAK,WAAWA,GAAE,cAAc,KAAK,IAAI,MAAS;AAAA,UAChH;AAAA,UACA,KAAK;AAAA,UACL,WAAW,YAAY,YAAY,IAAI;AAAA,UACvC,cAAc,KAAK,IAAI,0BAA0B;AAAA,QAAA;AAAA,MACrD;AAAA,IAAA,GACJ;AAAA,IACA8F,oBAAC,OAAI,EAAA,WAAU,0CACX,UAAA;AAAA,MAAC3B,oBAAA,SAAA,EAAM,SAAQ,YAAY,UAAA,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;AAAA,MAChDA;AAAAA,QAACuK;AAAAA,QAAA;AAAA,UACG,MAAM,KAAK;AAAA,UACX,MAAM;AAAA,UACN,MAAK;AAAA,UACL,OAAO;AAAA,UACP,SAAS,CAAK1O,OAAA;AACR,YAAAA,GAAA,iBAAiB,aAAaA,GAAE,cAAc,UAAU,KAAK,WAAWA,GAAE,cAAc,KAAK,IAAI,MAAS;AAAA,UAChH;AAAA,UACA,KAAK;AAAA,UACL,WAAW,cAAc,UAAa,cAAc,SAAY,YAAY,YAAY;AAAA,UACxF,cAAc,KAAK,IAAI,2CAA2C;AAAA,QAAA;AAAA,MACtE;AAAA,IAAA,GACJ;AAAA,EACJ,EAAA,CAAA;AAER;ACzEa,MAAA,eAAe,CAAC,EAAE,eAAe,oBAAoB,qBAAqB,GAAG,YAA2C;AAC3H,QAAA,EAAE,SAASqF;AACjB,QAAM,CAACvF,QAAO,QAAQ,IAAIkE,EAAuF;AACjH,QAAM,CAAC,gBAAgB,sBAAsB,IAAIA,EAA6B;AAExE,QAAA,qBAAqBQ,IAAQ,MAAM;AACrC,SAAI,yDAAoB,YAAW,MAAK,2DAAqB,YAAW;AAAU,aAAA;AAC3E,WAAA;AAAA,KACR,CAAC,2DAAqB,QAAQ,yDAAoB,MAAM,CAAC;AAE5D,QAAM,eAAeF;AAAAA,IACjB,CAACnE,SAAgB,eAAwB;AACrC,YAAM,gBAAe,yDAAqB,QAAM,2DAAsB;AAChE,YAAA,UACF,cAAc,eACR;AAAA,QACI,OAAO;AAAA,QACP,UAAU;AAAA,QACV,iBAAiB;AAAA,MAErB,IAAA;AACV,aAAOA,QAAO,eAAe,KAAK,QAAQ,OAAO;AAAA,IACrD;AAAA,IACA,CAAC,qBAAqB,MAAM,kBAAkB;AAAA,EAAA;AAGlD,QAAM,iBAAiBmE;AAAAA,IACnB,CAAC,WAA8G;AAC3G,YAAM,EAAE,WAAW,cAAc,UAAU;AAClC,eAAA,EAAE,WAAW,UAAA,CAAW;AAC7B,UAAA,cAAc,UAAa,cAAc;AAAW,+BAAuB,MAAS;AAC1E,oBAAA;AAAA,QACV,WAAW,cAAc,SAAY,OAAO,YAAY,iBAAiB,IAAI;AAAA,QAC7E,WAAW,cAAc,SAAY,OAAO,YAAY,iBAAiB,IAAI;AAAA,MAAA,CAChF;AAAA,IACL;AAAA,IACA,CAAC,aAAa;AAAA,EAAA;AAGlB,MAAIxE,WAAUA,OAAM,aAAaA,OAAM,YAAY;AAC/C,UAAM,EAAE,WAAW,cAAcA,UAAS,CAAA;AAC1C,QAAI,cAAc,UAAa,cAAc,UAAa,aAAa,WAAW;AAC9E;AAAA,QACI,GAAG,aAAa,WAAW,kBAAkB,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,YAAa,CAAA,IAAI,aAAa,WAAW,kBAAkB,CAAC;AAAA,MAAA;AAAA,IACjI,WACO,cAAc,UAAa,cAAc,UAAa,aAAa,GAAG;AACtD,6BAAA,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,aAAa,WAAW,kBAAkB,CAAC,EAAE;AAAA,IACpF,WAAA,cAAc,UAAa,cAAc,QAAW;AACpC,6BAAA,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,aAAa,WAAW,kBAAkB,CAAC,EAAE;AAAA,IAAA,OACtF;AACH,6BAAuB,MAAS;AAAA,IACpC;AAAA,EACJ;AAGI,SAAAqE;AAAAA,IAAC6K;AAAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ;AAAA,MACA,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,MACjB,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO,iBAAiB,iBAAiB,MAAM;AAAA,MAC/C,MAAM;AAAA,MACN,eAAe,qBAAqB;AAAA,MACpC;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IAAA;AAAA,EAAA;AAGpB;AChFO,MAAMzI,eAAa;AACnB,MAAM,gBAAgBA,eAAa;AACnC,MAAM,qBAAqBA,eAAa;;AC0BxC,MAAM,uBAAuB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAEM;AACI,QAAA,EAAE,SAASlB;AACX,QAAA,2BAA2B,iBAAiB,iBAAiB;AACnE,QAAM,EAAE,sBAAsB,gCAAgC,0BAA0B,IAAIsK,6BAA2B,eAAe;AACtI,QAAM,EAAE,eAAe,cAAAT,eAAc,oBAAoB,IAAIU,6CAA2C,oBAAoB;AAE5H,QAAM,kBAAkBtL;AAAAA,IACpB,OAAO,EAAE,gBAAA2K,iBAAgB,GAAG,kBAAA,GAAwE,WAAyB;AACzH,YAAM,iBAAmC,EAAE,QAAQ,YAAY,QAAQ;AAEvE,aAAO,yBAAyB,gBAAgB;AAAA,QAC5C,OAAO;AAAA,UACH,GAAG;AAAA,UACH,UAAU,SAAiC,kBAAkB,uBAAuB,QAAQ,CAAC;AAAA,UAC7F,YAAY,SAAmC,kBAAkB,uBAAuB,UAAU,CAAC;AAAA,UACnG,YAAY,SAA6C,kBAAkB,uBAAuB,UAAU,CAAC;AAAA,UAC7G,cACI,kBAAkB,uBAAuB,aAAa,KACtD,cAAc,QAAQ,oBAAoB,uBAAuB,aAAa;AAAA,UAClF,cACI,kBAAkB,uBAAuB,aAAa,KACtD,cAAc,QAAQ,oBAAoB,uBAAuB,aAAa;AAAA,UAClF,eAAe;AAAA,UACf,mBAAkB,6DAAsB,OAAM;AAAA,UAC9C,WAAW,kBAAkB,cAAc,SAAY,WAAW,kBAAkB,SAAS,IAAI;AAAA,UACjG,WAAW,kBAAkB,cAAc,SAAY,WAAW,kBAAkB,SAAS,IAAI;AAAA,QACrG;AAAA,MAAA,CACH;AAAA,IACL;AAAA,IACA,CAAC,6DAAsB,IAAI,eAAe,wBAAwB;AAAA,EAAA;AAIhE,QAAA,oBAAoBzK,IAAQ,MAAO,WAAW,gBAAgB,IAAI,mBAAmB,QAAS,CAAC,gBAAgB,CAAC;AAChH,QAAA,kBAAkBA,IAAQ,MAAO,WAAW,cAAc,IAAI,iBAAiB,QAAS,CAAC,cAAc,CAAC;AACxG,QAAA,wBAAwBA,IAAQ,MAAO,sBAAsB,gBAAgB,QAAY,CAAC,mBAAmB,CAAC;AAGpH,QAAM,EAAE,iBAAiB,OAAO,UAAU,SAAS,OAAO,cAAc,SAAS,cAAc,eAAe,aAAa,GAAG,gBAAA,IAC1HqL,4BAAwF;AAAA,IACpF,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc,cAAc,QAAQ;AAAA,IACpC,6BAA6B;AAAA,IAC7B,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IACA,SAAS,CAAC,EAAC,6DAAsB;AAAA,EAAA,CACpC;AAEL,QAAM,CAAC,qBAAqB,sBAAsB,IAAI7L,EAA2D,CAAE,CAAA;AACnH,QAAM,CAAC,+BAA+B,gCAAgC,IAAIA,EAAS,KAAK;AACxF,QAAM,yBAAyBM,IAAY,CAAC,YAA8D,eAAwB;AAC9H,2BAAuB,UAAU;AACjC,qCAAiC,UAAU;AAAA,EAC/C,GAAG,CAAE,CAAA;AACL,QAAM,EAAE,kBAAkB,kBAAkB,eAAmB,IAAAwL;AAAAA,IAC3D;AAAA,MACI;AAAA,MACA;AAAA,IACJ;AAAA,IACA;AAAA,EAAA;AAGJ5L,IAAU,MAAM;AACZ,2BAAuB,MAAS;AAClB,kBAAA;AAAA,MACV,CAAC,uBAAuB,eAAe,GAAG,6DAAsB;AAAA,MAChE,CAAC,uBAAuB,UAAU,GAAG;AAAA,IAAA,CACxC;AAAA,EACF,GAAA,CAAC,eAAe,6DAAsB,EAAE,CAAC;AAE5CA,IAAU,MAAM;AACQ;EAAA,GACrB,CAAC,SAAS,mBAAmB,CAAC;AAGjCA,IAAU,MAAM;AACG,mBAAA,gBAAgB,EAAE,QAAQ,EAAE,OAAO,UAAU,MAAM,SAAS,EAAA,CAAG;AAAA,EAAA,GAC/E,CAAC,cAAc,CAAC;AAEnB,QAAM,mBAAmB,cAAc,aAAa,KAAK,EAAE;AAGvD,SAAA4B,oBAAC,OAAI,EAAA,WAAWS,cACZ,UAAA;AAAA,IAAAT,oBAAC,WACG,EAAA,UAAA;AAAA,MAAA3B;AAAAA,QAAC4L;AAAAA,QAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACJ;AAAA,MACA5L;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAA+K;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACJ;AAAA,MAGA/K,oBAAC6L,0BAAsB,GAAG,kBAAkB,aAAa,KAAK,IAAI,4BAA4B,GAAG;AAAA,MACjG7L;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA,oBAAoB,SAAS,QAAQ,uBAAuB,UAAU,CAAC;AAAA,UACvE,MAAM;AAAA,UACN,OAAO,KAAK,IAAI,QAAQ;AAAA,UACxB,WAAW,QAAQ,uBAAuB,UAAU;AAAA,UACpD,WAAW,QAAQ,uBAAuB,UAAU;AAAA,UACpD;AAAA,UACA,UAAU;AAAA,QAAA;AAAA,MACd;AAAA,MACAA,oBAAC6L,0BAAsB,GAAG,kBAAkB,aAAa,KAAK,IAAI,4BAA4B,GAAG;AAAA,IAAA,GACrG;AAAA,IACAlK,oBAAC,OAAI,EAAA,WAAW,eACZ,UAAA;AAAA,MAAC3B,oBAAA,OAAA,EAAI,WAAW,oBACZ,UAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA,kBAAkB,6DAAsB;AAAA,UACxC,UAAU,eAAe;AAAA,UACzB,YAAY,iBAAiB;AAAA,UAC7B,cAAc,QAAQ,uBAAuB,aAAa;AAAA,UAC1D,cAAc,QAAQ,uBAAuB,aAAa;AAAA,UAC1D,YAAY,iBAAiB;AAAA,UAC7B,WAAW,QAAQ,uBAAuB,UAAU,IAAI,WAAW,QAAQ,uBAAuB,UAAU,CAAC,IAAI;AAAA,UACjH,WAAW,QAAQ,uBAAuB,UAAU,IAAI,WAAW,QAAQ,uBAAuB,UAAU,CAAC,IAAI;AAAA,UACjH,WAAW;AAAA,QAAA;AAAA,MAAA,GAEnB;AAAA,MACCA,oBAAA,OAAA,EAAI,WAAW,oBACZ,UAACA,oBAAA,UAAA,EAAS,kBAAkB,6DAAsB,IAAI,oBAAoB,wBAAwB,WAAW,iBAAkB,CAAA,GACnI;AAAA,IAAA,GACJ;AAAA,IAEAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA,SAAS,YAAY,2BAA2B,CAAC;AAAA,QACjD,cAAc;AAAA,QACd;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,4BAA2B,6DAAsB,gBAAe;AAAA,QAChE;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACR;AAAA,EACJ,EAAA,CAAA;AAER;AClMO,MAAM,aAAa;AACnB,MAAM,mBAAmB,aAAa;;ACY7C,SAAS,8BAA8B,OAA6D;AAChG,QAAM,EAAE,mBAAmB,UAAU,IAAIiB,iBAAe;AAGlD,QAAA,6BAA6B,iBAAiB,oBAAoB;AAExE,QAAM,EAAE,MAAM,WAAW,IAAI,SAAS;AAAA,IAClC,cAAc,EAAE,SAAS,CAAC,CAAC,UAAU,oBAAoB,cAAc,KAAK;AAAA,IAC5E,SAASd,IAAY,YAAY;AAC7B,aAAO,2BAA2B,YAAY;AAAA,IAAA,GAC/C,CAAC,0BAA0B,CAAC;AAAA,EAAA,CAClC;AAED,QAAM,kBAAkBE;AAAAA,IACpB,MAAM,6BAAM,gBAAgB,OAAO,CAAAyL,aAAY,MAAM,mBAAmBA,SAAQ,OAAO,MAAM,mBAAmB;AAAA,IAChH,CAAC,6BAAM,iBAAiB,MAAM,gBAAgB;AAAA,EAAA;AAGlD,QAAM,wBAAwBzL;AAAAA,IAC1B,MAAM,CAAC,CAAC,MAAM,oBAAoB,CAAC,EAAC,6BAAM,gBAAgB,YAAU,mDAAiB,YAAW;AAAA,IAChG,CAAC,mDAAiB,QAAQ,6BAAM,gBAAgB,QAAQ,MAAM,gBAAgB;AAAA,EAAA;AAGlF,SACKL,oBAAA,OAAA,EAAI,WAAW,GAAG,YAAY,EAAE,CAAC,gBAAgB,GAAG,kBAAmB,CAAA,GACnE,UACG,oBAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAS;AAAA,MACT,UAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS,CAAC,yCAAyC,qCAAqC;AAAA,MACxF,kBAAkB;AAAA,IAAA;AAAA,MAEtB,wBACAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAS;AAAA,MACT,UAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS,CAAC,yCAAyC,sCAAsC;AAAA,IAAA;AAAA,EAAA,wBAG5F,sBAAsB,EAAA,GAAG,OAAO,iBAAkC,yBAAyB,YAAY,EAEhH,CAAA;AAER;6BCrDO,mBAAkC+L,YAAsC;AAAA,EAG3E,YAAY,OAAsD;AAC9D,UAAM,KAAK;AAKR,6CAAoB,MAAM;AAEzB,aAAA/L;AAAAA,QAACgM;AAAAA,QAAA;AAAA,UACI,GAAG,KAAK;AAAA,UACT,kBAAkB,KAAK,MAAM,KAAK,QAAQ;AAAA,UAC1C,KAAK,CAAC,QAA+C;AACjD,iBAAK,eAAe;AAAA,UACxB;AAAA,UACA,YAAY,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACrB;AAbC,SAAA,aAAc,SAAS,MAAM,cAAe;AACjD,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,EAC7D;AAcJ,GApBI,cADG,IACW,QAAO,iBADlB;AAuBP,MAAA,wBAAeC;ACzBf,MAAM,0BAA0B,CAAC,EAAE,WAAW,oBAAoB,QAA6D;AAC3H,QAAM,eAAe5L,IAAQ,MAAM,MAAM,KAAK,EAAE,QAAQ,kBAAqB,GAAA,CAACvD,IAAGO,WAAUA,MAAK,GAAG,CAAC,iBAAiB,CAAC;AAGlH,SAAA2C,oBAAA4B,KAAA,EACK,UAAa,aAAA,IAAI,CACd,QAAA5B;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,GAAG;AAAA,QACV,uCAAuC;AAAA,QACvC,uDAAuD;AAAA,MAAA,CAC1D;AAAA,IAAA;AAAA,IACI,6BAA6B,GAAG;AAAA,EAE5C,CAAA,EACL,CAAA;AAER;ACVO,MAAM,kBAAkB,CAAC,EAAE,aAAa,iBAAgF;;AACrH,QAAA,EAAE,SAASkB;AACjB,QAAM,eAAeb;AAAAA,IACjB,MACI,cACM,KACK,KAAK,IAAI,KAAK,YAAY,YAAY,GAAG;AAAA,MACtC,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,cAAc;AAAA,IAAA,CACjB,EACA,SAAA,IACL;AAAA,IACV,CAAC,aAAa,IAAI;AAAA,EAAA;AAGhB,QAAA,eAAc,2CAAa,YAAW,WAAW,aAAY,2CAAa,YAAW,aAAa,UAAU;AAElH,SAESL,oBAAA4B,KAAA,EAAA,UAAA,CAAC,cACE5B,oBAAC,yBAAwB,EAAA,WAAW,YAAY,mBAAmB,EAAG,CAAA,IAErE2B,oBAAA,OAAA,EAAI,WAAW,6BACZ,UAAA;AAAA,IAACA,oBAAA,OAAA,EAAI,WAAW,wCACV,UAAA;AAAA,QAAA,2CAAa,YAAU,2CAAa,cACjCA,oBAAA,OAAA,EAAI,WAAW,+EACX,UAAA;AAAA,SAAA,2CAAa,WACV3B;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAO,KAAK,IAAI,YAAY,MAAM;AAAA,YAClC,SACI,YAAY,WAAW,WACjB,WAAW,UACX,YAAY,WAAW,aACvB,WAAW,QACX,WAAW;AAAA,UAAA;AAAA,QAEzB;AAAA,QAEH,YAAY,YAAaA,oBAAA,KAAA,EAAI,OAAO,KAAK,IAAI,UAAU,YAAY,QAAQ,EAAE,GAAG,SAAS,WAAW,SAAS;AAAA,MAAA,GAClH;AAAA,MAEJA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAW,2GAA2G,WAAW;AAAA,UAEhI,UAAA,YAAY,SACP,KAAK,OAAO,YAAY,OAAO,OAAO,YAAY,OAAO,UAAU;AAAA,YAC/D,iBAAiB;AAAA,UACpB,CAAA,IACD;AAAA,QAAA;AAAA,MACV;AAAA,QACE,2CAAa,mBAAiB,2CAAa,iBACxC2B,oBAAA,OAAA,EAAI,WAAU,gFACX,UAAA;AAAA,QAAC3B,oBAAA,OAAA,EAAI,WAAU,4DACX,UAAAA;AAAAA,UAAC0E;AAAAA,UAAA;AAAA,YACG,MAAM,YAAY,gBAAgB,YAAY,cAAc,OAAO;AAAA,YACnE,KAAK,YAAY,gBAAgB,YAAY,cAAc,OAAO;AAAA,YAClE,QAAQ;AAAA,YACR,WAAW;AAAA,UAAA;AAAA,QAAA,GAEnB;AAAA,QAEC1E,oBAAA,OAAA,EAAI,WAAW,oDACX,WAAa,2CAAA,iBACR,uBAAuB,2CAAa,eAAe,QAAQ,KAC3DrD,MAAA,2CAAa,gBAAb,gBAAAA,IAA0B,6BACpC;AAAA,MAAA,GACJ;AAAA,MAEHqD,oBAAA,OAAA,EAAI,WAAW,uEAAwE,UAAa,cAAA;AAAA,IAAA,GACzG;AAAA,KAEC,2CAAa,8BACT2B,oBAAA,OAAA,EAAI,WAAW,wCACZ,UAAA;AAAA,MAAA3B,oBAAC,SAAI,WAAW,oCAAqC,UAAK,KAAA,IAAI,SAAS,GAAE;AAAA,MACzEA,oBAAC,OAAK,EAAA,UAAA,YAAY,0BAA0B,CAAA;AAAA,IAAA,GAChD;AAAA,IAEJ2B,oBAAC,OAAI,EAAA,WAAW,wCACZ,UAAA;AAAA,MAAA3B,oBAAC,SAAI,WAAW,oCAAqC,UAAK,KAAA,IAAI,aAAa,GAAE;AAAA,MAC7EA,oBAAC,SAAI,cAAY,KAAK,IAAI,aAAa,GAAI,sBAAY,IAAG;AAAA,IAAA,GAC9D;AAAA,EAAA,EACJ,CAAA,EAOR,CAAA;AAER;;AC1FA,MAAM,yBAAyB,CAAC,UAAuF,iBAAiB;AAExI,SAAwB,mBAAmB,OAAmE;AACpG,QAAA,cAAcK,IAAQ,MAAO,uBAAuB,KAAK,IAAI,MAAM,cAAc,MAAO,CAAC,KAAK,CAAC;AACrG,QAAM,gBAAgBA,IAAQ,MAAO,CAAC,uBAAuB,KAAK,IAAI,MAAM,gBAAgB,MAAO,CAAC,KAAK,CAAC;AAEpG,QAAA,EAAE,SAASa;AAEX,QAAA,uBAAuB,iBAAiB,gBAAgB;AAExD,QAAA,gBAAgBf,IAAY,YAAY;AAC1C,QAAI,eAAe;AACf,aAAO,qBAAqB,cAAc;AAAA,QACtC,MAAM,EAAE,cAAc;AAAA,MAAA,CACzB;AAAA,IACL;AAAA,EAAA,GACD,CAAC,sBAAsB,aAAa,CAAC;AAExC,QAAM,EAAE,MAAM,OAAO,WAAA,IAAe,SAAS;AAAA,IACzC,cAAcE,IAAQ,OAAO,EAAE,SAAS,CAAC,CAAC,cAAc,IAAI,CAAC,aAAa,CAAC;AAAA,IAC3E,SAAS;AAAA,EAAA,CACZ;AAEK,QAAA,aAAaA,IAAQ,MAAM;AAC7B,QAAI,OAAO;AACA,aAAA,gBAAgB,OAAuC,MAAM,gBAAgB;AAAA,IACxF;AAAA,EACD,GAAA,CAAC,OAAO,MAAM,gBAAgB,CAAC;AAElC,QAAM,kBAAkB,eAAe;AAEnC,SAAAsB,oBAAC,OAAI,EAAA,WAAU,wBACV,UAAA;AAAA,IAAM,MAAA,6BAAU,OAAI,EAAA,WAAU,kBAAkB,UAAK,KAAA,IAAI,MAAM,KAAK,EAAE,CAAA;AAAA,IAEtE,SAAS,cACL3B,oBAAA,OAAA,EAAI,WAAU,yCACX,UAAAA,oBAAC,qBAAoB,EAAA,UAAQ,MAAC,WAAS,MAAE,GAAG,WAAY,CAAA,GAC5D;AAAA,IAGHA,oBAAA,iBAAA,EAAgB,aAAa,iBAAiB,WAAwB,CAAA;AAAA,EAC3E,EAAA,CAAA;AAER;ACnDO,MAAM,4BAA4B+L,YAA4C;AAAA,EAGjF,YAAY,OAA4D;AACpE,UAAM,KAAK;AAKR,6CAAoB,MAAM;AAC7B,aAAQ/L,oBAAA,oBAAA,EAAoB,GAAG,KAAK,MAAO,CAAA;AAAA,IAAA;AALtC,SAAA,aAAc,SAAS,MAAM,cAAe;AACjD,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,EAC7D;AAKJ;AAXI,cADS,qBACK,QAAO;AAazB,MAAA,wBAAe;ACZf,eAAsB,wBAAkD,OAAU;AACxE,QAAA,OAAO,IAAIkM,OAAQ,KAAK;AACvB,SAAA,MAAM,KAAK;AACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[30,31,33,56]}
|