@servicetitan/anvil2 1.49.5 → 1.49.6
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/CHANGELOG.md +18 -0
- package/dist/{Breadcrumbs-DjR-2OEH.js → Breadcrumbs-Y6IaMoi5.js} +2 -2
- package/dist/{Breadcrumbs-DjR-2OEH.js.map → Breadcrumbs-Y6IaMoi5.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BP6r1sP9.js → Calendar-B5Ednjem.js} +2 -2
- package/dist/{Calendar-BP6r1sP9.js.map → Calendar-B5Ednjem.js.map} +1 -1
- package/dist/{Calendar-CLSm88D2.js → Calendar-Ce08LvdP.js} +2 -2
- package/dist/{Calendar-CLSm88D2.js.map → Calendar-Ce08LvdP.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-PkAk1Saq.js → Checkbox-ByaZv8wu.js} +2 -2
- package/dist/{Checkbox-PkAk1Saq.js.map → Checkbox-ByaZv8wu.js.map} +1 -1
- package/dist/{Checkbox-DwuDx-t4.js → Checkbox-nE-_tWmc.js} +2 -2
- package/dist/{Checkbox-DwuDx-t4.js.map → Checkbox-nE-_tWmc.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Chip-X2EwdZ97.js → Chip-UqdorCE2.js} +23 -17
- package/dist/Chip-UqdorCE2.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-DNCq-jkq.js → Combobox-Dy4IZDg1.js} +4 -4
- package/dist/{Combobox-DNCq-jkq.js.map → Combobox-Dy4IZDg1.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BIhmpU0v.js → DataTable-D6MmOQF2.js} +5 -5
- package/dist/{DataTable-BIhmpU0v.js.map → DataTable-D6MmOQF2.js.map} +1 -1
- package/dist/{DateField-DsGHTMZ1.js → DateField-BxS9LZG7.js} +4 -4
- package/dist/{DateField-DsGHTMZ1.js.map → DateField-BxS9LZG7.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Ct979nxF.js → DateFieldRange-BdDiHUfv.js} +4 -4
- package/dist/{DateFieldRange-Ct979nxF.js.map → DateFieldRange-BdDiHUfv.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-frMHnRSg.js → DateFieldSingle-CuQO3LH9.js} +4 -4
- package/dist/{DateFieldSingle-frMHnRSg.js.map → DateFieldSingle-CuQO3LH9.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-po9ieLod.js → DateFieldYearless-2YhZmNYg.js} +2 -2
- package/dist/{DateFieldYearless-po9ieLod.js.map → DateFieldYearless-2YhZmNYg.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-Dy8a8O1n.js → DateFieldYearlessRange-CgCmvHLs.js} +2 -2
- package/dist/{DateFieldYearlessRange-Dy8a8O1n.js.map → DateFieldYearlessRange-CgCmvHLs.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-2_k3T4n4.js → DaysOfTheWeek-DlIka9b_.js} +3 -3
- package/dist/{DaysOfTheWeek-2_k3T4n4.js.map → DaysOfTheWeek-DlIka9b_.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-BT7a5KNT.js → Dialog-DSwvbfdW.js} +2 -2
- package/dist/{Dialog-BT7a5KNT.js.map → Dialog-DSwvbfdW.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-scQFylHI.js → Drawer-CGYcEj6d.js} +2 -2
- package/dist/{Drawer-scQFylHI.js.map → Drawer-CGYcEj6d.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{FieldLabel-BIStrC2x.js → FieldLabel-jqlQ1Ldh.js} +2 -2
- package/dist/{FieldLabel-BIStrC2x.js.map → FieldLabel-jqlQ1Ldh.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-A5LDdyxL.js → InputMask-DaN_Adz6.js} +2 -2
- package/dist/{InputMask-A5LDdyxL.js.map → InputMask-DaN_Adz6.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DuYh7Xl2.js → Link-DqZxs0kQ.js} +13 -4
- package/dist/Link-DqZxs0kQ.js.map +1 -0
- package/dist/Link.css +27 -19
- package/dist/Link.js +1 -1
- package/dist/Link.module-CjeOl2NH.js +14 -0
- package/dist/Link.module-CjeOl2NH.js.map +1 -0
- package/dist/{LinkButton-pIUNATNE.js → LinkButton-jb2Gc3hC.js} +5 -2
- package/dist/LinkButton-jb2Gc3hC.js.map +1 -0
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-5cRssdYI.js → ListView-B1I7Ii3g.js} +2 -2
- package/dist/{ListView-5cRssdYI.js.map → ListView-B1I7Ii3g.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{NumberField-BUFymKV3.js → NumberField-BdK4U9mW.js} +2 -2
- package/dist/{NumberField-BUFymKV3.js.map → NumberField-BdK4U9mW.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-Dgpz2WD7.js → Page-C-yMjgoO.js} +5 -5
- package/dist/{Page-Dgpz2WD7.js.map → Page-C-yMjgoO.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{ProgressBar-R_UjSR4o.js → ProgressBar-CufkbVu5.js} +2 -2
- package/dist/{ProgressBar-R_UjSR4o.js.map → ProgressBar-CufkbVu5.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CLR1m8N9.js → Radio-BeBG7Ksw.js} +2 -2
- package/dist/{Radio-CLR1m8N9.js.map → Radio-BeBG7Ksw.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-m46C69uO.js → RadioGroup-BAjpkCjp.js} +2 -2
- package/dist/{RadioGroup-m46C69uO.js.map → RadioGroup-BAjpkCjp.js.map} +1 -1
- package/dist/{SearchField-DrgNbG3I.js → SearchField-D6bICv4b.js} +36 -7
- package/dist/SearchField-D6bICv4b.js.map +1 -0
- package/dist/SearchField.css +13 -8
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-DViLgRGh.js → SelectCard-DDN7qqHv.js} +3 -3
- package/dist/{SelectCard-DViLgRGh.js.map → SelectCard-DDN7qqHv.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-DF05HvD4.js → SelectFieldSync-DQm3_D0v.js} +132 -19
- package/dist/SelectFieldSync-DQm3_D0v.js.map +1 -0
- package/dist/{SelectTrigger-BSzOoRsu.js → SelectTrigger-CNEhRluU.js} +2 -2
- package/dist/{SelectTrigger-BSzOoRsu.js.map → SelectTrigger-CNEhRluU.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-CfmRIFRs.js → SelectTriggerBase-Cv6hGsrC.js} +4 -4
- package/dist/{SelectTriggerBase-CfmRIFRs.js.map → SelectTriggerBase-Cv6hGsrC.js.map} +1 -1
- package/dist/SelectTriggerBase.css +59 -59
- package/dist/SelectTriggerBase.module-Ce49lamD.js +35 -0
- package/dist/SelectTriggerBase.module-Ce49lamD.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{TextField-D29fTRGR.js → TextField--y8q4R2H.js} +2 -2
- package/dist/{TextField-D29fTRGR.js.map → TextField--y8q4R2H.js.map} +1 -1
- package/dist/{TextField-B08U4_rt.js → TextField-aMwSN1iP.js} +2 -2
- package/dist/{TextField-B08U4_rt.js.map → TextField-aMwSN1iP.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-Dl4w2-t0.js → Textarea-D1zwX2h6.js} +2 -2
- package/dist/{Textarea-Dl4w2-t0.js.map → Textarea-D1zwX2h6.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Dpi3fMsn.js → TimeField-BHxXbOfe.js} +2 -2
- package/dist/{TimeField-Dpi3fMsn.js.map → TimeField-BHxXbOfe.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CRNOANCk.js → Toaster-CRp3nf4U.js} +2 -2
- package/dist/{Toaster-CRNOANCk.js.map → Toaster-CRp3nf4U.js.map} +1 -1
- package/dist/{Toaster-B0ogInIl.js → Toaster-qPt6zb6F.js} +2 -2
- package/dist/{Toaster-B0ogInIl.js.map → Toaster-qPt6zb6F.js.map} +1 -1
- package/dist/{Toolbar-CPldWSNJ.js → Toolbar-XJrmS4v4.js} +12 -12
- package/dist/{Toolbar-CPldWSNJ.js.map → Toolbar-XJrmS4v4.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BbfLb3pI.js → Tooltip-CBy7srE2.js} +2 -2
- package/dist/Tooltip-CBy7srE2.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +14 -3
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +12 -1
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +2 -1
- package/dist/beta/components/SelectField/types.d.ts +43 -0
- package/dist/beta.js +5 -5
- package/dist/components/Chip/Chip.d.ts +2 -1
- package/dist/components/Chip/internal/Chip.d.ts +2 -1
- package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
- package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
- package/dist/components/Link/internal/Link.d.ts +21 -2
- package/dist/components/Link/useLinkStyles.d.ts +1 -1
- package/dist/components/LinkButton/LinkButton.d.ts +13 -1
- package/dist/components/SearchField/SearchField.d.ts +6 -3
- package/dist/components/Stepper/Stepper.d.ts +1 -1
- package/dist/components/Stepper/StepperStep.d.ts +1 -1
- package/dist/components/Tab/Tab.d.ts +1 -1
- package/dist/components/Tab/TabButton.d.ts +1 -1
- package/dist/index.js +34 -34
- package/dist/{utils-CeT0omsG.js → utils-C-hkPwMi.js} +2 -2
- package/dist/{utils-CeT0omsG.js.map → utils-C-hkPwMi.js.map} +1 -1
- package/package.json +1 -1
- package/dist/Chip-X2EwdZ97.js.map +0 -1
- package/dist/Link-DuYh7Xl2.js.map +0 -1
- package/dist/Link.module-Cf17JWod.js +0 -12
- package/dist/Link.module-Cf17JWod.js.map +0 -1
- package/dist/LinkButton-pIUNATNE.js.map +0 -1
- package/dist/SearchField-DrgNbG3I.js.map +0 -1
- package/dist/SelectFieldSync-DF05HvD4.js.map +0 -1
- package/dist/SelectTriggerBase.module-DUhQNr6j.js +0 -33
- package/dist/SelectTriggerBase.module-DUhQNr6j.js.map +0 -1
- package/dist/Tooltip-BbfLb3pI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable-BIhmpU0v.js","sources":["../src/beta/components/Table/createColumnHelper.ts","../src/beta/components/Table/base/cells/TableEmptyCellContent.tsx","../src/beta/components/Table/internal/TruncateChips.tsx","../src/beta/components/Table/formatters/chipsFormatter.tsx","../src/beta/components/Table/formatters/currencyFormatter.tsx","../src/beta/components/Table/formatters/percentFormatter.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/beta/components/Table/base/TableBase.tsx","../src/beta/components/Table/internal/getCommonPinningStyles.ts","../src/beta/components/Table/internal/getCommonPinningClasses.ts","../src/beta/components/Table/base/TableBody.tsx","../src/beta/components/Table/DataTable/internal/DataTableContext.tsx","../src/beta/components/Table/DataTable/internal/useDataTableContext.tsx","../src/beta/components/Table/base/cells/TableBodyCell.tsx","../../hammer-icon/mdi/round/edit.svg","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/useEditCell.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableBody.tsx","../src/beta/components/Table/internal/getColSpanWidth.ts","../src/beta/components/Table/base/TableFooter.tsx","../src/beta/components/Table/base/cells/TableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableFooter.tsx","../src/beta/components/Table/internal/getTanStackColumnDef.tsx","../src/beta/components/Table/internal/focus-management/useColumnOrder.ts","../src/beta/components/Table/internal/focus-management/useHandleKeyDown.ts","../src/beta/components/Table/internal/focus-management/useScrollIntoView.ts","../src/beta/components/Table/internal/focus-management/useFocusManagement.ts","../src/beta/components/Table/DataTable/internal/DataTableContextProvider.tsx","../../hammer-icon/mdi/round/arrow_upward.svg","../../hammer-icon/mdi/round/arrow_downward.svg","../src/beta/components/Table/base/TableHeader.tsx","../src/beta/components/Table/base/cells/TableHeaderCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.tsx","../src/beta/components/Table/internal/ResizeHandle.tsx","../src/beta/components/Table/DataTable/internal/DataTableHeader.tsx","../src/beta/components/Table/base/TableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTablePagination.tsx","../src/beta/components/Table/DataTable/internal/useAsyncData.tsx","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { ColumnDef } from \"./types\";\n\n/**\n * Utility type that allows a value to be either the original type or,\n * if it's an array, one of the elements in the array\n */\nexport type ValueOrElement<V> = V extends (infer U)[] ? V | U : V;\n\n/**\n * Factory function to create column helper function for defining Table columns\n *\n * @param T - The type of the data\n * @returns A function that creates a column definition\n */\nexport function createColumnHelper<T>() {\n return function createColumn<K extends keyof T>(\n id: K | { group: string },\n column: Omit<\n ColumnDef<T>,\n \"id\" | \"onChange\" | \"options\" | \"renderCell\" | \"sortable\"\n > & {\n renderCell?: (value: T[K], rowDepth: number) => ReactNode;\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n onChange?: (value: T[K], rowId: string) => void;\n options?: { value: ValueOrElement<T[K]>; label: string }[];\n },\n ): ColumnDef<T> {\n if (typeof id === \"object\" && \"group\" in id) {\n return { id: id.group, ...column } as ColumnDef<T>;\n }\n return { id, ...column } as ColumnDef<T>;\n };\n}\n","import styles from \"./TableCells.module.scss\";\n\n/**\n * The empty cell content for table cells\n */\nexport const TableEmptyCellContent = () => {\n return (\n <span aria-label=\"empty table cell\" className={styles[\"empty-cell\"]}>\n —\n </span>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n useState,\n useRef,\n useLayoutEffect,\n} from \"react\";\nimport { Chip, ChipProps } from \"../../../../components/Chip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\n/**\n * Props for the TruncateChips component\n */\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Array of chip items to display\n */\n items: ChipProps[];\n};\n\n/**\n * Optimized TruncateChips component using measurement-based calculation.\n *\n * Features:\n * - Uses visible measurement chips to determine actual layout\n * - Responsive to container width changes\n * - Supports custom gap between chips\n * - Clean, predictable behavior\n *\n * @example\n * <TruncateChips\n * items={[\n * { label: \"React\", onClose: () => {} },\n * { label: \"TypeScript\", onClose: () => {} },\n * { label: \"JavaScript\", onClose: () => {} }\n * ]}\n * />\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n const hiddenChips = useRef<{ el: HTMLElement; rect: DOMRect }[]>([]);\n const plusChipRef = useRef<HTMLSpanElement>(null);\n const [plusChipWidth, setPlusChipWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!chipsContainerRef.current) return;\n let totalHiddenCount = 0;\n const observer = new IntersectionObserver(\n (entries) => {\n const isResizing = document.querySelector(\n '[aria-label=\"Resize column\"][aria-pressed=\"true\"]',\n );\n if (isResizing) return;\n\n // Update the state of each element that was observed\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n // Element is visible, keep it visible\n target.style.display = \"flex\";\n target.style.visibility = \"visible\";\n totalHiddenCount = Math.max(0, totalHiddenCount - 1);\n }\n\n if (!entry.isIntersecting) {\n // Element is outside the container, hide it\n hiddenChips.current.push({\n el: target,\n rect: target.getBoundingClientRect(),\n });\n target.style.visibility = \"hidden\";\n target.style.display = \"none\";\n totalHiddenCount++;\n }\n });\n\n setHiddenCount(totalHiddenCount);\n },\n {\n root: containerRef.current,\n rootMargin: \"0px\",\n threshold: 1,\n },\n );\n\n const children = Array.from(chipsContainerRef.current.children);\n children.forEach((child) => {\n observer.observe(child as HTMLElement);\n });\n\n // Cleanup observer on unmount or dependency change\n return () => {\n observer.disconnect();\n };\n }, [items]); // Re-run when items change\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n if (hiddenCount > 0 && containerRef.current) {\n const plusChipRect = plusChipRef.current?.getBoundingClientRect();\n setPlusChipWidth(plusChipRect?.width ?? 0);\n const containerRect = containerRef.current.getBoundingClientRect();\n const chipRect =\n hiddenChips.current[hiddenChips.current.length - 1].rect;\n\n const fitsHorizontally =\n chipRect.width <= containerRect.width &&\n chipRect.left >= containerRect.left &&\n chipRect.right <= containerRect.right;\n\n const fitsVertically =\n chipRect.height <= containerRect.height &&\n chipRect.top >= containerRect.top &&\n chipRect.bottom <= containerRect.bottom;\n\n const hasEnoughSpace = fitsHorizontally && fitsVertically;\n\n hiddenChips.current[hiddenCount - 1].el.style.display = hasEnoughSpace\n ? \"flex\"\n : \"none\";\n\n if (hasEnoughSpace) {\n hiddenChips.current.pop();\n }\n }\n }\n });\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [hiddenCount]);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles[\"truncate-chips\"], className)}\n style={{\n marginInlineEnd: plusChipWidth,\n }}\n {...rest}\n >\n <div ref={chipsContainerRef} style={{ display: \"contents\" }}>\n {/* Visible chips container */}\n {items.map((chip, index) => (\n <Chip key={index} {...chip} style={{ visibility: \"hidden\" }} />\n ))}\n </div>\n\n {/* Visible plus chip */}\n {hiddenCount > 0 && <Chip label={`+${hiddenCount}`} ref={plusChipRef} />}\n </div>\n );\n};\n","import { Chip, ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * The accepted value type for the chips formatter function\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\n/**\n * Props for the chips formatter function\n */\nexport type ChipsFormatterOptions = {\n /**\n * Whether to truncate the chips instead of wrapping\n */\n truncateChips?: boolean;\n};\n\n/**\n * Helper function for formatting table cells with chips\n * @param value - The value to format\n * @param options - The options for the chips formatter\n * @returns The formatted chips\n */\nexport const chipsFormatter = (\n value?: ChipsValueType,\n { truncateChips }: ChipsFormatterOptions = { truncateChips: false },\n) => {\n if (!value) return <TableEmptyCellContent />;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <TableEmptyCellContent />;\n }\n if (value.every((v) => typeof v === \"string\")) {\n if (truncateChips) {\n const items = value.map((v) => ({ label: v }));\n return <TruncateChips items={items} />;\n }\n return (\n <Flex direction=\"row\" gap=\"2\">\n {value.map((v) => (\n <Chip key={v} label={v} />\n ))}\n </Flex>\n );\n }\n if (truncateChips) {\n return <TruncateChips items={value} />;\n }\n return (\n <Flex direction=\"row\" gap=\"2\" wrap=\"wrap\">\n {value.map((v) => (\n <Chip key={v.label} {...v} />\n ))}\n </Flex>\n );\n }\n if (typeof value === \"string\") {\n return <Chip label={value} />;\n }\n\n return <Chip {...value} />;\n};\n","/**\n * Props for the currency formatter function\n */\nexport type CurrencyFormatterOptions = {\n /**\n * The locale to use for the currency formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The currency to use for the currency formatter\n * @default \"USD\"\n */\n currency?: string;\n};\n\n/**\n * Helper function for formatting table cells with currency, including i18n support\n * @param value - The value to format\n * @param options - The options for the currency formatter\n * @returns The formatted currency\n */\nexport const currencyFormatter = (\n value?: number,\n { locale, currency }: CurrencyFormatterOptions = {\n locale: \"en-US\",\n currency: \"USD\",\n },\n) => {\n return value\n ? value.toLocaleString(locale, {\n style: \"currency\",\n currency,\n })\n : null;\n};\n","/**\n * Options type for the percent formatter function\n */\nexport type PercentFormatterOptions = {\n /**\n * The number of decimals to display\n * @default 2\n */\n decimals?: number;\n /**\n * The locale to use for the percent formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Helper function for formatting table cells with percentages, including i18n support\n * @param value - The value to format\n * @param options - The options for the percent formatter\n * @returns The formatted percentage\n */\nexport const percentFormatter = (\n value?: number,\n { decimals, locale }: PercentFormatterOptions = {\n decimals: 2,\n locale: \"en-US\",\n },\n) => {\n return value\n ? value.toLocaleString(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : null;\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBase.module.scss\";\n\n/**\n * Props for the SimpleTableBase component\n * @extends ComponentPropsWithoutRef<\"table\">\n */\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * Props for the DataTableBase component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"aria-colcount\" | \"aria-rowcount\">\n */\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /**\n * The number of columns in the table\n */\n colCount: number;\n /**\n * The number of rows in the table\n */\n rowCount: number;\n /**\n * Whether the table has expandable rows\n */\n hasSubRows?: boolean;\n};\n\n/**\n * Props for the TableBase component\n * @extends SimpleTableBaseProps\n * @extends DataTableBaseProps\n */\nexport type TableBaseProps =\n | ({\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n type: \"data-table\";\n } & DataTableBaseProps);\n\n/**\n * Base table component for simple presentational tables\n * @param props - The props for the SimpleTableBase component\n * @param props.children - The children of the SimpleTableBase component\n * @param props.className - The class name of the SimpleTableBase component\n * @param props.ref - The ref of the SimpleTableBase component\n */\nconst SimpleTableBase = ({\n children,\n className,\n ...rest\n}: SimpleTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <table\n data-anv=\"simple-table-base\"\n {...rest}\n className={tableBaseClassNames}\n >\n {children}\n </table>\n );\n};\n\n/**\n * Base table component for complex data tables\n * @param props - The props for the DataTableBase component\n * @param props.children - The children of the DataTableBase component\n * @param props.className - The class name of the DataTableBase component\n * @param props.ref - The ref of the DataTableBase component\n */\nconst DataTableBase = ({\n children,\n className,\n colCount,\n rowCount,\n hasSubRows,\n ...rest\n}: DataTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <div\n data-anv=\"data-table-base\"\n {...rest}\n className={tableBaseClassNames}\n aria-colcount={colCount}\n aria-rowcount={rowCount}\n role={hasSubRows ? \"treegrid\" : \"grid\"}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Styled table component for simple presentational or complex data tables\n * @param props - The props for the TableBase component\n * @param props.type - The type of the TableBase component\n * @param props.children - The children of the TableBase component\n * @param props.className - The class name of the TableBase component\n * @param props.ref - The ref of the TableBase component\n */\nexport const TableBase = ({ type, ...rest }: TableBaseProps) => {\n if (type === \"simple\") {\n return <SimpleTableBase {...rest} />;\n }\n\n if (\"rowCount\" in rest && \"colCount\" in rest) {\n return (\n <DataTableBase\n {...rest}\n rowCount={rest.rowCount}\n colCount={rest.colCount}\n />\n );\n }\n};\n","import { CSSProperties } from \"react\";\nimport { Column } from \"@tanstack/react-table\";\n\n/**\n * Get the common styles for position and width of a column with pinning\n */\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n width: `calc(var(--a2-table-col-${column.getIndex()}-size) * 1px)`,\n zIndex: isPinned ? 1 : 0,\n };\n};\n","import { Column } from \"@tanstack/react-table\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Get the common classes for adding shadow styles to pinned columns\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n if (isLastLeftPinnedColumn) {\n return styles[\"last-pinned-left-column\"];\n }\n if (isFirstRightPinnedColumn) {\n return styles[\"first-pinned-right-column\"];\n }\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Props for the TableBody component\n * @extends ComponentPropsWithoutRef<\"tbody\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableBodyProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table body component for simple presentational or complex data tables\n * @param props - The props for the TableBody component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableBody component\n * @param props.ref - The ref of the TableBody component\n */\nexport function TableBody({ type, children, ...rest }: TableBodyProps) {\n const classes = cx(styles[\"table-body\"], rest.className);\n const Element = type === \"simple\" ? \"tbody\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { createContext } from \"react\";\nimport type { CellPosition } from \"../../internal/focus-management/types\";\nimport { RegisterCellProps } from \"../../internal/focus-management/useFocusManagement\";\n\n/**\n * The context type for the table\n */\nexport interface DataTableContextType {\n hoveredColumnId: string | null;\n setHoveredColumnId: (columnId: string | null) => void;\n // Editable cell management\n isOffGridInteractionOccurring: boolean;\n setIsOffGridInteractionOccurring: (\n isOffGridInteractionOccurring: boolean,\n ) => void;\n // Focus management\n focusedCell: CellPosition | null;\n isTableFocused: boolean;\n registerCell: (props: RegisterCellProps) => void;\n unregisterCell: (position: CellPosition) => void;\n getCellTabIndex: (position: CellPosition) => number;\n handleKeyDown: (event: React.KeyboardEvent) => void;\n initializeFocus: () => void;\n handleTableBlur: () => void;\n focusCell: (position: CellPosition) => void;\n hasSubRows: boolean;\n}\n\n/**\n * The context for the table context provider\n */\nexport const DataTableContext = createContext<DataTableContextType | undefined>(\n undefined,\n);\n","import { useContext } from \"react\";\nimport { DataTableContext } from \"./DataTableContext\";\n\n/**\n * Hook to access the internal data table context\n */\nexport function useDataTableContext() {\n const context = useContext(DataTableContext);\n if (context === undefined) {\n throw new Error(\n \"useDataTableContext must be used within a DataTableContextProvider\",\n );\n }\n return context;\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableBodyCellProps = ComponentPropsWithoutRef<\"td\"> &\n CommonTableCellProps;\n\nexport type DataTableBodyCellProps = ComponentPropsWithoutRef<\"div\"> &\n CommonTableCellProps;\n\n/**\n * The props for the TableBodyCell component\n */\nexport type TableBodyCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * The styled table body cell component\n * @param props - The props for the TableBodyCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableBodyCell component\n * @param props.rest - The rest of the props\n */\nexport const TableBodyCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableBodyCellProps\n>(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {\n const classes = cx(styles[\"table-body-cell\"], className, {\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-body-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableBodyCell.displayName = \"TableBodyCell\";\n","import * as React from \"react\";\nconst SvgEdit = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1c-.1.1-.15.22-.15.36zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\" }));\nexport default SvgEdit;\n","import { Icon } from \"../../../../../../components\";\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\n\n/**\n * Edit icon for editable cells in data tables\n * @returns The edit icon\n */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <Icon\n svg={EditIcon}\n size=\"small\"\n color=\"subtle\"\n className={styles[\"data-table-body-cell-edit-icon\"]}\n aria-label=\"Edit cell value\"\n />\n );\n};\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { UseEditCellProps, UseEditCellReturn } from \"./types\";\n\n/**\n * Hook for common logic for editable cells in data tables\n * @param props - The props for the useEditCell hook\n * @param props.initialValue - The initial value of the cell\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the cell\n * @param props.rowId - The row id of the cell\n * @returns Object containing the editing state and functions for editing the cell\n */\nexport const useEditCell = <T>({\n initialValue,\n onChange,\n cellPosition,\n rowId,\n}: UseEditCellProps<T>): UseEditCellReturn<T> => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState<T>(initialValue);\n const editValueRef = useRef<T>(initialValue);\n const {\n focusCell,\n isTableFocused,\n initializeFocus,\n setIsOffGridInteractionOccurring,\n } = useDataTableContext();\n\n const handleEditStateChange = useCallback(\n (isEditing: boolean) => {\n setIsEditing(isEditing);\n setIsOffGridInteractionOccurring(isEditing);\n },\n [setIsOffGridInteractionOccurring],\n );\n\n const updateEditValue = useCallback((value: T) => {\n editValueRef.current = value;\n setEditValue(value);\n }, []);\n\n const handleFocusCell = useCallback(() => {\n if (!isTableFocused) {\n // Table not focused yet - initialize and focus this cell\n initializeFocus();\n setTimeout(() => {\n focusCell(cellPosition);\n });\n } else {\n // Table already focused - just update to this cell position\n setTimeout(() => {\n focusCell(cellPosition);\n });\n }\n }, [cellPosition, focusCell, isTableFocused, initializeFocus]);\n\n const handleSave = useCallback(\n (value: T) => {\n onChange(value, rowId);\n handleEditStateChange(false);\n handleFocusCell();\n },\n [onChange, rowId, handleFocusCell, handleEditStateChange],\n );\n\n const saveValue: UseEditCellReturn<T>[\"saveValue\"] = useCallback(() => {\n handleSave(editValueRef.current);\n }, [handleSave]);\n\n const cancelEdit: UseEditCellReturn<T>[\"cancelEdit\"] = useCallback(() => {\n setEditValue(initialValue);\n handleEditStateChange(false);\n handleFocusCell();\n }, [initialValue, handleFocusCell, handleEditStateChange]);\n\n const handleClick = useCallback(() => {\n if (isEditing) return;\n\n handleEditStateChange(true);\n }, [isEditing, handleEditStateChange]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n if (isEditing) {\n saveValue();\n } else {\n handleEditStateChange(true);\n }\n }\n if (event.key === \"Escape\") {\n cancelEdit();\n }\n },\n [isEditing, saveValue, cancelEdit, handleEditStateChange],\n );\n\n const handleBlur = useCallback(() => {\n saveValue();\n }, [saveValue]);\n\n const returnValue = useMemo(\n () => ({\n isEditing,\n editValue,\n updateEditValue,\n saveValue,\n cancelEdit,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onBlur: handleBlur,\n }),\n [\n isEditing,\n editValue,\n updateEditValue,\n saveValue,\n cancelEdit,\n handleClick,\n handleKeyDown,\n handleBlur,\n ],\n );\n\n return returnValue;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableTextCell component\n * @extends DataTableEditableCellProps<string>\n */\nexport type DataTableEditableTextCellProps = DataTableEditableCellProps<string>;\n/**\n * Editable text cell for data tables\n * @param props - The props for the DataTableEditableTextCell component\n * @param props.cellProps - The props for the DataTableEditableTextCell component\n * @param props.children - The children of the DataTableEditableTextCell component\n * @param props.rowId - The row id of the DataTableEditableTextCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableTextCell component\n * @param props.value - The value of the DataTableEditableTextCell component\n */\nexport const DataTableEditableTextCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n}: DataTableEditableTextCellProps) => {\n const { isEditing, editValue, updateEditValue, onClick, onKeyDown, onBlur } =\n useEditCell<string>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateEditValue(e.target.value);\n },\n [updateEditValue],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n const classes = cx(className, styles[\"data-table-body-cell-editable\"], {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n return (\n <TableBodyCell\n {...restCellProps}\n className={classes}\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n {isEditing ? (\n <>\n <input\n type=\"text\"\n className={styles[\"data-table-body-cell-input\"]}\n ref={inputRef}\n value={editValue}\n onChange={handleChange}\n onBlur={onBlur}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly>\n {isEditing\n ? \"Press F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n};\n","import { KeyboardEvent } from \"react\";\nimport cx from \"classnames\";\n\nimport { Menu } from \"../../../../../../components/Menu\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableSelectCell component\n * @extends DataTableEditableCellProps<string>\n */\nexport type DataTableEditableSelectCellProps =\n DataTableEditableCellProps<string> & {\n /**\n * The options available for selection\n */\n options: { value: string; label: string }[];\n };\n\n/**\n * Editable select cell for data tables\n * @param props - The props for the DataTableEditableSelectCell component\n * @param props.cellProps - The props for the DataTableEditableSelectCell component\n * @param props.children - The children of the DataTableEditableSelectCell component\n * @param props.rowId - The row id of the DataTableEditableSelectCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableSelectCell component\n * @param props.value - The value of the DataTableEditableSelectCell component\n * @param props.options - The options available for selection\n */\nexport const DataTableEditableSelectCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n options,\n}: DataTableEditableSelectCellProps) => {\n const {\n isEditing,\n onClick,\n onKeyDown,\n saveValue,\n updateEditValue,\n cancelEdit,\n } = useEditCell<string>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n\n const { className, ...restCellProps } = cellProps;\n\n const cellClasses = cx(\n styles[\"data-table-body-cell-editable\"],\n styles[\"data-table-body-select-cell\"],\n className,\n { [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing },\n );\n\n const handleKeyDown = (\n e: KeyboardEvent<HTMLButtonElement>,\n triggerFn: (e: KeyboardEvent<HTMLButtonElement>) => void,\n ) => {\n if (e.key === \"ArrowDown\" && !isEditing) {\n onKeyDown?.(e);\n return; // prevents menu from blocking table navigation\n }\n\n onKeyDown?.(e);\n triggerFn?.(e);\n };\n\n return (\n <>\n <Menu\n // TODO: remove this\n // used now to prevent empty menu from showing\n open={isEditing}\n onOutsidePress={saveValue}\n trigger={({\n ref: triggerRef,\n onKeyDown: triggerOnKeyDown,\n ...rest\n }) => {\n return (\n <TableBodyCell\n {...restCellProps}\n className={cellClasses}\n onClick={onClick}\n >\n <button\n {...rest}\n ref={triggerRef}\n className={styles[\"data-table-body-cell-select-trigger\"]}\n onKeyDown={(e) => handleKeyDown(e, () => triggerOnKeyDown?.(e))}\n >\n {children}\n </button>\n {!isEditing && <DataTableEditableCellEditIcon />}\n </TableBodyCell>\n );\n }}\n >\n {isEditing &&\n options.map((item) => {\n return (\n <Menu.Item\n key={item.value}\n label={item.label}\n onClick={() => {\n updateEditValue(item.value);\n saveValue();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Escape\" || e.key === \"F2\") {\n cancelEdit();\n }\n }}\n />\n );\n })}\n </Menu>\n <SrOnly>\n {isEditing\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </>\n );\n};\n","import {\n useRef,\n KeyboardEvent,\n useMemo,\n useState,\n useCallback,\n ChangeEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n Flex,\n ListView,\n Popover,\n SearchField,\n SrOnly,\n} from \"../../../../../../components\";\n\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableMultiselectCell component\n * @extends DataTableEditableCellProps<string[]>\n */\nexport type DataTableEditableMultiselectCellProps = DataTableEditableCellProps<\n string[]\n> & {\n /**\n * The options available for selection\n */\n options: { value: string; label: string }[];\n};\n\n/**\n * Editable multiselect cell for data tables\n * @param props - The props for the DataTableEditableMultiselectCell component\n * @param props.cellProps - The props for the DataTableEditableMultiselectCell component\n * @param props.children - The children of the DataTableEditableMultiselectCell component\n * @param props.rowId - The row id of the DataTableEditableMultiselectCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableMultiselectCell component\n * @param props.value - The value of the DataTableEditableMultiselectCell component\n * @param props.options - The options available for selection\n */\nexport const DataTableEditableMultiselectCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n options,\n}: DataTableEditableMultiselectCellProps) => {\n const {\n isEditing,\n onClick,\n onKeyDown,\n saveValue,\n cancelEdit,\n editValue,\n updateEditValue,\n } = useEditCell<string[]>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const [searchValue, setSearchValue] = useState(\"\");\n const listViewRef = useRef<HTMLUListElement>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n const cellClasses = cx(styles[\"data-table-body-select-cell\"], className, {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n const selectedValues = options.filter((item) =>\n editValue.includes(item.value),\n );\n\n const handleTriggerKeyDown = (\n e: KeyboardEvent<HTMLButtonElement>,\n triggerFn: (e: KeyboardEvent<HTMLButtonElement>) => void,\n ) => {\n onKeyDown?.(e);\n triggerFn?.(e);\n };\n\n const handleListViewKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === \"Tab\" && !e.shiftKey) || e.key === \"F2\") {\n e.preventDefault();\n e.stopPropagation();\n saveValue();\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cancelEdit();\n setSearchValue(\"\");\n }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault(); // prevent scrolling the page\n }\n },\n [saveValue, cancelEdit],\n );\n\n const handleSearchFieldKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cancelEdit();\n setSearchValue(\"\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n listViewRef.current?.focus();\n }\n },\n [cancelEdit],\n );\n\n const handleListViewSelectionChange = useCallback(\n (value: unknown[]) => {\n if (isEditing) {\n updateEditValue(\n (\n value as unknown as {\n label: string;\n value: string;\n disabled: boolean;\n }[]\n ).map((item) => item.value),\n );\n }\n },\n [updateEditValue, isEditing],\n );\n\n const filteredItems = useMemo(() => {\n if (searchValue === \"\") return options;\n return options.filter((item) =>\n item.label.toLowerCase().includes(searchValue.toLowerCase()),\n );\n }, [options, searchValue]);\n\n const handleOnClickOutside = useCallback(() => {\n if (isEditing) {\n saveValue();\n setSearchValue(\"\");\n }\n }, [saveValue, isEditing]);\n\n const handleOpenAnimationComplete = useCallback(() => {\n if (isEditing) {\n searchFieldRef.current?.focus();\n }\n }, [isEditing]);\n\n const handleSearchFieldChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value);\n },\n [],\n );\n\n return (\n <>\n <Popover\n open={isEditing}\n onOpenAnimationComplete={handleOpenAnimationComplete}\n onClickOutside={handleOnClickOutside}\n placement=\"bottom-start\"\n disableCaret\n >\n <Popover.Trigger>\n {({ ref: popoverRef, onKeyDown: triggerOnKeyDown, ...rest }) => {\n return (\n <TableBodyCell\n {...restCellProps}\n className={cellClasses}\n onClick={onClick}\n >\n <button\n {...rest}\n ref={popoverRef}\n className={styles[\"data-table-body-cell-select-trigger\"]}\n onKeyDown={(e) =>\n handleTriggerKeyDown(e, () => triggerOnKeyDown?.(e))\n }\n >\n {children}\n </button>\n </TableBodyCell>\n );\n }}\n </Popover.Trigger>\n <Popover.Content>\n <Flex gap=\"4\" direction=\"column\">\n <SearchField\n ref={searchFieldRef}\n onChange={handleSearchFieldChange}\n onKeyDown={handleSearchFieldKeyDown}\n />\n <ListView\n defaultSelected={selectedValues}\n onKeyDown={handleListViewKeyDown}\n items={filteredItems}\n onSelectionChange={handleListViewSelectionChange}\n ref={listViewRef}\n >\n {({ items }) =>\n items.map((item) => (\n <ListView.Option item={item} key={item.label}>\n {item.label}\n </ListView.Option>\n ))\n }\n </ListView>\n </Flex>\n </Popover.Content>\n </Popover>\n <SrOnly>\n {isEditing\n ? \"Press F2 to save cell value. Press Escape to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </>\n );\n};\n","import { memo, Ref, useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport {\n TableBodyCell,\n TableBodyCellProps,\n} from \"../../../base/cells/TableBodyCell\";\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { ColumnDef } from \"../../../types\";\nimport { DataTableEditableTextCell } from \"../editable-cells/DataTableEditableTextCell\";\nimport { DataTableEditableSelectCell } from \"../editable-cells/DataTableEditableSelectCell\";\nimport { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableBodyCell component\n * @extends Omit<BaseDataTableBodyCellProps, \"onChange\">\n */\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The cell position of the cell\n */\n cellPosition: { rowIndex: number; columnIndex: number };\n /**\n * The column id of the cell\n */\n columnId: string;\n /**\n * The edit mode of the cell\n */\n editMode?: ColumnDef<T>[\"editMode\"];\n /**\n * The edit value of the cell\n */\n editValue?: T[keyof T];\n /**\n * Called when the cell value is saved (on blur or enter/F2 key pressed)\n */\n onChange?: ColumnDef<T>[\"onChange\"];\n /**\n * The options of the cell\n */\n options?: ColumnDef<T>[\"options\"];\n /**\n * The row id of the cell\n */\n rowId: string;\n};\n\n/**\n * DataTableBodyCellElement component with focus management and editable cells\n * @param props - The props for the DataTableBodyCellElement component\n * @param props.cellPosition - The cell position of the cell\n * @param props.columnId - The column id of the cell\n * @param props.children - The children of the DataTableBodyCellElement component\n * @param props.tabIndex - The tab index of the cell\n * @param props.editMode - The edit mode of the cell\n * @param props.editValue - The edit value of the cell\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.options - The options of the cell\n * @param props.rowId - The row id of the cell\n * @param props.rest - The rest of the props\n */\nfunction DataTableBodyCellElement<T>(props: DataTableBodyCellProps<T>) {\n const {\n cellPosition,\n columnId,\n children,\n editMode,\n editValue,\n onChange,\n options,\n rowId,\n ...rest\n } = props;\n\n const elementRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n // Register/unregister cell for focus management (data tables only)\n useEffect(() => {\n if (elementRef.current) {\n tableContext.registerCell({\n position: cellPosition,\n element: elementRef.current,\n isHeader: false,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext]);\n\n const isEditable = !!editMode;\n\n // Handle direct cell focus (when user clicks on cell)\n const handleFocus = useCallback(() => {\n if (!tableContext.isTableFocused) {\n // Table not focused yet - initialize and focus this cell\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n\n // For editable cells, let the editable cell components handle their own focus\n // after table is initialized\n } else if (!isEditable) {\n tableContext.focusCell(cellPosition);\n }\n }, [tableContext, cellPosition, isEditable]);\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]:\n tableContext?.hoveredColumnId === columnId,\n });\n\n const commonCellProps: TableBodyCellProps & { ref: Ref<HTMLDivElement> } = {\n type: \"data-table\",\n ...rest,\n className: classes,\n ref: elementRef,\n tabIndex,\n onFocus: handleFocus,\n };\n\n if (editMode === \"text\") {\n return (\n <DataTableEditableTextCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n onChange={onChange as (value: string, rowId: string) => void}\n value={editValue as string}\n >\n {children}\n </DataTableEditableTextCell>\n );\n }\n\n if (editMode === \"select\") {\n return (\n <DataTableEditableSelectCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n value={editValue as string}\n onChange={onChange as (value: string, rowId: string) => void}\n options={options as { value: string; label: string }[]}\n >\n {children}\n </DataTableEditableSelectCell>\n );\n }\n\n if (editMode === \"multiselect\") {\n return (\n <DataTableEditableMultiselectCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n value={editValue as string[]}\n onChange={onChange as (value: string[], rowId: string) => void}\n options={options as { value: string; label: string }[]}\n >\n {children}\n </DataTableEditableMultiselectCell>\n );\n }\n\n return <TableBodyCell {...commonCellProps}>{children}</TableBodyCell>;\n}\n\nexport const DataTableBodyCell = memo(DataTableBodyCellElement) as <T>(\n props: DataTableBodyCellProps<T>,\n) => JSX.Element;\n","import { ComponentPropsWithoutRef, Fragment, ReactNode } from \"react\";\nimport cx from \"classnames\";\nimport { Table as TanstackTable, flexRender } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { TableRow } from \"../../types\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport { useDataTableContext } from \"./useDataTableContext\";\n\n/**\n * Props for the DataTableBody component\n * @extends {ComponentPropsWithoutRef<\"div\">}\n */\nexport type DataTableBodyProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport const DataTableBodyContent = <T,>({\n table,\n}: {\n table: TanstackTable<T>;\n}) => {\n const { hasSubRows } = useDataTableContext();\n return table.getRowModel().rows.map((row, sortedIndex) => (\n <Fragment key={row.id}>\n <div\n role=\"row\"\n aria-rowindex={sortedIndex + table.getHeaderGroups().length + 1} // aria-rowindex is 1-based, uses sorted position\n aria-expanded={\n hasSubRows && row.getCanExpand() ? row.getIsExpanded() : undefined\n }\n aria-level={\n hasSubRows &&\n (row.getCanExpand() || row.getParentRow()?.getCanExpand())\n ? row.depth + 1\n : undefined\n }\n className={styles[\"data-table-body-row\"]}\n >\n {row.getVisibleCells().map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\n\n const cellClasses = cx(getCommonPinningClasses(cell.column), {\n [styles[\"data-table-body-cell-group\"]]:\n \"columns\" in cell.column.columnDef ||\n (cell.column.parent && isLastInParentGroup),\n });\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n aria-colindex={cell.column.getIndex() + 1} // aria-colindex is 1-based\n className={cellClasses}\n style={{\n minWidth: `calc(var(--a2-table-col-${cell.column.getIndex()}-size) * 1px)`,\n ...getCommonPinningStyles(cell.column),\n }}\n columnId={cell.column.id}\n cellPosition={{\n rowIndex: sortedIndex + table.getHeaderGroups().length,\n columnIndex: cell.column.getIndex(),\n }}\n editMode={cell.column.columnDef.meta?.editMode}\n editValue={cell.getContext().getValue() as T[keyof T]}\n onChange={cell.column.columnDef.meta?.onChange}\n options={cell.column.columnDef.meta?.options}\n rowId={row.id}\n isExpandCell={cell.column.id === \"a2-table-internal-expand\"}\n isSelectCell={cell.column.id === \"a2-table-internal-select\"}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n })}\n </div>\n {row.getIsExpanded() &&\n \"subComponent\" in (row.original as TableRow<T>) && (\n <div\n id={`${row.id}-sub-component`}\n aria-hidden={!row.getIsExpanded()}\n className={styles[\"data-table-body-row\"]}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {(row.original as TableRow<T>).subComponent as ReactNode}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n ));\n};\n\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const { table, ...rest } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n <DataTableBodyContent table={table} />\n </TableBody>\n );\n}\n","/**\n * Get the width of a column with a colspan greater than 1\n * @param colSpan - The number of columns to span\n * @param cellIndex - The index of the cell\n * @returns The width of the column span\n */\nexport const getColSpanWidth = (colSpan: number, cellIndex: number): string => {\n let minWidth = `calc(var(--a2-table-col-${cellIndex}-size) * 1px)`;\n if (colSpan > 1) {\n const varsToAdd = Array.from(\n { length: colSpan },\n (_, i) => `var(--a2-table-col-${cellIndex + i}-size)`,\n );\n minWidth = `calc((${varsToAdd.join(\" + \")}) * 1px)`;\n }\n return minWidth;\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Props for the TableFooter component\n * @extends ComponentPropsWithoutRef<\"tfoot\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableFooterProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table footer component for simple presentational or complex data tables\n * @param props - The props for the TableFooter component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableFooter component\n * @param props.ref - The ref of the TableFooter component\n */\nexport function TableFooter({ type, children, ...rest }: TableFooterProps) {\n const classes = cx(styles[\"table-footer\"], rest.className);\n const Element = type === \"simple\" ? \"tfoot\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableFooterCellProps = ComponentPropsWithoutRef<\"td\"> & {\n colSpan?: number;\n};\n\nexport type DataTableFooterCellProps = ComponentPropsWithoutRef<\"div\"> & {\n colSpan?: number;\n};\n\n/**\n * The props for the TableFooterCell component\n */\nexport type TableFooterCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * The styled table footer cell component\n * @param props - The props for the TableFooterCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableFooterCell component\n * @param props.rest - The rest of the props\n */\nexport const TableFooterCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableFooterCellProps\n>((props, ref) => {\n const { type, children, className, ...rest } = props;\n\n const classes = cx(styles[\"table-footer-cell\"], className);\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-footer-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableFooterCell.displayName = \"TableFooterCell\";\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport { DataTableFooterCellProps as BaseDataTableFooterCellProps } from \"../../../base/cells/TableFooterCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableFooterCell component\n * @extends BaseDataTableFooterCellProps\n */\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Data table footer cell with focus management\n * @param props - The props for the DataTableFooterCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableFooterCell component\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n useEffect(() => {\n if (footerCellRef.current) {\n tableContext.registerCell({\n position: cellPosition,\n element: footerCellRef.current,\n isHeader: false,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext]);\n\n const handleFocus = useCallback(() => {\n // handle focusing from outside the table or clicked\n if (!tableContext.isTableFocused) {\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n }\n }, [cellPosition, tableContext]);\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n return (\n <TableFooterCell\n type=\"data-table\"\n {...rest}\n ref={footerCellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n className={cx(styles[\"data-table-footer-cell\"], className)}\n >\n {children}\n </TableFooterCell>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getColSpanWidth } from \"../../internal/getColSpanWidth\";\n\nimport { ColumnDef } from \"../../types\";\nimport { DataTableProps } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\n\n/**\n * Props for the default/configured table footer rows\n * @extends TanstackTable<T>\n * @extends ColumnDef<T>[]\n */\nexport type DefaultTableFooterRowsProps<T> = {\n table: TanstackTable<T>;\n columns: ColumnDef<T>[];\n};\n\n/**\n * Props for the custom table footer rows\n * @extends DataTableProps<T>\n */\nexport type CustomTableFooterRowsProps<T> = {\n columnCount: number;\n customFooter: DataTableProps<T>[\"customFooter\"];\n table: TanstackTable<T>;\n};\n\n/**\n * Props for the DataTableFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableFooterProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * The columns of the table\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer of the table\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n // Recursively find a column by ID in the column tree\n const findColumnById = (\n cols: ColumnDef<T>[],\n id: string,\n ): ColumnDef<T> | undefined => {\n for (const col of cols) {\n if (col.id === id) {\n return col;\n }\n if (col.columns && Array.isArray(col.columns)) {\n const found = findColumnById(col.columns, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n // Recursively get the maximum number of footer rows from a column and its nested columns\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n };\n\n const maxFooterRows = Math.max(\n ...columns.map((column) => getMaxFooterRows(column)),\n 1,\n );\n\n return Array.from({ length: maxFooterRows }, (_, rowIndex) => (\n <div\n key={`footer-row-${rowIndex}`}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length +\n 1\n }\n >\n {table\n .getFlatHeaders()\n .filter((header) => {\n const column = findColumnById(columns, header.column.id);\n // Filter out columns that have nested columns (column groups)\n return !column?.columns || column.columns.length === 0;\n })\n .map((header) => {\n const column = findColumnById(columns, header.column.id);\n\n let footerContent = null;\n if (Array.isArray(column?.footerContent)) {\n footerContent = column.footerContent[rowIndex] || null;\n } else if (column?.footerContent && rowIndex === 0) {\n footerContent = column.footerContent;\n }\n\n return (\n <DataTableFooterCell\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={{\n minWidth: `calc(var(--a2-table-col-${header.column.getIndex()}-size) * 1px)`,\n ...getCommonPinningStyles(header.column),\n }}\n cellPosition={{\n rowIndex:\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length,\n columnIndex: header.column.getIndex(),\n }}\n >\n {footerContent}\n </DataTableFooterCell>\n );\n })}\n </div>\n ));\n}\n\nfunction CustomTableFooterRows<T>({\n customFooter,\n columnCount,\n table,\n}: CustomTableFooterRowsProps<T>) {\n return customFooter?.map((footerRow, rowIndex) => {\n return (\n <div\n key={rowIndex}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length +\n 1\n }\n >\n {(() => {\n let currentColumnIndex = 0;\n return Array.from({\n length:\n // total columns\n columnCount -\n // minus columns merged using colSpan\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n // plus columns added in the custom footer row\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n const minWidth = getColSpanWidth(\n footer.colSpan,\n currentColumnIndex,\n );\n\n const cell = (\n <DataTableFooterCell\n key={index}\n colSpan={footer.colSpan}\n style={{\n minWidth,\n }}\n cellPosition={{\n rowIndex:\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length,\n columnIndex: currentColumnIndex,\n }}\n >\n {footer.content}\n </DataTableFooterCell>\n );\n\n // Advance the column index by the colSpan for the next iteration\n currentColumnIndex += footer.colSpan;\n\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Data table footer, which can be either a configured or custom footer\n * @param props - The props for the DataTableFooter component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.customFooter - The custom footer of the table\n * @param props.columns - The columns of the table\n */\nexport function DataTableFooter<T>({\n table,\n customFooter,\n columns,\n ...rest\n}: DataTableFooterProps<T>) {\n const columnCount = table.getFlatHeaders().length;\n const classes = cx(styles[\"data-table-footer\"], rest.className);\n\n return (\n <TableFooter type=\"data-table\" {...rest} className={classes}>\n {customFooter ? (\n <CustomTableFooterRows\n table={table}\n customFooter={customFooter}\n columnCount={columnCount}\n />\n ) : (\n <DefaultTableFooterRows table={table} columns={columns} />\n )}\n </TableFooter>\n );\n}\n","import { ReactNode } from \"react\";\nimport {\n CellContext,\n createColumnHelper,\n ColumnDef as TanstackColumnDef,\n} from \"@tanstack/react-table\";\n\nimport Flex from \"../../../../components/Flex\";\n\nimport { ColumnDef } from \"../types\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\n\n// Extend TanStack Table's ColumnMeta type to include our custom properties\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData, TValue> {\n editMode?: ColumnDef<TData>[\"editMode\"];\n onChange?: ColumnDef<TData>[\"onChange\"];\n options?: ColumnDef<TData>[\"options\"];\n }\n}\n\n/**\n * Props for the getTanStackColumnDef function\n * @extends ColumnDef<T>\n */\nexport type TanStackColumnDefProps<T> = {\n columnDef: ColumnDef<T>;\n};\n\n/**\n * Build the column definition for TanStack useReactTable\n * This allows for customized column definitions that maintain type safety\n * @param props - The props for the getTanStackColumnDef function\n * @param props.columnDef - The column definition for the TanStack useReactTable\n * @returns The column definition for the TanStack useReactTable\n */\nexport function getTanStackColumnDef<T>({\n columnDef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: TanStackColumnDefProps<T>): TanstackColumnDef<T, any> {\n const columnHelper = createColumnHelper<T>();\n\n // If this column has sub-columns, create a group column\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: columnDef.headerLabel,\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef<T>({\n columnDef: column,\n }),\n ),\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n });\n }\n\n // Otherwise, create an accessor column\n return columnHelper.accessor((row: T) => row[columnDef.id], {\n id: columnDef.id as string,\n cell: (info: CellContext<T, unknown>) => {\n if (columnDef.renderCell) {\n const cellContent = columnDef.renderCell(\n info.getValue() as T[keyof T],\n info.row.depth,\n );\n return (\n <Flex\n justifyContent={columnDef.align}\n wrap=\"wrap\"\n style={{\n width: \"100%\",\n }}\n >\n {cellContent ?? <TableEmptyCellContent />}\n </Flex>\n );\n }\n return (\n <Flex\n justifyContent={columnDef.align}\n wrap=\"wrap\"\n style={{\n width: \"100%\",\n }}\n >\n {(info.getValue() as ReactNode) ?? <TableEmptyCellContent />}\n </Flex>\n );\n },\n header: () => (\n <Flex justifyContent={columnDef.align} wrap=\"wrap\" grow={1}>\n {columnDef.headerLabel}\n </Flex>\n ),\n footer: columnDef.footerContent ? () => columnDef.footerContent : undefined,\n minSize: columnDef.minWidth,\n maxSize: columnDef.maxWidth,\n enableResizing: columnDef.resizable,\n enableSorting: !!columnDef.sortable,\n meta: {\n editMode: columnDef.editMode,\n onChange: columnDef.onChange,\n options: columnDef.options,\n },\n\n // If custom sorting function is provided, use it\n ...(columnDef.sortable && typeof columnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB, colId) => {\n if (typeof columnDef.sortable === \"function\") {\n return columnDef.sortable(\n rowA.getValue(colId),\n rowB.getValue(colId),\n );\n }\n return 0;\n },\n }\n : undefined),\n });\n}\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to analyze the columns in the table to determine the visual position and pinning status\n * @param table - The table to analyze\n */\nexport const useColumnOrder = <T>({ table }: { table: TanstackTable<T> }) => {\n const getColumnIndexes = useCallback((column: Column<T>) => {\n if (column.columns?.length > 0) {\n return column.columns.map((c) => c.getIndex());\n }\n return [column.getIndex()];\n }, []);\n\n const columnOrder = useMemo(() => {\n const left: number[] = [];\n const right: number[] = [];\n const middle: number[] = [];\n\n table.getAllColumns().forEach((column) => {\n if (column.getIsPinned() === \"left\") {\n left.push(...getColumnIndexes(column));\n } else if (column.getIsPinned() === \"right\") {\n right.push(...getColumnIndexes(column));\n } else {\n middle.push(...getColumnIndexes(column));\n }\n });\n return left.concat(middle).concat(right);\n }, [table, getColumnIndexes]);\n\n return {\n columnOrder,\n };\n};\n","import { MutableRefObject, useCallback } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport type { CellPosition, FocusableCell } from \"./types\";\n\nexport type UseHandleKeyDownProps<T> = {\n isTableFocused: boolean;\n focusedCell: CellPosition | null;\n getCellKey: (position: CellPosition) => string;\n cellRefs: MutableRefObject<Map<string, FocusableCell>>;\n getSingleFocusableInCell: (cellElement: HTMLElement) => HTMLElement | null;\n setIsTableFocused: (focused: boolean) => void;\n setFocusedCell: (position: CellPosition | null) => void;\n columnOrder: number[];\n focusCell: (position: CellPosition) => void;\n getNextValidPosition: (\n currentPosition: CellPosition,\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n ) => CellPosition | null;\n table: TanstackTable<T>;\n isExpandable: boolean;\n isOffGridInteractionOccurring: boolean;\n};\n\n/**\n * Hook to handle keyboard events for the table\n * @param isTableFocused - Whether the table is focused\n * @param focusedCell - The currently focused cell\n * @param getCellKey - A function to get the key for a cell\n * @param cellRefs - A reference to the cells in the table\n * @param getSingleFocusableInCell - A function to get the single focusable in a cell\n * @param setIsTableFocused - A function to set the table focused state\n * @param setFocusedCell - A function to set the focused cell\n * @param getAccessibleColumnOrder - A function to get the accessible column order\n * @param focusCell - A function to focus a cell\n * @param getNextValidPosition - A function to get the next valid position\n * @param table - The TanStack table instance\n * @param isExpandable - Whether the table supports row expansion\n */\nexport const useHandleKeyDown = <T>({\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n isOffGridInteractionOccurring,\n}: UseHandleKeyDownProps<T>) => {\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (!isTableFocused || !focusedCell || isOffGridInteractionOccurring)\n return;\n\n // Check if we're currently focused on a single focusable within a cell\n const currentCellKey = getCellKey(focusedCell);\n const currentCell = cellRefs.current.get(currentCellKey);\n const isOnSingleFocusable =\n currentCell &&\n getSingleFocusableInCell(currentCell.element) &&\n document.activeElement &&\n currentCell.element.contains(document.activeElement) &&\n document.activeElement !== currentCell.element;\n\n // Handle Tab when focused on single focusable - exit table\n if (event.key === \"Tab\" && isOnSingleFocusable) {\n // Let the tab event bubble up to exit the table\n setIsTableFocused(false);\n setFocusedCell(null);\n return;\n }\n\n // Handle expand/collapse with left/right arrows when table is expandable (treegrid)\n if (\n isExpandable &&\n (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\")\n ) {\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowIndex = focusedCell.rowIndex - headerRowCount;\n\n // Only handle if we're in a body row (not header)\n if (bodyRowIndex >= 0) {\n const rows = table.getRowModel().rows;\n const currentRow = rows[bodyRowIndex];\n\n if (currentRow) {\n const canExpand = currentRow.getCanExpand();\n const isExpanded = currentRow.getIsExpanded();\n\n // Handle expand/collapse logic\n if (event.key === \"ArrowRight\" && canExpand && !isExpanded) {\n // Expand the row\n event.preventDefault();\n currentRow.getToggleExpandedHandler()();\n\n // Maintain focus on the same cell after expansion\n setTimeout(() => {\n focusCell(focusedCell);\n });\n return;\n } else if (event.key === \"ArrowLeft\" && canExpand && isExpanded) {\n // Collapse the row\n event.preventDefault();\n currentRow.getToggleExpandedHandler()();\n\n // Maintain focus on the same cell after collapse\n setTimeout(() => {\n focusCell(focusedCell);\n });\n return;\n }\n }\n }\n }\n\n let direction: \"up\" | \"down\" | \"left\" | \"right\" | null = null;\n\n switch (event.key) {\n case \"ArrowUp\":\n direction = \"up\";\n break;\n case \"ArrowDown\":\n direction = \"down\";\n break;\n case \"ArrowLeft\":\n direction = \"left\";\n break;\n case \"ArrowRight\":\n direction = \"right\";\n break;\n case \"Home\": {\n // Go to first accessible column (prioritizing visible pinned columns)\n focusCell({ ...focusedCell, columnIndex: columnOrder[0] });\n event.preventDefault();\n return;\n }\n case \"End\": {\n // Go to last accessible column (prioritizing visible pinned columns)\n focusCell({\n ...focusedCell,\n columnIndex: columnOrder[columnOrder.length - 1],\n });\n event.preventDefault();\n return;\n }\n case \"Enter\":\n case \" \": {\n const currentCellKey = getCellKey(focusedCell);\n const currentCell = cellRefs.current.get(currentCellKey);\n\n if (currentCell) {\n // Check if this is a sortable header cell\n if (currentCell.isHeader && currentCell.sortingHandler) {\n event.preventDefault();\n currentCell.sortingHandler(event);\n return;\n }\n\n const singleFocusable = getSingleFocusableInCell(\n currentCell.element,\n );\n if (singleFocusable) {\n event.preventDefault();\n\n // Store current focus state before clicking\n const currentPosition = { ...focusedCell };\n\n // Click the focusable\n singleFocusable.click();\n\n // Restore focus after the click\n setTimeout(() => {\n const cellAfterClick = cellRefs.current.get(currentCellKey);\n if (cellAfterClick) {\n const focusableAfterClick = getSingleFocusableInCell(\n cellAfterClick.element,\n );\n if (focusableAfterClick) {\n focusableAfterClick.focus();\n } else {\n // Fallback to cell if focusable is no longer single\n cellAfterClick.element.focus();\n }\n // Ensure our state is still correct\n if (\n focusedCell?.rowIndex !== currentPosition.rowIndex ||\n focusedCell?.columnIndex !== currentPosition.columnIndex\n ) {\n setFocusedCell(currentPosition);\n }\n }\n });\n\n return;\n }\n }\n return;\n }\n default:\n return;\n }\n\n if (direction) {\n event.preventDefault();\n const nextPosition = getNextValidPosition(focusedCell, direction);\n if (nextPosition) {\n focusCell(nextPosition);\n }\n }\n },\n [\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n isOffGridInteractionOccurring,\n ],\n );\n\n return { handleKeyDown };\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to scroll an table cell into view when using keyboard navigation\n * @param table - The table to scroll into view\n */\nexport const useScrollIntoView = <T>({\n table,\n element,\n}: {\n table: TanstackTable<T>;\n element?: HTMLElement;\n}) => {\n const isScrollingRef = useRef(false);\n const scrollTimeoutRef = useRef<number>();\n\n const { leftWidth, rightWidth } = useMemo(() => {\n return {\n leftWidth: table.getLeftTotalSize(),\n rightWidth: table.getRightTotalSize(),\n };\n }, [table]);\n\n // Scroll element into view to prevent sticky headers/footers from covering the cell\n useEffect(() => {\n if (!element) return;\n\n const isBodyCell = element.getAttribute(\"data-anv\") === \"table-body-cell\";\n\n const scrollContainer = element.closest(\n '[data-anv=\"table-scroll-container\"]',\n ) as HTMLElement;\n\n const headerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[0];\n const footerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[2];\n\n const stickyDimensions = {\n headerHeight: headerElement.getBoundingClientRect().height,\n footerHeight: footerElement\n ? footerElement.getBoundingClientRect().height\n : 0,\n leftWidth,\n rightWidth,\n };\n\n // Detect user scrolling to prevent auto-scroll during manual scroll\n const handleScroll = () => {\n isScrollingRef.current = true;\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = window.setTimeout(() => {\n isScrollingRef.current = false;\n }, 150);\n };\n\n scrollContainer.addEventListener(\"scroll\", handleScroll);\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting && !isScrollingRef.current) {\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n const getScrollByLeft = () => {\n // Element is under left pinned columns\n if (\n entry.boundingClientRect.x <\n scrollContainerRect.x + stickyDimensions.leftWidth\n ) {\n return (\n -stickyDimensions.leftWidth +\n entry.boundingClientRect.x -\n scrollContainerRect.x\n );\n }\n // Element is under right pinned columns\n if (\n entry.boundingClientRect.x + entry.boundingClientRect.width >\n scrollContainerRect.x +\n scrollContainerRect.width -\n stickyDimensions.rightWidth\n ) {\n return (\n element.offsetLeft +\n (!isBodyCell ? scrollContainerRect.x : 0) + // header/footer have different offsetParent\n entry.boundingClientRect.width -\n scrollContainerRect.x -\n scrollContainerRect.width -\n scrollContainer.scrollLeft +\n stickyDimensions.rightWidth\n );\n }\n return 0;\n };\n\n const getScrollByTop = () => {\n if (!isBodyCell) return 0;\n // Element is under header\n if (\n entry.boundingClientRect.y <\n scrollContainerRect.y + stickyDimensions.headerHeight\n ) {\n return (\n -stickyDimensions.headerHeight +\n entry.boundingClientRect.y -\n scrollContainerRect.y\n );\n }\n // Element is under footer\n if (\n entry.boundingClientRect.y + entry.boundingClientRect.height >\n scrollContainerRect.y +\n scrollContainerRect.height -\n stickyDimensions.footerHeight\n ) {\n return (\n element.offsetTop +\n entry.boundingClientRect.height -\n scrollContainerRect.y -\n scrollContainerRect.height -\n scrollContainer.scrollTop +\n stickyDimensions.footerHeight\n );\n }\n return 0;\n };\n\n scrollContainer.scrollBy({\n left: getScrollByLeft(),\n top: getScrollByTop(),\n behavior: \"smooth\",\n });\n }\n },\n {\n root: scrollContainer,\n rootMargin: `-${stickyDimensions.headerHeight}px -${stickyDimensions.rightWidth}px -${stickyDimensions.footerHeight}px -${stickyDimensions.leftWidth}px \n `,\n threshold: 1.0,\n },\n );\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n scrollContainer.removeEventListener(\"scroll\", handleScroll);\n if (isScrollingRef.current) isScrollingRef.current = false;\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n scrollTimeoutRef.current = undefined;\n }\n };\n }, [element, leftWidth, rightWidth]);\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { CellPosition, FocusableCell } from \"./types\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport { useHandleKeyDown } from \"./useHandleKeyDown\";\nimport { useScrollIntoView } from \"./useScrollIntoView\";\n\nexport type RegisterCellProps = {\n position: CellPosition;\n element: HTMLElement;\n isHeader?: boolean;\n sortingHandler?: (event: React.KeyboardEvent | React.MouseEvent) => void;\n};\n\n/**\n * Hook to accessibly manage the focus state of a table\n * @param table - The table to manage the focus of\n * @param isExpandable - Whether the table supports row expansion\n */\nexport const useFocusManagement = <T>(\n table: TanstackTable<T>,\n isExpandable: boolean = false,\n) => {\n const [focusedCell, setFocusedCell] = useState<CellPosition | null>(null);\n const [isTableFocused, setIsTableFocused] = useState(false);\n const [isOffGridInteractionOccurring, setIsOffGridInteractionOccurring] =\n useState(false);\n const cellRefs = useRef<Map<string, FocusableCell>>(new Map());\n const tableRef = useRef<HTMLDivElement>(null);\n\n const getCellKey = useCallback((position: CellPosition) => {\n return `${position.rowIndex}-${position.columnIndex}`;\n }, []);\n\n const registerCell = useCallback(\n ({\n position,\n element,\n isHeader = false,\n sortingHandler,\n }: RegisterCellProps) => {\n const key = getCellKey(position);\n cellRefs.current.set(key, {\n position,\n element,\n isHeader,\n sortingHandler,\n });\n },\n [getCellKey],\n );\n\n const unregisterCell = useCallback(\n (position: CellPosition) => {\n const key = getCellKey(position);\n cellRefs.current.delete(key);\n },\n [getCellKey],\n );\n\n const getTotalColumns = useCallback(() => {\n return table.getFlatHeaders().length;\n }, [table]);\n\n // Use column analysis hook for both visual order and accessible columns\n const { columnOrder } = useColumnOrder({ table });\n\n // Find the next valid cell position by checking if cells are actually registered\n const getNextValidPosition = useCallback(\n (\n currentPosition: CellPosition,\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n ): CellPosition | null => {\n const totalColumns = getTotalColumns();\n\n let newRowIndex = currentPosition.rowIndex;\n let newColumnIndex = currentPosition.columnIndex;\n\n switch (direction) {\n case \"up\":\n newRowIndex = currentPosition.rowIndex - 1;\n break;\n case \"down\":\n newRowIndex = currentPosition.rowIndex + 1;\n break;\n case \"left\":\n case \"right\": {\n // Use visual column order for horizontal navigation\n const currentVisualIndex = columnOrder.indexOf(\n currentPosition.columnIndex,\n );\n\n if (currentVisualIndex === -1) {\n // Fallback to logical order if visual order fails\n if (direction === \"left\") {\n newColumnIndex = Math.max(0, currentPosition.columnIndex - 1);\n } else {\n newColumnIndex = Math.min(\n totalColumns - 1,\n currentPosition.columnIndex + 1,\n );\n }\n } else {\n // Navigate using visual order\n let targetVisualIndex;\n if (direction === \"left\") {\n targetVisualIndex = Math.max(0, currentVisualIndex - 1);\n } else {\n targetVisualIndex = Math.min(\n columnOrder.length - 1,\n currentVisualIndex + 1,\n );\n }\n newColumnIndex = columnOrder[targetVisualIndex];\n }\n break;\n }\n }\n\n if (direction === \"up\" || direction === \"down\") {\n if (newRowIndex < 0) {\n return null; // Can't go above first row\n }\n\n const targetKey = getCellKey({\n rowIndex: newRowIndex,\n columnIndex: newColumnIndex,\n });\n const targetCell = cellRefs.current.get(targetKey);\n\n if (!targetCell) {\n return null; // No cell registered at target position\n }\n }\n\n // Check if the position actually changed\n if (\n newRowIndex === currentPosition.rowIndex &&\n newColumnIndex === currentPosition.columnIndex\n ) {\n return null;\n }\n\n return { rowIndex: newRowIndex, columnIndex: newColumnIndex };\n },\n [getTotalColumns, getCellKey, columnOrder],\n );\n\n // Helper to detect if cell contains only a single focusable button\n const getSingleFocusableInCell = useCallback(\n (cellElement: HTMLElement): HTMLElement | null => {\n const focusableElements = cellElement.querySelectorAll(\n 'button, input[type=\"checkbox\"], input[type=\"radio\"]',\n );\n\n if (focusableElements.length === 1) {\n return focusableElements[0] as HTMLElement;\n }\n\n return null;\n },\n [],\n );\n\n const updateAllTabIndices = useCallback(\n (newFocusedPosition: CellPosition) => {\n cellRefs.current.forEach((cell, key) => {\n const [rowIndex, columnIndex] = key.split(\"-\").map(Number);\n const isFocusedCell =\n rowIndex === newFocusedPosition.rowIndex &&\n columnIndex === newFocusedPosition.columnIndex;\n\n const singleFocusable = getSingleFocusableInCell(cell.element);\n\n if (singleFocusable) {\n // For single-button cells, keep cell focusable and button out of tab sequence\n cell.element.tabIndex = isFocusedCell ? 0 : -1;\n singleFocusable.tabIndex = -1; // Always -1 to prevent Tab from focusing it\n } else {\n // For regular cells, manage cell tabIndex normally\n cell.element.tabIndex = isFocusedCell ? 0 : -1;\n }\n });\n },\n [getSingleFocusableInCell],\n );\n\n // Use scroll into view hook\n const [cellRef, setCellRef] = useState<HTMLElement | undefined>(undefined);\n useScrollIntoView({ table, element: cellRef });\n\n const updateCellFocusAndTabIndices = useCallback(\n (cell: FocusableCell, position: CellPosition) => {\n setFocusedCell(position);\n\n requestAnimationFrame(() => {\n updateAllTabIndices(position);\n\n // Check if cell contains only a single focusable\n const singleFocusable = getSingleFocusableInCell(cell.element);\n if (singleFocusable) {\n singleFocusable.focus();\n } else {\n cell.element.focus();\n }\n setCellRef(cell.element);\n });\n },\n [updateAllTabIndices, getSingleFocusableInCell],\n );\n\n const focusCell = useCallback(\n (position: CellPosition) => {\n const key = getCellKey(position);\n const cell = cellRefs.current.get(key);\n\n if (cell) {\n updateCellFocusAndTabIndices(cell, position);\n } else {\n // If cell isn't registered yet, try to find it in the next frame\n requestAnimationFrame(() => {\n const retryCell = cellRefs.current.get(key);\n if (retryCell) {\n updateCellFocusAndTabIndices(retryCell, position);\n }\n });\n }\n },\n [getCellKey, updateCellFocusAndTabIndices],\n );\n\n // Use handle key down hook\n const { handleKeyDown } = useHandleKeyDown({\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n isOffGridInteractionOccurring,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n });\n\n // Initialize focus to first header cell when table gains focus\n const initializeFocus = useCallback(() => {\n setIsTableFocused(true);\n const firstHeaderPosition = { rowIndex: 0, columnIndex: 0 };\n\n // Manual focus for initialization\n const key = getCellKey(firstHeaderPosition);\n const cell = cellRefs.current.get(key);\n\n if (cell) {\n updateCellFocusAndTabIndices(cell, firstHeaderPosition);\n }\n }, [getCellKey, updateCellFocusAndTabIndices]);\n\n const handleTableBlur = useCallback(() => {\n setIsTableFocused(false);\n setFocusedCell(null);\n }, []);\n\n // Get tabIndex for a specific cell (for initial setup only, manual management takes over after)\n const getCellTabIndex = useCallback(\n (position: CellPosition): number => {\n // Check if we're managing this manually (cell is registered)\n const key = getCellKey(position);\n const cell = cellRefs.current.get(key);\n if (cell) {\n // Return the current DOM value since we're managing it manually\n return cell.element.tabIndex;\n }\n\n // Fallback for initial render before manual management kicks in\n if (!isTableFocused) {\n // If table is not focused, only the first header cell should be focusable\n return position.rowIndex === 0 && position.columnIndex === 0 ? 0 : -1;\n }\n\n if (!focusedCell) {\n // If no cell is focused yet, make first header cell focusable\n return position.rowIndex === 0 && position.columnIndex === 0 ? 0 : -1;\n }\n\n // Only the currently focused cell should have tabIndex 0\n return focusedCell.rowIndex === position.rowIndex &&\n focusedCell.columnIndex === position.columnIndex\n ? 0\n : -1;\n },\n [isTableFocused, focusedCell, getCellKey],\n );\n\n return {\n focusedCell,\n isTableFocused,\n tableRef,\n registerCell,\n unregisterCell,\n handleKeyDown,\n initializeFocus,\n handleTableBlur,\n getCellTabIndex,\n focusCell,\n isOffGridInteractionOccurring,\n setIsOffGridInteractionOccurring,\n };\n};\n","import { useState, ReactNode, useCallback, useMemo } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { DataTableContext } from \"./DataTableContext\";\nimport { useFocusManagement } from \"../../internal/focus-management/useFocusManagement\";\n\n/**\n * Props for the DataTableContextProvider component\n */\ninterface DataTableContextProps<T> {\n /**\n * The children of the DataTableContextProvider component\n */\n children: ReactNode;\n /**\n * The table for the DataTableContextProvider component\n */\n table: TanstackTable<T>;\n /**\n * Whether the table supports row expansion\n */\n hasSubRows: boolean;\n}\n\n/**\n * DataTable context provider for data tables using TanStack Table\n * @param props - The props for the DataTableContextProvider component\n * @param props.children - The children of the DataTableContextProvider component\n * @param props.table - The table instance\n * @param props.hasSubRows - Whether the table supports row expansion\n */\nexport function DataTableContextProvider<T>({\n children,\n table,\n hasSubRows,\n}: DataTableContextProps<T>) {\n const [hoveredColumnId, setHoveredColumnId] = useState<string | null>(null);\n\n const focusManagement = useFocusManagement(table, hasSubRows);\n\n const setHoveredColumnIdNotResizing = useCallback(\n (columnId: string | null) => {\n // Check if any resize handle is currently being used (aria-pressed=\"true\")\n const resizingHandle = document.querySelector(\n '[aria-roledescription=\"Resize handle\"][aria-pressed=\"true\"]',\n );\n\n // Don't update hover state if any resize handle is currently active/resizing\n if (resizingHandle) {\n return;\n }\n\n setHoveredColumnId(columnId);\n },\n [],\n );\n\n const contextValue = useMemo(\n () => ({\n hoveredColumnId,\n setHoveredColumnId: setHoveredColumnIdNotResizing,\n focusedCell: focusManagement.focusedCell,\n isTableFocused: focusManagement.isTableFocused,\n registerCell: focusManagement.registerCell,\n unregisterCell: focusManagement.unregisterCell,\n getCellTabIndex: focusManagement.getCellTabIndex,\n handleKeyDown: focusManagement.handleKeyDown,\n initializeFocus: focusManagement.initializeFocus,\n handleTableBlur: focusManagement.handleTableBlur,\n focusCell: focusManagement.focusCell,\n isOffGridInteractionOccurring:\n focusManagement.isOffGridInteractionOccurring,\n setIsOffGridInteractionOccurring:\n focusManagement.setIsOffGridInteractionOccurring,\n hasSubRows,\n }),\n [\n hoveredColumnId,\n setHoveredColumnIdNotResizing,\n focusManagement.focusedCell,\n focusManagement.isTableFocused,\n focusManagement.registerCell,\n focusManagement.unregisterCell,\n focusManagement.getCellTabIndex,\n focusManagement.handleKeyDown,\n focusManagement.initializeFocus,\n focusManagement.handleTableBlur,\n focusManagement.focusCell,\n focusManagement.isOffGridInteractionOccurring,\n focusManagement.setIsOffGridInteractionOccurring,\n hasSubRows,\n ],\n );\n\n return (\n <DataTableContext.Provider value={contextValue}>\n {children}\n </DataTableContext.Provider>\n );\n}\n","import * as React from \"react\";\nconst SvgArrowUpward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1z\" }));\nexport default SvgArrowUpward;\n","import * as React from \"react\";\nconst SvgArrowDownward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1z\" }));\nexport default SvgArrowDownward;\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Props for the TableHeader component\n * @extends ComponentPropsWithoutRef<\"thead\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableHeaderProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table header component for simple presentational or complex data tables\n * @param props - The props for the TableHeader component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableHeader component\n * @param props.ref - The ref of the TableHeader component\n */\nexport function TableHeader({ type, children, ...rest }: TableHeaderProps) {\n const classes = cx(styles[\"table-header\"], rest.className);\n\n const Element = type === \"simple\" ? \"thead\" : \"div\";\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\n/**\n * The common props for the TableHeaderCell component\n */\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /**\n * Whether the cell is a group cell (for grouped columns)\n */\n isGroup?: boolean;\n /**\n * Whether the header cell can be used to activate column sorting\n */\n isSortable?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * The props for the TableHeaderCell component\n */\nexport type TableHeaderCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * The styled table header cell component\n * @param props - The props for the TableHeaderCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableHeaderCell component\n * @param props.rest - The rest of the props\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\n isSelectCell,\n isExpandCell,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(styles[\"table-header-cell\"], className, {\n [styles[\"table-header-cell-group\"]]: isGroup,\n [styles[\"table-header-cell-sortable\"]]: isSortable,\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"th\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-header-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"columnheader\"}\n >\n {children}\n </CellElement>\n );\n },\n);\n\nTableHeaderCell.displayName = \"TableHeaderCell\";\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport { HeaderContext } from \"@tanstack/react-table\";\nimport { DataTableHeaderCellProps as BaseDataTableHeaderCellProps } from \"../../../base/cells/TableHeaderCell\";\nimport { SrOnly } from \"../../../../../../components\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableHeaderCell component\n * @extends BaseDataTableHeaderCellProps\n */\nexport type DataTableHeaderCellProps<T> = BaseDataTableHeaderCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n header: HeaderContext<T, unknown>;\n};\n\n/**\n * Data table header cell with focus management\n * @param props - The props for the DataTableHeaderCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableHeaderCell component\n * @param props.header - The header of the DataTableHeaderCell component\n */\nexport function DataTableHeaderCell<T>(props: DataTableHeaderCellProps<T>) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const headerCellRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n useEffect(() => {\n if (headerCellRef.current) {\n const sortingHandler = header.column.columnDef.enableSorting\n ? header.column.getToggleSortingHandler()\n : undefined;\n\n tableContext.registerCell({\n position: cellPosition,\n element: headerCellRef.current,\n isHeader: true,\n sortingHandler,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext, header.column]);\n\n const handleFocus = useCallback(() => {\n // handle focusing from outside the table or clicked\n if (!tableContext.isTableFocused) {\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n }\n }, [cellPosition, tableContext]);\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (header.column.columnDef.enableSorting) {\n // Check if the click target is within a resize handle\n const target = event.target as HTMLElement;\n const resizeHandle = target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n // If clicking on resize handle, don't trigger sorting\n if (resizeHandle) {\n return;\n }\n\n // Otherwise, trigger sorting\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column],\n );\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={headerCellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onClick={handleClick}\n className={cx(styles[\"data-table-header-cell\"], className)}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {header.column.columnDef.enableSorting && (\n <SrOnly>\n {header.column.getIsSorted() === \"asc\"\n ? \"Sorted ascending.\"\n : header.column.getIsSorted() === \"desc\"\n ? \"Sorted descending.\"\n : \"Not sorted.\"}{\" \"}\n Click to toggle sort.\n </SrOnly>\n )}\n </TableHeaderCell>\n );\n}\n","import cx from \"classnames\";\nimport { Header } from \"@tanstack/react-table\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\n/**\n * Props for the ResizeHandle component\n * @extends Header<T, unknown>\n */\nexport type ResizeHandleProps<T> = {\n header: Header<T, unknown>;\n};\n\n/**\n * Resize handle component resizing table columns\n * @param props - The props for the ResizeHandle component\n * @param props.header - The header of the ResizeHandle component\n */\nexport function ResizeHandle<T>({ header }: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], {\n [styles[\"resizing\"]]: header.column.getIsResizing(),\n });\n\n return (\n <div\n role=\"button\"\n // TODO: enable keyboard resizing\n tabIndex={-1}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={classes}\n aria-label=\"Resize column\"\n aria-pressed={header.column.getIsResizing()}\n aria-roledescription=\"Resize handle\"\n />\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { flexRender, Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport IconArrowUpward from \"../../../../../../public/assets/icons/material/round/arrow_upward.svg\";\nimport IconArrowDownward from \"../../../../../../public/assets/icons/material/round/arrow_downward.svg\";\n\nimport { TableHeader } from \"../../base/TableHeader\";\nimport { useDataTableContext } from \"./useDataTableContext\";\nimport { DataTableHeaderCell } from \"./cells/DataTableHeaderCell\";\nimport { Flex, Icon } from \"../../../../../components\";\nimport { getColSpanWidth } from \"../../internal/getColSpanWidth\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { ResizeHandle } from \"../../internal/ResizeHandle\";\n\nimport styles from \"./DataTableHeader.module.scss\";\n\n/**\n * Props for the DataTableHeader component\n * @extends TanstackTable<T>\n * @extends ComponentPropsWithoutRef<\"div\">\n */\ntype DataTableHeaderProps<T> = {\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Data table header container\n * @param props - The props for the DataTableHeader component\n * @param props.table - The table instance from @tanstack/react-table to render\n */\nexport function DataTableHeader<T>({ table }: DataTableHeaderProps<T>) {\n const { setHoveredColumnId } = useDataTableContext();\n\n return (\n <TableHeader type=\"data-table\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <div\n key={headerGroup.id}\n className={styles[\"data-table-header-row\"]}\n role=\"row\"\n aria-rowindex={index + 1}\n >\n {headerGroup.headers.map((header) => {\n const isLastInParentGroup = header.column.parent\n ? header.column.parent.getLeafColumns().slice(-1)[0] ===\n header.column\n : false;\n\n const isInternalSelectColumn =\n header.column.id === \"a2-table-internal-select\";\n const isInternalExpandColumn =\n header.column.id === \"a2-table-internal-expand\";\n\n const minWidth = getColSpanWidth(\n header.colSpan,\n header.column.columns?.length > 0\n ? header.column.columns[0].getIndex()\n : header.column.getIndex(),\n );\n\n return (\n <DataTableHeaderCell\n header={header.getContext()}\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={{\n minWidth,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={\n \"columns\" in header.column.columnDef ||\n (header.getContext().header.column.parent &&\n isLastInParentGroup)\n }\n isSortable={header.column.columnDef.enableSorting}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => setHoveredColumnId(header.column.id)\n }\n onMouseLeave={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => setHoveredColumnId(null)\n }\n cellPosition={{\n rowIndex: index,\n columnIndex: header.column.getIndex(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Flex\n direction=\"row\"\n alignItems=\"flex-end\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex direction=\"row\" alignItems=\"center\" gap={2} grow={1}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle header={header} />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\n/**\n * Props for the TableContainer component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The background color of the table container\n */\n background?: \"default\" | \"strong\";\n };\n\n/**\n * Styled container for tables that includes a scroll container and a background color\n * @param props - The props for the TableContainer component\n * @param props.children - The children of the TableContainer component\n * @param props.className - The class name of the TableContainer component\n * @param props.style - The style of the TableContainer component\n * @param props.background - The background color of the table container\n * @param props.ref - The ref of the TableContainer component\n */\nexport const TableContainer = forwardRef<HTMLDivElement, TableContainerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n style,\n background = \"default\",\n ...rest\n } = componentProps;\n\n const tableContainerClassNames = cx(className, styles[\"table-container\"], {\n [styles[\"bg-strong\"]]: background === \"strong\",\n });\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n style={styleCombined}\n ref={ref}\n {...rest}\n className={tableContainerClassNames}\n data-anv=\"table-container\"\n >\n <div\n className={styles[\"table-scroll-container\"]}\n data-anv=\"table-scroll-container\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nTableContainer.displayName = \"TableContainer\";\n","import { forwardRef } from \"react\";\n\nimport { useDataTableContext } from \"./useDataTableContext\";\n\nimport { TableContainer, TableContainerProps } from \"../../base/TableContainer\";\n\n/**\n * Data table container with focus management\n * @extends TableContainerProps\n */\nexport const DataTableContainer = forwardRef<\n HTMLDivElement,\n TableContainerProps\n>(({ children, onFocus, onBlur, onKeyDown, tabIndex, ...rest }, ref) => {\n const tableContext = useDataTableContext();\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event);\n // Only initialize focus if the container itself received focus from outside\n // Not when focus moves between cells within the table\n if (event.target === event.currentTarget) {\n tableContext.initializeFocus();\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n onBlur?.(event);\n // Only blur if focus is leaving the table container entirely\n if (!event.currentTarget.contains(event.relatedTarget as Node)) {\n tableContext.handleTableBlur();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n tableContext.handleKeyDown(event);\n };\n\n return (\n <TableContainer\n ref={ref}\n {...rest}\n tabIndex={tabIndex ?? 0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n >\n {children}\n </TableContainer>\n );\n});\n\nDataTableContainer.displayName = \"DataTableContainer\";\n","import { Pagination, PaginationProps } from \"../../../../..\";\nimport { useDataTableContext } from \"./useDataTableContext\";\n\nimport styles from \"./DataTablePagination.module.scss\";\nimport { useCallback } from \"react\";\n\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n \"page\" | \"itemsPerPage\" | \"totalItemCount\" | \"showCount\" | \"onPageChange\"\n>;\n\nexport const DataTablePagination = ({\n showCount = true,\n ...props\n}: DataTablePaginationProps) => {\n const { setIsOffGridInteractionOccurring } = useDataTableContext();\n\n const handleFocus = useCallback(() => {\n setIsOffGridInteractionOccurring(true);\n }, [setIsOffGridInteractionOccurring]);\n\n const handleBlur = useCallback(() => {\n setIsOffGridInteractionOccurring(false);\n }, [setIsOffGridInteractionOccurring]);\n\n return (\n <Pagination\n className={styles[\"pagination\"]}\n {...props}\n showCount={showCount}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n );\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useAsyncData = <T,>(dataOrPromise: T | Promise<T>) => {\n const [resolvedData, setResolvedData] = useState<T | null>(null);\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n try {\n const data = await dataOrPromise;\n setResolvedData(data);\n setIsLoading(false);\n } catch (_error) {\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise]);\n\n if (!(dataOrPromise instanceof Promise)) {\n return { data: dataOrPromise, error: false, isLoading: false };\n }\n\n return { data: resolvedData, error, isLoading };\n};\n","import { ComponentPropsWithoutRef, useCallback, useMemo } from \"react\";\nimport {\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n ColumnPinningState,\n RowSelectionState,\n TableOptions,\n ExpandedState,\n getExpandedRowModel,\n getGroupedRowModel,\n SortingState,\n HeaderContext,\n CellContext,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport Checkbox from \"../../../../components/Checkbox\";\nimport Button from \"../../../../components/Button\";\nimport Flex from \"../../../../components/Flex\";\nimport ExpandIcon from \"../../../../../public/assets/icons/material/round/chevron_right.svg\";\n\nimport { ColumnDef, CustomTableFooterCellProps, TableRow } from \"../types\";\nimport { TableBase } from \"../base/TableBase\";\nimport { DataTableBody } from \"./internal/DataTableBody\";\nimport { TableContainerProps } from \"../base/TableContainer\";\nimport { DataTableFooter } from \"./internal/DataTableFooter\";\nimport { getTanStackColumnDef } from \"../internal/getTanStackColumnDef\";\nimport { DataTableContextProvider } from \"./internal/DataTableContextProvider\";\nimport { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { DataTableContainer } from \"./internal/DataTableContainer\";\nimport { DataTablePagination } from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport { DataTablePaginationConfig } from \"./types\";\n\nimport styles from \"./DataTable.module.scss\";\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\n\n/**\n * Represents a sorted column configuration for DataTable\n */\nexport type SortedColumn = {\n /**\n * The column identifier\n */\n id: string;\n /**\n * Whether the column is sorted in descending order\n */\n desc: boolean;\n};\n\n/**\n * Props for the DataTable component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableProps<T> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The columns for the table, created with the `createColumnHelper` factory function.\n */\n columns: ColumnDef<T>[];\n /**\n * The background color of the table container\n * @default \"default\"\n */\n background?: TableContainerProps[\"background\"];\n /**\n * The custom footer content for the table. Will be overridden by the footer content of the columns.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * The data for the table. Must be an array of objects with an `id` property.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * The default expanded row ids. Can be \"all\" to expand all rows, or an array of row ids to expand specific rows.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * The default selected row ids.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The default sorted column.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * The expanded row ids.\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Called when the row expansion state changes. Passes the expanded row ids.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the row selection state changes. Passes the selected row ids.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the column sorting state changes. Passes the sorted column.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Pagination configuration. When provided, enables pagination and filters data to show only the current page.\n * When `true`, the default pagination configuration is used.\n * When `false` or `undefined`, no pagination is applied and all data is shown.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * The selected row ids.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The sorted column.\n */\n sortedColumn?: SortedColumn;\n };\n\n/**\n * Data table component for complex data grid layouts\n *\n * Features:\n * - Built-in focus management for accessibility\n * - Column resizing\n * - Column pinning\n * - Column grouping\n * - Controlled or uncontrolled column sorting\n * - Row selection\n * - Row expansion\n * - Row sub-component\n * - Row sub-rows\n * - Default and Strong backgrounds\n * - Pagination support with configurable items per page\n *\n * @param props - The props for the DataTable component\n * @param props.data - The data for the table. Must be an array of objects with an `id` property.\n * @param props.columns - The columns for the table, created with the `createColumnHelper` factory function.\n * @param props.background - The background color of the table container\n * @param props.customFooter - The custom footer content for the table. Will be overridden by the footer content of the columns.\n * @param props.defaultExpandedRowIds - The default expanded row ids.\n * @param props.defaultSelectedRowIds - The default selected row ids.\n * @param props.defaultSortedColumn - The default sorted column.\n * @param props.expandedRowIds - The expanded row ids.\n * @param props.isSelectable - Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @param props.onSelectRow - Called when the row selection state changes. Passes the selected row ids.\n * @param props.onSort - Called when the column sorting state changes. Passes the sorted column.\n * @param props.onExpandRow - Called when the row expansion state changes. Passes the expanded row ids.\n * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.\n * @param props.selectedRowIds - The selected row ids.\n * @param props.sortedColumn - The sorted column.\n * @param props.style - The style of the table container.\n * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.\n *\n * @example\n * <DataTable\n * data={tableData}\n * columns={columns}\n * pagination={{\n * itemsPerPage: 25,\n * defaultPageIndex: 0,\n * onPageChange: (pageIndex) => console.log('Page changed to:', pageIndex),\n * showCount: true,\n * }}\n * />\n */\nexport function DataTable<T>(props: DataTableProps<T>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n background = \"default\",\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const [rowSelection, setRowSelection] =\n useOptionallyControlledState<RowSelectionState>({\n controlledValue:\n isSelectable && selectedRowIds\n ? Object.fromEntries(selectedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isSelectable\n ? defaultSelectedRowIds\n ? Object.fromEntries(defaultSelectedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newRowSelection) => {\n onSelectRow?.(Object.keys(newRowSelection) as TableRow<T>[\"id\"][]);\n },\n });\n\n const [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: sortedColumn ? [sortedColumn] : undefined,\n defaultValue: defaultSortedColumn ? [defaultSortedColumn] : undefined,\n onChange: (newSorting) => {\n onSort?.(newSorting[0]);\n },\n });\n\n const isPaginated = !!pagination;\n const paginationObject =\n typeof pagination === \"object\" ? pagination : undefined;\n const rowsPerPage = paginationObject?.rowsPerPage ?? 25;\n\n const [currentPageIndex, setCurrentPageIndex] =\n useOptionallyControlledState<number>({\n controlledValue: paginationObject?.currentPageIndex,\n defaultValue: paginationObject?.defaultPageIndex ?? 0,\n onChange: (newPageIndex) => {\n paginationObject?.onPageChange?.(newPageIndex);\n },\n });\n\n const pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return pageLoader({\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pageLoader omitted intentionally\n }, [isAsyncPaginated, currentPageIndex, rowsPerPage, dataProp]);\n\n const {\n data: resolvedData,\n //TODO: Table should represent error state\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount =\n paginationObject?.totalRowCount ?? resolvedData?.length ?? 0;\n\n const hasSubRows = !!resolvedData?.some(\n (row) => row?.subRows?.length ?? 0 > 0,\n );\n const hasSubComponent = !!resolvedData?.some(\n (row) => row?.subComponent != null,\n );\n const isExpandable = hasSubRows || hasSubComponent;\n\n const [expanded, setExpanded] = useOptionallyControlledState<ExpandedState>({\n controlledValue:\n isExpandable && expandedRowIds\n ? expandedRowIds === \"all\"\n ? true\n : Object.fromEntries(expandedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isExpandable\n ? defaultExpandedRowIds\n ? defaultExpandedRowIds === \"all\"\n ? true\n : Object.fromEntries(defaultExpandedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newExpanded) => {\n if (newExpanded === true) {\n onExpandRow?.(\"all\");\n } else {\n onExpandRow?.(Object.keys(newExpanded) as TableRow<T>[\"id\"][]);\n }\n },\n });\n\n const tableData = useMemo(() => {\n // If the data is still loading, show no data\n if (isLoading) return [];\n // If pagination is not enabled or is async, return the data as is.\n if (!isPaginated || isAsyncPaginated) return resolvedData;\n\n const maxPageIndex = Math.max(\n 0,\n Math.ceil(totalItemCount / rowsPerPage) - 1,\n );\n // Clamp page index to valid range\n const clampedPageIndex = Math.max(\n 0,\n Math.min(currentPageIndex ?? 0, maxPageIndex),\n );\n const startIndex = clampedPageIndex * rowsPerPage;\n const endIndex = startIndex + rowsPerPage;\n\n return resolvedData?.slice(startIndex, endIndex) ?? [];\n }, [\n isLoading,\n isPaginated,\n isAsyncPaginated,\n resolvedData,\n totalItemCount,\n rowsPerPage,\n currentPageIndex,\n ]);\n\n // Calculate column pinning state (including select/expand columns if needed)\n const columnPinning = useMemo((): ColumnPinningState => {\n const { left, right } = {\n left: columnsProp\n .filter((column) => column.pinned === \"left\")\n .map((c) => String(c.id)),\n right: columnsProp\n .filter((column) => column.pinned === \"right\")\n .map((c) => String(c.id)),\n };\n\n // If any are pinned left, we want to also pin select/expand columns\n const isSelectableOrExpandable = isSelectable || isExpandable;\n const standardPinnedColumns = [];\n if (isSelectable) {\n standardPinnedColumns.push(\"a2-table-internal-select\");\n }\n if (isExpandable) {\n standardPinnedColumns.push(\"a2-table-internal-expand\");\n }\n\n return {\n left:\n isSelectableOrExpandable && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, isSelectable, isExpandable]);\n\n // Build columns for TanStack useReactTable\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n }),\n );\n\n // Add expand column if subRows are present\n if (isExpandable) {\n tableColumns.unshift({\n id: \"a2-table-internal-expand\",\n size: 44,\n header: ({ table }: HeaderContext<T, unknown>) => {\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Button\n onClick={table.getToggleAllRowsExpandedHandler()}\n appearance=\"ghost\"\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: table.getIsAllRowsExpanded(),\n })}\n size=\"small\"\n icon={ExpandIcon}\n aria-label={\n table.getIsAllRowsExpanded()\n ? \"Collapse all rows\"\n : \"Expand all rows\"\n }\n />\n </Flex>\n );\n },\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getCanExpand()) {\n return (\n <Button\n onClick={row.getToggleExpandedHandler()}\n appearance=\"ghost\"\n size=\"small\"\n icon={ExpandIcon}\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: row.getIsExpanded(),\n })}\n aria-label={row.getIsExpanded() ? \"Collapse row\" : \"Expand row\"}\n aria-expanded={\n hasSubComponent && row.getCanExpand()\n ? row.getIsExpanded()\n : undefined\n }\n aria-controls={\n hasSubComponent && row.getCanExpand()\n ? `${row.id}-sub-component`\n : undefined\n }\n />\n );\n // show a checkbox for nested rows if isSelectable is true\n } else if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return (\n <Checkbox\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n />\n );\n }\n },\n });\n }\n\n // Add select column if isSelectable is true\n if (isSelectable) {\n tableColumns.unshift({\n id: \"a2-table-internal-select\",\n size: 44,\n header: ({ table }: HeaderContext<T, unknown>) => (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n aria-label={\n table.getIsAllRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n />\n </Flex>\n ),\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return null;\n }\n return (\n <Checkbox\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [columnsProp, hasSubComponent, isExpandable, isSelectable]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getRowId: (row) => (row as TableRow<T>).id.toString(),\n getSubRows: (row) => (row as TableRow<T>).subRows ?? undefined,\n getRowCanExpand: (row) => {\n const originalRow = row.original as TableRow<T>;\n return (\n (originalRow?.subRows?.length ?? 0) > 0 ||\n originalRow?.subComponent != null\n );\n },\n state: {\n columnPinning,\n rowSelection,\n expanded,\n sorting,\n },\n columnResizeMode: \"onChange\",\n enableRowSelection:\n typeof isSelectable === \"function\"\n ? (row) => isSelectable(row.original)\n : isSelectable,\n onRowSelectionChange: (newRowSelection) => {\n setRowSelection(newRowSelection as RowSelectionState);\n },\n onExpandedChange: (newExpanded) => {\n setExpanded(newExpanded as ExpandedState);\n },\n onSortingChange: (updaterOrValue) => {\n const newSorting =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(sorting)\n : updaterOrValue;\n\n const sortingChanged =\n JSON.stringify(newSorting) !== JSON.stringify(sorting);\n if (!sortingChanged) {\n return;\n }\n\n setSorting(newSorting);\n },\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getExpandedRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns and find the maximum\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n }, []);\n\n const footerLength = useMemo(() => {\n return Math.max(\n ...columnsProp.map((column) => getMaxFooterRows(column)),\n 0,\n );\n }, [columnsProp, getMaxFooterRows]);\n\n const hasFooters =\n footerLength > 0 || (customFooter !== undefined && customFooter.length > 0);\n\n const rowCount = useMemo(\n () => bodyRowCount + headerRowCount + footerLength,\n [bodyRowCount, headerRowCount, footerLength],\n );\n\n /**\n * Create CSS variables for the column sizes and hovered column\n */\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n vars[`--a2-table-col-${header.column.getIndex()}-size`] =\n header.column.getSize();\n }\n return vars;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- columnSizing is needed to trigger recalculation when columns resize\n }, [headers, columnSizing]);\n\n const columnCount = useMemo(() => {\n // don't count grouped column header cells\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n return (\n <DataTableContextProvider table={table} hasSubRows={hasSubRows}>\n <DataTableContainer\n {...rest}\n style={styleCombined}\n background={background}\n className={pagination ? styles[\"container-with-pagination\"] : undefined}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} />\n <DataTableBody table={table} />\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n {/* Visual spacer to avoid collapsing the table body area */}\n <div\n style={{\n height: rowsPerPage ? `${rowsPerPage * 35}px` : \"200px\",\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: \"auto\",\n zIndex: 3,\n }}\n >\n <Spinner />\n </Flex>\n </div>\n </>\n )}\n {hasFooters && (\n <DataTableFooter\n className={\n pagination ? styles[\"footer-with-pagination\"] : undefined\n }\n table={table}\n columns={columnsProp}\n customFooter={customFooter}\n />\n )}\n </TableBase>\n {pagination && (\n <DataTablePagination\n itemsPerPage={rowsPerPage}\n showCount={paginationObject?.showCount ?? true}\n page={(currentPageIndex ?? 0) + 1}\n totalItemCount={totalItemCount}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n />\n )}\n </DataTableContainer>\n </DataTableContextProvider>\n );\n}\n"],"names":["createColumnHelper","styles","EditIcon","isEditing","dataTableCellStyles","value","memo","Fragment","currentCellKey","currentCell","IconArrowUpward","IconArrowDownward","table","ExpandIcon"],"mappings":"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","x_google_ignoreList":[6,7]}
|
|
1
|
+
{"version":3,"file":"DataTable-D6MmOQF2.js","sources":["../src/beta/components/Table/createColumnHelper.ts","../src/beta/components/Table/base/cells/TableEmptyCellContent.tsx","../src/beta/components/Table/internal/TruncateChips.tsx","../src/beta/components/Table/formatters/chipsFormatter.tsx","../src/beta/components/Table/formatters/currencyFormatter.tsx","../src/beta/components/Table/formatters/percentFormatter.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/beta/components/Table/base/TableBase.tsx","../src/beta/components/Table/internal/getCommonPinningStyles.ts","../src/beta/components/Table/internal/getCommonPinningClasses.ts","../src/beta/components/Table/base/TableBody.tsx","../src/beta/components/Table/DataTable/internal/DataTableContext.tsx","../src/beta/components/Table/DataTable/internal/useDataTableContext.tsx","../src/beta/components/Table/base/cells/TableBodyCell.tsx","../../hammer-icon/mdi/round/edit.svg","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/useEditCell.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableBody.tsx","../src/beta/components/Table/internal/getColSpanWidth.ts","../src/beta/components/Table/base/TableFooter.tsx","../src/beta/components/Table/base/cells/TableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableFooter.tsx","../src/beta/components/Table/internal/getTanStackColumnDef.tsx","../src/beta/components/Table/internal/focus-management/useColumnOrder.ts","../src/beta/components/Table/internal/focus-management/useHandleKeyDown.ts","../src/beta/components/Table/internal/focus-management/useScrollIntoView.ts","../src/beta/components/Table/internal/focus-management/useFocusManagement.ts","../src/beta/components/Table/DataTable/internal/DataTableContextProvider.tsx","../../hammer-icon/mdi/round/arrow_upward.svg","../../hammer-icon/mdi/round/arrow_downward.svg","../src/beta/components/Table/base/TableHeader.tsx","../src/beta/components/Table/base/cells/TableHeaderCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.tsx","../src/beta/components/Table/internal/ResizeHandle.tsx","../src/beta/components/Table/DataTable/internal/DataTableHeader.tsx","../src/beta/components/Table/base/TableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTablePagination.tsx","../src/beta/components/Table/DataTable/internal/useAsyncData.tsx","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { ColumnDef } from \"./types\";\n\n/**\n * Utility type that allows a value to be either the original type or,\n * if it's an array, one of the elements in the array\n */\nexport type ValueOrElement<V> = V extends (infer U)[] ? V | U : V;\n\n/**\n * Factory function to create column helper function for defining Table columns\n *\n * @param T - The type of the data\n * @returns A function that creates a column definition\n */\nexport function createColumnHelper<T>() {\n return function createColumn<K extends keyof T>(\n id: K | { group: string },\n column: Omit<\n ColumnDef<T>,\n \"id\" | \"onChange\" | \"options\" | \"renderCell\" | \"sortable\"\n > & {\n renderCell?: (value: T[K], rowDepth: number) => ReactNode;\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n onChange?: (value: T[K], rowId: string) => void;\n options?: { value: ValueOrElement<T[K]>; label: string }[];\n },\n ): ColumnDef<T> {\n if (typeof id === \"object\" && \"group\" in id) {\n return { id: id.group, ...column } as ColumnDef<T>;\n }\n return { id, ...column } as ColumnDef<T>;\n };\n}\n","import styles from \"./TableCells.module.scss\";\n\n/**\n * The empty cell content for table cells\n */\nexport const TableEmptyCellContent = () => {\n return (\n <span aria-label=\"empty table cell\" className={styles[\"empty-cell\"]}>\n —\n </span>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n useState,\n useRef,\n useLayoutEffect,\n} from \"react\";\nimport { Chip, ChipProps } from \"../../../../components/Chip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\n/**\n * Props for the TruncateChips component\n */\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Array of chip items to display\n */\n items: ChipProps[];\n};\n\n/**\n * Optimized TruncateChips component using measurement-based calculation.\n *\n * Features:\n * - Uses visible measurement chips to determine actual layout\n * - Responsive to container width changes\n * - Supports custom gap between chips\n * - Clean, predictable behavior\n *\n * @example\n * <TruncateChips\n * items={[\n * { label: \"React\", onClose: () => {} },\n * { label: \"TypeScript\", onClose: () => {} },\n * { label: \"JavaScript\", onClose: () => {} }\n * ]}\n * />\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n const hiddenChips = useRef<{ el: HTMLElement; rect: DOMRect }[]>([]);\n const plusChipRef = useRef<HTMLSpanElement>(null);\n const [plusChipWidth, setPlusChipWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!chipsContainerRef.current) return;\n let totalHiddenCount = 0;\n const observer = new IntersectionObserver(\n (entries) => {\n const isResizing = document.querySelector(\n '[aria-label=\"Resize column\"][aria-pressed=\"true\"]',\n );\n if (isResizing) return;\n\n // Update the state of each element that was observed\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n // Element is visible, keep it visible\n target.style.display = \"flex\";\n target.style.visibility = \"visible\";\n totalHiddenCount = Math.max(0, totalHiddenCount - 1);\n }\n\n if (!entry.isIntersecting) {\n // Element is outside the container, hide it\n hiddenChips.current.push({\n el: target,\n rect: target.getBoundingClientRect(),\n });\n target.style.visibility = \"hidden\";\n target.style.display = \"none\";\n totalHiddenCount++;\n }\n });\n\n setHiddenCount(totalHiddenCount);\n },\n {\n root: containerRef.current,\n rootMargin: \"0px\",\n threshold: 1,\n },\n );\n\n const children = Array.from(chipsContainerRef.current.children);\n children.forEach((child) => {\n observer.observe(child as HTMLElement);\n });\n\n // Cleanup observer on unmount or dependency change\n return () => {\n observer.disconnect();\n };\n }, [items]); // Re-run when items change\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n if (hiddenCount > 0 && containerRef.current) {\n const plusChipRect = plusChipRef.current?.getBoundingClientRect();\n setPlusChipWidth(plusChipRect?.width ?? 0);\n const containerRect = containerRef.current.getBoundingClientRect();\n const chipRect =\n hiddenChips.current[hiddenChips.current.length - 1].rect;\n\n const fitsHorizontally =\n chipRect.width <= containerRect.width &&\n chipRect.left >= containerRect.left &&\n chipRect.right <= containerRect.right;\n\n const fitsVertically =\n chipRect.height <= containerRect.height &&\n chipRect.top >= containerRect.top &&\n chipRect.bottom <= containerRect.bottom;\n\n const hasEnoughSpace = fitsHorizontally && fitsVertically;\n\n hiddenChips.current[hiddenCount - 1].el.style.display = hasEnoughSpace\n ? \"flex\"\n : \"none\";\n\n if (hasEnoughSpace) {\n hiddenChips.current.pop();\n }\n }\n }\n });\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [hiddenCount]);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles[\"truncate-chips\"], className)}\n style={{\n marginInlineEnd: plusChipWidth,\n }}\n {...rest}\n >\n <div ref={chipsContainerRef} style={{ display: \"contents\" }}>\n {/* Visible chips container */}\n {items.map((chip, index) => (\n <Chip key={index} {...chip} style={{ visibility: \"hidden\" }} />\n ))}\n </div>\n\n {/* Visible plus chip */}\n {hiddenCount > 0 && <Chip label={`+${hiddenCount}`} ref={plusChipRef} />}\n </div>\n );\n};\n","import { Chip, ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * The accepted value type for the chips formatter function\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\n/**\n * Props for the chips formatter function\n */\nexport type ChipsFormatterOptions = {\n /**\n * Whether to truncate the chips instead of wrapping\n */\n truncateChips?: boolean;\n};\n\n/**\n * Helper function for formatting table cells with chips\n * @param value - The value to format\n * @param options - The options for the chips formatter\n * @returns The formatted chips\n */\nexport const chipsFormatter = (\n value?: ChipsValueType,\n { truncateChips }: ChipsFormatterOptions = { truncateChips: false },\n) => {\n if (!value) return <TableEmptyCellContent />;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <TableEmptyCellContent />;\n }\n if (value.every((v) => typeof v === \"string\")) {\n if (truncateChips) {\n const items = value.map((v) => ({ label: v }));\n return <TruncateChips items={items} />;\n }\n return (\n <Flex direction=\"row\" gap=\"2\">\n {value.map((v) => (\n <Chip key={v} label={v} />\n ))}\n </Flex>\n );\n }\n if (truncateChips) {\n return <TruncateChips items={value} />;\n }\n return (\n <Flex direction=\"row\" gap=\"2\" wrap=\"wrap\">\n {value.map((v) => (\n <Chip key={v.label} {...v} />\n ))}\n </Flex>\n );\n }\n if (typeof value === \"string\") {\n return <Chip label={value} />;\n }\n\n return <Chip {...value} />;\n};\n","/**\n * Props for the currency formatter function\n */\nexport type CurrencyFormatterOptions = {\n /**\n * The locale to use for the currency formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The currency to use for the currency formatter\n * @default \"USD\"\n */\n currency?: string;\n};\n\n/**\n * Helper function for formatting table cells with currency, including i18n support\n * @param value - The value to format\n * @param options - The options for the currency formatter\n * @returns The formatted currency\n */\nexport const currencyFormatter = (\n value?: number,\n { locale, currency }: CurrencyFormatterOptions = {\n locale: \"en-US\",\n currency: \"USD\",\n },\n) => {\n return value\n ? value.toLocaleString(locale, {\n style: \"currency\",\n currency,\n })\n : null;\n};\n","/**\n * Options type for the percent formatter function\n */\nexport type PercentFormatterOptions = {\n /**\n * The number of decimals to display\n * @default 2\n */\n decimals?: number;\n /**\n * The locale to use for the percent formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Helper function for formatting table cells with percentages, including i18n support\n * @param value - The value to format\n * @param options - The options for the percent formatter\n * @returns The formatted percentage\n */\nexport const percentFormatter = (\n value?: number,\n { decimals, locale }: PercentFormatterOptions = {\n decimals: 2,\n locale: \"en-US\",\n },\n) => {\n return value\n ? value.toLocaleString(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : null;\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 { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBase.module.scss\";\n\n/**\n * Props for the SimpleTableBase component\n * @extends ComponentPropsWithoutRef<\"table\">\n */\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * Props for the DataTableBase component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"aria-colcount\" | \"aria-rowcount\">\n */\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /**\n * The number of columns in the table\n */\n colCount: number;\n /**\n * The number of rows in the table\n */\n rowCount: number;\n /**\n * Whether the table has expandable rows\n */\n hasSubRows?: boolean;\n};\n\n/**\n * Props for the TableBase component\n * @extends SimpleTableBaseProps\n * @extends DataTableBaseProps\n */\nexport type TableBaseProps =\n | ({\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n type: \"data-table\";\n } & DataTableBaseProps);\n\n/**\n * Base table component for simple presentational tables\n * @param props - The props for the SimpleTableBase component\n * @param props.children - The children of the SimpleTableBase component\n * @param props.className - The class name of the SimpleTableBase component\n * @param props.ref - The ref of the SimpleTableBase component\n */\nconst SimpleTableBase = ({\n children,\n className,\n ...rest\n}: SimpleTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <table\n data-anv=\"simple-table-base\"\n {...rest}\n className={tableBaseClassNames}\n >\n {children}\n </table>\n );\n};\n\n/**\n * Base table component for complex data tables\n * @param props - The props for the DataTableBase component\n * @param props.children - The children of the DataTableBase component\n * @param props.className - The class name of the DataTableBase component\n * @param props.ref - The ref of the DataTableBase component\n */\nconst DataTableBase = ({\n children,\n className,\n colCount,\n rowCount,\n hasSubRows,\n ...rest\n}: DataTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <div\n data-anv=\"data-table-base\"\n {...rest}\n className={tableBaseClassNames}\n aria-colcount={colCount}\n aria-rowcount={rowCount}\n role={hasSubRows ? \"treegrid\" : \"grid\"}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Styled table component for simple presentational or complex data tables\n * @param props - The props for the TableBase component\n * @param props.type - The type of the TableBase component\n * @param props.children - The children of the TableBase component\n * @param props.className - The class name of the TableBase component\n * @param props.ref - The ref of the TableBase component\n */\nexport const TableBase = ({ type, ...rest }: TableBaseProps) => {\n if (type === \"simple\") {\n return <SimpleTableBase {...rest} />;\n }\n\n if (\"rowCount\" in rest && \"colCount\" in rest) {\n return (\n <DataTableBase\n {...rest}\n rowCount={rest.rowCount}\n colCount={rest.colCount}\n />\n );\n }\n};\n","import { CSSProperties } from \"react\";\nimport { Column } from \"@tanstack/react-table\";\n\n/**\n * Get the common styles for position and width of a column with pinning\n */\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n width: `calc(var(--a2-table-col-${column.getIndex()}-size) * 1px)`,\n zIndex: isPinned ? 1 : 0,\n };\n};\n","import { Column } from \"@tanstack/react-table\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Get the common classes for adding shadow styles to pinned columns\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n if (isLastLeftPinnedColumn) {\n return styles[\"last-pinned-left-column\"];\n }\n if (isFirstRightPinnedColumn) {\n return styles[\"first-pinned-right-column\"];\n }\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Props for the TableBody component\n * @extends ComponentPropsWithoutRef<\"tbody\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableBodyProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table body component for simple presentational or complex data tables\n * @param props - The props for the TableBody component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableBody component\n * @param props.ref - The ref of the TableBody component\n */\nexport function TableBody({ type, children, ...rest }: TableBodyProps) {\n const classes = cx(styles[\"table-body\"], rest.className);\n const Element = type === \"simple\" ? \"tbody\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { createContext } from \"react\";\nimport type { CellPosition } from \"../../internal/focus-management/types\";\nimport { RegisterCellProps } from \"../../internal/focus-management/useFocusManagement\";\n\n/**\n * The context type for the table\n */\nexport interface DataTableContextType {\n hoveredColumnId: string | null;\n setHoveredColumnId: (columnId: string | null) => void;\n // Editable cell management\n isOffGridInteractionOccurring: boolean;\n setIsOffGridInteractionOccurring: (\n isOffGridInteractionOccurring: boolean,\n ) => void;\n // Focus management\n focusedCell: CellPosition | null;\n isTableFocused: boolean;\n registerCell: (props: RegisterCellProps) => void;\n unregisterCell: (position: CellPosition) => void;\n getCellTabIndex: (position: CellPosition) => number;\n handleKeyDown: (event: React.KeyboardEvent) => void;\n initializeFocus: () => void;\n handleTableBlur: () => void;\n focusCell: (position: CellPosition) => void;\n hasSubRows: boolean;\n}\n\n/**\n * The context for the table context provider\n */\nexport const DataTableContext = createContext<DataTableContextType | undefined>(\n undefined,\n);\n","import { useContext } from \"react\";\nimport { DataTableContext } from \"./DataTableContext\";\n\n/**\n * Hook to access the internal data table context\n */\nexport function useDataTableContext() {\n const context = useContext(DataTableContext);\n if (context === undefined) {\n throw new Error(\n \"useDataTableContext must be used within a DataTableContextProvider\",\n );\n }\n return context;\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableBodyCellProps = ComponentPropsWithoutRef<\"td\"> &\n CommonTableCellProps;\n\nexport type DataTableBodyCellProps = ComponentPropsWithoutRef<\"div\"> &\n CommonTableCellProps;\n\n/**\n * The props for the TableBodyCell component\n */\nexport type TableBodyCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * The styled table body cell component\n * @param props - The props for the TableBodyCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableBodyCell component\n * @param props.rest - The rest of the props\n */\nexport const TableBodyCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableBodyCellProps\n>(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {\n const classes = cx(styles[\"table-body-cell\"], className, {\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-body-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableBodyCell.displayName = \"TableBodyCell\";\n","import * as React from \"react\";\nconst SvgEdit = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 17.46v3.04c0 .28.22.5.5.5h3.04c.13 0 .26-.05.35-.15L17.81 9.94l-3.75-3.75L3.15 17.1c-.1.1-.15.22-.15.36zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\" }));\nexport default SvgEdit;\n","import { Icon } from \"../../../../../../components\";\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\n\n/**\n * Edit icon for editable cells in data tables\n * @returns The edit icon\n */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <Icon\n svg={EditIcon}\n size=\"small\"\n color=\"subtle\"\n className={styles[\"data-table-body-cell-edit-icon\"]}\n aria-label=\"Edit cell value\"\n />\n );\n};\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { UseEditCellProps, UseEditCellReturn } from \"./types\";\n\n/**\n * Hook for common logic for editable cells in data tables\n * @param props - The props for the useEditCell hook\n * @param props.initialValue - The initial value of the cell\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the cell\n * @param props.rowId - The row id of the cell\n * @returns Object containing the editing state and functions for editing the cell\n */\nexport const useEditCell = <T>({\n initialValue,\n onChange,\n cellPosition,\n rowId,\n}: UseEditCellProps<T>): UseEditCellReturn<T> => {\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState<T>(initialValue);\n const editValueRef = useRef<T>(initialValue);\n const {\n focusCell,\n isTableFocused,\n initializeFocus,\n setIsOffGridInteractionOccurring,\n } = useDataTableContext();\n\n const handleEditStateChange = useCallback(\n (isEditing: boolean) => {\n setIsEditing(isEditing);\n setIsOffGridInteractionOccurring(isEditing);\n },\n [setIsOffGridInteractionOccurring],\n );\n\n const updateEditValue = useCallback((value: T) => {\n editValueRef.current = value;\n setEditValue(value);\n }, []);\n\n const handleFocusCell = useCallback(() => {\n if (!isTableFocused) {\n // Table not focused yet - initialize and focus this cell\n initializeFocus();\n setTimeout(() => {\n focusCell(cellPosition);\n });\n } else {\n // Table already focused - just update to this cell position\n setTimeout(() => {\n focusCell(cellPosition);\n });\n }\n }, [cellPosition, focusCell, isTableFocused, initializeFocus]);\n\n const handleSave = useCallback(\n (value: T) => {\n onChange(value, rowId);\n handleEditStateChange(false);\n handleFocusCell();\n },\n [onChange, rowId, handleFocusCell, handleEditStateChange],\n );\n\n const saveValue: UseEditCellReturn<T>[\"saveValue\"] = useCallback(() => {\n handleSave(editValueRef.current);\n }, [handleSave]);\n\n const cancelEdit: UseEditCellReturn<T>[\"cancelEdit\"] = useCallback(() => {\n setEditValue(initialValue);\n handleEditStateChange(false);\n handleFocusCell();\n }, [initialValue, handleFocusCell, handleEditStateChange]);\n\n const handleClick = useCallback(() => {\n if (isEditing) return;\n\n handleEditStateChange(true);\n }, [isEditing, handleEditStateChange]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n if (isEditing) {\n saveValue();\n } else {\n handleEditStateChange(true);\n }\n }\n if (event.key === \"Escape\") {\n cancelEdit();\n }\n },\n [isEditing, saveValue, cancelEdit, handleEditStateChange],\n );\n\n const handleBlur = useCallback(() => {\n saveValue();\n }, [saveValue]);\n\n const returnValue = useMemo(\n () => ({\n isEditing,\n editValue,\n updateEditValue,\n saveValue,\n cancelEdit,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onBlur: handleBlur,\n }),\n [\n isEditing,\n editValue,\n updateEditValue,\n saveValue,\n cancelEdit,\n handleClick,\n handleKeyDown,\n handleBlur,\n ],\n );\n\n return returnValue;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableTextCell component\n * @extends DataTableEditableCellProps<string>\n */\nexport type DataTableEditableTextCellProps = DataTableEditableCellProps<string>;\n/**\n * Editable text cell for data tables\n * @param props - The props for the DataTableEditableTextCell component\n * @param props.cellProps - The props for the DataTableEditableTextCell component\n * @param props.children - The children of the DataTableEditableTextCell component\n * @param props.rowId - The row id of the DataTableEditableTextCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableTextCell component\n * @param props.value - The value of the DataTableEditableTextCell component\n */\nexport const DataTableEditableTextCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n}: DataTableEditableTextCellProps) => {\n const { isEditing, editValue, updateEditValue, onClick, onKeyDown, onBlur } =\n useEditCell<string>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateEditValue(e.target.value);\n },\n [updateEditValue],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n const classes = cx(className, styles[\"data-table-body-cell-editable\"], {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n return (\n <TableBodyCell\n {...restCellProps}\n className={classes}\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n {isEditing ? (\n <>\n <input\n type=\"text\"\n className={styles[\"data-table-body-cell-input\"]}\n ref={inputRef}\n value={editValue}\n onChange={handleChange}\n onBlur={onBlur}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly>\n {isEditing\n ? \"Press F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n};\n","import { KeyboardEvent } from \"react\";\nimport cx from \"classnames\";\n\nimport { Menu } from \"../../../../../../components/Menu\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableSelectCell component\n * @extends DataTableEditableCellProps<string>\n */\nexport type DataTableEditableSelectCellProps =\n DataTableEditableCellProps<string> & {\n /**\n * The options available for selection\n */\n options: { value: string; label: string }[];\n };\n\n/**\n * Editable select cell for data tables\n * @param props - The props for the DataTableEditableSelectCell component\n * @param props.cellProps - The props for the DataTableEditableSelectCell component\n * @param props.children - The children of the DataTableEditableSelectCell component\n * @param props.rowId - The row id of the DataTableEditableSelectCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableSelectCell component\n * @param props.value - The value of the DataTableEditableSelectCell component\n * @param props.options - The options available for selection\n */\nexport const DataTableEditableSelectCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n options,\n}: DataTableEditableSelectCellProps) => {\n const {\n isEditing,\n onClick,\n onKeyDown,\n saveValue,\n updateEditValue,\n cancelEdit,\n } = useEditCell<string>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n\n const { className, ...restCellProps } = cellProps;\n\n const cellClasses = cx(\n styles[\"data-table-body-cell-editable\"],\n styles[\"data-table-body-select-cell\"],\n className,\n { [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing },\n );\n\n const handleKeyDown = (\n e: KeyboardEvent<HTMLButtonElement>,\n triggerFn: (e: KeyboardEvent<HTMLButtonElement>) => void,\n ) => {\n if (e.key === \"ArrowDown\" && !isEditing) {\n onKeyDown?.(e);\n return; // prevents menu from blocking table navigation\n }\n\n onKeyDown?.(e);\n triggerFn?.(e);\n };\n\n return (\n <>\n <Menu\n // TODO: remove this\n // used now to prevent empty menu from showing\n open={isEditing}\n onOutsidePress={saveValue}\n trigger={({\n ref: triggerRef,\n onKeyDown: triggerOnKeyDown,\n ...rest\n }) => {\n return (\n <TableBodyCell\n {...restCellProps}\n className={cellClasses}\n onClick={onClick}\n >\n <button\n {...rest}\n ref={triggerRef}\n className={styles[\"data-table-body-cell-select-trigger\"]}\n onKeyDown={(e) => handleKeyDown(e, () => triggerOnKeyDown?.(e))}\n >\n {children}\n </button>\n {!isEditing && <DataTableEditableCellEditIcon />}\n </TableBodyCell>\n );\n }}\n >\n {isEditing &&\n options.map((item) => {\n return (\n <Menu.Item\n key={item.value}\n label={item.label}\n onClick={() => {\n updateEditValue(item.value);\n saveValue();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Escape\" || e.key === \"F2\") {\n cancelEdit();\n }\n }}\n />\n );\n })}\n </Menu>\n <SrOnly>\n {isEditing\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </>\n );\n};\n","import {\n useRef,\n KeyboardEvent,\n useMemo,\n useState,\n useCallback,\n ChangeEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport {\n Flex,\n ListView,\n Popover,\n SearchField,\n SrOnly,\n} from \"../../../../../../components\";\n\nimport { DataTableEditableCellProps } from \"./types\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { useEditCell } from \"./useEditCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableEditableMultiselectCell component\n * @extends DataTableEditableCellProps<string[]>\n */\nexport type DataTableEditableMultiselectCellProps = DataTableEditableCellProps<\n string[]\n> & {\n /**\n * The options available for selection\n */\n options: { value: string; label: string }[];\n};\n\n/**\n * Editable multiselect cell for data tables\n * @param props - The props for the DataTableEditableMultiselectCell component\n * @param props.cellProps - The props for the DataTableEditableMultiselectCell component\n * @param props.children - The children of the DataTableEditableMultiselectCell component\n * @param props.rowId - The row id of the DataTableEditableMultiselectCell component\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.cellPosition - The cell position of the DataTableEditableMultiselectCell component\n * @param props.value - The value of the DataTableEditableMultiselectCell component\n * @param props.options - The options available for selection\n */\nexport const DataTableEditableMultiselectCell = ({\n cellProps,\n children,\n rowId,\n onChange,\n cellPosition,\n value,\n options,\n}: DataTableEditableMultiselectCellProps) => {\n const {\n isEditing,\n onClick,\n onKeyDown,\n saveValue,\n cancelEdit,\n editValue,\n updateEditValue,\n } = useEditCell<string[]>({\n initialValue: value,\n onChange,\n cellPosition,\n rowId,\n });\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const [searchValue, setSearchValue] = useState(\"\");\n const listViewRef = useRef<HTMLUListElement>(null);\n\n const { className, ...restCellProps } = cellProps;\n\n const cellClasses = cx(styles[\"data-table-body-select-cell\"], className, {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n });\n\n const selectedValues = options.filter((item) =>\n editValue.includes(item.value),\n );\n\n const handleTriggerKeyDown = (\n e: KeyboardEvent<HTMLButtonElement>,\n triggerFn: (e: KeyboardEvent<HTMLButtonElement>) => void,\n ) => {\n onKeyDown?.(e);\n triggerFn?.(e);\n };\n\n const handleListViewKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === \"Tab\" && !e.shiftKey) || e.key === \"F2\") {\n e.preventDefault();\n e.stopPropagation();\n saveValue();\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cancelEdit();\n setSearchValue(\"\");\n }\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault(); // prevent scrolling the page\n }\n },\n [saveValue, cancelEdit],\n );\n\n const handleSearchFieldKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n cancelEdit();\n setSearchValue(\"\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n listViewRef.current?.focus();\n }\n },\n [cancelEdit],\n );\n\n const handleListViewSelectionChange = useCallback(\n (value: unknown[]) => {\n if (isEditing) {\n updateEditValue(\n (\n value as unknown as {\n label: string;\n value: string;\n disabled: boolean;\n }[]\n ).map((item) => item.value),\n );\n }\n },\n [updateEditValue, isEditing],\n );\n\n const filteredItems = useMemo(() => {\n if (searchValue === \"\") return options;\n return options.filter((item) =>\n item.label.toLowerCase().includes(searchValue.toLowerCase()),\n );\n }, [options, searchValue]);\n\n const handleOnClickOutside = useCallback(() => {\n if (isEditing) {\n saveValue();\n setSearchValue(\"\");\n }\n }, [saveValue, isEditing]);\n\n const handleOpenAnimationComplete = useCallback(() => {\n if (isEditing) {\n searchFieldRef.current?.focus();\n }\n }, [isEditing]);\n\n const handleSearchFieldChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value);\n },\n [],\n );\n\n return (\n <>\n <Popover\n open={isEditing}\n onOpenAnimationComplete={handleOpenAnimationComplete}\n onClickOutside={handleOnClickOutside}\n placement=\"bottom-start\"\n disableCaret\n >\n <Popover.Trigger>\n {({ ref: popoverRef, onKeyDown: triggerOnKeyDown, ...rest }) => {\n return (\n <TableBodyCell\n {...restCellProps}\n className={cellClasses}\n onClick={onClick}\n >\n <button\n {...rest}\n ref={popoverRef}\n className={styles[\"data-table-body-cell-select-trigger\"]}\n onKeyDown={(e) =>\n handleTriggerKeyDown(e, () => triggerOnKeyDown?.(e))\n }\n >\n {children}\n </button>\n </TableBodyCell>\n );\n }}\n </Popover.Trigger>\n <Popover.Content>\n <Flex gap=\"4\" direction=\"column\">\n <SearchField\n ref={searchFieldRef}\n onChange={handleSearchFieldChange}\n onKeyDown={handleSearchFieldKeyDown}\n />\n <ListView\n defaultSelected={selectedValues}\n onKeyDown={handleListViewKeyDown}\n items={filteredItems}\n onSelectionChange={handleListViewSelectionChange}\n ref={listViewRef}\n >\n {({ items }) =>\n items.map((item) => (\n <ListView.Option item={item} key={item.label}>\n {item.label}\n </ListView.Option>\n ))\n }\n </ListView>\n </Flex>\n </Popover.Content>\n </Popover>\n <SrOnly>\n {isEditing\n ? \"Press F2 to save cell value. Press Escape to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </>\n );\n};\n","import { memo, Ref, useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport {\n TableBodyCell,\n TableBodyCellProps,\n} from \"../../../base/cells/TableBodyCell\";\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { ColumnDef } from \"../../../types\";\nimport { DataTableEditableTextCell } from \"../editable-cells/DataTableEditableTextCell\";\nimport { DataTableEditableSelectCell } from \"../editable-cells/DataTableEditableSelectCell\";\nimport { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableBodyCell component\n * @extends Omit<BaseDataTableBodyCellProps, \"onChange\">\n */\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The cell position of the cell\n */\n cellPosition: { rowIndex: number; columnIndex: number };\n /**\n * The column id of the cell\n */\n columnId: string;\n /**\n * The edit mode of the cell\n */\n editMode?: ColumnDef<T>[\"editMode\"];\n /**\n * The edit value of the cell\n */\n editValue?: T[keyof T];\n /**\n * Called when the cell value is saved (on blur or enter/F2 key pressed)\n */\n onChange?: ColumnDef<T>[\"onChange\"];\n /**\n * The options of the cell\n */\n options?: ColumnDef<T>[\"options\"];\n /**\n * The row id of the cell\n */\n rowId: string;\n};\n\n/**\n * DataTableBodyCellElement component with focus management and editable cells\n * @param props - The props for the DataTableBodyCellElement component\n * @param props.cellPosition - The cell position of the cell\n * @param props.columnId - The column id of the cell\n * @param props.children - The children of the DataTableBodyCellElement component\n * @param props.tabIndex - The tab index of the cell\n * @param props.editMode - The edit mode of the cell\n * @param props.editValue - The edit value of the cell\n * @param props.onChange - Called when the cell value is saved (on blur or enter/F2 key pressed)\n * @param props.options - The options of the cell\n * @param props.rowId - The row id of the cell\n * @param props.rest - The rest of the props\n */\nfunction DataTableBodyCellElement<T>(props: DataTableBodyCellProps<T>) {\n const {\n cellPosition,\n columnId,\n children,\n editMode,\n editValue,\n onChange,\n options,\n rowId,\n ...rest\n } = props;\n\n const elementRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n // Register/unregister cell for focus management (data tables only)\n useEffect(() => {\n if (elementRef.current) {\n tableContext.registerCell({\n position: cellPosition,\n element: elementRef.current,\n isHeader: false,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext]);\n\n const isEditable = !!editMode;\n\n // Handle direct cell focus (when user clicks on cell)\n const handleFocus = useCallback(() => {\n if (!tableContext.isTableFocused) {\n // Table not focused yet - initialize and focus this cell\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n\n // For editable cells, let the editable cell components handle their own focus\n // after table is initialized\n } else if (!isEditable) {\n tableContext.focusCell(cellPosition);\n }\n }, [tableContext, cellPosition, isEditable]);\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-hovered\"]]:\n tableContext?.hoveredColumnId === columnId,\n });\n\n const commonCellProps: TableBodyCellProps & { ref: Ref<HTMLDivElement> } = {\n type: \"data-table\",\n ...rest,\n className: classes,\n ref: elementRef,\n tabIndex,\n onFocus: handleFocus,\n };\n\n if (editMode === \"text\") {\n return (\n <DataTableEditableTextCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n onChange={onChange as (value: string, rowId: string) => void}\n value={editValue as string}\n >\n {children}\n </DataTableEditableTextCell>\n );\n }\n\n if (editMode === \"select\") {\n return (\n <DataTableEditableSelectCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n value={editValue as string}\n onChange={onChange as (value: string, rowId: string) => void}\n options={options as { value: string; label: string }[]}\n >\n {children}\n </DataTableEditableSelectCell>\n );\n }\n\n if (editMode === \"multiselect\") {\n return (\n <DataTableEditableMultiselectCell\n cellProps={commonCellProps}\n cellPosition={cellPosition}\n rowId={rowId}\n value={editValue as string[]}\n onChange={onChange as (value: string[], rowId: string) => void}\n options={options as { value: string; label: string }[]}\n >\n {children}\n </DataTableEditableMultiselectCell>\n );\n }\n\n return <TableBodyCell {...commonCellProps}>{children}</TableBodyCell>;\n}\n\nexport const DataTableBodyCell = memo(DataTableBodyCellElement) as <T>(\n props: DataTableBodyCellProps<T>,\n) => JSX.Element;\n","import { ComponentPropsWithoutRef, Fragment, ReactNode } from \"react\";\nimport cx from \"classnames\";\nimport { Table as TanstackTable, flexRender } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { TableRow } from \"../../types\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport { useDataTableContext } from \"./useDataTableContext\";\n\n/**\n * Props for the DataTableBody component\n * @extends {ComponentPropsWithoutRef<\"div\">}\n */\nexport type DataTableBodyProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport const DataTableBodyContent = <T,>({\n table,\n}: {\n table: TanstackTable<T>;\n}) => {\n const { hasSubRows } = useDataTableContext();\n return table.getRowModel().rows.map((row, sortedIndex) => (\n <Fragment key={row.id}>\n <div\n role=\"row\"\n aria-rowindex={sortedIndex + table.getHeaderGroups().length + 1} // aria-rowindex is 1-based, uses sorted position\n aria-expanded={\n hasSubRows && row.getCanExpand() ? row.getIsExpanded() : undefined\n }\n aria-level={\n hasSubRows &&\n (row.getCanExpand() || row.getParentRow()?.getCanExpand())\n ? row.depth + 1\n : undefined\n }\n className={styles[\"data-table-body-row\"]}\n >\n {row.getVisibleCells().map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\n\n const cellClasses = cx(getCommonPinningClasses(cell.column), {\n [styles[\"data-table-body-cell-group\"]]:\n \"columns\" in cell.column.columnDef ||\n (cell.column.parent && isLastInParentGroup),\n });\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n aria-colindex={cell.column.getIndex() + 1} // aria-colindex is 1-based\n className={cellClasses}\n style={{\n minWidth: `calc(var(--a2-table-col-${cell.column.getIndex()}-size) * 1px)`,\n ...getCommonPinningStyles(cell.column),\n }}\n columnId={cell.column.id}\n cellPosition={{\n rowIndex: sortedIndex + table.getHeaderGroups().length,\n columnIndex: cell.column.getIndex(),\n }}\n editMode={cell.column.columnDef.meta?.editMode}\n editValue={cell.getContext().getValue() as T[keyof T]}\n onChange={cell.column.columnDef.meta?.onChange}\n options={cell.column.columnDef.meta?.options}\n rowId={row.id}\n isExpandCell={cell.column.id === \"a2-table-internal-expand\"}\n isSelectCell={cell.column.id === \"a2-table-internal-select\"}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n })}\n </div>\n {row.getIsExpanded() &&\n \"subComponent\" in (row.original as TableRow<T>) && (\n <div\n id={`${row.id}-sub-component`}\n aria-hidden={!row.getIsExpanded()}\n className={styles[\"data-table-body-row\"]}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {(row.original as TableRow<T>).subComponent as ReactNode}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n ));\n};\n\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const { table, ...rest } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n <DataTableBodyContent table={table} />\n </TableBody>\n );\n}\n","/**\n * Get the width of a column with a colspan greater than 1\n * @param colSpan - The number of columns to span\n * @param cellIndex - The index of the cell\n * @returns The width of the column span\n */\nexport const getColSpanWidth = (colSpan: number, cellIndex: number): string => {\n let minWidth = `calc(var(--a2-table-col-${cellIndex}-size) * 1px)`;\n if (colSpan > 1) {\n const varsToAdd = Array.from(\n { length: colSpan },\n (_, i) => `var(--a2-table-col-${cellIndex + i}-size)`,\n );\n minWidth = `calc((${varsToAdd.join(\" + \")}) * 1px)`;\n }\n return minWidth;\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Props for the TableFooter component\n * @extends ComponentPropsWithoutRef<\"tfoot\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableFooterProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table footer component for simple presentational or complex data tables\n * @param props - The props for the TableFooter component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableFooter component\n * @param props.ref - The ref of the TableFooter component\n */\nexport function TableFooter({ type, children, ...rest }: TableFooterProps) {\n const classes = cx(styles[\"table-footer\"], rest.className);\n const Element = type === \"simple\" ? \"tfoot\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableFooterCellProps = ComponentPropsWithoutRef<\"td\"> & {\n colSpan?: number;\n};\n\nexport type DataTableFooterCellProps = ComponentPropsWithoutRef<\"div\"> & {\n colSpan?: number;\n};\n\n/**\n * The props for the TableFooterCell component\n */\nexport type TableFooterCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * The styled table footer cell component\n * @param props - The props for the TableFooterCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableFooterCell component\n * @param props.rest - The rest of the props\n */\nexport const TableFooterCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableFooterCellProps\n>((props, ref) => {\n const { type, children, className, ...rest } = props;\n\n const classes = cx(styles[\"table-footer-cell\"], className);\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-footer-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableFooterCell.displayName = \"TableFooterCell\";\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport { DataTableFooterCellProps as BaseDataTableFooterCellProps } from \"../../../base/cells/TableFooterCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableFooterCell component\n * @extends BaseDataTableFooterCellProps\n */\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Data table footer cell with focus management\n * @param props - The props for the DataTableFooterCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableFooterCell component\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n useEffect(() => {\n if (footerCellRef.current) {\n tableContext.registerCell({\n position: cellPosition,\n element: footerCellRef.current,\n isHeader: false,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext]);\n\n const handleFocus = useCallback(() => {\n // handle focusing from outside the table or clicked\n if (!tableContext.isTableFocused) {\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n }\n }, [cellPosition, tableContext]);\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n return (\n <TableFooterCell\n type=\"data-table\"\n {...rest}\n ref={footerCellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n className={cx(styles[\"data-table-footer-cell\"], className)}\n >\n {children}\n </TableFooterCell>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getColSpanWidth } from \"../../internal/getColSpanWidth\";\n\nimport { ColumnDef } from \"../../types\";\nimport { DataTableProps } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\n\n/**\n * Props for the default/configured table footer rows\n * @extends TanstackTable<T>\n * @extends ColumnDef<T>[]\n */\nexport type DefaultTableFooterRowsProps<T> = {\n table: TanstackTable<T>;\n columns: ColumnDef<T>[];\n};\n\n/**\n * Props for the custom table footer rows\n * @extends DataTableProps<T>\n */\nexport type CustomTableFooterRowsProps<T> = {\n columnCount: number;\n customFooter: DataTableProps<T>[\"customFooter\"];\n table: TanstackTable<T>;\n};\n\n/**\n * Props for the DataTableFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableFooterProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * The columns of the table\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer of the table\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n // Recursively find a column by ID in the column tree\n const findColumnById = (\n cols: ColumnDef<T>[],\n id: string,\n ): ColumnDef<T> | undefined => {\n for (const col of cols) {\n if (col.id === id) {\n return col;\n }\n if (col.columns && Array.isArray(col.columns)) {\n const found = findColumnById(col.columns, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n // Recursively get the maximum number of footer rows from a column and its nested columns\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n };\n\n const maxFooterRows = Math.max(\n ...columns.map((column) => getMaxFooterRows(column)),\n 1,\n );\n\n return Array.from({ length: maxFooterRows }, (_, rowIndex) => (\n <div\n key={`footer-row-${rowIndex}`}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length +\n 1\n }\n >\n {table\n .getFlatHeaders()\n .filter((header) => {\n const column = findColumnById(columns, header.column.id);\n // Filter out columns that have nested columns (column groups)\n return !column?.columns || column.columns.length === 0;\n })\n .map((header) => {\n const column = findColumnById(columns, header.column.id);\n\n let footerContent = null;\n if (Array.isArray(column?.footerContent)) {\n footerContent = column.footerContent[rowIndex] || null;\n } else if (column?.footerContent && rowIndex === 0) {\n footerContent = column.footerContent;\n }\n\n return (\n <DataTableFooterCell\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={{\n minWidth: `calc(var(--a2-table-col-${header.column.getIndex()}-size) * 1px)`,\n ...getCommonPinningStyles(header.column),\n }}\n cellPosition={{\n rowIndex:\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length,\n columnIndex: header.column.getIndex(),\n }}\n >\n {footerContent}\n </DataTableFooterCell>\n );\n })}\n </div>\n ));\n}\n\nfunction CustomTableFooterRows<T>({\n customFooter,\n columnCount,\n table,\n}: CustomTableFooterRowsProps<T>) {\n return customFooter?.map((footerRow, rowIndex) => {\n return (\n <div\n key={rowIndex}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length +\n 1\n }\n >\n {(() => {\n let currentColumnIndex = 0;\n return Array.from({\n length:\n // total columns\n columnCount -\n // minus columns merged using colSpan\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n // plus columns added in the custom footer row\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n const minWidth = getColSpanWidth(\n footer.colSpan,\n currentColumnIndex,\n );\n\n const cell = (\n <DataTableFooterCell\n key={index}\n colSpan={footer.colSpan}\n style={{\n minWidth,\n }}\n cellPosition={{\n rowIndex:\n rowIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length,\n columnIndex: currentColumnIndex,\n }}\n >\n {footer.content}\n </DataTableFooterCell>\n );\n\n // Advance the column index by the colSpan for the next iteration\n currentColumnIndex += footer.colSpan;\n\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Data table footer, which can be either a configured or custom footer\n * @param props - The props for the DataTableFooter component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.customFooter - The custom footer of the table\n * @param props.columns - The columns of the table\n */\nexport function DataTableFooter<T>({\n table,\n customFooter,\n columns,\n ...rest\n}: DataTableFooterProps<T>) {\n const columnCount = table.getFlatHeaders().length;\n const classes = cx(styles[\"data-table-footer\"], rest.className);\n\n return (\n <TableFooter type=\"data-table\" {...rest} className={classes}>\n {customFooter ? (\n <CustomTableFooterRows\n table={table}\n customFooter={customFooter}\n columnCount={columnCount}\n />\n ) : (\n <DefaultTableFooterRows table={table} columns={columns} />\n )}\n </TableFooter>\n );\n}\n","import { ReactNode } from \"react\";\nimport {\n CellContext,\n createColumnHelper,\n ColumnDef as TanstackColumnDef,\n} from \"@tanstack/react-table\";\n\nimport Flex from \"../../../../components/Flex\";\n\nimport { ColumnDef } from \"../types\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\n\n// Extend TanStack Table's ColumnMeta type to include our custom properties\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData, TValue> {\n editMode?: ColumnDef<TData>[\"editMode\"];\n onChange?: ColumnDef<TData>[\"onChange\"];\n options?: ColumnDef<TData>[\"options\"];\n }\n}\n\n/**\n * Props for the getTanStackColumnDef function\n * @extends ColumnDef<T>\n */\nexport type TanStackColumnDefProps<T> = {\n columnDef: ColumnDef<T>;\n};\n\n/**\n * Build the column definition for TanStack useReactTable\n * This allows for customized column definitions that maintain type safety\n * @param props - The props for the getTanStackColumnDef function\n * @param props.columnDef - The column definition for the TanStack useReactTable\n * @returns The column definition for the TanStack useReactTable\n */\nexport function getTanStackColumnDef<T>({\n columnDef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: TanStackColumnDefProps<T>): TanstackColumnDef<T, any> {\n const columnHelper = createColumnHelper<T>();\n\n // If this column has sub-columns, create a group column\n if (columnDef.columns && columnDef.columns.length > 0) {\n return columnHelper.group({\n id: columnDef.id as string,\n header: columnDef.headerLabel,\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef<T>({\n columnDef: column,\n }),\n ),\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n });\n }\n\n // Otherwise, create an accessor column\n return columnHelper.accessor((row: T) => row[columnDef.id], {\n id: columnDef.id as string,\n cell: (info: CellContext<T, unknown>) => {\n if (columnDef.renderCell) {\n const cellContent = columnDef.renderCell(\n info.getValue() as T[keyof T],\n info.row.depth,\n );\n return (\n <Flex\n justifyContent={columnDef.align}\n wrap=\"wrap\"\n style={{\n width: \"100%\",\n }}\n >\n {cellContent ?? <TableEmptyCellContent />}\n </Flex>\n );\n }\n return (\n <Flex\n justifyContent={columnDef.align}\n wrap=\"wrap\"\n style={{\n width: \"100%\",\n }}\n >\n {(info.getValue() as ReactNode) ?? <TableEmptyCellContent />}\n </Flex>\n );\n },\n header: () => (\n <Flex justifyContent={columnDef.align} wrap=\"wrap\" grow={1}>\n {columnDef.headerLabel}\n </Flex>\n ),\n footer: columnDef.footerContent ? () => columnDef.footerContent : undefined,\n minSize: columnDef.minWidth,\n maxSize: columnDef.maxWidth,\n enableResizing: columnDef.resizable,\n enableSorting: !!columnDef.sortable,\n meta: {\n editMode: columnDef.editMode,\n onChange: columnDef.onChange,\n options: columnDef.options,\n },\n\n // If custom sorting function is provided, use it\n ...(columnDef.sortable && typeof columnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB, colId) => {\n if (typeof columnDef.sortable === \"function\") {\n return columnDef.sortable(\n rowA.getValue(colId),\n rowB.getValue(colId),\n );\n }\n return 0;\n },\n }\n : undefined),\n });\n}\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to analyze the columns in the table to determine the visual position and pinning status\n * @param table - The table to analyze\n */\nexport const useColumnOrder = <T>({ table }: { table: TanstackTable<T> }) => {\n const getColumnIndexes = useCallback((column: Column<T>) => {\n if (column.columns?.length > 0) {\n return column.columns.map((c) => c.getIndex());\n }\n return [column.getIndex()];\n }, []);\n\n const columnOrder = useMemo(() => {\n const left: number[] = [];\n const right: number[] = [];\n const middle: number[] = [];\n\n table.getAllColumns().forEach((column) => {\n if (column.getIsPinned() === \"left\") {\n left.push(...getColumnIndexes(column));\n } else if (column.getIsPinned() === \"right\") {\n right.push(...getColumnIndexes(column));\n } else {\n middle.push(...getColumnIndexes(column));\n }\n });\n return left.concat(middle).concat(right);\n }, [table, getColumnIndexes]);\n\n return {\n columnOrder,\n };\n};\n","import { MutableRefObject, useCallback } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport type { CellPosition, FocusableCell } from \"./types\";\n\nexport type UseHandleKeyDownProps<T> = {\n isTableFocused: boolean;\n focusedCell: CellPosition | null;\n getCellKey: (position: CellPosition) => string;\n cellRefs: MutableRefObject<Map<string, FocusableCell>>;\n getSingleFocusableInCell: (cellElement: HTMLElement) => HTMLElement | null;\n setIsTableFocused: (focused: boolean) => void;\n setFocusedCell: (position: CellPosition | null) => void;\n columnOrder: number[];\n focusCell: (position: CellPosition) => void;\n getNextValidPosition: (\n currentPosition: CellPosition,\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n ) => CellPosition | null;\n table: TanstackTable<T>;\n isExpandable: boolean;\n isOffGridInteractionOccurring: boolean;\n};\n\n/**\n * Hook to handle keyboard events for the table\n * @param isTableFocused - Whether the table is focused\n * @param focusedCell - The currently focused cell\n * @param getCellKey - A function to get the key for a cell\n * @param cellRefs - A reference to the cells in the table\n * @param getSingleFocusableInCell - A function to get the single focusable in a cell\n * @param setIsTableFocused - A function to set the table focused state\n * @param setFocusedCell - A function to set the focused cell\n * @param getAccessibleColumnOrder - A function to get the accessible column order\n * @param focusCell - A function to focus a cell\n * @param getNextValidPosition - A function to get the next valid position\n * @param table - The TanStack table instance\n * @param isExpandable - Whether the table supports row expansion\n */\nexport const useHandleKeyDown = <T>({\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n isOffGridInteractionOccurring,\n}: UseHandleKeyDownProps<T>) => {\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (!isTableFocused || !focusedCell || isOffGridInteractionOccurring)\n return;\n\n // Check if we're currently focused on a single focusable within a cell\n const currentCellKey = getCellKey(focusedCell);\n const currentCell = cellRefs.current.get(currentCellKey);\n const isOnSingleFocusable =\n currentCell &&\n getSingleFocusableInCell(currentCell.element) &&\n document.activeElement &&\n currentCell.element.contains(document.activeElement) &&\n document.activeElement !== currentCell.element;\n\n // Handle Tab when focused on single focusable - exit table\n if (event.key === \"Tab\" && isOnSingleFocusable) {\n // Let the tab event bubble up to exit the table\n setIsTableFocused(false);\n setFocusedCell(null);\n return;\n }\n\n // Handle expand/collapse with left/right arrows when table is expandable (treegrid)\n if (\n isExpandable &&\n (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\")\n ) {\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowIndex = focusedCell.rowIndex - headerRowCount;\n\n // Only handle if we're in a body row (not header)\n if (bodyRowIndex >= 0) {\n const rows = table.getRowModel().rows;\n const currentRow = rows[bodyRowIndex];\n\n if (currentRow) {\n const canExpand = currentRow.getCanExpand();\n const isExpanded = currentRow.getIsExpanded();\n\n // Handle expand/collapse logic\n if (event.key === \"ArrowRight\" && canExpand && !isExpanded) {\n // Expand the row\n event.preventDefault();\n currentRow.getToggleExpandedHandler()();\n\n // Maintain focus on the same cell after expansion\n setTimeout(() => {\n focusCell(focusedCell);\n });\n return;\n } else if (event.key === \"ArrowLeft\" && canExpand && isExpanded) {\n // Collapse the row\n event.preventDefault();\n currentRow.getToggleExpandedHandler()();\n\n // Maintain focus on the same cell after collapse\n setTimeout(() => {\n focusCell(focusedCell);\n });\n return;\n }\n }\n }\n }\n\n let direction: \"up\" | \"down\" | \"left\" | \"right\" | null = null;\n\n switch (event.key) {\n case \"ArrowUp\":\n direction = \"up\";\n break;\n case \"ArrowDown\":\n direction = \"down\";\n break;\n case \"ArrowLeft\":\n direction = \"left\";\n break;\n case \"ArrowRight\":\n direction = \"right\";\n break;\n case \"Home\": {\n // Go to first accessible column (prioritizing visible pinned columns)\n focusCell({ ...focusedCell, columnIndex: columnOrder[0] });\n event.preventDefault();\n return;\n }\n case \"End\": {\n // Go to last accessible column (prioritizing visible pinned columns)\n focusCell({\n ...focusedCell,\n columnIndex: columnOrder[columnOrder.length - 1],\n });\n event.preventDefault();\n return;\n }\n case \"Enter\":\n case \" \": {\n const currentCellKey = getCellKey(focusedCell);\n const currentCell = cellRefs.current.get(currentCellKey);\n\n if (currentCell) {\n // Check if this is a sortable header cell\n if (currentCell.isHeader && currentCell.sortingHandler) {\n event.preventDefault();\n currentCell.sortingHandler(event);\n return;\n }\n\n const singleFocusable = getSingleFocusableInCell(\n currentCell.element,\n );\n if (singleFocusable) {\n event.preventDefault();\n\n // Store current focus state before clicking\n const currentPosition = { ...focusedCell };\n\n // Click the focusable\n singleFocusable.click();\n\n // Restore focus after the click\n setTimeout(() => {\n const cellAfterClick = cellRefs.current.get(currentCellKey);\n if (cellAfterClick) {\n const focusableAfterClick = getSingleFocusableInCell(\n cellAfterClick.element,\n );\n if (focusableAfterClick) {\n focusableAfterClick.focus();\n } else {\n // Fallback to cell if focusable is no longer single\n cellAfterClick.element.focus();\n }\n // Ensure our state is still correct\n if (\n focusedCell?.rowIndex !== currentPosition.rowIndex ||\n focusedCell?.columnIndex !== currentPosition.columnIndex\n ) {\n setFocusedCell(currentPosition);\n }\n }\n });\n\n return;\n }\n }\n return;\n }\n default:\n return;\n }\n\n if (direction) {\n event.preventDefault();\n const nextPosition = getNextValidPosition(focusedCell, direction);\n if (nextPosition) {\n focusCell(nextPosition);\n }\n }\n },\n [\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n isOffGridInteractionOccurring,\n ],\n );\n\n return { handleKeyDown };\n};\n","import { useEffect, useMemo, useRef } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to scroll an table cell into view when using keyboard navigation\n * @param table - The table to scroll into view\n */\nexport const useScrollIntoView = <T>({\n table,\n element,\n}: {\n table: TanstackTable<T>;\n element?: HTMLElement;\n}) => {\n const isScrollingRef = useRef(false);\n const scrollTimeoutRef = useRef<number>();\n\n const { leftWidth, rightWidth } = useMemo(() => {\n return {\n leftWidth: table.getLeftTotalSize(),\n rightWidth: table.getRightTotalSize(),\n };\n }, [table]);\n\n // Scroll element into view to prevent sticky headers/footers from covering the cell\n useEffect(() => {\n if (!element) return;\n\n const isBodyCell = element.getAttribute(\"data-anv\") === \"table-body-cell\";\n\n const scrollContainer = element.closest(\n '[data-anv=\"table-scroll-container\"]',\n ) as HTMLElement;\n\n const headerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[0];\n const footerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[2];\n\n const stickyDimensions = {\n headerHeight: headerElement.getBoundingClientRect().height,\n footerHeight: footerElement\n ? footerElement.getBoundingClientRect().height\n : 0,\n leftWidth,\n rightWidth,\n };\n\n // Detect user scrolling to prevent auto-scroll during manual scroll\n const handleScroll = () => {\n isScrollingRef.current = true;\n\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n }\n\n scrollTimeoutRef.current = window.setTimeout(() => {\n isScrollingRef.current = false;\n }, 150);\n };\n\n scrollContainer.addEventListener(\"scroll\", handleScroll);\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry.isIntersecting && !isScrollingRef.current) {\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n const getScrollByLeft = () => {\n // Element is under left pinned columns\n if (\n entry.boundingClientRect.x <\n scrollContainerRect.x + stickyDimensions.leftWidth\n ) {\n return (\n -stickyDimensions.leftWidth +\n entry.boundingClientRect.x -\n scrollContainerRect.x\n );\n }\n // Element is under right pinned columns\n if (\n entry.boundingClientRect.x + entry.boundingClientRect.width >\n scrollContainerRect.x +\n scrollContainerRect.width -\n stickyDimensions.rightWidth\n ) {\n return (\n element.offsetLeft +\n (!isBodyCell ? scrollContainerRect.x : 0) + // header/footer have different offsetParent\n entry.boundingClientRect.width -\n scrollContainerRect.x -\n scrollContainerRect.width -\n scrollContainer.scrollLeft +\n stickyDimensions.rightWidth\n );\n }\n return 0;\n };\n\n const getScrollByTop = () => {\n if (!isBodyCell) return 0;\n // Element is under header\n if (\n entry.boundingClientRect.y <\n scrollContainerRect.y + stickyDimensions.headerHeight\n ) {\n return (\n -stickyDimensions.headerHeight +\n entry.boundingClientRect.y -\n scrollContainerRect.y\n );\n }\n // Element is under footer\n if (\n entry.boundingClientRect.y + entry.boundingClientRect.height >\n scrollContainerRect.y +\n scrollContainerRect.height -\n stickyDimensions.footerHeight\n ) {\n return (\n element.offsetTop +\n entry.boundingClientRect.height -\n scrollContainerRect.y -\n scrollContainerRect.height -\n scrollContainer.scrollTop +\n stickyDimensions.footerHeight\n );\n }\n return 0;\n };\n\n scrollContainer.scrollBy({\n left: getScrollByLeft(),\n top: getScrollByTop(),\n behavior: \"smooth\",\n });\n }\n },\n {\n root: scrollContainer,\n rootMargin: `-${stickyDimensions.headerHeight}px -${stickyDimensions.rightWidth}px -${stickyDimensions.footerHeight}px -${stickyDimensions.leftWidth}px \n `,\n threshold: 1.0,\n },\n );\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n scrollContainer.removeEventListener(\"scroll\", handleScroll);\n if (isScrollingRef.current) isScrollingRef.current = false;\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current);\n scrollTimeoutRef.current = undefined;\n }\n };\n }, [element, leftWidth, rightWidth]);\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { CellPosition, FocusableCell } from \"./types\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport { useHandleKeyDown } from \"./useHandleKeyDown\";\nimport { useScrollIntoView } from \"./useScrollIntoView\";\n\nexport type RegisterCellProps = {\n position: CellPosition;\n element: HTMLElement;\n isHeader?: boolean;\n sortingHandler?: (event: React.KeyboardEvent | React.MouseEvent) => void;\n};\n\n/**\n * Hook to accessibly manage the focus state of a table\n * @param table - The table to manage the focus of\n * @param isExpandable - Whether the table supports row expansion\n */\nexport const useFocusManagement = <T>(\n table: TanstackTable<T>,\n isExpandable: boolean = false,\n) => {\n const [focusedCell, setFocusedCell] = useState<CellPosition | null>(null);\n const [isTableFocused, setIsTableFocused] = useState(false);\n const [isOffGridInteractionOccurring, setIsOffGridInteractionOccurring] =\n useState(false);\n const cellRefs = useRef<Map<string, FocusableCell>>(new Map());\n const tableRef = useRef<HTMLDivElement>(null);\n\n const getCellKey = useCallback((position: CellPosition) => {\n return `${position.rowIndex}-${position.columnIndex}`;\n }, []);\n\n const registerCell = useCallback(\n ({\n position,\n element,\n isHeader = false,\n sortingHandler,\n }: RegisterCellProps) => {\n const key = getCellKey(position);\n cellRefs.current.set(key, {\n position,\n element,\n isHeader,\n sortingHandler,\n });\n },\n [getCellKey],\n );\n\n const unregisterCell = useCallback(\n (position: CellPosition) => {\n const key = getCellKey(position);\n cellRefs.current.delete(key);\n },\n [getCellKey],\n );\n\n const getTotalColumns = useCallback(() => {\n return table.getFlatHeaders().length;\n }, [table]);\n\n // Use column analysis hook for both visual order and accessible columns\n const { columnOrder } = useColumnOrder({ table });\n\n // Find the next valid cell position by checking if cells are actually registered\n const getNextValidPosition = useCallback(\n (\n currentPosition: CellPosition,\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n ): CellPosition | null => {\n const totalColumns = getTotalColumns();\n\n let newRowIndex = currentPosition.rowIndex;\n let newColumnIndex = currentPosition.columnIndex;\n\n switch (direction) {\n case \"up\":\n newRowIndex = currentPosition.rowIndex - 1;\n break;\n case \"down\":\n newRowIndex = currentPosition.rowIndex + 1;\n break;\n case \"left\":\n case \"right\": {\n // Use visual column order for horizontal navigation\n const currentVisualIndex = columnOrder.indexOf(\n currentPosition.columnIndex,\n );\n\n if (currentVisualIndex === -1) {\n // Fallback to logical order if visual order fails\n if (direction === \"left\") {\n newColumnIndex = Math.max(0, currentPosition.columnIndex - 1);\n } else {\n newColumnIndex = Math.min(\n totalColumns - 1,\n currentPosition.columnIndex + 1,\n );\n }\n } else {\n // Navigate using visual order\n let targetVisualIndex;\n if (direction === \"left\") {\n targetVisualIndex = Math.max(0, currentVisualIndex - 1);\n } else {\n targetVisualIndex = Math.min(\n columnOrder.length - 1,\n currentVisualIndex + 1,\n );\n }\n newColumnIndex = columnOrder[targetVisualIndex];\n }\n break;\n }\n }\n\n if (direction === \"up\" || direction === \"down\") {\n if (newRowIndex < 0) {\n return null; // Can't go above first row\n }\n\n const targetKey = getCellKey({\n rowIndex: newRowIndex,\n columnIndex: newColumnIndex,\n });\n const targetCell = cellRefs.current.get(targetKey);\n\n if (!targetCell) {\n return null; // No cell registered at target position\n }\n }\n\n // Check if the position actually changed\n if (\n newRowIndex === currentPosition.rowIndex &&\n newColumnIndex === currentPosition.columnIndex\n ) {\n return null;\n }\n\n return { rowIndex: newRowIndex, columnIndex: newColumnIndex };\n },\n [getTotalColumns, getCellKey, columnOrder],\n );\n\n // Helper to detect if cell contains only a single focusable button\n const getSingleFocusableInCell = useCallback(\n (cellElement: HTMLElement): HTMLElement | null => {\n const focusableElements = cellElement.querySelectorAll(\n 'button, input[type=\"checkbox\"], input[type=\"radio\"]',\n );\n\n if (focusableElements.length === 1) {\n return focusableElements[0] as HTMLElement;\n }\n\n return null;\n },\n [],\n );\n\n const updateAllTabIndices = useCallback(\n (newFocusedPosition: CellPosition) => {\n cellRefs.current.forEach((cell, key) => {\n const [rowIndex, columnIndex] = key.split(\"-\").map(Number);\n const isFocusedCell =\n rowIndex === newFocusedPosition.rowIndex &&\n columnIndex === newFocusedPosition.columnIndex;\n\n const singleFocusable = getSingleFocusableInCell(cell.element);\n\n if (singleFocusable) {\n // For single-button cells, keep cell focusable and button out of tab sequence\n cell.element.tabIndex = isFocusedCell ? 0 : -1;\n singleFocusable.tabIndex = -1; // Always -1 to prevent Tab from focusing it\n } else {\n // For regular cells, manage cell tabIndex normally\n cell.element.tabIndex = isFocusedCell ? 0 : -1;\n }\n });\n },\n [getSingleFocusableInCell],\n );\n\n // Use scroll into view hook\n const [cellRef, setCellRef] = useState<HTMLElement | undefined>(undefined);\n useScrollIntoView({ table, element: cellRef });\n\n const updateCellFocusAndTabIndices = useCallback(\n (cell: FocusableCell, position: CellPosition) => {\n setFocusedCell(position);\n\n requestAnimationFrame(() => {\n updateAllTabIndices(position);\n\n // Check if cell contains only a single focusable\n const singleFocusable = getSingleFocusableInCell(cell.element);\n if (singleFocusable) {\n singleFocusable.focus();\n } else {\n cell.element.focus();\n }\n setCellRef(cell.element);\n });\n },\n [updateAllTabIndices, getSingleFocusableInCell],\n );\n\n const focusCell = useCallback(\n (position: CellPosition) => {\n const key = getCellKey(position);\n const cell = cellRefs.current.get(key);\n\n if (cell) {\n updateCellFocusAndTabIndices(cell, position);\n } else {\n // If cell isn't registered yet, try to find it in the next frame\n requestAnimationFrame(() => {\n const retryCell = cellRefs.current.get(key);\n if (retryCell) {\n updateCellFocusAndTabIndices(retryCell, position);\n }\n });\n }\n },\n [getCellKey, updateCellFocusAndTabIndices],\n );\n\n // Use handle key down hook\n const { handleKeyDown } = useHandleKeyDown({\n isTableFocused,\n focusedCell,\n getCellKey,\n cellRefs,\n getSingleFocusableInCell,\n setIsTableFocused,\n setFocusedCell,\n columnOrder,\n isOffGridInteractionOccurring,\n focusCell,\n getNextValidPosition,\n table,\n isExpandable,\n });\n\n // Initialize focus to first header cell when table gains focus\n const initializeFocus = useCallback(() => {\n setIsTableFocused(true);\n const firstHeaderPosition = { rowIndex: 0, columnIndex: 0 };\n\n // Manual focus for initialization\n const key = getCellKey(firstHeaderPosition);\n const cell = cellRefs.current.get(key);\n\n if (cell) {\n updateCellFocusAndTabIndices(cell, firstHeaderPosition);\n }\n }, [getCellKey, updateCellFocusAndTabIndices]);\n\n const handleTableBlur = useCallback(() => {\n setIsTableFocused(false);\n setFocusedCell(null);\n }, []);\n\n // Get tabIndex for a specific cell (for initial setup only, manual management takes over after)\n const getCellTabIndex = useCallback(\n (position: CellPosition): number => {\n // Check if we're managing this manually (cell is registered)\n const key = getCellKey(position);\n const cell = cellRefs.current.get(key);\n if (cell) {\n // Return the current DOM value since we're managing it manually\n return cell.element.tabIndex;\n }\n\n // Fallback for initial render before manual management kicks in\n if (!isTableFocused) {\n // If table is not focused, only the first header cell should be focusable\n return position.rowIndex === 0 && position.columnIndex === 0 ? 0 : -1;\n }\n\n if (!focusedCell) {\n // If no cell is focused yet, make first header cell focusable\n return position.rowIndex === 0 && position.columnIndex === 0 ? 0 : -1;\n }\n\n // Only the currently focused cell should have tabIndex 0\n return focusedCell.rowIndex === position.rowIndex &&\n focusedCell.columnIndex === position.columnIndex\n ? 0\n : -1;\n },\n [isTableFocused, focusedCell, getCellKey],\n );\n\n return {\n focusedCell,\n isTableFocused,\n tableRef,\n registerCell,\n unregisterCell,\n handleKeyDown,\n initializeFocus,\n handleTableBlur,\n getCellTabIndex,\n focusCell,\n isOffGridInteractionOccurring,\n setIsOffGridInteractionOccurring,\n };\n};\n","import { useState, ReactNode, useCallback, useMemo } from \"react\";\nimport type { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { DataTableContext } from \"./DataTableContext\";\nimport { useFocusManagement } from \"../../internal/focus-management/useFocusManagement\";\n\n/**\n * Props for the DataTableContextProvider component\n */\ninterface DataTableContextProps<T> {\n /**\n * The children of the DataTableContextProvider component\n */\n children: ReactNode;\n /**\n * The table for the DataTableContextProvider component\n */\n table: TanstackTable<T>;\n /**\n * Whether the table supports row expansion\n */\n hasSubRows: boolean;\n}\n\n/**\n * DataTable context provider for data tables using TanStack Table\n * @param props - The props for the DataTableContextProvider component\n * @param props.children - The children of the DataTableContextProvider component\n * @param props.table - The table instance\n * @param props.hasSubRows - Whether the table supports row expansion\n */\nexport function DataTableContextProvider<T>({\n children,\n table,\n hasSubRows,\n}: DataTableContextProps<T>) {\n const [hoveredColumnId, setHoveredColumnId] = useState<string | null>(null);\n\n const focusManagement = useFocusManagement(table, hasSubRows);\n\n const setHoveredColumnIdNotResizing = useCallback(\n (columnId: string | null) => {\n // Check if any resize handle is currently being used (aria-pressed=\"true\")\n const resizingHandle = document.querySelector(\n '[aria-roledescription=\"Resize handle\"][aria-pressed=\"true\"]',\n );\n\n // Don't update hover state if any resize handle is currently active/resizing\n if (resizingHandle) {\n return;\n }\n\n setHoveredColumnId(columnId);\n },\n [],\n );\n\n const contextValue = useMemo(\n () => ({\n hoveredColumnId,\n setHoveredColumnId: setHoveredColumnIdNotResizing,\n focusedCell: focusManagement.focusedCell,\n isTableFocused: focusManagement.isTableFocused,\n registerCell: focusManagement.registerCell,\n unregisterCell: focusManagement.unregisterCell,\n getCellTabIndex: focusManagement.getCellTabIndex,\n handleKeyDown: focusManagement.handleKeyDown,\n initializeFocus: focusManagement.initializeFocus,\n handleTableBlur: focusManagement.handleTableBlur,\n focusCell: focusManagement.focusCell,\n isOffGridInteractionOccurring:\n focusManagement.isOffGridInteractionOccurring,\n setIsOffGridInteractionOccurring:\n focusManagement.setIsOffGridInteractionOccurring,\n hasSubRows,\n }),\n [\n hoveredColumnId,\n setHoveredColumnIdNotResizing,\n focusManagement.focusedCell,\n focusManagement.isTableFocused,\n focusManagement.registerCell,\n focusManagement.unregisterCell,\n focusManagement.getCellTabIndex,\n focusManagement.handleKeyDown,\n focusManagement.initializeFocus,\n focusManagement.handleTableBlur,\n focusManagement.focusCell,\n focusManagement.isOffGridInteractionOccurring,\n focusManagement.setIsOffGridInteractionOccurring,\n hasSubRows,\n ],\n );\n\n return (\n <DataTableContext.Provider value={contextValue}>\n {children}\n </DataTableContext.Provider>\n );\n}\n","import * as React from \"react\";\nconst SvgArrowUpward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1z\" }));\nexport default SvgArrowUpward;\n","import * as React from \"react\";\nconst SvgArrowDownward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1z\" }));\nexport default SvgArrowDownward;\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Props for the TableHeader component\n * @extends ComponentPropsWithoutRef<\"thead\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableHeaderProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table header component for simple presentational or complex data tables\n * @param props - The props for the TableHeader component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableHeader component\n * @param props.ref - The ref of the TableHeader component\n */\nexport function TableHeader({ type, children, ...rest }: TableHeaderProps) {\n const classes = cx(styles[\"table-header\"], rest.className);\n\n const Element = type === \"simple\" ? \"thead\" : \"div\";\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\n/**\n * The common props for the TableHeaderCell component\n */\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /**\n * Whether the cell is a group cell (for grouped columns)\n */\n isGroup?: boolean;\n /**\n * Whether the header cell can be used to activate column sorting\n */\n isSortable?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * The props for the TableHeaderCell component\n */\nexport type TableHeaderCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * The styled table header cell component\n * @param props - The props for the TableHeaderCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableHeaderCell component\n * @param props.rest - The rest of the props\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\n isSelectCell,\n isExpandCell,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(styles[\"table-header-cell\"], className, {\n [styles[\"table-header-cell-group\"]]: isGroup,\n [styles[\"table-header-cell-sortable\"]]: isSortable,\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"th\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-header-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"columnheader\"}\n >\n {children}\n </CellElement>\n );\n },\n);\n\nTableHeaderCell.displayName = \"TableHeaderCell\";\n","import { useCallback, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDataTableContext } from \"../useDataTableContext\";\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport { HeaderContext } from \"@tanstack/react-table\";\nimport { DataTableHeaderCellProps as BaseDataTableHeaderCellProps } from \"../../../base/cells/TableHeaderCell\";\nimport { SrOnly } from \"../../../../../../components\";\n\nimport styles from \"./DataTableCells.module.scss\";\n\n/**\n * Props for the DataTableHeaderCell component\n * @extends BaseDataTableHeaderCellProps\n */\nexport type DataTableHeaderCellProps<T> = BaseDataTableHeaderCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n header: HeaderContext<T, unknown>;\n};\n\n/**\n * Data table header cell with focus management\n * @param props - The props for the DataTableHeaderCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableHeaderCell component\n * @param props.header - The header of the DataTableHeaderCell component\n */\nexport function DataTableHeaderCell<T>(props: DataTableHeaderCellProps<T>) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const headerCellRef = useRef<HTMLDivElement>(null);\n\n const tableContext = useDataTableContext();\n\n useEffect(() => {\n if (headerCellRef.current) {\n const sortingHandler = header.column.columnDef.enableSorting\n ? header.column.getToggleSortingHandler()\n : undefined;\n\n tableContext.registerCell({\n position: cellPosition,\n element: headerCellRef.current,\n isHeader: true,\n sortingHandler,\n });\n return () => {\n tableContext.unregisterCell(cellPosition);\n };\n }\n }, [cellPosition, tableContext, header.column]);\n\n const handleFocus = useCallback(() => {\n // handle focusing from outside the table or clicked\n if (!tableContext.isTableFocused) {\n tableContext.initializeFocus();\n tableContext.focusCell(cellPosition);\n }\n }, [cellPosition, tableContext]);\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n if (header.column.columnDef.enableSorting) {\n // Check if the click target is within a resize handle\n const target = event.target as HTMLElement;\n const resizeHandle = target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n // If clicking on resize handle, don't trigger sorting\n if (resizeHandle) {\n return;\n }\n\n // Otherwise, trigger sorting\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column],\n );\n\n const tabIndex = tableContext.getCellTabIndex(cellPosition);\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={headerCellRef}\n tabIndex={tabIndex}\n onFocus={handleFocus}\n onClick={handleClick}\n className={cx(styles[\"data-table-header-cell\"], className)}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {header.column.columnDef.enableSorting && (\n <SrOnly>\n {header.column.getIsSorted() === \"asc\"\n ? \"Sorted ascending.\"\n : header.column.getIsSorted() === \"desc\"\n ? \"Sorted descending.\"\n : \"Not sorted.\"}{\" \"}\n Click to toggle sort.\n </SrOnly>\n )}\n </TableHeaderCell>\n );\n}\n","import cx from \"classnames\";\nimport { Header } from \"@tanstack/react-table\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\n/**\n * Props for the ResizeHandle component\n * @extends Header<T, unknown>\n */\nexport type ResizeHandleProps<T> = {\n header: Header<T, unknown>;\n};\n\n/**\n * Resize handle component resizing table columns\n * @param props - The props for the ResizeHandle component\n * @param props.header - The header of the ResizeHandle component\n */\nexport function ResizeHandle<T>({ header }: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], {\n [styles[\"resizing\"]]: header.column.getIsResizing(),\n });\n\n return (\n <div\n role=\"button\"\n // TODO: enable keyboard resizing\n tabIndex={-1}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={classes}\n aria-label=\"Resize column\"\n aria-pressed={header.column.getIsResizing()}\n aria-roledescription=\"Resize handle\"\n />\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { flexRender, Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport IconArrowUpward from \"../../../../../../public/assets/icons/material/round/arrow_upward.svg\";\nimport IconArrowDownward from \"../../../../../../public/assets/icons/material/round/arrow_downward.svg\";\n\nimport { TableHeader } from \"../../base/TableHeader\";\nimport { useDataTableContext } from \"./useDataTableContext\";\nimport { DataTableHeaderCell } from \"./cells/DataTableHeaderCell\";\nimport { Flex, Icon } from \"../../../../../components\";\nimport { getColSpanWidth } from \"../../internal/getColSpanWidth\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { ResizeHandle } from \"../../internal/ResizeHandle\";\n\nimport styles from \"./DataTableHeader.module.scss\";\n\n/**\n * Props for the DataTableHeader component\n * @extends TanstackTable<T>\n * @extends ComponentPropsWithoutRef<\"div\">\n */\ntype DataTableHeaderProps<T> = {\n table: TanstackTable<T>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Data table header container\n * @param props - The props for the DataTableHeader component\n * @param props.table - The table instance from @tanstack/react-table to render\n */\nexport function DataTableHeader<T>({ table }: DataTableHeaderProps<T>) {\n const { setHoveredColumnId } = useDataTableContext();\n\n return (\n <TableHeader type=\"data-table\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <div\n key={headerGroup.id}\n className={styles[\"data-table-header-row\"]}\n role=\"row\"\n aria-rowindex={index + 1}\n >\n {headerGroup.headers.map((header) => {\n const isLastInParentGroup = header.column.parent\n ? header.column.parent.getLeafColumns().slice(-1)[0] ===\n header.column\n : false;\n\n const isInternalSelectColumn =\n header.column.id === \"a2-table-internal-select\";\n const isInternalExpandColumn =\n header.column.id === \"a2-table-internal-expand\";\n\n const minWidth = getColSpanWidth(\n header.colSpan,\n header.column.columns?.length > 0\n ? header.column.columns[0].getIndex()\n : header.column.getIndex(),\n );\n\n return (\n <DataTableHeaderCell\n header={header.getContext()}\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={{\n minWidth,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={\n \"columns\" in header.column.columnDef ||\n (header.getContext().header.column.parent &&\n isLastInParentGroup)\n }\n isSortable={header.column.columnDef.enableSorting}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => setHoveredColumnId(header.column.id)\n }\n onMouseLeave={\n isInternalExpandColumn || isInternalSelectColumn\n ? undefined\n : () => setHoveredColumnId(null)\n }\n cellPosition={{\n rowIndex: index,\n columnIndex: header.column.getIndex(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Flex\n direction=\"row\"\n alignItems=\"flex-end\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex direction=\"row\" alignItems=\"center\" gap={2} grow={1}>\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle header={header} />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\n/**\n * Props for the TableContainer component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The background color of the table container\n */\n background?: \"default\" | \"strong\";\n };\n\n/**\n * Styled container for tables that includes a scroll container and a background color\n * @param props - The props for the TableContainer component\n * @param props.children - The children of the TableContainer component\n * @param props.className - The class name of the TableContainer component\n * @param props.style - The style of the TableContainer component\n * @param props.background - The background color of the table container\n * @param props.ref - The ref of the TableContainer component\n */\nexport const TableContainer = forwardRef<HTMLDivElement, TableContainerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n style,\n background = \"default\",\n ...rest\n } = componentProps;\n\n const tableContainerClassNames = cx(className, styles[\"table-container\"], {\n [styles[\"bg-strong\"]]: background === \"strong\",\n });\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n style={styleCombined}\n ref={ref}\n {...rest}\n className={tableContainerClassNames}\n data-anv=\"table-container\"\n >\n <div\n className={styles[\"table-scroll-container\"]}\n data-anv=\"table-scroll-container\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nTableContainer.displayName = \"TableContainer\";\n","import { forwardRef } from \"react\";\n\nimport { useDataTableContext } from \"./useDataTableContext\";\n\nimport { TableContainer, TableContainerProps } from \"../../base/TableContainer\";\n\n/**\n * Data table container with focus management\n * @extends TableContainerProps\n */\nexport const DataTableContainer = forwardRef<\n HTMLDivElement,\n TableContainerProps\n>(({ children, onFocus, onBlur, onKeyDown, tabIndex, ...rest }, ref) => {\n const tableContext = useDataTableContext();\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event);\n // Only initialize focus if the container itself received focus from outside\n // Not when focus moves between cells within the table\n if (event.target === event.currentTarget) {\n tableContext.initializeFocus();\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n onBlur?.(event);\n // Only blur if focus is leaving the table container entirely\n if (!event.currentTarget.contains(event.relatedTarget as Node)) {\n tableContext.handleTableBlur();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n tableContext.handleKeyDown(event);\n };\n\n return (\n <TableContainer\n ref={ref}\n {...rest}\n tabIndex={tabIndex ?? 0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n >\n {children}\n </TableContainer>\n );\n});\n\nDataTableContainer.displayName = \"DataTableContainer\";\n","import { Pagination, PaginationProps } from \"../../../../..\";\nimport { useDataTableContext } from \"./useDataTableContext\";\n\nimport styles from \"./DataTablePagination.module.scss\";\nimport { useCallback } from \"react\";\n\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n \"page\" | \"itemsPerPage\" | \"totalItemCount\" | \"showCount\" | \"onPageChange\"\n>;\n\nexport const DataTablePagination = ({\n showCount = true,\n ...props\n}: DataTablePaginationProps) => {\n const { setIsOffGridInteractionOccurring } = useDataTableContext();\n\n const handleFocus = useCallback(() => {\n setIsOffGridInteractionOccurring(true);\n }, [setIsOffGridInteractionOccurring]);\n\n const handleBlur = useCallback(() => {\n setIsOffGridInteractionOccurring(false);\n }, [setIsOffGridInteractionOccurring]);\n\n return (\n <Pagination\n className={styles[\"pagination\"]}\n {...props}\n showCount={showCount}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n );\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useAsyncData = <T,>(dataOrPromise: T | Promise<T>) => {\n const [resolvedData, setResolvedData] = useState<T | null>(null);\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n try {\n const data = await dataOrPromise;\n setResolvedData(data);\n setIsLoading(false);\n } catch (_error) {\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise]);\n\n if (!(dataOrPromise instanceof Promise)) {\n return { data: dataOrPromise, error: false, isLoading: false };\n }\n\n return { data: resolvedData, error, isLoading };\n};\n","import { ComponentPropsWithoutRef, useCallback, useMemo } from \"react\";\nimport {\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n ColumnPinningState,\n RowSelectionState,\n TableOptions,\n ExpandedState,\n getExpandedRowModel,\n getGroupedRowModel,\n SortingState,\n HeaderContext,\n CellContext,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport Checkbox from \"../../../../components/Checkbox\";\nimport Button from \"../../../../components/Button\";\nimport Flex from \"../../../../components/Flex\";\nimport ExpandIcon from \"../../../../../public/assets/icons/material/round/chevron_right.svg\";\n\nimport { ColumnDef, CustomTableFooterCellProps, TableRow } from \"../types\";\nimport { TableBase } from \"../base/TableBase\";\nimport { DataTableBody } from \"./internal/DataTableBody\";\nimport { TableContainerProps } from \"../base/TableContainer\";\nimport { DataTableFooter } from \"./internal/DataTableFooter\";\nimport { getTanStackColumnDef } from \"../internal/getTanStackColumnDef\";\nimport { DataTableContextProvider } from \"./internal/DataTableContextProvider\";\nimport { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { DataTableContainer } from \"./internal/DataTableContainer\";\nimport { DataTablePagination } from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport { DataTablePaginationConfig } from \"./types\";\n\nimport styles from \"./DataTable.module.scss\";\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\n\n/**\n * Represents a sorted column configuration for DataTable\n */\nexport type SortedColumn = {\n /**\n * The column identifier\n */\n id: string;\n /**\n * Whether the column is sorted in descending order\n */\n desc: boolean;\n};\n\n/**\n * Props for the DataTable component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableProps<T> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The columns for the table, created with the `createColumnHelper` factory function.\n */\n columns: ColumnDef<T>[];\n /**\n * The background color of the table container\n * @default \"default\"\n */\n background?: TableContainerProps[\"background\"];\n /**\n * The custom footer content for the table. Will be overridden by the footer content of the columns.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * The data for the table. Must be an array of objects with an `id` property.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * The default expanded row ids. Can be \"all\" to expand all rows, or an array of row ids to expand specific rows.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * The default selected row ids.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The default sorted column.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * The expanded row ids.\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Called when the row expansion state changes. Passes the expanded row ids.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the row selection state changes. Passes the selected row ids.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the column sorting state changes. Passes the sorted column.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Pagination configuration. When provided, enables pagination and filters data to show only the current page.\n * When `true`, the default pagination configuration is used.\n * When `false` or `undefined`, no pagination is applied and all data is shown.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * The selected row ids.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The sorted column.\n */\n sortedColumn?: SortedColumn;\n };\n\n/**\n * Data table component for complex data grid layouts\n *\n * Features:\n * - Built-in focus management for accessibility\n * - Column resizing\n * - Column pinning\n * - Column grouping\n * - Controlled or uncontrolled column sorting\n * - Row selection\n * - Row expansion\n * - Row sub-component\n * - Row sub-rows\n * - Default and Strong backgrounds\n * - Pagination support with configurable items per page\n *\n * @param props - The props for the DataTable component\n * @param props.data - The data for the table. Must be an array of objects with an `id` property.\n * @param props.columns - The columns for the table, created with the `createColumnHelper` factory function.\n * @param props.background - The background color of the table container\n * @param props.customFooter - The custom footer content for the table. Will be overridden by the footer content of the columns.\n * @param props.defaultExpandedRowIds - The default expanded row ids.\n * @param props.defaultSelectedRowIds - The default selected row ids.\n * @param props.defaultSortedColumn - The default sorted column.\n * @param props.expandedRowIds - The expanded row ids.\n * @param props.isSelectable - Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @param props.onSelectRow - Called when the row selection state changes. Passes the selected row ids.\n * @param props.onSort - Called when the column sorting state changes. Passes the sorted column.\n * @param props.onExpandRow - Called when the row expansion state changes. Passes the expanded row ids.\n * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.\n * @param props.selectedRowIds - The selected row ids.\n * @param props.sortedColumn - The sorted column.\n * @param props.style - The style of the table container.\n * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.\n *\n * @example\n * <DataTable\n * data={tableData}\n * columns={columns}\n * pagination={{\n * itemsPerPage: 25,\n * defaultPageIndex: 0,\n * onPageChange: (pageIndex) => console.log('Page changed to:', pageIndex),\n * showCount: true,\n * }}\n * />\n */\nexport function DataTable<T>(props: DataTableProps<T>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n background = \"default\",\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const [rowSelection, setRowSelection] =\n useOptionallyControlledState<RowSelectionState>({\n controlledValue:\n isSelectable && selectedRowIds\n ? Object.fromEntries(selectedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isSelectable\n ? defaultSelectedRowIds\n ? Object.fromEntries(defaultSelectedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newRowSelection) => {\n onSelectRow?.(Object.keys(newRowSelection) as TableRow<T>[\"id\"][]);\n },\n });\n\n const [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: sortedColumn ? [sortedColumn] : undefined,\n defaultValue: defaultSortedColumn ? [defaultSortedColumn] : undefined,\n onChange: (newSorting) => {\n onSort?.(newSorting[0]);\n },\n });\n\n const isPaginated = !!pagination;\n const paginationObject =\n typeof pagination === \"object\" ? pagination : undefined;\n const rowsPerPage = paginationObject?.rowsPerPage ?? 25;\n\n const [currentPageIndex, setCurrentPageIndex] =\n useOptionallyControlledState<number>({\n controlledValue: paginationObject?.currentPageIndex,\n defaultValue: paginationObject?.defaultPageIndex ?? 0,\n onChange: (newPageIndex) => {\n paginationObject?.onPageChange?.(newPageIndex);\n },\n });\n\n const pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return pageLoader({\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pageLoader omitted intentionally\n }, [isAsyncPaginated, currentPageIndex, rowsPerPage, dataProp]);\n\n const {\n data: resolvedData,\n //TODO: Table should represent error state\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount =\n paginationObject?.totalRowCount ?? resolvedData?.length ?? 0;\n\n const hasSubRows = !!resolvedData?.some(\n (row) => row?.subRows?.length ?? 0 > 0,\n );\n const hasSubComponent = !!resolvedData?.some(\n (row) => row?.subComponent != null,\n );\n const isExpandable = hasSubRows || hasSubComponent;\n\n const [expanded, setExpanded] = useOptionallyControlledState<ExpandedState>({\n controlledValue:\n isExpandable && expandedRowIds\n ? expandedRowIds === \"all\"\n ? true\n : Object.fromEntries(expandedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isExpandable\n ? defaultExpandedRowIds\n ? defaultExpandedRowIds === \"all\"\n ? true\n : Object.fromEntries(defaultExpandedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newExpanded) => {\n if (newExpanded === true) {\n onExpandRow?.(\"all\");\n } else {\n onExpandRow?.(Object.keys(newExpanded) as TableRow<T>[\"id\"][]);\n }\n },\n });\n\n const tableData = useMemo(() => {\n // If the data is still loading, show no data\n if (isLoading) return [];\n // If pagination is not enabled or is async, return the data as is.\n if (!isPaginated || isAsyncPaginated) return resolvedData;\n\n const maxPageIndex = Math.max(\n 0,\n Math.ceil(totalItemCount / rowsPerPage) - 1,\n );\n // Clamp page index to valid range\n const clampedPageIndex = Math.max(\n 0,\n Math.min(currentPageIndex ?? 0, maxPageIndex),\n );\n const startIndex = clampedPageIndex * rowsPerPage;\n const endIndex = startIndex + rowsPerPage;\n\n return resolvedData?.slice(startIndex, endIndex) ?? [];\n }, [\n isLoading,\n isPaginated,\n isAsyncPaginated,\n resolvedData,\n totalItemCount,\n rowsPerPage,\n currentPageIndex,\n ]);\n\n // Calculate column pinning state (including select/expand columns if needed)\n const columnPinning = useMemo((): ColumnPinningState => {\n const { left, right } = {\n left: columnsProp\n .filter((column) => column.pinned === \"left\")\n .map((c) => String(c.id)),\n right: columnsProp\n .filter((column) => column.pinned === \"right\")\n .map((c) => String(c.id)),\n };\n\n // If any are pinned left, we want to also pin select/expand columns\n const isSelectableOrExpandable = isSelectable || isExpandable;\n const standardPinnedColumns = [];\n if (isSelectable) {\n standardPinnedColumns.push(\"a2-table-internal-select\");\n }\n if (isExpandable) {\n standardPinnedColumns.push(\"a2-table-internal-expand\");\n }\n\n return {\n left:\n isSelectableOrExpandable && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, isSelectable, isExpandable]);\n\n // Build columns for TanStack useReactTable\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n }),\n );\n\n // Add expand column if subRows are present\n if (isExpandable) {\n tableColumns.unshift({\n id: \"a2-table-internal-expand\",\n size: 44,\n header: ({ table }: HeaderContext<T, unknown>) => {\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Button\n onClick={table.getToggleAllRowsExpandedHandler()}\n appearance=\"ghost\"\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: table.getIsAllRowsExpanded(),\n })}\n size=\"small\"\n icon={ExpandIcon}\n aria-label={\n table.getIsAllRowsExpanded()\n ? \"Collapse all rows\"\n : \"Expand all rows\"\n }\n />\n </Flex>\n );\n },\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getCanExpand()) {\n return (\n <Button\n onClick={row.getToggleExpandedHandler()}\n appearance=\"ghost\"\n size=\"small\"\n icon={ExpandIcon}\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: row.getIsExpanded(),\n })}\n aria-label={row.getIsExpanded() ? \"Collapse row\" : \"Expand row\"}\n aria-expanded={\n hasSubComponent && row.getCanExpand()\n ? row.getIsExpanded()\n : undefined\n }\n aria-controls={\n hasSubComponent && row.getCanExpand()\n ? `${row.id}-sub-component`\n : undefined\n }\n />\n );\n // show a checkbox for nested rows if isSelectable is true\n } else if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return (\n <Checkbox\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n />\n );\n }\n },\n });\n }\n\n // Add select column if isSelectable is true\n if (isSelectable) {\n tableColumns.unshift({\n id: \"a2-table-internal-select\",\n size: 44,\n header: ({ table }: HeaderContext<T, unknown>) => (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n aria-label={\n table.getIsAllRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n />\n </Flex>\n ),\n cell: ({ row }: CellContext<T, unknown>) => {\n if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return null;\n }\n return (\n <Checkbox\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [columnsProp, hasSubComponent, isExpandable, isSelectable]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getRowId: (row) => (row as TableRow<T>).id.toString(),\n getSubRows: (row) => (row as TableRow<T>).subRows ?? undefined,\n getRowCanExpand: (row) => {\n const originalRow = row.original as TableRow<T>;\n return (\n (originalRow?.subRows?.length ?? 0) > 0 ||\n originalRow?.subComponent != null\n );\n },\n state: {\n columnPinning,\n rowSelection,\n expanded,\n sorting,\n },\n columnResizeMode: \"onChange\",\n enableRowSelection:\n typeof isSelectable === \"function\"\n ? (row) => isSelectable(row.original)\n : isSelectable,\n onRowSelectionChange: (newRowSelection) => {\n setRowSelection(newRowSelection as RowSelectionState);\n },\n onExpandedChange: (newExpanded) => {\n setExpanded(newExpanded as ExpandedState);\n },\n onSortingChange: (updaterOrValue) => {\n const newSorting =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(sorting)\n : updaterOrValue;\n\n const sortingChanged =\n JSON.stringify(newSorting) !== JSON.stringify(sorting);\n if (!sortingChanged) {\n return;\n }\n\n setSorting(newSorting);\n },\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getExpandedRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns and find the maximum\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n }, []);\n\n const footerLength = useMemo(() => {\n return Math.max(\n ...columnsProp.map((column) => getMaxFooterRows(column)),\n 0,\n );\n }, [columnsProp, getMaxFooterRows]);\n\n const hasFooters =\n footerLength > 0 || (customFooter !== undefined && customFooter.length > 0);\n\n const rowCount = useMemo(\n () => bodyRowCount + headerRowCount + footerLength,\n [bodyRowCount, headerRowCount, footerLength],\n );\n\n /**\n * Create CSS variables for the column sizes and hovered column\n */\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n for (let i = 0; i < headers.length; i++) {\n const header = headers[i]!;\n vars[`--a2-table-col-${header.column.getIndex()}-size`] =\n header.column.getSize();\n }\n return vars;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- columnSizing is needed to trigger recalculation when columns resize\n }, [headers, columnSizing]);\n\n const columnCount = useMemo(() => {\n // don't count grouped column header cells\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n return (\n <DataTableContextProvider table={table} hasSubRows={hasSubRows}>\n <DataTableContainer\n {...rest}\n style={styleCombined}\n background={background}\n className={pagination ? styles[\"container-with-pagination\"] : undefined}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} />\n <DataTableBody table={table} />\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n {/* Visual spacer to avoid collapsing the table body area */}\n <div\n style={{\n height: rowsPerPage ? `${rowsPerPage * 35}px` : \"200px\",\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: \"auto\",\n zIndex: 3,\n }}\n >\n <Spinner />\n </Flex>\n </div>\n </>\n )}\n {hasFooters && (\n <DataTableFooter\n className={\n pagination ? styles[\"footer-with-pagination\"] : undefined\n }\n table={table}\n columns={columnsProp}\n customFooter={customFooter}\n />\n )}\n </TableBase>\n {pagination && (\n <DataTablePagination\n itemsPerPage={rowsPerPage}\n showCount={paginationObject?.showCount ?? true}\n page={(currentPageIndex ?? 0) + 1}\n totalItemCount={totalItemCount}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n />\n )}\n </DataTableContainer>\n </DataTableContextProvider>\n );\n}\n"],"names":["createColumnHelper","styles","EditIcon","isEditing","dataTableCellStyles","value","memo","Fragment","currentCellKey","currentCell","IconArrowUpward","IconArrowDownward","table","ExpandIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeO,SAASA,oBAAA,GAAwB;AACtC,EAAA,OAAO,SAAS,YAAA,CACd,EAAA,EACA,MAAA,EASc;AACd,IAAA,IAAI,OAAO,EAAA,KAAO,QAAA,IAAY,OAAA,IAAW,EAAA,EAAI;AAC3C,MAAA,OAAO,EAAE,EAAA,EAAI,EAAA,CAAG,KAAA,EAAO,GAAG,MAAA,EAAO;AAAA,IACnC;AACA,IAAA,OAAO,EAAE,EAAA,EAAI,GAAG,MAAA,EAAO;AAAA,EACzB,CAAA;AACF;;;;;;;;;;;;;;AC5BO,MAAM,wBAAwB,MAAM;AACzC,EAAA,uBACE,GAAA,CAAC,UAAK,YAAA,EAAW,kBAAA,EAAmB,WAAWC,QAAA,CAAO,YAAY,GAAG,QAAA,EAAA,GAAA,EAErE,CAAA;AAEJ,CAAA;;;;;;AC2BO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAQ,EAAC;AAAA,EACT,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,iBAAA,GAAoB,OAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,MAAA,CAA6C,EAAE,CAAA;AACnE,EAAA,MAAM,WAAA,GAAc,OAAwB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,CAAC,CAAA;AAEpD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,kBAAkB,OAAA,EAAS;AAChC,IAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,OAAA,KAAY;AACX,QAAA,MAAM,aAAa,QAAA,CAAS,aAAA;AAAA,UAC1B;AAAA,SACF;AACA,QAAA,IAAI,UAAA,EAAY;AAGhB,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,UAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AAErB,UAAA,IAAI,MAAM,cAAA,EAAgB;AAExB,YAAA,MAAA,CAAO,MAAM,OAAA,GAAU,MAAA;AACvB,YAAA,MAAA,CAAO,MAAM,UAAA,GAAa,SAAA;AAC1B,YAAA,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,gBAAA,GAAmB,CAAC,CAAA;AAAA,UACrD;AAEA,UAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAEzB,YAAA,WAAA,CAAY,QAAQ,IAAA,CAAK;AAAA,cACvB,EAAA,EAAI,MAAA;AAAA,cACJ,IAAA,EAAM,OAAO,qBAAA;AAAsB,aACpC,CAAA;AACD,YAAA,MAAA,CAAO,MAAM,UAAA,GAAa,QAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,OAAA,GAAU,MAAA;AACvB,YAAA,gBAAA,EAAA;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAED,QAAA,cAAA,CAAe,gBAAgB,CAAA;AAAA,MACjC,CAAA;AAAA,MACA;AAAA,QACE,MAAM,YAAA,CAAa,OAAA;AAAA,QACnB,UAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW;AAAA;AACb,KACF;AAEA,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,iBAAA,CAAkB,QAAQ,QAAQ,CAAA;AAC9D,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1B,MAAA,QAAA,CAAS,QAAQ,KAAoB,CAAA;AAAA,IACvC,CAAC,CAAA;AAGD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,CAAC,OAAA,KAAY;AAC/C,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA;AACxC,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAI,WAAA,GAAc,CAAA,IAAK,YAAA,CAAa,OAAA,EAAS;AAC3C,UAAA,MAAM,YAAA,GAAe,WAAA,CAAY,OAAA,EAAS,qBAAA,EAAsB;AAChE,UAAA,gBAAA,CAAiB,YAAA,EAAc,SAAS,CAAC,CAAA;AACzC,UAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACjE,UAAA,MAAM,WACJ,WAAA,CAAY,OAAA,CAAQ,YAAY,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA;AAEtD,UAAA,MAAM,gBAAA,GACJ,QAAA,CAAS,KAAA,IAAS,aAAA,CAAc,KAAA,IAChC,QAAA,CAAS,IAAA,IAAQ,aAAA,CAAc,IAAA,IAC/B,QAAA,CAAS,KAAA,IAAS,aAAA,CAAc,KAAA;AAElC,UAAA,MAAM,cAAA,GACJ,QAAA,CAAS,MAAA,IAAU,aAAA,CAAc,MAAA,IACjC,QAAA,CAAS,GAAA,IAAO,aAAA,CAAc,GAAA,IAC9B,QAAA,CAAS,MAAA,IAAU,aAAA,CAAc,MAAA;AAEnC,UAAA,MAAM,iBAAiB,gBAAA,IAAoB,cAAA;AAE3C,UAAA,WAAA,CAAY,OAAA,CAAQ,cAAc,CAAC,CAAA,CAAE,GAAG,KAAA,CAAM,OAAA,GAAU,iBACpD,MAAA,GACA,MAAA;AAEJ,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,WAAA,CAAY,QAAQ,GAAA,EAAI;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,OAAO,CAAA;AAErC,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,gBAAgB,GAAG,SAAS,CAAA;AAAA,MACjD,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB;AAAA,OACnB;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,iBAAA,EAAmB,KAAA,EAAO,EAAE,SAAS,UAAA,EAAW,EAEvD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChB,GAAA,CAAC,IAAA,EAAA,EAAkB,GAAG,IAAA,EAAM,KAAA,EAAO,EAAE,YAAY,QAAA,EAAS,EAAA,EAA/C,KAAkD,CAC9D,CAAA,EACH,CAAA;AAAA,QAGC,WAAA,GAAc,qBAAK,GAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,GAAA,EAAK,WAAA,EAAa;AAAA;AAAA;AAAA,GACxE;AAEJ,CAAA;;AC3IO,MAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,EAAE,eAAc,GAA2B,EAAE,aAAA,EAAe,KAAA,EAAM,KAC/D;AACH,EAAA,IAAI,CAAC,KAAA,EAAO,uBAAO,GAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA;AAE1C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,2BAAQ,qBAAA,EAAA,EAAsB,CAAA;AAAA,IAChC;AACA,IAAA,IAAI,MAAM,KAAA,CAAM,CAAC,MAAM,OAAO,CAAA,KAAM,QAAQ,CAAA,EAAG;AAC7C,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,GAAE,CAAE,CAAA;AAC7C,QAAA,uBAAO,GAAA,CAAC,iBAAc,KAAA,EAAc,CAAA;AAAA,MACtC;AACA,MAAA,2BACG,IAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,GAAA,EAAI,KACvB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,yBACT,IAAA,EAAA,EAAa,KAAA,EAAO,CAAA,EAAA,EAAV,CAAa,CACzB,CAAA,EACH,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,uBAAO,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,IACtC;AACA,IAAA,2BACG,IAAA,EAAA,EAAK,SAAA,EAAU,OAAM,GAAA,EAAI,GAAA,EAAI,MAAK,MAAA,EAChC,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,yBACT,IAAA,EAAA,EAAoB,GAAG,KAAb,CAAA,CAAE,KAAc,CAC5B,CAAA,EACH,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,EAC7B;AAEA,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B;;AC3CO,MAAM,oBAAoB,CAC/B,KAAA,EACA,EAAE,MAAA,EAAQ,UAAS,GAA8B;AAAA,EAC/C,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA,KACG;AACH,EAAA,OAAO,KAAA,GACH,KAAA,CAAM,cAAA,CAAe,MAAA,EAAQ;AAAA,IAC3B,KAAA,EAAO,UAAA;AAAA,IACP;AAAA,GACD,CAAA,GACD,IAAA;AACN;;ACbO,MAAM,mBAAmB,CAC9B,KAAA,EACA,EAAE,QAAA,EAAU,QAAO,GAA6B;AAAA,EAC9C,QAAA,EAAU,CAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAA,KACG;AACH,EAAA,OAAO,KAAA,GACH,KAAA,CAAM,cAAA,CAAe,MAAA,EAAQ;AAAA,IAC3B,KAAA,EAAO,SAAA;AAAA,IACP,qBAAA,EAAuB,QAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA,GACD,IAAA;AACN;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;AACpC,MAAM,OAAO,OAAO,QAAQ,KAAK,UAAU,GAAG;AAC9C,QAAQ,GAAG,MAAM;AACjB,QAAQ,UAAU,EAAE;AACpB,OAAO,GAAG;AACV,QAAQ,GAAG,MAAM;AACjB,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM;AAC7B,IAAI,KAAK,EAAE,MAAM,IAAI;AACrB,GAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1C,EAAE,OAAO,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;AACjE;AAIA,SAAS,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE;AACzC,EAAE,OAAO,OAAO,IAAI;AACpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC7B,MAAM,OAAO;AACb,QAAQ,GAAG,GAAG;AACd,QAAQ,CAAC,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;AACjD,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,YAAY,QAAQ;AAC9B;AACA,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AACpE;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE;AACrC,EAAE,MAAM,IAAI,GAAG,EAAE;AACjB,EAAE,MAAM,OAAO,GAAG,MAAM,IAAI;AAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;AAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;AACxC,MAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC;AACzB,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,EAAE,OAAO,IAAI;AACb;AACA,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,IAAI,MAAM;AACZ,EAAE,OAAO,OAAO,IAAI;AACpB,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;AACpD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;AAC3G,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,IAAI,GAAG,OAAO;AAClB,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;AACvD,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClE,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AACxC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG;AACzE,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,GAAG,CAAC,GAAG,GAAG;AAC/E,QAAQ,MAAM,mBAAmB,GAAG,aAAa,GAAG,EAAE;AACtD,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AAClC,UAAU,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,UAAU,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AACnC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3B,UAAU;AACV,UAAU,OAAO,GAAG;AACpB,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/E;AACA;AACA,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACvI,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH;AACA,SAAS,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;AACjE,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,MAAM;AACjB,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,YAAY,CAAC,UAAU,CAAC;AACvJ,IAAI,CAAC;AACL,IAAI,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,GAAG;AACtD,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClD,EAAE,MAAM,cAAc,GAAG,MAAM;AAC/B,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB;AAC1G,EAAE,CAAC;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,GAAG;AACP,IAAI,MAAM;AACV,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,IAAI,WAAW,EAAE,cAAc;AAC/B,IAAI,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM;AACtF,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,WAAW,EAAE,IAAI,CAAC;AACxB,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,CAAC;AACtE,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;AAC9E,EAAE,CAAC,EAAE,EAAE,CAAC;AACR,EAAE,OAAO,IAAI;AACb;;AAEA,SAAS,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;AACvD,EAAE,IAAI,IAAI,EAAE,qBAAqB;AACjC,EAAE,MAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB,EAAE;AACpD,EAAE,MAAM,iBAAiB,GAAG;AAC5B,IAAI,GAAG,aAAa;AACpB,IAAI,GAAG;AACP,GAAG;AACH,EAAE,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW;AACnD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,WAAW,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI,GAAG,OAAO,iBAAiB,CAAC,MAAM,KAAK,QAAQ,GAAG,iBAAiB,CAAC,MAAM,GAAG,SAAS;AAC1V,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,iBAAiB,CAAC,UAAU,EAAE;AACpC,IAAI,UAAU,GAAG,iBAAiB,CAAC,UAAU;AAC7C,EAAE,CAAC,MAAM,IAAI,WAAW,EAAE;AAC1B;AACA,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,UAAU,GAAG,WAAW,IAAI;AAClC,QAAQ,IAAI,MAAM,GAAG,WAAW;AAChC,QAAQ,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAClD,UAAU,IAAI,OAAO;AACrB,UAAU,MAAM,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;AACrE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,KAAK,SAAS,EAAE;AAC7E,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC9F,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5E,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,EAAE,EAAE;AACX,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC/C,MAAM,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,GAAG,CAAC,8CAA8C,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AAC/J,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,EAAE;AACrB,EAAE;AACF,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,IAAI,UAAU;AACd,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,KAAK;AACT,IAAI,SAAS,EAAE,iBAAiB;AAChC,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;AAC7C,MAAM,IAAI,eAAe;AACzB,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAClI,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAC9E,IAAI,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC7E,MAAM,IAAI,gBAAgB;AAC1B,MAAM,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAClF,QAAQ,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;AACnF,QAAQ,OAAO,YAAY,CAAC,WAAW,CAAC;AACxC,MAAM;AACN,MAAM,OAAO,CAAC,MAAM,CAAC;AACrB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC;AAC7E,GAAG;AACH,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACvE,EAAE;;AAEF;AACA,EAAE,OAAO,MAAM;AACf;;AAEA,MAAM,KAAK,GAAG,cAAc;AAC5B;;AAEA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,WAAW;AACjB,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,EAAE;AACzE,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,EAAE;AACN,IAAI,MAAM;AACV,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK;AACxB,IAAI,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa;AAC1C,IAAI,aAAa,EAAE,OAAO,CAAC,aAAa;AACxC,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK;AACxB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,cAAc,EAAE,MAAM;AAC1B,MAAM,MAAM,WAAW,GAAG,EAAE;AAC5B,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI;AACjC,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE;AACjD,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;AACzC,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,MAAM,CAAC;AACP,MAAM,aAAa,CAAC,MAAM,CAAC;AAC3B,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,OAAO;AACvB,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM;AACN,KAAK;AACL,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACvE,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,MAAM;AACf;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB;;AAEA,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK;AACpN,MAAM,IAAI,gBAAgB,EAAE,iBAAiB;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,gBAAgB,GAAG,EAAE;AACrL,MAAM,MAAM,YAAY,GAAG,CAAC,iBAAiB,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE;AAC1L,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACtJ,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,EAAE,KAAK,CAAC;AACpH,MAAM,OAAO,YAAY;AACzB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK;AAC1N,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9I,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;AACxE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK;AAC3K,MAAM,IAAI,iBAAiB;AAC3B,MAAM,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE;AAC9L,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC;AAC7E,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,KAAK;AAC9K,MAAM,IAAI,kBAAkB;AAC5B,MAAM,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,kBAAkB,GAAG,EAAE;AAClM,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9E,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;;AAEpE;;AAEA,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,IAAI;AAClF,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC1F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC9F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC5F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;;AAEpE;;AAEA,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,IAAI;AACjF,MAAM,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,IAAI;AAC7C,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC9D,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,IAAI;AACjF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAClE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,IAAI;AACrF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACpE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI,IAAI;AACnF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;;AAEnE;;AAEA,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,WAAW,IAAI;AAC3F,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,kBAAkB;AAC9B,QAAQ,OAAO,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC;AAC/F,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACpE,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,WAAW,IAAI;AACvF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,mBAAmB;AAC/B,QAAQ,OAAO,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACjG,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAClE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,WAAW,IAAI;AACzF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,mBAAmB;AAC/B,QAAQ,OAAO,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACjG,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3J,MAAM,IAAI,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO;AACzF,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,eAAe,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,GAAG,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI;AACrX,QAAQ,OAAO,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC9D,EAAE;AACF,CAAC;AACD,SAAS,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5E,EAAE,IAAI,qBAAqB,EAAE,cAAc;AAC3C;AACA;AACA;AACA;AACA;;AAEA,EAAE,IAAI,QAAQ,GAAG,CAAC;AAClB,EAAE,MAAM,YAAY,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,MAAM,KAAK,GAAG,CAAC;AACf,IAAI;AACJ,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI;AACtE,MAAM,IAAI,eAAe;AACzB,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AAChF,QAAQ,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;AAC/C,MAAM;AACN,IAAI,CAAC,EAAE,CAAC,CAAC;AACT,EAAE,CAAC;AACH,EAAE,YAAY,CAAC,UAAU,CAAC;AAC1B,EAAE,IAAI,YAAY,GAAG,EAAE;AACvB,EAAE,MAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,KAAK,KAAK;AACvD;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,KAAK;AACX,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,MAAM,OAAO,EAAE;AACf,KAAK;;AAEL;AACA,IAAI,MAAM,oBAAoB,GAAG,EAAE;;AAEnC;AACA,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,IAAI;AAC5C;;AAEA,MAAM,MAAM,yBAAyB,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK;AAC3E,MAAM,IAAI,MAAM;AAChB,MAAM,IAAI,aAAa,GAAG,KAAK;AAC/B,MAAM,IAAI,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;AACvD;AACA,QAAQ,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM;AAC5C,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,GAAG,aAAa,CAAC,MAAM;AACrC,QAAQ,aAAa,GAAG,IAAI;AAC5B,MAAM;AACN,MAAM,IAAI,yBAAyB,IAAI,CAAC,yBAAyB,IAAI,IAAI,GAAG,MAAM,GAAG,yBAAyB,CAAC,MAAM,MAAM,MAAM,EAAE;AACnI;AACA,QAAQ,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AAChE,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACnD,UAAU,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,IAAI,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3H,UAAU,aAAa;AACvB,UAAU,aAAa,EAAE,aAAa,GAAG,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;AACtH,UAAU,KAAK;AACf,UAAU,KAAK,EAAE,oBAAoB,CAAC;AACtC,SAAS,CAAC;;AAEV;AACA,QAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C;AACA;AACA,QAAQ,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,MAAM;AACN,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,MAAM,aAAa,CAAC,WAAW,GAAG,WAAW;AAC7C,IAAI,CAAC,CAAC;AACN,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC;AACxD,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1F,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,iBAAiB,CAAC,aAAa,EAAE,QAAQ,GAAG,CAAC,CAAC;AAChD,EAAE,YAAY,CAAC,OAAO,EAAE;;AAExB;AACA;AACA;;AAEA,EAAE,MAAM,sBAAsB,GAAG,OAAO,IAAI;AAC5C,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAClF,IAAI,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,IAAI;AACzC,MAAM,IAAI,OAAO,GAAG,CAAC;AACrB,MAAM,IAAI,OAAO,GAAG,CAAC;AACrB,MAAM,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;AAC7B,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACzD,QAAQ,aAAa,GAAG,EAAE;AAC1B,QAAQ,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;AAClE,UAAU,IAAI;AACd,YAAY,OAAO,EAAE,YAAY;AACjC,YAAY,OAAO,EAAE;AACrB,WAAW,GAAG,IAAI;AAClB,UAAU,OAAO,IAAI,YAAY;AACjC,UAAU,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,GAAG,CAAC;AACnB,MAAM;AACN,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;AACxD,MAAM,OAAO,GAAG,OAAO,GAAG,eAAe;AACzC,MAAM,MAAM,CAAC,OAAO,GAAG,OAAO;AAC9B,MAAM,MAAM,CAAC,OAAO,GAAG,OAAO;AAC9B,MAAM,OAAO;AACb,QAAQ,OAAO;AACf,QAAQ;AACR,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH,EAAE,sBAAsB,CAAC,CAAC,qBAAqB,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACrK,EAAE,OAAO,YAAY;AACrB;;AAEA,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK;AAC/E,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,EAAE;AACN,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,YAAY,EAAE,EAAE;AACpB,IAAI,kBAAkB,EAAE,EAAE;AAC1B,IAAI,QAAQ,EAAE,QAAQ,IAAI;AAC1B,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACrD,QAAQ,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACzC,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AAClD,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5E,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvC,IAAI,CAAC;AACL,IAAI,eAAe,EAAE,QAAQ,IAAI;AACjC,MAAM,IAAI,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC3D,QAAQ,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AAClD,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE;AAC7C,QAAQ,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,MAAM;AACN,MAAM,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACjG,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,WAAW,EAAE,QAAQ,IAAI;AAC7B,MAAM,IAAI,aAAa;AACvB,MAAM,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB;AACjH,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE;AAC3C,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7D,IAAI,YAAY,EAAE,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS;AACnF,IAAI,aAAa,EAAE,MAAM;AACzB,MAAM,IAAI,UAAU,GAAG,EAAE;AACzB,MAAM,IAAI,UAAU,GAAG,GAAG;AAC1B,MAAM,OAAO,IAAI,EAAE;AACnB,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE;AACnD,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,QAAQ,UAAU,GAAG,SAAS;AAC9B,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,OAAO,EAAE;AACjC,IAAI,CAAC;AACL,IAAI,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,IAAI;AACxE,MAAM,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,IAAI;AACvC,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AACxD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACjE,IAAI,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,IAAI;AACxE,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;AAClC,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC;AAC1E,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AACjF,EAAE;AACF,EAAE,OAAO,GAAG;AACZ,CAAC;;AAED;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACvH,IAAI,MAAM,CAAC,kBAAkB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACvC,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,mBAAmB,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACnI,IAAI,MAAM,CAAC,sBAAsB,GAAG,MAAM;AAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAC3C,QAAQ,OAAO,IAAI,GAAG,EAAE;AACxB,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,uBAAuB,EAAE;AAC7C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACnI,IAAI,MAAM,CAAC,sBAAsB,GAAG,MAAM;AAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAC3C,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,uBAAuB,EAAE;AAC7C,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACvD,EAAE,IAAI,qBAAqB,EAAE,aAAa;AAC1C,EAAE,MAAM,MAAM,GAAG,WAAW,IAAI,IAAI,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE;AAC/I,EAAE,OAAO,OAAO,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3N,CAAC;AACD,cAAc,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAClD,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AAChE,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,OAAO,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3K,CAAC;AACD,uBAAuB,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACrD,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,WAAW,IAAI,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;AAC3N,CAAC;AACD,YAAY,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAChD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACpD,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1G,CAAC;AACD,WAAW,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC/C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACvD,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;AAClC,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,EAAE,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/F,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,cAAc,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;AAClF,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACxD,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;AACjC,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpG,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,eAAe,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;AACnF,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AAC/C,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW;AAC/C,CAAC;AACD,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACnD,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW;AAC9C,CAAC;AACD,UAAU,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACtD,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW;AAC9B,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,EAAE,OAAO,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG;AAC3C,CAAC;AACD,aAAa,CAAC,kBAAkB,GAAG,GAAG,IAAI;AAC1C,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG;AAClC,EAAE,IAAI,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS;AACnF,EAAE,IAAI,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS;AACnF,EAAE,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS;AACjF,EAAE,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,GAAG,SAAS;AAChF,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,GAAG;AACpB,IAAI,GAAG,GAAG,GAAG;AACb,IAAI,GAAG,GAAG,IAAI;AACd,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB,CAAC;AACD,aAAa,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE7F;;AAEA,MAAM,SAAS,GAAG;AAClB,EAAE,cAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,YAAY;AACd,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAE,eAAe;AACjB,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE;AACF,CAAC;AACD;;AAEA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;AACxD;;AAEA;;AAEA,MAAM,eAAe,GAAG;AACxB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,aAAa,EAAE,EAAE;AACvB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC;AACrE,MAAM,kBAAkB,EAAE,KAAK;AAC/B,MAAM,qBAAqB,EAAE;AAC7B,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,SAAS,CAAC,cAAc;AACvC,MAAM;AACN,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,SAAS,CAAC,aAAa;AACtC,MAAM;AACN,MAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACtC,QAAQ,OAAO,SAAS,CAAC,MAAM;AAC/B,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvD,QAAQ,OAAO,SAAS,CAAC,MAAM;AAC/B,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,OAAO,SAAS,CAAC,WAAW;AACpC,MAAM;AACN,MAAM,OAAO,SAAS,CAAC,UAAU;AACjC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE;AAChJ,MAAM,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9N,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB;AAC9E,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACtV,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE;AAC7D,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK;AAC7M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,sBAAsB,EAAE,sBAAsB;AACxD,MAAM,OAAO,CAAC,sBAAsB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,sBAAsB,GAAG,EAAE;AACpN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,KAAK,IAAI;AACrC,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI;AACpC,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC7C,QAAQ,MAAM,cAAc,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACvF,QAAQ,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC,KAAK,GAAG,SAAS,CAAC;;AAEpG;AACA,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;AACjE,UAAU,IAAI,WAAW;AACzB,UAAU,OAAO,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE;AACtH,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG;AAC7B,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE;AACvB,UAAU,KAAK,EAAE;AACjB,SAAS;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,IAAI,QAAQ;AACtB,UAAU,OAAO,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACjE,YAAY,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AACpC,cAAc,OAAO,YAAY;AACjC,YAAY;AACZ,YAAY,OAAO,CAAC;AACpB,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE;AACrC,QAAQ;AACR,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACvC,UAAU,OAAO,CAAC,GAAG,GAAG,EAAE,YAAY,CAAC;AACvC,QAAQ;AACR,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC7B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AAC9B,IAAI,GAAG,CAAC,aAAa,GAAG,EAAE;AAC1B,IAAI,GAAG,CAAC,iBAAiB,GAAG,EAAE;AAC9B,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,IAAI;AACxC,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,EAAE;AACnD,MAAM,MAAM,QAAQ,GAAG,GAAG,IAAI;AAC9B,QAAQ,IAAI,iBAAiB;AAC7B,QAAQ,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1H,UAAU,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAClE,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AACjD,YAAY,IAAI,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACxE,cAAc,OAAO,KAAK;AAC1B,YAAY;AACZ,UAAU;AACV,UAAU,OAAO,IAAI;AACrB,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC;AACP,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;AAClG,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,YAAY,IAAI;AAC/C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAChN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;AAChE,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC5E,QAAQ,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC7E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACxE,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,oBAAoB,EAAE;AACzC,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;AACzD,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,KAAK,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;AAC9J;;AAEA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD;AACA;AACA,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AACzC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7C,IAAI,OAAO,GAAG,IAAI,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;AAChE,EAAE,CAAC,EAAE,CAAC,CAAC;AACP,CAAC;AACD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;AAC/E,MAAM,GAAG,GAAG,KAAK;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;AAC/E,MAAM,GAAG,GAAG,KAAK;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AACnD,EAAE,IAAI,GAAG;AACT,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK;AAC7C,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;AACpC,QAAQ,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;AACpC,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB,CAAC;AACD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACrC,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,IAAI,GAAG,GAAG,CAAC;AACb,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;AAC1B,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE;AACpD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK;AAC3B,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,KAAK,EAAE,OAAO,GAAG,GAAG,KAAK;AAC/B,EAAE;AACF,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxB,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,EAAE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9E,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9E,CAAC;AACD,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AAC5C,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AAC9D,CAAC;AACD,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,QAAQ,CAAC,MAAM;AACxB,CAAC;AACD,MAAM,cAAc,GAAG;AACvB,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,WAAW;AACb,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,cAAc,EAAE,KAAK,IAAI;AAC/B,QAAQ,IAAI,SAAS,EAAE,eAAe;AACtC,QAAQ,OAAO,CAAC,SAAS,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,eAAe,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI;AAC9K,MAAM,CAAC;AACP,MAAM,aAAa,EAAE;AACrB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC3D,MAAM,iBAAiB,EAAE;AACzB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;AAC/B;AACA,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACpD,UAAU,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;AACjD,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;AACvD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAClR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7H,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,sBAAsB;AAChC,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9H,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,wBAAwB,GAAG,MAAM;AAC5C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,oBAAoB,GAAG,MAAM;AACxC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,cAAc,CAAC,GAAG;AACjC,MAAM;AACN,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,EAAE;AACrE,QAAQ,OAAO,cAAc,CAAC,MAAM;AACpC,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,EAAE;AACzB,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,MAAM,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AACnZ,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC5H,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE;AACnE,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC1E,QAAQ,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC3E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;AACtE,QAAQ,OAAO,KAAK,CAAC,qBAAqB,EAAE;AAC5C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,mBAAmB,EAAE;AACxC,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB;AACnD,IAAI,GAAG,CAAC,gBAAgB,GAAG,QAAQ,IAAI;AACvC,MAAM,IAAI,GAAG,CAAC,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7D,QAAQ,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACjD,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;AAClE,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,MAAM;AACN,MAAM,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1F,MAAM,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,oBAAoB,GAAG,EAAE;AACjC,EAAE,CAAC;AACH,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK;AAC5C,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,gBAAgB;AACzF,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/E,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM;AACjC,MAAM,IAAI,YAAY;AACtB,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAChI,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AAChE,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACpE,IAAI,OAAO,WAAW;AACtB,EAAE;AACF,EAAE,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClF,EAAE,IAAI,iBAAiB,KAAK,QAAQ,EAAE;AACtC,IAAI,OAAO,kBAAkB;AAC7B,EAAE;AACF,EAAE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAClG,EAAE,OAAO,CAAC,GAAG,eAAe,EAAE,GAAG,kBAAkB,CAAC;AACpD;;AAEA;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,WAAW,EAAE,EAAE;AACrB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,aAAa,EAAE,KAAK;AAChE,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AACnM,IAAI,MAAM,CAAC,gBAAgB,GAAG,QAAQ,IAAI;AAC1C,MAAM,IAAI,SAAS;AACnB,MAAM,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC7D,MAAM,OAAO,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE;AACrF,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,QAAQ,IAAI;AACzC,MAAM,IAAI,QAAQ;AAClB,MAAM,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC7D,MAAM,OAAO,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE;AACpG,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,cAAc,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrI,IAAI,KAAK,CAAC,gBAAgB,GAAG,YAAY,IAAI;AAC7C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC7I,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,iBAAiB,KAAK,OAAO,IAAI;AAC/L;AACA;AACA,MAAM,IAAI,cAAc,GAAG,EAAE;;AAE7B;AACA,MAAM,IAAI,EAAE,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACxD,QAAQ,cAAc,GAAG,OAAO;AAChC,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,eAAe,GAAG,CAAC,GAAG,WAAW,CAAC;;AAEhD;AACA,QAAQ,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC;;AAExC;;AAEA;AACA,QAAQ,OAAO,WAAW,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE;AAC7D,UAAU,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE;AACxD,UAAU,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC;AAChF,UAAU,IAAI,UAAU,GAAG,EAAE,EAAE;AAC/B,YAAY,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,UAAU;AACV,QAAQ;;AAER;AACA,QAAQ,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC;AAC5D,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,iBAAiB,CAAC;AACtE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AACzE,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,4BAA4B,GAAG,OAAO;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,KAAK,EAAE;AACT,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,aAAa,EAAE,4BAA4B,EAAE;AACnD,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,EAAE,KAAK;AACpE,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,GAAG,GAAG,QAAQ,IAAI;AAC7B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9E,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI;AACpC,QAAQ,IAAI,UAAU,EAAE,WAAW;AACnC,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE;AAClC,UAAU,IAAI,SAAS,EAAE,UAAU;AACnC,UAAU,OAAO;AACjB,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,YAAY,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS;AAC3K,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE;AACjC,UAAU,IAAI,UAAU,EAAE,WAAW;AACrC,UAAU,OAAO;AACjB,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;AAC1K,YAAY,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1J,WAAW;AACX,QAAQ;AACR,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,UAAU,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxJ,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM;AAC7B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE;AACjD,MAAM,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI;AACnC,QAAQ,IAAI,qBAAqB,EAAE,IAAI,EAAE,qBAAqB;AAC9D,QAAQ,OAAO,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACzQ,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AACxC,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK;AACxD,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,OAAO,QAAQ,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,GAAG,CAAC;AACxR,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,KAAK;AAC9K,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3F,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAC3E,IAAI,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC/H,MAAM,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC7I,QAAQ,GAAG,CAAC;AACZ,QAAQ,QAAQ,EAAE;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK;AAClI,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC/I,QAAQ,GAAG,CAAC;AACZ,QAAQ,QAAQ,EAAE;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;AAC1E,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC3I,IAAI,KAAK,CAAC,kBAAkB,GAAG,YAAY,IAAI;AAC/C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,OAAO,KAAK,CAAC,gBAAgB,CAAC,YAAY,GAAG,4BAA4B,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,4BAA4B,EAAE,CAAC;AAC/Q,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,QAAQ,IAAI;AAC/C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AACzD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,kBAAkB,EAAE,mBAAmB;AACnD,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,kBAAkB,GAAG,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,MAAM,MAAM,CAAC,mBAAmB,GAAG,YAAY,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7M,MAAM;AACN,MAAM,OAAO,OAAO,CAAC,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACtH,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAClI,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1H,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;AAC3E,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK;AACrI,MAAM,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5H,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC;AAC5E,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,KAAK;AACjL,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3F,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC;AAC7E,EAAE;AACF,CAAC;;AAED,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACzC,EAAE,OAAO,SAAS,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AACzE;;AAEA;;AAEA;;AAEA,MAAM,mBAAmB,GAAG;AAC5B,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,OAAO,EAAE,MAAM,CAAC;AAClB,CAAC;AACD,MAAM,+BAA+B,GAAG,OAAO;AAC/C,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,gBAAgB,EAAE,KAAK;AACzB,EAAE,iBAAiB,EAAE;AACrB,CAAC,CAAC;AACF,MAAM,YAAY,GAAG;AACrB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO,mBAAmB;AAC9B,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,gBAAgB,EAAE,+BAA+B,EAAE;AACzD,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,OAAO;AAC/B,MAAM,qBAAqB,EAAE,KAAK;AAClC,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,KAAK;AAC1E,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM;AAC3B,MAAM,IAAI,qBAAqB,EAAE,IAAI,EAAE,qBAAqB;AAC5D,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AACjE,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,UAAU,IAAI,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC/W,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAC5S,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAC7S,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM;AAC7B,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,IAAI;AACrC,QAAQ,IAAI;AACZ,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;AACxB,UAAU,GAAG;AACb,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,IAAI;AACnB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AACxN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM;AACjC,MAAM,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,MAAM,CAAC,EAAE;AAC7E,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM;AAC3B,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI;AAChC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACtC,UAAU,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,qBAAqB;AACnC,UAAU,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AACtG,QAAQ;AACR,MAAM,CAAC;AACP,MAAM,OAAO,CAAC,MAAM,CAAC;AACrB,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM;AAC5B,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5B,QAAQ,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9E,QAAQ,OAAO,iBAAiB,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE;AACzE,MAAM;AACN,MAAM,OAAO,CAAC;AACd,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,IAAI;AAClD,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE;AACvE,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE;AACnC,UAAU;AACV,QAAQ;AACR,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAClC;AACA,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE;AAC1C,QAAQ,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAChJ,QAAQ,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO;AAC3F,QAAQ,MAAM,eAAe,GAAG,EAAE;AAClC,QAAQ,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,KAAK;AACxD,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAC9C,YAAY;AACZ,UAAU;AACV,UAAU,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAI;AAC3C,YAAY,IAAI,gBAAgB,EAAE,cAAc;AAChD,YAAY,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC;AACzF,YAAY,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,CAAC,gBAAgB,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,GAAG,gBAAgB,GAAG,CAAC,CAAC,IAAI,cAAc;AAC5J,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,cAAc,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,GAAG,cAAc,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC7J,YAAY,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI;AACnD,cAAc,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,KAAK;AAChD,cAAc,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,eAAe,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;AACxH,YAAY,CAAC,CAAC;AACd,YAAY,OAAO;AACnB,cAAc,GAAG,GAAG;AACpB,cAAc,WAAW;AACzB,cAAc;AACd,aAAa;AACb,UAAU,CAAC,CAAC;AACZ,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,UAAU,IAAI,SAAS,KAAK,KAAK,EAAE;AACpF,YAAY,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK;AAC1C,cAAc,GAAG,GAAG;AACpB,cAAc,GAAG;AACjB,aAAa,CAAC,CAAC;AACf,UAAU;AACV,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG,UAAU,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AACrE,QAAQ,MAAM,KAAK,GAAG,UAAU,IAAI;AACpC,UAAU,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;AACzC,UAAU,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC5C,YAAY,GAAG,GAAG;AAClB,YAAY,gBAAgB,EAAE,KAAK;AACnC,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,eAAe,EAAE,IAAI;AACjC,YAAY,iBAAiB,EAAE;AAC/B,WAAW,CAAC,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,eAAe,GAAG,oBAAoB,CAAC,gBAAgB,CAAC;AACtE,QAAQ,MAAM,WAAW,GAAG;AAC5B,UAAU,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7C,UAAU,SAAS,EAAE,CAAC,IAAI;AAC1B,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;AAChH,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC;AAC5G,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5B,UAAU;AACV,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG;AAC5B,UAAU,WAAW,EAAE,CAAC,IAAI;AAC5B,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;AAC9B,cAAc,CAAC,CAAC,cAAc,EAAE;AAChC,cAAc,CAAC,CAAC,eAAe,EAAE;AACjC,YAAY;AACZ,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACxC,YAAY,OAAO,KAAK;AACxB,UAAU,CAAC;AACX,UAAU,SAAS,EAAE,CAAC,IAAI;AAC1B,YAAY,IAAI,WAAW;AAC3B,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;AAChH,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC;AAC7G,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;AAC9B,cAAc,CAAC,CAAC,cAAc,EAAE;AAChC,cAAc,CAAC,CAAC,eAAe,EAAE;AACjC,YAAY;AACZ,YAAY,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;AACtF,UAAU;AACV,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,GAAG;AAC7D,UAAU,OAAO,EAAE;AACnB,SAAS,GAAG,KAAK;AACjB,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAClC,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/H,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC5H,QAAQ,CAAC,MAAM;AACf,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/H,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC3H,QAAQ;AACR,QAAQ,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC1C,UAAU,GAAG,GAAG;AAChB,UAAU,WAAW,EAAE,OAAO;AAC9B,UAAU,SAAS;AACnB,UAAU,WAAW,EAAE,CAAC;AACxB,UAAU,eAAe,EAAE,CAAC;AAC5B,UAAU,iBAAiB;AAC3B,UAAU,gBAAgB,EAAE,MAAM,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxI,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACpJ,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC/I,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,IAAI;AAChD,MAAM,IAAI,sBAAsB;AAChC,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,GAAG,+BAA+B,EAAE,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,KAAK,IAAI,GAAG,sBAAsB,GAAG,+BAA+B,EAAE,CAAC;AACvN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AACtK,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC1K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC5K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC3K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,IAAI,gBAAgB,GAAG,IAAI;AAC3B,SAAS,qBAAqB,GAAG;AACjC,EAAE,IAAI,OAAO,gBAAgB,KAAK,SAAS,EAAE,OAAO,gBAAgB;AACpE,EAAE,IAAI,SAAS,GAAG,KAAK;AACvB,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,IAAI,OAAO,GAAG;AACpB,QAAQ,SAAS,GAAG,IAAI;AACxB,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC;AACzB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;AAClD,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,SAAS,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,gBAAgB,GAAG,SAAS;AAC9B,EAAE,OAAO,gBAAgB;AACzB;AACA,SAAS,iBAAiB,CAAC,CAAC,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,YAAY;AAChC;;AAEA;;AAEA,MAAM,gBAAgB,GAAG;AACzB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,EAAE;AAC1B,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,KAAK;AAC1E,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,gBAAgB,GAAG,KAAK,IAAI;AACvC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC/B,QAAQ,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC1C,UAAU,GAAG,GAAG;AAChB,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,YAAY;AACnE,SAAS,CAAC,CAAC;AACX,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;AACzC,MAAM,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5N,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AAC9M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,0BAA0B,GAAG,MAAM;AAC9C,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,MAAM,CAAC,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACpF,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,IAAI;AAC1G,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7D,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,qBAAqB,EAAE,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAClP,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK;AAC1D,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI;AACxH,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AACtF,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AAC5D,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACpH,IAAI,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACpH,IAAI,KAAK,CAAC,yBAAyB,GAAG,wBAAwB,CAAC,2BAA2B,EAAE,MAAM,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC7H,IAAI,KAAK,CAAC,0BAA0B,GAAG,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC;AAChI,IAAI,KAAK,CAAC,2BAA2B,GAAG,wBAAwB,CAAC,6BAA6B,EAAE,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC;AACnI,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACpJ,IAAI,KAAK,CAAC,qBAAqB,GAAG,YAAY,IAAI;AAClD,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACvJ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,uBAAuB,GAAG,KAAK,IAAI;AAC7C,MAAM,IAAI,MAAM;AAChB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE;AACjF,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,MAAM;AACnF,QAAQ,GAAG,GAAG;AACd,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG;AACpF,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACd,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3I,IAAI,KAAK,CAAC,uBAAuB,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChJ,IAAI,KAAK,CAAC,oCAAoC,GAAG,MAAM;AACvD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,OAAO;AACnB,QAAQ,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9F,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,qBAAqB,EAAE,GAAG,QAAQ,KAAK,QAAQ,GAAG,KAAK,CAAC,2BAA2B,EAAE,GAAG,QAAQ,KAAK,MAAM,GAAG,KAAK,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,0BAA0B,EAAE;AAC/M;;AAEA;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC/H,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM;AAC3C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;AAC7E,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,yBAAyB,EAAE;AAC9C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3I,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM;AAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE;AAChD,QAAQ,OAAO,IAAI,GAAG,EAAE;AACxB,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,6BAA6B,EAAE;AAClD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3I,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM;AAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE;AAChD,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,6BAA6B,EAAE;AAClD,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,eAAe,GAAG;AACxB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,cAAc,EAAE,MAAM;AAC5B,MAAM,wBAAwB,EAAE,MAAM,IAAI;AAC1C,QAAQ,IAAI,qBAAqB;AACjC,QAAQ,MAAM,KAAK,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE;AACtO,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;AACrE,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,kBAAkB,GAAG,MAAM;AACtC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB;AACrG,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACpgB,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,OAAO,SAAS,CAAC,cAAc;AACrC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM;AACZ,QAAQ,cAAc,EAAE;AACxB,OAAO,GAAG,KAAK,CAAC,OAAO;AACvB,MAAM,OAAO,UAAU,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,cAAc,KAAK,MAAM,GAAG,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC;AACzT,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI;AACvC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAC/F,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC;AACvF,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,YAAY,GAAG;AACrB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC3D,MAAM,oBAAoB,EAAE;AAC5B,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,MAAM,GAAG,KAAK;AACtB,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,UAAU,GAAG,IAAI;AAC3B,QAAQ,CAAC,CAAC;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;AAC3L,QAAQ,IAAI,MAAM,EAAE;AACpB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,KAAK,CAAC,aAAa,EAAE;AAC/B,UAAU,MAAM,GAAG,KAAK;AACxB,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC5H,IAAI,KAAK,CAAC,qBAAqB,GAAG,QAAQ,IAAI;AAC9C,MAAM,IAAI,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE;AACvE,QAAQ,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7B,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,OAAO,KAAK,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;AACtF,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM;AAClD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,KAAK,CAAC,qBAAqB,EAAE;AACrC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;AAChD,MAAM,OAAO,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;;AAEhD;AACA,MAAM,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;AACzC,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAChC,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AACzC,QAAQ,OAAO,KAAK;AACpB,MAAM;;AAEN;AACA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE;AAC1E,QAAQ,OAAO,KAAK;AACpB,MAAM;;AAEN;AACA,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,QAAQ,GAAG,CAAC;AACtB,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC5I,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;AAC3B,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;AACrD,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,QAAQ;AACrB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;AAClE,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC5E,QAAQ,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC7E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACxE,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,oBAAoB,EAAE;AACzC,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,cAAc,GAAG,QAAQ,IAAI;AACrC,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;AAC/B,QAAQ,IAAI,SAAS;AACrB,QAAQ,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,QAAQ,IAAI,WAAW,GAAG,EAAE;AAC5B,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI;AACrE,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI;AACrC,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM;AACf,UAAU,WAAW,GAAG,GAAG;AAC3B,QAAQ;AACR,QAAQ,QAAQ,GAAG,CAAC,SAAS,GAAG,QAAQ,KAAK,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM;AACvE,QAAQ,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;AACjC,UAAU,OAAO;AACjB,YAAY,GAAG,WAAW;AAC1B,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG;AACtB,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;AACjC,UAAU,MAAM;AAChB,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY,GAAG;AACf,WAAW,GAAG,WAAW;AACzB,UAAU,OAAO,IAAI;AACrB,QAAQ;AACR,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,aAAa,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;AAChD,MAAM,OAAO,CAAC,EAAE,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,QAAQ,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtO,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM;AAC7B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,YAAY;AACpE,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAChU,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,uBAAuB,GAAG,MAAM;AACxC,MAAM,IAAI,eAAe,GAAG,IAAI;AAChC,MAAM,IAAI,UAAU,GAAG,GAAG;AAC1B,MAAM,OAAO,eAAe,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrD,QAAQ,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5D,QAAQ,eAAe,GAAG,UAAU,CAAC,aAAa,EAAE;AACpD,MAAM;AACN,MAAM,OAAO,eAAe;AAC5B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,wBAAwB,GAAG,MAAM;AACzC,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE;AAC1C,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,GAAG,CAAC,cAAc,EAAE;AAC5B,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,gBAAgB,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,yBAAyB,GAAG,OAAO;AACzC,EAAE,SAAS,EAAE,gBAAgB;AAC7B,EAAE,QAAQ,EAAE;AACZ,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,GAAG,KAAK;AACd,MAAM,UAAU,EAAE;AAClB,QAAQ,GAAG,yBAAyB,EAAE;AACtC,QAAQ,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU;AACrD;AACA,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,YAAY,EAAE,KAAK;AAC9D,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,MAAM,GAAG,KAAK;AACtB,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,UAAU,GAAG,IAAI;AAC3B,QAAQ,CAAC,CAAC;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC7L,QAAQ,IAAI,MAAM,EAAE;AACpB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,KAAK,CAAC,cAAc,EAAE;AAChC,UAAU,MAAM,GAAG,KAAK;AACxB,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,OAAO,IAAI;AACrC,MAAM,MAAM,WAAW,GAAG,GAAG,IAAI;AACjC,QAAQ,IAAI,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC;AACrD,QAAQ,OAAO,QAAQ;AACvB,MAAM,CAAC;AACP,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC9G,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,IAAI;AAC5C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,yBAAyB,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,KAAK,IAAI,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AAC7L,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,OAAO,IAAI;AACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,IAAI,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;AAChE,QAAQ,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACrK,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAClE,QAAQ,OAAO;AACf,UAAU,GAAG,GAAG;AAChB,UAAU;AACV,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,cAAc,GAAG,YAAY,IAAI;AAC3C,MAAM,IAAI,sBAAsB,EAAE,mBAAmB;AACrD,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,gBAAgB,GAAG,CAAC,sBAAsB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,SAAS,KAAK,IAAI,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;AACxS,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,sBAAsB,EAAE,oBAAoB;AACtD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,eAAe,GAAG,CAAC,sBAAsB,GAAG,CAAC,oBAAoB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,QAAQ,KAAK,IAAI,GAAG,sBAAsB,GAAG,eAAe,CAAC;AACxS,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI;AACnC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7E,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS;AACxD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5D,QAAQ,OAAO;AACf,UAAU,GAAG,GAAG;AAChB,UAAU,SAAS;AACnB,UAAU;AACV,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,YAAY,GAAG,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AAC/D,MAAM,IAAI,qBAAqB;AAC/B,MAAM,IAAI,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC1I,MAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC;AACjD,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,GAAG,GAAG;AACd,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,IAAI;AAC3E,MAAM,IAAI,WAAW,GAAG,EAAE;AAC1B,MAAM,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE;AACtC,QAAQ,WAAW,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC3E,MAAM;AACN,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;AAC9E,IAAI,KAAK,CAAC,cAAc,GAAG,MAAM;AACjC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACrC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE;AAC5C,MAAM,IAAI,SAAS,KAAK,EAAE,EAAE;AAC5B,QAAQ,OAAO,IAAI;AACnB,MAAM;AACN,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;AAC3B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,CAAC;AACtC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,MAAM;AAC3B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AACvC,QAAQ,OAAO,GAAG,GAAG,CAAC;AACtB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM;AAC5B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,MAAM;AAC3B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACzD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE;AACtE,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAChF,QAAQ,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACjF,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;AAC3E,QAAQ,OAAO,KAAK,CAAC,wBAAwB,EAAE;AAC/C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC3C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,IAAI,sBAAsB;AAChC,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxK,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,MAAM;AAC5I,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,yBAAyB,GAAG,OAAO;AACzC,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,MAAM,EAAE;AACV,CAAC,CAAC;AACF,MAAM,UAAU,GAAG;AACnB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,yBAAyB,EAAE;AAC7C,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,YAAY,EAAE,KAAK;AAC9D,KAAK;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,iBAAiB,KAAK;AAChE,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI;AACzE,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,IAAI;AAChB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC,GAAG,EAAE;AACb,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI;AAChF,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC,GAAG,EAAE;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;AACtE,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,IAAI,SAAS,EAAE,YAAY;AACnC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACnC,UAAU,IAAI,QAAQ,EAAE,WAAW;AACnC,UAAU,OAAO;AACjB,YAAY,GAAG,EAAE,CAAC,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,YAAY,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7K,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE;AAChC,UAAU,IAAI,SAAS,EAAE,YAAY;AACrC,UAAU,OAAO;AACjB,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpK,YAAY,MAAM,EAAE,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnJ,WAAW;AACX,QAAQ;AACR,QAAQ,OAAO;AACf,UAAU,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,UAAU,MAAM,EAAE,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjJ,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM;AAC1B,MAAM,IAAI,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,gBAAgB;AACxB,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,OAAO;AACvB,MAAM,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;AAClD,QAAQ,OAAO,gBAAgB,CAAC,GAAG,CAAC;AACpC,MAAM;AACN,MAAM,OAAO,CAAC,KAAK,GAAG,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,GAAG,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI;AACzG,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,WAAW,GAAG,MAAM;AAC5B,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,MAAM,MAAM;AACZ,QAAQ,GAAG;AACX,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACrC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrF,MAAM,OAAO,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK;AACxD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,cAAc,GAAG,MAAM;AAC/B,MAAM,IAAI,KAAK,EAAE,qBAAqB;AACtC,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE;AACxC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,GAAG,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI;AAClJ,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,CAAC,qBAAqB,GAAG,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE;AACtJ,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,aAAa,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAClI,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,IAAI;AAC5C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,OAAO,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,yBAAyB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,UAAU,KAAK,IAAI,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AACnQ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mBAAmB,GAAG,QAAQ,IAAI;AAC5C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACtD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,iBAAiB,EAAE,oBAAoB;AACnD,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,KAAK,IAAI,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,MAAM,CAAC,oBAAoB,GAAG,YAAY,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7M,MAAM;AACN,MAAM,OAAO,OAAO,CAAC,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACtH,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,KAAK;AACpE,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AACjH;AACA;AACA,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI;AAC9D,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7C,QAAQ,OAAO,GAAG,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI;AACzD,MAAM,CAAC,CAAC;AACR;AACA,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;AACxG,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC5C,QAAQ,GAAG,CAAC;AACZ,QAAQ;AACR,OAAO,CAAC,CAAC;AACT,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC7O,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AAC/P,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK;AAChK,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AACnE,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,YAAY,GAAG;AACrB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,kBAAkB,EAAE,IAAI;AAC9B,MAAM,uBAAuB,EAAE,IAAI;AACnC,MAAM,qBAAqB,EAAE;AAC7B;AACA;AACA;AACA,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxI,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtJ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,IAAI;AAC3C,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACnC,QAAQ,KAAK,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACpF,QAAQ,MAAM,YAAY,GAAG;AAC7B,UAAU,GAAG;AACb,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ;;AAEzE;AACA;AACA,QAAQ,IAAI,KAAK,EAAE;AACnB,UAAU,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI;AAC5C,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE;AACrC,cAAc;AACd,YAAY;AACZ,YAAY,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI;AACvC,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM;AACf,UAAU,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI;AAC5C,YAAY,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,UAAU,CAAC,CAAC;AACZ,QAAQ;AACR,QAAQ,OAAO,YAAY;AAC3B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AAC5E,MAAM,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACpG,MAAM,MAAM,YAAY,GAAG;AAC3B,QAAQ,GAAG;AACX,OAAO;AACP,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AAC9C,QAAQ,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;AAC7E,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,YAAY;AACzB,IAAI,CAAC,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;AAChE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AACjI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAC1E,IAAI,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC7I,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,6BAA6B,CAAC,CAAC;AAClF,IAAI,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC1I,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,4BAA4B,CAAC,CAAC;;AAEjF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ;AACrE,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,IAAI,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;AACpG,MAAM,IAAI,iBAAiB,EAAE;AAC7B,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;AACzF,UAAU,iBAAiB,GAAG,KAAK;AACnC,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,iBAAiB;AAC9B,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM;AAC3C,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;AACzG,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,IAAI,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM;AAC7D,MAAM,IAAI,qBAAqB,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1F,QAAQ,qBAAqB,GAAG,KAAK;AACrC,MAAM;AACN,MAAM,OAAO,qBAAqB;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC,CAAC,MAAM;AAC5I,MAAM,OAAO,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,MAAM;AAC7F,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,yBAAyB,GAAG,MAAM;AAC5C,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ;AACvE,MAAM,OAAO,KAAK,CAAC,wBAAwB,EAAE,GAAG,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAClK,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM;AAClD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACrD,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mCAAmC,GAAG,MAAM;AACtD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACzD,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AAC1C,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE;AAC5C,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACnC,QAAQ,IAAI,oBAAoB;AAChC,QAAQ,KAAK,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,UAAU;AAClE,QAAQ,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,UAAU,KAAK,KAAK,EAAE;AACxD,UAAU,OAAO,GAAG;AACpB,QAAQ;AACR,QAAQ,MAAM,cAAc,GAAG;AAC/B,UAAU,GAAG;AACb,SAAS;AACT,QAAQ,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,oBAAoB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,oBAAoB,GAAG,IAAI,EAAE,KAAK,CAAC;AAC7K,QAAQ,OAAO,cAAc;AAC7B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,aAAa,GAAG,MAAM;AAC9B,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,iBAAiB,GAAG,MAAM;AAClC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,MAAM;AAC3D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,uBAAuB,GAAG,MAAM;AACxC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,KAAK;AAC1D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM;AAC7B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,UAAU,EAAE;AAClE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACpD,MAAM;AACN,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AAC9G,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,mBAAmB,GAAG,MAAM;AACpC,MAAM,IAAI,sBAAsB;AAChC,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACrE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC;AACvD,MAAM;AACN,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI;AACnH,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,iBAAiB,GAAG,MAAM;AAClC,MAAM,IAAI,sBAAsB;AAChC,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,KAAK,UAAU,EAAE;AACvE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACzD,MAAM;AACN,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI;AACrH,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,wBAAwB,GAAG,MAAM;AACzC,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE;AAC1C,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,OAAO;AACnB,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AACnF,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,KAAK;AACnF,EAAE,IAAI,YAAY;AAClB,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;;AAEpC;;AAEA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE;AAClC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE;AAC5B,MAAM,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI;AAC/B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,cAAc,CAAC,EAAE,CAAC;AAC7B,EAAE;AACF;;AAEA,EAAE,IAAI,eAAe,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC,mBAAmB,EAAE,EAAE;AACnH,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AAC1G,EAAE;AACF,CAAC;AACD,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvC,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY;AACpD,EAAE,MAAM,mBAAmB,GAAG,EAAE;AAChC,EAAE,MAAM,mBAAmB,GAAG,EAAE;;AAEhC;AACA,EAAE,MAAM,WAAW,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC7C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC3B,MAAM,IAAI,aAAa;AACvB,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC;AACzD,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAQ,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACzC,MAAM;AACN,MAAM,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE;AACzE,QAAQ,GAAG,GAAG;AACd,UAAU,GAAG,GAAG;AAChB,UAAU,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO;AAC1C,SAAS;AACT,MAAM;AACN,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,GAAG;AAClB,MAAM;AACN,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACtB,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpC,IAAI,QAAQ,EAAE,mBAAmB;AACjC,IAAI,QAAQ,EAAE;AACd,GAAG;AACH;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;AACvC,EAAE,IAAI,iBAAiB;AACvB,EAAE,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,KAAK;AACpF;AACA,SAAS,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;AACjD,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,EAAE,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpF,EAAE,IAAI,mBAAmB,GAAG,IAAI;AAChC,EAAE,IAAI,YAAY,GAAG,KAAK;AAC1B,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;AAChC;AACA,IAAI,IAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE;AAC9C,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI;AAC3B,MAAM,CAAC,MAAM;AACb,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM;AACN,IAAI;;AAEJ;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AACjD,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;AACxE,MAAM,IAAI,sBAAsB,KAAK,KAAK,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI;AAC3B,MAAM,CAAC,MAAM,IAAI,sBAAsB,KAAK,MAAM,EAAE;AACpD,QAAQ,YAAY,GAAG,IAAI;AAC3B,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM,CAAC,MAAM;AACb,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,mBAAmB,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,KAAK;AACpE;;AAEA,MAAM,mBAAmB,GAAG,YAAY;AACxC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC/C,EAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9H,CAAC;AACD,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC5D,EAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClG,CAAC;;AAED;AACA;AACA,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACvH,CAAC;;AAED;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACpD,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3F,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC3C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAEnC;AACA;AACA;AACA,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,CAAC;AACD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACxC,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;;AAED;;AAEA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC7B,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvD,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC7B,IAAI,OAAO,CAAC;AACZ,EAAE;AACF,EAAE,OAAO,EAAE;AACX;;AAEA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;AACzC;AACA;AACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3D,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;AAE3D;AACA,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;;AAEjC;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AACnB,QAAQ,OAAO,CAAC;AAChB,MAAM;AACN,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AACnB,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM;AACN,IAAI;;AAEJ;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,MAAM,OAAO,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI;;AAEJ;AACA,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE;AACjB,MAAM,OAAO,CAAC;AACd,IAAI;AACJ,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE;AACjB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AAC5B;;AAEA;;AAEA,MAAM,UAAU,GAAG;AACnB,EAAE,YAAY;AACd,EAAE,yBAAyB;AAC3B,EAAE,IAAI;AACN,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,UAAU,GAAG;AACnB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,SAAS,EAAE,MAAM;AACvB,MAAM,aAAa,EAAE;AACrB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,eAAe,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC;AACzD,MAAM,gBAAgB,EAAE,CAAC,IAAI;AAC7B,QAAQ,OAAO,CAAC,CAAC,QAAQ;AACzB,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM;AACpC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,MAAM,IAAI,QAAQ,GAAG,KAAK;AAC1B,MAAM,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACnC,QAAQ,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACpE,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,EAAE;AACvE,UAAU,OAAO,UAAU,CAAC,QAAQ;AACpC,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,UAAU,QAAQ,GAAG,IAAI;AACzB,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,YAAY,OAAO,UAAU,CAAC,YAAY;AAC1C,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,OAAO,UAAU,CAAC,IAAI;AAC9B,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,KAAK;AAC7B,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,EAAE;AACzB,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AACnX,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC3D,MAAM,MAAM,cAAc,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,IAAI;AACzE,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI;AAC9B;AACA,QAAQ,MAAM,eAAe,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACxF,QAAQ,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAC3F,QAAQ,IAAI,UAAU,GAAG,EAAE;;AAE3B;AACA,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,QAAQ,GAAG,cAAc,GAAG,IAAI,GAAG,gBAAgB,KAAK,MAAM;;AAE1E;AACA,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK,EAAE;AAC5E,UAAU,IAAI,eAAe,EAAE;AAC/B,YAAY,UAAU,GAAG,QAAQ;AACjC,UAAU,CAAC,MAAM;AACjB,YAAY,UAAU,GAAG,KAAK;AAC9B,UAAU;AACV,QAAQ,CAAC,MAAM;AACf;AACA,UAAU,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,YAAY,UAAU,GAAG,SAAS;AAClC,UAAU,CAAC,MAAM,IAAI,eAAe,EAAE;AACtC,YAAY,UAAU,GAAG,QAAQ;AACjC,UAAU,CAAC,MAAM;AACjB,YAAY,UAAU,GAAG,SAAS;AAClC,UAAU;AACV,QAAQ;;AAER;AACA,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE;AACrC;AACA,UAAU,IAAI,CAAC,cAAc,EAAE;AAC/B;AACA,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,cAAc,UAAU,GAAG,QAAQ;AACnC,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE;AAClC,UAAU,IAAI,qBAAqB;AACnC,UAAU,UAAU,GAAG,CAAC,GAAG,GAAG,EAAE;AAChC,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE;AACzB,YAAY,IAAI,EAAE;AAClB,WAAW,CAAC;AACZ;AACA,UAAU,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5K,QAAQ,CAAC,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC5C;AACA,UAAU,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACpC,YAAY,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AACpC,cAAc,OAAO;AACrB,gBAAgB,GAAG,CAAC;AACpB,gBAAgB,IAAI,EAAE;AACtB,eAAe;AACf,YAAY;AACZ,YAAY,OAAO,CAAC;AACpB,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC5C,UAAU,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAC1D,QAAQ,CAAC,MAAM;AACf,UAAU,UAAU,GAAG,CAAC;AACxB,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE;AACzB,YAAY,IAAI,EAAE;AAClB,WAAW,CAAC;AACZ,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,KAAK,MAAM;AAC/M,MAAM,OAAO,aAAa,GAAG,MAAM,GAAG,KAAK;AAC3C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,mBAAmB,GAAG,KAAK,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,EAAE;AACzD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,OAAO,kBAAkB;AACjC,MAAM;AACN,MAAM,IAAI,QAAQ,KAAK,kBAAkB,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AAClJ;AACA,MAAM,KAAK,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;AACxH,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,QAAQ,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM;AACjD,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACzO,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,KAAK,EAAE,sBAAsB;AACvC,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,IAAI,GAAG,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU;AACzL,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,UAAU,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAClJ,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK;AACnE,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,sBAAsB,EAAE,sBAAsB;AACxD,MAAM,OAAO,CAAC,sBAAsB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,sBAAsB,GAAG,EAAE;AAC9M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC;AACA,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AACnG,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,MAAM;AAC3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AACzC,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/L,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AACzH,IAAI,KAAK,CAAC,YAAY,GAAG,YAAY,IAAI;AACzC,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACpM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;AACjE,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACxE,QAAQ,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACzE,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACpE,QAAQ,OAAO,KAAK,CAAC,oBAAoB,EAAE;AAC3C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,kBAAkB,EAAE;AACvC,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc;AAClI;AACA,eAAe;AACf;AACA,UAAU,EAAE,cAAc;AAC1B;AACA,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC;;AAEpE;;AAEA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,IAAI,kBAAkB,EAAE,qBAAqB;AAC/C,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACzF,IAAI,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAC9C,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACzH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AAClE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC5G,EAAE,CAAC,EAAE,EAAE,CAAC;AACR,EAAE,MAAM,YAAY,GAAG,OAAO,IAAI;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;AACpC,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC;AAChE,IAAI;AACJ,IAAI,OAAO;AACX,MAAM,GAAG,cAAc;AACvB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,MAAM,gBAAgB,GAAG,EAAE;AAC7B,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,GAAG,gBAAgB;AACvB,IAAI,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE;AAC3F,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,IAAI,qBAAqB;AAC7B,IAAI,YAAY,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,YAAY;AAC5K,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,IAAI,aAAa,GAAG,KAAK;AAC3B,EAAE,MAAM,YAAY,GAAG;AACvB,IAAI,SAAS;AACb,IAAI,OAAO,EAAE;AACb,MAAM,GAAG,cAAc;AACvB,MAAM,GAAG;AACT,KAAK;AACL,IAAI,YAAY;AAChB,IAAI,MAAM,EAAE,EAAE,IAAI;AAClB,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ,aAAa,GAAG,IAAI;;AAE5B;AACA;AACA,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;AACrC,UAAU,OAAO,MAAM,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,KAAK,EAAE,EAAE;AAC5B,UAAU;AACV,UAAU,aAAa,GAAG,KAAK;AAC/B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM;AAC3C,UAAU,MAAM,KAAK;AACrB,QAAQ,CAAC,CAAC,CAAC;AACX,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,MAAM;AACjB,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AACxC,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,OAAO,IAAI;AAC3B,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,MAAM,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;AAC9C,IAAI,CAAC;AACL,IAAI,QAAQ,EAAE,MAAM;AACpB,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AAChC,IAAI,CAAC;AACL,IAAI,QAAQ,EAAE,OAAO,IAAI;AACzB,MAAM,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACjF,IAAI,CAAC;AACL,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AACvC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAChN,IAAI,CAAC;AACL,IAAI,eAAe,EAAE,MAAM;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACnC,QAAQ,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AACrE,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,gBAAgB,EAAE;AACrC,IAAI,CAAC;AACL;AACA;;AAEA,IAAI,WAAW,EAAE,MAAM;AACvB,MAAM,OAAO,KAAK,CAAC,qBAAqB,EAAE;AAC1C,IAAI,CAAC;AACL;AACA,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK;AAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;AACjG,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,GAAG,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AACrD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,UAAU;AACV,UAAU,MAAM,IAAI,KAAK,EAAE;AAC3B,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,aAAa,IAAI;AACrF,MAAM,IAAI,cAAc;AACxB,MAAM,aAAa,GAAG,CAAC,cAAc,GAAG,aAAa,KAAK,IAAI,GAAG,cAAc,GAAG,EAAE;AACpF,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,KAAK,IAAI;AACzB,UAAU,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;AACjE,UAAU,IAAI,iBAAiB,CAAC,WAAW,EAAE;AAC7C,YAAY,OAAO,iBAAiB,CAAC,WAAW;AAChD,UAAU;AACV,UAAU,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAC5C,YAAY,OAAO,iBAAiB,CAAC,EAAE;AACvC,UAAU;AACV,UAAU,OAAO,IAAI;AACrB,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI,EAAE,KAAK,IAAI;AACvB,UAAU,IAAI,qBAAqB,EAAE,kBAAkB;AACvD,UAAU,OAAO,CAAC,qBAAqB,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,kBAAkB,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AACpN,QAAQ,CAAC;AACT,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AACpD,UAAU,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;AACjH,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,GAAG;AACX,OAAO;AACP,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC;AACvE,IAAI,cAAc,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO;AAC/C,IAAI,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,UAAU,IAAI;AACtE,MAAM,MAAM,cAAc,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;AAClE,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,UAAU,KAAK,GAAG,CAAC;AACnB,QAAQ;AACR,QAAQ,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI;AAC3C,UAAU,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACtE,UAAU,MAAM,iBAAiB,GAAG,SAAS;AAC7C,UAAU,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;AACxH,UAAU,OAAO,MAAM;AACvB,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC;AACP,MAAM,OAAO,cAAc,CAAC,UAAU,CAAC;AACvC,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AAChE,IAAI,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,UAAU,IAAI;AACzE,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI;AAC1C,QAAQ,OAAO,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AACpE,IAAI,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,IAAI;AACnF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AACjD,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM;AAC/B,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AACxE,IAAI,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK;AACrH,MAAM,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;AAC7E,MAAM,OAAO,YAAY,CAAC,WAAW,CAAC;AACtC,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AACpE,IAAI,SAAS,EAAE,QAAQ,IAAI;AAC3B,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;AAC7D,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,MAAM,EAAE;AAC5D,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC7E,MAAM;AACN,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AACpC,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;AAChF,EAAE;AACF,EAAE,OAAO,KAAK;AACd;;AAEA,SAAS,eAAe,GAAG;AAC3B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI;AAC3D,IAAI,MAAM,QAAQ,GAAG;AACrB,MAAM,IAAI,EAAE,EAAE;AACd,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,UAAU,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;AACjE,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;AAC5B,QAAQ,KAAK,GAAG,CAAC;AACjB,MAAM;AACN,MAAM,MAAM,IAAI,GAAG,EAAE;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;;AAErK;AACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;AACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACvC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEtB;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;AACtC,UAAU,IAAI,oBAAoB;AAClC,UAAU,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE5E;AACA,UAAU,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,eAAe,KAAK,IAAI,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACnG,YAAY,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACzE,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACpC,IAAI,OAAO,QAAQ;AACnB,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACnG;;AAEA,SAAS,mBAAmB,GAAG;AAC/B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,KAAK;AAC5K,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;AAC7G,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC/B;AACA,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC/B,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AACxE;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE;AAC9B,EAAE,MAAM,YAAY,GAAG,EAAE;AACzB,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI;AAC3B,IAAI,IAAI,YAAY;AACpB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,EAAE;AAC5F,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AACpC,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAClC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC/B,IAAI,QAAQ,EAAE,QAAQ,CAAC;AACvB,GAAG;AACH;;AA6PA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACjH,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACnD,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AACnC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC;AACrB,QAAQ,GAAG,CAAC,QAAQ,GAAG,SAAS;AAChC,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,QAAQ;AACrB,IAAI;;AAEJ;AACA,IAAI,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnF,IAAI,MAAM,eAAe,GAAG,EAAE;AAC9B,IAAI,MAAM,eAAe,GAAG,EAAE;AAC9B;AACA;AACA;AACA;;AAEA;AACA,IAAI,MAAM,kBAAkB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;AAChE,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;AAC5B,QAAQ,KAAK,GAAG,CAAC;AACjB,MAAM;AACN;AACA;AACA,MAAM,IAAI,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC/B,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK;AAC3B,UAAU,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,UAAU,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACvC,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE;AAC3B,YAAY,GAAG,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5E,UAAU;AACV,UAAU,OAAO,GAAG;AACpB,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,MAAM,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC;;AAE9C;AACA,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAElD;AACA,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AAC5F,QAAQ,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,IAAI;AAC/C,QAAQ,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC/C,QAAQ,EAAE,GAAG,QAAQ,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;;AAEhD;AACA,QAAQ,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;AACtE,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;AAClC,UAAU,MAAM,CAAC,QAAQ,GAAG,EAAE;AAC9B,QAAQ,CAAC,CAAC;;AAEV;AACA,QAAQ,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,WAAW;AACzF,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AACjG,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;AAC3B,UAAU,gBAAgB,EAAE,QAAQ;AACpC,UAAU,aAAa;AACvB,UAAU,OAAO;AACjB,UAAU,QAAQ;AAClB,UAAU,QAAQ,EAAE,QAAQ,IAAI;AAChC;AACA,YAAY,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACrD,cAAc,IAAI,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7D,gBAAgB,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACjD,cAAc;AACd,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AAClC,gBAAgB,IAAI,qBAAqB;AACzC,gBAAgB,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,SAAS;AACpJ,cAAc;AACd,cAAc,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC/C,YAAY;AACZ,YAAY,IAAI,GAAG,CAAC,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACnE,cAAc,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACvD,YAAY;;AAEZ;AACA,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpD,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACnF,YAAY,IAAI,WAAW,EAAE;AAC7B,cAAc,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC;AAC/F,cAAc,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACvD,YAAY;AACZ,UAAU;AACV,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;AAClC,UAAU,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,UAAU,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,qBAAqB;AAClC,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI;AAClC,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC;AACN,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,QAAQ,EAAE,eAAe;AAC/B,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM;AAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM;AACvB,MAAM,KAAK,CAAC,kBAAkB,EAAE;AAChC,MAAM,KAAK,CAAC,mBAAmB,EAAE;AACjC,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC,CAAC;AACL;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjC,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAC5B,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACnC,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,CAAC,MAAM;AACX,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE,CAAC,EAAE,QAAQ,CAAC;AACd;;AA6CA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9G,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACvE,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO;AACjD,IAAI,MAAM,cAAc,GAAG,EAAE;;AAE7B;AACA,IAAI,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI;AACzD,MAAM,IAAI,gBAAgB;AAC1B,MAAM,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE;AAC3G,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,EAAE;AAC7B,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,IAAI;AAC1C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAClD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACrC,QAAQ,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;AACrD,QAAQ,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;AACrD,QAAQ,SAAS,EAAE,MAAM,CAAC,YAAY;AACtC,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC7B;AACA;AACA,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1C,QAAQ,GAAG;AACX,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AACtC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,UAAU,IAAI,eAAe;AAC7B,UAAU,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC/C,UAAU,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;AACzD,UAAU,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa;AACxD,UAAU,MAAM,MAAM,GAAG,CAAC,eAAe,GAAG,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,eAAe,GAAG,KAAK;AAC1H,UAAU,IAAI,OAAO,GAAG,CAAC;;AAEzB;AACA,UAAU,IAAI,aAAa,EAAE;AAC7B,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,YAAY,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS;AACnD,YAAY,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS;AACnD,YAAY,IAAI,UAAU,IAAI,UAAU,EAAE;AAC1C,cAAc,IAAI,aAAa,KAAK,OAAO,EAAE,OAAO,UAAU,GAAG,EAAE,GAAG,CAAC;AACvE,cAAc,IAAI,aAAa,KAAK,MAAM,EAAE,OAAO,UAAU,GAAG,CAAC,GAAG,EAAE;AACtE,cAAc,OAAO,GAAG,UAAU,IAAI,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,aAAa,GAAG,CAAC,aAAa;AAClG,YAAY;AACZ,UAAU;AACV,UAAU,IAAI,OAAO,KAAK,CAAC,EAAE;AAC7B,YAAY,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;AACpE,UAAU;;AAEV;AACA,UAAU,IAAI,OAAO,KAAK,CAAC,EAAE;AAC7B,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,OAAO,IAAI,EAAE;AAC3B,YAAY;AACZ,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE;AAC1C,cAAc,OAAO,IAAI,EAAE;AAC3B,YAAY;AACZ,YAAY,OAAO,OAAO;AAC1B,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACtC,MAAM,CAAC,CAAC;;AAER;AACA,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;AAChC,QAAQ,IAAI,YAAY;AACxB,QAAQ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE;AACzE,UAAU,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C,QAAQ;AACR,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,UAAU;AACvB,IAAI,CAAC;AACL,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,MAAM,QAAQ,EAAE,cAAc;AAC9B,MAAM,QAAQ,EAAE,QAAQ,CAAC;AACzB,KAAK;AACL,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACzG;;ACl8GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;AAEA;AACA;AACA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AACjC,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI;AACrG;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,iBAAiB,CAAC,SAAS,CAAC;AACvG;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,OAAO,SAAS,KAAK,UAAU,IAAI,CAAC,MAAM;AACnD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;AAClD,IAAI,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB;AAC9D,EAAE,CAAC,GAAG;AACN;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE;AACtC,EAAE,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AAChK;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,KAAK,EAAE,EAAE;AACb;AACA,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3B;AACA,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,GAAG;AACP,GAAG;;AAEH;AACA,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO;AAC3C,IAAI,OAAO,EAAE,WAAW,CAAC,eAAe;AACxC,GAAG,CAAC,CAAC;;AAEL;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;;AAE/E;AACA;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK;AACvC,IAAI,GAAG,IAAI;AACX,IAAI,GAAG,OAAO;AACd,IAAI,KAAK,EAAE;AACX,MAAM,GAAG,KAAK;AACd,MAAM,GAAG,OAAO,CAAC;AACjB,KAAK;AACL;AACA;AACA,IAAI,aAAa,EAAE,OAAO,IAAI;AAC9B,MAAM,QAAQ,CAAC,OAAO,CAAC;AACvB,MAAM,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACrE,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,QAAQ,CAAC,OAAO;AACzB;;;;;;ACjBA,MAAM,kBAAkB,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,mBAAA,GAAsB,EAAA,CAAG,SAAA,EAAWA,QAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAS,mBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,mBAAA;AAAA,MAEV;AAAA;AAAA,GACH;AAEJ,CAAA;AASA,MAAM,gBAAgB,CAAC;AAAA,EACrB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,mBAAA,GAAsB,EAAA,CAAG,SAAA,EAAWA,QAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAS,iBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,mBAAA;AAAA,MACX,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,QAAA;AAAA,MACf,IAAA,EAAM,aAAa,UAAA,GAAa,MAAA;AAAA,MAE/B;AAAA;AAAA,GACH;AAEJ,CAAA;AAUO,MAAM,YAAY,CAAC,EAAE,IAAA,EAAM,GAAG,MAAK,KAAsB;AAC9D,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,IAAA,EAAM,CAAA;AAAA,EACpC;AAEA,EAAA,IAAI,UAAA,IAAc,IAAA,IAAQ,UAAA,IAAc,IAAA,EAAM;AAC5C,IAAA,uBACE,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,UAAU,IAAA,CAAK;AAAA;AAAA,KACjB;AAAA,EAEJ;AACF,CAAA;;ACpHO,MAAM,sBAAA,GAAyB,CAAI,MAAA,KAAqC;AAC7E,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAY;AAEpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,aAAa,MAAA,GAAS,CAAA,EAAG,OAAO,QAAA,CAAS,MAAM,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAC7D,KAAA,EAAO,aAAa,OAAA,GAAU,CAAA,EAAG,OAAO,QAAA,CAAS,OAAO,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAChE,QAAA,EAAU,WAAW,QAAA,GAAW,UAAA;AAAA,IAChC,KAAA,EAAO,CAAA,wBAAA,EAA2B,MAAA,CAAO,QAAA,EAAU,CAAA,aAAA,CAAA;AAAA,IACnD,MAAA,EAAQ,WAAW,CAAA,GAAI;AAAA,GACzB;AACF,CAAA;;ACVO,MAAM,uBAAA,GAA0B,CACrC,MAAA,KACuB;AACvB,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAY;AACpC,EAAA,MAAM,sBAAA,GACJ,QAAA,KAAa,MAAA,IAAU,MAAA,CAAO,gBAAgB,MAAM,CAAA;AACtD,EAAA,MAAM,wBAAA,GACJ,QAAA,KAAa,OAAA,IAAW,MAAA,CAAO,iBAAiB,OAAO,CAAA;AAEzD,EAAA,IAAI,sBAAA,EAAwB;AAC1B,IAAA,OAAOA,SAAO,yBAAyB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,wBAAA,EAA0B;AAC5B,IAAA,OAAOA,SAAO,2BAA2B,CAAA;AAAA,EAC3C;AACF,CAAA;;;;;;ACUO,SAAS,UAAU,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAmB;AACrE,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,YAAY,CAAA,EAAG,KAAK,SAAS,CAAA;AACvD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAE9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACbO,MAAM,gBAAA,GAAmB,aAAA;AAAA,EAC9B;AACF,CAAA;;AC3BO,SAAS,mBAAA,GAAsB;AACpC,EAAA,MAAM,OAAA,GAAU,WAAW,gBAAgB,CAAA;AAC3C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;;ACwBO,MAAM,aAAA,GAAgB,UAAA,CAG3B,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,YAAA,EAAc,YAAA,EAAc,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AAC7E,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,iBAAiB,GAAG,SAAA,EAAW;AAAA,IACvD,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,YAAA;AAAA,IACxC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG;AAAA,GACzC,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MAEC,GAAA;AAAA,MACA,UAAA,EAAS,iBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;;AC7D5B,MAAM,OAAO,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,+MAA+M,EAAE,CAAC,CAAC;;;;;;;;;;ACQza,MAAM,gCAAgC,MAAM;AACjD,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAKC,OAAA;AAAA,MACL,IAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAM,QAAA;AAAA,MACN,SAAA,EAAWD,SAAO,gCAAgC,CAAA;AAAA,MAClD,YAAA,EAAW;AAAA;AAAA,GACb;AAEJ,CAAA;;ACNO,MAAM,cAAc,CAAI;AAAA,EAC7B,YAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAiD;AAC/C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAY,YAAY,CAAA;AAC1D,EAAA,MAAM,YAAA,GAAe,OAAU,YAAY,CAAA;AAC3C,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,mBAAA,EAAoB;AAExB,EAAA,MAAM,qBAAA,GAAwB,WAAA;AAAA,IAC5B,CAACE,UAAAA,KAAuB;AACtB,MAAA,YAAA,CAAaA,UAAS,CAAA;AACtB,MAAA,gCAAA,CAAiCA,UAAS,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,CAAC,gCAAgC;AAAA,GACnC;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,KAAa;AAChD,IAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,CAAC,cAAA,EAAgB;AAEnB,MAAA,eAAA,EAAgB;AAChB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,SAAA,CAAU,YAAY,CAAA;AAAA,MACxB,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AAEL,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,SAAA,CAAU,YAAY,CAAA;AAAA,MACxB,CAAC,CAAA;AAAA,IACH;AAAA,EACF,GAAG,CAAC,YAAA,EAAc,SAAA,EAAW,cAAA,EAAgB,eAAe,CAAC,CAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,KAAA,KAAa;AACZ,MAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AACrB,MAAA,qBAAA,CAAsB,KAAK,CAAA;AAC3B,MAAA,eAAA,EAAgB;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,KAAA,EAAO,eAAA,EAAiB,qBAAqB;AAAA,GAC1D;AAEA,EAAA,MAAM,SAAA,GAA+C,YAAY,MAAM;AACrE,IAAA,UAAA,CAAW,aAAa,OAAO,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,UAAA,GAAiD,YAAY,MAAM;AACvE,IAAA,YAAA,CAAa,YAAY,CAAA;AACzB,IAAA,qBAAA,CAAsB,KAAK,CAAA;AAC3B,IAAA,eAAA,EAAgB;AAAA,EAClB,CAAA,EAAG,CAAC,YAAA,EAAc,eAAA,EAAiB,qBAAqB,CAAC,CAAA;AAEzD,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,SAAA,EAAW;AAEf,IAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,SAAA,EAAW,qBAAqB,CAAC,CAAA;AAErC,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA4C;AAC3C,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,IAAA,EAAM;AAC/C,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,SAAA,EAAU;AAAA,QACZ,CAAA,MAAO;AACL,UAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,QAC5B;AAAA,MACF;AACA,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,UAAA,EAAW;AAAA,MACb;AAAA,IACF,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,qBAAqB;AAAA,GAC1D;AAEA,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,OAAO;AAAA,MACL,SAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACV,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAO,WAAA;AACT,CAAA;;;;;;;;;;AClGO,MAAM,4BAA4B,CAAC;AAAA,EACxC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAsC;AACpC,EAAA,MAAM,EAAE,WAAW,SAAA,EAAW,eAAA,EAAiB,SAAS,SAAA,EAAW,MAAA,KACjE,WAAA,CAAoB;AAAA,IAClB,YAAA,EAAc,KAAA;AAAA,IACd,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAE9C,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,aAAA,EAAc,GAAI,SAAA;AAExC,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,CAAA,KAA2C;AAC1C,MAAA,eAAA,CAAgB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,OAAA,GAAU,EAAA,CAAG,SAAA,EAAWF,QAAA,CAAO,+BAA+B,CAAA,EAAG;AAAA,IACrE,CAACG,QAAA,CAAoB,8BAA8B,CAAC,GAAG;AAAA,GACxD,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,aAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,OAAA;AAAA,MACA,SAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,SAAA,mBACC,GAAA,CAAA,QAAA,EAAA,EACE,QAAA,kBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,SAAA,EAAWH,SAAO,4BAA4B,CAAA;AAAA,YAC9C,GAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV;AAAA;AAAA,SACF,EACF,oBAEA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,CAAC,SAAA,oBAAa,GAAA,CAAC,6BAAA,EAAA,EAA8B;AAAA,SAAA,EAChD,CAAA;AAAA,wBAEF,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,SAAA,GACG,8BAAA,GACA,+DAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;;AC1DO,MAAM,8BAA8B,CAAC;AAAA,EAC1C,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAAwC;AACtC,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,WAAA,CAAoB;AAAA,IACtB,YAAA,EAAc,KAAA;AAAA,IACd,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,aAAA,EAAc,GAAI,SAAA;AAExC,EAAA,MAAM,WAAA,GAAc,EAAA;AAAA,IAClBA,SAAO,+BAA+B,CAAA;AAAA,IACtCA,SAAO,6BAA6B,CAAA;AAAA,IACpC,SAAA;AAAA,IACA,EAAE,CAACG,QAAA,CAAoB,8BAA8B,CAAC,GAAG,SAAA;AAAU,GACrE;AAEA,EAAA,MAAM,aAAA,GAAgB,CACpB,CAAA,EACA,SAAA,KACG;AACH,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,CAAC,SAAA,EAAW;AACvC,MAAA,SAAA,GAAY,CAAC,CAAA;AACb,MAAA;AAAA,IACF;AAEA,IAAA,SAAA,GAAY,CAAC,CAAA;AACb,IAAA,SAAA,GAAY,CAAC,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAGC,IAAA,EAAM,SAAA;AAAA,QACN,cAAA,EAAgB,SAAA;AAAA,QAChB,SAAS,CAAC;AAAA,UACR,GAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAW,gBAAA;AAAA,UACX,GAAG;AAAA,SACL,KAAM;AACJ,UAAA,uBACE,IAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACE,GAAG,aAAA;AAAA,cACJ,SAAA,EAAW,WAAA;AAAA,cACX,OAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACE,GAAG,IAAA;AAAA,oBACJ,GAAA,EAAK,UAAA;AAAA,oBACL,SAAA,EAAWH,SAAO,qCAAqC,CAAA;AAAA,oBACvD,SAAA,EAAW,CAAC,CAAA,KAAM,aAAA,CAAc,GAAG,MAAM,gBAAA,GAAmB,CAAC,CAAC,CAAA;AAAA,oBAE7D;AAAA;AAAA,iBACH;AAAA,gBACC,CAAC,SAAA,oBAAa,GAAA,CAAC,6BAAA,EAAA,EAA8B;AAAA;AAAA;AAAA,WAChD;AAAA,QAEJ,CAAA;AAAA,QAEC,QAAA,EAAA,SAAA,IACC,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS;AACpB,UAAA,uBACE,GAAA;AAAA,YAAC,IAAA,CAAK,IAAA;AAAA,YAAL;AAAA,cAEC,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,SAAS,MAAM;AACb,gBAAA,eAAA,CAAgB,KAAK,KAAK,CAAA;AAC1B,gBAAA,SAAA,EAAU;AAAA,cACZ,CAAA;AAAA,cACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,gBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,CAAA,CAAE,QAAQ,IAAA,EAAM;AACxC,kBAAA,UAAA,EAAW;AAAA,gBACb;AAAA,cACF;AAAA,aAAA;AAAA,YAVK,IAAA,CAAK;AAAA,WAWZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACL;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,SAAA,GACG,4EAAA,GACA,uCAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;AC3FO,MAAM,mCAAmC,CAAC;AAAA,EAC/C,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAA6C;AAC3C,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,WAAA,CAAsB;AAAA,IACxB,YAAA,EAAc,KAAA;AAAA,IACd,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,cAAA,GAAiB,OAAyB,IAAI,CAAA;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,WAAA,GAAc,OAAyB,IAAI,CAAA;AAEjD,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,aAAA,EAAc,GAAI,SAAA;AAExC,EAAA,MAAM,WAAA,GAAc,EAAA,CAAGA,QAAA,CAAO,6BAA6B,GAAG,SAAA,EAAW;AAAA,IACvE,CAACG,QAAA,CAAoB,8BAA8B,CAAC,GAAG;AAAA,GACxD,CAAA;AAED,EAAA,MAAM,iBAAiB,OAAA,CAAQ,MAAA;AAAA,IAAO,CAAC,IAAA,KACrC,SAAA,CAAU,QAAA,CAAS,KAAK,KAAK;AAAA,GAC/B;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAC3B,CAAA,EACA,SAAA,KACG;AACH,IAAA,SAAA,GAAY,CAAC,CAAA;AACb,IAAA,SAAA,GAAY,CAAC,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,WAAA;AAAA,IAC5B,CAAC,CAAA,KAAqC;AACpC,MAAA,IAAK,CAAA,CAAE,QAAQ,KAAA,IAAS,CAAC,EAAE,QAAA,IAAa,CAAA,CAAE,QAAQ,IAAA,EAAM;AACtD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,SAAA,EAAU;AAAA,MACZ;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,UAAA,EAAW;AACX,QAAA,cAAA,CAAe,EAAE,CAAA;AAAA,MACnB;AACA,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,CAAA,CAAE,QAAQ,SAAA,EAAW;AAChD,QAAA,CAAA,CAAE,cAAA,EAAe;AAAA,MACnB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAW,UAAU;AAAA,GACxB;AAEA,EAAA,MAAM,wBAAA,GAA2B,WAAA;AAAA,IAC/B,CAAC,CAAA,KAAuC;AACtC,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,UAAA,EAAW;AACX,QAAA,cAAA,CAAe,EAAE,CAAA;AAAA,MACnB;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,WAAA,CAAY,SAAS,KAAA,EAAM;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,6BAAA,GAAgC,WAAA;AAAA,IACpC,CAACC,MAAAA,KAAqB;AACpB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,eAAA;AAAA,UAEIA,MAAAA,CAKA,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK;AAAA,SAC5B;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,iBAAiB,SAAS;AAAA,GAC7B;AAEA,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM;AAClC,IAAA,IAAI,WAAA,KAAgB,IAAI,OAAO,OAAA;AAC/B,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MAAO,CAAC,SACrB,IAAA,CAAK,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,WAAA,CAAY,WAAA,EAAa;AAAA,KAC7D;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,WAAW,CAAC,CAAA;AAEzB,EAAA,MAAM,oBAAA,GAAuB,YAAY,MAAM;AAC7C,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,SAAA,EAAU;AACV,MAAA,cAAA,CAAe,EAAE,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAEzB,EAAA,MAAM,2BAAA,GAA8B,YAAY,MAAM;AACpD,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,cAAA,CAAe,SAAS,KAAA,EAAM;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,uBAAA,GAA0B,WAAA;AAAA,IAC9B,CAAC,CAAA,KAAqC;AACpC,MAAA,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,SAAA;AAAA,QACN,uBAAA,EAAyB,2BAAA;AAAA,QACzB,cAAA,EAAgB,oBAAA;AAAA,QAChB,SAAA,EAAU,cAAA;AAAA,QACV,YAAA,EAAY,IAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAA,CAAQ,OAAA,EAAR,EACE,QAAA,EAAA,CAAC,EAAE,GAAA,EAAK,UAAA,EAAY,SAAA,EAAW,gBAAA,EAAkB,GAAG,IAAA,EAAK,KAAM;AAC9D,YAAA,uBACE,GAAA;AAAA,cAAC,aAAA;AAAA,cAAA;AAAA,gBACE,GAAG,aAAA;AAAA,gBACJ,SAAA,EAAW,WAAA;AAAA,gBACX,OAAA;AAAA,gBAEA,QAAA,kBAAA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACE,GAAG,IAAA;AAAA,oBACJ,GAAA,EAAK,UAAA;AAAA,oBACL,SAAA,EAAWJ,SAAO,qCAAqC,CAAA;AAAA,oBACvD,SAAA,EAAW,CAAC,CAAA,KACV,oBAAA,CAAqB,GAAG,MAAM,gBAAA,GAAmB,CAAC,CAAC,CAAA;AAAA,oBAGpD;AAAA;AAAA;AACH;AAAA,aACF;AAAA,UAEJ,CAAA,EACF,CAAA;AAAA,0BACA,GAAA,CAAC,QAAQ,OAAA,EAAR,EACC,+BAAC,IAAA,EAAA,EAAK,GAAA,EAAI,GAAA,EAAI,SAAA,EAAU,QAAA,EACtB,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,cAAA;AAAA,gBACL,QAAA,EAAU,uBAAA;AAAA,gBACV,SAAA,EAAW;AAAA;AAAA,aACb;AAAA,4BACA,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,eAAA,EAAiB,cAAA;AAAA,gBACjB,SAAA,EAAW,qBAAA;AAAA,gBACX,KAAA,EAAO,aAAA;AAAA,gBACP,iBAAA,EAAmB,6BAAA;AAAA,gBACnB,GAAA,EAAK,WAAA;AAAA,gBAEJ,WAAC,EAAE,KAAA,EAAM,KACR,KAAA,CAAM,IAAI,CAAC,IAAA,qBACT,GAAA,CAAC,QAAA,CAAS,QAAT,EAAgB,IAAA,EACd,eAAK,KAAA,EAAA,EAD0B,IAAA,CAAK,KAEvC,CACD;AAAA;AAAA;AAEL,WAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,SAAA,GACG,sDAAA,GACA,uCAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;AC1KA,SAAS,yBAA4B,KAAA,EAAkC;AACrE,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAE9C,EAAA,MAAM,eAAe,mBAAA,EAAoB;AAGzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,YAAA,CAAa,YAAA,CAAa;AAAA,QACxB,QAAA,EAAU,YAAA;AAAA,QACV,SAAS,UAAA,CAAW,OAAA;AAAA,QACpB,QAAA,EAAU;AAAA,OACX,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,YAAA,CAAa,eAAe,YAAY,CAAA;AAAA,MAC1C,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,QAAA;AAGrB,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,CAAC,aAAa,cAAA,EAAgB;AAEhC,MAAA,YAAA,CAAa,eAAA,EAAgB;AAC7B,MAAA,YAAA,CAAa,UAAU,YAAY,CAAA;AAAA,IAIrC,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AACtB,MAAA,YAAA,CAAa,UAAU,YAAY,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAA,EAAc,UAAU,CAAC,CAAA;AAE3C,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,eAAA,CAAgB,YAAY,CAAA;AAE1D,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,sBAAsB,CAAA,EAAG,KAAK,SAAA,EAAW;AAAA,IACjE,CAACA,QAAA,CAAO,8BAA8B,CAAC,GACrC,cAAc,eAAA,KAAoB;AAAA,GACrC,CAAA;AAED,EAAA,MAAM,eAAA,GAAqE;AAAA,IACzE,IAAA,EAAM,YAAA;AAAA,IACN,GAAG,IAAA;AAAA,IACH,SAAA,EAAW,OAAA;AAAA,IACX,GAAA,EAAK,UAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,eAAA;AAAA,QACX,YAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QAEN;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,IAAI,aAAa,QAAA,EAAU;AACzB,IAAA,uBACE,GAAA;AAAA,MAAC,2BAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,eAAA;AAAA,QACX,YAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,OAAA;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,IAAI,aAAa,aAAA,EAAe;AAC9B,IAAA,uBACE,GAAA;AAAA,MAAC,gCAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,eAAA;AAAA,QACX,YAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,OAAA;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBAAO,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,eAAA,EAAkB,QAAA,EAAS,CAAA;AACvD;AAEO,MAAM,iBAAA,GAAoBK,OAAK,wBAAwB,CAAA;;;;;;;;;ACxJvD,MAAM,uBAAuB,CAAK;AAAA,EACvC;AACF,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,mBAAA,EAAoB;AAC3C,EAAA,OAAO,KAAA,CAAM,aAAY,CAAE,IAAA,CAAK,IAAI,CAAC,GAAA,EAAK,WAAA,qBACxC,IAAA,CAACC,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,eAAA,EAAe,WAAA,GAAc,KAAA,CAAM,eAAA,GAAkB,MAAA,GAAS,CAAA;AAAA,QAC9D,iBACE,UAAA,IAAc,GAAA,CAAI,cAAa,GAAI,GAAA,CAAI,eAAc,GAAI,MAAA;AAAA,QAE3D,YAAA,EACE,UAAA,KACC,GAAA,CAAI,YAAA,EAAa,IAAK,GAAA,CAAI,YAAA,EAAa,EAAG,YAAA,EAAa,CAAA,GACpD,GAAA,CAAI,KAAA,GAAQ,CAAA,GACZ,MAAA;AAAA,QAEN,SAAA,EAAWN,SAAO,qBAAqB,CAAA;AAAA,QAEtC,QAAA,EAAA,GAAA,CAAI,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AACnC,UAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,MAAA,CAAO,MAAA,GACpC,KAAK,MAAA,CAAO,MAAA,CAAO,cAAA,EAAe,CAAE,MAAM,EAAE,CAAA,CAAE,CAAC,CAAA,KAAM,KAAK,MAAA,GAC1D,KAAA;AAEJ,UAAA,MAAM,WAAA,GAAc,EAAA,CAAG,uBAAA,CAAwB,IAAA,CAAK,MAAM,CAAA,EAAG;AAAA,YAC3D,CAACA,QAAA,CAAO,4BAA4B,CAAC,GACnC,SAAA,IAAa,IAAA,CAAK,MAAA,CAAO,SAAA,IACxB,IAAA,CAAK,MAAA,CAAO,MAAA,IAAU;AAAA,WAC1B,CAAA;AACD,UAAA,uBACE,GAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cAEC,eAAA,EAAe,IAAA,CAAK,MAAA,CAAO,QAAA,EAAS,GAAI,CAAA;AAAA,cACxC,SAAA,EAAW,WAAA;AAAA,cACX,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,CAAA,wBAAA,EAA2B,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,aAAA,CAAA;AAAA,gBAC3D,GAAG,sBAAA,CAAuB,IAAA,CAAK,MAAM;AAAA,eACvC;AAAA,cACA,QAAA,EAAU,KAAK,MAAA,CAAO,EAAA;AAAA,cACtB,YAAA,EAAc;AAAA,gBACZ,QAAA,EAAU,WAAA,GAAc,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAAA,gBAChD,WAAA,EAAa,IAAA,CAAK,MAAA,CAAO,QAAA;AAAS,eACpC;AAAA,cACA,QAAA,EAAU,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,QAAA;AAAA,cACtC,SAAA,EAAW,IAAA,CAAK,UAAA,EAAW,CAAE,QAAA,EAAS;AAAA,cACtC,QAAA,EAAU,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,QAAA;AAAA,cACtC,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,OAAA;AAAA,cACrC,OAAO,GAAA,CAAI,EAAA;AAAA,cACX,YAAA,EAAc,IAAA,CAAK,MAAA,CAAO,EAAA,KAAO,0BAAA;AAAA,cACjC,YAAA,EAAc,IAAA,CAAK,MAAA,CAAO,EAAA,KAAO,0BAAA;AAAA,cAEhC,qBAAW,IAAA,CAAK,MAAA,CAAO,UAAU,IAAA,EAAM,IAAA,CAAK,YAAY;AAAA,aAAA;AAAA,YApBpD,IAAA,CAAK;AAAA,WAqBZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,IACC,GAAA,CAAI,aAAA,EAAc,IACjB,cAAA,IAAmB,IAAI,QAAA,oBACrB,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,cAAA,CAAA;AAAA,QACb,aAAA,EAAa,CAAC,GAAA,CAAI,aAAA,EAAc;AAAA,QAChC,SAAA,EAAWA,SAAO,qBAAqB,CAAA;AAAA,QAEvC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWA,QAAA,CAAO,yCAAyC,CAAA,EAC9D,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAWA,SAAO,uCAAuC,CAAA,EAC3D,QAAA,EAAA,GAAA,CAAI,QAAA,CAAyB,cACjC,CAAA,EACF;AAAA;AAAA;AACF,GAAA,EAAA,EAhES,GAAA,CAAI,EAkEnB,CACD,CAAA;AACH,CAAA;AAEO,SAAS,cAAiB,KAAA,EAA8B;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,GAAG,IAAA,EAAK,GAAI,KAAA;AAC3B,EAAA,uBACE,GAAA,CAAC,aAAU,IAAA,EAAK,YAAA,EAAc,GAAG,IAAA,EAC/B,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAc,CAAA,EACtC,CAAA;AAEJ;;ACxGO,MAAM,eAAA,GAAkB,CAAC,OAAA,EAAiB,SAAA,KAA8B;AAC7E,EAAA,IAAI,QAAA,GAAW,2BAA2B,SAAS,CAAA,aAAA,CAAA;AACnD,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AAAA,MACtB,EAAE,QAAQ,OAAA,EAAQ;AAAA,MAClB,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,mBAAA,EAAsB,YAAY,CAAC,CAAA,MAAA;AAAA,KAC/C;AACA,IAAA,QAAA,GAAW,CAAA,MAAA,EAAS,SAAA,CAAU,IAAA,CAAK,KAAK,CAAC,CAAA,QAAA,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,QAAA;AACT,CAAA;;;;;ACeO,SAAS,YAAY,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAqB;AACzE,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,cAAc,CAAA,EAAG,KAAK,SAAS,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAE9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACNO,MAAM,eAAA,GAAkB,UAAA,CAG7B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE/C,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,GAAG,SAAS,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MAEC,GAAA;AAAA,MACA,UAAA,EAAS,mBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;;ACtCvB,SAAS,oBAAoB,KAAA,EAAiC;AACnE,EAAA,MAAM,EAAE,YAAA,EAAc,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEvD,EAAA,MAAM,aAAA,GAAgB,OAAuB,IAAI,CAAA;AAEjD,EAAA,MAAM,eAAe,mBAAA,EAAoB;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,YAAA,CAAa,YAAA,CAAa;AAAA,QACxB,QAAA,EAAU,YAAA;AAAA,QACV,SAAS,aAAA,CAAc,OAAA;AAAA,QACvB,QAAA,EAAU;AAAA,OACX,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,YAAA,CAAa,eAAe,YAAY,CAAA;AAAA,MAC1C,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AAEpC,IAAA,IAAI,CAAC,aAAa,cAAA,EAAgB;AAChC,MAAA,YAAA,CAAa,eAAA,EAAgB;AAC7B,MAAA,YAAA,CAAa,UAAU,YAAY,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,eAAA,CAAgB,YAAY,CAAA;AAE1D,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,aAAA;AAAA,MACL,QAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,wBAAwB,GAAG,SAAS,CAAA;AAAA,MAExD;AAAA;AAAA,GACH;AAEJ;;;;;;;ACXA,SAAS,sBAAA,CAA0B;AAAA,EACjC,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AAEjC,EAAA,MAAM,cAAA,GAAiB,CACrB,IAAA,EACA,EAAA,KAC6B;AAC7B,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,GAAA,CAAI,OAAO,EAAA,EAAI;AACjB,QAAA,OAAO,GAAA;AAAA,MACT;AACA,MAAA,IAAI,IAAI,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,EAAG;AAC7C,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,EAAE,CAAA;AAC5C,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAAiC;AACzD,IAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,EAAG;AACvC,MAAA,UAAA,GAAa,OAAO,aAAA,CAAc,MAAA;AAAA,IACpC,CAAA,MAAA,IAAW,OAAO,aAAA,EAAe;AAC/B,MAAA,UAAA,GAAa,CAAA;AAAA,IACf;AAGA,IAAA,IAAI,OAAO,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,QACrB,GAAG,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,SAAA,KAAc,gBAAA,CAAiB,SAAS,CAAC,CAAA;AAAA,QAChE;AAAA,OACF;AACA,MAAA,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,SAAS,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA;AAAA,IACzB,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,IACnD;AAAA,GACF;AAEA,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,eAAc,EAAG,CAAC,GAAG,QAAA,qBAC/C,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,IAAA,EAAK,KAAA;AAAA,MACL,UAAA,EAAS,kBAAA;AAAA,MACT,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,MACzC,eAAA,EACE,QAAA,GACA,KAAA,CAAM,eAAA,EAAgB,CAAE,SACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA,GACzB,CAAA;AAAA,MAGD,QAAA,EAAA,KAAA,CACE,cAAA,EAAe,CACf,MAAA,CAAO,CAAC,MAAA,KAAW;AAClB,QAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,EAAS,MAAA,CAAO,OAAO,EAAE,CAAA;AAEvD,QAAA,OAAO,CAAC,MAAA,EAAQ,OAAA,IAAW,MAAA,CAAO,QAAQ,MAAA,KAAW,CAAA;AAAA,MACvD,CAAC,CAAA,CACA,GAAA,CAAI,CAAC,MAAA,KAAW;AACf,QAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,EAAS,MAAA,CAAO,OAAO,EAAE,CAAA;AAEvD,QAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,aAAa,CAAA,EAAG;AACxC,UAAA,aAAA,GAAgB,MAAA,CAAO,aAAA,CAAc,QAAQ,CAAA,IAAK,IAAA;AAAA,QACpD,CAAA,MAAA,IAAW,MAAA,EAAQ,aAAA,IAAiB,QAAA,KAAa,CAAA,EAAG;AAClD,UAAA,aAAA,GAAgB,MAAA,CAAO,aAAA;AAAA,QACzB;AAEA,QAAA,uBACE,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,uBAAA,CAAwB,MAAA,CAAO,MAAM,CAAA;AAAA,YAChD,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,CAAA,wBAAA,EAA2B,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA,aAAA,CAAA;AAAA,cAC7D,GAAG,sBAAA,CAAuB,MAAA,CAAO,MAAM;AAAA,aACzC;AAAA,YACA,YAAA,EAAc;AAAA,cACZ,QAAA,EACE,WACA,KAAA,CAAM,eAAA,GAAkB,MAAA,GACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAAA,cAC3B,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,QAAA;AAAS,aACtC;AAAA,YAEC,QAAA,EAAA;AAAA,WAAA;AAAA,UAdI,MAAA,CAAO;AAAA,SAed;AAAA,MAEJ,CAAC;AAAA,KAAA;AAAA,IA/CE,cAAc,QAAQ,CAAA;AAAA,GAiD9B,CAAA;AACH;AAEA,SAAS,qBAAA,CAAyB;AAAA,EAChC,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,OAAO,YAAA,EAAc,GAAA,CAAI,CAAC,SAAA,EAAW,QAAA,KAAa;AAChD,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,KAAA;AAAA,QACL,UAAA,EAAS,kBAAA;AAAA,QACT,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,QACzC,eAAA,EACE,QAAA,GACA,KAAA,CAAM,eAAA,EAAgB,CAAE,SACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA,GACzB,CAAA;AAAA,QAGA,QAAA,EAAA,CAAA,MAAM;AACN,UAAA,IAAI,kBAAA,GAAqB,CAAA;AACzB,UAAA,OAAO,MAAM,IAAA,CAAK;AAAA,YAChB,MAAA;AAAA;AAAA,cAEE,WAAA;AAAA,cAEA,SAAA,CAAU,OAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,cAErD,SAAA,CAAU;AAAA;AAAA,WACb,CAAA,CAAE,GAAA,CAAI,CAAC,GAAG,KAAA,KAAU;AACnB,YAAA,MAAM,MAAA,GAAS,UAAU,KAAK,CAAA,IAAK,EAAE,OAAA,EAAS,EAAA,EAAI,SAAS,CAAA,EAAE;AAC7D,YAAA,MAAM,QAAA,GAAW,eAAA;AAAA,cACf,MAAA,CAAO,OAAA;AAAA,cACP;AAAA,aACF;AAEA,YAAA,MAAM,IAAA,mBACJ,GAAA;AAAA,cAAC,mBAAA;AAAA,cAAA;AAAA,gBAEC,SAAS,MAAA,CAAO,OAAA;AAAA,gBAChB,KAAA,EAAO;AAAA,kBACL;AAAA,iBACF;AAAA,gBACA,YAAA,EAAc;AAAA,kBACZ,QAAA,EACE,WACA,KAAA,CAAM,eAAA,GAAkB,MAAA,GACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAAA,kBAC3B,WAAA,EAAa;AAAA,iBACf;AAAA,gBAEC,QAAA,EAAA,MAAA,CAAO;AAAA,eAAA;AAAA,cAbH;AAAA,aAcP;AAIF,YAAA,kBAAA,IAAsB,MAAA,CAAO,OAAA;AAE7B,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AAAA,QACH,CAAA;AAAG,OAAA;AAAA,MApDE;AAAA,KAqDP;AAAA,EAEJ,CAAC,CAAA;AACH;AASO,SAAS,eAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,cAAA,EAAe,CAAE,MAAA;AAC3C,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,CAAA,EAAG,KAAK,SAAS,CAAA;AAE9D,EAAA,uBACE,GAAA,CAAC,eAAY,IAAA,EAAK,YAAA,EAAc,GAAG,IAAA,EAAM,SAAA,EAAW,SACjD,QAAA,EAAA,YAAA,mBACC,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEA,GAAA,CAAC,sBAAA,EAAA,EAAuB,KAAA,EAAc,SAAkB,CAAA,EAE5D,CAAA;AAEJ;;ACzNO,SAAS,oBAAA,CAAwB;AAAA,EACtC;AAAA;AAEF,CAAA,EAAyD;AACvD,EAAA,MAAM,eAAe,kBAAA,EAAsB;AAG3C,EAAA,IAAI,SAAA,CAAU,OAAA,IAAW,SAAA,CAAU,OAAA,CAAQ,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,aAAa,KAAA,CAAM;AAAA,MACxB,IAAI,SAAA,CAAU,EAAA;AAAA,MACd,QAAQ,SAAA,CAAU,WAAA;AAAA,MAClB,OAAA,EAAS,UAAU,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,WAC9B,oBAAA,CAAwB;AAAA,UACtB,SAAA,EAAW;AAAA,SACZ;AAAA,OACH;AAAA,MACA,MAAA,EAAQ,SAAA,CAAU,aAAA,GACd,MAAM,UAAU,aAAA,GAChB,MAAA;AAAA,MACJ,gBAAgB,SAAA,CAAU;AAAA,KAC3B,CAAA;AAAA,EACH;AAGA,EAAA,OAAO,aAAa,QAAA,CAAS,CAAC,QAAW,GAAA,CAAI,SAAA,CAAU,EAAE,CAAA,EAAG;AAAA,IAC1D,IAAI,SAAA,CAAU,EAAA;AAAA,IACd,IAAA,EAAM,CAAC,IAAA,KAAkC;AACvC,MAAA,IAAI,UAAU,UAAA,EAAY;AACxB,QAAA,MAAM,cAAc,SAAA,CAAU,UAAA;AAAA,UAC5B,KAAK,QAAA,EAAS;AAAA,UACd,KAAK,GAAA,CAAI;AAAA,SACX;AACA,QAAA,uBACE,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,gBAAgB,SAAA,CAAU,KAAA;AAAA,YAC1B,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO;AAAA,cACL,KAAA,EAAO;AAAA,aACT;AAAA,YAEC,QAAA,EAAA,WAAA,wBAAgB,qBAAA,EAAA,EAAsB;AAAA;AAAA,SACzC;AAAA,MAEJ;AACA,MAAA,uBACE,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,gBAAgB,SAAA,CAAU,KAAA;AAAA,UAC1B,IAAA,EAAK,MAAA;AAAA,UACL,KAAA,EAAO;AAAA,YACL,KAAA,EAAO;AAAA,WACT;AAAA,UAEE,QAAA,EAAA,IAAA,CAAK,QAAA,EAAS,oBAAmB,GAAA,CAAC,qBAAA,EAAA,EAAsB;AAAA;AAAA,OAC5D;AAAA,IAEJ,CAAA;AAAA,IACA,MAAA,EAAQ,sBACN,GAAA,CAAC,IAAA,EAAA,EAAK,cAAA,EAAgB,SAAA,CAAU,KAAA,EAAO,IAAA,EAAK,MAAA,EAAO,IAAA,EAAM,CAAA,EACtD,QAAA,EAAA,SAAA,CAAU,WAAA,EACb,CAAA;AAAA,IAEF,MAAA,EAAQ,SAAA,CAAU,aAAA,GAAgB,MAAM,UAAU,aAAA,GAAgB,MAAA;AAAA,IAClE,SAAS,SAAA,CAAU,QAAA;AAAA,IACnB,SAAS,SAAA,CAAU,QAAA;AAAA,IACnB,gBAAgB,SAAA,CAAU,SAAA;AAAA,IAC1B,aAAA,EAAe,CAAC,CAAC,SAAA,CAAU,QAAA;AAAA,IAC3B,IAAA,EAAM;AAAA,MACJ,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,SAAS,SAAA,CAAU;AAAA,KACrB;AAAA;AAAA,IAGA,GAAI,SAAA,CAAU,QAAA,IAAY,OAAO,SAAA,CAAU,aAAa,UAAA,GACpD;AAAA,MACE,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,KAAA,KAAU;AAChC,QAAA,IAAI,OAAO,SAAA,CAAU,QAAA,KAAa,UAAA,EAAY;AAC5C,UAAA,OAAO,SAAA,CAAU,QAAA;AAAA,YACf,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,YACnB,IAAA,CAAK,SAAS,KAAK;AAAA,WACrB;AAAA,QACF;AACA,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,KACF,GACA;AAAA,GACL,CAAA;AACH;;ACrHO,MAAM,cAAA,GAAiB,CAAI,EAAE,KAAA,EAAM,KAAmC;AAC3E,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,MAAA,KAAsB;AAC1D,IAAA,IAAI,MAAA,CAAO,OAAA,EAAS,MAAA,GAAS,CAAA,EAAG;AAC9B,MAAA,OAAO,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,CAAA;AAAA,IAC/C;AACA,IAAA,OAAO,CAAC,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,MAAM,OAAiB,EAAC;AACxB,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,KAAA,CAAM,aAAA,EAAc,CAAE,OAAA,CAAQ,CAAC,MAAA,KAAW;AACxC,MAAA,IAAI,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,EAAQ;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACvC,CAAA,MAAA,IAAW,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA,EAAS;AAC3C,QAAA,KAAA,CAAM,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACzC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,KAAA,EAAO,gBAAgB,CAAC,CAAA;AAE5B,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF,CAAA;;ACIO,MAAM,mBAAmB,CAAI;AAAA,EAClC,cAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,wBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAgC;AAC9B,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA+B;AAC9B,MAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,WAAA,IAAe,6BAAA;AACrC,QAAA;AAGF,MAAA,MAAM,cAAA,GAAiB,WAAW,WAAW,CAAA;AAC7C,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AACvD,MAAA,MAAM,sBACJ,WAAA,IACA,wBAAA,CAAyB,WAAA,CAAY,OAAO,KAC5C,QAAA,CAAS,aAAA,IACT,WAAA,CAAY,OAAA,CAAQ,SAAS,QAAA,CAAS,aAAa,CAAA,IACnD,QAAA,CAAS,kBAAkB,WAAA,CAAY,OAAA;AAGzC,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,KAAA,IAAS,mBAAA,EAAqB;AAE9C,QAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA;AAAA,MACF;AAGA,MAAA,IACE,iBACC,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,YAAA,CAAA,EAC5C;AACA,QAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAC/C,QAAA,MAAM,YAAA,GAAe,YAAY,QAAA,GAAW,cAAA;AAG5C,QAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA;AACjC,UAAA,MAAM,UAAA,GAAa,KAAK,YAAY,CAAA;AAEpC,UAAA,IAAI,UAAA,EAAY;AACd,YAAA,MAAM,SAAA,GAAY,WAAW,YAAA,EAAa;AAC1C,YAAA,MAAM,UAAA,GAAa,WAAW,aAAA,EAAc;AAG5C,YAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,YAAA,IAAgB,SAAA,IAAa,CAAC,UAAA,EAAY;AAE1D,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,UAAA,CAAW,0BAAyB,EAAE;AAGtC,cAAA,UAAA,CAAW,MAAM;AACf,gBAAA,SAAA,CAAU,WAAW,CAAA;AAAA,cACvB,CAAC,CAAA;AACD,cAAA;AAAA,YACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,aAAa,UAAA,EAAY;AAE/D,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,UAAA,CAAW,0BAAyB,EAAE;AAGtC,cAAA,UAAA,CAAW,MAAM;AACf,gBAAA,SAAA,CAAU,WAAW,CAAA;AAAA,cACvB,CAAC,CAAA;AACD,cAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,SAAA,GAAqD,IAAA;AAEzD,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,SAAA;AACH,UAAA,SAAA,GAAY,IAAA;AACZ,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,SAAA,GAAY,MAAA;AACZ,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,SAAA,GAAY,MAAA;AACZ,UAAA;AAAA,QACF,KAAK,YAAA;AACH,UAAA,SAAA,GAAY,OAAA;AACZ,UAAA;AAAA,QACF,KAAK,MAAA,EAAQ;AAEX,UAAA,SAAA,CAAU,EAAE,GAAG,WAAA,EAAa,aAAa,WAAA,CAAY,CAAC,GAAG,CAAA;AACzD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AAEV,UAAA,SAAA,CAAU;AAAA,YACR,GAAG,WAAA;AAAA,YACH,WAAA,EAAa,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC;AAAA,WAChD,CAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,MAAMO,eAAAA,GAAiB,WAAW,WAAW,CAAA;AAC7C,UAAA,MAAMC,YAAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAID,eAAc,CAAA;AAEvD,UAAA,IAAIC,YAAAA,EAAa;AAEf,YAAA,IAAIA,YAAAA,CAAY,QAAA,IAAYA,YAAAA,CAAY,cAAA,EAAgB;AACtD,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAAA,YAAAA,CAAY,eAAe,KAAK,CAAA;AAChC,cAAA;AAAA,YACF;AAEA,YAAA,MAAM,eAAA,GAAkB,wBAAA;AAAA,cACtBA,YAAAA,CAAY;AAAA,aACd;AACA,YAAA,IAAI,eAAA,EAAiB;AACnB,cAAA,KAAA,CAAM,cAAA,EAAe;AAGrB,cAAA,MAAM,eAAA,GAAkB,EAAE,GAAG,WAAA,EAAY;AAGzC,cAAA,eAAA,CAAgB,KAAA,EAAM;AAGtB,cAAA,UAAA,CAAW,MAAM;AACf,gBAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAID,eAAc,CAAA;AAC1D,gBAAA,IAAI,cAAA,EAAgB;AAClB,kBAAA,MAAM,mBAAA,GAAsB,wBAAA;AAAA,oBAC1B,cAAA,CAAe;AAAA,mBACjB;AACA,kBAAA,IAAI,mBAAA,EAAqB;AACvB,oBAAA,mBAAA,CAAoB,KAAA,EAAM;AAAA,kBAC5B,CAAA,MAAO;AAEL,oBAAA,cAAA,CAAe,QAAQ,KAAA,EAAM;AAAA,kBAC/B;AAEA,kBAAA,IACE,aAAa,QAAA,KAAa,eAAA,CAAgB,YAC1C,WAAA,EAAa,WAAA,KAAgB,gBAAgB,WAAA,EAC7C;AACA,oBAAA,cAAA,CAAe,eAAe,CAAA;AAAA,kBAChC;AAAA,gBACF;AAAA,cACF,CAAC,CAAA;AAED,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QACA;AACE,UAAA;AAAA;AAGJ,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,WAAA,EAAa,SAAS,CAAA;AAChE,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,SAAA,CAAU,YAAY,CAAA;AAAA,QACxB;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,wBAAA;AAAA,MACA,iBAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,KAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAO,EAAE,aAAA,EAAc;AACzB,CAAA;;AClOO,MAAM,oBAAoB,CAAI;AAAA,EACnC,KAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,MAAM,cAAA,GAAiB,OAAO,KAAK,CAAA;AACnC,EAAA,MAAM,mBAAmB,MAAA,EAAe;AAExC,EAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAW,GAAI,QAAQ,MAAM;AAC9C,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,MAAM,gBAAA,EAAiB;AAAA,MAClC,UAAA,EAAY,MAAM,iBAAA;AAAkB,KACtC;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,YAAA,CAAa,UAAU,CAAA,KAAM,iBAAA;AAExD,IAAA,MAAM,kBAAkB,OAAA,CAAQ,OAAA;AAAA,MAC9B;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GACJ,eAAA,CAAgB,gBAAA,CAAiB,mBAAmB,EAAE,CAAC,CAAA;AACzD,IAAA,MAAM,aAAA,GACJ,eAAA,CAAgB,gBAAA,CAAiB,mBAAmB,EAAE,CAAC,CAAA;AAEzD,IAAA,MAAM,gBAAA,GAAmB;AAAA,MACvB,YAAA,EAAc,aAAA,CAAc,qBAAA,EAAsB,CAAE,MAAA;AAAA,MACpD,YAAA,EAAc,aAAA,GACV,aAAA,CAAc,qBAAA,GAAwB,MAAA,GACtC,CAAA;AAAA,MACJ,SAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAEzB,MAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,QAAA,YAAA,CAAa,iBAAiB,OAAO,CAAA;AAAA,MACvC;AAEA,MAAA,gBAAA,CAAiB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AACjD,QAAA,cAAA,CAAe,OAAA,GAAU,KAAA;AAAA,MAC3B,GAAG,GAAG,CAAA;AAAA,IACR,CAAA;AAEA,IAAA,eAAA,CAAgB,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAEvD,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,CAAC,KAAK,CAAA,KAAM;AACX,QAAA,IAAI,CAAC,KAAA,CAAM,cAAA,IAAkB,CAAC,eAAe,OAAA,EAAS;AACpD,UAAA,MAAM,mBAAA,GAAsB,gBAAgB,qBAAA,EAAsB;AAClE,UAAA,MAAM,kBAAkB,MAAM;AAE5B,YAAA,IACE,MAAM,kBAAA,CAAmB,CAAA,GACzB,mBAAA,CAAoB,CAAA,GAAI,iBAAiB,SAAA,EACzC;AACA,cAAA,OACE,CAAC,gBAAA,CAAiB,SAAA,GAClB,KAAA,CAAM,kBAAA,CAAmB,IACzB,mBAAA,CAAoB,CAAA;AAAA,YAExB;AAEA,YAAA,IACE,KAAA,CAAM,kBAAA,CAAmB,CAAA,GAAI,KAAA,CAAM,kBAAA,CAAmB,KAAA,GACtD,mBAAA,CAAoB,CAAA,GAClB,mBAAA,CAAoB,KAAA,GACpB,gBAAA,CAAiB,UAAA,EACnB;AACA,cAAA,OACE,OAAA,CAAQ,UAAA,IACP,CAAC,UAAA,GAAa,oBAAoB,CAAA,GAAI,CAAA,CAAA;AAAA,cACvC,KAAA,CAAM,mBAAmB,KAAA,GACzB,mBAAA,CAAoB,IACpB,mBAAA,CAAoB,KAAA,GACpB,eAAA,CAAgB,UAAA,GAChB,gBAAA,CAAiB,UAAA;AAAA,YAErB;AACA,YAAA,OAAO,CAAA;AAAA,UACT,CAAA;AAEA,UAAA,MAAM,iBAAiB,MAAM;AAC3B,YAAA,IAAI,CAAC,YAAY,OAAO,CAAA;AAExB,YAAA,IACE,MAAM,kBAAA,CAAmB,CAAA,GACzB,mBAAA,CAAoB,CAAA,GAAI,iBAAiB,YAAA,EACzC;AACA,cAAA,OACE,CAAC,gBAAA,CAAiB,YAAA,GAClB,KAAA,CAAM,kBAAA,CAAmB,IACzB,mBAAA,CAAoB,CAAA;AAAA,YAExB;AAEA,YAAA,IACE,KAAA,CAAM,kBAAA,CAAmB,CAAA,GAAI,KAAA,CAAM,kBAAA,CAAmB,MAAA,GACtD,mBAAA,CAAoB,CAAA,GAClB,mBAAA,CAAoB,MAAA,GACpB,gBAAA,CAAiB,YAAA,EACnB;AACA,cAAA,OACE,OAAA,CAAQ,SAAA,GACR,KAAA,CAAM,kBAAA,CAAmB,MAAA,GACzB,mBAAA,CAAoB,CAAA,GACpB,mBAAA,CAAoB,MAAA,GACpB,eAAA,CAAgB,SAAA,GAChB,gBAAA,CAAiB,YAAA;AAAA,YAErB;AACA,YAAA,OAAO,CAAA;AAAA,UACT,CAAA;AAEA,UAAA,eAAA,CAAgB,QAAA,CAAS;AAAA,YACvB,MAAM,eAAA,EAAgB;AAAA,YACtB,KAAK,cAAA,EAAe;AAAA,YACpB,QAAA,EAAU;AAAA,WACX,CAAA;AAAA,QACH;AAAA,MACF,CAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM,eAAA;AAAA,QACN,UAAA,EAAY,CAAA,CAAA,EAAI,gBAAA,CAAiB,YAAY,CAAA,IAAA,EAAO,gBAAA,CAAiB,UAAU,CAAA,IAAA,EAAO,gBAAA,CAAiB,YAAY,CAAA,IAAA,EAAO,gBAAA,CAAiB,SAAS,CAAA;AAAA,MAAA,CAAA;AAAA,QAEpJ,SAAA,EAAW;AAAA;AACb,KACF;AACA,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAExB,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AACpB,MAAA,eAAA,CAAgB,mBAAA,CAAoB,UAAU,YAAY,CAAA;AAC1D,MAAA,IAAI,cAAA,CAAe,OAAA,EAAS,cAAA,CAAe,OAAA,GAAU,KAAA;AACrD,MAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,QAAA,YAAA,CAAa,iBAAiB,OAAO,CAAA;AACrC,QAAA,gBAAA,CAAiB,OAAA,GAAU,MAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,SAAA,EAAW,UAAU,CAAC,CAAA;AACrC,CAAA;;AC1IO,MAAM,kBAAA,GAAqB,CAChC,KAAA,EACA,YAAA,GAAwB,KAAA,KACrB;AACH,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAA8B,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1D,EAAA,MAAM,CAAC,6BAAA,EAA+B,gCAAgC,CAAA,GACpE,SAAS,KAAK,CAAA;AAChB,EAAA,MAAM,QAAA,GAAW,MAAA,iBAAmC,IAAI,GAAA,EAAK,CAAA;AAC7D,EAAA,MAAM,QAAA,GAAW,OAAuB,IAAI,CAAA;AAE5C,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,QAAA,KAA2B;AACzD,IAAA,OAAO,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,CAAA,EAAI,SAAS,WAAW,CAAA,CAAA;AAAA,EACrD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC;AAAA,MACC,QAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX;AAAA,KACF,KAAyB;AACvB,MAAA,MAAM,GAAA,GAAM,WAAW,QAAQ,CAAA;AAC/B,MAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,GAAA,EAAK;AAAA,QACxB,QAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,QAAA,KAA2B;AAC1B,MAAA,MAAM,GAAA,GAAM,WAAW,QAAQ,CAAA;AAC/B,MAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,OAAO,KAAA,CAAM,gBAAe,CAAE,MAAA;AAAA,EAChC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,CAAe,EAAE,OAAO,CAAA;AAGhD,EAAA,MAAM,oBAAA,GAAuB,WAAA;AAAA,IAC3B,CACE,iBACA,SAAA,KACwB;AACxB,MAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,MAAA,IAAI,cAAc,eAAA,CAAgB,QAAA;AAClC,MAAA,IAAI,iBAAiB,eAAA,CAAgB,WAAA;AAErC,MAAA,QAAQ,SAAA;AAAW,QACjB,KAAK,IAAA;AACH,UAAA,WAAA,GAAc,gBAAgB,QAAA,GAAW,CAAA;AACzC,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,WAAA,GAAc,gBAAgB,QAAA,GAAW,CAAA;AACzC,UAAA;AAAA,QACF,KAAK,MAAA;AAAA,QACL,KAAK,OAAA,EAAS;AAEZ,UAAA,MAAM,qBAAqB,WAAA,CAAY,OAAA;AAAA,YACrC,eAAA,CAAgB;AAAA,WAClB;AAEA,UAAA,IAAI,uBAAuB,EAAA,EAAI;AAE7B,YAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,cAAA,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAA,CAAgB,cAAc,CAAC,CAAA;AAAA,YAC9D,CAAA,MAAO;AACL,cAAA,cAAA,GAAiB,IAAA,CAAK,GAAA;AAAA,gBACpB,YAAA,GAAe,CAAA;AAAA,gBACf,gBAAgB,WAAA,GAAc;AAAA,eAChC;AAAA,YACF;AAAA,UACF,CAAA,MAAO;AAEL,YAAA,IAAI,iBAAA;AACJ,YAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,cAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,kBAAA,GAAqB,CAAC,CAAA;AAAA,YACxD,CAAA,MAAO;AACL,cAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA;AAAA,gBACvB,YAAY,MAAA,GAAS,CAAA;AAAA,gBACrB,kBAAA,GAAqB;AAAA,eACvB;AAAA,YACF;AACA,YAAA,cAAA,GAAiB,YAAY,iBAAiB,CAAA;AAAA,UAChD;AACA,UAAA;AAAA,QACF;AAAA;AAGF,MAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,SAAA,KAAc,MAAA,EAAQ;AAC9C,QAAA,IAAI,cAAc,CAAA,EAAG;AACnB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,YAAY,UAAA,CAAW;AAAA,UAC3B,QAAA,EAAU,WAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACd,CAAA;AACD,QAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA;AAEjD,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAGA,MAAA,IACE,WAAA,KAAgB,eAAA,CAAgB,QAAA,IAChC,cAAA,KAAmB,gBAAgB,WAAA,EACnC;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAO,EAAE,QAAA,EAAU,WAAA,EAAa,WAAA,EAAa,cAAA,EAAe;AAAA,IAC9D,CAAA;AAAA,IACA,CAAC,eAAA,EAAiB,UAAA,EAAY,WAAW;AAAA,GAC3C;AAGA,EAAA,MAAM,wBAAA,GAA2B,WAAA;AAAA,IAC/B,CAAC,WAAA,KAAiD;AAChD,MAAA,MAAM,oBAAoB,WAAA,CAAY,gBAAA;AAAA,QACpC;AAAA,OACF;AAEA,MAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAClC,QAAA,OAAO,kBAAkB,CAAC,CAAA;AAAA,MAC5B;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,kBAAA,KAAqC;AACpC,MAAA,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,CAAC,IAAA,EAAM,GAAA,KAAQ;AACtC,QAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAI,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzD,QAAA,MAAM,aAAA,GACJ,QAAA,KAAa,kBAAA,CAAmB,QAAA,IAChC,gBAAgB,kBAAA,CAAmB,WAAA;AAErC,QAAA,MAAM,eAAA,GAAkB,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA;AAE7D,QAAA,IAAI,eAAA,EAAiB;AAEnB,UAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,GAAW,aAAA,GAAgB,CAAA,GAAI,EAAA;AAC5C,UAAA,eAAA,CAAgB,QAAA,GAAW,EAAA;AAAA,QAC7B,CAAA,MAAO;AAEL,UAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,GAAW,aAAA,GAAgB,CAAA,GAAI,EAAA;AAAA,QAC9C;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,wBAAwB;AAAA,GAC3B;AAGA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAkC,MAAS,CAAA;AACzE,EAAA,iBAAA,CAAkB,EAAE,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,CAAA;AAE7C,EAAA,MAAM,4BAAA,GAA+B,WAAA;AAAA,IACnC,CAAC,MAAqB,QAAA,KAA2B;AAC/C,MAAA,cAAA,CAAe,QAAQ,CAAA;AAEvB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,mBAAA,CAAoB,QAAQ,CAAA;AAG5B,QAAA,MAAM,eAAA,GAAkB,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA;AAC7D,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,eAAA,CAAgB,KAAA,EAAM;AAAA,QACxB,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,QACrB;AACA,QAAA,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,MACzB,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,qBAAqB,wBAAwB;AAAA,GAChD;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,QAAA,KAA2B;AAC1B,MAAA,MAAM,GAAA,GAAM,WAAW,QAAQ,CAAA;AAC/B,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAErC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,4BAAA,CAA6B,MAAM,QAAQ,CAAA;AAAA,MAC7C,CAAA,MAAO;AAEL,QAAA,qBAAA,CAAsB,MAAM;AAC1B,UAAA,MAAM,SAAA,GAAY,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC1C,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,4BAAA,CAA6B,WAAW,QAAQ,CAAA;AAAA,UAClD;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,4BAA4B;AAAA,GAC3C;AAGA,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,gBAAA,CAAiB;AAAA,IACzC,cAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,MAAM,mBAAA,GAAsB,EAAE,QAAA,EAAU,CAAA,EAAG,aAAa,CAAA,EAAE;AAG1D,IAAA,MAAM,GAAA,GAAM,WAAW,mBAAmB,CAAA;AAC1C,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAErC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,4BAAA,CAA6B,MAAM,mBAAmB,CAAA;AAAA,IACxD;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,4BAA4B,CAAC,CAAA;AAE7C,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,QAAA,KAAmC;AAElC,MAAA,MAAM,GAAA,GAAM,WAAW,QAAQ,CAAA;AAC/B,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AACrC,MAAA,IAAI,IAAA,EAAM;AAER,QAAA,OAAO,KAAK,OAAA,CAAQ,QAAA;AAAA,MACtB;AAGA,MAAA,IAAI,CAAC,cAAA,EAAgB;AAEnB,QAAA,OAAO,SAAS,QAAA,KAAa,CAAA,IAAK,QAAA,CAAS,WAAA,KAAgB,IAAI,CAAA,GAAI,EAAA;AAAA,MACrE;AAEA,MAAA,IAAI,CAAC,WAAA,EAAa;AAEhB,QAAA,OAAO,SAAS,QAAA,KAAa,CAAA,IAAK,QAAA,CAAS,WAAA,KAAgB,IAAI,CAAA,GAAI,EAAA;AAAA,MACrE;AAGA,MAAA,OAAO,WAAA,CAAY,aAAa,QAAA,CAAS,QAAA,IACvC,YAAY,WAAA,KAAgB,QAAA,CAAS,cACnC,CAAA,GACA,EAAA;AAAA,IACN,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,WAAA,EAAa,UAAU;AAAA,GAC1C;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,6BAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;;AC1RO,SAAS,wBAAA,CAA4B;AAAA,EAC1C,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAwB,IAAI,CAAA;AAE1E,EAAA,MAAM,eAAA,GAAkB,kBAAA,CAAmB,KAAA,EAAO,UAAU,CAAA;AAE5D,EAAA,MAAM,6BAAA,GAAgC,WAAA;AAAA,IACpC,CAAC,QAAA,KAA4B;AAE3B,MAAA,MAAM,iBAAiB,QAAA,CAAS,aAAA;AAAA,QAC9B;AAAA,OACF;AAGA,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,kBAAA,CAAmB,QAAQ,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO;AAAA,MACL,eAAA;AAAA,MACA,kBAAA,EAAoB,6BAAA;AAAA,MACpB,aAAa,eAAA,CAAgB,WAAA;AAAA,MAC7B,gBAAgB,eAAA,CAAgB,cAAA;AAAA,MAChC,cAAc,eAAA,CAAgB,YAAA;AAAA,MAC9B,gBAAgB,eAAA,CAAgB,cAAA;AAAA,MAChC,iBAAiB,eAAA,CAAgB,eAAA;AAAA,MACjC,eAAe,eAAA,CAAgB,aAAA;AAAA,MAC/B,iBAAiB,eAAA,CAAgB,eAAA;AAAA,MACjC,iBAAiB,eAAA,CAAgB,eAAA;AAAA,MACjC,WAAW,eAAA,CAAgB,SAAA;AAAA,MAC3B,+BACE,eAAA,CAAgB,6BAAA;AAAA,MAClB,kCACE,eAAA,CAAgB,gCAAA;AAAA,MAClB;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,eAAA;AAAA,MACA,6BAAA;AAAA,MACA,eAAA,CAAgB,WAAA;AAAA,MAChB,eAAA,CAAgB,cAAA;AAAA,MAChB,eAAA,CAAgB,YAAA;AAAA,MAChB,eAAA,CAAgB,cAAA;AAAA,MAChB,eAAA,CAAgB,eAAA;AAAA,MAChB,eAAA,CAAgB,aAAA;AAAA,MAChB,eAAA,CAAgB,eAAA;AAAA,MAChB,eAAA,CAAgB,eAAA;AAAA,MAChB,eAAA,CAAgB,SAAA;AAAA,MAChB,eAAA,CAAgB,6BAAA;AAAA,MAChB,eAAA,CAAgB,gCAAA;AAAA,MAChB;AAAA;AACF,GACF;AAEA,EAAA,2BACG,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,cAC/B,QAAA,EACH,CAAA;AAEJ;;ACjGA,MAAM,cAAc,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,4KAA4K,EAAE,CAAC,CAAC;;ACApZ,MAAM,gBAAgB,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iLAAiL,EAAE,CAAC,CAAC;;;;;;AC8BpZ,SAAS,YAAY,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAqB;AACzE,EAAA,MAAM,UAAU,EAAA,CAAGP,QAAA,CAAO,cAAc,CAAA,EAAG,KAAK,SAAS,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAC9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACQO,MAAM,eAAA,GAAkB,UAAA;AAAA,EAI7B,CACE;AAAA,IACE,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,GAAG,SAAA,EAAW;AAAA,MACzD,CAACA,QAAA,CAAO,yBAAyB,CAAC,GAAG,OAAA;AAAA,MACrC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,UAAA;AAAA,MACxC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,YAAA;AAAA,MACxC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG;AAAA,KACzC,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,IAAA,uBACE,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QAEC,GAAA;AAAA,QACA,UAAA,EAAS,mBAAA;AAAA,QACR,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,cAAA;AAAA,QAErC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;ACjEvB,SAAS,oBAAuB,KAAA,EAAoC;AACzE,EAAA,MAAM,EAAE,YAAA,EAAc,QAAA,EAAU,QAAQ,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE/D,EAAA,MAAM,aAAA,GAAgB,OAAuB,IAAI,CAAA;AAEjD,EAAA,MAAM,eAAe,mBAAA,EAAoB;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,MAAM,cAAA,GAAiB,OAAO,MAAA,CAAO,SAAA,CAAU,gBAC3C,MAAA,CAAO,MAAA,CAAO,yBAAwB,GACtC,MAAA;AAEJ,MAAA,YAAA,CAAa,YAAA,CAAa;AAAA,QACxB,QAAA,EAAU,YAAA;AAAA,QACV,SAAS,aAAA,CAAc,OAAA;AAAA,QACvB,QAAA,EAAU,IAAA;AAAA,QACV;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAM;AACX,QAAA,YAAA,CAAa,eAAe,YAAY,CAAA;AAAA,MAC1C,CAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAA,EAAc,YAAA,EAAc,MAAA,CAAO,MAAM,CAAC,CAAA;AAE9C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AAEpC,IAAA,IAAI,CAAC,aAAa,cAAA,EAAgB;AAChC,MAAA,YAAA,CAAa,eAAA,EAAgB;AAC7B,MAAA,YAAA,CAAa,UAAU,YAAY,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,aAAA,EAAe;AAEzC,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,MAAM,eAAe,MAAA,CAAO,OAAA;AAAA,UAC1B;AAAA,SACF;AAGA,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA;AAAA,QACF;AAGA,QAAA,MAAA,CAAO,MAAA,CAAO,uBAAA,EAAwB,GAAI,KAAK,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAO,MAAM;AAAA,GAChB;AAEA,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,eAAA,CAAgB,YAAY,CAAA;AAE1D,EAAA,uBACE,IAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,aAAA;AAAA,MACL,QAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,wBAAwB,GAAG,SAAS,CAAA;AAAA,MACzD,WAAA,EACE,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,KAAA,GAC5B,WAAA,GACA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,GAC9B,YAAA,GACA,MAAA;AAAA,MAGP,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,aAAA,yBACtB,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,KAAA,GAC7B,mBAAA,GACA,OAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,GAC9B,oBAAA,GACA,aAAA;AAAA,UAAe,GAAA;AAAA,UAAI;AAAA,SAAA,EAE3B;AAAA;AAAA;AAAA,GAEJ;AAEJ;;;;;;;;AC/FO,SAAS,YAAA,CAAgB,EAAE,MAAA,EAAO,EAAyB;AAChE,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,eAAe,CAAA,EAAG;AAAA,IAC1C,CAACA,QAAA,CAAO,UAAU,CAAC,GAAG,MAAA,CAAO,OAAO,aAAA;AAAc,GACnD,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MAEL,QAAA,EAAU,EAAA;AAAA,MACV,aAAA,EAAe,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,EAAU;AAAA,MAC7C,WAAA,EAAa,OAAO,gBAAA,EAAiB;AAAA,MACrC,YAAA,EAAc,OAAO,gBAAA,EAAiB;AAAA,MACtC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAW,eAAA;AAAA,MACX,cAAA,EAAc,MAAA,CAAO,MAAA,CAAO,aAAA,EAAc;AAAA,MAC1C,sBAAA,EAAqB;AAAA;AAAA,GACvB;AAEJ;;;;;;ACNO,SAAS,eAAA,CAAmB,EAAE,KAAA,EAAM,EAA4B;AACrE,EAAA,MAAM,EAAE,kBAAA,EAAmB,GAAI,mBAAA,EAAoB;AAEnD,EAAA,uBACE,GAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,YAAA,EACf,QAAA,EAAA,KAAA,CAAM,iBAAgB,CAAE,GAAA,CAAI,CAAC,WAAA,EAAa,KAAA,qBACzC,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,MACzC,IAAA,EAAK,KAAA;AAAA,MACL,iBAAe,KAAA,GAAQ,CAAA;AAAA,MAEtB,QAAA,EAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACnC,QAAA,MAAM,mBAAA,GAAsB,MAAA,CAAO,MAAA,CAAO,MAAA,GACtC,OAAO,MAAA,CAAO,MAAA,CAAO,cAAA,EAAe,CAAE,MAAM,EAAE,CAAA,CAAE,CAAC,CAAA,KACjD,OAAO,MAAA,GACP,KAAA;AAEJ,QAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,0BAAA;AACvB,QAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,0BAAA;AAEvB,QAAA,MAAM,QAAA,GAAW,eAAA;AAAA,UACf,MAAA,CAAO,OAAA;AAAA,UACP,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,MAAA,GAAS,IAC5B,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,GAClC,MAAA,CAAO,OAAO,QAAA;AAAS,SAC7B;AAEA,QAAA,uBACE,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,OAAO,UAAA,EAAW;AAAA,YAE1B,SAAA,EAAW,uBAAA,CAAwB,MAAA,CAAO,MAAM,CAAA;AAAA,YAChD,KAAA,EAAO;AAAA,cACL,QAAA;AAAA,cACA,GAAG,sBAAA,CAAuB,MAAA,CAAO,MAAM;AAAA,aACzC;AAAA,YACA,gBAAc,MAAA,CAAO,OAAA;AAAA,YACrB,OAAA,EACE,SAAA,IAAa,MAAA,CAAO,MAAA,CAAO,SAAA,IAC1B,OAAO,UAAA,EAAW,CAAE,MAAA,CAAO,MAAA,CAAO,MAAA,IACjC,mBAAA;AAAA,YAEJ,UAAA,EAAY,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,aAAA;AAAA,YACpC,YAAA,EAAc,sBAAA;AAAA,YACd,YAAA,EAAc,sBAAA;AAAA,YACd,YAAA,EACE,0BAA0B,sBAAA,GACtB,MAAA,GACA,MAAM,kBAAA,CAAmB,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,YAE/C,cACE,sBAAA,IAA0B,sBAAA,GACtB,MAAA,GACA,MAAM,mBAAmB,IAAI,CAAA;AAAA,YAEnC,YAAA,EAAc;AAAA,cACZ,QAAA,EAAU,KAAA;AAAA,cACV,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,QAAA;AAAS,aACtC;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO,gBAAgB,IAAA,mBACtB,IAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,KAAA;AAAA,gBACV,UAAA,EAAW,UAAA;AAAA,gBACX,GAAA,EAAK,CAAA;AAAA,gBACL,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO;AAAA,iBACT;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,IAAA,CAAC,IAAA,EAAA,EAAK,WAAU,KAAA,EAAM,UAAA,EAAW,UAAS,GAAA,EAAK,CAAA,EAAG,MAAM,CAAA,EACrD,QAAA,EAAA;AAAA,oBAAA,UAAA;AAAA,sBACC,MAAA,CAAO,OAAO,SAAA,CAAU,MAAA;AAAA,sBACxB,OAAO,UAAA;AAAW,qBACpB;AAAA,oBACC;AAAA,sBACC,qBAAK,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKS,cAAA,EAAiB,MAAK,OAAA,EAAQ,CAAA;AAAA,sBAC9C,sBAAM,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKC,gBAAA,EAAmB,MAAK,OAAA,EAAQ;AAAA,qBACnD,CAAE,MAAA,CAAO,MAAA,CAAO,WAAA,EAAuB,CAAA,IAAK;AAAA,mBAAA,EAC9C,CAAA;AAAA,kBACC,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,oBACvB,GAAA,CAAC,gBAAa,MAAA,EAAgB;AAAA;AAAA;AAAA;AAElC,WAAA;AAAA,UApDG,MAAA,CAAO;AAAA,SAsDd;AAAA,MAEJ,CAAC;AAAA,KAAA;AAAA,IAlFI,WAAA,CAAY;AAAA,GAoFpB,CAAA,EACH,CAAA;AAEJ;;;;;;;;AC/FO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA,GAAa,SAAA;AAAA,MACb,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,wBAAA,GAA2B,EAAA,CAAG,SAAA,EAAWV,QAAA,CAAO,iBAAiB,CAAA,EAAG;AAAA,MACxE,CAACA,QAAA,CAAO,WAAW,CAAC,GAAG,UAAA,KAAe;AAAA,KACvC,CAAA;AACD,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,aAAA;AAAA,QACP,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,wBAAA;AAAA,QACX,UAAA,EAAS,iBAAA;AAAA,QAET,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWA,SAAO,wBAAwB,CAAA;AAAA,YAC1C,UAAA,EAAS,wBAAA;AAAA,YAER;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;AC1DtB,MAAM,kBAAA,GAAqB,UAAA,CAGhC,CAAC,EAAE,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACtE,EAAA,MAAM,eAAe,mBAAA,EAAoB;AAEzC,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA4C;AAC/D,IAAA,OAAA,GAAU,KAAK,CAAA;AAGf,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AACxC,MAAA,YAAA,CAAa,eAAA,EAAgB;AAAA,IAC/B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA4C;AAC9D,IAAA,MAAA,GAAS,KAAK,CAAA;AAEd,IAAA,IAAI,CAAC,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,aAAqB,CAAA,EAAG;AAC9D,MAAA,YAAA,CAAa,eAAA,EAAgB;AAAA,IAC/B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA+C;AACpE,IAAA,SAAA,GAAY,KAAK,CAAA;AACjB,IAAA,YAAA,CAAa,cAAc,KAAK,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,UAAU,QAAA,IAAY,CAAA;AAAA,MACtB,OAAA,EAAS,WAAA;AAAA,MACT,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA,EAAW,aAAA;AAAA,MAEV;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;;;;;;ACzC1B,MAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA,GAAY,IAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAgC;AAC9B,EAAA,MAAM,EAAE,gCAAA,EAAiC,GAAI,mBAAA,EAAoB;AAEjE,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,gCAAA,CAAiC,IAAI,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,gCAAgC,CAAC,CAAA;AAErC,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,gCAAA,CAAiC,KAAK,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,gCAAgC,CAAC,CAAA;AAErC,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWA,SAAO,YAAY,CAAA;AAAA,MAC7B,GAAG,KAAA;AAAA,MACJ,SAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,MAAA,EAAQ;AAAA;AAAA,GACV;AAEJ,CAAA;;;;;;;;;;AChCO,MAAM,YAAA,GAAe,CAAK,aAAA,KAAkC;AACjE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAmB,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,KAAK,CAAA;AACxC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,IAAI,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAe,WAAA,GAAc;AAC3B,MAAA,IAAI,yBAAyB,OAAA,EAAS;AACpC,QAAA,YAAA,CAAa,IAAI,CAAA;AACjB,QAAA,IAAI;AACF,UAAA,MAAM,OAAO,MAAM,aAAA;AACnB,UAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACpB,SAAS,MAAA,EAAQ;AACf,UAAA,QAAA,CAAS,IAAI,CAAA;AACb,UAAA,YAAA,CAAa,KAAK,CAAA;AAClB,UAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,aAAa,CAAA;AAC7B,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,IAAI,EAAE,yBAAyB,OAAA,CAAA,EAAU;AACvC,IAAA,OAAO,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,WAAW,KAAA,EAAM;AAAA,EAC/D;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAU;AAChD,CAAA;;AC+IO,SAAS,UAAa,KAAA,EAA0B;AACrD,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,WAAA;AAAA,IACT,UAAA,GAAa,SAAA;AAAA,IACb,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AACJ,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAClC,4BAAA,CAAgD;AAAA,IAC9C,eAAA,EACE,YAAA,IAAgB,cAAA,GACZ,MAAA,CAAO,YAAY,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAA,GACzD,MAAA;AAAA,IACN,cAAc,YAAA,GACV,qBAAA,GACE,MAAA,CAAO,WAAA,CAAY,sBAAsB,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAChE,KACF,EAAC;AAAA,IACL,QAAA,EAAU,CAAC,eAAA,KAAoB;AAC7B,MAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,eAAe,CAAwB,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,4BAAA,CAA2C;AAAA,IACvE,eAAA,EAAiB,YAAA,GAAe,CAAC,YAAY,CAAA,GAAI,MAAA;AAAA,IACjD,YAAA,EAAc,mBAAA,GAAsB,CAAC,mBAAmB,CAAA,GAAI,MAAA;AAAA,IAC5D,QAAA,EAAU,CAAC,UAAA,KAAe;AACxB,MAAA,MAAA,GAAS,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,IACxB;AAAA,GACD,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,UAAA;AACtB,EAAA,MAAM,gBAAA,GACJ,OAAO,UAAA,KAAe,QAAA,GAAW,UAAA,GAAa,MAAA;AAChD,EAAA,MAAM,WAAA,GAAc,kBAAkB,WAAA,IAAe,EAAA;AAErD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1C,4BAAA,CAAqC;AAAA,IACnC,iBAAiB,gBAAA,EAAkB,gBAAA;AAAA,IACnC,YAAA,EAAc,kBAAkB,gBAAA,IAAoB,CAAA;AAAA,IACpD,QAAA,EAAU,CAAC,YAAA,KAAiB;AAC1B,MAAA,gBAAA,EAAkB,eAAe,YAAY,CAAA;AAAA,IAC/C;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,aAAa,gBAAA,EAAkB,YAAA;AACrC,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAC,UAAA,IAAc,OAAO,UAAA,KAAe,UAAA;AAE/D,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAM;AAC/B,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,OAAO,UAAA,CAAW;AAAA,MAChB,WAAW,gBAAA,IAAoB,CAAA;AAAA,MAC/B,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EAEH,GAAG,CAAC,gBAAA,EAAkB,gBAAA,EAAkB,WAAA,EAAa,QAAQ,CAAC,CAAA;AAE9D,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,YAAA;AAAA;AAAA,IAEN,KAAA,EAAO,MAAA;AAAA,IACP;AAAA,GACF,GAAI,aAAa,UAAU,CAAA;AAC3B,EAAA,MAAM,cAAA,GACJ,gBAAA,EAAkB,aAAA,IAAiB,YAAA,EAAc,MAAA,IAAU,CAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,YAAA,EAAc,IAAA;AAAA,IACjC,CAAC,GAAA,KAAQ,GAAA,EAAK,OAAA,EAAS,UAAU,CAAA,GAAI;AAAA,GACvC;AACA,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAC,YAAA,EAAc,IAAA;AAAA,IACtC,CAAC,GAAA,KAAQ,GAAA,EAAK,YAAA,IAAgB;AAAA,GAChC;AACA,EAAA,MAAM,eAAe,UAAA,IAAc,eAAA;AAEnC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,4BAAA,CAA4C;AAAA,IAC1E,iBACE,YAAA,IAAgB,cAAA,GACZ,cAAA,KAAmB,KAAA,GACjB,OACA,MAAA,CAAO,WAAA,CAAY,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAC3D,MAAA;AAAA,IACN,YAAA,EAAc,eACV,qBAAA,GACE,qBAAA,KAA0B,QACxB,IAAA,GACA,MAAA,CAAO,YAAY,qBAAA,CAAsB,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAClE,KACF,EAAC;AAAA,IACL,QAAA,EAAU,CAAC,WAAA,KAAgB;AACzB,MAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,WAAW,CAAwB,CAAA;AAAA,MAC/D;AAAA,IACF;AAAA,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAE9B,IAAA,IAAI,SAAA,SAAkB,EAAC;AAEvB,IAAA,IAAI,CAAC,WAAA,IAAe,gBAAA,EAAkB,OAAO,YAAA;AAE7C,IAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,MACxB,CAAA;AAAA,MACA,IAAA,CAAK,IAAA,CAAK,cAAA,GAAiB,WAAW,CAAA,GAAI;AAAA,KAC5C;AAEA,IAAA,MAAM,mBAAmB,IAAA,CAAK,GAAA;AAAA,MAC5B,CAAA;AAAA,MACA,IAAA,CAAK,GAAA,CAAI,gBAAA,IAAoB,CAAA,EAAG,YAAY;AAAA,KAC9C;AACA,IAAA,MAAM,aAAa,gBAAA,GAAmB,WAAA;AACtC,IAAA,MAAM,WAAW,UAAA,GAAa,WAAA;AAE9B,IAAA,OAAO,YAAA,EAAc,KAAA,CAAM,UAAA,EAAY,QAAQ,KAAK,EAAC;AAAA,EACvD,CAAA,EAAG;AAAA,IACD,SAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAA0B;AACtD,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI;AAAA,MACtB,IAAA,EAAM,WAAA,CACH,MAAA,CAAO,CAAC,WAAW,MAAA,CAAO,MAAA,KAAW,MAAM,CAAA,CAC3C,IAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,MAC1B,KAAA,EAAO,WAAA,CACJ,MAAA,CAAO,CAAC,WAAW,MAAA,CAAO,MAAA,KAAW,OAAO,CAAA,CAC5C,IAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC;AAAA,KAC5B;AAGA,IAAA,MAAM,2BAA2B,YAAA,IAAgB,YAAA;AACjD,IAAA,MAAM,wBAAwB,EAAC;AAC/B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,qBAAA,CAAsB,KAAK,0BAA0B,CAAA;AAAA,IACvD;AACA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,qBAAA,CAAsB,KAAK,0BAA0B,CAAA;AAAA,IACvD;AAEA,IAAA,OAAO;AAAA,MACL,IAAA,EACE,wBAAA,IAA4B,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,GAC9C,CAAC,GAAG,qBAAA,EAAuB,GAAG,IAAI,CAAA,GACjC,QAAQ,EAAC;AAAA,MAChB,KAAA,EAAO,SAAS;AAAC,KACnB;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAA,EAAc,YAAY,CAAC,CAAA;AAG5C,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,MAAM,eAA2C,WAAA,CAAY,GAAA;AAAA,MAAI,CAAC,WAChE,oBAAA,CAAqB;AAAA,QACnB,SAAA,EAAW;AAAA,OACZ;AAAA,KACH;AAGA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,OAAA,CAAQ;AAAA,QACnB,EAAA,EAAI,0BAAA;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAAW,QAAM,KAAiC;AAChD,UAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,gBAAe,QAAA,EAC5B,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAASA,OAAM,+BAAA,EAAgC;AAAA,cAC/C,UAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,eAAe,CAAA,EAAG;AAAA,gBACrC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAGA,OAAM,oBAAA;AAAqB,eAClD,CAAA;AAAA,cACD,IAAA,EAAK,OAAA;AAAA,cACL,IAAA,EAAMC,eAAA;AAAA,cACN,YAAA,EACED,MAAAA,CAAM,oBAAA,EAAqB,GACvB,mBAAA,GACA;AAAA;AAAA,WAER,EACF,CAAA;AAAA,QAEJ,CAAA;AAAA,QACA,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAA+B;AAC1C,UAAA,IAAI,GAAA,CAAI,cAAa,EAAG;AACtB,YAAA,uBACE,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,IAAI,wBAAA,EAAyB;AAAA,gBACtC,UAAA,EAAW,OAAA;AAAA,gBACX,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAMC,eAAA;AAAA,gBACN,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,eAAe,CAAA,EAAG;AAAA,kBACrC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,IAAI,aAAA;AAAc,iBACzC,CAAA;AAAA,gBACD,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,gBACnD,iBACE,eAAA,IAAmB,GAAA,CAAI,cAAa,GAChC,GAAA,CAAI,eAAc,GAClB,MAAA;AAAA,gBAEN,eAAA,EACE,mBAAmB,GAAA,CAAI,YAAA,KACnB,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,cAAA,CAAA,GACT;AAAA;AAAA,aAER;AAAA,UAGJ,WAAW,GAAA,CAAI,YAAA,EAAa,EAAG,YAAA,MAAkB,YAAA,EAAc;AAC7D,YAAA,uBACE,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,gBACnD,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,gBAC3B,QAAA,EAAU,CAAC,GAAA,CAAI,YAAA,EAAa;AAAA,gBAC5B,aAAA,EAAe,IAAI,iBAAA,EAAkB;AAAA,gBACrC,QAAA,EAAU,IAAI,wBAAA;AAAyB;AAAA,aACzC;AAAA,UAEJ;AAAA,QACF;AAAA,OACD,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,OAAA,CAAQ;AAAA,QACnB,EAAA,EAAI,0BAAA;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAAD,MAAAA,EAAM,qBACf,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,cAAA,EAAe,QAAA,EAC5B,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EACEA,MAAAA,CAAM,oBAAA,EAAqB,GACvB,mBAAA,GACA,iBAAA;AAAA,YAEN,OAAA,EAASA,OAAM,oBAAA,EAAqB;AAAA,YACpC,aAAA,EAAeA,OAAM,qBAAA,EAAsB;AAAA,YAC3C,QAAA,EAAUA,OAAM,+BAAA;AAAgC;AAAA,SAClD,EACF,CAAA;AAAA,QAEF,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAA+B;AAC1C,UAAA,IAAI,GAAA,CAAI,YAAA,EAAa,EAAG,YAAA,MAAkB,YAAA,EAAc;AACtD,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,uBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,cACnD,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,cAC3B,QAAA,EAAU,CAAC,GAAA,CAAI,YAAA,EAAa;AAAA,cAC5B,aAAA,EAAe,IAAI,iBAAA,EAAkB;AAAA,cACrC,QAAA,EAAU,IAAI,wBAAA;AAAyB;AAAA,WACzC;AAAA,QAEJ;AAAA,OACD,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,YAAA;AAAA,EACT,GAAG,CAAC,WAAA,EAAa,eAAA,EAAiB,YAAA,EAAc,YAAY,CAAC,CAAA;AAE7D,EAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,IAC1B,IAAA,EAAM,aAAa,EAAC;AAAA,IACpB,OAAA;AAAA,IACA,iBAAiB,eAAA,EAAgB;AAAA,IACjC,mBAAmB,iBAAA,EAAkB;AAAA,IACrC,qBAAqB,mBAAA,EAAoB;AAAA,IACzC,oBAAoB,kBAAA,EAAmB;AAAA,IACvC,QAAA,EAAU,CAAC,GAAA,KAAS,GAAA,CAAoB,GAAG,QAAA,EAAS;AAAA,IACpD,UAAA,EAAY,CAAC,GAAA,KAAS,GAAA,CAAoB,OAAA,IAAW,MAAA;AAAA,IACrD,eAAA,EAAiB,CAAC,GAAA,KAAQ;AACxB,MAAA,MAAM,cAAc,GAAA,CAAI,QAAA;AACxB,MAAA,OAAA,CACG,aAAa,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK,CAAA,IACtC,aAAa,YAAA,IAAgB,IAAA;AAAA,IAEjC,CAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,gBAAA,EAAkB,UAAA;AAAA,IAClB,kBAAA,EACE,OAAO,YAAA,KAAiB,UAAA,GACpB,CAAC,GAAA,KAAQ,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,GAClC,YAAA;AAAA,IACN,oBAAA,EAAsB,CAAC,eAAA,KAAoB;AACzC,MAAA,eAAA,CAAgB,eAAoC,CAAA;AAAA,IACtD,CAAA;AAAA,IACA,gBAAA,EAAkB,CAAC,WAAA,KAAgB;AACjC,MAAA,WAAA,CAAY,WAA4B,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,cAAA,KAAmB;AACnC,MAAA,MAAM,aACJ,OAAO,cAAA,KAAmB,UAAA,GACtB,cAAA,CAAe,OAAO,CAAA,GACtB,cAAA;AAEN,MAAA,MAAM,iBACJ,IAAA,CAAK,SAAA,CAAU,UAAU,CAAA,KAAM,IAAA,CAAK,UAAU,OAAO,CAAA;AACvD,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,UAAU,CAAA;AAAA,IACvB;AAAA,GACD,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,MAAM,cAAA,EAAe;AACrC,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,mBAAA,EAAoB,CAAE,IAAA,CAAK,MAAA;AACtD,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,QAAA,EAAS,CAAE,YAAA;AAEtC,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,MAAA,KAAiC;AACrE,IAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,EAAG;AACvC,MAAA,UAAA,GAAa,OAAO,aAAA,CAAc,MAAA;AAAA,IACpC,CAAA,MAAA,IAAW,OAAO,aAAA,EAAe;AAC/B,MAAA,UAAA,GAAa,CAAA;AAAA,IACf;AAGA,IAAA,IAAI,OAAO,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,QACrB,GAAG,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,SAAA,KAAc,gBAAA,CAAiB,SAAS,CAAC,CAAA;AAAA,QAChE;AAAA,OACF;AACA,MAAA,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,SAAS,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,GAAG,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,KAAW,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACvD;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAElC,EAAA,MAAM,aACJ,YAAA,GAAe,CAAA,IAAM,YAAA,KAAiB,MAAA,IAAa,aAAa,MAAA,GAAS,CAAA;AAE3E,EAAA,MAAM,QAAA,GAAW,OAAA;AAAA,IACf,MAAM,eAAe,cAAA,GAAiB,YAAA;AAAA,IACtC,CAAC,YAAA,EAAc,cAAA,EAAgB,YAAY;AAAA,GAC7C;AAKA,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,MAAM,OAA2C,EAAC;AAClD,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAS,QAAQ,CAAC,CAAA;AACxB,MAAA,IAAA,CAAK,CAAA,eAAA,EAAkB,OAAO,MAAA,CAAO,QAAA,EAAU,CAAA,KAAA,CAAO,CAAA,GACpD,MAAA,CAAO,MAAA,CAAO,OAAA,EAAQ;AAAA,IAC1B;AACA,IAAA,OAAO,IAAA;AAAA,EAET,CAAA,EAAG,CAAC,OAAA,EAAS,YAAY,CAAC,CAAA;AAE1B,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAEhC,IAAA,OAAO,OAAA,CAAQ,OAAO,CAAC,MAAA,KAAW,OAAO,UAAA,EAAY,MAAA,KAAW,CAAC,CAAA,CAAE,MAAA;AAAA,EACrE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,uBACE,GAAA,CAAC,wBAAA,EAAA,EAAyB,KAAA,EAAc,UAAA,EACtC,QAAA,kBAAA,IAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO,aAAA;AAAA,MACP,UAAA;AAAA,MACA,SAAA,EAAW,UAAA,GAAa,MAAA,CAAO,2BAA2B,CAAA,GAAI,MAAA;AAAA,MAE9D,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,YAAA;AAAA,YACL,KAAA,EAAO,OAAA;AAAA,YACP,QAAA;AAAA,YACA,QAAA,EAAU,WAAA;AAAA,YACV,UAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,mBAAgB,KAAA,EAAc,CAAA;AAAA,8BAC/B,GAAA,CAAC,iBAAc,KAAA,EAAc,CAAA;AAAA,cAC5B,6BACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAO,QAAA,EAAA,4BAAA,EAA0B,CAAA;AAAA,gCAElC,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,MAAA,EAAQ,WAAA,GAAc,CAAA,EAAG,WAAA,GAAc,EAAE,CAAA,EAAA,CAAA,GAAO;AAAA,qBAClD;AAAA,oBACA,IAAA,EAAK,cAAA;AAAA,oBACL,aAAA,EAAY,MAAA;AAAA,oBAEZ,QAAA,kBAAA,GAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,cAAA,EAAe,QAAA;AAAA,wBACf,UAAA,EAAW,QAAA;AAAA,wBACX,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,UAAA;AAAA,0BACV,GAAA,EAAK,CAAA;AAAA,0BACL,MAAA,EAAQ,CAAA;AAAA,0BACR,IAAA,EAAM,CAAA;AAAA,0BACN,KAAA,EAAO,CAAA;AAAA,0BACP,MAAA,EAAQ,MAAA;AAAA,0BACR,MAAA,EAAQ;AAAA,yBACV;AAAA,wBAEA,8BAAC,OAAA,EAAA,EAAQ;AAAA;AAAA;AACX;AAAA;AACF,eAAA,EACF,CAAA;AAAA,cAED,UAAA,oBACC,GAAA;AAAA,gBAAC,eAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EACE,UAAA,GAAa,MAAA,CAAO,wBAAwB,CAAA,GAAI,MAAA;AAAA,kBAElD,KAAA;AAAA,kBACA,OAAA,EAAS,WAAA;AAAA,kBACT;AAAA;AAAA;AACF;AAAA;AAAA,SAEJ;AAAA,QACC,UAAA,oBACC,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,WAAA;AAAA,YACd,SAAA,EAAW,kBAAkB,SAAA,IAAa,IAAA;AAAA,YAC1C,IAAA,EAAA,CAAO,oBAAoB,CAAA,IAAK,CAAA;AAAA,YAChC,cAAA;AAAA,YACA,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,cAAA,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,YAC9B;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;;;;","x_google_ignoreList":[6,7]}
|