@scbt-ecom/ui 0.85.1 → 0.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-D-n_ZccO.js → index-Bz84dAoh.js} +12843 -11181
- package/dist/index-Bz84dAoh.js.map +1 -0
- package/dist/lib/shared/ui/carousel/CarouselBase.d.ts +1 -2
- package/dist/lib/shared/ui/carousel/index.d.ts +1 -1
- package/dist/lib/shared/ui/carousel/ui/slideVariants/SlideFullScreen.d.ts +2 -2
- package/dist/lib/widgets/banner/Banner.d.ts +6 -12
- package/dist/lib/widgets/banner/ui/banners/BannerImageFull.d.ts +1 -1
- package/dist/lib/widgets/banner/ui/banners/BannerWithSeparateImg.d.ts +1 -1
- package/dist/lib/widgets/{advantages → banner/ui/banners/ui}/Advantages.d.ts +5 -1
- package/dist/lib/widgets/banner/ui/banners/ui/Buttons.d.ts +12 -0
- package/dist/lib/widgets/banner/ui/banners/ui/index.d.ts +2 -0
- package/dist/lib/widgets/index.d.ts +0 -1
- package/dist/lib/widgets/model/helpers.d.ts +1 -1
- package/dist/lib/widgets/stepper/Stepper.d.ts +8 -6
- package/dist/lib/widgets/stepper/model/types.d.ts +26 -5
- package/dist/lib/widgets/stepper/ui/SingleStep.d.ts +5 -2
- package/dist/lib/widgets/stepper/ui/StepperCarousel.d.ts +12 -0
- package/dist/lib/widgets/stepper/ui/StepperTabs.d.ts +16 -0
- package/dist/lib/widgets/stepper/ui/index.d.ts +3 -0
- package/dist/ui.js +919 -2518
- package/dist/ui.js.map +1 -1
- package/dist/widget.js +898 -827
- package/dist/widget.js.map +1 -1
- package/package.json +1 -1
- package/dist/index-D-n_ZccO.js.map +0 -1
- package/dist/lib/widgets/advantages/index.d.ts +0 -1
- package/dist/lib/widgets/advantages/model/index.d.ts +0 -1
- package/dist/lib/widgets/advantages/model/types.d.ts +0 -4
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sources":["../lib/shared/ui/buttonIcon/ButtonIcon.tsx","../lib/shared/ui/skeleton/Skeleton.tsx","../lib/shared/ui/floatButton/FloatButton.tsx","../lib/shared/ui/icon/allowedIcons.ts","../node_modules/@radix-ui/react-tabs/dist/index.mjs","../lib/shared/ui/tabSwitcher/ui/TabContent.tsx","../lib/shared/ui/tabSwitcher/TabsSwitcher.tsx","../lib/shared/ui/table/ui/primitives/Primitives.tsx","../lib/shared/ui/table/ui/dataTableColumnHeader/DataTableColumnHeader.tsx","../lib/shared/ui/table/ui/editableCell/EditableCell.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../lib/shared/ui/pagination/Pagination.tsx","../lib/shared/ui/table/TablePagination.tsx","../lib/shared/ui/table/Desktop.tsx","../lib/shared/ui/table/Mobile.tsx","../lib/shared/ui/table/Table.tsx","../lib/shared/ui/table/model/TableUtils.tsx","../lib/shared/ui/carousel/model/hooks/useArrowNavigation.ts","../lib/shared/ui/carousel/model/hooks/useDotsNavigation.ts","../node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../lib/shared/ui/carousel/model/hooks/useCarousel.ts","../lib/shared/ui/carousel/ui/ArrowNavigationButton.tsx","../lib/shared/ui/carousel/ui/DotsNavigations.tsx","../lib/shared/ui/carousel/ui/CarouselContent.tsx","../lib/shared/ui/carousel/model/helpers.tsx","../lib/shared/ui/carousel/ui/ContainerWithNavigation.tsx","../lib/shared/ui/carousel/CarouselBase.tsx","../lib/shared/ui/providers/NotificationProvider.tsx","../lib/shared/ui/slot/ui/Slottable.tsx","../lib/shared/ui/slot/ui/SlotClone.tsx","../lib/shared/ui/slot/model/isSlottable.ts","../lib/shared/ui/slot/model/getElementRef.ts","../lib/shared/ui/slot/model/mergeProps.ts","../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { type ComponentProps, forwardRef, type ReactElement } from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '$/shared/utils'\n\ntype ButtonClasses = {\n button: string\n icon: string\n}\n\nconst buttonConfig = cva(\n 'group flex items-center justify-center cursor-pointer rounded-full outline-offset-[3px] outline-transparent outline-2 transition duration-12 active:scale-[0.97] disabled:pointer-events-none',\n {\n variants: {\n intent: {\n primary:\n 'text-icon-white bg-color-primary-default hover:bg-color-primary-hover active:bg-color-primary-hover focus:bg-color-primary-hover focus:outline-primary-focus disabled:bg-color-primary-disabled',\n secondary:\n 'text-icon-primary-default bg-color-transparent border border-solid outline-offset-4 border-primary-default hover:bg-color-primary-tr-hover hover:text-icon-primary-default hover:border-primary-hover active:bg-color-primary-tr-pressed active:border-primary-hover active:text-icon-primary-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus disabled:bg-color-blue-grey-200 disabled:border-transparent disabled:text-icon-primary-disabled',\n ghost:\n 'text-icon-primary-default bg-color-transparent hover:bg-color-primary-tr-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus active:text-icon-primary-hover active:bg-color-primary-tr-pressed disabled:bg-color-transparent disabled:text-icon-primary-disabled'\n },\n size: {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12'\n }\n },\n defaultVariants: {\n intent: 'primary',\n size: 'lg'\n }\n }\n)\n\ntype ButtonProps = VariantProps<typeof buttonConfig>\n\nexport interface IButtonIconProps extends Omit<ComponentProps<'button'>, 'className'>, ButtonProps {\n children: ReactElement\n classes?: Partial<ButtonClasses>\n}\n\nexport const ButtonIcon = forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ size, intent, children, classes, type = 'button', ...props }, ref) => {\n return (\n <button ref={ref} type={type} className={cn(buttonConfig({ intent, size }), classes?.button)} {...props}>\n <span className={cn(classes?.icon)}>{children}</span>\n </button>\n )\n }\n)\n","import type { HTMLAttributes } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nexport const Skeleton = ({ className }: SkeletonProps) => {\n return <div className={cn('skeleton-apply h-full w-full', className)}></div>\n}\n","import { Button, type ButtonProps } from '../button'\nimport { ResponsiveContainer } from '../responsiveContainer'\nimport { cn } from '$/shared/utils'\n\ntype FloatButtonClasses = {\n root?: string\n button?: string\n}\n\nexport interface FloatButtonProps {\n isVisible: boolean\n classes?: FloatButtonClasses\n children: React.ReactElement\n buttonProps?: ButtonProps\n}\n\nexport const FloatButton = ({ isVisible, classes, children, buttonProps }: FloatButtonProps) => {\n return (\n <ResponsiveContainer\n className={cn(\n 'fixed bottom-0 left-1/2 z-[60] w-full max-w-[604px] -translate-x-1/2 translate-y-0 rounded-t-lg bg-color-white px-6 py-4 shadow-[0px_-6px_8px_0px_#2929290A] transition-transform duration-1000 desktop:hidden',\n { 'translate-y-[100%]': !isVisible },\n classes?.root\n )}\n >\n {children}\n <Button size='lg' className={cn('m-auto w-full', classes?.button)} {...buttonProps}>\n Оформить заявку\n </Button>\n </ResponsiveContainer>\n )\n}\n","export type AllowedIcons = (typeof allowedIcons.flatten)[number]\n\nexport const allowedIcons = {\n group: {\n arrows: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll'\n ],\n brandLogos: [\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite'\n ],\n communication: ['communication/phone'],\n editor: [\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo'\n ],\n files: ['files/border', 'files/borderError', 'files/documentFilled', 'files/documentOutline', 'files/upload'],\n general: [\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/hiddenEye',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye'\n ],\n info: ['info/helpCircle', 'info/warningCircle'],\n logos: ['logos/beeline', 'logos/megafon', 'logos/mts'],\n media: ['media/desktop', 'media/mobile'],\n social: ['social/classmates', 'social/telegram', 'social/vk'],\n status: ['status/badSmile', 'status/iconMark', 'status/iconRetry', 'status/iconUser']\n },\n flatten: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll',\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite',\n 'communication/phone',\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo',\n 'files/border',\n 'files/borderError',\n 'files/documentFilled',\n 'files/documentOutline',\n 'files/upload',\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/hiddenEye',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye',\n 'info/helpCircle',\n 'info/warningCircle',\n 'logos/beeline',\n 'logos/megafon',\n 'logos/mts',\n 'media/desktop',\n 'media/mobile',\n 'social/classmates',\n 'social/telegram',\n 'social/vk',\n 'status/badSmile',\n 'status/iconMark',\n 'status/iconRetry',\n 'status/iconUser'\n ]\n} as const\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n","'use client'\n\nimport * as TabPrimitive from '@radix-ui/react-tabs'\nimport type { TabRenderContent, TabsClasses } from './model/types'\nimport { TabContent } from './ui/TabContent'\nimport { cn } from '$/shared/utils'\n\nexport interface TabsSwitcherProps {\n renderContent: TabRenderContent\n value: string\n onChangeTab: (tab: string) => void\n defaultActiveTabId?: string\n classes?: TabsClasses\n}\n\nexport const TabsSwitcher = ({ renderContent, defaultActiveTabId = '1', value, onChangeTab, classes }: TabsSwitcherProps) => {\n return (\n <TabPrimitive.Root\n value={value}\n onValueChange={onChangeTab}\n defaultValue={defaultActiveTabId}\n className={cn('flex flex-col', classes?.root)}\n >\n <TabPrimitive.List className={cn('flex items-center gap-4', classes?.list)}>\n {renderContent?.triggers?.map(({ id, label }) => (\n <TabPrimitive.Trigger\n key={id}\n value={id}\n className={cn(\n 'desk-body-regular-l cursor-pointer rounded-sm bg-color-blue-grey-100 px-4 py-2 text-color-secondary outline outline-2 outline-offset-2 outline-transparent transition-colors hover:bg-color-blue-grey-200 hover:text-color-secondary data-[state=\"active\"]:!bg-color-primary-default data-[state=\"active\"]:!text-color-white',\n classes?.trigger\n )}\n >\n {label}\n </TabPrimitive.Trigger>\n ))}\n </TabPrimitive.List>\n <TabContent contents={renderContent?.contents} classes={classes?.tabContent} />\n </TabPrimitive.Root>\n )\n}\n","import { forwardRef } from 'react'\n\nexport const Table = forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>((props, ref) => (\n <table ref={ref} {...props} />\n))\nTable.displayName = 'Table'\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <thead ref={ref} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tbody ref={ref} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tfoot ref={ref} {...props} />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>((props, ref) => (\n <tr ref={ref} {...props} />\n))\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <th ref={ref} {...props} />\n))\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <td ref={ref} {...props} />\n))\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>((props, ref) => (\n <caption ref={ref} {...props} />\n))\nTableCaption.displayName = 'TableCaption'\n","import { type SortDirection } from '@tanstack/react-table'\nimport { useDevice } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\ntype DataTableColumnHeaderClasses = {\n root?: string\n content?: string\n icon?: string\n}\n\ntype DataTableColumnHeaderProps = {\n children: React.ReactNode\n isSorted: boolean | SortDirection\n toggleSorting: (desc: boolean) => void\n nextSortingOrder: boolean | SortDirection\n canSort: boolean\n classes?: DataTableColumnHeaderClasses\n}\n\nexport const DataTableColumnHeader = ({\n children,\n canSort,\n toggleSorting,\n nextSortingOrder,\n isSorted,\n classes\n}: DataTableColumnHeaderProps) => {\n const { root, content, icon } = classes || {}\n\n const { isDesktop } = useDevice()\n\n const isSortable = canSort && isDesktop\n\n return (\n <button\n type='button'\n className={cn('desk-body-regular-l flex items-center justify-center gap-x-2 text-color-secondary', root)}\n onClick={() => toggleSorting(!isSorted)}\n disabled={!isSortable}\n >\n <span className={cn('', content)}>{children}</span>\n {isSortable && (\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'size-4 rotate-90 text-color-current duration-100',\n {\n '-rotate-90': !nextSortingOrder\n },\n icon\n )}\n />\n )}\n </button>\n )\n}\n","import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1\n}: EditableCellProps<TData, TValue>) => {\n const [focused, setFocused] = useState<boolean>(false)\n const [value, setValue] = useState<TValue | string>(getValue())\n const changed = useRef<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const { original } = row\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value)\n\n changed.current = true\n }\n\n const onInputBlur = () => {\n if (changed.current) {\n const updatedRow = { ...original, [target]: value }\n update(rowIndex, updatedRow)\n\n changed.current = false\n }\n\n setFocused(false)\n }\n\n useClickOutside(inputRef, onInputBlur)\n\n return focused ? (\n <input\n ref={inputRef}\n className='mr-2 w-full outline-none'\n type='text'\n value={value}\n onChange={onValueChange}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n\n onInputBlur()\n }\n }}\n />\n ) : (\n <p className='w-full' onClick={() => setFocused(true)}>\n {getValue()}\n </p>\n )\n}\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils'\nimport { Pagination, type PaginationProps } from '../pagination'\n\ntype TablePaginationClasses = {\n root?: string\n displayShown?: string\n pagination?: PaginationProps['classes']\n}\n\nexport type TablePaginationProps = {\n pageSize: number\n page: number\n rowsCount: number\n pageCount: number\n onPageIndexChange: (page: number) => void\n classes?: TablePaginationClasses\n}\n\nexport const TablePagination = ({ page, pageCount, pageSize, onPageIndexChange, rowsCount, classes }: TablePaginationProps) => {\n const prevRows = pageSize * page\n const rowsLeft = prevRows > rowsCount ? rowsCount : prevRows\n\n return (\n <div className={cn('flex w-full items-center justify-between', classes?.root)}>\n <span className={cn('desk-body-regular-m text-color-tetriary', classes?.displayShown)}>\n Показано {rowsLeft} из {rowsCount}\n </span>\n <Pagination\n totalPages={pageCount}\n changePage={(pageIndex) => onPageIndexChange(pageIndex)}\n page={page}\n ellipsis={1}\n classes={classes?.pagination}\n />\n </div>\n )\n}\n","import { flexRender, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<\n DataTableProps<TData>,\n 'enableHeaders' | 'classes' | 'mode' | 'pagination' | 'empty'\n> & {\n table: TTable<TData>\n}\n\nexport const Desktop = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n pagination,\n empty = 'Not found'\n}: DesktopTableProps<TData>) => {\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <Table className={cn('w-full', classes?.table)}>\n {enableHeaders && (\n <TableHeader className='px-2'>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className={cn(\n 'w-full',\n {\n 'border-b border-b-[rgba(234,237,241,1)]': mode === 'solid'\n },\n classes?.tableHeader\n )}\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd'\n },\n classes?.tableHead\n )}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n )}\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row, rowIndex) => (\n <TableRow\n key={row.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, cellIndex) => (\n <TableCell\n key={cell.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd',\n 'font-medium': cellIndex !== 0\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, { ...cell.getContext(), rowIndex })}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell className='py-4 text-center' colSpan={table.getAllColumns().length}>\n {empty}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n","import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n empty = 'Not found'\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'empty'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>{empty}</div>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} pagination={pagination} classes={classes} />\n )\n}\n","import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key)\n })\n }) as ColumnDef<TData>[]\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\nimport type { NavigationMode } from '../types'\n\ntype UseArrowNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler?: (emblaApi: EmblaCarouselType) => void\n}\n\nexport const useArrowNavigation = ({ emblaApi, navigationHandler }: UseArrowNavigationProps) => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onClickNavigationButton = useCallback(\n (mode: NavigationMode) => {\n if (!emblaApi) return\n switch (mode) {\n case 'prev':\n emblaApi.scrollPrev()\n break\n case 'next':\n emblaApi.scrollNext()\n break\n }\n\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotsNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler: (emblaApi: EmblaCarouselType) => void\n setVisibleIndex: (index: number) => void\n}\n\nexport type UseDotsNavigationReturn = {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n}\n\nexport const useDotsNavigation = ({ emblaApi, navigationHandler, setVisibleIndex }: UseDotsNavigationProps) => {\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([])\n\n const onClickDot = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setVisibleIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n scrollSnaps,\n onClickDot\n }\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction normalizeDelay(emblaApi, delay) {\n const scrollSnaps = emblaApi.scrollSnapList();\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay);\n }\n return delay(scrollSnaps, emblaApi);\n}\nfunction getAutoplayRootNode(emblaApi, rootNode) {\n const emblaRootNode = emblaApi.rootNode();\n return rootNode && rootNode(emblaRootNode) || emblaRootNode;\n}\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let delay;\n let timerStartTime = null;\n let timerId = 0;\n let autoplayActive = false;\n let mouseIsOver = false;\n let playOnDocumentVisible = false;\n let jump = false;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n delay = normalizeDelay(emblaApi, options.delay);\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag;\n const root = getAutoplayRootNode(emblaApi, options.rootNode);\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown);\n }\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter);\n }\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave);\n }\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay);\n }\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay);\n }\n if (options.playOnInit) startAutoplay();\n }\n function destroy() {\n emblaApi.off('pointerDown', pointerDown).off('pointerUp', pointerUp).off('slideFocusStart', stopAutoplay);\n stopAutoplay();\n destroyed = true;\n autoplayActive = false;\n }\n function setTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()]);\n timerStartTime = new Date().getTime();\n emblaApi.emit('autoplay:timerset');\n }\n function clearTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = 0;\n timerStartTime = null;\n emblaApi.emit('autoplay:timerstopped');\n }\n function startAutoplay() {\n if (destroyed) return;\n if (documentIsHidden()) {\n playOnDocumentVisible = true;\n return;\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play');\n setTimer();\n autoplayActive = true;\n }\n function stopAutoplay() {\n if (destroyed) return;\n if (autoplayActive) emblaApi.emit('autoplay:stop');\n clearTimer();\n autoplayActive = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive;\n return stopAutoplay();\n }\n if (playOnDocumentVisible) startAutoplay();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function pointerDown() {\n if (!mouseIsOver) stopAutoplay();\n }\n function pointerUp() {\n if (!mouseIsOver) startAutoplay();\n }\n function mouseEnter() {\n mouseIsOver = true;\n stopAutoplay();\n }\n function mouseLeave() {\n mouseIsOver = false;\n startAutoplay();\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n startAutoplay();\n }\n function stop() {\n if (autoplayActive) stopAutoplay();\n }\n function reset() {\n if (autoplayActive) startAutoplay();\n }\n function isPlaying() {\n return autoplayActive;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n emblaApi.emit('autoplay:select');\n if (kill) return stopAutoplay();\n startAutoplay();\n }\n function timeUntilNext() {\n if (!timerStartTime) return null;\n const currentDelay = delay[emblaApi.selectedScrollSnap()];\n const timePastSinceStart = new Date().getTime() - timerStartTime;\n return currentDelay - timePastSinceStart;\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying,\n timeUntilNext\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import { useCallback } from 'react'\nimport type { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport Autoplay, { type AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport useEmblaCarousel from 'embla-carousel-react'\n\ntype UseCarouselProps = {\n carouselOptions: EmblaOptionsType\n autoPlayOptions?: AutoplayOptionsType\n}\n\nexport const useCarousel = ({ carouselOptions, autoPlayOptions }: UseCarouselProps) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(carouselOptions, [Autoplay(autoPlayOptions)])\n\n const navigationHandler = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop = autoplay.options.stopOnInteraction === false ? autoplay.reset : autoplay.stop\n\n resetOrStop()\n }, [])\n\n return { emblaRef, emblaApi, navigationHandler }\n}\n","import type { ComponentPropsWithRef } from 'react'\nimport { Icon } from '../../icon'\nimport type { NavigationMode } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type ArrowNavigationButtonClasses = {\n button?: string\n icon?: string\n}\n\ninterface ArrowNavigationButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'onClick'> {\n mode: NavigationMode\n onClick: (mode: NavigationMode) => void\n classes?: ArrowNavigationButtonClasses\n}\n\nexport const ArrowNavigationButton = ({ mode, onClick, children, classes, ...props }: ArrowNavigationButtonProps) => {\n return (\n <button\n className={cn('group flex size-8 cursor-pointer items-center justify-center p-1', classes?.button)}\n type='button'\n onClick={() => onClick(mode)}\n {...props}\n >\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'h-full w-full text-icon-primary-default transition-colors group-disabled:text-icon-disabled',\n { 'rotate-180': mode === 'prev' },\n classes?.icon\n )}\n />\n {children}\n </button>\n )\n}\n","import type { DotsOptions } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type DotsNavigationsClasses = {\n dotsWrapper?: string\n dot?: string\n}\n\ninterface DotsNavigationsProps extends Pick<DotsOptions, 'position'> {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n visibleIndex: number\n classes?: DotsNavigationsClasses\n}\n\nexport const DotsNavigations = ({ scrollSnaps, visibleIndex, onClickDot, position, classes, ...props }: DotsNavigationsProps) => {\n return (\n <div\n className={cn(\n 'mt-4 flex items-center gap-[6px]',\n {\n 'justify-center': position === 'center',\n 'justify-end': position === 'bot-right',\n 'justify-start': position === 'bot-left'\n },\n classes?.dotsWrapper\n )}\n >\n {scrollSnaps.map((_, index) => (\n <button\n type='button'\n key={index}\n onClick={() => onClickDot(index)}\n className={cn(\n 'size-2 cursor-pointer rounded-full bg-color-primary-tr-pressed',\n { 'h-2 w-4 rounded-md bg-color-primary-default': index === visibleIndex },\n classes?.dot\n )}\n {...props}\n ></button>\n ))}\n </div>\n )\n}\n","import { forwardRef, type ReactNode } from 'react'\nimport type { DotsOptions, UseDotsNavigationReturn } from '../model'\nimport { DotsNavigations, type DotsNavigationsClasses } from './DotsNavigations'\nimport { useDevice } from '$/shared/hooks'\nimport { cn } from '$/shared/utils'\n\nexport type CarouselContentClasses = {\n dotsClasses?: DotsNavigationsClasses\n slidesOverlay?: string\n slidesWrapper?: string\n}\n\nexport interface CarouselContentProps {\n classes?: CarouselContentClasses\n children: ReactNode\n dotsProps: UseDotsNavigationReturn\n dotsOptions: DotsOptions\n visibleIndex: number\n}\n\nexport const CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ visibleIndex, classes, children, dotsProps, dotsOptions }, ref) => {\n const { isMobile, isDesktop } = useDevice()\n const { mobVisible, deskVisible, ...dotsRestOptions } = dotsOptions ?? {}\n\n //Отображения точек если переданы и мобильное разрешение\n const withDotsOnMob = mobVisible && isMobile\n //Отображения точек если переданы и полноэкранное разрешение\n const withDotsOnDesk = deskVisible && isDesktop\n\n const dotsFullProps = {\n visibleIndex,\n ...dotsProps\n }\n\n return (\n <div className={cn('mx-auto overflow-hidden', classes?.slidesOverlay)} ref={ref}>\n <div className={cn('flex touch-pan-y gap-6', classes?.slidesWrapper)}>{children}</div>\n {(withDotsOnDesk || withDotsOnMob) && <DotsNavigations {...dotsFullProps} {...dotsRestOptions} />}\n </div>\n )\n }\n)\n","import type { EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { SlideFullScreen, SlideOnlyImage, SlideProductCard } from '../ui'\nimport type { CarouselSlideVariant, DotsOptions, NavArrowOptions } from './types'\nimport type { DiscriminatedUnion } from '$/shared/types'\n\nexport const defaultCarouselOptions: EmblaOptionsType = {\n dragFree: true,\n loop: false,\n align: 'start',\n slidesToScroll: 1\n}\n\nexport const defaultDotsOptions: DotsOptions = {\n position: 'center',\n deskVisible: true,\n mobVisible: true\n}\n\nexport const defaultNavArrowOptions: NavArrowOptions = {\n position: 'top-right',\n deskVisible: true,\n mobVisible: false\n}\n\nexport const defaultAutoPlayOptions: AutoplayOptionsType = {\n active: true\n}\n\nexport const renderSlideVariant = (props: DiscriminatedUnion<'variant', CarouselSlideVariant>) => {\n switch (props.variant) {\n case 'productCard':\n return <SlideProductCard {...props} />\n case 'onlyImage':\n return <SlideOnlyImage {...props} />\n case 'fullScreen':\n return <SlideFullScreen {...props} />\n }\n}\n","import type { ReactNode } from 'react'\nimport type { NavigationMode } from '../model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses } from './ArrowNavigationButton'\nimport { cn } from '$/shared/utils'\n\nexport type ContainerWithNavigationClasses = {\n wrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n}\n\nexport interface ContainerWithNavigationProps {\n children: ReactNode\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onClickNavigationButton: (mode: NavigationMode) => void\n classes?: ContainerWithNavigationClasses\n}\n\nexport const ContainerWithNavigation = ({\n children,\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton,\n classes\n}: ContainerWithNavigationProps) => {\n return (\n <div className={cn('relative flex items-center gap-1', classes?.wrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={{\n button: cn('absolute -left-12 top-1/2 -transform-y-1/2', classes?.arrowLeftClasses?.button),\n icon: cn(classes?.arrowLeftClasses?.icon)\n }}\n />\n {children}\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={{\n button: cn('absolute -right-12 top-1/2 -transform-y-1/2', classes?.arrowRightClasses?.button),\n icon: cn(classes?.arrowRightClasses?.icon)\n }}\n />\n </div>\n )\n}\n","import { type HTMLAttributes, type ReactNode } from 'react'\nimport { type EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { useDevice } from '../../hooks'\nimport { Heading } from '../heading'\nimport {\n defaultAutoPlayOptions,\n defaultCarouselOptions,\n defaultDotsOptions,\n defaultNavArrowOptions,\n type DotsOptions,\n type NavArrowOptions,\n useArrowNavigation,\n useCarousel,\n useDotsNavigation\n} from './model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses, CarouselContent, type CarouselContentClasses } from './ui'\nimport { ContainerWithNavigation, type ContainerWithNavigationClasses } from './ui/ContainerWithNavigation'\nimport { cn } from '$/shared/utils'\n\ntype CarouselClasses = {\n root?: string\n header?: string\n heading?: string\n arrowsNavWrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n containerWithNavClasses?: ContainerWithNavigationClasses\n carouselContentClasses?: CarouselContentClasses\n}\n\nexport interface CarouselBaseProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n heading?: string\n carouselOptions?: EmblaOptionsType\n dotsOptions?: DotsOptions\n navArrowOptions?: NavArrowOptions\n autoPlayOptions?: AutoplayOptionsType\n setVisibleIndex: (index: number) => void\n visibleIndex: number\n classes?: CarouselClasses\n}\n\nexport const CarouselBase = ({\n dotsOptions = defaultDotsOptions,\n navArrowOptions = defaultNavArrowOptions,\n carouselOptions = defaultCarouselOptions,\n heading,\n autoPlayOptions,\n setVisibleIndex,\n visibleIndex,\n children,\n classes,\n ...props\n}: CarouselBaseProps) => {\n const mergedCarouselOptions = { ...defaultCarouselOptions, ...carouselOptions }\n const mergedAutoPlayOptions = { ...defaultAutoPlayOptions, ...autoPlayOptions }\n const mergedNavArrowOptions = { ...defaultNavArrowOptions, ...navArrowOptions }\n const mergedDotsOptions = { ...defaultDotsOptions, ...dotsOptions }\n\n const { emblaApi, navigationHandler, emblaRef } = useCarousel({\n carouselOptions: mergedCarouselOptions,\n autoPlayOptions: mergedAutoPlayOptions\n })\n\n const dotsProps = useDotsNavigation({ emblaApi, navigationHandler, setVisibleIndex })\n const { prevBtnDisabled, nextBtnDisabled, onClickNavigationButton } = useArrowNavigation({\n emblaApi,\n navigationHandler\n })\n\n const { isMobile, isDesktop } = useDevice()\n const { deskVisible, mobVisible, position: navArrowPosition } = mergedNavArrowOptions ?? {}\n\n //Отображения стрелок если переданы и мобильное разрешение\n const withNavArrowsOnMob = mobVisible && isMobile\n //Отображения стрелок если переданы и полноэкранное разрешение\n const winNavArrowsOnDesk = deskVisible && isDesktop\n //Отображения стрелок если переданы\n const winNavArrows = winNavArrowsOnDesk || withNavArrowsOnMob\n\n const withHeadingAndArrowsTop = Boolean(heading) || (winNavArrows && navArrowPosition === 'top-right')\n\n return (\n <div className={cn('flex flex-col', classes?.root)} {...props}>\n {withHeadingAndArrowsTop && (\n <div className={cn('flex items-center justify-between gap-6', { 'mb-6': withHeadingAndArrowsTop }, classes?.header)}>\n {Boolean(heading) && (\n <Heading as='h2' className={cn(classes?.heading)}>\n Другие предложения\n </Heading>\n )}\n\n {winNavArrows && navArrowPosition === 'top-right' && (\n <div className={cn('ml-auto flex items-center gap-2', classes?.arrowsNavWrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={classes?.arrowLeftClasses}\n />\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={classes?.arrowRightClasses}\n />\n </div>\n )}\n </div>\n )}\n\n {winNavArrows && navArrowPosition === 'center' ? (\n <ContainerWithNavigation\n onClickNavigationButton={onClickNavigationButton}\n prevBtnDisabled={prevBtnDisabled}\n nextBtnDisabled={nextBtnDisabled}\n classes={classes?.containerWithNavClasses}\n >\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n </ContainerWithNavigation>\n ) : (\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n )}\n </div>\n )\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n","export type SlottableProps = {\n children: React.ReactNode\n}\n\nexport const Slottable = ({ children }: SlottableProps) => <>{children}</>\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n","import { isValidElement } from 'react'\nimport { Slottable, type SlottableProps } from '../ui'\n\nexport const isSlottable = (child: React.ReactNode): child is React.ReactElement<SlottableProps, typeof Slottable> => {\n return isValidElement(child) && child.type === Slottable\n}\n","export const getElementRef = (element: React.ReactElement) => {\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get\n let warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element as any).ref\n }\n\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get\n warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref\n }\n\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref\n}\n","type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["buttonConfig","cva","ButtonIcon","forwardRef","size","intent","children","classes","type","props","ref","jsx","cn","Skeleton","className","FloatButton","isVisible","buttonProps","jsxs","ResponsiveContainer","Button","allowedIcons","TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabContent","contents","id","body","accordion","TabPrimitive.Content","Accordion","TabsSwitcher","renderContent","defaultActiveTabId","onChangeTab","TabPrimitive.Root","TabPrimitive.List","_a","label","TabPrimitive.Trigger","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTableColumnHeader","canSort","toggleSorting","nextSortingOrder","isSorted","root","content","icon","isDesktop","useDevice","isSortable","Icon","EditableCell","row","getValue","update","target","rowIndex","focused","setFocused","useState","changed","useRef","inputRef","original","onInputBlur","updatedRow","useClickOutside","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFacetedRowModel","preRowModel","columnFilters","globalFilter","filterableIds","filterRowsImpl","getFacetedUniqueValues","_table$getColumn","facetedRowModel","facetedUniqueValues","j","_facetedUniqueValues$","getFilteredRowModel","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","Pagination","page","between","totalPages","changePage","ellipsis","positions","visiblePages","range","active","TablePagination","onPageIndexChange","rowsCount","prevRows","rowsLeft","Desktop","mode","enableHeaders","empty","paginationEnabled","paginationProps","cellIndex","Mobile","DataTable","setColumnFilters","setSorting","paginationState","setPagination","isMobile","TableUtils","template","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","TypeGuards","useArrowNavigation","emblaApi","navigationHandler","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","onClickNavigationButton","useCallback","onSelect","useEffect","useDotsNavigation","setVisibleIndex","scrollSnaps","setScrollSnaps","onClickDot","onInit","normalizeDelay","delay","getAutoplayRootNode","rootNode","emblaRootNode","Autoplay","userOptions","destroyed","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","jump","init","emblaApiInstance","optionsHandler","optionsAtMedia","optionsBase","allOptions","eventStore","ownerDocument","isDraggable","visibilityChange","pointerDown","pointerUp","mouseEnter","mouseLeave","stopAutoplay","startAutoplay","destroy","setTimer","ownerWindow","clearTimer","documentIsHidden","play","jumpOverride","stop","reset","isPlaying","nextIndex","lastIndex","kill","timeUntilNext","currentDelay","timePastSinceStart","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","Alignment","align","viewSize","predefined","start","end","measure","EventStore","listeners","add","node","handler","removeListener","legacyMediaQueryList","self","clear","remove","Animations","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","Limit","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loopEnd","counter","withinLimit","get","set","clone","DragHandler","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","Vector1D","initialValue","normalizeInput","subtract","Translate","translate","x","y","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","off","OptionsHandler","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","mediaQueries","PluginsHandler","activePlugins","map","EmblaCarousel","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","scrollNext","scrollPrev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","useCarousel","carouselOptions","autoPlayOptions","emblaRef","autoplay","ArrowNavigationButton","onClick","DotsNavigations","visibleIndex","CarouselContent","dotsProps","dotsOptions","mobVisible","deskVisible","dotsRestOptions","withDotsOnMob","withDotsOnDesk","dotsFullProps","defaultCarouselOptions","defaultDotsOptions","defaultNavArrowOptions","defaultAutoPlayOptions","ContainerWithNavigation","_b","_c","_d","CarouselBase","navArrowOptions","heading","mergedCarouselOptions","mergedAutoPlayOptions","mergedNavArrowOptions","mergedDotsOptions","navArrowPosition","winNavArrows","withHeadingAndArrowsTop","Heading","NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","toast","Toaster","Slottable","SlotClone","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children","isSlottable","child","element","getter","warn","slotProps","childProps","override","prop","slotPropValue","childPropValue","args","Slot","childrenArray","slottable","newElement","newChildren"],"mappings":"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","x_google_ignoreList":[4,10,11,20,21,22,23]}
|
|
1
|
+
{"version":3,"file":"ui.js","sources":["../lib/shared/ui/buttonIcon/ButtonIcon.tsx","../lib/shared/ui/skeleton/Skeleton.tsx","../lib/shared/ui/floatButton/FloatButton.tsx","../lib/shared/ui/icon/allowedIcons.ts","../node_modules/@radix-ui/react-tabs/dist/index.mjs","../lib/shared/ui/tabSwitcher/ui/TabContent.tsx","../lib/shared/ui/tabSwitcher/TabsSwitcher.tsx","../lib/shared/ui/table/ui/primitives/Primitives.tsx","../lib/shared/ui/table/ui/dataTableColumnHeader/DataTableColumnHeader.tsx","../lib/shared/ui/table/ui/editableCell/EditableCell.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../lib/shared/ui/pagination/Pagination.tsx","../lib/shared/ui/table/TablePagination.tsx","../lib/shared/ui/table/Desktop.tsx","../lib/shared/ui/table/Mobile.tsx","../lib/shared/ui/table/Table.tsx","../lib/shared/ui/table/model/TableUtils.tsx","../lib/shared/ui/providers/NotificationProvider.tsx","../lib/shared/ui/slot/ui/Slottable.tsx","../lib/shared/ui/slot/ui/SlotClone.tsx","../lib/shared/ui/slot/model/isSlottable.ts","../lib/shared/ui/slot/model/getElementRef.ts","../lib/shared/ui/slot/model/mergeProps.ts","../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { type ComponentProps, forwardRef, type ReactElement } from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '$/shared/utils'\n\ntype ButtonClasses = {\n button: string\n icon: string\n}\n\nconst buttonConfig = cva(\n 'group flex items-center justify-center cursor-pointer rounded-full outline-offset-[3px] outline-transparent outline-2 transition duration-12 active:scale-[0.97] disabled:pointer-events-none',\n {\n variants: {\n intent: {\n primary:\n 'text-icon-white bg-color-primary-default hover:bg-color-primary-hover active:bg-color-primary-hover focus:bg-color-primary-hover focus:outline-primary-focus disabled:bg-color-primary-disabled',\n secondary:\n 'text-icon-primary-default bg-color-transparent border border-solid outline-offset-4 border-primary-default hover:bg-color-primary-tr-hover hover:text-icon-primary-default hover:border-primary-hover active:bg-color-primary-tr-pressed active:border-primary-hover active:text-icon-primary-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus disabled:bg-color-blue-grey-200 disabled:border-transparent disabled:text-icon-primary-disabled',\n ghost:\n 'text-icon-primary-default bg-color-transparent hover:bg-color-primary-tr-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus active:text-icon-primary-hover active:bg-color-primary-tr-pressed disabled:bg-color-transparent disabled:text-icon-primary-disabled'\n },\n size: {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12'\n }\n },\n defaultVariants: {\n intent: 'primary',\n size: 'lg'\n }\n }\n)\n\ntype ButtonProps = VariantProps<typeof buttonConfig>\n\nexport interface IButtonIconProps extends Omit<ComponentProps<'button'>, 'className'>, ButtonProps {\n children: ReactElement\n classes?: Partial<ButtonClasses>\n}\n\nexport const ButtonIcon = forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ size, intent, children, classes, type = 'button', ...props }, ref) => {\n return (\n <button ref={ref} type={type} className={cn(buttonConfig({ intent, size }), classes?.button)} {...props}>\n <span className={cn(classes?.icon)}>{children}</span>\n </button>\n )\n }\n)\n","import type { HTMLAttributes } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nexport const Skeleton = ({ className }: SkeletonProps) => {\n return <div className={cn('skeleton-apply h-full w-full', className)}></div>\n}\n","import { Button, type ButtonProps } from '../button'\nimport { ResponsiveContainer } from '../responsiveContainer'\nimport { cn } from '$/shared/utils'\n\ntype FloatButtonClasses = {\n root?: string\n button?: string\n}\n\nexport interface FloatButtonProps {\n isVisible: boolean\n classes?: FloatButtonClasses\n children: React.ReactElement\n buttonProps?: ButtonProps\n}\n\nexport const FloatButton = ({ isVisible, classes, children, buttonProps }: FloatButtonProps) => {\n return (\n <ResponsiveContainer\n className={cn(\n 'fixed bottom-0 left-1/2 z-[60] w-full max-w-[604px] -translate-x-1/2 translate-y-0 rounded-t-lg bg-color-white px-6 py-4 shadow-[0px_-6px_8px_0px_#2929290A] transition-transform duration-1000 desktop:hidden',\n { 'translate-y-[100%]': !isVisible },\n classes?.root\n )}\n >\n {children}\n <Button size='lg' className={cn('m-auto w-full', classes?.button)} {...buttonProps}>\n Оформить заявку\n </Button>\n </ResponsiveContainer>\n )\n}\n","export type AllowedIcons = (typeof allowedIcons.flatten)[number]\n\nexport const allowedIcons = {\n group: {\n arrows: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll'\n ],\n brandLogos: [\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite'\n ],\n communication: ['communication/phone'],\n editor: [\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo'\n ],\n files: ['files/border', 'files/borderError', 'files/documentFilled', 'files/documentOutline', 'files/upload'],\n general: [\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/hiddenEye',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye'\n ],\n info: ['info/helpCircle', 'info/warningCircle'],\n logos: ['logos/beeline', 'logos/megafon', 'logos/mts'],\n media: ['media/desktop', 'media/mobile'],\n social: ['social/classmates', 'social/telegram', 'social/vk'],\n status: ['status/badSmile', 'status/iconMark', 'status/iconRetry', 'status/iconUser']\n },\n flatten: [\n 'arrows/arrowCircle',\n 'arrows/arrowDownRight',\n 'arrows/arrowLink',\n 'arrows/arrowRight',\n 'arrows/arrowRotate',\n 'arrows/arrowScroll',\n 'brandLogos/logoBlack',\n 'brandLogos/logoBusiness',\n 'brandLogos/logoGray',\n 'brandLogos/logoInsurance',\n 'brandLogos/logoMain',\n 'brandLogos/logoWhite',\n 'communication/phone',\n 'editor/bold',\n 'editor/heading',\n 'editor/italic',\n 'editor/link',\n 'editor/list',\n 'editor/palette',\n 'editor/redo',\n 'editor/removeFormatting',\n 'editor/space',\n 'editor/strikethrough',\n 'editor/typography',\n 'editor/underline',\n 'editor/undo',\n 'files/border',\n 'files/borderError',\n 'files/documentFilled',\n 'files/documentOutline',\n 'files/upload',\n 'general/calendar',\n 'general/check',\n 'general/close',\n 'general/edit',\n 'general/hiddenEye',\n 'general/menu',\n 'general/plus',\n 'general/reorder',\n 'general/search',\n 'general/shield',\n 'general/showEye',\n 'info/helpCircle',\n 'info/warningCircle',\n 'logos/beeline',\n 'logos/megafon',\n 'logos/mts',\n 'media/desktop',\n 'media/mobile',\n 'social/classmates',\n 'social/telegram',\n 'social/vk',\n 'status/badSmile',\n 'status/iconMark',\n 'status/iconRetry',\n 'status/iconUser'\n ]\n} as const\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n","'use client'\n\nimport * as TabPrimitive from '@radix-ui/react-tabs'\nimport type { TabRenderContent, TabsClasses } from './model/types'\nimport { TabContent } from './ui/TabContent'\nimport { cn } from '$/shared/utils'\n\nexport interface TabsSwitcherProps {\n renderContent: TabRenderContent\n value: string\n onChangeTab: (tab: string) => void\n defaultActiveTabId?: string\n classes?: TabsClasses\n}\n\nexport const TabsSwitcher = ({ renderContent, defaultActiveTabId = '1', value, onChangeTab, classes }: TabsSwitcherProps) => {\n return (\n <TabPrimitive.Root\n value={value}\n onValueChange={onChangeTab}\n defaultValue={defaultActiveTabId}\n className={cn('flex flex-col', classes?.root)}\n >\n <TabPrimitive.List className={cn('flex items-center gap-4', classes?.list)}>\n {renderContent?.triggers?.map(({ id, label }) => (\n <TabPrimitive.Trigger\n key={id}\n value={id}\n className={cn(\n 'desk-body-regular-l cursor-pointer rounded-sm bg-color-blue-grey-100 px-4 py-2 text-color-secondary outline outline-2 outline-offset-2 outline-transparent transition-colors hover:bg-color-blue-grey-200 hover:text-color-secondary data-[state=\"active\"]:!bg-color-primary-default data-[state=\"active\"]:!text-color-white',\n classes?.trigger\n )}\n >\n {label}\n </TabPrimitive.Trigger>\n ))}\n </TabPrimitive.List>\n <TabContent contents={renderContent?.contents} classes={classes?.tabContent} />\n </TabPrimitive.Root>\n )\n}\n","import { forwardRef } from 'react'\n\nexport const Table = forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>((props, ref) => (\n <table ref={ref} {...props} />\n))\nTable.displayName = 'Table'\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <thead ref={ref} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tbody ref={ref} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tfoot ref={ref} {...props} />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>((props, ref) => (\n <tr ref={ref} {...props} />\n))\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <th ref={ref} {...props} />\n))\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <td ref={ref} {...props} />\n))\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>((props, ref) => (\n <caption ref={ref} {...props} />\n))\nTableCaption.displayName = 'TableCaption'\n","import { type SortDirection } from '@tanstack/react-table'\nimport { useDevice } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\ntype DataTableColumnHeaderClasses = {\n root?: string\n content?: string\n icon?: string\n}\n\ntype DataTableColumnHeaderProps = {\n children: React.ReactNode\n isSorted: boolean | SortDirection\n toggleSorting: (desc: boolean) => void\n nextSortingOrder: boolean | SortDirection\n canSort: boolean\n classes?: DataTableColumnHeaderClasses\n}\n\nexport const DataTableColumnHeader = ({\n children,\n canSort,\n toggleSorting,\n nextSortingOrder,\n isSorted,\n classes\n}: DataTableColumnHeaderProps) => {\n const { root, content, icon } = classes || {}\n\n const { isDesktop } = useDevice()\n\n const isSortable = canSort && isDesktop\n\n return (\n <button\n type='button'\n className={cn('desk-body-regular-l flex items-center justify-center gap-x-2 text-color-secondary', root)}\n onClick={() => toggleSorting(!isSorted)}\n disabled={!isSortable}\n >\n <span className={cn('', content)}>{children}</span>\n {isSortable && (\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'size-4 rotate-90 text-color-current duration-100',\n {\n '-rotate-90': !nextSortingOrder\n },\n icon\n )}\n />\n )}\n </button>\n )\n}\n","import { useRef, useState } from 'react'\nimport { type CellContext } from '@tanstack/react-table'\nimport { useClickOutside } from '$/shared/hooks'\n\ntype Cell<TData, TValue> = CellContext<TData, TValue> & { rowIndex?: number }\n\ninterface EditableCellProps<TData, TValue> extends Cell<TData, TValue> {\n target: keyof TData\n update: (target: number, values: TData) => void\n}\n\nexport const EditableCell = <TData, TValue extends string | undefined>({\n row,\n getValue,\n update,\n target,\n rowIndex = -1\n}: EditableCellProps<TData, TValue>) => {\n const [focused, setFocused] = useState<boolean>(false)\n const [value, setValue] = useState<TValue | string>(getValue())\n const changed = useRef<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const { original } = row\n\n const onValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value)\n\n changed.current = true\n }\n\n const onInputBlur = () => {\n if (changed.current) {\n const updatedRow = { ...original, [target]: value }\n update(rowIndex, updatedRow)\n\n changed.current = false\n }\n\n setFocused(false)\n }\n\n useClickOutside(inputRef, onInputBlur)\n\n return focused ? (\n <input\n ref={inputRef}\n className='mr-2 w-full outline-none'\n type='text'\n value={value}\n onChange={onValueChange}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n\n onInputBlur()\n }\n }}\n />\n ) : (\n <p className='w-full' onClick={() => setFocused(true)}>\n {getValue()}\n </p>\n )\n}\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils'\nimport { Pagination, type PaginationProps } from '../pagination'\n\ntype TablePaginationClasses = {\n root?: string\n displayShown?: string\n pagination?: PaginationProps['classes']\n}\n\nexport type TablePaginationProps = {\n pageSize: number\n page: number\n rowsCount: number\n pageCount: number\n onPageIndexChange: (page: number) => void\n classes?: TablePaginationClasses\n}\n\nexport const TablePagination = ({ page, pageCount, pageSize, onPageIndexChange, rowsCount, classes }: TablePaginationProps) => {\n const prevRows = pageSize * page\n const rowsLeft = prevRows > rowsCount ? rowsCount : prevRows\n\n return (\n <div className={cn('flex w-full items-center justify-between', classes?.root)}>\n <span className={cn('desk-body-regular-m text-color-tetriary', classes?.displayShown)}>\n Показано {rowsLeft} из {rowsCount}\n </span>\n <Pagination\n totalPages={pageCount}\n changePage={(pageIndex) => onPageIndexChange(pageIndex)}\n page={page}\n ellipsis={1}\n classes={classes?.pagination}\n />\n </div>\n )\n}\n","import { flexRender, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<\n DataTableProps<TData>,\n 'enableHeaders' | 'classes' | 'mode' | 'pagination' | 'empty'\n> & {\n table: TTable<TData>\n}\n\nexport const Desktop = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n pagination,\n empty = 'Not found'\n}: DesktopTableProps<TData>) => {\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <Table className={cn('w-full', classes?.table)}>\n {enableHeaders && (\n <TableHeader className='px-2'>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className={cn(\n 'w-full',\n {\n 'border-b border-b-[rgba(234,237,241,1)]': mode === 'solid'\n },\n classes?.tableHeader\n )}\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd'\n },\n classes?.tableHead\n )}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n )}\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row, rowIndex) => (\n <TableRow\n key={row.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, cellIndex) => (\n <TableCell\n key={cell.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd',\n 'font-medium': cellIndex !== 0\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, { ...cell.getContext(), rowIndex })}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell className='py-4 text-center' colSpan={table.getAllColumns().length}>\n {empty}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n","import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes,\n empty = 'Not found'\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'empty'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>{empty}</div>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true,\n empty,\n pageSize = 10\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n const [paginationState, setPagination] = useState<PaginationState>({\n pageIndex: 0,\n pageSize\n })\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting, pagination: paginationState },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} empty={empty} mode={mode} pagination={pagination} classes={classes} />\n )\n}\n","import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key)\n })\n }) as ColumnDef<TData>[]\n }\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n","export type SlottableProps = {\n children: React.ReactNode\n}\n\nexport const Slottable = ({ children }: SlottableProps) => <>{children}</>\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n","import { isValidElement } from 'react'\nimport { Slottable, type SlottableProps } from '../ui'\n\nexport const isSlottable = (child: React.ReactNode): child is React.ReactElement<SlottableProps, typeof Slottable> => {\n return isValidElement(child) && child.type === Slottable\n}\n","export const getElementRef = (element: React.ReactElement) => {\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get\n let warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element as any).ref\n }\n\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get\n warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref\n }\n\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref\n}\n","type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["buttonConfig","cva","ButtonIcon","forwardRef","size","intent","children","classes","type","props","ref","jsx","cn","Skeleton","className","FloatButton","isVisible","buttonProps","jsxs","ResponsiveContainer","Button","allowedIcons","TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabContent","contents","id","body","accordion","TabPrimitive.Content","Accordion","TabsSwitcher","renderContent","defaultActiveTabId","onChangeTab","TabPrimitive.Root","TabPrimitive.List","_a","label","TabPrimitive.Trigger","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTableColumnHeader","canSort","toggleSorting","nextSortingOrder","isSorted","root","content","icon","isDesktop","useDevice","isSortable","Icon","EditableCell","row","getValue","update","target","rowIndex","focused","setFocused","useState","changed","useRef","inputRef","original","onInputBlur","updatedRow","useClickOutside","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFacetedRowModel","preRowModel","columnFilters","globalFilter","filterableIds","filterRowsImpl","getFacetedUniqueValues","_table$getColumn","facetedRowModel","facetedUniqueValues","j","_facetedUniqueValues$","getFilteredRowModel","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","Pagination","page","between","totalPages","changePage","ellipsis","positions","visiblePages","range","active","TablePagination","onPageIndexChange","rowsCount","prevRows","rowsLeft","Desktop","mode","enableHeaders","empty","paginationEnabled","paginationProps","cellIndex","Mobile","DataTable","setColumnFilters","setSorting","paginationState","setPagination","isMobile","TableUtils","template","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","TypeGuards","NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","useEffect","t","toast","Toaster","Slottable","SlotClone","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children","isSlottable","child","element","getter","warn","_b","slotProps","childProps","override","prop","slotPropValue","childPropValue","args","Slot","childrenArray","slottable","newElement","newChildren"],"mappings":";;;;;;;;AASA,MAAMA,KAAeC;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IAER;AAAA,IACA,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GASaC,KAAaC;AAAA,EACxB,CAAC,EAAE,MAAAC,GAAM,QAAAC,GAAQ,UAAAC,GAAU,SAAAC,GAAS,MAAAC,IAAO,UAAU,GAAGC,EAAM,GAAGC,MAE7DC,gBAAAA,MAAC,UAAO,EAAA,KAAAD,GAAU,MAAAF,GAAY,WAAWI,EAAGZ,GAAa,EAAE,QAAAK,GAAQ,MAAAD,EAAA,CAAM,GAAGG,KAAA,gBAAAA,EAAS,MAAM,GAAI,GAAGE,GAChG,UAACE,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAWC,EAAGL,KAAA,gBAAAA,EAAS,IAAI,GAAI,UAAAD,EAAA,CAAS,EAChD,CAAA;AAGN,GC1CaO,KAAW,CAAC,EAAE,WAAAC,8BACjB,OAAI,EAAA,WAAWF,EAAG,gCAAgCE,CAAS,GAAG,GCQ3DC,KAAc,CAAC,EAAE,WAAAC,GAAW,SAAAT,GAAS,UAAAD,GAAU,aAAAW,QAExDC,gBAAAA,EAAA;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,WAAWP;AAAA,MACT;AAAA,MACA,EAAE,sBAAsB,CAACI,EAAU;AAAA,MACnCT,KAAA,gBAAAA,EAAS;AAAA,IACX;AAAA,IAEC,UAAA;AAAA,MAAAD;AAAA,MACAK,gBAAAA,EAAAA,IAAAS,GAAA,EAAO,MAAK,MAAK,WAAWR,EAAG,iBAAiBL,KAAA,gBAAAA,EAAS,MAAM,GAAI,GAAGU,GAAa,UAEpF,kBAAA,CAAA;AAAA,IAAA;AAAA,EAAA;AACF,GC3BSI,KAAe;AAAA,EAC1B,OAAO;AAAA,IACL,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,eAAe,CAAC,qBAAqB;AAAA,IACrC,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAO,CAAC,gBAAgB,qBAAqB,wBAAwB,yBAAyB,cAAc;AAAA,IAC5G,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,CAAC,mBAAmB,oBAAoB;AAAA,IAC9C,OAAO,CAAC,iBAAiB,iBAAiB,WAAW;AAAA,IACrD,OAAO,CAAC,iBAAiB,cAAc;AAAA,IACvC,QAAQ,CAAC,qBAAqB,mBAAmB,WAAW;AAAA,IAC5D,QAAQ,CAAC,mBAAmB,mBAAmB,oBAAoB,iBAAiB;AAAA,EACtF;AAAA,EACA,SAAS;AAAA,IACP;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,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,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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;ACpGA,IAAIC,IAAY,QACZ,CAACC,IAAmBC,EAAe,IAAIC,GAAmBH,GAAW;AAAA,EACvEI;AACF,CAAC,GACGC,KAA2BD,GAA6B,GACxD,CAACE,IAAcC,EAAc,IAAIN,GAAkBD,CAAS,GAC5DQ,KAAOC,EAAM;AAAA,EACf,CAACtB,GAAOuB,MAAiB;AACvB,UAAM;AAAA,MACJ,aAAAC;AAAA,MACA,OAAOC;AAAA,MACP,eAAAC;AAAA,MACA,cAAAC;AAAA,MACA,aAAAC,IAAc;AAAA,MACd,KAAAC;AAAA,MACA,gBAAAC,IAAiB;AAAA,MACjB,GAAGC;AAAA,IACT,IAAQ/B,GACEgC,IAAYC,GAAaJ,CAAG,GAC5B,CAACK,GAAOC,CAAQ,IAAIC,GAAqB;AAAA,MAC7C,MAAMX;AAAA,MACN,UAAUC;AAAA,MACV,aAAaC,KAAgB;AAAA,MAC7B,QAAQd;AAAA,IACd,CAAK;AACD,WAAuBX,gBAAAA,EAAG;AAAA,MACxBiB;AAAA,MACA;AAAA,QACE,OAAOK;AAAA,QACP,QAAQa,GAAO;AAAA,QACf,OAAAH;AAAA,QACA,eAAeC;AAAA,QACf,aAAAP;AAAA,QACA,KAAKI;AAAA,QACL,gBAAAF;AAAA,QACA,UAA0B5B,gBAAAA,EAAG;AAAA,UAC3BoC,EAAU;AAAA,UACV;AAAA,YACE,KAAKN;AAAA,YACL,oBAAoBJ;AAAA,YACpB,GAAGG;AAAA,YACH,KAAKR;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AAAA,IACK;AAAA,EACL;AACA;AACAF,GAAK,cAAcR;AACnB,IAAI0B,KAAgB,YAChBC,KAAWlB,EAAM;AAAA,EACnB,CAACtB,GAAOuB,MAAiB;AACvB,UAAM,EAAE,aAAAC,GAAa,MAAAiB,IAAO,IAAM,GAAGC,EAAW,IAAG1C,GAC7C2C,IAAUvB,GAAemB,IAAef,CAAW,GACnDoB,IAAwB1B,GAAyBM,CAAW;AAClE,WAAuBtB,gBAAAA,EAAG;AAAA,MACxB2C;AAAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,GAAGD;AAAA,QACH,aAAaD,EAAQ;AAAA,QACrB,KAAKA,EAAQ;AAAA,QACb,MAAAF;AAAA,QACA,UAA0BvC,gBAAAA,EAAG;AAAA,UAC3BoC,EAAU;AAAA,UACV;AAAA,YACE,MAAM;AAAA,YACN,oBAAoBK,EAAQ;AAAA,YAC5B,GAAGD;AAAA,YACH,KAAKnB;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AAAA,IACK;AAAA,EACL;AACA;AACAiB,GAAS,cAAcD;AACvB,IAAIO,KAAe,eACfC,KAAczB,EAAM;AAAA,EACtB,CAACtB,GAAOuB,MAAiB;AACvB,UAAM,EAAE,aAAAC,GAAa,OAAAU,GAAO,UAAAc,IAAW,IAAO,GAAGC,EAAY,IAAKjD,GAC5D2C,IAAUvB,GAAe0B,IAActB,CAAW,GAClDoB,IAAwB1B,GAAyBM,CAAW,GAC5D0B,IAAYC,GAAcR,EAAQ,QAAQT,CAAK,GAC/CkB,IAAYC,GAAcV,EAAQ,QAAQT,CAAK,GAC/CoB,IAAapB,MAAUS,EAAQ;AACrC,WAAuBzC,gBAAAA,EAAG;AAAA,MACxBqD;AAAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,GAAGX;AAAA,QACH,WAAW,CAACI;AAAA,QACZ,QAAQM;AAAA,QACR,UAA0BpD,gBAAAA,EAAG;AAAA,UAC3BoC,EAAU;AAAA,UACV;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,iBAAiBgB;AAAA,YACjB,iBAAiBF;AAAA,YACjB,cAAcE,IAAa,WAAW;AAAA,YACtC,iBAAiBN,IAAW,KAAK;AAAA,YACjC,UAAAA;AAAA,YACA,IAAIE;AAAA,YACJ,GAAGD;AAAA,YACH,KAAK1B;AAAA,YACL,aAAaiC,EAAqBxD,EAAM,aAAa,CAACyD,MAAU;AAC9D,cAAI,CAACT,KAAYS,EAAM,WAAW,KAAKA,EAAM,YAAY,KACvDd,EAAQ,cAAcT,CAAK,IAE3BuB,EAAM,eAAgB;AAAA,YAEtC,CAAa;AAAA,YACD,WAAWD,EAAqBxD,EAAM,WAAW,CAACyD,MAAU;AAC1D,cAAI,CAAC,KAAK,OAAO,EAAE,SAASA,EAAM,GAAG,KAAGd,EAAQ,cAAcT,CAAK;AAAA,YACjF,CAAa;AAAA,YACD,SAASsB,EAAqBxD,EAAM,SAAS,MAAM;AACjD,oBAAM0D,IAAwBf,EAAQ,mBAAmB;AACzD,cAAI,CAACW,KAAc,CAACN,KAAYU,KAC9Bf,EAAQ,cAAcT,CAAK;AAAA,YAE9B,CAAA;AAAA,UACb;AAAA,QACA;AAAA,MACA;AAAA,IACK;AAAA,EACL;AACA;AACAa,GAAY,cAAcD;AAC1B,IAAIa,KAAe,eACfC,KAActC,EAAM;AAAA,EACtB,CAACtB,GAAOuB,MAAiB;AACvB,UAAM,EAAE,aAAAC,GAAa,OAAAU,GAAO,YAAA2B,GAAY,UAAAhE,GAAU,GAAGiE,EAAY,IAAK9D,GAChE2C,IAAUvB,GAAeuC,IAAcnC,CAAW,GAClD0B,IAAYC,GAAcR,EAAQ,QAAQT,CAAK,GAC/CkB,IAAYC,GAAcV,EAAQ,QAAQT,CAAK,GAC/CoB,IAAapB,MAAUS,EAAQ,OAC/BoB,IAA+BzC,EAAM,OAAOgC,CAAU;AAC5D,WAAAhC,EAAM,UAAU,MAAM;AACpB,YAAM0C,IAAM,sBAAsB,MAAMD,EAA6B,UAAU,EAAK;AACpF,aAAO,MAAM,qBAAqBC,CAAG;AAAA,IACtC,GAAE,EAAE,GACkB9D,gBAAAA,EAAG,IAAC+D,IAAU,EAAE,SAASJ,KAAcP,GAAY,UAAU,CAAC,EAAE,SAAAY,EAAO,MAAuBhE,gBAAAA,EAAG;AAAA,MACtHoC,EAAU;AAAA,MACV;AAAA,QACE,cAAcgB,IAAa,WAAW;AAAA,QACtC,oBAAoBX,EAAQ;AAAA,QAC5B,MAAM;AAAA,QACN,mBAAmBO;AAAA,QACnB,QAAQ,CAACgB;AAAA,QACT,IAAId;AAAA,QACJ,UAAU;AAAA,QACV,GAAGU;AAAA,QACH,KAAKvC;AAAA,QACL,OAAO;AAAA,UACL,GAAGvB,EAAM;AAAA,UACT,mBAAmB+D,EAA6B,UAAU,OAAO;AAAA,QAClE;AAAA,QACD,UAAUG,KAAWrE;AAAA,MAC7B;AAAA,IACA,GAAO;AAAA,EACP;AACA;AACA+D,GAAY,cAAcD;AAC1B,SAASR,GAAcgB,GAAQjC,GAAO;AACpC,SAAO,GAAGiC,CAAM,YAAYjC,CAAK;AACnC;AACA,SAASmB,GAAcc,GAAQjC,GAAO;AACpC,SAAO,GAAGiC,CAAM,YAAYjC,CAAK;AACnC;AACA,IAAIkC,KAAQ/C,IACRgD,KAAO7B,IACP8B,KAAUvB,IACVwB,KAAUX;AC5KP,MAAMY,KAAa,CAAC,EAAE,SAAA1E,GAAS,UAAA2E,QAEjCvE,gBAAAA,EAAAA,IAAA,OAAA,EAAI,WAAWC,EAAG,uBAAuBL,KAAA,gBAAAA,EAAS,eAAe,GAC/D,UAAA2E,KAAA,gBAAAA,EAAU,IAAI,CAAC,EAAE,IAAAC,GAAI,MAAAC,GAAM,WAAAC,QACtBA,MAAaA,KAAA,QAAAA,EAAW,+BAEvBC,IAAA,EAA8B,OAAOH,GAAI,WAAWvE,EAAG,QAAQL,KAAA,gBAAAA,EAAS,OAAO,GAC9E,gCAACgF,IAAU,EAAA,OAAOF,KAAA,gBAAAA,EAAW,OAAQ,UAAAD,EAAA,CAAK,KADjBD,CAE3B,IAKDxE,gBAAAA,EAAA,IAAA2E,IAAA,EAA8B,OAAOH,GAAI,WAAWvE,EAAG,QAAQL,KAAA,gBAAAA,EAAS,OAAO,GAC7E,eADwB4E,CAE3B,IAGN,GClBSK,KAAe,CAAC,EAAE,eAAAC,GAAe,oBAAAC,IAAqB,KAAK,OAAA/C,GAAO,aAAAgD,GAAa,SAAApF,QAAiC;;AAEzH,SAAAW,gBAAAA,EAAA;AAAA,IAAC0E;AAAAA,IAAA;AAAA,MACC,OAAAjD;AAAA,MACA,eAAegD;AAAA,MACf,cAAcD;AAAA,MACd,WAAW9E,EAAG,iBAAiBL,KAAA,gBAAAA,EAAS,IAAI;AAAA,MAE5C,UAAA;AAAA,QAAAI,gBAAAA,EAAA,IAACkF,IAAA,EAAkB,WAAWjF,EAAG,2BAA2BL,KAAA,gBAAAA,EAAS,IAAI,GACtE,WAAAuF,IAAAL,KAAA,gBAAAA,EAAe,aAAf,gBAAAK,EAAyB,IAAI,CAAC,EAAE,IAAAX,GAAI,OAAAY,QACnCpF,gBAAAA,EAAA;AAAA,UAACqF;AAAAA,UAAA;AAAA,YAEC,OAAOb;AAAA,YACP,WAAWvE;AAAA,cACT;AAAA,cACAL,KAAA,gBAAAA,EAAS;AAAA,YACX;AAAA,YAEC,UAAAwF;AAAA,UAAA;AAAA,UAPIZ;AAAA,QASR,IACH;AAAA,8BACCF,IAAW,EAAA,UAAUQ,KAAA,gBAAAA,EAAe,UAAU,SAASlF,KAAA,gBAAAA,EAAS,WAAY,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/E;AAEJ,GCtCa0F,KAAQ9F,EAAqE,CAACM,GAAOC,4BAC/F,SAAM,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC7B;AACDwF,GAAM,cAAc;AAEP,MAAAC,KAAc/F,EAAmF,CAACM,GAAOC,4BACnH,SAAM,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC7B;AACDyF,GAAY,cAAc;AAEb,MAAAC,KAAYhG,EAAmF,CAACM,GAAOC,4BACjH,SAAM,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC7B;AACD0F,GAAU,cAAc;AAEX,MAAAC,KAAcjG,EAAmF,CAACM,GAAOC,4BACnH,SAAM,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC7B;AACD2F,GAAY,cAAc;AAEb,MAAAC,IAAWlG,EAA2E,CAACM,GAAOC,4BACxG,MAAG,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC1B;AACD4F,EAAS,cAAc;AAEV,MAAAC,KAAYnG,EAA+E,CAACM,GAAOC,4BAC7G,MAAG,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC1B;AACD6F,GAAU,cAAc;AAEX,MAAAC,KAAYpG,EAA+E,CAACM,GAAOC,4BAC7G,MAAG,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC1B;AACD8F,GAAU,cAAc;AAEX,MAAAC,KAAerG,EAAmF,CAACM,GAAOC,4BACpH,WAAQ,EAAA,KAAAA,GAAW,GAAGD,GAAO,CAC/B;AACD+F,GAAa,cAAc;ACpBpB,MAAMC,KAAwB,CAAC;AAAA,EACpC,UAAAnG;AAAA,EACA,SAAAoG;AAAA,EACA,eAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAtG;AACF,MAAkC;AAChC,QAAM,EAAE,MAAAuG,GAAM,SAAAC,GAAS,MAAAC,EAAK,IAAIzG,KAAW,CAAC,GAEtC,EAAE,WAAA0G,EAAU,IAAIC,GAAU,GAE1BC,IAAaT,KAAWO;AAG5B,SAAA/F,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWN,EAAG,qFAAqFkG,CAAI;AAAA,MACvG,SAAS,MAAMH,EAAc,CAACE,CAAQ;AAAA,MACtC,UAAU,CAACM;AAAA,MAEX,UAAA;AAAA,QAAAxG,gBAAAA,MAAC,UAAK,WAAWC,EAAG,IAAImG,CAAO,GAAI,UAAAzG,GAAS;AAAA,QAC3C6G,KACCxG,gBAAAA,EAAA;AAAA,UAACyG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWxG;AAAA,cACT;AAAA,cACA;AAAA,gBACE,cAAc,CAACgG;AAAA,cACjB;AAAA,cACAI;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AAEJ,GC7CaK,KAAe,CAA2C;AAAA,EACrE,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC,IAAW;AACb,MAAwC;AACtC,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAkB,EAAK,GAC/C,CAAClF,GAAOC,CAAQ,IAAIiF,EAA0BN,GAAU,GACxDO,IAAUC,GAAgB,EAAK,GAE/BC,IAAWD,GAAyB,IAAI,GAExC,EAAE,UAAAE,MAAaX,GAEfnF,IAAgB,CAAC+B,MAA+C;AAC3D,IAAAtB,EAAAsB,EAAM,OAAO,KAAK,GAE3B4D,EAAQ,UAAU;AAAA,EACpB,GAEMI,IAAc,MAAM;AACxB,QAAIJ,EAAQ,SAAS;AACnB,YAAMK,IAAa,EAAE,GAAGF,GAAU,CAACR,CAAM,GAAG9E,EAAM;AAClD,MAAA6E,EAAOE,GAAUS,CAAU,GAE3BL,EAAQ,UAAU;AAAA,IAAA;AAGpB,IAAAF,EAAW,EAAK;AAAA,EAClB;AAEA,SAAAQ,GAAgBJ,GAAUE,CAAW,GAE9BP,IACLhH,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKqH;AAAA,MACL,WAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAArF;AAAA,MACA,UAAUR;AAAA,MACV,WAAW,CAAC+B,MAAU;AAChB,QAAAA,EAAM,QAAQ,YAChBA,EAAM,eAAe,GAETgE,EAAA;AAAA,MACd;AAAA,IACF;AAAA,EACF,IAECvH,gBAAAA,MAAA,KAAA,EAAE,WAAU,UAAS,SAAS,MAAMiH,EAAW,EAAI,GACjD,UAAAL,EACH,EAAA,CAAA;AAEJ;ACjEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmDA,SAASc,KAAqB;AAC5B,SAAO;AAAA,IACL,UAAU,CAACC,GAAUC,MACZ,OAAOD,KAAa,aAAa;AAAA,MACtC,GAAGC;AAAA,MACH,YAAYD;AAAA,IACpB,IAAU;AAAA,MACF,GAAGC;AAAA,MACH,aAAaD;AAAA,IACd;AAAA,IAEH,SAAS,CAAAC,MAAUA;AAAA,IACnB,OAAO,CAAAA,MAAUA;AAAA,EAClB;AACH;AAQA,SAASC,EAAiBC,GAASC,GAAO;AACxC,SAAO,OAAOD,KAAY,aAAaA,EAAQC,CAAK,IAAID;AAC1D;AAIA,SAASE,EAAiBC,GAAKC,GAAU;AACvC,SAAO,CAAAJ,MAAW;AAChB,IAAAI,EAAS,SAAS,CAAAC,OACT;AAAA,MACL,GAAGA;AAAA,MACH,CAACF,CAAG,GAAGJ,EAAiBC,GAASK,EAAIF,CAAG,CAAC;AAAA,IAC1C,EACF;AAAA,EACF;AACH;AACA,SAASG,EAAWC,GAAG;AACrB,SAAOA,aAAa;AACtB;AACA,SAASC,GAAcD,GAAG;AACxB,SAAO,MAAM,QAAQA,CAAC,KAAKA,EAAE,MAAM,CAAAE,MAAO,OAAOA,KAAQ,QAAQ;AACnE;AACA,SAASC,GAAUC,GAAKC,GAAa;AACnC,QAAMC,IAAO,CAAE,GACTC,IAAU,CAAAC,MAAU;AACxB,IAAAA,EAAO,QAAQ,CAAAC,MAAQ;AACrB,MAAAH,EAAK,KAAKG,CAAI;AACd,YAAMnJ,IAAW+I,EAAYI,CAAI;AACjC,MAAInJ,KAAY,QAAQA,EAAS,UAC/BiJ,EAAQjJ,CAAQ;AAAA,IAExB,CAAK;AAAA,EACF;AACD,SAAAiJ,EAAQH,CAAG,GACJE;AACT;AACA,SAASI,EAAKC,GAASC,GAAIC,GAAM;AAC/B,MAAIC,IAAO,CAAE,GACTC;AACJ,SAAO,CAAAC,MAAW;AAChB,QAAIC;AACJ,IAAIJ,EAAK,OAAOA,EAAK,UAAOI,IAAU,KAAK,IAAK;AAChD,UAAMC,IAAUP,EAAQK,CAAO;AAE/B,QAAI,EADgBE,EAAQ,WAAWJ,EAAK,UAAUI,EAAQ,KAAK,CAACC,GAAKC,MAAUN,EAAKM,CAAK,MAAMD,CAAG;AAEpG,aAAOJ;AAET,IAAAD,IAAOI;AACP,QAAIG;AAIJ,QAHIR,EAAK,OAAOA,EAAK,UAAOQ,IAAa,KAAK,IAAK,IACnDN,IAASH,EAAG,GAAGM,CAAO,GACtBL,KAAQ,QAAQA,EAAK,YAAY,QAAQA,EAAK,SAASE,CAAM,GACzDF,EAAK,OAAOA,EAAK,SACfA,KAAQ,QAAQA,EAAK,MAAK,GAAI;AAChC,YAAMS,IAAa,KAAK,OAAO,KAAK,QAAQL,KAAW,GAAG,IAAI,KACxDM,IAAgB,KAAK,OAAO,KAAK,QAAQF,KAAc,GAAG,IAAI,KAC9DG,IAAsBD,IAAgB,IACtCE,IAAM,CAACC,GAAKC,MAAQ;AAExB,aADAD,IAAM,OAAOA,CAAG,GACTA,EAAI,SAASC;AAClB,UAAAD,IAAM,MAAMA;AAEd,eAAOA;AAAA,MACR;AACD,cAAQ,KAAK,OAAOD,EAAIF,GAAe,CAAC,CAAC,KAAKE,EAAIH,GAAY,CAAC,CAAC,OAAO;AAAA;AAAA;AAAA,yBAGtD,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,MAAME,GAAqB,GAAG,CAAC,CAAC,kBAAkBX,KAAQ,OAAO,SAASA,EAAK,GAAG;AAAA,IACtI;AAEI,WAAOE;AAAA,EACR;AACH;AACA,SAASa,EAAeC,GAAcC,GAAYlC,GAAKmC,GAAU;AAC/D,SAAO;AAAA,IACL,OAAO,MAAM;AACX,UAAIC;AACJ,cAAQA,IAAwBH,KAAgB,OAAO,SAASA,EAAa,aAAa,OAAOG,IAAwBH,EAAaC,CAAU;AAAA,IACjJ;AAAA,IACD,KAAK,QAAQ,IAAI,aAAa,iBAAiBlC;AAAA,IAC/C,UAAAmC;AAAA,EACD;AACH;AAEA,SAASE,GAAWC,GAAO5D,GAAKiB,GAAQ4C,GAAU;AAChD,QAAMC,IAAiB,MAAM;AAC3B,QAAIC;AACJ,YAAQA,IAAiBC,EAAK,SAAQ,MAAO,OAAOD,IAAiBH,EAAM,QAAQ;AAAA,EACpF,GACKI,IAAO;AAAA,IACX,IAAI,GAAGhE,EAAI,EAAE,IAAIiB,EAAO,EAAE;AAAA,IAC1B,KAAAjB;AAAA,IACA,QAAAiB;AAAA,IACA,UAAU,MAAMjB,EAAI,SAAS6D,CAAQ;AAAA,IACrC,aAAaC;AAAA,IACb,YAAY1B,EAAK,MAAM,CAACwB,GAAO3C,GAAQjB,GAAKgE,CAAI,GAAG,CAACJ,GAAO3C,GAAQjB,GAAKgE,OAAU;AAAA,MAChF,OAAAJ;AAAA,MACA,QAAA3C;AAAA,MACA,KAAAjB;AAAA,MACA,MAAMgE;AAAA,MACN,UAAUA,EAAK;AAAA,MACf,aAAaA,EAAK;AAAA,IACnB,IAAGV,EAAeM,EAAM,SAAS,cAAc,iBAAiB,CAAC;AAAA,EACnE;AACD,SAAAA,EAAM,UAAU,QAAQ,CAAAK,MAAW;AACjC,IAAAA,EAAQ,cAAc,QAAQA,EAAQ,WAAWD,GAAM/C,GAAQjB,GAAK4D,CAAK;AAAA,EAC1E,GAAE,EAAE,GACEI;AACT;AAEA,SAASE,GAAaN,GAAOO,GAAWC,GAAOC,GAAQ;AACrD,MAAIC,GAAMC;AAEV,QAAMC,IAAoB;AAAA,IACxB,GAFoBZ,EAAM,qBAAsB;AAAA,IAGhD,GAAGO;AAAA,EACJ,GACKM,IAAcD,EAAkB;AACtC,MAAI3G,KAAMyG,KAAQC,IAAwBC,EAAkB,OAAO,OAAOD,IAAwBE,IAAc,OAAO,OAAO,UAAU,cAAe,aAAaA,EAAY,WAAW,KAAK,GAAG,IAAIA,EAAY,QAAQ,OAAO,GAAG,IAAI,WAAc,OAAOH,IAAO,OAAOE,EAAkB,UAAW,WAAWA,EAAkB,SAAS,QAC3UE;AAqBJ,MApBIF,EAAkB,aACpBE,IAAaF,EAAkB,aACtBC,MAELA,EAAY,SAAS,GAAG,IAC1BC,IAAa,CAAAC,MAAe;AAC1B,QAAIlC,IAASkC;AACb,eAAWrD,KAAOmD,EAAY,MAAM,GAAG,GAAG;AACxC,UAAIG;AACJ,MAAAnC,KAAUmC,IAAUnC,MAAW,OAAO,SAASmC,EAAQtD,CAAG,GACtD,QAAQ,IAAI,aAAa,gBAAgBmB,MAAW,UACtD,QAAQ,KAAK,IAAInB,CAAG,2BAA2BmD,CAAW,uBAAuB;AAAA,IAE7F;AACQ,WAAOhC;AAAA,EACR,IAEDiC,IAAa,CAAAC,MAAeA,EAAYH,EAAkB,WAAW,IAGrE,CAAC3G;AACH,UAAI,QAAQ,IAAI,aAAa,eACrB,IAAI,MAAM2G,EAAkB,aAAa,mDAAmD,sDAAsD,IAEpJ,IAAI,MAAO;AAEnB,MAAIvD,IAAS;AAAA,IACX,IAAI,GAAG,OAAOpD,CAAE,CAAC;AAAA,IACjB,YAAA6G;AAAA,IACA,QAAQL;AAAA,IACR,OAAAD;AAAA,IACA,WAAWI;AAAA,IACX,SAAS,CAAE;AAAA,IACX,gBAAgBpC,EAAK,MAAM,CAAC,EAAI,GAAG,MAAM;AACvC,UAAIyC;AACJ,aAAO,CAAC5D,GAAQ,IAAK4D,IAAkB5D,EAAO,YAAY,OAAO,SAAS4D,EAAgB,QAAQ,CAAAnD,MAAKA,EAAE,eAAc,CAAE,CAAE;AAAA,IAC5H,GAAE4B,EAAeM,EAAM,SAAS,gBAAgB,uBAAuB,CAAC;AAAA,IACzE,gBAAgBxB,EAAK,MAAM,CAACwB,EAAM,mBAAkB,CAAE,GAAG,CAAAkB,MAAgB;AACvE,UAAIC;AACJ,WAAKA,IAAmB9D,EAAO,YAAY,QAAQ8D,EAAiB,QAAQ;AAC1E,YAAIC,IAAc/D,EAAO,QAAQ,QAAQ,CAAAA,MAAUA,EAAO,gBAAgB;AAC1E,eAAO6D,EAAaE,CAAW;AAAA,MACvC;AACM,aAAO,CAAC/D,CAAM;AAAA,IACf,GAAEqC,EAAeM,EAAM,SAAS,gBAAgB,uBAAuB,CAAC;AAAA,EAC1E;AACD,aAAWK,KAAWL,EAAM;AAC1B,IAAAK,EAAQ,gBAAgB,QAAQA,EAAQ,aAAahD,GAAQ2C,CAAK;AAIpE,SAAO3C;AACT;AAEA,MAAMgE,IAAQ;AAGd,SAASC,GAAatB,GAAO3C,GAAQkE,GAAS;AAC5C,MAAIC;AAEJ,MAAIC,IAAS;AAAA,IACX,KAFUD,IAAcD,EAAQ,OAAO,OAAOC,IAAcnE,EAAO;AAAA,IAGnE,QAAAA;AAAA,IACA,OAAOkE,EAAQ;AAAA,IACf,eAAe,CAAC,CAACA,EAAQ;AAAA,IACzB,eAAeA,EAAQ;AAAA,IACvB,OAAOA,EAAQ;AAAA,IACf,YAAY,CAAE;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,aAAa;AAAA,IACb,gBAAgB,MAAM;AACpB,YAAMG,IAAc,CAAE,GAChBC,IAAgB,CAAAC,MAAK;AACzB,QAAIA,EAAE,cAAcA,EAAE,WAAW,UAC/BA,EAAE,WAAW,IAAID,CAAa,GAEhCD,EAAY,KAAKE,CAAC;AAAA,MACnB;AACD,aAAAD,EAAcF,CAAM,GACbC;AAAA,IACR;AAAA,IACD,YAAY,OAAO;AAAA,MACjB,OAAA1B;AAAA,MACA,QAAQyB;AAAA,MACR,QAAApE;AAAA,IACD;AAAA,EACF;AACD,SAAA2C,EAAM,UAAU,QAAQ,CAAAK,MAAW;AACjC,IAAAA,EAAQ,gBAAgB,QAAQA,EAAQ,aAAaoB,GAAQzB,CAAK;AAAA,EACtE,CAAG,GACMyB;AACT;AACA,MAAMI,KAAU;AAAA,EACd,aAAa,CAAA7B,MAAS;AAGpB,IAAAA,EAAM,kBAAkBxB,EAAK,MAAM,CAACwB,EAAM,cAAe,GAAEA,EAAM,yBAAyBA,EAAM,SAAQ,EAAG,cAAc,MAAMA,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAAC8B,GAAYV,GAAaW,GAAMC,MAAU;AAC9M,UAAIC,GAAkBC;AACtB,YAAMC,KAAeF,IAAmBF,KAAQ,OAAO,SAASA,EAAK,IAAI,CAAA9B,MAAYmB,EAAY,KAAK,CAAAtD,MAAKA,EAAE,OAAOmC,CAAQ,CAAC,EAAE,OAAO,OAAO,MAAM,OAAOgC,IAAmB,CAAE,GACzKG,KAAgBF,IAAoBF,KAAS,OAAO,SAASA,EAAM,IAAI,CAAA/B,MAAYmB,EAAY,KAAK,CAAAtD,MAAKA,EAAE,OAAOmC,CAAQ,CAAC,EAAE,OAAO,OAAO,MAAM,OAAOiC,IAAoB,CAAE,GAC9KG,IAAgBjB,EAAY,OAAO,CAAA/D,MAAU,EAAE0E,KAAQ,QAAQA,EAAK,SAAS1E,EAAO,EAAE,MAAM,EAAE2E,KAAS,QAAQA,EAAM,SAAS3E,EAAO,EAAE,EAAE;AAE/I,aADqBiF,EAAkBR,GAAY,CAAC,GAAGK,GAAa,GAAGE,GAAe,GAAGD,CAAY,GAAGpC,CAAK;AAAA,IAE9G,GAAEN,EAAeM,EAAM,SAASqB,GAAO,iBAAiB,CAAC,GAC1DrB,EAAM,wBAAwBxB,EAAK,MAAM,CAACwB,EAAM,cAAe,GAAEA,EAAM,yBAAyBA,EAAM,SAAQ,EAAG,cAAc,MAAMA,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAAC8B,GAAYV,GAAaW,GAAMC,OAC1MZ,IAAcA,EAAY,OAAO,CAAA/D,MAAU,EAAE0E,KAAQ,QAAQA,EAAK,SAAS1E,EAAO,EAAE,MAAM,EAAE2E,KAAS,QAAQA,EAAM,SAAS3E,EAAO,EAAE,EAAE,GAChIiF,EAAkBR,GAAYV,GAAapB,GAAO,QAAQ,IAChEN,EAAeM,EAAM,SAASqB,GAAO,uBAAuB,CAAC,GAChErB,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,cAAa,GAAIA,EAAM,sBAAqB,GAAIA,EAAM,SAAU,EAAC,cAAc,IAAI,GAAG,CAAC8B,GAAYV,GAAaW,MAAS;AACrK,UAAIQ;AACJ,YAAMC,KAAsBD,IAAoBR,KAAQ,OAAO,SAASA,EAAK,IAAI,CAAA9B,MAAYmB,EAAY,KAAK,CAAAtD,MAAKA,EAAE,OAAOmC,CAAQ,CAAC,EAAE,OAAO,OAAO,MAAM,OAAOsC,IAAoB,CAAE;AACxL,aAAOD,EAAkBR,GAAYU,GAAoBxC,GAAO,MAAM;AAAA,IACvE,GAAEN,EAAeM,EAAM,SAASqB,GAAO,qBAAqB,CAAC,GAC9DrB,EAAM,uBAAuBxB,EAAK,MAAM,CAACwB,EAAM,cAAa,GAAIA,EAAM,sBAAqB,GAAIA,EAAM,SAAU,EAAC,cAAc,KAAK,GAAG,CAAC8B,GAAYV,GAAaY,MAAU;AACxK,UAAIS;AACJ,YAAMD,KAAsBC,IAAqBT,KAAS,OAAO,SAASA,EAAM,IAAI,CAAA/B,MAAYmB,EAAY,KAAK,CAAAtD,MAAKA,EAAE,OAAOmC,CAAQ,CAAC,EAAE,OAAO,OAAO,MAAM,OAAOwC,IAAqB,CAAE;AAC5L,aAAOH,EAAkBR,GAAYU,GAAoBxC,GAAO,OAAO;AAAA,IACxE,GAAEN,EAAeM,EAAM,SAASqB,GAAO,sBAAsB,CAAC,GAI/DrB,EAAM,kBAAkBxB,EAAK,MAAM,CAACwB,EAAM,gBAAe,CAAE,GAAG,CAAA0C,MACrD,CAAC,GAAGA,CAAY,EAAE,QAAS,GACjChD,EAAeM,EAAM,SAASqB,GAAO,iBAAiB,CAAC,GAC1DrB,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,oBAAmB,CAAE,GAAG,CAAA0C,MAC7D,CAAC,GAAGA,CAAY,EAAE,QAAS,GACjChD,EAAeM,EAAM,SAASqB,GAAO,qBAAqB,CAAC,GAC9DrB,EAAM,wBAAwBxB,EAAK,MAAM,CAACwB,EAAM,sBAAqB,CAAE,GAAG,CAAA0C,MACjE,CAAC,GAAGA,CAAY,EAAE,QAAS,GACjChD,EAAeM,EAAM,SAASqB,GAAO,uBAAuB,CAAC,GAChErB,EAAM,uBAAuBxB,EAAK,MAAM,CAACwB,EAAM,qBAAoB,CAAE,GAAG,CAAA0C,MAC/D,CAAC,GAAGA,CAAY,EAAE,QAAS,GACjChD,EAAeM,EAAM,SAASqB,GAAO,sBAAsB,CAAC,GAI/DrB,EAAM,iBAAiBxB,EAAK,MAAM,CAACwB,EAAM,gBAAe,CAAE,GAAG,CAAA0C,MACpDA,EAAa,IAAI,CAAAC,MACfA,EAAY,OACpB,EAAE,KAAM,GACRjD,EAAeM,EAAM,SAASqB,GAAO,gBAAgB,CAAC,GACzDrB,EAAM,qBAAqBxB,EAAK,MAAM,CAACwB,EAAM,oBAAmB,CAAE,GAAG,CAAA+B,MAC5DA,EAAK,IAAI,CAAAY,MACPA,EAAY,OACpB,EAAE,KAAM,GACRjD,EAAeM,EAAM,SAASqB,GAAO,oBAAoB,CAAC,GAC7DrB,EAAM,uBAAuBxB,EAAK,MAAM,CAACwB,EAAM,sBAAqB,CAAE,GAAG,CAAA+B,MAChEA,EAAK,IAAI,CAAAY,MACPA,EAAY,OACpB,EAAE,KAAM,GACRjD,EAAeM,EAAM,SAASqB,GAAO,sBAAsB,CAAC,GAC/DrB,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,qBAAoB,CAAE,GAAG,CAAA+B,MAC9DA,EAAK,IAAI,CAAAY,MACPA,EAAY,OACpB,EAAE,KAAM,GACRjD,EAAeM,EAAM,SAASqB,GAAO,qBAAqB,CAAC,GAI9DrB,EAAM,uBAAuBxB,EAAK,MAAM,CAACwB,EAAM,qBAAoB,CAAE,GAAG,CAAA4C,MAC/DA,EAAY,OAAO,CAAAnB,MAAU;AAClC,UAAIoB;AACJ,aAAO,GAAGA,IAAqBpB,EAAO,eAAe,QAAQoB,EAAmB;AAAA,IACxF,CAAO,GACAnD,EAAeM,EAAM,SAASqB,GAAO,sBAAsB,CAAC,GAC/DrB,EAAM,qBAAqBxB,EAAK,MAAM,CAACwB,EAAM,mBAAkB,CAAE,GAAG,CAAA4C,MAC3DA,EAAY,OAAO,CAAAnB,MAAU;AAClC,UAAIqB;AACJ,aAAO,GAAGA,IAAsBrB,EAAO,eAAe,QAAQqB,EAAoB;AAAA,IAC1F,CAAO,GACApD,EAAeM,EAAM,SAASqB,GAAO,oBAAoB,CAAC,GAC7DrB,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,oBAAmB,CAAE,GAAG,CAAA4C,MAC7DA,EAAY,OAAO,CAAAnB,MAAU;AAClC,UAAIsB;AACJ,aAAO,GAAGA,IAAsBtB,EAAO,eAAe,QAAQsB,EAAoB;AAAA,IAC1F,CAAO,GACArD,EAAeM,EAAM,SAASqB,GAAO,qBAAqB,CAAC,GAC9DrB,EAAM,iBAAiBxB,EAAK,MAAM,CAACwB,EAAM,oBAAmB,GAAIA,EAAM,sBAAqB,GAAIA,EAAM,qBAAsB,CAAA,GAAG,CAAC+B,GAAMiB,GAAQhB,MAAU;AACrJ,UAAIiB,GAAiBC,GAAQC,GAAmBC,GAAUC,GAAkBC;AAC5E,aAAO,CAAC,IAAKL,KAAmBC,IAASnB,EAAK,CAAC,MAAM,OAAO,SAASmB,EAAO,YAAY,OAAOD,IAAkB,CAAE,GAAG,IAAKE,KAAqBC,IAAWJ,EAAO,CAAC,MAAM,OAAO,SAASI,EAAS,YAAY,OAAOD,IAAoB,CAAA,GAAK,IAAKE,KAAoBC,IAAUtB,EAAM,CAAC,MAAM,OAAO,SAASsB,EAAQ,YAAY,OAAOD,IAAmB,EAAG,EAAE,IAAI,CAAA5B,MAC5VA,EAAO,eAAgB,CAC/B,EAAE,KAAM;AAAA,IACV,GAAE/B,EAAeM,EAAM,SAASqB,GAAO,gBAAgB,CAAC;AAAA,EAC7D;AACA;AACA,SAASiB,EAAkBR,GAAYyB,GAAgBvD,GAAOwD,GAAc;AAC1E,MAAIC,GAAuBC;AAO3B,MAAIC,IAAW;AACf,QAAMC,IAAe,SAAUC,GAASrD,GAAO;AAC7C,IAAIA,MAAU,WACZA,IAAQ,IAEVmD,IAAW,KAAK,IAAIA,GAAUnD,CAAK,GACnCqD,EAAQ,OAAO,CAAAxG,MAAUA,EAAO,cAAc,EAAE,QAAQ,CAAAA,MAAU;AAChE,UAAI4D;AACJ,OAAKA,IAAkB5D,EAAO,YAAY,QAAQ4D,EAAgB,UAChE2C,EAAavG,EAAO,SAASmD,IAAQ,CAAC;AAAA,IAEzC,GAAE,CAAC;AAAA,EACL;AACD,EAAAoD,EAAa9B,CAAU;AACvB,MAAIY,IAAe,CAAE;AACrB,QAAMoB,IAAoB,CAACC,GAAgBvD,MAAU;AAEnD,UAAMmC,IAAc;AAAA,MAClB,OAAAnC;AAAA,MACA,IAAI,CAACgD,GAAc,GAAGhD,CAAK,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACvD,SAAS,CAAA;AAAA,IACV,GAGKwD,IAAuB,CAAE;AAG/B,IAAAD,EAAe,QAAQ,CAAAE,MAAiB;AAGtC,YAAMC,IAA4B,CAAC,GAAGF,CAAoB,EAAE,QAAO,EAAG,CAAC,GACjEG,IAAeF,EAAc,OAAO,UAAUtB,EAAY;AAChE,UAAItF,GACA+G,IAAgB;AASpB,UARID,KAAgBF,EAAc,OAAO,SAEvC5G,IAAS4G,EAAc,OAAO,UAG9B5G,IAAS4G,EAAc,QACvBG,IAAgB,KAEdF,MAA8BA,KAA6B,OAAO,SAASA,EAA0B,YAAY7G;AAEnH,QAAA6G,EAA0B,WAAW,KAAKD,CAAa;AAAA,WAClD;AAEL,cAAMxC,IAASH,GAAatB,GAAO3C,GAAQ;AAAA,UACzC,IAAI,CAACmG,GAAchD,GAAOnD,EAAO,IAAI4G,KAAiB,OAAO,SAASA,EAAc,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,UAChH,eAAAG;AAAA,UACA,eAAeA,IAAgB,GAAGJ,EAAqB,OAAO,CAAAlG,MAAKA,EAAE,WAAWT,CAAM,EAAE,MAAM,KAAK;AAAA,UACnG,OAAAmD;AAAA,UACA,OAAOwD,EAAqB;AAAA,QACtC,CAAS;AAGD,QAAAvC,EAAO,WAAW,KAAKwC,CAAa,GAGpCD,EAAqB,KAAKvC,CAAM;AAAA,MACxC;AACM,MAAAkB,EAAY,QAAQ,KAAKsB,CAAa,GACtCA,EAAc,cAActB;AAAA,IAClC,CAAK,GACDD,EAAa,KAAKC,CAAW,GACzBnC,IAAQ,KACVsD,EAAkBE,GAAsBxD,IAAQ,CAAC;AAAA,EAEpD,GACK6D,IAAgBd,EAAe,IAAI,CAAClG,GAAQ6B,MAAUoC,GAAatB,GAAO3C,GAAQ;AAAA,IACtF,OAAOsG;AAAA,IACP,OAAAzE;AAAA,EACJ,CAAG,CAAC;AACF,EAAA4E,EAAkBO,GAAeV,IAAW,CAAC,GAC7CjB,EAAa,QAAS;AAMtB,QAAM4B,IAAyB,CAAAC,MACLA,EAAQ,OAAO,CAAA9C,MAAUA,EAAO,OAAO,cAAc,EACtD,IAAI,CAAAA,MAAU;AACnC,QAAI+C,IAAU,GACVC,IAAU,GACVC,IAAgB,CAAC,CAAC;AACtB,IAAIjD,EAAO,cAAcA,EAAO,WAAW,UACzCiD,IAAgB,CAAE,GAClBJ,EAAuB7C,EAAO,UAAU,EAAE,QAAQ,CAAAf,MAAQ;AACxD,UAAI;AAAA,QACF,SAASiE;AAAA,QACT,SAASC;AAAA,MACrB,IAAclE;AACJ,MAAA8D,KAAWG,GACXD,EAAc,KAAKE,CAAY;AAAA,IACzC,CAAS,KAEDJ,IAAU;AAEZ,UAAMK,IAAkB,KAAK,IAAI,GAAGH,CAAa;AACjD,WAAAD,IAAUA,IAAUI,GACpBpD,EAAO,UAAU+C,GACjB/C,EAAO,UAAUgD,GACV;AAAA,MACL,SAAAD;AAAA,MACA,SAAAC;AAAA,IACD;AAAA,EACP,CAAK;AAEH,SAAAH,GAAwBb,KAAyBC,IAAiBhB,EAAa,CAAC,MAAM,OAAO,SAASgB,EAAe,YAAY,OAAOD,IAAwB,CAAA,CAAE,GAC3Jf;AACT;AAEA,MAAMoC,KAAY,CAAC9E,GAAO/F,GAAI8C,GAAUP,GAAUgE,GAAOuE,GAASC,MAAa;AAC7E,MAAI5I,IAAM;AAAA,IACR,IAAAnC;AAAA,IACA,OAAOuC;AAAA,IACP,UAAAO;AAAA,IACA,OAAAyD;AAAA,IACA,UAAAwE;AAAA,IACA,cAAc,CAAE;AAAA,IAChB,oBAAoB,CAAE;AAAA,IACtB,UAAU,CAAA/E,MAAY;AACpB,UAAI7D,EAAI,aAAa,eAAe6D,CAAQ;AAC1C,eAAO7D,EAAI,aAAa6D,CAAQ;AAElC,YAAM5C,IAAS2C,EAAM,UAAUC,CAAQ;AACvC,UAAM5C,KAAU,QAAQA,EAAO;AAG/B,eAAAjB,EAAI,aAAa6D,CAAQ,IAAI5C,EAAO,WAAWjB,EAAI,UAAUI,CAAQ,GAC9DJ,EAAI,aAAa6D,CAAQ;AAAA,IACjC;AAAA,IACD,iBAAiB,CAAAA,MAAY;AAC3B,UAAI7D,EAAI,mBAAmB,eAAe6D,CAAQ;AAChD,eAAO7D,EAAI,mBAAmB6D,CAAQ;AAExC,YAAM5C,IAAS2C,EAAM,UAAUC,CAAQ;AACvC,UAAM5C,KAAU,QAAQA,EAAO;AAG/B,eAAKA,EAAO,UAAU,mBAItBjB,EAAI,mBAAmB6D,CAAQ,IAAI5C,EAAO,UAAU,gBAAgBjB,EAAI,UAAUI,CAAQ,GACnFJ,EAAI,mBAAmB6D,CAAQ,MAJpC7D,EAAI,mBAAmB6D,CAAQ,IAAI,CAAC7D,EAAI,SAAS6D,CAAQ,CAAC,GACnD7D,EAAI,mBAAmB6D,CAAQ;AAAA,IAIzC;AAAA,IACD,aAAa,CAAAA,MAAY;AACvB,UAAIgF;AACJ,cAAQA,IAAgB7I,EAAI,SAAS6D,CAAQ,MAAM,OAAOgF,IAAgBjF,EAAM,QAAQ;AAAA,IACzF;AAAA,IACD,SAAqC,CAAE;AAAA,IACvC,aAAa,MAAM/B,GAAU7B,EAAI,SAAS,CAAA0B,MAAKA,EAAE,OAAO;AAAA,IACxD,cAAc,MAAM1B,EAAI,WAAW4D,EAAM,OAAO5D,EAAI,UAAU,EAAI,IAAI;AAAA,IACtE,eAAe,MAAM;AACnB,UAAI8I,IAAa,CAAE,GACfC,IAAa/I;AACjB,iBAAa;AACX,cAAMgJ,IAAYD,EAAW,aAAc;AAC3C,YAAI,CAACC,EAAW;AAChB,QAAAF,EAAW,KAAKE,CAAS,GACzBD,IAAaC;AAAA,MACrB;AACM,aAAOF,EAAW,QAAS;AAAA,IAC5B;AAAA,IACD,aAAa1G,EAAK,MAAM,CAACwB,EAAM,kBAAiB,CAAE,GAAG,CAAAoB,MAC5CA,EAAY,IAAI,CAAA/D,MACd0C,GAAWC,GAAO5D,GAAKiB,GAAQA,EAAO,EAAE,CAChD,GACAqC,EAAeM,EAAM,SAAS,aAAa,aAAa,CAAC;AAAA,IAC5D,wBAAwBxB,EAAK,MAAM,CAACpC,EAAI,YAAW,CAAE,GAAG,CAAAiJ,MAC/CA,EAAS,OAAO,CAACC,GAAKlF,OAC3BkF,EAAIlF,EAAK,OAAO,EAAE,IAAIA,GACfkF,IACN,EAAE,GACJ5F,EAAeM,EAAM,SAAS,aAAa,uBAAuB,CAAC;AAAA,EACvE;AACD,WAASuF,IAAI,GAAGA,IAAIvF,EAAM,UAAU,QAAQuF,KAAK;AAC/C,UAAMlF,IAAUL,EAAM,UAAUuF,CAAC;AACjC,IAAAlF,KAAW,QAAQA,EAAQ,aAAa,QAAQA,EAAQ,UAAUjE,GAAK4D,CAAK;AAAA,EAChF;AACE,SAAO5D;AACT,GAIMoJ,KAAiB;AAAA,EACrB,cAAc,CAACnI,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,sBAAsB2C,EAAM,QAAQ,sBAAsBA,EAAM,QAAQ,mBAAmBA,GAAO3C,EAAO,EAAE,GAClHA,EAAO,qBAAqB,MACrBA,EAAO,sBAGLA,EAAO,oBAAqB,IAF1B2C,EAAM,uBAAwB,GAIzC3C,EAAO,0BAA0B2C,EAAM,QAAQ,0BAA0BA,EAAM,QAAQ,uBAAuBA,GAAO3C,EAAO,EAAE,GAC9HA,EAAO,yBAAyB,MACzBA,EAAO,0BAGLA,EAAO,wBAAyB,IAF9B,oBAAI,IAAK,GAIpBA,EAAO,0BAA0B2C,EAAM,QAAQ,0BAA0BA,EAAM,QAAQ,uBAAuBA,GAAO3C,EAAO,EAAE,GAC9HA,EAAO,yBAAyB,MAAM;AACpC,UAAKA,EAAO;AAGZ,eAAOA,EAAO,wBAAyB;AAAA,IACxC;AAAA,EACL;AACA,GAEMoI,KAAiB,CAACrJ,GAAK6D,GAAUyF,MAAgB;AACrD,MAAIC,GAAuBV;AAC3B,QAAMW,IAASF,KAAe,SAASC,IAAwBD,EAAY,SAAQ,MAAO,OAAO,SAASC,EAAsB,YAAa;AAC7I,SAAO,GAAS,GAAAV,IAAgB7I,EAAI,SAAS6D,CAAQ,MAAM,SAASgF,IAAgBA,EAAc,eAAe,SAASA,IAAgBA,EAAc,YAAa,MAAK,SAAgBA,EAAc,SAASW,CAAM;AACzN;AACAH,GAAe,aAAa,CAAAzH,MAAO6H,EAAW7H,CAAG;AACjD,MAAM8H,KAA0B,CAAC1J,GAAK6D,GAAUyF,MAAgB;AAC9D,MAAIK;AACJ,SAAO,GAAS,GAAAA,IAAiB3J,EAAI,SAAS6D,CAAQ,MAAM,SAAS8F,IAAiBA,EAAe,SAAQ,MAAO,SAAgBA,EAAe,SAASL,CAAW;AACzK;AACAI,GAAwB,aAAa,CAAA9H,MAAO6H,EAAW7H,CAAG;AAC1D,MAAMgI,KAAe,CAAC5J,GAAK6D,GAAUyF,MAAgB;AACnD,MAAIO;AACJ,WAASA,IAAiB7J,EAAI,SAAS6D,CAAQ,MAAM,SAASgG,IAAiBA,EAAe,SAAU,MAAK,OAAO,SAASA,EAAe,YAAa,QAAOP,KAAe,OAAO,SAASA,EAAY;AAC7M;AACAM,GAAa,aAAa,CAAAhI,MAAO6H,EAAW7H,CAAG;AAC/C,MAAMkI,KAAc,CAAC9J,GAAK6D,GAAUyF,MAAgB;AAClD,MAAIS;AACJ,UAAQA,IAAiB/J,EAAI,SAAS6D,CAAQ,MAAM,OAAO,SAASkG,EAAe,SAAST,CAAW;AACzG;AACAQ,GAAY,aAAa,CAAAlI,MAAO6H,EAAW7H,CAAG;AAC9C,MAAMoI,KAAiB,CAAChK,GAAK6D,GAAUyF,MAC9B,CAACA,EAAY,KAAK,CAAA1H,MAAO;AAC9B,MAAIqI;AACJ,SAAO,GAAGA,IAAiBjK,EAAI,SAAS6D,CAAQ,MAAM,QAAQoG,EAAe,SAASrI,CAAG;AAC7F,CAAG;AAEHoI,GAAe,aAAa,CAAApI,MAAO6H,EAAW7H,CAAG,KAAK,EAAEA,KAAO,QAAQA,EAAI;AAC3E,MAAMsI,KAAkB,CAAClK,GAAK6D,GAAUyF,MAC/BA,EAAY,KAAK,CAAA1H,MAAO;AAC7B,MAAIuI;AACJ,UAAQA,IAAiBnK,EAAI,SAAS6D,CAAQ,MAAM,OAAO,SAASsG,EAAe,SAASvI,CAAG;AACnG,CAAG;AAEHsI,GAAgB,aAAa,CAAAtI,MAAO6H,EAAW7H,CAAG,KAAK,EAAEA,KAAO,QAAQA,EAAI;AAC5E,MAAMwI,KAAS,CAACpK,GAAK6D,GAAUyF,MACtBtJ,EAAI,SAAS6D,CAAQ,MAAMyF;AAEpCc,GAAO,aAAa,CAAAxI,MAAO6H,EAAW7H,CAAG;AACzC,MAAMyI,KAAa,CAACrK,GAAK6D,GAAUyF,MAC1BtJ,EAAI,SAAS6D,CAAQ,KAAKyF;AAEnCe,GAAW,aAAa,CAAAzI,MAAO6H,EAAW7H,CAAG;AAC7C,MAAM0I,KAAgB,CAACtK,GAAK6D,GAAUyF,MAAgB;AACpD,MAAI,CAACiB,GAAKC,CAAG,IAAIlB;AACjB,QAAMmB,IAAWzK,EAAI,SAAS6D,CAAQ;AACtC,SAAO4G,KAAYF,KAAOE,KAAYD;AACxC;AACAF,GAAc,qBAAqB,CAAA1I,MAAO;AACxC,MAAI,CAAC8I,GAAWC,CAAS,IAAI/I,GACzBgJ,IAAY,OAAOF,KAAc,WAAW,WAAWA,CAAS,IAAIA,GACpEG,IAAY,OAAOF,KAAc,WAAW,WAAWA,CAAS,IAAIA,GACpEJ,IAAMG,MAAc,QAAQ,OAAO,MAAME,CAAS,IAAI,SAAYA,GAClEJ,IAAMG,MAAc,QAAQ,OAAO,MAAME,CAAS,IAAI,QAAWA;AACrE,MAAIN,IAAMC,GAAK;AACb,UAAMM,IAAOP;AACb,IAAAA,IAAMC,GACNA,IAAMM;AAAA,EACV;AACE,SAAO,CAACP,GAAKC,CAAG;AAClB;AACAF,GAAc,aAAa,CAAA1I,MAAO6H,EAAW7H,CAAG,KAAK6H,EAAW7H,EAAI,CAAC,CAAC,KAAK6H,EAAW7H,EAAI,CAAC,CAAC;AAI5F,MAAMmJ,IAAY;AAAA,EAChB,gBAAA1B;AAAA,EACA,yBAAAK;AAAA,EACA,cAAAE;AAAA,EACA,aAAAE;AAAA,EACA,gBAAAE;AAAA,EACA,iBAAAE;AAAA,EACA,QAAAE;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AACF;AAGA,SAASb,EAAW7H,GAAK;AACvB,SAA4BA,KAAQ,QAAQA,MAAQ;AACtD;AAIA,MAAMoJ,KAAkB;AAAA,EACtB,qBAAqB,OACZ;AAAA,IACL,UAAU;AAAA,EACX;AAAA,EAEH,iBAAiB,CAAAC,OACR;AAAA,IACL,eAAe,CAAE;AAAA,IACjB,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,uBAAuBvC,EAAiB,iBAAiBuC,CAAK;AAAA,IAC9D,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,EACxB;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,kBAAkB,MAAM;AAC7B,YAAMiK,IAAWtH,EAAM,gBAAe,EAAG,SAAS,CAAC,GAC7CvI,IAAQ6P,KAAY,OAAO,SAASA,EAAS,SAASjK,EAAO,EAAE;AACrE,aAAI,OAAO5F,KAAU,WACZ0P,EAAU,iBAEf,OAAO1P,KAAU,WACZ0P,EAAU,gBAEf,OAAO1P,KAAU,aAGjBA,MAAU,QAAQ,OAAOA,KAAU,WAC9B0P,EAAU,SAEf,MAAM,QAAQ1P,CAAK,IACd0P,EAAU,cAEZA,EAAU;AAAA,IAClB,GACD9J,EAAO,cAAc,MAAM;AACzB,UAAIkK,GAAuBC;AAC3B,aAAO3J,EAAWR,EAAO,UAAU,QAAQ,IAAIA,EAAO,UAAU,WAAWA,EAAO,UAAU,aAAa,SAASA,EAAO,gBAAiB;AAAA;AAAA,SACzIkK,KAAyBC,IAAyBxH,EAAM,QAAQ,cAAc,OAAO,SAASwH,EAAuBnK,EAAO,UAAU,QAAQ,MAAM,OAAOkK,IAAwBJ,EAAU9J,EAAO,UAAU,QAAQ;AAAA;AAAA,IACxN,GACDA,EAAO,eAAe,MAAM;AAC1B,UAAIoK,GAAuBC,GAAuBC;AAClD,eAASF,IAAwBpK,EAAO,UAAU,uBAAuB,OAAOoK,IAAwB,SAAWC,IAAwB1H,EAAM,QAAQ,wBAAwB,OAAO0H,IAAwB,SAAWC,IAAyB3H,EAAM,QAAQ,kBAAkB,OAAO2H,IAAyB,OAAS,CAAC,CAACtK,EAAO;AAAA,IACvU,GACDA,EAAO,gBAAgB,MAAMA,EAAO,eAAgB,IAAG,IACvDA,EAAO,iBAAiB,MAAM;AAC5B,UAAIuK;AACJ,cAAQA,IAAwB5H,EAAM,SAAQ,EAAG,kBAAkB,SAAS4H,IAAwBA,EAAsB,KAAK,CAAA9J,MAAKA,EAAE,OAAOT,EAAO,EAAE,MAAM,OAAO,SAASuK,EAAsB;AAAA,IACnM,GACDvK,EAAO,iBAAiB,MAAM;AAC5B,UAAIwK,GAAwBC;AAC5B,cAAQD,KAA0BC,IAAyB9H,EAAM,WAAW,kBAAkB,OAAO,SAAS8H,EAAuB,UAAU,CAAAhK,MAAKA,EAAE,OAAOT,EAAO,EAAE,MAAM,OAAOwK,IAAyB;AAAA,IAC7M,GACDxK,EAAO,iBAAiB,CAAA5F,MAAS;AAC/B,MAAAuI,EAAM,iBAAiB,CAAApC,MAAO;AAC5B,cAAMmK,IAAW1K,EAAO,YAAa,GAC/B2K,IAAiBpK,KAAO,OAAO,SAASA,EAAI,KAAK,OAAK,EAAE,OAAOP,EAAO,EAAE,GACxE4K,IAAY3K,EAAiB7F,GAAOuQ,IAAiBA,EAAe,QAAQ,MAAS;AAG3F,YAAIE,GAAuBH,GAAUE,GAAW5K,CAAM,GAAG;AACvD,cAAI8K;AACJ,kBAAQA,IAAcvK,KAAO,OAAO,SAASA,EAAI,OAAO,OAAK,EAAE,OAAOP,EAAO,EAAE,MAAM,OAAO8K,IAAc,CAAE;AAAA,QACtH;AACQ,cAAMC,IAAe;AAAA,UACnB,IAAI/K,EAAO;AAAA,UACX,OAAO4K;AAAA,QACR;AACD,YAAID,GAAgB;AAClB,cAAIK;AACJ,kBAAQA,IAAWzK,KAAO,OAAO,SAASA,EAAI,IAAI,OAC5C,EAAE,OAAOP,EAAO,KACX+K,IAEF,CACR,MAAM,OAAOC,IAAW,CAAE;AAAA,QACrC;AACQ,eAAIzK,KAAO,QAAQA,EAAI,SACd,CAAC,GAAGA,GAAKwK,CAAY,IAEvB,CAACA,CAAY;AAAA,MAC5B,CAAO;AAAA,IACF;AAAA,EACF;AAAA,EACD,WAAW,CAAChM,GAAKkM,MAAW;AAC1B,IAAAlM,EAAI,gBAAgB,CAAE,GACtBA,EAAI,oBAAoB,CAAE;AAAA,EAC3B;AAAA,EACD,aAAa,CAAA4D,MAAS;AACpB,IAAAA,EAAM,mBAAmB,CAAAzC,MAAW;AAClC,YAAM6D,IAAcpB,EAAM,kBAAmB,GACvCuI,IAAW,CAAA3K,MAAO;AACtB,YAAI4K;AACJ,gBAAQA,IAAoBlL,EAAiBC,GAASK,CAAG,MAAM,OAAO,SAAS4K,EAAkB,OAAO,CAAAC,MAAU;AAChH,gBAAMpL,IAAS+D,EAAY,KAAK,CAAAtD,MAAKA,EAAE,OAAO2K,EAAO,EAAE;AACvD,cAAIpL,GAAQ;AACV,kBAAM0K,IAAW1K,EAAO,YAAa;AACrC,gBAAI6K,GAAuBH,GAAUU,EAAO,OAAOpL,CAAM;AACvD,qBAAO;AAAA,UAErB;AACU,iBAAO;AAAA,QACjB,CAAS;AAAA,MACF;AACD,MAAA2C,EAAM,QAAQ,yBAAyB,QAAQA,EAAM,QAAQ,sBAAsBuI,CAAQ;AAAA,IAC5F,GACDvI,EAAM,qBAAqB,CAAA0I,MAAgB;AACzC,UAAIC,GAAuBC;AAC3B,MAAA5I,EAAM,iBAAiB0I,IAAe,CAAE,KAAIC,KAAyBC,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,kBAAkB,OAAOD,IAAwB,EAAE;AAAA,IAC1M,GACD3I,EAAM,yBAAyB,MAAMA,EAAM,gBAAiB,GAC5DA,EAAM,sBAAsB,OACtB,CAACA,EAAM,wBAAwBA,EAAM,QAAQ,wBAC/CA,EAAM,uBAAuBA,EAAM,QAAQ,oBAAoBA,CAAK,IAElEA,EAAM,QAAQ,mBAAmB,CAACA,EAAM,uBACnCA,EAAM,uBAAwB,IAEhCA,EAAM,qBAAsB;AAAA,EAEzC;AACA;AACA,SAASkI,GAAuBH,GAAUtQ,GAAO4F,GAAQ;AACvD,UAAQ0K,KAAYA,EAAS,aAAaA,EAAS,WAAWtQ,GAAO4F,CAAM,IAAI,OAAU,OAAO5F,IAAU,OAAe,OAAOA,KAAU,YAAY,CAACA;AACzJ;AAEA,MAAMoR,KAAM,CAAC5I,GAAU6I,GAAWC,MAGzBA,EAAU,OAAO,CAACF,GAAKG,MAAS;AACrC,QAAMC,IAAYD,EAAK,SAAS/I,CAAQ;AACxC,SAAO4I,KAAO,OAAOI,KAAc,WAAWA,IAAY;AAC3D,GAAE,CAAC,GAEAtC,KAAM,CAAC1G,GAAU6I,GAAWC,MAAc;AAC9C,MAAIpC;AACJ,SAAAoC,EAAU,QAAQ,CAAA3M,MAAO;AACvB,UAAM3E,IAAQ2E,EAAI,SAAS6D,CAAQ;AACnC,IAAIxI,KAAS,SAASkP,IAAMlP,KAASkP,MAAQ,UAAalP,KAASA,OACjEkP,IAAMlP;AAAA,EAEZ,CAAG,GACMkP;AACT,GACMC,KAAM,CAAC3G,GAAU6I,GAAWC,MAAc;AAC9C,MAAInC;AACJ,SAAAmC,EAAU,QAAQ,CAAA3M,MAAO;AACvB,UAAM3E,IAAQ2E,EAAI,SAAS6D,CAAQ;AACnC,IAAIxI,KAAS,SAASmP,IAAMnP,KAASmP,MAAQ,UAAanP,KAASA,OACjEmP,IAAMnP;AAAA,EAEZ,CAAG,GACMmP;AACT,GACMsC,KAAS,CAACjJ,GAAU6I,GAAWC,MAAc;AACjD,MAAIpC,GACAC;AACJ,SAAAmC,EAAU,QAAQ,CAAA3M,MAAO;AACvB,UAAM3E,IAAQ2E,EAAI,SAAS6D,CAAQ;AACnC,IAAIxI,KAAS,SACPkP,MAAQ,SACNlP,KAASA,MAAOkP,IAAMC,IAAMnP,MAE5BkP,IAAMlP,MAAOkP,IAAMlP,IACnBmP,IAAMnP,MAAOmP,IAAMnP;AAAA,EAG/B,CAAG,GACM,CAACkP,GAAKC,CAAG;AAClB,GACMuC,KAAO,CAAClJ,GAAUmJ,MAAa;AACnC,MAAIC,IAAQ,GACRR,IAAM;AAOV,MANAO,EAAS,QAAQ,CAAAhN,MAAO;AACtB,QAAI3E,IAAQ2E,EAAI,SAAS6D,CAAQ;AACjC,IAAIxI,KAAS,SAASA,IAAQ,CAACA,MAAUA,MACvC,EAAE4R,GAAOR,KAAOpR;AAAA,EAEtB,CAAG,GACG4R,EAAO,QAAOR,IAAMQ;AAE1B,GACMC,KAAS,CAACrJ,GAAUmJ,MAAa;AACrC,MAAI,CAACA,EAAS;AACZ;AAEF,QAAMG,IAASH,EAAS,IAAI,CAAAhN,MAAOA,EAAI,SAAS6D,CAAQ,CAAC;AACzD,MAAI,CAAClC,GAAcwL,CAAM;AACvB;AAEF,MAAIA,EAAO,WAAW;AACpB,WAAOA,EAAO,CAAC;AAEjB,QAAMC,IAAM,KAAK,MAAMD,EAAO,SAAS,CAAC,GAClCE,IAAOF,EAAO,KAAK,CAACG,GAAGC,MAAMD,IAAIC,CAAC;AACxC,SAAOJ,EAAO,SAAS,MAAM,IAAIE,EAAKD,CAAG,KAAKC,EAAKD,IAAM,CAAC,IAAIC,EAAKD,CAAG,KAAK;AAC7E,GACMI,KAAS,CAAC3J,GAAUmJ,MACjB,MAAM,KAAK,IAAI,IAAIA,EAAS,IAAI,CAAAtL,MAAKA,EAAE,SAASmC,CAAQ,CAAC,CAAC,EAAE,OAAM,CAAE,GAEvE4J,KAAc,CAAC5J,GAAUmJ,MACtB,IAAI,IAAIA,EAAS,IAAI,CAAAtL,MAAKA,EAAE,SAASmC,CAAQ,CAAC,CAAC,EAAE,MAEpDoJ,KAAQ,CAACS,GAAWV,MACjBA,EAAS,QAEZW,IAAiB;AAAA,EACrB,KAAAlB;AAAA,EACA,KAAAlC;AAAA,EACA,KAAAC;AAAA,EACA,QAAAsC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAG;AAAA,EACA,QAAAM;AAAA,EACA,aAAAC;AAAA,EACA,OAAAR;AACF,GAIMW,KAAiB;AAAA,EACrB,qBAAqB,OACZ;AAAA,IACL,gBAAgB,CAAAzU,MAAS;AACvB,UAAI0U,GAAWC;AACf,cAAQD,KAAaC,IAAkB3U,EAAM,SAAU,MAAK,QAAQ2U,EAAgB,YAAY,OAAO,SAASA,EAAgB,SAAQ,MAAO,OAAOD,IAAY;AAAA,IACnK;AAAA,IACD,eAAe;AAAA,EAChB;AAAA,EAEH,iBAAiB,CAAA5C,OACR;AAAA,IACL,UAAU,CAAE;AAAA,IACZ,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,kBAAkBvC,EAAiB,YAAYuC,CAAK;AAAA,IACpD,mBAAmB;AAAA,EACpB;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,iBAAiB,MAAM;AAC5B,MAAA2C,EAAM,YAAY,CAAApC,MAEZA,KAAO,QAAQA,EAAI,SAASP,EAAO,EAAE,IAChCO,EAAI,OAAO,CAAAE,MAAKA,MAAMT,EAAO,EAAE,IAEjC,CAAC,GAAIO,KAAoB,IAAKP,EAAO,EAAE,CAC/C;AAAA,IACF,GACDA,EAAO,cAAc,MAAM;AACzB,UAAIoK,GAAuBC;AAC3B,eAASD,IAAwBpK,EAAO,UAAU,mBAAmB,OAAOoK,IAAwB,SAAWC,IAAwB1H,EAAM,QAAQ,mBAAmB,OAAO0H,IAAwB,QAAU,CAAC,CAACrK,EAAO,cAAc,CAAC,CAACA,EAAO,UAAU;AAAA,IAC5P,GACDA,EAAO,eAAe,MAAM;AAC1B,UAAI8M;AACJ,cAAQA,IAAwBnK,EAAM,SAAU,EAAC,aAAa,OAAO,SAASmK,EAAsB,SAAS9M,EAAO,EAAE;AAAA,IACvH,GACDA,EAAO,kBAAkB,MAAM;AAC7B,UAAI+M;AACJ,cAAQA,IAAyBpK,EAAM,SAAU,EAAC,aAAa,OAAO,SAASoK,EAAuB,QAAQ/M,EAAO,EAAE;AAAA,IACxH,GACDA,EAAO,2BAA2B,MAAM;AACtC,YAAMgN,IAAWhN,EAAO,YAAa;AACrC,aAAO,MAAM;AACX,QAAKgN,KACLhN,EAAO,eAAgB;AAAA,MACxB;AAAA,IACF,GACDA,EAAO,uBAAuB,MAAM;AAClC,YAAMiK,IAAWtH,EAAM,gBAAe,EAAG,SAAS,CAAC,GAC7CvI,IAAQ6P,KAAY,OAAO,SAASA,EAAS,SAASjK,EAAO,EAAE;AACrE,UAAI,OAAO5F,KAAU;AACnB,eAAOsS,EAAe;AAExB,UAAI,OAAO,UAAU,SAAS,KAAKtS,CAAK,MAAM;AAC5C,eAAOsS,EAAe;AAAA,IAEzB,GACD1M,EAAO,mBAAmB,MAAM;AAC9B,UAAIiN,GAAuBC;AAC3B,UAAI,CAAClN;AACH,cAAM,IAAI,MAAO;AAEnB,aAAOQ,EAAWR,EAAO,UAAU,aAAa,IAAIA,EAAO,UAAU,gBAAgBA,EAAO,UAAU,kBAAkB,SAASA,EAAO,qBAAsB,KAAIiN,KAAyBC,IAAyBvK,EAAM,QAAQ,mBAAmB,OAAO,SAASuK,EAAuBlN,EAAO,UAAU,aAAa,MAAM,OAAOiN,IAAwBP,EAAe1M,EAAO,UAAU,aAAa;AAAA,IAC7Y;AAAA,EACF;AAAA,EACD,aAAa,CAAA2C,MAAS;AACpB,IAAAA,EAAM,cAAc,CAAAzC,MAAWyC,EAAM,QAAQ,oBAAoB,OAAO,SAASA,EAAM,QAAQ,iBAAiBzC,CAAO,GACvHyC,EAAM,gBAAgB,CAAA0I,MAAgB;AACpC,UAAI8B,GAAuB5B;AAC3B,MAAA5I,EAAM,YAAY0I,IAAe,CAAE,KAAI8B,KAAyB5B,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,aAAa,OAAO4B,IAAwB,EAAE;AAAA,IAChM,GACDxK,EAAM,wBAAwB,MAAMA,EAAM,oBAAqB,GAC/DA,EAAM,qBAAqB,OACrB,CAACA,EAAM,uBAAuBA,EAAM,QAAQ,uBAC9CA,EAAM,sBAAsBA,EAAM,QAAQ,mBAAmBA,CAAK,IAEhEA,EAAM,QAAQ,kBAAkB,CAACA,EAAM,sBAClCA,EAAM,sBAAuB,IAE/BA,EAAM,oBAAqB;AAAA,EAErC;AAAA,EACD,WAAW,CAAC5D,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,eAAe,MAAM,CAAC,CAACA,EAAI,kBAC/BA,EAAI,mBAAmB,CAAA6D,MAAY;AACjC,UAAI7D,EAAI,qBAAqB,eAAe6D,CAAQ;AAClD,eAAO7D,EAAI,qBAAqB6D,CAAQ;AAE1C,YAAM5C,IAAS2C,EAAM,UAAUC,CAAQ;AACvC,aAAM5C,KAAU,QAAQA,EAAO,UAAU,oBAGzCjB,EAAI,qBAAqB6D,CAAQ,IAAI5C,EAAO,UAAU,iBAAiBjB,EAAI,QAAQ,GAC5EA,EAAI,qBAAqB6D,CAAQ,KAH/B7D,EAAI,SAAS6D,CAAQ;AAAA,IAI/B,GACD7D,EAAI,uBAAuB,CAAE;AAAA,EAC9B;AAAA,EACD,YAAY,CAACgE,GAAM/C,GAAQjB,GAAK4D,MAAU;AACxC,IAAAI,EAAK,eAAe,MAAM/C,EAAO,aAAc,KAAIA,EAAO,OAAOjB,EAAI,kBACrEgE,EAAK,mBAAmB,MAAM,CAACA,EAAK,aAAc,KAAI/C,EAAO,aAAc,GAC3E+C,EAAK,kBAAkB,MAAM;AAC3B,UAAIqK;AACJ,aAAO,CAACrK,EAAK,aAAc,KAAI,CAACA,EAAK,iBAAkB,KAAI,CAAC,GAAGqK,IAAerO,EAAI,YAAY,QAAQqO,EAAa;AAAA,IACpH;AAAA,EACL;AACA;AACA,SAASvJ,GAAaE,GAAasJ,GAAUC,GAAmB;AAC9D,MAAI,EAAED,KAAY,QAAQA,EAAS,WAAW,CAACC;AAC7C,WAAOvJ;AAET,QAAMwJ,IAAqBxJ,EAAY,OAAO,CAAAyJ,MAAO,CAACH,EAAS,SAASG,EAAI,EAAE,CAAC;AAC/E,SAAIF,MAAsB,WACjBC,IAGF,CAAC,GADgBF,EAAS,IAAI,CAAAI,MAAK1J,EAAY,KAAK,CAAAyJ,MAAOA,EAAI,OAAOC,CAAC,CAAC,EAAE,OAAO,OAAO,GACnE,GAAGF,CAAkB;AACnD;AAIA,MAAMG,KAAiB;AAAA,EACrB,iBAAiB,CAAA1D,OACR;AAAA,IACL,aAAa,CAAE;AAAA,IACf,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,qBAAqBvC,EAAiB,eAAeuC,CAAK;AAAA,EAC3D;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,WAAWmB,EAAK,CAAAwM,MAAY,CAACC,EAAuBjL,GAAOgL,CAAQ,CAAC,GAAG,CAAAnH,MAAWA,EAAQ,UAAU,CAAA/F,MAAKA,EAAE,OAAOT,EAAO,EAAE,GAAGqC,EAAeM,EAAM,SAAS,gBAAgB,UAAU,CAAC,GAC9L3C,EAAO,mBAAmB,CAAA2N,MAAY;AACpC,UAAIE;AAEJ,eAASA,IADOD,EAAuBjL,GAAOgL,CAAQ,EACzB,CAAC,MAAM,OAAO,SAASE,EAAU,QAAQ7N,EAAO;AAAA,IAC9E,GACDA,EAAO,kBAAkB,CAAA2N,MAAY;AACnC,UAAIG;AACJ,YAAMtH,IAAUoH,EAAuBjL,GAAOgL,CAAQ;AACtD,eAASG,IAAWtH,EAAQA,EAAQ,SAAS,CAAC,MAAM,OAAO,SAASsH,EAAS,QAAQ9N,EAAO;AAAA,IAC7F;AAAA,EACF;AAAA,EACD,aAAa,CAAA2C,MAAS;AACpB,IAAAA,EAAM,iBAAiB,CAAAzC,MAAWyC,EAAM,QAAQ,uBAAuB,OAAO,SAASA,EAAM,QAAQ,oBAAoBzC,CAAO,GAChIyC,EAAM,mBAAmB,CAAA0I,MAAgB;AACvC,UAAIC;AACJ,MAAA3I,EAAM,eAAe0I,IAAe,CAAA,KAAMC,IAAwB3I,EAAM,aAAa,gBAAgB,OAAO2I,IAAwB,CAAA,CAAE;AAAA,IACvI,GACD3I,EAAM,qBAAqBxB,EAAK,MAAM,CAACwB,EAAM,SAAU,EAAC,aAAaA,EAAM,SAAU,EAAC,UAAUA,EAAM,QAAQ,iBAAiB,GAAG,CAACoL,GAAaV,GAAUC,MAAsB,CAAA9G,MAAW;AAGzL,UAAIwH,IAAiB,CAAE;AAGvB,UAAI,EAAED,KAAe,QAAQA,EAAY;AACvC,QAAAC,IAAiBxH;AAAA,WACZ;AACL,cAAMyH,IAAkB,CAAC,GAAGF,CAAW,GAGjCG,IAAc,CAAC,GAAG1H,CAAO;AAK/B,eAAO0H,EAAY,UAAUD,EAAgB,UAAQ;AACnD,gBAAME,IAAiBF,EAAgB,MAAO,GACxCG,IAAaF,EAAY,UAAU,OAAK,EAAE,OAAOC,CAAc;AACrE,UAAIC,IAAa,MACfJ,EAAe,KAAKE,EAAY,OAAOE,GAAY,CAAC,EAAE,CAAC,CAAC;AAAA,QAEpE;AAGQ,QAAAJ,IAAiB,CAAC,GAAGA,GAAgB,GAAGE,CAAW;AAAA,MAC3D;AACM,aAAOrK,GAAamK,GAAgBX,GAAUC,CAAiB;AAAA,IAChE,GAAEjL,EAAeM,EAAM,SAAS,cAAc,oBAAoB,CAAC;AAAA,EACxE;AACA,GAIM0L,IAA+B,OAAO;AAAA,EAC1C,MAAM,CAAE;AAAA,EACR,OAAO,CAAA;AACT,IACMC,KAAgB;AAAA,EACpB,iBAAiB,CAAAtE,OACR;AAAA,IACL,eAAeqE,EAA8B;AAAA,IAC7C,GAAGrE;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,uBAAuBvC,EAAiB,iBAAiBuC,CAAK;AAAA,EAC/D;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,MAAM,CAAA2N,MAAY;AACvB,YAAMY,IAAYvO,EAAO,eAAc,EAAG,IAAI,CAAAS,MAAKA,EAAE,EAAE,EAAE,OAAO,OAAO;AACvE,MAAAkC,EAAM,iBAAiB,CAAApC,MAAO;AAC5B,YAAIiO,GAAYC;AAChB,YAAId,MAAa,SAAS;AACxB,cAAIe,GAAWC;AACf,iBAAO;AAAA,YACL,QAAQD,IAAYnO,KAAO,OAAO,SAASA,EAAI,SAAS,OAAOmO,IAAY,CAAA,GAAI,OAAO,CAAAjO,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE;AAAA,YACxI,OAAO,CAAC,KAAKkO,IAAapO,KAAO,OAAO,SAASA,EAAI,UAAU,OAAOoO,IAAa,CAAE,GAAE,OAAO,CAAAlO,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE,GAAG,GAAG8N,CAAS;AAAA,UAChK;AAAA,QACX;AACQ,YAAIZ,MAAa,QAAQ;AACvB,cAAIiB,GAAYC;AAChB,iBAAO;AAAA,YACL,MAAM,CAAC,KAAKD,IAAarO,KAAO,OAAO,SAASA,EAAI,SAAS,OAAOqO,IAAa,IAAI,OAAO,CAAAnO,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE,GAAG,GAAG8N,CAAS;AAAA,YAC7J,SAASM,IAActO,KAAO,OAAO,SAASA,EAAI,UAAU,OAAOsO,IAAc,IAAI,OAAO,CAAApO,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE;AAAA,UAC/I;AAAA,QACX;AACQ,eAAO;AAAA,UACL,QAAQ+N,IAAajO,KAAO,OAAO,SAASA,EAAI,SAAS,OAAOiO,IAAa,CAAA,GAAI,OAAO,CAAA/N,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE;AAAA,UAC1I,SAASgO,IAAclO,KAAO,OAAO,SAASA,EAAI,UAAU,OAAOkO,IAAc,IAAI,OAAO,CAAAhO,MAAK,EAAE8N,KAAa,QAAQA,EAAU,SAAS9N,CAAC,EAAE;AAAA,QAC/I;AAAA,MACT,CAAO;AAAA,IACF,GACDT,EAAO,YAAY,MACGA,EAAO,eAAgB,EACxB,KAAK,CAAAS,MAAK;AAC3B,UAAIqO,GAAuBzL,GAAMgH;AACjC,eAASyE,IAAwBrO,EAAE,UAAU,kBAAkB,OAAOqO,IAAwB,SAAWzL,KAAQgH,IAAwB1H,EAAM,QAAQ,wBAAwB,OAAO0H,IAAwB1H,EAAM,QAAQ,kBAAkB,OAAOU,IAAO;AAAA,IACpQ,CAAO,GAEHrD,EAAO,cAAc,MAAM;AACzB,YAAM+O,IAAgB/O,EAAO,eAAc,EAAG,IAAI,CAAAS,MAAKA,EAAE,EAAE,GACrD;AAAA,QACJ,MAAAiE;AAAA,QACA,OAAAC;AAAA,MACR,IAAUhC,EAAM,SAAQ,EAAG,eACfqM,IAASD,EAAc,KAAK,CAAAtO,MAAKiE,KAAQ,OAAO,SAASA,EAAK,SAASjE,CAAC,CAAC,GACzEwO,IAAUF,EAAc,KAAK,CAAAtO,MAAKkE,KAAS,OAAO,SAASA,EAAM,SAASlE,CAAC,CAAC;AAClF,aAAOuO,IAAS,SAASC,IAAU,UAAU;AAAA,IAC9C,GACDjP,EAAO,iBAAiB,MAAM;AAC5B,UAAIuK,GAAuBC;AAC3B,YAAMmD,IAAW3N,EAAO,YAAa;AACrC,aAAO2N,KAAYpD,KAAyBC,IAAyB7H,EAAM,SAAQ,EAAG,kBAAkB,SAAS6H,IAAyBA,EAAuBmD,CAAQ,MAAM,OAAO,SAASnD,EAAuB,QAAQxK,EAAO,EAAE,MAAM,OAAOuK,IAAwB,KAAK;AAAA,IAClR;AAAA,EACF;AAAA,EACD,WAAW,CAACxL,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,wBAAwBoC,EAAK,MAAM,CAACpC,EAAI,oBAAqB,GAAE4D,EAAM,WAAW,cAAc,MAAMA,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAACqF,GAAUtD,GAAMC,MAAU;AACxK,YAAMuK,IAAe,CAAC,GAAIxK,KAAsB,IAAK,GAAIC,KAAwB,CAAE,CAAC;AACpF,aAAOqD,EAAS,OAAO,CAAAvH,MAAK,CAACyO,EAAa,SAASzO,EAAE,OAAO,EAAE,CAAC;AAAA,IAChE,GAAE4B,EAAeM,EAAM,SAAS,aAAa,uBAAuB,CAAC,GACtE5D,EAAI,sBAAsBoC,EAAK,MAAM,CAACpC,EAAI,oBAAqB,GAAE4D,EAAM,SAAQ,EAAG,cAAc,IAAI,GAAG,CAACqF,GAAUtD,OACjGA,KAAsB,CAAA,GAAI,IAAI,CAAA9B,MAAYoF,EAAS,KAAK,CAAAjF,MAAQA,EAAK,OAAO,OAAOH,CAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,IAAI,CAAAnC,OAAM;AAAA,MACrI,GAAGA;AAAA,MACH,UAAU;AAAA,IAClB,EAAQ,GAED4B,EAAeM,EAAM,SAAS,aAAa,qBAAqB,CAAC,GACpE5D,EAAI,uBAAuBoC,EAAK,MAAM,CAACpC,EAAI,oBAAqB,GAAE4D,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAACqF,GAAUrD,OACnGA,KAAwB,CAAA,GAAI,IAAI,CAAA/B,MAAYoF,EAAS,KAAK,CAAAjF,MAAQA,EAAK,OAAO,OAAOH,CAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,IAAI,CAAAnC,OAAM;AAAA,MACvI,GAAGA;AAAA,MACH,UAAU;AAAA,IAClB,EAAQ,GAED4B,EAAeM,EAAM,SAAS,aAAa,sBAAsB,CAAC;AAAA,EACtE;AAAA,EACD,aAAa,CAAAA,MAAS;AACpB,IAAAA,EAAM,mBAAmB,CAAAzC,MAAWyC,EAAM,QAAQ,yBAAyB,OAAO,SAASA,EAAM,QAAQ,sBAAsBzC,CAAO,GACtIyC,EAAM,qBAAqB,CAAA0I,MAAgB;AACzC,UAAIC,GAAuBC;AAC3B,aAAO5I,EAAM,iBAAiB0I,IAAegD,EAA4B,KAAM/C,KAAyBC,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,kBAAkB,OAAOD,IAAwB+C,GAA8B;AAAA,IACzQ,GACD1L,EAAM,yBAAyB,CAAAgL,MAAY;AACzC,UAAIwB;AACJ,YAAMC,IAAezM,EAAM,SAAQ,EAAG;AACtC,UAAI,CAACgL,GAAU;AACb,YAAI0B,GAAoBC;AACxB,eAAO,IAAUD,IAAqBD,EAAa,SAAS,QAAgBC,EAAmB,WAAaC,IAAsBF,EAAa,UAAU,QAAgBE,EAAoB;AAAA,MACrM;AACM,aAAO,IAASH,IAAwBC,EAAazB,CAAQ,MAAM,QAAgBwB,EAAsB;AAAA,IAC1G,GACDxM,EAAM,qBAAqBxB,EAAK,MAAM,CAACwB,EAAM,kBAAmB,GAAEA,EAAM,SAAQ,EAAG,cAAc,IAAI,GAAG,CAAC8B,GAAYC,OAC3GA,KAAsB,CAAE,GAAE,IAAI,CAAA9B,MAAY6B,EAAW,KAAK,CAAAzE,MAAUA,EAAO,OAAO4C,CAAQ,CAAC,EAAE,OAAO,OAAO,GAClHP,EAAeM,EAAM,SAAS,gBAAgB,oBAAoB,CAAC,GACtEA,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,kBAAmB,GAAEA,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAAC8B,GAAYE,OAC7GA,KAAwB,CAAE,GAAE,IAAI,CAAA/B,MAAY6B,EAAW,KAAK,CAAAzE,MAAUA,EAAO,OAAO4C,CAAQ,CAAC,EAAE,OAAO,OAAO,GACpHP,EAAeM,EAAM,SAAS,gBAAgB,qBAAqB,CAAC,GACvEA,EAAM,uBAAuBxB,EAAK,MAAM,CAACwB,EAAM,kBAAmB,GAAEA,EAAM,WAAW,cAAc,MAAMA,EAAM,SAAQ,EAAG,cAAc,KAAK,GAAG,CAAC8B,GAAYC,GAAMC,MAAU;AAC3K,YAAMuK,IAAe,CAAC,GAAIxK,KAAsB,IAAK,GAAIC,KAAwB,CAAE,CAAC;AACpF,aAAOF,EAAW,OAAO,CAAAhE,MAAK,CAACyO,EAAa,SAASzO,EAAE,EAAE,CAAC;AAAA,IAC3D,GAAE4B,EAAeM,EAAM,SAAS,gBAAgB,sBAAsB,CAAC;AAAA,EAC5E;AACA;AAEA,SAAS4M,GAAqBC,GAAW;AACvC,SAAOA,MAAc,OAAO,WAAa,MAAc,WAAW;AACpE;AAMA,MAAMC,IAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS,OAAO;AAClB,GACMC,IAAkC,OAAO;AAAA,EAC7C,aAAa;AAAA,EACb,WAAW;AAAA,EACX,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB,CAAA;AACrB,IACMC,KAAe;AAAA,EACnB,qBAAqB,MACZF;AAAA,EAET,iBAAiB,CAAAzF,OACR;AAAA,IACL,cAAc,CAAE;AAAA,IAChB,kBAAkB0F,EAAiC;AAAA,IACnD,GAAG1F;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,kBAAkB;AAAA,IAClB,uBAAuB;AAAA,IACvB,sBAAsBvC,EAAiB,gBAAgBuC,CAAK;AAAA,IAC5D,0BAA0BvC,EAAiB,oBAAoBuC,CAAK;AAAA,EACrE;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,UAAU,MAAM;AACrB,UAAI4P,GAAuBvM,GAAMwM;AACjC,YAAMC,IAAanN,EAAM,SAAU,EAAC,aAAa3C,EAAO,EAAE;AAC1D,aAAO,KAAK,IAAI,KAAK,KAAK4P,IAAwB5P,EAAO,UAAU,YAAY,OAAO4P,IAAwBH,EAAoB,UAAUpM,IAAOyM,KAAkC9P,EAAO,UAAU,SAAS,OAAOqD,IAAOoM,EAAoB,IAAI,IAAII,IAAwB7P,EAAO,UAAU,YAAY,OAAO6P,IAAwBJ,EAAoB,OAAO;AAAA,IACzW,GACDzP,EAAO,WAAWmB,EAAK,CAAAwM,MAAY,CAACA,GAAUC,EAAuBjL,GAAOgL,CAAQ,GAAGhL,EAAM,SAAU,EAAC,YAAY,GAAG,CAACgL,GAAUnH,MAAYA,EAAQ,MAAM,GAAGxG,EAAO,SAAS2N,CAAQ,CAAC,EAAE,OAAO,CAACnC,GAAKxL,MAAWwL,IAAMxL,EAAO,QAAS,GAAE,CAAC,GAAGqC,EAAeM,EAAM,SAAS,gBAAgB,UAAU,CAAC,GACvS3C,EAAO,WAAWmB,EAAK,CAAAwM,MAAY,CAACA,GAAUC,EAAuBjL,GAAOgL,CAAQ,GAAGhL,EAAM,SAAU,EAAC,YAAY,GAAG,CAACgL,GAAUnH,MAAYA,EAAQ,MAAMxG,EAAO,SAAS2N,CAAQ,IAAI,CAAC,EAAE,OAAO,CAACnC,GAAKxL,MAAWwL,IAAMxL,EAAO,QAAS,GAAE,CAAC,GAAGqC,EAAeM,EAAM,SAAS,gBAAgB,UAAU,CAAC,GACxS3C,EAAO,YAAY,MAAM;AACvB,MAAA2C,EAAM,gBAAgB,CAAAoN,MAAS;AAC7B,YAAI;AAAA,UACF,CAAC/P,EAAO,EAAE,GAAGgQ;AAAA,UACb,GAAGC;AAAA,QACb,IAAYF;AACJ,eAAOE;AAAA,MACf,CAAO;AAAA,IACF,GACDjQ,EAAO,eAAe,MAAM;AAC1B,UAAIoK,GAAuBC;AAC3B,eAASD,IAAwBpK,EAAO,UAAU,mBAAmB,OAAOoK,IAAwB,SAAWC,IAAwB1H,EAAM,QAAQ,yBAAyB,OAAO0H,IAAwB;AAAA,IAC9M,GACDrK,EAAO,gBAAgB,MACd2C,EAAM,SAAU,EAAC,iBAAiB,qBAAqB3C,EAAO;AAAA,EAExE;AAAA,EACD,cAAc,CAACoE,GAAQzB,MAAU;AAC/B,IAAAyB,EAAO,UAAU,MAAM;AACrB,UAAIoH,IAAM;AACV,YAAMxK,IAAU,CAAAoD,MAAU;AACxB,YAAIA,EAAO,WAAW;AACpB,UAAAA,EAAO,WAAW,QAAQpD,CAAO;AAAA,aAC5B;AACL,cAAIkP;AACJ,UAAA1E,MAAQ0E,IAAwB9L,EAAO,OAAO,cAAc,OAAO8L,IAAwB;AAAA,QACrG;AAAA,MACO;AACD,aAAAlP,EAAQoD,CAAM,GACPoH;AAAA,IACR,GACDpH,EAAO,WAAW,MAAM;AACtB,UAAIA,EAAO,QAAQ,GAAG;AACpB,cAAM+L,IAAoB/L,EAAO,YAAY,QAAQA,EAAO,QAAQ,CAAC;AACrE,eAAO+L,EAAkB,aAAaA,EAAkB,QAAS;AAAA,MACzE;AACM,aAAO;AAAA,IACR,GACD/L,EAAO,mBAAmB,CAAAgM,MAAoB;AAC5C,YAAMpQ,IAAS2C,EAAM,UAAUyB,EAAO,OAAO,EAAE,GACzCiM,IAAYrQ,KAAU,OAAO,SAASA,EAAO,aAAc;AACjE,aAAO,CAAAsQ,MAAK;AAKV,YAJI,CAACtQ,KAAU,CAACqQ,MAGhBC,EAAE,WAAW,QAAQA,EAAE,QAAS,GAC5BC,EAAkBD,CAAC,KAEjBA,EAAE,WAAWA,EAAE,QAAQ,SAAS;AAClC;AAGJ,cAAME,IAAYpM,EAAO,QAAS,GAC5BqM,IAAoBrM,IAASA,EAAO,eAAc,EAAG,IAAI,CAAA3D,MAAK,CAACA,EAAE,OAAO,IAAIA,EAAE,OAAO,QAAS,CAAA,CAAC,IAAI,CAAC,CAACT,EAAO,IAAIA,EAAO,QAAO,CAAE,CAAC,GACjI0Q,IAAUH,EAAkBD,CAAC,IAAI,KAAK,MAAMA,EAAE,QAAQ,CAAC,EAAE,OAAO,IAAIA,EAAE,SACtEK,IAAkB,CAAE,GACpBC,IAAe,CAACC,GAAWC,MAAe;AAC9C,UAAI,OAAOA,KAAe,aAG1BnO,EAAM,oBAAoB,CAAApC,MAAO;AAC/B,gBAAIwQ,GAAkBC;AACtB,kBAAMC,IAAiBtO,EAAM,QAAQ,0BAA0B,QAAQ,KAAK,GACtEuO,MAAeJ,MAAeC,IAAmBxQ,KAAO,OAAO,SAASA,EAAI,gBAAgB,OAAOwQ,IAAmB,MAAME,GAC5HE,KAAkB,KAAK,IAAID,OAAgBF,IAAiBzQ,KAAO,OAAO,SAASA,EAAI,cAAc,OAAOyQ,IAAiB,IAAI,SAAS;AAChJ,mBAAAzQ,EAAI,kBAAkB,QAAQ,CAAA6Q,OAAS;AACrC,kBAAI,CAACxO,IAAUyO,EAAU,IAAID;AAC7B,cAAAT,EAAgB/N,EAAQ,IAAI,KAAK,MAAM,KAAK,IAAIyO,KAAaA,KAAaF,IAAiB,CAAC,IAAI,GAAG,IAAI;AAAA,YACrH,CAAa,GACM;AAAA,cACL,GAAG5Q;AAAA,cACH,aAAA2Q;AAAA,cACA,iBAAAC;AAAA,YACD;AAAA,UACb,CAAW,IACGxO,EAAM,QAAQ,qBAAqB,cAAckO,MAAc,UACjElO,EAAM,gBAAgB,CAAApC,OAAQ;AAAA,YAC5B,GAAGA;AAAA,YACH,GAAGoQ;AAAA,UACjB,EAAc;AAAA,QAEL,GACKW,IAAS,CAAAR,MAAcF,EAAa,QAAQE,CAAU,GACtDS,IAAQ,CAAAT,MAAc;AAC1B,UAAAF,EAAa,OAAOE,CAAU,GAC9BnO,EAAM,oBAAoB,CAAApC,OAAQ;AAAA,YAChC,GAAGA;AAAA,YACH,kBAAkB;AAAA,YAClB,aAAa;AAAA,YACb,WAAW;AAAA,YACX,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,mBAAmB,CAAA;AAAA,UAC/B,EAAY;AAAA,QACH,GACKiR,IAAkBjC,GAAqBa,CAAgB,GACvDqB,IAAc;AAAA,UAClB,aAAa,CAAAnB,MAAKgB,EAAOhB,EAAE,OAAO;AAAA,UAClC,WAAW,CAAAA,MAAK;AACd,YAAAkB,KAAmB,QAAQA,EAAgB,oBAAoB,aAAaC,EAAY,WAAW,GACnGD,KAAmB,QAAQA,EAAgB,oBAAoB,WAAWC,EAAY,SAAS,GAC/FF,EAAMjB,EAAE,OAAO;AAAA,UAC3B;AAAA,QACS,GACKoB,IAAc;AAAA,UAClB,aAAa,CAAApB,OACPA,EAAE,eACJA,EAAE,eAAgB,GAClBA,EAAE,gBAAiB,IAErBgB,EAAOhB,EAAE,QAAQ,CAAC,EAAE,OAAO,GACpB;AAAA,UAET,WAAW,CAAAA,MAAK;AACd,gBAAIqB;AACJ,YAAAH,KAAmB,QAAQA,EAAgB,oBAAoB,aAAaE,EAAY,WAAW,GACnGF,KAAmB,QAAQA,EAAgB,oBAAoB,YAAYE,EAAY,SAAS,GAC5FpB,EAAE,eACJA,EAAE,eAAgB,GAClBA,EAAE,gBAAiB,IAErBiB,GAAOI,IAAcrB,EAAE,QAAQ,CAAC,MAAM,OAAO,SAASqB,EAAY,OAAO;AAAA,UACrF;AAAA,QACS,GACKC,IAAqBC,OAA0B;AAAA,UACnD,SAAS;AAAA,QACnB,IAAY;AACJ,QAAItB,EAAkBD,CAAC,KACrBkB,KAAmB,QAAQA,EAAgB,iBAAiB,aAAaE,EAAY,aAAaE,CAAkB,GACpHJ,KAAmB,QAAQA,EAAgB,iBAAiB,YAAYE,EAAY,WAAWE,CAAkB,MAEjHJ,KAAmB,QAAQA,EAAgB,iBAAiB,aAAaC,EAAY,aAAaG,CAAkB,GACpHJ,KAAmB,QAAQA,EAAgB,iBAAiB,WAAWC,EAAY,WAAWG,CAAkB,IAElHjP,EAAM,oBAAoB,CAAApC,OAAQ;AAAA,UAChC,GAAGA;AAAA,UACH,aAAamQ;AAAA,UACb,WAAAF;AAAA,UACA,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,mBAAAC;AAAA,UACA,kBAAkBzQ,EAAO;AAAA,QACnC,EAAU;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACD,aAAa,CAAA2C,MAAS;AACpB,IAAAA,EAAM,kBAAkB,CAAAzC,MAAWyC,EAAM,QAAQ,wBAAwB,OAAO,SAASA,EAAM,QAAQ,qBAAqBzC,CAAO,GACnIyC,EAAM,sBAAsB,CAAAzC,MAAWyC,EAAM,QAAQ,4BAA4B,OAAO,SAASA,EAAM,QAAQ,yBAAyBzC,CAAO,GAC/IyC,EAAM,oBAAoB,CAAA0I,MAAgB;AACxC,UAAIC;AACJ,MAAA3I,EAAM,gBAAgB0I,IAAe,CAAA,KAAMC,IAAwB3I,EAAM,aAAa,iBAAiB,OAAO2I,IAAwB,CAAA,CAAE;AAAA,IACzI,GACD3I,EAAM,sBAAsB,CAAA0I,MAAgB;AAC1C,UAAIyG;AACJ,MAAAnP,EAAM,oBAAoB0I,IAAeqE,EAA+B,KAAMoC,IAAyBnP,EAAM,aAAa,qBAAqB,OAAOmP,IAAyBpC,EAA+B,CAAE;AAAA,IACjN,GACD/M,EAAM,eAAe,MAAM;AACzB,UAAIoP,GAAuBC;AAC3B,cAAQD,KAAyBC,IAAyBrP,EAAM,gBAAiB,EAAC,CAAC,MAAM,OAAO,SAASqP,EAAuB,QAAQ,OAAO,CAACxG,GAAKpH,MAC5IoH,IAAMpH,EAAO,QAAS,GAC5B,CAAC,MAAM,OAAO2N,IAAwB;AAAA,IAC1C,GACDpP,EAAM,mBAAmB,MAAM;AAC7B,UAAIsP,GAAuBC;AAC3B,cAAQD,KAAyBC,IAAyBvP,EAAM,oBAAqB,EAAC,CAAC,MAAM,OAAO,SAASuP,EAAuB,QAAQ,OAAO,CAAC1G,GAAKpH,MAChJoH,IAAMpH,EAAO,QAAS,GAC5B,CAAC,MAAM,OAAO6N,IAAwB;AAAA,IAC1C,GACDtP,EAAM,qBAAqB,MAAM;AAC/B,UAAIwP,GAAuBC;AAC3B,cAAQD,KAAyBC,IAAyBzP,EAAM,sBAAuB,EAAC,CAAC,MAAM,OAAO,SAASyP,EAAuB,QAAQ,OAAO,CAAC5G,GAAKpH,MAClJoH,IAAMpH,EAAO,QAAS,GAC5B,CAAC,MAAM,OAAO+N,IAAwB;AAAA,IAC1C,GACDxP,EAAM,oBAAoB,MAAM;AAC9B,UAAI0P,GAAuBC;AAC3B,cAAQD,KAAyBC,IAAyB3P,EAAM,qBAAsB,EAAC,CAAC,MAAM,OAAO,SAAS2P,EAAuB,QAAQ,OAAO,CAAC9G,GAAKpH,MACjJoH,IAAMpH,EAAO,QAAS,GAC5B,CAAC,MAAM,OAAOiO,IAAwB;AAAA,IAC1C;AAAA,EACL;AACA;AACA,IAAIE,IAAmB;AACvB,SAASV,KAAwB;AAC/B,MAAI,OAAOU,KAAqB,UAAW,QAAOA;AAClD,MAAIC,IAAY;AAChB,MAAI;AACF,UAAMtO,IAAU;AAAA,MACd,IAAI,UAAU;AACZ,eAAAsO,IAAY,IACL;AAAA,MACf;AAAA,IACK,GACKC,IAAO,MAAM;AAAA,IAAE;AACrB,WAAO,iBAAiB,QAAQA,GAAMvO,CAAO,GAC7C,OAAO,oBAAoB,QAAQuO,CAAI;AAAA,EACxC,QAAa;AACZ,IAAAD,IAAY;AAAA,EAChB;AACE,SAAAD,IAAmBC,GACZD;AACT;AACA,SAAShC,EAAkB,GAAG;AAC5B,SAAO,EAAE,SAAS;AACpB;AAIA,MAAMmC,KAAmB;AAAA,EACvB,iBAAiB,CAAA1I,OACR;AAAA,IACL,kBAAkB,CAAE;AAAA,IACpB,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,0BAA0BvC,EAAiB,oBAAoBuC,CAAK;AAAA,EACrE;AAAA,EAEH,cAAc,CAAC3C,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,mBAAmB,CAAA5F,MAAS;AACjC,MAAI4F,EAAO,gBACT2C,EAAM,oBAAoB,CAAApC,OAAQ;AAAA,QAChC,GAAGA;AAAA,QACH,CAACP,EAAO,EAAE,GAAG5F,KAAwB,CAAC4F,EAAO,aAAY;AAAA,MACnE,EAAU;AAAA,IAEL,GACDA,EAAO,eAAe,MAAM;AAC1B,UAAIqD,GAAMkH;AACV,YAAMoI,IAAe3S,EAAO;AAC5B,cAAQqD,IAAOsP,EAAa,SAASA,EAAa,KAAK,CAAAC,MAAKA,EAAE,aAAc,CAAA,KAAKrI,IAAwB5H,EAAM,SAAU,EAAC,qBAAqB,OAAO,SAAS4H,EAAsBvK,EAAO,EAAE,MAAM,OAAOqD,IAAO;AAAA,IACnN,GACDrD,EAAO,aAAa,MAAM;AACxB,UAAIoK,GAAuBC;AAC3B,eAASD,IAAwBpK,EAAO,UAAU,iBAAiB,OAAOoK,IAAwB,SAAWC,IAAwB1H,EAAM,QAAQ,iBAAiB,OAAO0H,IAAwB;AAAA,IACpM,GACDrK,EAAO,6BAA6B,MAC3B,CAAAsQ,MAAK;AACV,MAAAtQ,EAAO,oBAAoB,QAAQA,EAAO,iBAAiBsQ,EAAE,OAAO,OAAO;AAAA,IAC5E;AAAA,EAEJ;AAAA,EACD,WAAW,CAACvR,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,sBAAsBoC,EAAK,MAAM,CAACpC,EAAI,eAAe4D,EAAM,SAAQ,EAAG,gBAAgB,GAAG,CAAAkQ,MACpFA,EAAM,OAAO,CAAA9P,MAAQA,EAAK,OAAO,cAAc,GACrDV,EAAeM,EAAM,SAAS,aAAa,qBAAqB,CAAC,GACpE5D,EAAI,kBAAkBoC,EAAK,MAAM,CAACpC,EAAI,oBAAmB,GAAIA,EAAI,sBAAqB,GAAIA,EAAI,qBAAoB,CAAE,GAAG,CAAC2F,GAAMiB,GAAQhB,MAAU,CAAC,GAAGD,GAAM,GAAGiB,GAAQ,GAAGhB,CAAK,GAAGtC,EAAeM,EAAM,SAAS,aAAa,iBAAiB,CAAC;AAAA,EAC9O;AAAA,EACD,aAAa,CAAAA,MAAS;AACpB,UAAMmQ,IAA2B,CAACzS,GAAK0S,MAC9B5R,EAAK,MAAM,CAAC4R,EAAY,GAAEA,EAAU,EAAG,OAAO,CAAAtS,MAAKA,EAAE,aAAc,CAAA,EAAE,IAAI,CAAAA,MAAKA,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,CAAA+F,MAC9FA,EAAQ,OAAO,CAAA/F,MAAKA,EAAE,gBAAgB,OAAO,SAASA,EAAE,cAAc,GAC5E4B,EAAeM,EAAM,SAAS,gBAAgBtC,CAAG,CAAC;AAEvD,IAAAsC,EAAM,wBAAwBmQ,EAAyB,yBAAyB,MAAMnQ,EAAM,mBAAmB,GAC/GA,EAAM,wBAAwBmQ,EAAyB,yBAAyB,MAAMnQ,EAAM,mBAAmB,GAC/GA,EAAM,4BAA4BmQ,EAAyB,6BAA6B,MAAMnQ,EAAM,oBAAoB,GACxHA,EAAM,6BAA6BmQ,EAAyB,8BAA8B,MAAMnQ,EAAM,qBAAqB,GAC3HA,EAAM,8BAA8BmQ,EAAyB,+BAA+B,MAAMnQ,EAAM,sBAAsB,GAC9HA,EAAM,sBAAsB,CAAAzC,MAAWyC,EAAM,QAAQ,4BAA4B,OAAO,SAASA,EAAM,QAAQ,yBAAyBzC,CAAO,GAC/IyC,EAAM,wBAAwB,CAAA0I,MAAgB;AAC5C,UAAIC;AACJ,MAAA3I,EAAM,oBAAoB0I,IAAe,CAAA,KAAMC,IAAwB3I,EAAM,aAAa,qBAAqB,OAAO2I,IAAwB,CAAA,CAAE;AAAA,IACjJ,GACD3I,EAAM,0BAA0B,CAAAvI,MAAS;AACvC,UAAI4Y;AACJ,MAAA5Y,KAAS4Y,IAAS5Y,MAAU,OAAO4Y,IAAS,CAACrQ,EAAM,uBAAwB,GAC3EA,EAAM,oBAAoBA,EAAM,kBAAmB,EAAC,OAAO,CAACsQ,GAAKjT,OAAY;AAAA,QAC3E,GAAGiT;AAAA,QACH,CAACjT,EAAO,EAAE,GAAI5F,KAAQ,EAAE4F,EAAO,cAAc,QAAQA,EAAO,WAAU;AAAA,MAC9E,IAAU,CAAE,CAAA,CAAC;AAAA,IACR,GACD2C,EAAM,yBAAyB,MAAM,CAACA,EAAM,kBAAmB,EAAC,KAAK,CAAA3C,MAAU,EAAEA,EAAO,gBAAgB,QAAQA,EAAO,aAAc,EAAC,GACtI2C,EAAM,0BAA0B,MAAMA,EAAM,kBAAiB,EAAG,KAAK,CAAA3C,MAAUA,EAAO,gBAAgB,OAAO,SAASA,EAAO,aAAY,CAAE,GAC3I2C,EAAM,uCAAuC,MACpC,CAAA2N,MAAK;AACV,UAAI4C;AACJ,MAAAvQ,EAAM,yBAAyBuQ,IAAU5C,EAAE,WAAW,OAAO,SAAS4C,EAAQ,OAAO;AAAA,IACtF;AAAA,EAEP;AACA;AACA,SAAStF,EAAuBjL,GAAOgL,GAAU;AAC/C,SAAQA,IAA2CA,MAAa,WAAWhL,EAAM,4BAA2B,IAAKgL,MAAa,SAAShL,EAAM,0BAA2B,IAAGA,EAAM,2BAA4B,IAA1LA,EAAM,sBAAqB;AAChD;AAIA,MAAMwQ,KAAiB;AAAA,EACrB,aAAa,CAAAxQ,MAAS;AACpB,IAAAA,EAAM,4BAA4BA,EAAM,QAAQ,sBAAsBA,EAAM,QAAQ,mBAAmBA,GAAO,YAAY,GAC1HA,EAAM,2BAA2B,MAC3BA,EAAM,QAAQ,mBAAmB,CAACA,EAAM,4BACnCA,EAAM,uBAAwB,IAEhCA,EAAM,0BAA2B,GAE1CA,EAAM,gCAAgCA,EAAM,QAAQ,0BAA0BA,EAAM,QAAQ,uBAAuBA,GAAO,YAAY,GACtIA,EAAM,+BAA+B,MAC9BA,EAAM,gCAGJA,EAAM,8BAA+B,IAFnC,oBAAI,IAAK,GAIpBA,EAAM,gCAAgCA,EAAM,QAAQ,0BAA0BA,EAAM,QAAQ,uBAAuBA,GAAO,YAAY,GACtIA,EAAM,+BAA+B,MAAM;AACzC,UAAKA,EAAM;AAGX,eAAOA,EAAM,8BAA+B;AAAA,IAC7C;AAAA,EACL;AACA,GAIMyQ,KAAkB;AAAA,EACtB,iBAAiB,CAAApJ,OACR;AAAA,IACL,cAAc;AAAA,IACd,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,sBAAsBvC,EAAiB,gBAAgBuC,CAAK;AAAA,IAC5D,gBAAgB;AAAA,IAChB,0BAA0B,CAAA3C,MAAU;AAClC,UAAIqT;AACJ,YAAMjZ,KAASiZ,IAAwB1Q,EAAM,gBAAe,EAAG,SAAS,CAAC,MAAM,SAAS0Q,IAAwBA,EAAsB,uBAAwB,EAACrT,EAAO,EAAE,MAAM,OAAO,SAASqT,EAAsB,SAAU;AAC9N,aAAO,OAAOjZ,KAAU,YAAY,OAAOA,KAAU;AAAA,IAC7D;AAAA,EACK;AAAA,EAEH,cAAc,CAAC4F,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,qBAAqB,MAAM;AAChC,UAAIoK,GAAuBC,GAAuBC,GAAwBgJ;AAC1E,eAASlJ,IAAwBpK,EAAO,UAAU,uBAAuB,OAAOoK,IAAwB,SAAWC,IAAwB1H,EAAM,QAAQ,uBAAuB,OAAO0H,IAAwB,SAAWC,IAAyB3H,EAAM,QAAQ,kBAAkB,OAAO2H,IAAyB,SAAWgJ,IAAwB3Q,EAAM,QAAQ,4BAA4B,OAAO,SAASA,EAAM,QAAQ,yBAAyB3C,CAAM,MAAM,OAAOsT,IAAwB,OAAS,CAAC,CAACtT,EAAO;AAAA,IACrf;AAAA,EACF;AAAA,EACD,aAAa,CAAA2C,MAAS;AACpB,IAAAA,EAAM,wBAAwB,MACrBmH,EAAU,gBAEnBnH,EAAM,oBAAoB,MAAM;AAC9B,UAAIuH,GAAuBC;AAC3B,YAAM;AAAA,QACJ,gBAAgBoJ;AAAA,MACjB,IAAG5Q,EAAM;AACV,aAAOnC,EAAW+S,CAAc,IAAIA,IAAiBA,MAAmB,SAAS5Q,EAAM,sBAAqB,KAAMuH,KAAyBC,IAAyBxH,EAAM,QAAQ,cAAc,OAAO,SAASwH,EAAuBoJ,CAAc,MAAM,OAAOrJ,IAAwBJ,EAAUyJ,CAAc;AAAA,IACnT,GACD5Q,EAAM,kBAAkB,CAAAzC,MAAW;AACjC,MAAAyC,EAAM,QAAQ,wBAAwB,QAAQA,EAAM,QAAQ,qBAAqBzC,CAAO;AAAA,IACzF,GACDyC,EAAM,oBAAoB,CAAA0I,MAAgB;AACxC,MAAA1I,EAAM,gBAAgB0I,IAAe,SAAY1I,EAAM,aAAa,YAAY;AAAA,IACjF;AAAA,EACL;AACA,GAIM6Q,KAAe;AAAA,EACnB,iBAAiB,CAAAxJ,OACR;AAAA,IACL,UAAU,CAAE;AAAA,IACZ,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,kBAAkBvC,EAAiB,YAAYuC,CAAK;AAAA,IACpD,sBAAsB;AAAA,EACvB;AAAA,EAEH,aAAa,CAAAA,MAAS;AACpB,QAAI8Q,IAAa,IACbC,IAAS;AACb,IAAA/Q,EAAM,qBAAqB,MAAM;AAC/B,UAAIU,GAAMsQ;AACV,UAAI,CAACF,GAAY;AACf,QAAA9Q,EAAM,OAAO,MAAM;AACjB,UAAA8Q,IAAa;AAAA,QACvB,CAAS;AACD;AAAA,MACR;AACM,WAAKpQ,KAAQsQ,IAAwBhR,EAAM,QAAQ,iBAAiB,OAAOgR,IAAwBhR,EAAM,QAAQ,sBAAsB,OAAOU,IAAO,CAACV,EAAM,QAAQ,iBAAiB;AACnL,YAAI+Q,EAAQ;AACZ,QAAAA,IAAS,IACT/Q,EAAM,OAAO,MAAM;AACjB,UAAAA,EAAM,cAAe,GACrB+Q,IAAS;AAAA,QACnB,CAAS;AAAA,MACT;AAAA,IACK,GACD/Q,EAAM,cAAc,CAAAzC,MAAWyC,EAAM,QAAQ,oBAAoB,OAAO,SAASA,EAAM,QAAQ,iBAAiBzC,CAAO,GACvHyC,EAAM,wBAAwB,CAAAiR,MAAY;AACxC,MAAIA,KAA8B,CAACjR,EAAM,qBAAoB,IAC3DA,EAAM,YAAY,EAAI,IAEtBA,EAAM,YAAY,EAAE;AAAA,IAEvB,GACDA,EAAM,gBAAgB,CAAA0I,MAAgB;AACpC,UAAIwI,GAAuBtI;AAC3B,MAAA5I,EAAM,YAAY0I,IAAe,CAAE,KAAIwI,KAAyBtI,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,aAAa,OAAOsI,IAAwB,EAAE;AAAA,IAChM,GACDlR,EAAM,uBAAuB,MACpBA,EAAM,yBAAwB,EAAG,SAAS,KAAK,CAAA5D,MAAOA,EAAI,cAAc,GAEjF4D,EAAM,kCAAkC,MAC/B,CAAA2N,MAAK;AACV,MAAAA,EAAE,WAAW,QAAQA,EAAE,QAAS,GAChC3N,EAAM,sBAAuB;AAAA,IAC9B,GAEHA,EAAM,wBAAwB,MAAM;AAClC,YAAMiR,IAAWjR,EAAM,SAAQ,EAAG;AAClC,aAAOiR,MAAa,MAAQ,OAAO,OAAOA,CAAQ,EAAE,KAAK,OAAO;AAAA,IACjE,GACDjR,EAAM,uBAAuB,MAAM;AACjC,YAAMiR,IAAWjR,EAAM,SAAQ,EAAG;AAGlC,aAAI,OAAOiR,KAAa,YACfA,MAAa,KAElB,GAAC,OAAO,KAAKA,CAAQ,EAAE,UAKvBjR,EAAM,YAAa,EAAC,SAAS,KAAK,CAAA5D,MAAO,CAACA,EAAI,cAAa,CAAE;AAAA,IAMlE,GACD4D,EAAM,mBAAmB,MAAM;AAC7B,UAAI2D,IAAW;AAEf,cADe3D,EAAM,SAAQ,EAAG,aAAa,KAAO,OAAO,KAAKA,EAAM,YAAa,EAAC,QAAQ,IAAI,OAAO,KAAKA,EAAM,SAAU,EAAC,QAAQ,GAC9H,QAAQ,CAAA/F,MAAM;AACnB,cAAMkX,IAAUlX,EAAG,MAAM,GAAG;AAC5B,QAAA0J,IAAW,KAAK,IAAIA,GAAUwN,EAAQ,MAAM;AAAA,MACpD,CAAO,GACMxN;AAAA,IACR,GACD3D,EAAM,yBAAyB,MAAMA,EAAM,kBAAmB,GAC9DA,EAAM,sBAAsB,OACtB,CAACA,EAAM,wBAAwBA,EAAM,QAAQ,wBAC/CA,EAAM,uBAAuBA,EAAM,QAAQ,oBAAoBA,CAAK,IAElEA,EAAM,QAAQ,mBAAmB,CAACA,EAAM,uBACnCA,EAAM,uBAAwB,IAEhCA,EAAM,qBAAsB;AAAA,EAEtC;AAAA,EACD,WAAW,CAAC5D,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,iBAAiB,CAAA6U,MAAY;AAC/B,MAAAjR,EAAM,YAAY,CAAApC,MAAO;AACvB,YAAIwT;AACJ,cAAMC,IAASzT,MAAQ,KAAO,KAAO,CAAC,EAAEA,KAAO,QAAQA,EAAIxB,EAAI,EAAE;AACjE,YAAIkV,IAAc,CAAE;AASpB,YARI1T,MAAQ,KACV,OAAO,KAAKoC,EAAM,YAAa,EAAC,QAAQ,EAAE,QAAQ,CAAAuR,MAAS;AACzD,UAAAD,EAAYC,CAAK,IAAI;AAAA,QACjC,CAAW,IAEDD,IAAc1T,GAEhBqT,KAAYG,IAAYH,MAAa,OAAOG,IAAY,CAACC,GACrD,CAACA,KAAUJ;AACb,iBAAO;AAAA,YACL,GAAGK;AAAA,YACH,CAAClV,EAAI,EAAE,GAAG;AAAA,UACX;AAEH,YAAIiV,KAAU,CAACJ,GAAU;AACvB,gBAAM;AAAA,YACJ,CAAC7U,EAAI,EAAE,GAAGiR;AAAA,YACV,GAAGC;AAAA,UACf,IAAcgE;AACJ,iBAAOhE;AAAA,QACjB;AACQ,eAAO1P;AAAA,MACf,CAAO;AAAA,IACF,GACDxB,EAAI,gBAAgB,MAAM;AACxB,UAAIoV;AACJ,YAAMP,IAAWjR,EAAM,SAAQ,EAAG;AAClC,aAAO,CAAC,GAAGwR,IAAwBxR,EAAM,QAAQ,oBAAoB,OAAO,SAASA,EAAM,QAAQ,iBAAiB5D,CAAG,MAAM,OAAOoV,IAAwBP,MAAa,MAASA,KAAY,QAAgBA,EAAS7U,EAAI,EAAE;AAAA,IAC9N,GACDA,EAAI,eAAe,MAAM;AACvB,UAAIqV,GAAuB/J,GAAuB+C;AAClD,cAAQgH,IAAwBzR,EAAM,QAAQ,mBAAmB,OAAO,SAASA,EAAM,QAAQ,gBAAgB5D,CAAG,MAAM,OAAOqV,MAA0B/J,IAAwB1H,EAAM,QAAQ,oBAAoB,OAAO0H,IAAwB,OAAS,CAAC,GAAG+C,IAAerO,EAAI,YAAY,QAAQqO,EAAa;AAAA,IACpT,GACDrO,EAAI,0BAA0B,MAAM;AAClC,UAAIsV,IAAkB,IAClBvM,IAAa/I;AACjB,aAAOsV,KAAmBvM,EAAW;AACnC,QAAAA,IAAanF,EAAM,OAAOmF,EAAW,UAAU,EAAI,GACnDuM,IAAkBvM,EAAW,cAAe;AAE9C,aAAOuM;AAAA,IACR,GACDtV,EAAI,2BAA2B,MAAM;AACnC,YAAMuV,IAAYvV,EAAI,aAAc;AACpC,aAAO,MAAM;AACX,QAAKuV,KACLvV,EAAI,eAAgB;AAAA,MACrB;AAAA,IACF;AAAA,EACL;AACA,GAIMwV,KAAmB,GACnBC,KAAkB,IAClBC,KAA4B,OAAO;AAAA,EACvC,WAAWF;AAAA,EACX,UAAUC;AACZ,IACME,KAAgB;AAAA,EACpB,iBAAiB,CAAA1K,OACR;AAAA,IACL,GAAGA;AAAA,IACH,YAAY;AAAA,MACV,GAAGyK,GAA2B;AAAA,MAC9B,GAAIzK,KAAS,OAAO,SAASA,EAAM;AAAA,IAC3C;AAAA,EACK;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,oBAAoBvC,EAAiB,cAAcuC,CAAK;AAAA,EACzD;AAAA,EAEH,aAAa,CAAAA,MAAS;AACpB,QAAI8Q,IAAa,IACbC,IAAS;AACb,IAAA/Q,EAAM,sBAAsB,MAAM;AAChC,UAAIU,GAAMsQ;AACV,UAAI,CAACF,GAAY;AACf,QAAA9Q,EAAM,OAAO,MAAM;AACjB,UAAA8Q,IAAa;AAAA,QACvB,CAAS;AACD;AAAA,MACR;AACM,WAAKpQ,KAAQsQ,IAAwBhR,EAAM,QAAQ,iBAAiB,OAAOgR,IAAwBhR,EAAM,QAAQ,uBAAuB,OAAOU,IAAO,CAACV,EAAM,QAAQ,kBAAkB;AACrL,YAAI+Q,EAAQ;AACZ,QAAAA,IAAS,IACT/Q,EAAM,OAAO,MAAM;AACjB,UAAAA,EAAM,eAAgB,GACtB+Q,IAAS;AAAA,QACnB,CAAS;AAAA,MACT;AAAA,IACK,GACD/Q,EAAM,gBAAgB,CAAAzC,MAAW;AAC/B,YAAMyU,IAAc,CAAApU,MACHN,EAAiBC,GAASK,CAAG;AAG9C,aAAOoC,EAAM,QAAQ,sBAAsB,OAAO,SAASA,EAAM,QAAQ,mBAAmBgS,CAAW;AAAA,IACxG,GACDhS,EAAM,kBAAkB,CAAA0I,MAAgB;AACtC,UAAIuJ;AACJ,MAAAjS,EAAM,cAAc0I,IAAeoJ,GAAyB,KAAMG,IAAwBjS,EAAM,aAAa,eAAe,OAAOiS,IAAwBH,GAAyB,CAAE;AAAA,IACvL,GACD9R,EAAM,eAAe,CAAAzC,MAAW;AAC9B,MAAAyC,EAAM,cAAc,CAAApC,MAAO;AACzB,YAAIsU,IAAY5U,EAAiBC,GAASK,EAAI,SAAS;AACvD,cAAMuU,IAAe,OAAOnS,EAAM,QAAQ,YAAc,OAAeA,EAAM,QAAQ,cAAc,KAAK,OAAO,mBAAmBA,EAAM,QAAQ,YAAY;AAC5J,eAAAkS,IAAY,KAAK,IAAI,GAAG,KAAK,IAAIA,GAAWC,CAAY,CAAC,GAClD;AAAA,UACL,GAAGvU;AAAA,UACH,WAAAsU;AAAA,QACD;AAAA,MACT,CAAO;AAAA,IACF,GACDlS,EAAM,iBAAiB,CAAA0I,MAAgB;AACrC,UAAI0J,GAAwBxJ;AAC5B,MAAA5I,EAAM,aAAa0I,IAAekJ,MAAoBQ,KAA0BxJ,IAAsB5I,EAAM,iBAAiB,SAAS4I,IAAsBA,EAAoB,eAAe,OAAO,SAASA,EAAoB,cAAc,OAAOwJ,IAAyBR,EAAgB;AAAA,IAClS,GACD5R,EAAM,gBAAgB,CAAA0I,MAAgB;AACpC,UAAI2J,GAAwBC;AAC5B,MAAAtS,EAAM,YAAY0I,IAAemJ,MAAmBQ,KAA0BC,IAAuBtS,EAAM,iBAAiB,SAASsS,IAAuBA,EAAqB,eAAe,OAAO,SAASA,EAAqB,aAAa,OAAOD,IAAyBR,EAAe;AAAA,IAClS,GACD7R,EAAM,cAAc,CAAAzC,MAAW;AAC7B,MAAAyC,EAAM,cAAc,CAAApC,MAAO;AACzB,cAAM2U,IAAW,KAAK,IAAI,GAAGjV,EAAiBC,GAASK,EAAI,QAAQ,CAAC,GAC9D4U,IAAc5U,EAAI,WAAWA,EAAI,WACjCsU,IAAY,KAAK,MAAMM,IAAcD,CAAQ;AACnD,eAAO;AAAA,UACL,GAAG3U;AAAA,UACH,WAAAsU;AAAA,UACA,UAAAK;AAAA,QACD;AAAA,MACT,CAAO;AAAA,IACF,GAEDvS,EAAM,eAAe,CAAAzC,MAAWyC,EAAM,cAAc,CAAApC,MAAO;AACzD,UAAI6U;AACJ,UAAIC,IAAepV,EAAiBC,IAAUkV,IAAwBzS,EAAM,QAAQ,cAAc,OAAOyS,IAAwB,EAAE;AACnI,aAAI,OAAOC,KAAiB,aAC1BA,IAAe,KAAK,IAAI,IAAIA,CAAY,IAEnC;AAAA,QACL,GAAG9U;AAAA,QACH,WAAW8U;AAAA,MACZ;AAAA,IACP,CAAK,GACD1S,EAAM,iBAAiBxB,EAAK,MAAM,CAACwB,EAAM,aAAY,CAAE,GAAG,CAAA2S,MAAa;AACrE,UAAIC,IAAc,CAAE;AACpB,aAAID,KAAaA,IAAY,MAC3BC,IAAc,CAAC,GAAG,IAAI,MAAMD,CAAS,CAAC,EAAE,KAAK,IAAI,EAAE,IAAI,CAACtF,GAAG9H,MAAMA,CAAC,IAE7DqN;AAAA,IACR,GAAElT,EAAeM,EAAM,SAAS,cAAc,gBAAgB,CAAC,GAChEA,EAAM,qBAAqB,MAAMA,EAAM,SAAQ,EAAG,WAAW,YAAY,GACzEA,EAAM,iBAAiB,MAAM;AAC3B,YAAM;AAAA,QACJ,WAAAkS;AAAA,MACR,IAAUlS,EAAM,SAAQ,EAAG,YACf2S,IAAY3S,EAAM,aAAc;AACtC,aAAI2S,MAAc,KACT,KAELA,MAAc,IACT,KAEFT,IAAYS,IAAY;AAAA,IAChC,GACD3S,EAAM,eAAe,MACZA,EAAM,aAAa,CAAApC,MAAOA,IAAM,CAAC,GAE1CoC,EAAM,WAAW,MACRA,EAAM,aAAa,CAAApC,MACjBA,IAAM,CACd,GAEHoC,EAAM,YAAY,MACTA,EAAM,aAAa,CAAC,GAE7BA,EAAM,WAAW,MACRA,EAAM,aAAaA,EAAM,aAAY,IAAK,CAAC,GAEpDA,EAAM,2BAA2B,MAAMA,EAAM,oBAAqB,GAClEA,EAAM,wBAAwB,OACxB,CAACA,EAAM,0BAA0BA,EAAM,QAAQ,0BACjDA,EAAM,yBAAyBA,EAAM,QAAQ,sBAAsBA,CAAK,IAEtEA,EAAM,QAAQ,oBAAoB,CAACA,EAAM,yBACpCA,EAAM,yBAA0B,IAElCA,EAAM,uBAAwB,IAEvCA,EAAM,eAAe,MAAM;AACzB,UAAI6S;AACJ,cAAQA,IAAyB7S,EAAM,QAAQ,cAAc,OAAO6S,IAAyB,KAAK,KAAK7S,EAAM,gBAAgBA,EAAM,SAAU,EAAC,WAAW,QAAQ;AAAA,IAClK,GACDA,EAAM,cAAc,MAAM;AACxB,UAAI8S;AACJ,cAAQA,IAAwB9S,EAAM,QAAQ,aAAa,OAAO8S,IAAwB9S,EAAM,yBAA0B,EAAC,KAAK;AAAA,IACjI;AAAA,EACL;AACA,GAIM+S,KAA4B,OAAO;AAAA,EACvC,KAAK,CAAE;AAAA,EACP,QAAQ,CAAA;AACV,IACMC,KAAa;AAAA,EACjB,iBAAiB,CAAA3L,OACR;AAAA,IACL,YAAY0L,GAA2B;AAAA,IACvC,GAAG1L;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,oBAAoBvC,EAAiB,cAAcuC,CAAK;AAAA,EACzD;AAAA,EAEH,WAAW,CAAC5D,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,MAAM,CAAC4O,GAAUiI,GAAiBC,MAAsB;AAC1D,YAAMC,IAAaF,IAAkB7W,EAAI,YAAa,EAAC,IAAI,CAAAsE,MAAQ;AACjE,YAAI;AAAA,UACF,IAAAzG;AAAA,QACV,IAAYyG;AACJ,eAAOzG;AAAA,MACR,CAAA,IAAI,CAAE,GACDmZ,IAAeF,IAAoB9W,EAAI,cAAe,EAAC,IAAI,CAAAgR,MAAS;AACxE,YAAI;AAAA,UACF,IAAAnT;AAAA,QACV,IAAYmT;AACJ,eAAOnT;AAAA,MACR,CAAA,IAAI,CAAE,GACDoZ,IAAS,oBAAI,IAAI,CAAC,GAAGD,GAAchX,EAAI,IAAI,GAAG+W,CAAU,CAAC;AAC/D,MAAAnT,EAAM,cAAc,CAAApC,MAAO;AACzB,YAAI0V,GAAWC;AACf,YAAIvI,MAAa,UAAU;AACzB,cAAIwI,GAAUC;AACd,iBAAO;AAAA,YACL,OAAOD,IAAW5V,KAAO,OAAO,SAASA,EAAI,QAAQ,OAAO4V,IAAW,CAAA,GAAI,OAAO,CAAA1V,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE;AAAA,YACzH,QAAQ,CAAC,KAAK2V,IAAc7V,KAAO,OAAO,SAASA,EAAI,WAAW,OAAO6V,IAAc,CAAE,GAAE,OAAO,CAAA3V,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE,GAAG,GAAG,MAAM,KAAKuV,CAAM,CAAC;AAAA,UAClK;AAAA,QACX;AACQ,YAAIrI,MAAa,OAAO;AACtB,cAAI0I,GAAWC;AACf,iBAAO;AAAA,YACL,KAAK,CAAC,KAAKD,IAAY9V,KAAO,OAAO,SAASA,EAAI,QAAQ,OAAO8V,IAAY,CAAE,GAAE,OAAO,CAAA5V,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE,GAAG,GAAG,MAAM,KAAKuV,CAAM,CAAC;AAAA,YACvJ,UAAUM,IAAe/V,KAAO,OAAO,SAASA,EAAI,WAAW,OAAO+V,IAAe,IAAI,OAAO,CAAA7V,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE;AAAA,UACxI;AAAA,QACX;AACQ,eAAO;AAAA,UACL,OAAOwV,IAAY1V,KAAO,OAAO,SAASA,EAAI,QAAQ,OAAO0V,IAAY,CAAA,GAAI,OAAO,CAAAxV,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE;AAAA,UAC3H,UAAUyV,IAAe3V,KAAO,OAAO,SAASA,EAAI,WAAW,OAAO2V,IAAe,IAAI,OAAO,CAAAzV,MAAK,EAAEuV,KAAU,QAAQA,EAAO,IAAIvV,CAAC,EAAE;AAAA,QACxI;AAAA,MACT,CAAO;AAAA,IACF,GACD1B,EAAI,YAAY,MAAM;AACpB,UAAIqS;AACJ,YAAM;AAAA,QACJ,kBAAAmF;AAAA,QACA,eAAAC;AAAA,MACD,IAAG7T,EAAM;AACV,aAAI,OAAO4T,KAAqB,aACvBA,EAAiBxX,CAAG,KAErBqS,IAAQmF,KAA8CC,MAAkB,OAAOpF,IAAQ;AAAA,IAChG,GACDrS,EAAI,cAAc,MAAM;AACtB,YAAMiX,IAAS,CAACjX,EAAI,EAAE,GAChB;AAAA,QACJ,KAAA0X;AAAA,QACA,QAAAC;AAAA,MACR,IAAU/T,EAAM,SAAQ,EAAG,YACfgU,IAAQX,EAAO,KAAK,CAAAvV,MAAKgW,KAAO,OAAO,SAASA,EAAI,SAAShW,CAAC,CAAC,GAC/DmW,IAAWZ,EAAO,KAAK,CAAAvV,MAAKiW,KAAU,OAAO,SAASA,EAAO,SAASjW,CAAC,CAAC;AAC9E,aAAOkW,IAAQ,QAAQC,IAAW,WAAW;AAAA,IAC9C,GACD7X,EAAI,iBAAiB,MAAM;AACzB,UAAI8X,GAAOC;AACX,YAAMnJ,IAAW5O,EAAI,YAAa;AAClC,UAAI,CAAC4O,EAAU,QAAO;AACtB,YAAMoJ,KAAuBF,IAAQlJ,MAAa,QAAQhL,EAAM,WAAU,IAAKA,EAAM,cAAe,MAAK,OAAO,SAASkU,EAAM,IAAI,CAAAG,MAAS;AAC1I,YAAI;AAAA,UACF,IAAApa;AAAA,QACV,IAAYoa;AACJ,eAAOpa;AAAA,MACf,CAAO;AACD,cAAQka,IAAwBC,KAAuB,OAAO,SAASA,EAAoB,QAAQhY,EAAI,EAAE,MAAM,OAAO+X,IAAwB;AAAA,IAC/I;AAAA,EACF;AAAA,EACD,aAAa,CAAAnU,MAAS;AACpB,IAAAA,EAAM,gBAAgB,CAAAzC,MAAWyC,EAAM,QAAQ,sBAAsB,OAAO,SAASA,EAAM,QAAQ,mBAAmBzC,CAAO,GAC7HyC,EAAM,kBAAkB,CAAA0I,MAAgB;AACtC,UAAI4L,GAAuB1L;AAC3B,aAAO5I,EAAM,cAAc0I,IAAeqK,GAAyB,KAAMuB,KAAyB1L,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,eAAe,OAAO0L,IAAwBvB,IAA2B;AAAA,IAC7P,GACD/S,EAAM,sBAAsB,CAAAgL,MAAY;AACtC,UAAIwB;AACJ,YAAMC,IAAezM,EAAM,SAAQ,EAAG;AACtC,UAAI,CAACgL,GAAU;AACb,YAAIuJ,GAAmBC;AACvB,eAAO,IAAUD,IAAoB9H,EAAa,QAAQ,QAAgB8H,EAAkB,WAAaC,IAAuB/H,EAAa,WAAW,QAAgB+H,EAAqB;AAAA,MACrM;AACM,aAAO,IAAShI,IAAwBC,EAAazB,CAAQ,MAAM,QAAgBwB,EAAsB;AAAA,IAC1G,GACDxM,EAAM,iBAAiB,CAACyU,GAAaC,GAAc1J,MAAa;AAC9D,UAAI2J;AAUJ,eATeA,IAAwB3U,EAAM,QAAQ,mBAAmB,QAAO2U;AAAA;AAAA;AAAA,SAG9ED,KAAsC,CAAA,GAAI,IAAI,CAAAnD,MAAS;AACtD,gBAAMnV,IAAM4D,EAAM,OAAOuR,GAAO,EAAI;AACpC,iBAAOnV,EAAI,4BAA4BA,IAAM;AAAA,QACrD,CAAO;AAAA;AAAA;AAAA,SAEAsY,KAAsC,CAAA,GAAI,IAAI,CAAAnD,MAASkD,EAAY,KAAK,CAAArY,MAAOA,EAAI,OAAOmV,CAAK,CAAC;AAAA,SACrF,OAAO,OAAO,EAAE,IAAI,CAAAzT,OAAM;AAAA,QACpC,GAAGA;AAAA,QACH,UAAAkN;AAAA,MACR,EAAQ;AAAA,IACH,GACDhL,EAAM,aAAaxB,EAAK,MAAM,CAACwB,EAAM,cAAc,MAAMA,EAAM,WAAW,WAAW,GAAG,GAAG,CAAC4U,GAASC,MAAoB7U,EAAM,eAAe4U,GAASC,GAAiB,KAAK,GAAGnV,EAAeM,EAAM,SAAS,aAAa,YAAY,CAAC,GACxOA,EAAM,gBAAgBxB,EAAK,MAAM,CAACwB,EAAM,cAAc,MAAMA,EAAM,WAAW,WAAW,MAAM,GAAG,CAAC4U,GAASE,MAAuB9U,EAAM,eAAe4U,GAASE,GAAoB,QAAQ,GAAGpV,EAAeM,EAAM,SAAS,aAAa,eAAe,CAAC,GAC1PA,EAAM,gBAAgBxB,EAAK,MAAM,CAACwB,EAAM,cAAc,MAAMA,EAAM,SAAU,EAAC,WAAW,KAAKA,EAAM,SAAQ,EAAG,WAAW,MAAM,GAAG,CAAC4U,GAASd,GAAKC,MAAW;AAC1J,YAAMgB,IAAe,oBAAI,IAAI,CAAC,GAAIjB,KAAoB,CAAA,GAAK,GAAIC,KAA0B,CAAA,CAAG,CAAC;AAC7F,aAAOa,EAAQ,OAAO,CAAA9W,MAAK,CAACiX,EAAa,IAAIjX,EAAE,EAAE,CAAC;AAAA,IACnD,GAAE4B,EAAeM,EAAM,SAAS,aAAa,eAAe,CAAC;AAAA,EAClE;AACA,GAIMgV,KAAe;AAAA,EACnB,iBAAiB,CAAA3N,OACR;AAAA,IACL,cAAc,CAAE;AAAA,IAChB,GAAGA;AAAA,EACJ;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,sBAAsBvC,EAAiB,gBAAgBuC,CAAK;AAAA,IAC5D,oBAAoB;AAAA,IACpB,yBAAyB;AAAA,IACzB,uBAAuB;AAAA;AAAA;AAAA;AAAA,EAIxB;AAAA,EAEH,aAAa,CAAAA,MAAS;AACpB,IAAAA,EAAM,kBAAkB,CAAAzC,MAAWyC,EAAM,QAAQ,wBAAwB,OAAO,SAASA,EAAM,QAAQ,qBAAqBzC,CAAO,GACnIyC,EAAM,oBAAoB,CAAA0I,MAAgB;AACxC,UAAI4L;AACJ,aAAOtU,EAAM,gBAAgB0I,IAAe,CAAE,KAAI4L,IAAwBtU,EAAM,aAAa,iBAAiB,OAAOsU,IAAwB,CAAA,CAAE;AAAA,IAChJ,GACDtU,EAAM,wBAAwB,CAAAvI,MAAS;AACrC,MAAAuI,EAAM,gBAAgB,CAAApC,MAAO;AAC3B,QAAAnG,IAAQ,OAAOA,IAAU,MAAcA,IAAQ,CAACuI,EAAM,qBAAsB;AAC5E,cAAMiV,IAAe;AAAA,UACnB,GAAGrX;AAAA,QACJ,GACKsX,IAAqBlV,EAAM,sBAAqB,EAAG;AAIzD,eAAIvI,IACFyd,EAAmB,QAAQ,CAAA9Y,MAAO;AAChC,UAAKA,EAAI,mBAGT6Y,EAAa7Y,EAAI,EAAE,IAAI;AAAA,QACnC,CAAW,IAED8Y,EAAmB,QAAQ,CAAA9Y,MAAO;AAChC,iBAAO6Y,EAAa7Y,EAAI,EAAE;AAAA,QACtC,CAAW,GAEI6Y;AAAA,MACf,CAAO;AAAA,IACF,GACDjV,EAAM,4BAA4B,CAAAvI,MAASuI,EAAM,gBAAgB,CAAApC,MAAO;AACtE,YAAMuX,IAAgB,OAAO1d,IAAU,MAAcA,IAAQ,CAACuI,EAAM,yBAA0B,GACxFiV,IAAe;AAAA,QACnB,GAAGrX;AAAA,MACJ;AACD,aAAAoC,EAAM,YAAa,EAAC,KAAK,QAAQ,CAAA5D,MAAO;AACtC,QAAAgZ,GAAoBH,GAAc7Y,EAAI,IAAI+Y,GAAe,IAAMnV,CAAK;AAAA,MAC5E,CAAO,GACMiV;AAAA,IACb,CAAK,GA4DDjV,EAAM,yBAAyB,MAAMA,EAAM,gBAAiB,GAC5DA,EAAM,sBAAsBxB,EAAK,MAAM,CAACwB,EAAM,SAAQ,EAAG,cAAcA,EAAM,gBAAe,CAAE,GAAG,CAACiV,GAAcI,MACzG,OAAO,KAAKJ,CAAY,EAAE,SAOxBK,GAAatV,GAAOqV,CAAQ,IAN1B;AAAA,MACL,MAAM,CAAE;AAAA,MACR,UAAU,CAAE;AAAA,MACZ,UAAU,CAAA;AAAA,IACX,GAGF3V,EAAeM,EAAM,SAAS,cAAc,qBAAqB,CAAC,GACrEA,EAAM,8BAA8BxB,EAAK,MAAM,CAACwB,EAAM,SAAQ,EAAG,cAAcA,EAAM,oBAAmB,CAAE,GAAG,CAACiV,GAAcI,MACrH,OAAO,KAAKJ,CAAY,EAAE,SAOxBK,GAAatV,GAAOqV,CAAQ,IAN1B;AAAA,MACL,MAAM,CAAE;AAAA,MACR,UAAU,CAAE;AAAA,MACZ,UAAU,CAAA;AAAA,IACX,GAGF3V,EAAeM,EAAM,SAAS,cAAc,6BAA6B,CAAC,GAC7EA,EAAM,6BAA6BxB,EAAK,MAAM,CAACwB,EAAM,SAAQ,EAAG,cAAcA,EAAM,kBAAiB,CAAE,GAAG,CAACiV,GAAcI,MAClH,OAAO,KAAKJ,CAAY,EAAE,SAOxBK,GAAatV,GAAOqV,CAAQ,IAN1B;AAAA,MACL,MAAM,CAAE;AAAA,MACR,UAAU,CAAE;AAAA,MACZ,UAAU,CAAA;AAAA,IACX,GAGF3V,EAAeM,EAAM,SAAS,cAAc,4BAA4B,CAAC,GAkB5EA,EAAM,uBAAuB,MAAM;AACjC,YAAMkV,IAAqBlV,EAAM,oBAAmB,EAAG,UACjD;AAAA,QACJ,cAAAiV;AAAA,MACR,IAAUjV,EAAM,SAAU;AACpB,UAAIuV,IAAoB,GAAQL,EAAmB,UAAU,OAAO,KAAKD,CAAY,EAAE;AACvF,aAAIM,KACEL,EAAmB,KAAK,CAAA9Y,MAAOA,EAAI,kBAAkB,CAAC6Y,EAAa7Y,EAAI,EAAE,CAAC,MAC5EmZ,IAAoB,KAGjBA;AAAA,IACR,GACDvV,EAAM,2BAA2B,MAAM;AACrC,YAAMwV,IAAqBxV,EAAM,wBAAwB,SAAS,OAAO,CAAA5D,MAAOA,EAAI,cAAc,GAC5F;AAAA,QACJ,cAAA6Y;AAAA,MACR,IAAUjV,EAAM,SAAU;AACpB,UAAIyV,IAAwB,CAAC,CAACD,EAAmB;AACjD,aAAIC,KAAyBD,EAAmB,KAAK,CAAApZ,MAAO,CAAC6Y,EAAa7Y,EAAI,EAAE,CAAC,MAC/EqZ,IAAwB,KAEnBA;AAAA,IACR,GACDzV,EAAM,wBAAwB,MAAM;AAClC,UAAI0V;AACJ,YAAMC,IAAgB,OAAO,MAAMD,IAAwB1V,EAAM,SAAU,EAAC,iBAAiB,OAAO0V,IAAwB,CAAA,CAAE,EAAE;AAChI,aAAOC,IAAgB,KAAKA,IAAgB3V,EAAM,oBAAmB,EAAG,SAAS;AAAA,IAClF,GACDA,EAAM,4BAA4B,MAAM;AACtC,YAAMwV,IAAqBxV,EAAM,sBAAqB,EAAG;AACzD,aAAOA,EAAM,6BAA6B,KAAQwV,EAAmB,OAAO,CAAApZ,MAAOA,EAAI,aAAY,CAAE,EAAE,KAAK,CAAA0B,MAAKA,EAAE,mBAAmBA,EAAE,mBAAmB;AAAA,IAC5J,GACDkC,EAAM,kCAAkC,MAC/B,CAAA2N,MAAK;AACV,MAAA3N,EAAM,sBAAsB2N,EAAE,OAAO,OAAO;AAAA,IAC7C,GAEH3N,EAAM,sCAAsC,MACnC,CAAA2N,MAAK;AACV,MAAA3N,EAAM,0BAA0B2N,EAAE,OAAO,OAAO;AAAA,IACjD;AAAA,EAEJ;AAAA,EACD,WAAW,CAACvR,GAAK4D,MAAU;AACzB,IAAA5D,EAAI,iBAAiB,CAAC3E,GAAOkH,MAAS;AACpC,YAAM9F,IAAauD,EAAI,cAAe;AACtC,MAAA4D,EAAM,gBAAgB,CAAApC,MAAO;AAC3B,YAAIgY;AAEJ,YADAne,IAAQ,OAAOA,IAAU,MAAcA,IAAQ,CAACoB,GAC5CuD,EAAI,kBAAkBvD,MAAepB;AACvC,iBAAOmG;AAET,cAAMiY,IAAiB;AAAA,UACrB,GAAGjY;AAAA,QACJ;AACD,eAAAwX,GAAoBS,GAAgBzZ,EAAI,IAAI3E,IAAQme,IAAuBjX,KAAQ,OAAO,SAASA,EAAK,mBAAmB,OAAOiX,IAAuB,IAAM5V,CAAK,GAC7J6V;AAAA,MACf,CAAO;AAAA,IACF,GACDzZ,EAAI,gBAAgB,MAAM;AACxB,YAAM;AAAA,QACJ,cAAA6Y;AAAA,MACR,IAAUjV,EAAM,SAAU;AACpB,aAAO8V,GAAc1Z,GAAK6Y,CAAY;AAAA,IACvC,GACD7Y,EAAI,oBAAoB,MAAM;AAC5B,YAAM;AAAA,QACJ,cAAA6Y;AAAA,MACR,IAAUjV,EAAM,SAAU;AACpB,aAAO+V,GAAiB3Z,GAAK6Y,CAAY,MAAM;AAAA,IAChD,GACD7Y,EAAI,0BAA0B,MAAM;AAClC,YAAM;AAAA,QACJ,cAAA6Y;AAAA,MACR,IAAUjV,EAAM,SAAU;AACpB,aAAO+V,GAAiB3Z,GAAK6Y,CAAY,MAAM;AAAA,IAChD,GACD7Y,EAAI,eAAe,MAAM;AACvB,UAAIsL;AACJ,aAAI,OAAO1H,EAAM,QAAQ,sBAAuB,aACvCA,EAAM,QAAQ,mBAAmB5D,CAAG,KAErCsL,IAAwB1H,EAAM,QAAQ,uBAAuB,OAAO0H,IAAwB;AAAA,IACrG,GACDtL,EAAI,sBAAsB,MAAM;AAC9B,UAAIuL;AACJ,aAAI,OAAO3H,EAAM,QAAQ,yBAA0B,aAC1CA,EAAM,QAAQ,sBAAsB5D,CAAG,KAExCuL,IAAyB3H,EAAM,QAAQ,0BAA0B,OAAO2H,IAAyB;AAAA,IAC1G,GACDvL,EAAI,oBAAoB,MAAM;AAC5B,UAAI4Z;AACJ,aAAI,OAAOhW,EAAM,QAAQ,2BAA4B,aAC5CA,EAAM,QAAQ,wBAAwB5D,CAAG,KAE1C4Z,IAAyBhW,EAAM,QAAQ,4BAA4B,OAAOgW,IAAyB;AAAA,IAC5G,GACD5Z,EAAI,2BAA2B,MAAM;AACnC,YAAM6Z,IAAY7Z,EAAI,aAAc;AACpC,aAAO,CAAAuR,MAAK;AACV,YAAI4C;AACJ,QAAK0F,KACL7Z,EAAI,gBAAgBmU,IAAU5C,EAAE,WAAW,OAAO,SAAS4C,EAAQ,OAAO;AAAA,MAC3E;AAAA,IACF;AAAA,EACL;AACA,GACM6E,KAAsB,CAACS,GAAgB5b,GAAIxC,GAAOye,GAAiBlW,MAAU;AACjF,MAAIyK;AACJ,QAAMrO,IAAM4D,EAAM,OAAO/F,GAAI,EAAI;AAQjC,EAAIxC,KACG2E,EAAI,uBACP,OAAO,KAAKyZ,CAAc,EAAE,QAAQ,CAAAnY,MAAO,OAAOmY,EAAenY,CAAG,CAAC,GAEnEtB,EAAI,mBACNyZ,EAAe5b,CAAE,IAAI,OAGvB,OAAO4b,EAAe5b,CAAE,GAItBic,MAAoBzL,IAAerO,EAAI,YAAY,QAAQqO,EAAa,UAAUrO,EAAI,yBACxFA,EAAI,QAAQ,QAAQ,CAAAA,MAAOgZ,GAAoBS,GAAgBzZ,EAAI,IAAI3E,GAAOye,GAAiBlW,CAAK,CAAC;AAEzG;AACA,SAASsV,GAAatV,GAAOqV,GAAU;AACrC,QAAMJ,IAAejV,EAAM,SAAQ,EAAG,cAChCmW,IAAsB,CAAE,GACxBC,IAAsB,CAAE,GAGxBC,IAAc,SAAUC,GAAM9V,GAAO;AACzC,WAAO8V,EAAK,IAAI,CAAAla,MAAO;AACrB,UAAIma;AACJ,YAAM1d,IAAaid,GAAc1Z,GAAK6Y,CAAY;AAWlD,UAVIpc,MACFsd,EAAoB,KAAK/Z,CAAG,GAC5Bga,EAAoBha,EAAI,EAAE,IAAIA,KAE3Bma,IAAgBna,EAAI,YAAY,QAAQma,EAAc,WACzDna,IAAM;AAAA,QACJ,GAAGA;AAAA,QACH,SAASia,EAAYja,EAAI,OAAO;AAAA,MACjC,IAECvD;AACF,eAAOuD;AAAA,IAEf,CAAK,EAAE,OAAO,OAAO;AAAA,EAClB;AACD,SAAO;AAAA,IACL,MAAMia,EAAYhB,EAAS,IAAI;AAAA,IAC/B,UAAUc;AAAA,IACV,UAAUC;AAAA,EACX;AACH;AACA,SAASN,GAAc1Z,GAAKoa,GAAW;AACrC,MAAIC;AACJ,UAAQA,IAAoBD,EAAUpa,EAAI,EAAE,MAAM,OAAOqa,IAAoB;AAC/E;AACA,SAASV,GAAiB3Z,GAAKoa,GAAWxW,GAAO;AAC/C,MAAI0W;AACJ,MAAI,GAAGA,IAAgBta,EAAI,YAAY,QAAQsa,EAAc,QAAS,QAAO;AAC7E,MAAIC,IAAsB,IACtBC,IAAe;AACnB,SAAAxa,EAAI,QAAQ,QAAQ,CAAAya,MAAU;AAE5B,QAAI,EAAAD,KAAgB,CAACD,OAGjBE,EAAO,mBACLf,GAAce,GAAQL,CAAS,IACjCI,IAAe,KAEfD,IAAsB,KAKtBE,EAAO,WAAWA,EAAO,QAAQ,SAAQ;AAC3C,YAAMC,IAAyBf,GAAiBc,GAAQL,CAAS;AACjE,MAAIM,MAA2B,QAC7BF,IAAe,MACNE,MAA2B,WACpCF,IAAe,KACfD,IAAsB;AAAA,IAI9B;AAAA,EACA,CAAG,GACMA,IAAsB,QAAQC,IAAe,SAAS;AAC/D;AAEA,MAAMG,KAAsB,cACtBC,KAAe,CAACC,GAAMC,GAAMjX,MACzBkX,GAAoBC,EAASH,EAAK,SAAShX,CAAQ,CAAC,EAAE,YAAa,GAAEmX,EAASF,EAAK,SAASjX,CAAQ,CAAC,EAAE,YAAW,CAAE,GAEvHoX,KAA4B,CAACJ,GAAMC,GAAMjX,MACtCkX,GAAoBC,EAASH,EAAK,SAAShX,CAAQ,CAAC,GAAGmX,EAASF,EAAK,SAASjX,CAAQ,CAAC,CAAC,GAK3FqX,KAAO,CAACL,GAAMC,GAAMjX,MACjBsX,GAAaH,EAASH,EAAK,SAAShX,CAAQ,CAAC,EAAE,YAAa,GAAEmX,EAASF,EAAK,SAASjX,CAAQ,CAAC,EAAE,YAAW,CAAE,GAKhHuX,KAAoB,CAACP,GAAMC,GAAMjX,MAC9BsX,GAAaH,EAASH,EAAK,SAAShX,CAAQ,CAAC,GAAGmX,EAASF,EAAK,SAASjX,CAAQ,CAAC,CAAC,GAEpFwX,KAAW,CAACR,GAAMC,GAAMjX,MAAa;AACzC,QAAMyJ,IAAIuN,EAAK,SAAShX,CAAQ,GAC1B0J,IAAIuN,EAAK,SAASjX,CAAQ;AAKhC,SAAOyJ,IAAIC,IAAI,IAAID,IAAIC,IAAI,KAAK;AAClC,GACM+N,KAAQ,CAACT,GAAMC,GAAMjX,MAClBsX,GAAaN,EAAK,SAAShX,CAAQ,GAAGiX,EAAK,SAASjX,CAAQ,CAAC;AAKtE,SAASsX,GAAa7N,GAAGC,GAAG;AAC1B,SAAOD,MAAMC,IAAI,IAAID,IAAIC,IAAI,IAAI;AACnC;AACA,SAASyN,EAAS1N,GAAG;AACnB,SAAI,OAAOA,KAAM,WACX,MAAMA,CAAC,KAAKA,MAAM,SAAYA,MAAM,SAC/B,KAEF,OAAOA,CAAC,IAEb,OAAOA,KAAM,WACRA,IAEF;AACT;AAKA,SAASyN,GAAoBQ,GAAMC,GAAM;AAGvC,QAAMlO,IAAIiO,EAAK,MAAMZ,EAAmB,EAAE,OAAO,OAAO,GAClDpN,IAAIiO,EAAK,MAAMb,EAAmB,EAAE,OAAO,OAAO;AAGxD,SAAOrN,EAAE,UAAUC,EAAE,UAAQ;AAC3B,UAAMkO,IAAKnO,EAAE,MAAO,GACdoO,IAAKnO,EAAE,MAAO,GACdoO,IAAK,SAASF,GAAI,EAAE,GACpBG,IAAK,SAASF,GAAI,EAAE,GACpBG,IAAQ,CAACF,GAAIC,CAAE,EAAE,KAAM;AAG7B,QAAI,MAAMC,EAAM,CAAC,CAAC,GAAG;AACnB,UAAIJ,IAAKC;AACP,eAAO;AAET,UAAIA,IAAKD;AACP,eAAO;AAET;AAAA,IACN;AAGI,QAAI,MAAMI,EAAM,CAAC,CAAC;AAChB,aAAO,MAAMF,CAAE,IAAI,KAAK;AAI1B,QAAIA,IAAKC;AACP,aAAO;AAET,QAAIA,IAAKD;AACP,aAAO;AAAA,EAEb;AACE,SAAOrO,EAAE,SAASC,EAAE;AACtB;AAIA,MAAMuO,IAAa;AAAA,EACjB,cAAAlB;AAAA,EACA,2BAAAK;AAAA,EACA,MAAAC;AAAA,EACA,mBAAAE;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AACF,GAIMS,KAAa;AAAA,EACjB,iBAAiB,CAAA9Q,OACR;AAAA,IACL,SAAS,CAAE;AAAA,IACX,GAAGA;AAAA,EACJ;AAAA,EAEH,qBAAqB,OACZ;AAAA,IACL,WAAW;AAAA,IACX,eAAe;AAAA,EAChB;AAAA,EAEH,mBAAmB,CAAArH,OACV;AAAA,IACL,iBAAiBvC,EAAiB,WAAWuC,CAAK;AAAA,IAClD,kBAAkB,CAAA2N,MACTA,EAAE;AAAA,EAEZ;AAAA,EAEH,cAAc,CAACtQ,GAAQ2C,MAAU;AAC/B,IAAA3C,EAAO,mBAAmB,MAAM;AAC9B,YAAM+a,IAAYpY,EAAM,oBAAqB,EAAC,SAAS,MAAM,EAAE;AAC/D,UAAIqY,IAAW;AACf,iBAAWjc,KAAOgc,GAAW;AAC3B,cAAM3gB,IAAQ2E,KAAO,OAAO,SAASA,EAAI,SAASiB,EAAO,EAAE;AAC3D,YAAI,OAAO,UAAU,SAAS,KAAK5F,CAAK,MAAM;AAC5C,iBAAOygB,EAAW;AAEpB,YAAI,OAAOzgB,KAAU,aACnB4gB,IAAW,IACP5gB,EAAM,MAAMsf,EAAmB,EAAE,SAAS;AAC5C,iBAAOmB,EAAW;AAAA,MAG9B;AACM,aAAIG,IACKH,EAAW,OAEbA,EAAW;AAAA,IACnB,GACD7a,EAAO,iBAAiB,MAAM;AAC5B,YAAMiK,IAAWtH,EAAM,oBAAmB,EAAG,SAAS,CAAC;AAEvD,aAAI,QADUsH,KAAY,OAAO,SAASA,EAAS,SAASjK,EAAO,EAAE,MAChD,WACZ,QAEF;AAAA,IACR,GACDA,EAAO,eAAe,MAAM;AAC1B,UAAIib,GAAuBC;AAC3B,UAAI,CAAClb;AACH,cAAM,IAAI,MAAO;AAEnB,aAAOQ,EAAWR,EAAO,UAAU,SAAS,IAAIA,EAAO,UAAU,YAAYA,EAAO,UAAU,cAAc,SAASA,EAAO,iBAAkB,KAAIib,KAAyBC,IAAyBvY,EAAM,QAAQ,eAAe,OAAO,SAASuY,EAAuBlb,EAAO,UAAU,SAAS,MAAM,OAAOib,IAAwBJ,EAAW7a,EAAO,UAAU,SAAS;AAAA,IAC7W,GACDA,EAAO,gBAAgB,CAACmb,GAAMC,MAAU;AAWtC,YAAM/c,IAAmB2B,EAAO,oBAAqB,GAC/Cqb,IAAiB,OAAOF,IAAS,OAAeA,MAAS;AAC/D,MAAAxY,EAAM,WAAW,CAAApC,MAAO;AAEtB,cAAM+a,IAAkB/a,KAAO,OAAO,SAASA,EAAI,KAAK,CAAAE,MAAKA,EAAE,OAAOT,EAAO,EAAE,GACzEub,IAAgBhb,KAAO,OAAO,SAASA,EAAI,UAAU,CAAAE,MAAKA,EAAE,OAAOT,EAAO,EAAE;AAClF,YAAIwb,IAAa,CAAE,GAGfC,GACAC,IAAWL,IAAiBF,IAAO9c,MAAqB;AA8B5D,YA3BIkC,KAAO,QAAQA,EAAI,UAAUP,EAAO,gBAAiB,KAAIob,IACvDE,IACFG,IAAa,WAEbA,IAAa,QAIXlb,KAAO,QAAQA,EAAI,UAAUgb,MAAkBhb,EAAI,SAAS,IAC9Dkb,IAAa,YACJH,IACTG,IAAa,WAEbA,IAAa,WAKbA,MAAe,aAEZJ,KAEEhd,MACHod,IAAa,YAIfA,MAAe,OAAO;AACxB,cAAIE;AACJ,UAAAH,IAAa,CAAC,GAAGjb,GAAK;AAAA,YACpB,IAAIP,EAAO;AAAA,YACX,MAAM0b;AAAA,UAClB,CAAW,GAEDF,EAAW,OAAO,GAAGA,EAAW,WAAWG,IAAwBhZ,EAAM,QAAQ,yBAAyB,OAAOgZ,IAAwB,OAAO,iBAAiB;AAAA,QAC3K,MAAe,CAAIF,MAAe,WAExBD,IAAajb,EAAI,IAAI,CAAAE,MACfA,EAAE,OAAOT,EAAO,KACX;AAAA,UACL,GAAGS;AAAA,UACH,MAAMib;AAAA,QACP,IAEIjb,CACR,IACQgb,MAAe,WACxBD,IAAajb,EAAI,OAAO,CAAAE,MAAKA,EAAE,OAAOT,EAAO,EAAE,IAE/Cwb,IAAa,CAAC;AAAA,UACZ,IAAIxb,EAAO;AAAA,UACX,MAAM0b;AAAA,QAClB,CAAW;AAEH,eAAOF;AAAA,MACf,CAAO;AAAA,IACF,GACDxb,EAAO,kBAAkB,MAAM;AAC7B,UAAIqD,GAAMuY;AAEV,eADuBvY,KAAQuY,IAAwB5b,EAAO,UAAU,kBAAkB,OAAO4b,IAAwBjZ,EAAM,QAAQ,kBAAkB,OAAOU,IAAOrD,EAAO,eAAc,MAAO,UAC5K,SAAS;AAAA,IACjC,GACDA,EAAO,sBAAsB,CAAAob,MAAS;AACpC,UAAI/Q,GAAuBC;AAC3B,YAAMuR,IAAqB7b,EAAO,gBAAiB,GAC7C1B,IAAW0B,EAAO,YAAa;AACrC,aAAK1B,IAGDA,MAAaud,OAAwBxR,IAAwB1H,EAAM,QAAQ,yBAAyB,QAAO0H;AAAA,OAE/G,EAAA+Q,MAAS9Q,IAAyB3H,EAAM,QAAQ,sBAAsB,SAAO2H,KAEpE,KAEFhM,MAAa,SAAS,QAAQ,SAR5Bud;AAAA,IASV,GACD7b,EAAO,aAAa,MAAM;AACxB,UAAIoK,GAAuBuO;AAC3B,eAASvO,IAAwBpK,EAAO,UAAU,kBAAkB,OAAOoK,IAAwB,SAAWuO,IAAyBhW,EAAM,QAAQ,kBAAkB,OAAOgW,IAAyB,OAAS,CAAC,CAAC3Y,EAAO;AAAA,IAC1N,GACDA,EAAO,kBAAkB,MAAM;AAC7B,UAAI+P,GAAO+L;AACX,cAAQ/L,KAAS+L,IAAyB9b,EAAO,UAAU,oBAAoB,OAAO8b,IAAyBnZ,EAAM,QAAQ,oBAAoB,OAAOoN,IAAQ,CAAC,CAAC/P,EAAO;AAAA,IAC1K,GACDA,EAAO,cAAc,MAAM;AACzB,UAAI+b;AACJ,YAAMC,KAAcD,IAAwBpZ,EAAM,SAAQ,EAAG,YAAY,OAAO,SAASoZ,EAAsB,KAAK,CAAAtb,MAAKA,EAAE,OAAOT,EAAO,EAAE;AAC3I,aAAQgc,IAAqBA,EAAW,OAAO,SAAS,QAAnC;AAAA,IACtB,GACDhc,EAAO,eAAe,MAAM;AAC1B,UAAIic,GAAwBC;AAC5B,cAAQD,KAA0BC,IAAyBvZ,EAAM,WAAW,YAAY,OAAO,SAASuZ,EAAuB,UAAU,CAAAzb,MAAKA,EAAE,OAAOT,EAAO,EAAE,MAAM,OAAOic,IAAyB;AAAA,IACvM,GACDjc,EAAO,eAAe,MAAM;AAE1B,MAAA2C,EAAM,WAAW,CAAApC,MAAOA,KAAO,QAAQA,EAAI,SAASA,EAAI,OAAO,CAAAE,MAAKA,EAAE,OAAOT,EAAO,EAAE,IAAI,EAAE;AAAA,IAC7F,GACDA,EAAO,0BAA0B,MAAM;AACrC,YAAM7B,IAAU6B,EAAO,WAAY;AACnC,aAAO,CAAAsQ,MAAK;AACV,QAAKnS,MACLmS,EAAE,WAAW,QAAQA,EAAE,QAAS,GAChCtQ,EAAO,iBAAiB,QAAQA,EAAO,cAAc,QAAWA,EAAO,oBAAoB2C,EAAM,QAAQ,oBAAoB,OAAO,SAASA,EAAM,QAAQ,iBAAiB2N,CAAC,IAAI,EAAK;AAAA,MACvL;AAAA,IACF;AAAA,EACF;AAAA,EACD,aAAa,CAAA3N,MAAS;AACpB,IAAAA,EAAM,aAAa,CAAAzC,MAAWyC,EAAM,QAAQ,mBAAmB,OAAO,SAASA,EAAM,QAAQ,gBAAgBzC,CAAO,GACpHyC,EAAM,eAAe,CAAA0I,MAAgB;AACnC,UAAI8Q,GAAuB5Q;AAC3B,MAAA5I,EAAM,WAAW0I,IAAe,CAAE,KAAI8Q,KAAyB5Q,IAAsB5I,EAAM,iBAAiB,OAAO,SAAS4I,EAAoB,YAAY,OAAO4Q,IAAwB,EAAE;AAAA,IAC9L,GACDxZ,EAAM,uBAAuB,MAAMA,EAAM,mBAAoB,GAC7DA,EAAM,oBAAoB,OACpB,CAACA,EAAM,sBAAsBA,EAAM,QAAQ,sBAC7CA,EAAM,qBAAqBA,EAAM,QAAQ,kBAAkBA,CAAK,IAE9DA,EAAM,QAAQ,iBAAiB,CAACA,EAAM,qBACjCA,EAAM,qBAAsB,IAE9BA,EAAM,mBAAoB;AAAA,EAEvC;AACA,GAEMyZ,KAAkB;AAAA,EAAC5X;AAAA,EAASkO;AAAA,EAAkBhF;AAAA,EAAgBY;AAAA,EAAenG;AAAA,EAAgB4B;AAAA,EAAiBoJ;AAAA;AAAA,EAEpHC;AAAA;AAAA,EAEA0H;AAAA,EAAYnO;AAAA;AAAA,EAEZ6G;AAAA,EAAckB;AAAA,EAAeiB;AAAA,EAAYgC;AAAA,EAAchI;AAAY;AAInE,SAAS0M,GAAYnY,GAAS;AAC5B,MAAIoY,GAAoBC;AACxB,EAAI,QAAQ,IAAI,aAAa,iBAAiBrY,EAAQ,YAAYA,EAAQ,eACxE,QAAQ,KAAK,4BAA4B;AAE3C,QAAMsY,IAAY,CAAC,GAAGJ,IAAiB,IAAKE,IAAqBpY,EAAQ,cAAc,OAAOoY,IAAqB,CAAE,CAAC;AACtH,MAAI3Z,IAAQ;AAAA,IACV,WAAA6Z;AAAA,EACD;AACD,QAAMC,IAAiB9Z,EAAM,UAAU,OAAO,CAACsQ,GAAKjQ,MAC3C,OAAO,OAAOiQ,GAAKjQ,EAAQ,qBAAqB,OAAO,SAASA,EAAQ,kBAAkBL,CAAK,CAAC,GACtG,EAAE,GACC+Z,IAAe,CAAAxY,MACfvB,EAAM,QAAQ,eACTA,EAAM,QAAQ,aAAa8Z,GAAgBvY,CAAO,IAEpD;AAAA,IACL,GAAGuY;AAAA,IACH,GAAGvY;AAAA,EACJ;AAGH,MAAIyY,IAAe;AAAA,IACjB,GAFuB,CAAE;AAAA,IAGzB,IAAKJ,IAAwBrY,EAAQ,iBAAiB,OAAOqY,IAAwB,CAAE;AAAA,EACxF;AACD,EAAA5Z,EAAM,UAAU,QAAQ,CAAAK,MAAW;AACjC,QAAI4Z;AACJ,IAAAD,KAAgBC,IAAwB5Z,EAAQ,mBAAmB,OAAO,SAASA,EAAQ,gBAAgB2Z,CAAY,MAAM,OAAOC,IAAwBD;AAAA,EAChK,CAAG;AACD,QAAMjJ,IAAS,CAAE;AACjB,MAAImJ,IAAgB;AACpB,QAAMC,IAAe;AAAA,IACnB,WAAAN;AAAA,IACA,SAAS;AAAA,MACP,GAAGC;AAAA,MACH,GAAGvY;AAAA,IACJ;AAAA,IACD,cAAAyY;AAAA,IACA,QAAQ,CAAAI,MAAM;AACZ,MAAArJ,EAAO,KAAKqJ,CAAE,GACTF,MACHA,IAAgB,IAIhB,QAAQ,UAAU,KAAK,MAAM;AAC3B,eAAOnJ,EAAO;AACZ,UAAAA,EAAO,MAAK,EAAI;AAElB,QAAAmJ,IAAgB;AAAA,MACjB,CAAA,EAAE,MAAM,CAAAG,MAAS,WAAW,MAAM;AACjC,cAAMA;AAAA,MAChB,CAAS,CAAC;AAAA,IAEL;AAAA,IACD,OAAO,MAAM;AACX,MAAAra,EAAM,SAASA,EAAM,YAAY;AAAA,IAClC;AAAA,IACD,YAAY,CAAAzC,MAAW;AACrB,YAAM+c,IAAahd,EAAiBC,GAASyC,EAAM,OAAO;AAC1D,MAAAA,EAAM,UAAU+Z,EAAaO,CAAU;AAAA,IACxC;AAAA,IACD,UAAU,MACDta,EAAM,QAAQ;AAAA,IAEvB,UAAU,CAAAzC,MAAW;AACnB,MAAAyC,EAAM,QAAQ,iBAAiB,QAAQA,EAAM,QAAQ,cAAczC,CAAO;AAAA,IAC3E;AAAA,IACD,WAAW,CAACnB,GAAK8C,GAAOuB,MAAW;AACjC,UAAIgR;AACJ,cAAQA,IAAwBzR,EAAM,QAAQ,YAAY,OAAO,SAASA,EAAM,QAAQ,SAAS5D,GAAK8C,GAAOuB,CAAM,MAAM,OAAOgR,IAAwB,GAAGhR,IAAS,CAACA,EAAO,IAAIvB,CAAK,EAAE,KAAK,GAAG,IAAIA,CAAK;AAAA,IACzM;AAAA,IACD,iBAAiB,OACVc,EAAM,qBACTA,EAAM,mBAAmBA,EAAM,QAAQ,gBAAgBA,CAAK,IAEvDA,EAAM,iBAAkB;AAAA;AAAA;AAAA,IAKjC,aAAa,MACJA,EAAM,sBAAuB;AAAA;AAAA,IAGtC,QAAQ,CAAC/F,GAAIsgB,MAAc;AACzB,UAAIne,KAAOme,IAAYva,EAAM,6BAA6BA,EAAM,YAAW,GAAI,SAAS/F,CAAE;AAC1F,UAAI,CAACmC,MACHA,IAAM4D,EAAM,kBAAkB,SAAS/F,CAAE,GACrC,CAACmC;AACH,cAAI,QAAQ,IAAI,aAAa,eACrB,IAAI,MAAM,sCAAsCnC,CAAE,EAAE,IAEtD,IAAI,MAAO;AAGrB,aAAOmC;AAAA,IACR;AAAA,IACD,sBAAsBoC,EAAK,MAAM,CAACwB,EAAM,QAAQ,aAAa,GAAG,CAAAwa,MAAiB;AAC/E,UAAIC;AACJ,aAAAD,KAAiBC,IAAiBD,MAAkB,OAAOC,IAAiB,CAAE,GACvE;AAAA,QACL,QAAQ,CAAAllB,MAAS;AACf,gBAAMqL,IAAoBrL,EAAM,OAAO,OAAO;AAC9C,iBAAIqL,EAAkB,cACbA,EAAkB,cAEvBA,EAAkB,aACbA,EAAkB,KAEpB;AAAA,QACR;AAAA;AAAA,QAED,MAAM,CAAArL,MAAS;AACb,cAAImlB,GAAuBC;AAC3B,kBAAQD,KAAyBC,IAAqBplB,EAAM,YAAa,MAAK,QAAQolB,EAAmB,YAAY,OAAO,SAASA,EAAmB,SAAQ,MAAO,OAAOD,IAAwB;AAAA,QACvM;AAAA,QACD,GAAG1a,EAAM,UAAU,OAAO,CAACsQ,GAAKjQ,MACvB,OAAO,OAAOiQ,GAAKjQ,EAAQ,uBAAuB,OAAO,SAASA,EAAQ,qBAAqB,GACrG,EAAE;AAAA,QACL,GAAGma;AAAA,MACJ;AAAA,IACF,GAAE9a,EAAe6B,GAAS,gBAAgB,sBAAsB,CAAC;AAAA,IAClE,gBAAgB,MAAMvB,EAAM,QAAQ;AAAA,IACpC,eAAexB,EAAK,MAAM,CAACwB,EAAM,eAAc,CAAE,GAAG,CAAA4a,MAAc;AAChE,YAAMC,IAAiB,SAAUD,GAAYna,GAAQD,GAAO;AAC1D,eAAIA,MAAU,WACZA,IAAQ,IAEHoa,EAAW,IAAI,CAAAra,MAAa;AACjC,gBAAMlD,IAASiD,GAAaN,GAAOO,GAAWC,GAAOC,CAAM,GACrDqa,IAAoBva;AAC1B,iBAAAlD,EAAO,UAAUyd,EAAkB,UAAUD,EAAeC,EAAkB,SAASzd,GAAQmD,IAAQ,CAAC,IAAI,CAAE,GACvGnD;AAAA,QACjB,CAAS;AAAA,MACF;AACD,aAAOwd,EAAeD,CAAU;AAAA,IACjC,GAAElb,EAAe6B,GAAS,gBAAgB,eAAe,CAAC;AAAA,IAC3D,mBAAmB/C,EAAK,MAAM,CAACwB,EAAM,cAAa,CAAE,GAAG,CAAA8B,MAC9CA,EAAW,QAAQ,CAAAzE,MACjBA,EAAO,eAAgB,CAC/B,GACAqC,EAAe6B,GAAS,gBAAgB,mBAAmB,CAAC;AAAA,IAC/D,wBAAwB/C,EAAK,MAAM,CAACwB,EAAM,kBAAiB,CAAE,GAAG,CAAA+a,MACvDA,EAAY,OAAO,CAACzV,GAAKjI,OAC9BiI,EAAIjI,EAAO,EAAE,IAAIA,GACViI,IACN,EAAE,GACJ5F,EAAe6B,GAAS,gBAAgB,uBAAuB,CAAC;AAAA,IACnE,mBAAmB/C,EAAK,MAAM,CAACwB,EAAM,cAAa,GAAIA,EAAM,mBAAoB,CAAA,GAAG,CAAC8B,GAAYZ,MAAiB;AAC/G,UAAIE,IAAcU,EAAW,QAAQ,CAAAzE,MAAUA,EAAO,gBAAgB;AACtE,aAAO6D,EAAaE,CAAW;AAAA,IAChC,GAAE1B,EAAe6B,GAAS,gBAAgB,mBAAmB,CAAC;AAAA,IAC/D,WAAW,CAAAtB,MAAY;AACrB,YAAM5C,IAAS2C,EAAM,uBAAsB,EAAGC,CAAQ;AACtD,aAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC5C,KAC5C,QAAQ,MAAM,2BAA2B4C,CAAQ,mBAAmB,GAE/D5C;AAAA,IACb;AAAA,EACG;AACD,SAAO,OAAO2C,GAAOma,CAAY;AACjC,WAASjb,IAAQ,GAAGA,IAAQc,EAAM,UAAU,QAAQd,KAAS;AAC3D,UAAMmB,IAAUL,EAAM,UAAUd,CAAK;AACrC,IAAAmB,KAAW,QAAQA,EAAQ,eAAe,QAAQA,EAAQ,YAAYL,CAAK;AAAA,EAC/E;AACE,SAAOA;AACT;AAEA,SAASgb,KAAkB;AACzB,SAAO,CAAAhb,MAASxB,EAAK,MAAM,CAACwB,EAAM,QAAQ,IAAI,GAAG,CAAAib,MAAQ;AACvD,UAAM5F,IAAW;AAAA,MACf,MAAM,CAAE;AAAA,MACR,UAAU,CAAE;AAAA,MACZ,UAAU,CAAA;AAAA,IACX,GACK6F,IAAa,SAAUC,GAAc3a,GAAO4E,GAAW;AAC3D,MAAI5E,MAAU,WACZA,IAAQ;AAEV,YAAM8V,IAAO,CAAE;AACf,eAAS/Q,IAAI,GAAGA,IAAI4V,EAAa,QAAQ5V,KAAK;AAS5C,cAAMnJ,IAAM0I,GAAU9E,GAAOA,EAAM,UAAUmb,EAAa5V,CAAC,GAAGA,GAAGH,CAAS,GAAG+V,EAAa5V,CAAC,GAAGA,GAAG/E,GAAO,QAAW4E,KAAa,OAAO,SAASA,EAAU,EAAE;AAU5J,YAPAiQ,EAAS,SAAS,KAAKjZ,CAAG,GAE1BiZ,EAAS,SAASjZ,EAAI,EAAE,IAAIA,GAE5Bka,EAAK,KAAKla,CAAG,GAGT4D,EAAM,QAAQ,YAAY;AAC5B,cAAIob;AACJ,UAAAhf,EAAI,kBAAkB4D,EAAM,QAAQ,WAAWmb,EAAa5V,CAAC,GAAGA,CAAC,IAG5D6V,IAAuBhf,EAAI,oBAAoB,QAAQgf,EAAqB,WAC/Ehf,EAAI,UAAU8e,EAAW9e,EAAI,iBAAiBoE,IAAQ,GAAGpE,CAAG;AAAA,QAExE;AAAA,MACA;AACM,aAAOka;AAAA,IACR;AACD,WAAAjB,EAAS,OAAO6F,EAAWD,CAAI,GACxB5F;AAAA,EACX,GAAK3V,EAAeM,EAAM,SAAS,cAAc,eAAe,MAAMA,EAAM,oBAAmB,CAAE,CAAC;AAClG;AAcA,SAASqb,GAAWhG,GAAU;AAC5B,QAAMiG,IAAe,CAAE,GACjBC,IAAY,CAAAnf,MAAO;AACvB,QAAIqO;AACJ,IAAA6Q,EAAa,KAAKlf,CAAG,IAChBqO,IAAerO,EAAI,YAAY,QAAQqO,EAAa,UAAUrO,EAAI,mBACrEA,EAAI,QAAQ,QAAQmf,CAAS;AAAA,EAEhC;AACD,SAAAlG,EAAS,KAAK,QAAQkG,CAAS,GACxB;AAAA,IACL,MAAMD;AAAA,IACN,UAAUjG,EAAS;AAAA,IACnB,UAAUA,EAAS;AAAA,EACpB;AACH;AAsBA,SAASmG,GAAWlF,GAAMmF,GAAezb,GAAO;AAC9C,SAAIA,EAAM,QAAQ,qBACT0b,GAAwBpF,GAAMmF,GAAezb,CAAK,IAEpD2b,GAAuBrF,GAAMmF,GAAezb,CAAK;AAC1D;AACA,SAAS0b,GAAwBE,GAAcC,GAAW7b,GAAO;AAC/D,MAAI8b;AACJ,QAAMC,IAAsB,CAAE,GACxBC,IAAsB,CAAE,GACxBrY,KAAYmY,IAAwB9b,EAAM,QAAQ,0BAA0B,OAAO8b,IAAwB,KAC3GG,IAAoB,SAAUL,GAAcpb,GAAO;AACvD,IAAIA,MAAU,WACZA,IAAQ;AAEV,UAAM8V,IAAO,CAAE;AAGf,aAAS/Q,IAAI,GAAGA,IAAIqW,EAAa,QAAQrW,KAAK;AAC5C,UAAIkF;AACJ,UAAIrO,IAAMwf,EAAarW,CAAC;AACxB,YAAM2W,IAASpX,GAAU9E,GAAO5D,EAAI,IAAIA,EAAI,UAAUA,EAAI,OAAOA,EAAI,OAAO,QAAWA,EAAI,QAAQ;AAEnG,UADA8f,EAAO,gBAAgB9f,EAAI,gBACtBqO,IAAerO,EAAI,YAAY,QAAQqO,EAAa,UAAUjK,IAAQmD,GAAU;AAGnF,YAFAuY,EAAO,UAAUD,EAAkB7f,EAAI,SAASoE,IAAQ,CAAC,GACzDpE,IAAM8f,GACFL,EAAUzf,CAAG,KAAK,CAAC8f,EAAO,QAAQ,QAAQ;AAC5C,UAAA5F,EAAK,KAAKla,CAAG,GACb4f,EAAoB5f,EAAI,EAAE,IAAIA,GAC9B2f,EAAoB,KAAK3f,CAAG;AAC5B;AAAA,QACV;AACQ,YAAIyf,EAAUzf,CAAG,KAAK8f,EAAO,QAAQ,QAAQ;AAC3C,UAAA5F,EAAK,KAAKla,CAAG,GACb4f,EAAoB5f,EAAI,EAAE,IAAIA,GAC9B2f,EAAoB,KAAK3f,CAAG;AAC5B;AAAA,QACV;AAAA,MACA;AACQ,QAAAA,IAAM8f,GACFL,EAAUzf,CAAG,MACfka,EAAK,KAAKla,CAAG,GACb4f,EAAoB5f,EAAI,EAAE,IAAIA,GAC9B2f,EAAoB,KAAK3f,CAAG;AAAA,IAGtC;AACI,WAAOka;AAAA,EACR;AACD,SAAO;AAAA,IACL,MAAM2F,EAAkBL,CAAY;AAAA,IACpC,UAAUG;AAAA,IACV,UAAUC;AAAA,EACX;AACH;AACA,SAASL,GAAuBC,GAAcC,GAAW7b,GAAO;AAC9D,MAAImc;AACJ,QAAMJ,IAAsB,CAAE,GACxBC,IAAsB,CAAE,GACxBrY,KAAYwY,IAAyBnc,EAAM,QAAQ,0BAA0B,OAAOmc,IAAyB,KAG7GF,IAAoB,SAAUL,GAAcpb,GAAO;AACvD,IAAIA,MAAU,WACZA,IAAQ;AAIV,UAAM8V,IAAO,CAAE;AAGf,aAAS/Q,IAAI,GAAGA,IAAIqW,EAAa,QAAQrW,KAAK;AAC5C,UAAInJ,IAAMwf,EAAarW,CAAC;AAExB,UADasW,EAAUzf,CAAG,GAChB;AACR,YAAIma;AACJ,aAAKA,IAAgBna,EAAI,YAAY,QAAQma,EAAc,UAAU/V,IAAQmD,GAAU;AACrF,gBAAMuY,IAASpX,GAAU9E,GAAO5D,EAAI,IAAIA,EAAI,UAAUA,EAAI,OAAOA,EAAI,OAAO,QAAWA,EAAI,QAAQ;AACnG,UAAA8f,EAAO,UAAUD,EAAkB7f,EAAI,SAASoE,IAAQ,CAAC,GACzDpE,IAAM8f;AAAA,QAChB;AACQ,QAAA5F,EAAK,KAAKla,CAAG,GACb2f,EAAoB,KAAK3f,CAAG,GAC5B4f,EAAoB5f,EAAI,EAAE,IAAIA;AAAA,MACtC;AAAA,IACA;AACI,WAAOka;AAAA,EACR;AACD,SAAO;AAAA,IACL,MAAM2F,EAAkBL,CAAY;AAAA,IACpC,UAAUG;AAAA,IACV,UAAUC;AAAA,EACX;AACH;AAEA,SAASI,KAAqB;AAC5B,SAAO,CAACpc,GAAOC,MAAazB,EAAK,MAAM,CAACwB,EAAM,uBAAsB,GAAIA,EAAM,SAAU,EAAC,eAAeA,EAAM,WAAW,cAAcA,EAAM,oBAAqB,CAAA,GAAG,CAACqc,GAAaC,GAAeC,MAAiB;AACjN,QAAI,CAACF,EAAY,KAAK,UAAU,EAAEC,KAAiB,QAAQA,EAAc,WAAW,CAACC;AACnF,aAAOF;AAET,UAAMG,IAAgB,CAAC,GAAGF,EAAc,IAAI,CAAAxe,MAAKA,EAAE,EAAE,EAAE,OAAO,CAAAA,MAAKA,MAAMmC,CAAQ,GAAGsc,IAAe,eAAe,MAAS,EAAE,OAAO,OAAO,GACrIE,IAAiB,CAAArgB,MAAO;AAE5B,eAASmJ,IAAI,GAAGA,IAAIiX,EAAc,QAAQjX;AACxC,YAAInJ,EAAI,cAAcogB,EAAcjX,CAAC,CAAC,MAAM;AAC1C,iBAAO;AAGX,aAAO;AAAA,IACR;AACD,WAAOiW,GAAWa,EAAY,MAAMI,GAAgBzc,CAAK;AAAA,EAC1D,GAAEN,EAAeM,EAAM,SAAS,cAAc,oBAAoB,CAAC;AACtE;AAEA,SAAS0c,KAAyB;AAChC,SAAO,CAAC1c,GAAOC,MAAazB,EAAK,MAAM;AACrC,QAAIme;AACJ,WAAO,EAAEA,IAAmB3c,EAAM,UAAUC,CAAQ,MAAM,OAAO,SAAS0c,EAAiB,oBAAoB;AAAA,EAChH,GAAE,CAAAC,MAAmB;AACpB,QAAI,CAACA,EAAiB,QAAO,oBAAI,IAAK;AACtC,QAAIC,IAAsB,oBAAI,IAAK;AACnC,aAAS,IAAI,GAAG,IAAID,EAAgB,SAAS,QAAQ,KAAK;AACxD,YAAMrT,IAASqT,EAAgB,SAAS,CAAC,EAAE,gBAAgB3c,CAAQ;AACnE,eAAS6c,IAAI,GAAGA,IAAIvT,EAAO,QAAQuT,KAAK;AACtC,cAAMrlB,IAAQ8R,EAAOuT,CAAC;AACtB,YAAID,EAAoB,IAAIplB,CAAK,GAAG;AAClC,cAAIslB;AACJ,UAAAF,EAAoB,IAAIplB,KAASslB,IAAwBF,EAAoB,IAAIplB,CAAK,MAAM,OAAOslB,IAAwB,KAAK,CAAC;AAAA,QAC3I;AACU,UAAAF,EAAoB,IAAIplB,GAAO,CAAC;AAAA,MAE1C;AAAA,IACA;AACI,WAAOolB;AAAA,EACX,GAAKnd,EAAeM,EAAM,SAAS,cAAc,0BAA0BC,CAAQ,EAAE,CAAC;AACtF;AAEA,SAAS+c,KAAsB;AAC7B,SAAO,CAAAhd,MAASxB,EAAK,MAAM,CAACwB,EAAM,uBAAsB,GAAIA,EAAM,SAAQ,EAAG,eAAeA,EAAM,WAAW,YAAY,GAAG,CAACqV,GAAUiH,GAAeC,MAAiB;AACrK,QAAI,CAAClH,EAAS,KAAK,UAAU,EAAEiH,KAAiB,QAAQA,EAAc,WAAW,CAACC,GAAc;AAC9F,eAAShX,IAAI,GAAGA,IAAI8P,EAAS,SAAS,QAAQ9P;AAC5C,QAAA8P,EAAS,SAAS9P,CAAC,EAAE,gBAAgB,CAAE,GACvC8P,EAAS,SAAS9P,CAAC,EAAE,oBAAoB,CAAE;AAE7C,aAAO8P;AAAA,IACb;AACI,UAAM4H,IAAwB,CAAE,GAC1BC,IAAwB,CAAE;AAChC,KAACZ,KAAwC,CAAA,GAAI,QAAQ,CAAAxe,MAAK;AACxD,UAAIqf;AACJ,YAAM9f,IAAS2C,EAAM,UAAUlC,EAAE,EAAE;AACnC,UAAI,CAACT;AACH;AAEF,YAAM0K,IAAW1K,EAAO,YAAa;AACrC,UAAI,CAAC0K,GAAU;AACb,QAAI,QAAQ,IAAI,aAAa,gBAC3B,QAAQ,KAAK,oEAAoE1K,EAAO,EAAE,GAAG;AAE/F;AAAA,MACR;AACM,MAAA4f,EAAsB,KAAK;AAAA,QACzB,IAAInf,EAAE;AAAA,QACN,UAAAiK;AAAA,QACA,gBAAgBoV,IAAwBpV,EAAS,sBAAsB,OAAO,SAASA,EAAS,mBAAmBjK,EAAE,KAAK,MAAM,OAAOqf,IAAwBrf,EAAE;AAAA,MACzK,CAAO;AAAA,IACP,CAAK;AACD,UAAM0e,KAAiBF,KAAwC,CAAE,GAAE,IAAI,CAAAxe,MAAKA,EAAE,EAAE,GAC1E8S,IAAiB5Q,EAAM,kBAAmB,GAC1Cod,IAA4Bpd,EAAM,kBAAmB,EAAC,OAAO,CAAA3C,MAAUA,EAAO,oBAAoB;AACxG,IAAIkf,KAAgB3L,KAAkBwM,EAA0B,WAC9DZ,EAAc,KAAK,YAAY,GAC/BY,EAA0B,QAAQ,CAAA/f,MAAU;AAC1C,UAAIggB;AACJ,MAAAH,EAAsB,KAAK;AAAA,QACzB,IAAI7f,EAAO;AAAA,QACX,UAAUuT;AAAA,QACV,gBAAgByM,IAAwBzM,EAAe,sBAAsB,OAAO,SAASA,EAAe,mBAAmB2L,CAAY,MAAM,OAAOc,IAAwBd;AAAA,MAC1L,CAAS;AAAA,IACT,CAAO;AAEH,QAAIe,GACAC;AAGJ,aAAST,IAAI,GAAGA,IAAIzH,EAAS,SAAS,QAAQyH,KAAK;AACjD,YAAM1gB,IAAMiZ,EAAS,SAASyH,CAAC;AAE/B,UADA1gB,EAAI,gBAAgB,CAAE,GAClB6gB,EAAsB;AACxB,iBAAS1X,IAAI,GAAGA,IAAI0X,EAAsB,QAAQ1X,KAAK;AACrD,UAAA+X,IAAsBL,EAAsB1X,CAAC;AAC7C,gBAAMtL,IAAKqjB,EAAoB;AAG/B,UAAAlhB,EAAI,cAAcnC,CAAE,IAAIqjB,EAAoB,SAASlhB,GAAKnC,GAAIqjB,EAAoB,eAAe,CAAAE,MAAc;AAC7G,YAAAphB,EAAI,kBAAkBnC,CAAE,IAAIujB;AAAA,UACxC,CAAW;AAAA,QACX;AAEM,UAAIN,EAAsB,QAAQ;AAChC,iBAAS3X,IAAI,GAAGA,IAAI2X,EAAsB,QAAQ3X,KAAK;AACrD,UAAAgY,IAAsBL,EAAsB3X,CAAC;AAC7C,gBAAMtL,IAAKsjB,EAAoB;AAE/B,cAAIA,EAAoB,SAASnhB,GAAKnC,GAAIsjB,EAAoB,eAAe,CAAAC,MAAc;AACzF,YAAAphB,EAAI,kBAAkBnC,CAAE,IAAIujB;AAAA,UACxC,CAAW,GAAG;AACF,YAAAphB,EAAI,cAAc,aAAa;AAC/B;AAAA,UACZ;AAAA,QACA;AACQ,QAAIA,EAAI,cAAc,eAAe,OACnCA,EAAI,cAAc,aAAa;AAAA,MAEzC;AAAA,IACA;AACI,UAAMqgB,IAAiB,CAAArgB,MAAO;AAE5B,eAASmJ,IAAI,GAAGA,IAAIiX,EAAc,QAAQjX;AACxC,YAAInJ,EAAI,cAAcogB,EAAcjX,CAAC,CAAC,MAAM;AAC1C,iBAAO;AAGX,aAAO;AAAA,IACR;AAGD,WAAOiW,GAAWnG,EAAS,MAAMoH,GAAgBzc,CAAK;AAAA,EAC1D,GAAKN,EAAeM,EAAM,SAAS,cAAc,uBAAuB,MAAMA,EAAM,oBAAmB,CAAE,CAAC;AAC1G;AA8IA,SAASyd,GAAsB9e,GAAM;AACnC,SAAO,CAAAqB,MAASxB,EAAK,MAAM,CAACwB,EAAM,WAAW,YAAYA,EAAM,yBAA0B,GAAEA,EAAM,QAAQ,uBAAuB,SAAYA,EAAM,SAAU,EAAC,QAAQ,GAAG,CAAC0d,GAAYrI,MAAa;AAChM,QAAI,CAACA,EAAS,KAAK;AACjB,aAAOA;AAET,UAAM;AAAA,MACJ,UAAA9C;AAAA,MACA,WAAAL;AAAA,IACN,IAAQwL;AACJ,QAAI;AAAA,MACF,MAAApH;AAAA,MACA,UAAAqH;AAAA,MACA,UAAAC;AAAA,IACN,IAAQvI;AACJ,UAAMwI,IAAYtL,IAAWL,GACvB4L,IAAUD,IAAYtL;AAC5B,IAAA+D,IAAOA,EAAK,MAAMuH,GAAWC,CAAO;AACpC,QAAIC;AACJ,IAAK/d,EAAM,QAAQ,uBAOjB+d,IAAoB;AAAA,MAClB,MAAAzH;AAAA,MACA,UAAAqH;AAAA,MACA,UAAAC;AAAA,IACD,IAVDG,IAAoB1C,GAAW;AAAA,MAC7B,MAAA/E;AAAA,MACA,UAAAqH;AAAA,MACA,UAAAC;AAAA,IACR,CAAO,GAQHG,EAAkB,WAAW,CAAE;AAC/B,UAAMxC,IAAY,CAAAnf,MAAO;AACvB,MAAA2hB,EAAkB,SAAS,KAAK3hB,CAAG,GAC/BA,EAAI,QAAQ,UACdA,EAAI,QAAQ,QAAQmf,CAAS;AAAA,IAEhC;AACD,WAAAwC,EAAkB,KAAK,QAAQxC,CAAS,GACjCwC;AAAA,EACR,GAAEre,EAAeM,EAAM,SAAS,cAAc,uBAAuB,CAAC;AACzE;AAEA,SAASge,KAAoB;AAC3B,SAAO,CAAAhe,MAASxB,EAAK,MAAM,CAACwB,EAAM,SAAU,EAAC,SAASA,EAAM,qBAAsB,CAAA,GAAG,CAACie,GAAS5I,MAAa;AAC1G,QAAI,CAACA,EAAS,KAAK,UAAU,EAAE4I,KAAW,QAAQA,EAAQ;AACxD,aAAO5I;AAET,UAAM6I,IAAele,EAAM,SAAQ,EAAG,SAChCme,IAAiB,CAAE,GAGnBC,IAAmBF,EAAa,OAAO,CAAAG,MAAQ;AACnD,UAAI1B;AACJ,cAAQA,IAAmB3c,EAAM,UAAUqe,EAAK,EAAE,MAAM,OAAO,SAAS1B,EAAiB,WAAY;AAAA,IAC3G,CAAK,GACK2B,IAAiB,CAAE;AACzB,IAAAF,EAAiB,QAAQ,CAAAG,MAAa;AACpC,YAAMlhB,IAAS2C,EAAM,UAAUue,EAAU,EAAE;AAC3C,MAAKlhB,MACLihB,EAAeC,EAAU,EAAE,IAAI;AAAA,QAC7B,eAAelhB,EAAO,UAAU;AAAA,QAChC,eAAeA,EAAO,UAAU;AAAA,QAChC,WAAWA,EAAO,aAAY;AAAA,MAC/B;AAAA,IACP,CAAK;AACD,UAAMmhB,IAAW,CAAAlI,MAAQ;AAGvB,YAAMmI,IAAanI,EAAK,IAAI,CAAAla,OAAQ;AAAA,QAClC,GAAGA;AAAA,MACX,EAAQ;AACF,aAAAqiB,EAAW,KAAK,CAACxH,GAAMC,MAAS;AAC9B,iBAAS3R,IAAI,GAAGA,IAAI6Y,EAAiB,QAAQ7Y,KAAK,GAAG;AACnD,cAAImZ;AACJ,gBAAMH,IAAYH,EAAiB7Y,CAAC,GAC9BoZ,IAAaL,EAAeC,EAAU,EAAE,GACxCK,IAAgBD,EAAW,eAC3BE,KAAUH,IAAkBH,KAAa,OAAO,SAASA,EAAU,SAAS,OAAOG,IAAkB;AAC3G,cAAII,IAAU;AAGd,cAAIF,GAAe;AACjB,kBAAMG,IAAS9H,EAAK,SAASsH,EAAU,EAAE,GACnCS,IAAS9H,EAAK,SAASqH,EAAU,EAAE,GACnCU,IAAaF,MAAW,QACxBG,IAAaF,MAAW;AAC9B,gBAAIC,KAAcC,GAAY;AAC5B,kBAAIN,MAAkB,QAAS,QAAOK,IAAa,KAAK;AACxD,kBAAIL,MAAkB,OAAQ,QAAOK,IAAa,IAAI;AACtD,cAAAH,IAAUG,KAAcC,IAAa,IAAID,IAAaL,IAAgB,CAACA;AAAA,YACrF;AAAA,UACA;AAMU,cALIE,MAAY,MACdA,IAAUH,EAAW,UAAU1H,GAAMC,GAAMqH,EAAU,EAAE,IAIrDO,MAAY;AACd,mBAAID,MACFC,KAAW,KAETH,EAAW,kBACbG,KAAW,KAENA;AAAA,QAEnB;AACQ,eAAO7H,EAAK,QAAQC,EAAK;AAAA,MACjC,CAAO,GAGDuH,EAAW,QAAQ,CAAAriB,MAAO;AACxB,YAAIqO;AACJ,QAAA0T,EAAe,KAAK/hB,CAAG,IAClBqO,IAAerO,EAAI,YAAY,QAAQqO,EAAa,WACvDrO,EAAI,UAAUoiB,EAASpiB,EAAI,OAAO;AAAA,MAE5C,CAAO,GACMqiB;AAAA,IACR;AACD,WAAO;AAAA,MACL,MAAMD,EAASnJ,EAAS,IAAI;AAAA,MAC5B,UAAU8I;AAAA,MACV,UAAU9I,EAAS;AAAA,IACpB;AAAA,EACL,GAAK3V,EAAeM,EAAM,SAAS,cAAc,qBAAqB,MAAMA,EAAM,oBAAmB,CAAE,CAAC;AACxG;ACl8GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,SAASmf,EAAWC,GAAM7pB,GAAO;AAC/B,SAAQ6pB,IAAcC,GAAiBD,CAAI,IAAiB,gBAAAvoB,EAAM,cAAcuoB,GAAM7pB,CAAK,IAAI6pB,IAAhF;AACjB;AACA,SAASC,GAAiBC,GAAW;AACnC,SAAOC,GAAiBD,CAAS,KAAK,OAAOA,KAAc,cAAcE,GAAkBF,CAAS;AACtG;AACA,SAASC,GAAiBD,GAAW;AACnC,SAAO,OAAOA,KAAc,eAAe,MAAM;AAC/C,UAAMG,IAAQ,OAAO,eAAeH,CAAS;AAC7C,WAAOG,EAAM,aAAaA,EAAM,UAAU;AAAA,EAC9C,GAAM;AACN;AACA,SAASD,GAAkBF,GAAW;AACpC,SAAO,OAAOA,KAAc,YAAY,OAAOA,EAAU,YAAa,YAAY,CAAC,cAAc,mBAAmB,EAAE,SAASA,EAAU,SAAS,WAAW;AAC/J;AACA,SAASI,GAAcne,GAAS;AAE9B,QAAMoe,IAAkB;AAAA,IACtB,OAAO,CAAE;AAAA;AAAA,IAET,eAAe,MAAM;AAAA,IAAE;AAAA;AAAA,IAEvB,qBAAqB;AAAA,IACrB,GAAGpe;AAAA,EACJ,GAGK,CAACqe,CAAQ,IAAI/oB,EAAM,SAAS,OAAO;AAAA,IACvC,SAAS6iB,GAAYiG,CAAe;AAAA,EACxC,EAAI,GAGI,CAACtY,GAAOwY,CAAQ,IAAIhpB,EAAM,SAAS,MAAM+oB,EAAS,QAAQ,YAAY;AAI5E,SAAAA,EAAS,QAAQ,WAAW,CAAAE,OAAS;AAAA,IACnC,GAAGA;AAAA,IACH,GAAGve;AAAA,IACH,OAAO;AAAA,MACL,GAAG8F;AAAA,MACH,GAAG9F,EAAQ;AAAA,IACZ;AAAA;AAAA;AAAA,IAGD,eAAe,CAAAhE,MAAW;AACxB,MAAAsiB,EAAStiB,CAAO,GAChBgE,EAAQ,iBAAiB,QAAQA,EAAQ,cAAchE,CAAO;AAAA,IACpE;AAAA,EACA,EAAI,GACKqiB,EAAS;AAClB;AC3BO,MAAMG,KAAa,CAAC;AAAA,EACzB,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAnX,IAAO;AAAA,EACP,UAAAoX,IAAW;AAAA,EACX,SAAA/qB;AACF,MAAuB;AAEX,EAAA4qB,IAAAA,IAAU,IAAI,IAAIA,GAE5BD,IAAO,KAAK,IAAI,KAAK,IAAIA,GAAM,CAAC,GAAGE,CAAU,GAElCE,IAAA,KAAK,IAAI,KAAK,IAAIA,GAAU,CAAC,GAAGH,IAAU,CAAC;AAEhD,QAAAI,IAAY,MAAM,KAAK,EAAE,QAAQH,KAAc,CAAC7S,GAAGnO,MAAUA,CAAK,GAGlEohB,IAAeL,IAAU,IAAI;AAE/B,MAAAM;AAEJ,SAAIL,IAAaI,IAEPC,IAAAF,IACCL,IAAO,KAAKC,IAEbM,IAAAF,EAAU,MAAM,GAAGC,KAAgBF,IAAW,IAAIA,IAAW,IAAI,EAAE,IAClEJ,IAAOC,KAAWC,IAEnBK,IAAAF,EAAU,MAAMH,IAAaI,KAAgBF,IAAW,IAAIA,IAAW,IAAI,IAAIF,CAAU,IAGjGK,IAAQF,EAAU;AAAA,IAChBL,IAAO,KAAKC,KAAWG,IAAW,IAAIA,IAAW,IAAI;AAAA,IACrDJ,KAAQC,KAAWG,IAAW,IAAIA,IAAW,IAAI;AAAA,EACnD,0BAIC,OAAI,EAAA,WAAW1qB,EAAG,QAAQL,KAAA,gBAAAA,EAAS,IAAI,GACrC,UAAA;AAAA,IACC2T,KAAAvT,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAWR,EAAG,+EAA+EL,KAAA,gBAAAA,EAAS,MAAM;AAAA,QAC5G,UAAU2qB,KAAQ;AAAA,QAClB,SAAS,MAAMA,IAAO,KAAKG,EAAWH,IAAO,CAAC;AAAA,QAE9C,UAACvqB,gBAAAA,EAAA,IAAAyG,IAAA,EAAK,MAAK,qBAAoB,WAAU,aAAa,CAAA;AAAA,MAAA;AAAA,IACxD;AAAA,IAEDgkB,IAAaI,KACZF,IAAW,KACXC,EAAU,MAAM,GAAGL,IAAO,KAAKC,IAAU,IAAIG,CAAQ,EAAE,IAAI,CAAC3oB,MAC1DhC,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAWR,EAAG,mDAAmDL,KAAA,gBAAAA,EAAS,MAAM;AAAA,QAChF,SAAS,MAAMoC,MAAUuoB,IAAO,KAAKG,EAAW1oB,CAAK;AAAA,QAEpD,UAAQA,IAAA;AAAA,MAAA;AAAA,MANJA;AAAA,IAAA,CAQR;AAAA,IACFyoB,IAAaI,KAAgBF,IAAW,KAAKJ,IAAO,IAAIC,KACvDxqB,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAWR,EAAG,uEAAuEL,KAAA,gBAAAA,EAAS,QAAQ;AAAA,QACvG,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,IAEDkrB,EAAM,IAAI,CAAC9oB,MAAU;AACd,YAAA+oB,IAAS/oB,MAAUuoB,IAAO;AAG9B,aAAAvqB,gBAAAA,EAAA;AAAA,QAACS;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,WAAWR;AAAA,YACT;AAAA,YACA;AAAA,cACE,CAAC,8BAA8BL,KAAA,gBAAAA,EAAS,MAAM,EAAE,GAAGmrB;AAAA,YACrD;AAAA,YACAnrB,KAAA,gBAAAA,EAAS;AAAA,UACX;AAAA,UACA,QAAQmrB,IAAS,cAAc;AAAA,UAC/B,SAAS,MAAM,CAACA,KAAUL,EAAW1oB,CAAK;AAAA,UAEzC,UAAQA,IAAA;AAAA,QAAA;AAAA,QAZJA;AAAA,MAaP;AAAA,IAAA,CAEH;AAAA,IACAyoB,IAAaI,KAAgBF,IAAW,KAAKJ,IAAOE,IAAaD,KAChExqB,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAWR,EAAG,uEAAuEL,KAAA,gBAAAA,EAAS,QAAQ;AAAA,QACvG,UAAA;AAAA,MAAA;AAAA,IAED;AAAA,IAED6qB,IAAaI,KACZF,IAAW,KACXC,EAAU,MAAML,KAAQE,IAAaD,IAAUC,IAAaA,IAAaE,GAAUF,CAAU,EAAE,IAAI,CAACzoB,MAClGhC,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,WAAWR,EAAG,mDAAmDL,KAAA,gBAAAA,EAAS,MAAM;AAAA,QAChF,QAAO;AAAA,QACP,SAAS,MAAMoC,MAAUuoB,IAAO,KAAKG,EAAW1oB,CAAK;AAAA,QAEpD,UAAQA,IAAA;AAAA,MAAA;AAAA,MANJA;AAAA,IAAA,CAQR;AAAA,IACFuR,KACCvT,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,WAAWR,EAAG,+EAA+EL,KAAA,gBAAAA,EAAS,MAAM;AAAA,QAC5G,UAAU2qB,KAAQE;AAAA,QAClB,SAAS,MAAMF,IAAOE,KAAcC,EAAWH,CAAI;AAAA,QAEnD,UAAAvqB,gBAAAA,EAAAA,IAACyG,IAAK,EAAA,MAAK,oBAAoB,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACjC,GAEJ;AAEJ,GC5JaukB,KAAkB,CAAC,EAAE,MAAAT,GAAM,WAAArN,GAAW,UAAAJ,GAAU,mBAAAmO,GAAmB,WAAAC,GAAW,SAAAtrB,QAAoC;AAC7H,QAAMurB,IAAWrO,IAAWyN,GACtBa,IAAWD,IAAWD,IAAYA,IAAYC;AAEpD,gCACG,OAAI,EAAA,WAAWlrB,EAAG,4CAA4CL,KAAA,gBAAAA,EAAS,IAAI,GAC1E,UAAA;AAAA,IAAAW,gBAAAA,OAAC,UAAK,WAAWN,EAAG,2CAA2CL,KAAA,gBAAAA,EAAS,YAAY,GAAG,UAAA;AAAA,MAAA;AAAA,MAC3EwrB;AAAA,MAAS;AAAA,MAAKF;AAAA,IAAA,GAC1B;AAAA,IACAlrB,gBAAAA,EAAA;AAAA,MAACsqB;AAAA,MAAA;AAAA,QACC,YAAYpN;AAAA,QACZ,YAAY,CAACT,MAAcwO,EAAkBxO,CAAS;AAAA,QACtD,MAAA8N;AAAA,QACA,UAAU;AAAA,QACV,SAAS3qB,KAAA,gBAAAA,EAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACpB,GACF;AAEJ,GCvBayrB,KAAU,CAAmB;AAAA,EACxC,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAhhB;AAAA,EACA,SAAA3K;AAAA,EACA,YAAAqoB;AAAA,EACA,OAAAuD,IAAQ;AACV,MAAgC;AAC9B,QAAMC,IAAoBxD,MAAe,MAAS1d,EAAM,aAAiB,IAAA,GAEnEmhB,IAAkB;AAAA,IACtB,WAAWnhB,EAAM,aAAa;AAAA,IAC9B,WAAWA,EAAM,gBAAgB,EAAE,KAAK;AAAA,IACxC,UAAUA,EAAM,SAAS,EAAE,WAAW;AAAA,IACtC,MAAMA,EAAM,SAAS,EAAE,WAAW,YAAY;AAAA,IAC9C,mBAAmBA,EAAM;AAAA,IACzB,SAAS3K,KAAA,gBAAAA,EAAS;AAAA,EACpB;AAEA,gCACG,OAAI,EAAA,WAAWK,EAAG,gCAAgCL,KAAA,gBAAAA,EAAS,IAAI,GAC9D,UAAA;AAAA,IAAAW,gBAAAA,OAAC+E,MAAM,WAAWrF,EAAG,UAAUL,KAAA,gBAAAA,EAAS,KAAK,GAC1C,UAAA;AAAA,MACC2rB,KAAAvrB,gBAAAA,EAAA,IAACuF,MAAY,WAAU,QACpB,YAAM,gBAAgB,EAAE,IAAI,CAAC2H,MAC5BlN,gBAAAA,EAAA;AAAA,QAAC0F;AAAA,QAAA;AAAA,UAEC,WAAWzF;AAAA,YACT;AAAA,YACA;AAAA,cACE,2CAA2CqrB,MAAS;AAAA,YACtD;AAAA,YACA1rB,KAAA,gBAAAA,EAAS;AAAA,UACX;AAAA,UAEC,UAAYsN,EAAA,QAAQ,IAAI,CAAClB,MACxBhM,gBAAAA,EAAA;AAAA,YAAC2F;AAAA,YAAA;AAAA,cAEC,WAAW1F;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,QAAQqrB,MAAS;AAAA,gBACnB;AAAA,gBACA1rB,KAAA,gBAAAA,EAAS;AAAA,cACX;AAAA,cAEC,UAAAoM,EAAO,gBAAgB,OAAO0d,EAAW1d,EAAO,OAAO,UAAU,QAAQA,EAAO,WAAY,CAAA;AAAA,YAAA;AAAA,YATxFA,EAAO;AAAA,UAWf,CAAA;AAAA,QAAA;AAAA,QAtBIkB,EAAY;AAAA,MAwBpB,CAAA,GACH;AAAA,MAEDlN,gBAAAA,EAAA,IAAAwF,IAAA,EACE,UAAM+E,EAAA,cAAc,KAAK,SACxBA,EAAM,YAAc,EAAA,KAAK,IAAI,CAAC5D,GAAKI,MACjC/G,gBAAAA,EAAA;AAAA,QAAC0F;AAAA,QAAA;AAAA,UAEC,WAAWzF;AAAA,YACT;AAAA,YACA;AAAA,cACE,qFAAqFqrB,MAAS;AAAA,cAC9F,qDAAqDA,MAAS;AAAA,YAChE;AAAA,YACA1rB,KAAA,gBAAAA,EAAS;AAAA,UACX;AAAA,UAEC,YAAI,gBAAgB,EAAE,IAAI,CAAC+K,GAAMghB,MAChC3rB,gBAAAA,EAAA;AAAA,YAAC4F;AAAA,YAAA;AAAA,cAEC,WAAW3F;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,QAAQqrB,MAAS;AAAA,kBACjB,eAAeK,MAAc;AAAA,gBAC/B;AAAA,gBACA/rB,KAAA,gBAAAA,EAAS;AAAA,cACX;AAAA,cAEC,UAAA8pB,EAAW/e,EAAK,OAAO,UAAU,MAAM,EAAE,GAAGA,EAAK,WAAc,GAAA,UAAA5D,EAAU,CAAA;AAAA,YAAA;AAAA,YAVrE4D,EAAK;AAAA,UAYb,CAAA;AAAA,QAAA;AAAA,QAxBIhE,EAAI;AAAA,MAAA,CA0BZ,IAEA3G,gBAAAA,EAAA,IAAA0F,GAAA,EACC,gCAACE,IAAU,EAAA,WAAU,oBAAmB,SAAS2E,EAAM,gBAAgB,QACpE,UAAAihB,EAAA,CACH,GACF,EAEJ,CAAA;AAAA,IAAA,GACF;AAAA,IACCC,IACC,OAAOxD,KAAe,aACpBA,EAAWyD,CAAe,IAEzB1rB,gBAAAA,EAAAA,IAAAgrB,IAAA,EAAiB,GAAGU,EAAiB,CAAA,IAEtC;AAAA,EAAA,GACN;AAEJ,GC/GaE,KAAS,CAAmB;AAAA,EACvC,MAAAN;AAAA,EACA,eAAAC;AAAA,EACA,OAAAhhB;AAAA,EACA,SAAA3K;AAAA,EACA,OAAA4rB,IAAQ;AACV,4BAEK,OAAI,EAAA,WAAWvrB,EAAG,UAAUL,KAAA,gBAAAA,EAAS,KAAK,GACxC,UAAA2K,EAAM,cAAc,KAAK,SACxBA,EAAM,cAAc,KAAK,IAAI,CAAC5D,MAC5B3G,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IAEC,WAAWC;AAAA,MACT;AAAA,QACE,qFAAqFqrB,MAAS;AAAA,QAC9F,qDAAqDA,MAAS;AAAA,MAChE;AAAA,MACA1rB,KAAA,gBAAAA,EAAS;AAAA,IACX;AAAA,IAEC,YAAI,gBAAgB,EAAE,IAAI,CAAC+K,GAAMlB,MAAU;AAC1C,YAAMuC,IAASzB,EAAM,gBAAA,EAAkB,CAAC,EAAE,QAAQd,CAAK;AAGrD,aAAAlJ,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWN;AAAA,YACT;AAAA,YACA;AAAA,cACE,QAAQqrB,MAAS;AAAA,cACjB,eAAe7hB,MAAU;AAAA,YAC3B;AAAA,YACA7J,KAAA,gBAAAA,EAAS;AAAA,UACX;AAAA,UAEC,UAAA;AAAA,YAAA2rB,KACEvrB,gBAAAA,EAAA,IAAA,KAAA,EAAE,WAAU,aAAa,UAAW0pB,EAAA1d,EAAO,OAAO,UAAU,QAAQA,EAAO,WAAY,CAAA,GAAE;AAAA,YAE5FhM,gBAAAA,EAAAA,IAAC,KAAG,EAAA,UAAA0pB,EAAW/e,EAAK,OAAO,UAAU,MAAMA,EAAK,WAAY,CAAA,EAAE,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAbzDA,EAAK;AAAA,MAcZ;AAAA,IAEH,CAAA;AAAA,EAAA;AAAA,EA9BIhE,EAAI;AAAA,CAgCZ,IAEA3G,gBAAAA,EAAA,IAAA,OAAA,EAAK,YAAM,CAAA,GAEhB,GClCS6rB,KAAY,CAAmB;AAAA,EAC1C,SAAAzd;AAAA,EACA,MAAAoX;AAAA,EACA,eAAA+F,IAAgB;AAAA,EAChB,MAAAD,IAAO;AAAA,EACP,SAAA1rB;AAAA,EACA,YAAAqoB,IAAa;AAAA,EACb,OAAAuD;AAAA,EACA,UAAA1O,IAAW;AACb,MAA6B;AAC3B,QAAM,CAAC+J,GAAeiF,CAAgB,IAAI5kB,EAA6B,CAAA,CAAE,GACnE,CAACshB,GAASuD,CAAU,IAAI7kB,EAAuB,CAAA,CAAE,GACjD,CAAC8kB,GAAiBC,CAAa,IAAI/kB,EAA0B;AAAA,IACjE,WAAW;AAAA,IACX,UAAA4V;AAAA,EAAA,CACD,GAEKvS,IAAQ0f,GAAc;AAAA,IAC1B,MAAAzE;AAAA,IACA,SAAApX;AAAA,IACA,OAAO,EAAE,eAAAyY,GAAe,SAAA2B,GAAS,YAAYwD,EAAgB;AAAA,IAC7D,oBAAoB;AAAA,IACpB,iBAAiBD;AAAA,IACjB,uBAAuBD;AAAA,IACvB,oBAAoBG;AAAA,IACpB,iBAAiB1G,GAAgB;AAAA,IACjC,qBAAqBgC,GAAoB;AAAA,IACzC,mBAAmBgB,GAAkB;AAAA,IACrC,oBAAoB5B,GAAmB;AAAA,IACvC,wBAAwBM,GAAuB;AAAA,IAC/C,uBAAuBe,GAAsB;AAAA,EAAA,CAC9C,GAEK,EAAE,UAAAkE,EAAS,IAAI3lB,GAAU;AAE/B,SAAO2lB,IACJlsB,gBAAAA,EAAA,IAAA4rB,IAAA,EAAO,OAAArhB,GAAc,eAAAghB,GAA8B,OAAAC,GAAc,MAAAF,GAAY,SAAA1rB,EAAA,CAAkB,IAEhGI,gBAAAA,MAACqrB,MAAQ,OAAA9gB,GAAc,eAAAghB,GAA8B,OAAAC,GAAc,MAAAF,GAAY,YAAArD,GAAwB,SAAAroB,GAAkB;AAE7H;ACtCO,MAAMusB,GAAW;AAAA,EACtB,OAAO,kBAAyD;AAC9D,WAAOzkB,GAA0B;AAAA,EAAA;AAAA,EAGnC,OAAO,WACL0kB,GACAtgB,GACoB;AACd,UAAA;AAAA,MACJ,QAAAugB,IAAS,KAAK,gBAAuB;AAAA,MACrC,oBAAAC,IAAqB;AAAA,MACrB,eAAAC,IAAgB;AAAA,MAChB,cAAAC;AAAA,MACA,gBAAAC;AAAA,IACF,IAAI3gB,KAAW,CAAC;AAIT,WAFM,OAAO,KAAKsgB,CAAQ,EAErB,IAAI,CAACnkB,MACRokB,EAAO,SAAsBpkB,GAAK;AAAA,MACvC,QAAQ,CAAC+D,MAAW;AACZ,cAAA,EAAE,QAAApE,MAAWoE,GACbrE,IAAW8kB,IAAiBA,EAAexkB,CAAG,IAAI;AAGtD,eAAAjI,gBAAAA,EAAA;AAAA,UAAC8F;AAAA,UAAA;AAAA,YACC,UAAU8B,EAAO,YAAA,MAAkB;AAAA,YACnC,kBAAkBA,EAAO,oBAAoB;AAAA,YAC7C,eAAeA,EAAO;AAAA,YACtB,SAASA,EAAO,WAAW;AAAA,YAE1B,UAAWD,IAAAA,EAASM,GAAK+D,CAAM,IAAK/D;AAAA,UAAA;AAAA,QACvC;AAAA,MAEJ;AAAA,MACA,MAAM,CAAC0C,MAAS;AACd,cAAMhD,IAAW6kB,IAAeA,EAAavkB,CAAG,IAAI;AAEpD,eAAON,IAAWA,EAASgD,CAAI,IAAIA,EAAK,SAAS;AAAA,MACnD;AAAA,MACA,oBAAoB+hB,GAAW,UAAUJ,CAAkB,IAAIA,IAAqBA,EAAmB,SAASrkB,CAAG;AAAA,MACnH,eAAeykB,GAAW,UAAUH,CAAa,IAAIA,IAAgBA,EAAc,SAAStkB,CAAG;AAAA,IAAA,CAChG,CACF;AAAA,EAAA;AAEL;ACxDO,MAAM0kB,KAAuB,CAAC,EAAE,mBAAAC,IAAoB,GAAG,eAAAC,IAAgB,UAAsC;AAC5G,QAAA,EAAE,QAAAC,EAAO,IAAIC,GAAgB;AAEnC,SAAAC,GAAU,MAAM;AAEX,IAAAF,EAAA,OAAO,CAACG,MAAMA,EAAE,OAAO,EACvB,OAAO,CAACrV,GAAG9H,MAAMA,KAAK8c,CAAiB,EACvC,QAAQ,CAACK,MAAMC,GAAM,QAAQD,EAAE,EAAE,CAAC;AAAA,EAAA,GACpC,CAACL,GAAmBE,CAAM,CAAC,GAG5B9sB,gBAAAA,EAAA;AAAA,IAACmtB;AAAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,cAAc;AAAA,QACZ,UAAUN;AAAA,MAAA;AAAA,IACZ;AAAA,EACF;AAEJ,GCxBaO,KAAY,CAAC,EAAE,UAAAztB,EAAS,0CAAyB,UAAAA,GAAS,GCI1D0tB,KAAY7tB,EAAgC,CAAC,EAAE,UAAAG,GAAU,GAAGG,KAASC,MAAQ;AACpF,MAAAutB,EAAe3tB,CAAQ,GAAG;AACtB,UAAA4tB,IAAcC,GAAc7tB,CAAQ;AAE1C,WAAO8tB,GAAa9tB,GAAU;AAAA,MAC5B,GAAG+tB,GAAW5tB,GAAOH,EAAS,KAAK;AAAA;AAAA;AAAA,MAGnC,KAAKI,IAAM4tB,GAAU5tB,GAAKwtB,CAAW,IAAIA;AAAA,IAAA,CAC1C;AAAA,EAAA;AAGI,SAAAK,EAAS,MAAMjuB,CAAQ,IAAI,IAAIiuB,EAAS,KAAK,IAAI,IAAI;AAC9D,CAAC;AACDP,GAAU,cAAc;ACnBX,MAAAQ,KAAc,CAACC,MACnBR,EAAeQ,CAAK,KAAKA,EAAM,SAASV,ICJpCI,KAAgB,CAACO,MAAgC;;AAC5D,MAAIC,KAAS7oB,IAAA,OAAO,yBAAyB4oB,EAAQ,OAAO,KAAK,MAApD,gBAAA5oB,EAAuD,KAChE8oB,IAAOD,KAAU,oBAAoBA,KAAUA,EAAO;AAE1D,SAAIC,IACMF,EAAgB,OAG1BC,KAASE,IAAA,OAAO,yBAAyBH,GAAS,KAAK,MAA9C,gBAAAG,EAAiD,KACnDD,IAAAD,KAAU,oBAAoBA,KAAUA,EAAO,gBAElDC,IACMF,EAAQ,MAAuC,MAGjDA,EAAQ,MAAuC,OAAQA,EAAgB;AACjF,GCdaL,KAAa,CAACS,GAAqBC,MAAyB;AACjE,QAAAC,IAAW,EAAE,GAAGD,EAAW;AAEjC,aAAWE,KAAQF,GAAY;AACvB,UAAAG,IAAgBJ,EAAUG,CAAI,GAC9BE,IAAiBJ,EAAWE,CAAI;AAGlC,IAAA,WAAW,KAAKA,CAAI,IAClBC,KAAiBC,MACVH,EAAAC,CAAI,IAAI,IAAIG,MAAoB;AACvC,MAAAF,EAAc,GAAGE,CAAI,GACrBD,EAAe,GAAGC,CAAI;AAAA,IACxB,KAEOF,IACTF,EAASC,CAAI,IAAIC,IACRD,MAAS,UAClBD,EAASC,CAAI,IAAI,EAAE,GAAGC,GAAe,GAAGC,EAAe,IAC9CF,MAAS,gBACTD,EAAAC,CAAI,IAAI,CAACC,GAAeC,CAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC3E;AAGF,SAAO,EAAE,GAAGL,GAAW,GAAGE,EAAS;AACrC,GCnBaK,KAAOlvB,EAAmC,CAAC,EAAE,UAAAG,GAAU,GAAGG,KAASC,MAAQ;AAChF,QAAA4uB,IAAgBf,EAAS,QAAQjuB,CAAQ,GACzCivB,IAAYD,EAAc,KAAKd,EAAW;AAEhD,MAAIe,GAAW;AACP,UAAAC,IAAaD,EAAU,MAAM,UAE7BE,IAAcH,EAAc,IAAI,CAACb,MACjCA,MAAUc,IACRhB,EAAS,MAAMiB,CAAU,IAAI,IACxBjB,EAAS,KAAK,IAAI,IAGpBN,EAAeuB,CAAU,IAAKA,EAAW,MAAyB,WAAW,OAE7Ef,CAEV;AAED,WACG9tB,gBAAAA,EAAAA,IAAAqtB,IAAA,EAAW,GAAGvtB,GAAO,KAAAC,GACnB,UAAAutB,EAAeuB,CAAU,IAAIpB,GAAaoB,GAAY,QAAWC,CAAW,IAAI,MACnF;AAAA,EAAA;AAIJ,SACG9uB,gBAAAA,EAAAA,IAAAqtB,IAAA,EAAW,GAAGvtB,GAAO,KAAAC,GACnB,UAAAJ,GACH;AAEJ,CAAC;AACD+uB,GAAK,cAAc;","x_google_ignoreList":[4,10,11]}
|