{"version":3,"names":["isHTMLElement","onCleanup","untrack","createChangeEventDetails","REASONS","contains","ownerDocument","createStableCallback","useIsoLayoutEffect","useFloatingParentNodeId","useFloatingTree","createGridCellMap","findNonDisabledListIndex","getGridCellIndexOfCorner","getGridCellIndices","getGridNavigatedIndex","getMaxListIndex","getMinListIndex","isIndexOutOfListBounds","isListIndexDisabled","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","activeElement","getFloatingFocusElement","getTarget","isTypeableCombobox","enqueueFocus","isVirtualClick","isVirtualPointerEvent","stopEvent","ESCAPE","readOption","doSwitch","orientation","vertical","horizontal","isMainOrientationKey","key","isMainOrientationToEndKey","rtl","isCrossOrientationOpenKey","isCrossOrientationCloseKey","cols","useListNavigation","context","props","store","rootStore","dataRef","listRef","onNavigate","onNavigateProp","externalTree","getActiveIndex","activeIndex","getEnabled","enabled","undefined","getSelectedIndex","v","selectedIndex","read","getFocusItemOnOpen","focusItemOnOpen","getFocusItemOnHover","focusItemOnHover","getOpenOnArrowKeyDown","openOnArrowKeyDown","getDisabledIndices","disabledIndices","getAllowEscape","allowEscape","getLoopFocus","loopFocus","getNested","nested","getParentOrientationProp","parentOrientation","getRtl","getVirtual","virtual","getOrientation","getCols","getId","id","getResetOnPointerLeave","resetOnPointerLeave","parentId","tree","current","focusItemOnOpenRef","indexRef","keyRef","isPointerModalityRef","previousMountedRef","state","floatingElement","previousOpenRef","open","forceSyncFocusRef","forceScrollIntoViewRef","cancelQueuedFocusRef","process","env","NODE_ENV","console","warn","event","previousOnNavigateRef","focusItem","list","runFocus","item","events","emit","sync","preventScroll","initialItem","forceScrollIntoView","scheduler","requestAnimationFrame","waitedItem","shouldScrollIntoView","scrollIntoView","block","inline","snapshot","runs","waitForListPopulated","queueMicrotask","nodes","nodesRef","parent","find","node","elements","floating","activeEl","treeContainsActiveEl","some","focus","syncCurrentTarget","index","indexOf","currentTarget","onFocus","onClick","onMouseMove","onPointerLeave","pointerType","relatedTarget","includes","floatingFocusEl","getParentOrientation","fromProp","commonOnKeyDown","which","setOpen","listNavigation","domReferenceElement","currentIndex","minIndex","maxIndex","typeableComboboxReference","sizes","Array","from","length","width","height","cellMap","minGridIndex","findIndex","maxGridIndex","reduce","foundIndex","cellIndex","map","itemIndex","_","listIndex","prevIndex","ct","startingIndex","Math","min","decrement","max","aria-orientation","aria-activedescendant","onKeyDown","shiftKey","target","focusOut","onPointerMove","triggerKeyDown","currentOpen","isArrowKey","startsWith","isParentCrossOpenKey","isMainKey","isNavigationKey","trim","isParentMainKey","checkVirtualMouse","checkVirtualPointer","trigger","onPointerDown","onPointerEnter","onMouseDown","reference","isStaticallyDisabled"],"sources":["use-list-navigation.ts"],"sourcesContent":["/**\n * Stage 4.5 port of Base UI React's `useListNavigation` hook.\n *\n * React source:\n *   `base-ui/packages/react/src/floating-ui-react/hooks/useListNavigation.ts`\n *\n * Adds arrow-key navigation (1D + 2D grid), Home/End, typeable-combobox\n * integration, virtual focus (`aria-activedescendant`), and tree-aware\n * submenu open/close behavior. This is the single biggest interaction\n * hook in the fork — every listbox / menu / menubar / combobox-grid\n * consumer in tier-3a reaches for it.\n *\n * ### React → Solid deviations\n *\n * 1. `useRef` → `MutableRef<T>` (matches sibling hooks). `useValueAsRef`\n *    (React fork helper that mirrors a prop into a ref) is replaced by\n *    reading the prop directly inside handlers/effects — Solid props\n *    are stable references for the lifetime of the component body, and\n *    callers pass reactive accessors when live updates matter (see the\n *    `MaybeAccessor` wrappers on `activeIndex`, `selectedIndex`,\n *    `disabledIndices`, etc.).\n *\n * 2. `useStableCallback` → `createStableCallback` from\n *    `src/internals/stable-callback.ts`. Used only where the React\n *    source stabilized identity for effect deps — Solid effects don't\n *    re-fire on callback identity so most handlers are plain functions.\n *\n * 3. `useIsoLayoutEffect` (with React single-callback + deps) →\n *    `createRenderEffect`-backed `useIsoLayoutEffect(compute, apply)`\n *    in split form. Tracked reads go in the `compute` factory; the\n *    side-effect body runs in `apply`.\n *\n * 4. `useMemo` for `item` / `floating` / `trigger` / `reference` bags\n *    collapses to plain literals. Solid doesn't re-run component bodies,\n *    so the bag identity is already stable for the lifetime of the call\n *    site. Closed-over handlers read the latest prop values directly.\n *\n * 5. `isReactEvent` branches and `.nativeEvent` unwraps drop out: Solid\n *    event handlers receive native events directly.\n *\n * 6. Shadow-DOM-safe `contains()` from `src/internals/dom/contains.ts`.\n *\n * 7. `store.useState('open')` subscribes a Solid tracking context when\n *    read inside `createEffect` / `useIsoLayoutEffect`; the matching\n *    sync escape hatch is `store.state.open` (via\n *    `components/floating-root-store.ts`).\n *\n * 8. The `MaybeAccessor<T>` pattern: callers may pass either a literal\n *    or a `() => T` for the reactive option fields. `readOption`\n *    normalises both at the call site (inside effects/handlers) so the\n *    live value is read at event time.\n *\n * ### Reason strings\n *\n * Every `store.setOpen` emits one of:\n *  - `REASONS.listNavigation` — opening on arrow-down on trigger\n *    (nested / main-orientation paths), or closing via the\n *    cross-orientation \"close submenu\" key in nested mode.\n *  - `REASONS.focusOut` — Shift+Tab on the floating element.\n *\n * Matches React's source strings 1:1 — the React fork carries these\n * same two in this hook.\n */\n\nimport { isHTMLElement } from \"@floating-ui/utils/dom\";\nimport { onCleanup, untrack } from \"solid-js\";\nimport {\n\ttype BaseUIChangeEventDetails,\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../change-event-details\";\nimport { contains } from \"../../dom/contains\";\nimport { ownerDocument } from \"../../dom/owner-document\";\nimport { createStableCallback } from \"../../stable-callback\";\nimport { useIsoLayoutEffect } from \"../../use-iso-layout-effect\";\nimport {\n\tuseFloatingParentNodeId,\n\tuseFloatingTree,\n} from \"../components/floating-tree\";\nimport type { FloatingTreeStore } from \"../components/floating-tree-store\";\nimport type {\n\tElementProps,\n\tFloatingContext,\n\tFloatingRootContext,\n\tMutableRef,\n} from \"../types\";\nimport {\n\tcreateGridCellMap,\n\tfindNonDisabledListIndex,\n\tgetGridCellIndexOfCorner,\n\tgetGridCellIndices,\n\tgetGridNavigatedIndex,\n\tgetMaxListIndex,\n\tgetMinListIndex,\n\tisIndexOutOfListBounds,\n\tisListIndexDisabled,\n} from \"../utils/composite\";\nimport {\n\tARROW_DOWN,\n\tARROW_LEFT,\n\tARROW_RIGHT,\n\tARROW_UP,\n} from \"../utils/constants\";\nimport {\n\tactiveElement,\n\tgetFloatingFocusElement,\n\tgetTarget,\n\tisTypeableCombobox,\n} from \"../utils/element\";\nimport { enqueueFocus } from \"../utils/enqueue-focus\";\nimport {\n\tisVirtualClick,\n\tisVirtualPointerEvent,\n\tstopEvent,\n} from \"../utils/event\";\n\nconst ESCAPE = \"Escape\";\n\nimport { type MaybeAccessor, readOption } from \"../../maybe-accessor\";\n\ntype Orientation = \"vertical\" | \"horizontal\" | \"both\";\ntype DisabledIndices = ReadonlyArray<number> | ((index: number) => boolean);\n\nfunction doSwitch(\n\torientation: Orientation,\n\tvertical: boolean,\n\thorizontal: boolean,\n): boolean {\n\tswitch (orientation) {\n\t\tcase \"vertical\":\n\t\t\treturn vertical;\n\t\tcase \"horizontal\":\n\t\t\treturn horizontal;\n\t\tdefault:\n\t\t\treturn vertical || horizontal;\n\t}\n}\n\nfunction isMainOrientationKey(key: string, orientation: Orientation): boolean {\n\tconst vertical = key === ARROW_UP || key === ARROW_DOWN;\n\tconst horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n\treturn doSwitch(orientation, vertical, horizontal);\n}\n\nfunction isMainOrientationToEndKey(\n\tkey: string,\n\torientation: Orientation,\n\trtl: boolean,\n): boolean {\n\tconst vertical = key === ARROW_DOWN;\n\tconst horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n\treturn (\n\t\tdoSwitch(orientation, vertical, horizontal) ||\n\t\tkey === \"Enter\" ||\n\t\tkey === \" \" ||\n\t\tkey === \"\"\n\t);\n}\n\nfunction isCrossOrientationOpenKey(\n\tkey: string,\n\torientation: Orientation,\n\trtl: boolean,\n): boolean {\n\tconst vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n\tconst horizontal = key === ARROW_DOWN;\n\treturn doSwitch(orientation, vertical, horizontal);\n}\n\nfunction isCrossOrientationCloseKey(\n\tkey: string,\n\torientation: Orientation,\n\trtl: boolean,\n\tcols?: number,\n): boolean {\n\tconst vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n\tconst horizontal = key === ARROW_UP;\n\tif (\n\t\torientation === \"both\" ||\n\t\t(orientation === \"horizontal\" && cols && cols > 1)\n\t) {\n\t\treturn key === ESCAPE;\n\t}\n\treturn doSwitch(orientation, vertical, horizontal);\n}\n\nexport interface UseListNavigationProps {\n\t/**\n\t * A ref that holds an array of list items.\n\t * @default empty list\n\t */\n\tlistRef: MutableRef<Array<HTMLElement | null>>;\n\t/**\n\t * The index of the currently active (focused or highlighted) item. May\n\t * be a literal or an accessor.\n\t * @default null\n\t */\n\tactiveIndex: MaybeAccessor<number | null>;\n\t/**\n\t * Callback invoked when navigation changes the active index.\n\t */\n\tonNavigate?:\n\t\t| ((activeIndex: number | null, event: Event | undefined) => void)\n\t\t| undefined;\n\t/**\n\t * Whether the hook is enabled.\n\t * @default true\n\t */\n\tenabled?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Currently selected item index.\n\t * @default null\n\t */\n\tselectedIndex?: MaybeAccessor<number | null | undefined> | undefined;\n\t/**\n\t * Whether to focus the item upon opening. `'auto'` infers from input\n\t * type (keyboard vs pointer).\n\t * @default 'auto'\n\t */\n\tfocusItemOnOpen?: MaybeAccessor<boolean | \"auto\"> | undefined;\n\t/**\n\t * Whether hovering an item synchronizes focus.\n\t * @default true\n\t */\n\tfocusItemOnHover?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Whether pressing an arrow key on the main axis opens the floating\n\t * element.\n\t * @default true\n\t */\n\topenOnArrowKeyDown?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Manually-specified indices to skip during navigation. Overrides the\n\t * default `disabled` / `aria-disabled` detection.\n\t */\n\tdisabledIndices?: MaybeAccessor<DisabledIndices | undefined> | undefined;\n\t/**\n\t * Whether focus can escape the list (requires `loopFocus` + `virtual`).\n\t * @default false\n\t */\n\tallowEscape?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Whether focus should loop around when navigating past the ends.\n\t * @default false\n\t */\n\tloopFocus?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Whether the list is nested (e.g. submenu).\n\t * @default false\n\t */\n\tnested?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Parent list orientation (for nested lists in a `Composite`).\n\t */\n\tparentOrientation?: MaybeAccessor<Orientation | undefined> | undefined;\n\t/**\n\t * Whether navigation is RTL.\n\t * @default false\n\t */\n\trtl?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Virtual focus via `aria-activedescendant`.\n\t * @default false\n\t */\n\tvirtual?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Orientation in which navigation occurs.\n\t * @default 'vertical'\n\t */\n\torientation?: MaybeAccessor<Orientation> | undefined;\n\t/**\n\t * Number of columns. `>1` enables grid navigation.\n\t * @default 1\n\t */\n\tcols?: MaybeAccessor<number> | undefined;\n\t/**\n\t * Root component id. Used for `aria-activedescendant` when `virtual`.\n\t */\n\tid?: MaybeAccessor<string | undefined> | undefined;\n\t/**\n\t * Whether to clear the active index when the pointer leaves an item.\n\t * @default true\n\t */\n\tresetOnPointerLeave?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * External `FloatingTreeStore` when the context-provided one is not\n\t * reachable.\n\t */\n\texternalTree?: FloatingTreeStore | undefined;\n}\n\n/**\n * Adds arrow-key-based navigation of a list of items, using real DOM focus\n * or virtual focus via `aria-activedescendant`.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nexport function useListNavigation(\n\tcontext: FloatingRootContext | FloatingContext,\n\tprops: UseListNavigationProps,\n): ElementProps {\n\tconst store = \"rootStore\" in context ? context.rootStore : context;\n\tconst dataRef = store.context.dataRef;\n\n\t// Untrack the body-time destructure (see use-dismiss for the full\n\t// reasoning). These fields are not `MaybeAccessor` shapes.\n\tconst {\n\t\tlistRef,\n\t\tonNavigate: onNavigateProp,\n\t\texternalTree,\n\t} = untrack(() => ({\n\t\tlistRef: props.listRef,\n\t\tonNavigate: props.onNavigate,\n\t\texternalTree: props.externalTree,\n\t}));\n\n\t// Option readers — normalise both literal and accessor shapes.\n\tconst getActiveIndex = (): number | null => readOption(props.activeIndex);\n\tconst getEnabled = (): boolean =>\n\t\tprops.enabled === undefined ? true : readOption(props.enabled);\n\tconst getSelectedIndex = (): number | null => {\n\t\tconst v = props.selectedIndex;\n\t\tif (v === undefined) return null;\n\t\tconst read = readOption(v);\n\t\treturn read ?? null;\n\t};\n\tconst getFocusItemOnOpen = (): boolean | \"auto\" =>\n\t\tprops.focusItemOnOpen === undefined\n\t\t\t? \"auto\"\n\t\t\t: readOption(props.focusItemOnOpen);\n\tconst getFocusItemOnHover = (): boolean =>\n\t\tprops.focusItemOnHover === undefined\n\t\t\t? true\n\t\t\t: readOption(props.focusItemOnHover);\n\tconst getOpenOnArrowKeyDown = (): boolean =>\n\t\tprops.openOnArrowKeyDown === undefined\n\t\t\t? true\n\t\t\t: readOption(props.openOnArrowKeyDown);\n\tconst getDisabledIndices = (): DisabledIndices | undefined =>\n\t\tprops.disabledIndices === undefined\n\t\t\t? undefined\n\t\t\t: readOption(props.disabledIndices);\n\tconst getAllowEscape = (): boolean =>\n\t\tprops.allowEscape === undefined ? false : readOption(props.allowEscape);\n\tconst getLoopFocus = (): boolean =>\n\t\tprops.loopFocus === undefined ? false : readOption(props.loopFocus);\n\tconst getNested = (): boolean =>\n\t\tprops.nested === undefined ? false : readOption(props.nested);\n\tconst getParentOrientationProp = (): Orientation | undefined =>\n\t\tprops.parentOrientation === undefined\n\t\t\t? undefined\n\t\t\t: readOption(props.parentOrientation);\n\tconst getRtl = (): boolean =>\n\t\tprops.rtl === undefined ? false : readOption(props.rtl);\n\tconst getVirtual = (): boolean =>\n\t\tprops.virtual === undefined ? false : readOption(props.virtual);\n\tconst getOrientation = (): Orientation =>\n\t\tprops.orientation === undefined\n\t\t\t? \"vertical\"\n\t\t\t: readOption(props.orientation);\n\tconst getCols = (): number =>\n\t\tprops.cols === undefined ? 1 : readOption(props.cols);\n\tconst getId = (): string | undefined =>\n\t\tprops.id === undefined ? undefined : readOption(props.id);\n\tconst getResetOnPointerLeave = (): boolean =>\n\t\tprops.resetOnPointerLeave === undefined\n\t\t\t? true\n\t\t\t: readOption(props.resetOnPointerLeave);\n\n\tconst parentId = useFloatingParentNodeId();\n\tconst tree = useFloatingTree(externalTree);\n\n\t// Mirror React's `dataRef.current.orientation = orientation` layout\n\t// effect so child list-nav hooks (submenus) can read the parent\n\t// orientation via the tree.\n\tuseIsoLayoutEffect(\n\t\t() => getOrientation(),\n\t\t(orientation) => {\n\t\t\tdataRef.current.orientation = orientation;\n\t\t},\n\t);\n\n\t// Refs — match React's `useRef` shape for inter-handler communication.\n\t// Body-time signal reads are wrapped in `untrack` so the strict-read\n\t// scope established by `devComponent(...)` does not warn. These are\n\t// one-shot snapshots; reactivity flows through the effects below.\n\tconst focusItemOnOpenRef: MutableRef<boolean | \"auto\"> = {\n\t\tcurrent: untrack(() => getFocusItemOnOpen()),\n\t};\n\tconst indexRef: MutableRef<number> = {\n\t\tcurrent: untrack(() => getSelectedIndex() ?? -1),\n\t};\n\tconst keyRef: MutableRef<string | null> = { current: null };\n\tconst isPointerModalityRef: MutableRef<boolean> = { current: true };\n\tconst previousMountedRef: MutableRef<boolean> = {\n\t\tcurrent: untrack(() => !!store.state.floatingElement),\n\t};\n\tconst previousOpenRef: MutableRef<boolean> = {\n\t\tcurrent: untrack(() => store.state.open),\n\t};\n\tconst forceSyncFocusRef: MutableRef<boolean> = { current: false };\n\tconst forceScrollIntoViewRef: MutableRef<boolean> = { current: false };\n\tconst cancelQueuedFocusRef: MutableRef<(() => void) | null> = {\n\t\tcurrent: null,\n\t};\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst allowEscape = getAllowEscape();\n\t\tconst loopFocus = getLoopFocus();\n\t\tconst virtual = getVirtual();\n\t\tconst orientation = getOrientation();\n\t\tconst cols = getCols();\n\n\t\tif (allowEscape) {\n\t\t\tif (!loopFocus) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"`useListNavigation` looping must be enabled to allow escaping.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!virtual) {\n\t\t\t\tconsole.warn(\"`useListNavigation` must be virtual to allow escaping.\");\n\t\t\t}\n\t\t}\n\t\tif (orientation === \"vertical\" && cols > 1) {\n\t\t\tconsole.warn(\n\t\t\t\t\"In grid list navigation mode (`cols` > 1), the `orientation` should\",\n\t\t\t\t'be either \"horizontal\" or \"both\".',\n\t\t\t);\n\t\t}\n\t}\n\n\tconst onNavigate = createStableCallback<(event?: Event | undefined) => void>(\n\t\t() => (event?: Event | undefined) => {\n\t\t\tonNavigateProp?.(\n\t\t\t\tindexRef.current === -1 ? null : indexRef.current,\n\t\t\t\tevent,\n\t\t\t);\n\t\t},\n\t);\n\n\tconst previousOnNavigateRef: MutableRef<(event?: Event | undefined) => void> =\n\t\t{\n\t\t\tcurrent: onNavigate,\n\t\t};\n\n\tconst focusItem = createStableCallback<() => void>(() => () => {\n\t\tconst virtual = getVirtual();\n\t\tconst list = listRef.current;\n\n\t\tfunction runFocus(item: HTMLElement) {\n\t\t\tif (virtual) {\n\t\t\t\ttree?.events.emit(\"virtualfocus\", item);\n\t\t\t} else {\n\t\t\t\tcancelQueuedFocusRef.current = enqueueFocus(item, {\n\t\t\t\t\tsync: forceSyncFocusRef.current,\n\t\t\t\t\tpreventScroll: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst initialItem = list[indexRef.current];\n\t\tconst forceScrollIntoView = forceScrollIntoViewRef.current;\n\n\t\tif (initialItem) {\n\t\t\trunFocus(initialItem);\n\t\t}\n\n\t\tconst scheduler = forceSyncFocusRef.current\n\t\t\t? (v: () => void) => v()\n\t\t\t: (v: () => void) => requestAnimationFrame(v);\n\n\t\tscheduler(() => {\n\t\t\tconst waitedItem = listRef.current[indexRef.current] || initialItem;\n\n\t\t\tif (!waitedItem) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!initialItem) {\n\t\t\t\trunFocus(waitedItem);\n\t\t\t}\n\n\t\t\tconst shouldScrollIntoView =\n\t\t\t\twaitedItem && (forceScrollIntoView || !isPointerModalityRef.current);\n\n\t\t\tif (shouldScrollIntoView) {\n\t\t\t\t// Guard for test environments without `scrollIntoView`.\n\t\t\t\twaitedItem.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n\t\t\t}\n\t\t});\n\t});\n\n\t// Sync `selectedIndex` → `activeIndex` on open; reset on close.\n\tuseIsoLayoutEffect(\n\t\t() => {\n\t\t\tif (!getEnabled()) return null;\n\t\t\treturn {\n\t\t\t\topen: store.state.open,\n\t\t\t\tfloatingElement: store.state.floatingElement,\n\t\t\t\tselectedIndex: getSelectedIndex(),\n\t\t\t};\n\t\t},\n\t\t(snapshot) => {\n\t\t\tif (snapshot == null) return;\n\t\t\tconst { open, floatingElement, selectedIndex } = snapshot;\n\n\t\t\tif (open && floatingElement) {\n\t\t\t\tindexRef.current = selectedIndex ?? -1;\n\t\t\t\tif (focusItemOnOpenRef.current && selectedIndex != null) {\n\t\t\t\t\tforceScrollIntoViewRef.current = true;\n\t\t\t\t\tonNavigate();\n\t\t\t\t}\n\t\t\t} else if (previousMountedRef.current) {\n\t\t\t\t// `onNavigate` may be swapped conditionally by callers\n\t\t\t\t// (onNavigate: open ? setActive : setSelected); fire the previous\n\t\t\t\t// function so the outgoing controller sees the reset.\n\t\t\t\tindexRef.current = -1;\n\t\t\t\tpreviousOnNavigateRef.current();\n\t\t\t}\n\t\t},\n\t);\n\n\t// Sync `activeIndex` → focused item while the floating element is open.\n\tuseIsoLayoutEffect(\n\t\t() => {\n\t\t\tif (!getEnabled()) return null;\n\t\t\t// Track active/selected index so an external swap re-runs this\n\t\t\t// effect (matches React's `[activeIndex, selectedIndex, ...]`\n\t\t\t// dep array).\n\t\t\treturn {\n\t\t\t\topen: store.state.open,\n\t\t\t\tfloatingElement: store.state.floatingElement,\n\t\t\t\tactiveIndex: getActiveIndex(),\n\t\t\t\tselectedIndex: getSelectedIndex(),\n\t\t\t\torientation: getOrientation(),\n\t\t\t\trtl: getRtl(),\n\t\t\t\tnested: getNested(),\n\t\t\t};\n\t\t},\n\t\t(snapshot) => {\n\t\t\tif (snapshot == null) return;\n\t\t\tconst {\n\t\t\t\topen,\n\t\t\t\tfloatingElement,\n\t\t\t\tactiveIndex,\n\t\t\t\tselectedIndex,\n\t\t\t\torientation,\n\t\t\t\trtl,\n\t\t\t\tnested,\n\t\t\t} = snapshot;\n\n\t\t\tif (!open) {\n\t\t\t\tforceSyncFocusRef.current = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!floatingElement) return;\n\n\t\t\tif (activeIndex == null) {\n\t\t\t\tforceSyncFocusRef.current = false;\n\n\t\t\t\tif (selectedIndex != null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Reset while the floating element was open (e.g. list changed).\n\t\t\t\tif (previousMountedRef.current) {\n\t\t\t\t\tindexRef.current = -1;\n\t\t\t\t\tfocusItem();\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!previousOpenRef.current || !previousMountedRef.current) &&\n\t\t\t\t\tfocusItemOnOpenRef.current &&\n\t\t\t\t\t(keyRef.current != null ||\n\t\t\t\t\t\t(focusItemOnOpenRef.current === true && keyRef.current == null))\n\t\t\t\t) {\n\t\t\t\t\tlet runs = 0;\n\t\t\t\t\tconst waitForListPopulated = () => {\n\t\t\t\t\t\tif (listRef.current[0] == null) {\n\t\t\t\t\t\t\tif (runs < 2) {\n\t\t\t\t\t\t\t\tconst scheduler = runs\n\t\t\t\t\t\t\t\t\t? (v: () => void) => requestAnimationFrame(v)\n\t\t\t\t\t\t\t\t\t: (v: () => void) => queueMicrotask(v);\n\t\t\t\t\t\t\t\tscheduler(waitForListPopulated);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truns += 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindexRef.current =\n\t\t\t\t\t\t\t\tkeyRef.current == null ||\n\t\t\t\t\t\t\t\tisMainOrientationToEndKey(keyRef.current, orientation, rtl) ||\n\t\t\t\t\t\t\t\tnested\n\t\t\t\t\t\t\t\t\t? getMinListIndex(listRef)\n\t\t\t\t\t\t\t\t\t: getMaxListIndex(listRef);\n\t\t\t\t\t\t\tkeyRef.current = null;\n\t\t\t\t\t\t\tonNavigate();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\twaitForListPopulated();\n\t\t\t\t}\n\t\t\t} else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) {\n\t\t\t\tindexRef.current = activeIndex;\n\t\t\t\tfocusItem();\n\t\t\t\tforceScrollIntoViewRef.current = false;\n\t\t\t}\n\t\t},\n\t);\n\n\t// Ensure parent floating has focus when a nested child closes, so arrow\n\t// navigation keeps working once the pointer leaves the child.\n\tuseIsoLayoutEffect(\n\t\t() => ({\n\t\t\tfloatingElement: store.state.floatingElement,\n\t\t\tvirtual: getVirtual(),\n\t\t\tenabled: getEnabled(),\n\t\t}),\n\t\t(snapshot) => {\n\t\t\tconst { floatingElement, virtual, enabled } = snapshot;\n\t\t\tif (\n\t\t\t\t!enabled ||\n\t\t\t\tfloatingElement ||\n\t\t\t\t!tree ||\n\t\t\t\tvirtual ||\n\t\t\t\t!previousMountedRef.current\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Point-in-time reads of other tree nodes' (reactive) elements.\n\t\t\tconst nodes = tree.nodesRef.current;\n\t\t\tconst parent = untrack(\n\t\t\t\t() =>\n\t\t\t\t\tnodes.find((node) => node.id === parentId)?.context?.elements\n\t\t\t\t\t\t.floating,\n\t\t\t);\n\t\t\tconst activeEl = activeElement(ownerDocument(floatingElement));\n\t\t\tconst treeContainsActiveEl = untrack(() =>\n\t\t\t\tnodes.some(\n\t\t\t\t\t(node) =>\n\t\t\t\t\t\tnode.context && contains(node.context.elements.floating, activeEl),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tif (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n\t\t\t\tparent.focus({ preventScroll: true });\n\t\t\t}\n\t\t},\n\t);\n\n\t// Mirror React's trailing `useIsoLayoutEffect` that captures the most\n\t// recent onNavigate/open/mount values for later reset comparisons.\n\tuseIsoLayoutEffect(\n\t\t() => ({\n\t\t\topen: store.state.open,\n\t\t\tfloatingElement: store.state.floatingElement,\n\t\t}),\n\t\t(snapshot) => {\n\t\t\tpreviousOnNavigateRef.current = onNavigate;\n\t\t\tpreviousOpenRef.current = snapshot.open;\n\t\t\tpreviousMountedRef.current = !!snapshot.floatingElement;\n\t\t},\n\t);\n\n\t// Reset `keyRef` and refresh the `focusItemOnOpen` snapshot on close.\n\tuseIsoLayoutEffect(\n\t\t() => ({\n\t\t\topen: store.state.open,\n\t\t\tfocusItemOnOpen: getFocusItemOnOpen(),\n\t\t}),\n\t\t(snapshot) => {\n\t\t\tif (!snapshot.open) {\n\t\t\t\tkeyRef.current = null;\n\t\t\t\tfocusItemOnOpenRef.current = snapshot.focusItemOnOpen;\n\t\t\t}\n\t\t},\n\t);\n\n\t// Component-unmount cleanup — mirrors nothing specific in React, but\n\t// matches other hooks' cancellation pattern. Cancels any pending focus\n\t// request so a detached list doesn't yank focus.\n\tonCleanup(() => {\n\t\tcancelQueuedFocusRef.current?.();\n\t\tcancelQueuedFocusRef.current = null;\n\t});\n\n\tconst syncCurrentTarget = createStableCallback<\n\t\t(event: Event & { currentTarget: EventTarget | null }) => void\n\t>(() => (event) => {\n\t\tif (!store.state.open) return;\n\n\t\tconst list = listRef.current;\n\t\tconst index = list.indexOf(event.currentTarget as HTMLElement);\n\t\t// Snapshot for an imperative comparison — this focus handler can run\n\t\t// synchronously from an effect-apply scope (via `enqueueFocus`), where a\n\t\t// tracked `props.activeIndex` read would trip `[STRICT_READ_UNTRACKED]`.\n\t\tconst activeIndex = untrack(getActiveIndex);\n\t\tif (index !== -1 && (indexRef.current !== index || activeIndex !== index)) {\n\t\t\tindexRef.current = index;\n\t\t\tonNavigate(event);\n\t\t}\n\t});\n\n\tconst item: ElementProps[\"item\"] = {\n\t\tonFocus(event: FocusEvent) {\n\t\t\tforceSyncFocusRef.current = true;\n\t\t\tsyncCurrentTarget(event as Event & { currentTarget: EventTarget | null });\n\t\t},\n\t\t// Safari focus workaround — re-focus on click.\n\t\tonClick(event: MouseEvent) {\n\t\t\t(event.currentTarget as HTMLElement).focus({ preventScroll: true });\n\t\t},\n\t\tonMouseMove(event: MouseEvent) {\n\t\t\tforceSyncFocusRef.current = true;\n\t\t\tforceScrollIntoViewRef.current = false;\n\t\t\tif (getFocusItemOnHover()) {\n\t\t\t\tsyncCurrentTarget(\n\t\t\t\t\tevent as Event & { currentTarget: EventTarget | null },\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tonPointerLeave(event: PointerEvent) {\n\t\t\tif (\n\t\t\t\t!store.state.open ||\n\t\t\t\t!isPointerModalityRef.current ||\n\t\t\t\tevent.pointerType === \"touch\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tforceSyncFocusRef.current = true;\n\n\t\t\tconst relatedTarget = event.relatedTarget as HTMLElement | null;\n\n\t\t\tif (!getFocusItemOnHover() || listRef.current.includes(relatedTarget)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!getResetOnPointerLeave()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcancelQueuedFocusRef.current?.();\n\t\t\tcancelQueuedFocusRef.current = null;\n\n\t\t\tindexRef.current = -1;\n\t\t\tonNavigate(event);\n\n\t\t\tif (!getVirtual()) {\n\t\t\t\tconst floatingFocusEl = getFloatingFocusElement(\n\t\t\t\t\tstore.state.floatingElement,\n\t\t\t\t);\n\t\t\t\tconst activeEl = activeElement(ownerDocument(floatingFocusEl));\n\t\t\t\tif (floatingFocusEl && contains(floatingFocusEl, activeEl)) {\n\t\t\t\t\tfloatingFocusEl.focus({ preventScroll: true });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n\n\tconst getParentOrientation = (): Orientation | undefined => {\n\t\tconst fromProp = getParentOrientationProp();\n\t\tif (fromProp !== undefined) return fromProp;\n\t\treturn (\n\t\t\t(tree?.nodesRef.current.find((node) => node.id === parentId)?.context\n\t\t\t\t?.dataRef?.current.orientation as Orientation | undefined) ?? undefined\n\t\t);\n\t};\n\n\tconst commonOnKeyDown = createStableCallback<(event: KeyboardEvent) => void>(\n\t\t() => (event: KeyboardEvent) => {\n\t\t\tisPointerModalityRef.current = false;\n\t\t\tforceSyncFocusRef.current = true;\n\n\t\t\t// Chrome fires ArrowDown twice while composing. Ignore the IME path.\n\t\t\tif ((event as KeyboardEvent & { which?: number }).which === 229) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst floatingFocusEl = getFloatingFocusElement(\n\t\t\t\tstore.state.floatingElement,\n\t\t\t);\n\n\t\t\t// Floating element animating out: ignore so `activeIndex` doesn't\n\t\t\t// latch while closed.\n\t\t\tif (!store.state.open && event.currentTarget === floatingFocusEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// beta.28 can deliver the first key event before the layout effect\n\t\t\t// that mirrors an externally-seeded active index into this imperative\n\t\t\t// cursor. Seed it on demand so initial auto-highlight advances from\n\t\t\t// item 0 instead of selecting item 0 again.\n\t\t\tif (indexRef.current === -1) {\n\t\t\t\tconst activeIndex = getActiveIndex();\n\t\t\t\tif (\n\t\t\t\t\tactiveIndex != null &&\n\t\t\t\t\t!isIndexOutOfListBounds(listRef.current, activeIndex)\n\t\t\t\t) {\n\t\t\t\t\tindexRef.current = activeIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst orientation = getOrientation();\n\t\t\tconst rtl = getRtl();\n\t\t\tconst nested = getNested();\n\t\t\tconst cols = getCols();\n\t\t\tconst virtual = getVirtual();\n\t\t\tconst disabledIndices = getDisabledIndices();\n\t\t\tconst loopFocus = getLoopFocus();\n\t\t\tconst allowEscape = getAllowEscape();\n\n\t\t\tif (\n\t\t\t\tnested &&\n\t\t\t\tisCrossOrientationCloseKey(event.key, orientation, rtl, cols)\n\t\t\t) {\n\t\t\t\t// If the nested close key matches the parent navigation key, let\n\t\t\t\t// the parent navigate; otherwise swallow the event.\n\t\t\t\tif (\n\t\t\t\t\t!isMainOrientationKey(event.key, getParentOrientation() ?? \"vertical\")\n\t\t\t\t) {\n\t\t\t\t\tstopEvent(event);\n\t\t\t\t}\n\n\t\t\t\tstore.setOpen(\n\t\t\t\t\tfalse,\n\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\tREASONS.listNavigation,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t);\n\n\t\t\t\tconst domReferenceElement = store.state.domReferenceElement;\n\t\t\t\tif (isHTMLElement(domReferenceElement)) {\n\t\t\t\t\tif (virtual) {\n\t\t\t\t\t\ttree?.events.emit(\"virtualfocus\", domReferenceElement);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(domReferenceElement as HTMLElement).focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentIndex = indexRef.current;\n\t\t\tconst minIndex = getMinListIndex(listRef, disabledIndices);\n\t\t\tconst maxIndex = getMaxListIndex(listRef, disabledIndices);\n\n\t\t\tconst domReferenceElement = store.state.domReferenceElement;\n\t\t\tconst typeableComboboxReference = isTypeableCombobox(domReferenceElement);\n\n\t\t\tif (!typeableComboboxReference) {\n\t\t\t\tif (event.key === \"Home\") {\n\t\t\t\t\tstopEvent(event);\n\t\t\t\t\tindexRef.current = minIndex;\n\t\t\t\t\tonNavigate(event);\n\t\t\t\t}\n\t\t\t\tif (event.key === \"End\") {\n\t\t\t\t\tstopEvent(event);\n\t\t\t\t\tindexRef.current = maxIndex;\n\t\t\t\t\tonNavigate(event);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Grid navigation.\n\t\t\tif (cols > 1) {\n\t\t\t\tconst sizes = Array.from({ length: listRef.current.length }, () => ({\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1,\n\t\t\t\t}));\n\t\t\t\tconst cellMap = createGridCellMap(sizes, cols, false);\n\t\t\t\tconst minGridIndex = cellMap.findIndex(\n\t\t\t\t\t(index) =>\n\t\t\t\t\t\tindex != null &&\n\t\t\t\t\t\t!isListIndexDisabled(listRef.current, index, disabledIndices),\n\t\t\t\t);\n\t\t\t\tconst maxGridIndex = cellMap.reduce(\n\t\t\t\t\t(foundIndex: number, index, cellIndex) =>\n\t\t\t\t\t\tindex != null &&\n\t\t\t\t\t\t!isListIndexDisabled(listRef.current, index, disabledIndices)\n\t\t\t\t\t\t\t? cellIndex\n\t\t\t\t\t\t\t: foundIndex,\n\t\t\t\t\t-1,\n\t\t\t\t);\n\n\t\t\t\tconst index =\n\t\t\t\t\tcellMap[\n\t\t\t\t\t\tgetGridNavigatedIndex(\n\t\t\t\t\t\t\tcellMap.map((itemIndex) =>\n\t\t\t\t\t\t\t\titemIndex != null ? listRef.current[itemIndex] : null,\n\t\t\t\t\t\t\t) as Array<HTMLElement | null>,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\torientation,\n\t\t\t\t\t\t\t\tloopFocus,\n\t\t\t\t\t\t\t\trtl,\n\t\t\t\t\t\t\t\tcols,\n\t\t\t\t\t\t\t\tdisabledIndices: getGridCellIndices(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t...((typeof disabledIndices !== \"function\"\n\t\t\t\t\t\t\t\t\t\t\t? disabledIndices\n\t\t\t\t\t\t\t\t\t\t\t: null) ||\n\t\t\t\t\t\t\t\t\t\t\tlistRef.current.map((_, listIndex) =>\n\t\t\t\t\t\t\t\t\t\t\t\tisListIndexDisabled(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlistRef.current,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlistIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabledIndices,\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t? listIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\t)),\n\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tcellMap,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tminIndex: minGridIndex,\n\t\t\t\t\t\t\t\tmaxIndex: maxGridIndex,\n\t\t\t\t\t\t\t\tprevIndex: getGridCellIndexOfCorner(\n\t\t\t\t\t\t\t\t\tindexRef.current > maxIndex ? minIndex : indexRef.current,\n\t\t\t\t\t\t\t\t\tsizes,\n\t\t\t\t\t\t\t\t\tcellMap,\n\t\t\t\t\t\t\t\t\tcols,\n\t\t\t\t\t\t\t\t\tevent.key === ARROW_DOWN\n\t\t\t\t\t\t\t\t\t\t? \"bl\"\n\t\t\t\t\t\t\t\t\t\t: event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)\n\t\t\t\t\t\t\t\t\t\t\t? \"tr\"\n\t\t\t\t\t\t\t\t\t\t\t: \"tl\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstopEvent: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t];\n\n\t\t\t\tif (index != null) {\n\t\t\t\t\tindexRef.current = index;\n\t\t\t\t\tonNavigate(event);\n\t\t\t\t}\n\n\t\t\t\tif (orientation === \"both\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isMainOrientationKey(event.key, orientation)) {\n\t\t\t\tstopEvent(event);\n\n\t\t\t\tconst ct = event.currentTarget as HTMLElement | null;\n\t\t\t\t// Reset if no item is focused.\n\t\t\t\tif (\n\t\t\t\t\tstore.state.open &&\n\t\t\t\t\t!virtual &&\n\t\t\t\t\tct &&\n\t\t\t\t\tactiveElement(ct.ownerDocument) === ct\n\t\t\t\t) {\n\t\t\t\t\tindexRef.current = isMainOrientationToEndKey(\n\t\t\t\t\t\tevent.key,\n\t\t\t\t\t\torientation,\n\t\t\t\t\t\trtl,\n\t\t\t\t\t)\n\t\t\t\t\t\t? minIndex\n\t\t\t\t\t\t: maxIndex;\n\t\t\t\t\tonNavigate(event);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n\t\t\t\t\tif (loopFocus) {\n\t\t\t\t\t\tif (currentIndex >= maxIndex) {\n\t\t\t\t\t\t\tif (allowEscape && currentIndex !== listRef.current.length) {\n\t\t\t\t\t\t\t\tindexRef.current = -1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Give time for virtualizers to update the listRef.\n\t\t\t\t\t\t\t\tforceSyncFocusRef.current = false;\n\t\t\t\t\t\t\t\tindexRef.current = minIndex;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindexRef.current = findNonDisabledListIndex(listRef.current, {\n\t\t\t\t\t\t\t\tstartingIndex: currentIndex,\n\t\t\t\t\t\t\t\tdisabledIndices,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindexRef.current = Math.min(\n\t\t\t\t\t\t\tmaxIndex,\n\t\t\t\t\t\t\tfindNonDisabledListIndex(listRef.current, {\n\t\t\t\t\t\t\t\tstartingIndex: currentIndex,\n\t\t\t\t\t\t\t\tdisabledIndices,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (loopFocus) {\n\t\t\t\t\tif (currentIndex <= minIndex) {\n\t\t\t\t\t\tif (allowEscape && currentIndex !== -1) {\n\t\t\t\t\t\t\tindexRef.current = listRef.current.length;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tforceSyncFocusRef.current = false;\n\t\t\t\t\t\t\tindexRef.current = maxIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindexRef.current = findNonDisabledListIndex(listRef.current, {\n\t\t\t\t\t\t\tstartingIndex: currentIndex,\n\t\t\t\t\t\t\tdecrement: true,\n\t\t\t\t\t\t\tdisabledIndices,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tindexRef.current = Math.max(\n\t\t\t\t\t\tminIndex,\n\t\t\t\t\t\tfindNonDisabledListIndex(listRef.current, {\n\t\t\t\t\t\t\tstartingIndex: currentIndex,\n\t\t\t\t\t\t\tdecrement: true,\n\t\t\t\t\t\t\tdisabledIndices,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (isIndexOutOfListBounds(listRef.current, indexRef.current)) {\n\t\t\t\t\tindexRef.current = -1;\n\t\t\t\t}\n\n\t\t\t\tonNavigate(event);\n\t\t\t}\n\t\t},\n\t);\n\n\tconst floating: ElementProps[\"floating\"] = {\n\t\tget \"aria-orientation\"() {\n\t\t\tconst orientation = getOrientation();\n\t\t\treturn orientation === \"both\" ? undefined : orientation;\n\t\t},\n\t\t// `aria-activedescendant` is wired reactively so consumers see the\n\t\t// current index without re-running the component body. The `virtual`\n\t\t// gate is checked inside.\n\t\tget \"aria-activedescendant\"() {\n\t\t\tif (!getVirtual() || !store.state.open) return undefined;\n\t\t\tconst activeIndex = getActiveIndex();\n\t\t\tif (activeIndex == null) return undefined;\n\t\t\tconst typeableComboboxReference = isTypeableCombobox(\n\t\t\t\tstore.state.domReferenceElement,\n\t\t\t);\n\t\t\tif (typeableComboboxReference) return undefined;\n\t\t\tconst id = getId();\n\t\t\treturn `${id}-${activeIndex}`;\n\t\t},\n\t\tonKeyDown(event: KeyboardEvent) {\n\t\t\tconst virtual = getVirtual();\n\t\t\tconst open = store.state.open;\n\n\t\t\t// Close submenu on Shift+Tab\n\t\t\tif (event.key === \"Tab\" && event.shiftKey && open && !virtual) {\n\t\t\t\tconst target = getTarget(event) as Element | null;\n\t\t\t\tconst floatingFocusEl = getFloatingFocusElement(\n\t\t\t\t\tstore.state.floatingElement,\n\t\t\t\t);\n\t\t\t\t// If originated within a nested element, let the nested focus\n\t\t\t\t// manager handle Tab.\n\t\t\t\tif (target && !contains(floatingFocusEl, target)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstopEvent(event);\n\t\t\t\tstore.setOpen(\n\t\t\t\t\tfalse,\n\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\tREASONS.focusOut,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t);\n\n\t\t\t\tconst domReferenceElement = store.state.domReferenceElement;\n\t\t\t\tif (isHTMLElement(domReferenceElement)) {\n\t\t\t\t\t(domReferenceElement as HTMLElement).focus();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcommonOnKeyDown(event);\n\t\t},\n\t\tonPointerMove() {\n\t\t\tisPointerModalityRef.current = true;\n\t\t},\n\t};\n\n\tconst triggerKeyDown = (event: KeyboardEvent) => {\n\t\t// Non-reactive open snapshot (matches React's `store.select('open')`).\n\t\tconst currentOpen = store.state.open;\n\t\tisPointerModalityRef.current = false;\n\n\t\tconst orientation = getOrientation();\n\t\tconst rtl = getRtl();\n\t\tconst nested = getNested();\n\t\tconst virtual = getVirtual();\n\t\tconst openOnArrowKeyDown = getOpenOnArrowKeyDown();\n\n\t\tconst isArrowKey = event.key.startsWith(\"Arrow\");\n\t\tconst isParentCrossOpenKey = isCrossOrientationOpenKey(\n\t\t\tevent.key,\n\t\t\tgetParentOrientation() ?? \"vertical\",\n\t\t\trtl,\n\t\t);\n\t\tconst isMainKey = isMainOrientationKey(event.key, orientation);\n\t\tconst isNavigationKey =\n\t\t\t(nested ? isParentCrossOpenKey : isMainKey) ||\n\t\t\tevent.key === \"Enter\" ||\n\t\t\tevent.key.trim() === \"\";\n\n\t\tif (virtual && currentOpen) {\n\t\t\treturn commonOnKeyDown(event);\n\t\t}\n\n\t\t// Don't stash `activeIndex` while closed if arrow-key-down is opt-out.\n\t\tif (!currentOpen && !openOnArrowKeyDown && isArrowKey) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (isNavigationKey) {\n\t\t\tconst isParentMainKey = isMainOrientationKey(\n\t\t\t\tevent.key,\n\t\t\t\tgetParentOrientation() ?? \"vertical\",\n\t\t\t);\n\t\t\tkeyRef.current = nested && isParentMainKey ? null : event.key;\n\t\t}\n\n\t\tif (nested) {\n\t\t\tif (isParentCrossOpenKey) {\n\t\t\t\tstopEvent(event);\n\n\t\t\t\tif (currentOpen) {\n\t\t\t\t\tindexRef.current = getMinListIndex(listRef, getDisabledIndices());\n\t\t\t\t\tonNavigate(event);\n\t\t\t\t} else {\n\t\t\t\t\tstore.setOpen(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\t\tREASONS.listNavigation,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\tevent.currentTarget as HTMLElement,\n\t\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (isMainKey) {\n\t\t\tconst selectedIndex = getSelectedIndex();\n\t\t\tif (selectedIndex != null) {\n\t\t\t\tindexRef.current = selectedIndex;\n\t\t\t}\n\n\t\t\tstopEvent(event);\n\n\t\t\tif (!currentOpen && openOnArrowKeyDown) {\n\t\t\t\tstore.setOpen(\n\t\t\t\t\ttrue,\n\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\tREASONS.listNavigation,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\tevent.currentTarget as HTMLElement,\n\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcommonOnKeyDown(event);\n\t\t\t}\n\n\t\t\tif (currentOpen) {\n\t\t\t\tonNavigate(event);\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t};\n\n\tconst checkVirtualMouse = (event: PointerEvent | MouseEvent) => {\n\t\tif (\n\t\t\tgetFocusItemOnOpen() === \"auto\" &&\n\t\t\tisVirtualClick(event as MouseEvent)\n\t\t) {\n\t\t\tfocusItemOnOpenRef.current = !getVirtual();\n\t\t}\n\t};\n\n\tconst checkVirtualPointer = (event: PointerEvent) => {\n\t\t// `pointerdown` fires first; reset then check.\n\t\tfocusItemOnOpenRef.current = getFocusItemOnOpen();\n\t\tif (getFocusItemOnOpen() === \"auto\" && isVirtualPointerEvent(event)) {\n\t\t\tfocusItemOnOpenRef.current = true;\n\t\t}\n\t};\n\n\tconst trigger: ElementProps[\"trigger\"] = {\n\t\tonKeyDown: triggerKeyDown,\n\t\tonFocus(event: FocusEvent) {\n\t\t\tif (store.state.open && !getVirtual()) {\n\t\t\t\tindexRef.current = -1;\n\t\t\t\tonNavigate(event);\n\t\t\t}\n\t\t},\n\t\tonPointerDown: checkVirtualPointer,\n\t\tonPointerEnter: checkVirtualPointer,\n\t\tonMouseDown: checkVirtualMouse,\n\t\tonClick: checkVirtualMouse,\n\t};\n\n\tconst reference: ElementProps[\"reference\"] = {\n\t\t// `aria-activedescendant` on the reference for virtual/combobox cases.\n\t\tget \"aria-activedescendant\"() {\n\t\t\tif (!getVirtual() || !store.state.open) return undefined;\n\t\t\tconst activeIndex = getActiveIndex();\n\t\t\tif (activeIndex == null) return undefined;\n\t\t\tconst id = getId();\n\t\t\treturn `${id}-${activeIndex}`;\n\t\t},\n\t\tonKeyDown: triggerKeyDown,\n\t\tonFocus(event: FocusEvent) {\n\t\t\tif (store.state.open && !getVirtual()) {\n\t\t\t\tindexRef.current = -1;\n\t\t\t\tonNavigate(event);\n\t\t\t}\n\t\t},\n\t\tonPointerDown: checkVirtualPointer,\n\t\tonPointerEnter: checkVirtualPointer,\n\t\tonMouseDown: checkVirtualMouse,\n\t\tonClick: checkVirtualMouse,\n\t};\n\n\t// Signalled enablement: when `enabled` is a literal `false`, React\n\t// returns `{}`. When it's an accessor, we always return the bag so\n\t// the attached handlers short-circuit internally when disabled. This\n\t// matches the hover/dismiss approach and preserves the \"flip enabled\n\t// off\" contract under tier-3a. Untrack the body-time `props.enabled`\n\t// access so the strict-read scope does not warn — accessor reads\n\t// flow through tracked effects/handlers below.\n\tconst isStaticallyDisabled = untrack(\n\t\t() => typeof props.enabled !== \"function\" && !getEnabled(),\n\t);\n\tif (isStaticallyDisabled) {\n\t\treturn {};\n\t}\n\n\treturn { reference, floating, item, trigger };\n}\n"],"mappings":"AAAA;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;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,SAASA,aAAa,QAAQ,wBAAwB;AACtD,SAASC,SAAS,EAAEC,OAAO,QAAQ,UAAU;AAC7C,SAECC,wBAAwB,EACxBC,OAAO,QACD,4BAA4B;AACnC,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,oBAAoB,QAAQ,uBAAuB;AAC5D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SACCC,uBAAuB,EACvBC,eAAe,QACT,6BAA6B;AAQpC,SACCC,iBAAiB,EACjBC,wBAAwB,EACxBC,wBAAwB,EACxBC,kBAAkB,EAClBC,qBAAqB,EACrBC,eAAe,EACfC,eAAe,EACfC,sBAAsB,EACtBC,mBAAmB,QACb,oBAAoB;AAC3B,SACCC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,QAAQ,QACF,oBAAoB;AAC3B,SACCC,aAAa,EACbC,uBAAuB,EACvBC,SAAS,EACTC,kBAAkB,QACZ,kBAAkB;AACzB,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SACCC,cAAc,EACdC,qBAAqB,EACrBC,SAAS,QACH,gBAAgB;AAEvB,MAAMC,MAAM,GAAG,QAAQ;AAEvB,SAA6BC,UAAU,QAAQ,sBAAsB;AAKrE,SAASC,QAAQA,CAChBC,WAAwB,EACxBC,QAAiB,EACjBC,UAAmB,EACT;EACV,QAAQF,WAAW;IAClB,KAAK,UAAU;MACd,OAAOC,QAAQ;IAChB,KAAK,YAAY;MAChB,OAAOC,UAAU;IAClB;MACC,OAAOD,QAAQ,IAAIC,UAAU;EAC/B;AACD;AAEA,SAASC,oBAAoBA,CAACC,GAAW,EAAEJ,WAAwB,EAAW;EAC7E,MAAMC,QAAQ,GAAGG,GAAG,KAAKhB,QAAQ,IAAIgB,GAAG,KAAKnB,UAAU;EACvD,MAAMiB,UAAU,GAAGE,GAAG,KAAKlB,UAAU,IAAIkB,GAAG,KAAKjB,WAAW;EAC5D,OAAOY,QAAQ,CAACC,WAAW,EAAEC,QAAQ,EAAEC,UAAU,CAAC;AACnD;AAEA,SAASG,yBAAyBA,CACjCD,GAAW,EACXJ,WAAwB,EACxBM,GAAY,EACF;EACV,MAAML,QAAQ,GAAGG,GAAG,KAAKnB,UAAU;EACnC,MAAMiB,UAAU,GAAGI,GAAG,GAAGF,GAAG,KAAKlB,UAAU,GAAGkB,GAAG,KAAKjB,WAAW;EACjE,OACCY,QAAQ,CAACC,WAAW,EAAEC,QAAQ,EAAEC,UAAU,CAAC,IAC3CE,GAAG,KAAK,OAAO,IACfA,GAAG,KAAK,GAAG,IACXA,GAAG,KAAK,EAAE;AAEZ;AAEA,SAASG,yBAAyBA,CACjCH,GAAW,EACXJ,WAAwB,EACxBM,GAAY,EACF;EACV,MAAML,QAAQ,GAAGK,GAAG,GAAGF,GAAG,KAAKlB,UAAU,GAAGkB,GAAG,KAAKjB,WAAW;EAC/D,MAAMe,UAAU,GAAGE,GAAG,KAAKnB,UAAU;EACrC,OAAOc,QAAQ,CAACC,WAAW,EAAEC,QAAQ,EAAEC,UAAU,CAAC;AACnD;AAEA,SAASM,0BAA0BA,CAClCJ,GAAW,EACXJ,WAAwB,EACxBM,GAAY,EACZG,IAAa,EACH;EACV,MAAMR,QAAQ,GAAGK,GAAG,GAAGF,GAAG,KAAKjB,WAAW,GAAGiB,GAAG,KAAKlB,UAAU;EAC/D,MAAMgB,UAAU,GAAGE,GAAG,KAAKhB,QAAQ;EACnC,IACCY,WAAW,KAAK,MAAM,IACrBA,WAAW,KAAK,YAAY,IAAIS,IAAI,IAAIA,IAAI,GAAG,CAAE,EACjD;IACD,OAAOL,GAAG,KAAKP,MAAM;EACtB;EACA,OAAOE,QAAQ,CAACC,WAAW,EAAEC,QAAQ,EAAEC,UAAU,CAAC;AACnD;AA2GA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,iBAAiBA,CAChCC,OAA8C,EAC9CC,KAA6B,EACd;EACf,MAAMC,KAAK,GAAG,WAAW,IAAIF,OAAO,GAAGA,OAAO,CAACG,SAAS,GAAGH,OAAO;EAClE,MAAMI,OAAO,GAAGF,KAAK,CAACF,OAAO,CAACI,OAAO;;EAErC;EACA;EACA,MAAM;IACLC,OAAO;IACPC,UAAU,EAAEC,cAAc;IAC1BC;EACD,CAAC,GAAGpD,OAAO,CAAC,OAAO;IAClBiD,OAAO,EAAEJ,KAAK,CAACI,OAAO;IACtBC,UAAU,EAAEL,KAAK,CAACK,UAAU;IAC5BE,YAAY,EAAEP,KAAK,CAACO;EACrB,CAAC,CAAC,CAAC;;EAEH;EACA,MAAMC,cAAc,GAAGA,CAAA,KAAqBtB,UAAU,CAACc,KAAK,CAACS,WAAW,CAAC;EACzE,MAAMC,UAAU,GAAGA,CAAA,KAClBV,KAAK,CAACW,OAAO,KAAKC,SAAS,GAAG,IAAI,GAAG1B,UAAU,CAACc,KAAK,CAACW,OAAO,CAAC;EAC/D,MAAME,gBAAgB,GAAGA,CAAA,KAAqB;IAC7C,MAAMC,CAAC,GAAGd,KAAK,CAACe,aAAa;IAC7B,IAAID,CAAC,KAAKF,SAAS,EAAE,OAAO,IAAI;IAChC,MAAMI,IAAI,GAAG9B,UAAU,CAAC4B,CAAC,CAAC;IAC1B,OAAOE,IAAI,IAAI,IAAI;EACpB,CAAC;EACD,MAAMC,kBAAkB,GAAGA,CAAA,KAC1BjB,KAAK,CAACkB,eAAe,KAAKN,SAAS,GAChC,MAAM,GACN1B,UAAU,CAACc,KAAK,CAACkB,eAAe,CAAC;EACrC,MAAMC,mBAAmB,GAAGA,CAAA,KAC3BnB,KAAK,CAACoB,gBAAgB,KAAKR,SAAS,GACjC,IAAI,GACJ1B,UAAU,CAACc,KAAK,CAACoB,gBAAgB,CAAC;EACtC,MAAMC,qBAAqB,GAAGA,CAAA,KAC7BrB,KAAK,CAACsB,kBAAkB,KAAKV,SAAS,GACnC,IAAI,GACJ1B,UAAU,CAACc,KAAK,CAACsB,kBAAkB,CAAC;EACxC,MAAMC,kBAAkB,GAAGA,CAAA,KAC1BvB,KAAK,CAACwB,eAAe,KAAKZ,SAAS,GAChCA,SAAS,GACT1B,UAAU,CAACc,KAAK,CAACwB,eAAe,CAAC;EACrC,MAAMC,cAAc,GAAGA,CAAA,KACtBzB,KAAK,CAAC0B,WAAW,KAAKd,SAAS,GAAG,KAAK,GAAG1B,UAAU,CAACc,KAAK,CAAC0B,WAAW,CAAC;EACxE,MAAMC,YAAY,GAAGA,CAAA,KACpB3B,KAAK,CAAC4B,SAAS,KAAKhB,SAAS,GAAG,KAAK,GAAG1B,UAAU,CAACc,KAAK,CAAC4B,SAAS,CAAC;EACpE,MAAMC,SAAS,GAAGA,CAAA,KACjB7B,KAAK,CAAC8B,MAAM,KAAKlB,SAAS,GAAG,KAAK,GAAG1B,UAAU,CAACc,KAAK,CAAC8B,MAAM,CAAC;EAC9D,MAAMC,wBAAwB,GAAGA,CAAA,KAChC/B,KAAK,CAACgC,iBAAiB,KAAKpB,SAAS,GAClCA,SAAS,GACT1B,UAAU,CAACc,KAAK,CAACgC,iBAAiB,CAAC;EACvC,MAAMC,MAAM,GAAGA,CAAA,KACdjC,KAAK,CAACN,GAAG,KAAKkB,SAAS,GAAG,KAAK,GAAG1B,UAAU,CAACc,KAAK,CAACN,GAAG,CAAC;EACxD,MAAMwC,UAAU,GAAGA,CAAA,KAClBlC,KAAK,CAACmC,OAAO,KAAKvB,SAAS,GAAG,KAAK,GAAG1B,UAAU,CAACc,KAAK,CAACmC,OAAO,CAAC;EAChE,MAAMC,cAAc,GAAGA,CAAA,KACtBpC,KAAK,CAACZ,WAAW,KAAKwB,SAAS,GAC5B,UAAU,GACV1B,UAAU,CAACc,KAAK,CAACZ,WAAW,CAAC;EACjC,MAAMiD,OAAO,GAAGA,CAAA,KACfrC,KAAK,CAACH,IAAI,KAAKe,SAAS,GAAG,CAAC,GAAG1B,UAAU,CAACc,KAAK,CAACH,IAAI,CAAC;EACtD,MAAMyC,KAAK,GAAGA,CAAA,KACbtC,KAAK,CAACuC,EAAE,KAAK3B,SAAS,GAAGA,SAAS,GAAG1B,UAAU,CAACc,KAAK,CAACuC,EAAE,CAAC;EAC1D,MAAMC,sBAAsB,GAAGA,CAAA,KAC9BxC,KAAK,CAACyC,mBAAmB,KAAK7B,SAAS,GACpC,IAAI,GACJ1B,UAAU,CAACc,KAAK,CAACyC,mBAAmB,CAAC;EAEzC,MAAMC,QAAQ,GAAGhF,uBAAuB,CAAC,CAAC;EAC1C,MAAMiF,IAAI,GAAGhF,eAAe,CAAC4C,YAAY,CAAC;;EAE1C;EACA;EACA;EACA9C,kBAAkB,CACjB,MAAM2E,cAAc,CAAC,CAAC,EACrBhD,WAAW,IAAK;IAChBe,OAAO,CAACyC,OAAO,CAACxD,WAAW,GAAGA,WAAW;EAC1C,CACD,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMyD,kBAAgD,GAAG;IACxDD,OAAO,EAAEzF,OAAO,CAAC,MAAM8D,kBAAkB,CAAC,CAAC;EAC5C,CAAC;EACD,MAAM6B,QAA4B,GAAG;IACpCF,OAAO,EAAEzF,OAAO,CAAC,MAAM0D,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;EAChD,CAAC;EACD,MAAMkC,MAAiC,GAAG;IAAEH,OAAO,EAAE;EAAK,CAAC;EAC3D,MAAMI,oBAAyC,GAAG;IAAEJ,OAAO,EAAE;EAAK,CAAC;EACnE,MAAMK,kBAAuC,GAAG;IAC/CL,OAAO,EAAEzF,OAAO,CAAC,MAAM,CAAC,CAAC8C,KAAK,CAACiD,KAAK,CAACC,eAAe;EACrD,CAAC;EACD,MAAMC,eAAoC,GAAG;IAC5CR,OAAO,EAAEzF,OAAO,CAAC,MAAM8C,KAAK,CAACiD,KAAK,CAACG,IAAI;EACxC,CAAC;EACD,MAAMC,iBAAsC,GAAG;IAAEV,OAAO,EAAE;EAAM,CAAC;EACjE,MAAMW,sBAA2C,GAAG;IAAEX,OAAO,EAAE;EAAM,CAAC;EACtE,MAAMY,oBAAqD,GAAG;IAC7DZ,OAAO,EAAE;EACV,CAAC;EAED,IAAIa,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IAC1C,MAAMjC,WAAW,GAAGD,cAAc,CAAC,CAAC;IACpC,MAAMG,SAAS,GAAGD,YAAY,CAAC,CAAC;IAChC,MAAMQ,OAAO,GAAGD,UAAU,CAAC,CAAC;IAC5B,MAAM9C,WAAW,GAAGgD,cAAc,CAAC,CAAC;IACpC,MAAMvC,IAAI,GAAGwC,OAAO,CAAC,CAAC;IAEtB,IAAIX,WAAW,EAAE;MAChB,IAAI,CAACE,SAAS,EAAE;QACfgC,OAAO,CAACC,IAAI,CACX,gEACD,CAAC;MACF;MACA,IAAI,CAAC1B,OAAO,EAAE;QACbyB,OAAO,CAACC,IAAI,CAAC,wDAAwD,CAAC;MACvE;IACD;IACA,IAAIzE,WAAW,KAAK,UAAU,IAAIS,IAAI,GAAG,CAAC,EAAE;MAC3C+D,OAAO,CAACC,IAAI,CACX,qEAAqE,EACrE,mCACD,CAAC;IACF;EACD;EAEA,MAAMxD,UAAU,GAAG7C,oBAAoB,CACtC,MAAOsG,KAAyB,IAAK;IACpCxD,cAAc,GACbwC,QAAQ,CAACF,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,GAAGE,QAAQ,CAACF,OAAO,EACjDkB,KACD,CAAC;EACF,CACD,CAAC;EAED,MAAMC,qBAAsE,GAC3E;IACCnB,OAAO,EAAEvC;EACV,CAAC;EAEF,MAAM2D,SAAS,GAAGxG,oBAAoB,CAAa,MAAM,MAAM;IAC9D,MAAM2E,OAAO,GAAGD,UAAU,CAAC,CAAC;IAC5B,MAAM+B,IAAI,GAAG7D,OAAO,CAACwC,OAAO;IAE5B,SAASsB,QAAQA,CAACC,IAAiB,EAAE;MACpC,IAAIhC,OAAO,EAAE;QACZQ,IAAI,EAAEyB,MAAM,CAACC,IAAI,CAAC,cAAc,EAAEF,IAAI,CAAC;MACxC,CAAC,MAAM;QACNX,oBAAoB,CAACZ,OAAO,GAAG/D,YAAY,CAACsF,IAAI,EAAE;UACjDG,IAAI,EAAEhB,iBAAiB,CAACV,OAAO;UAC/B2B,aAAa,EAAE;QAChB,CAAC,CAAC;MACH;IACD;IAEA,MAAMC,WAAW,GAAGP,IAAI,CAACnB,QAAQ,CAACF,OAAO,CAAC;IAC1C,MAAM6B,mBAAmB,GAAGlB,sBAAsB,CAACX,OAAO;IAE1D,IAAI4B,WAAW,EAAE;MAChBN,QAAQ,CAACM,WAAW,CAAC;IACtB;IAEA,MAAME,SAAS,GAAGpB,iBAAiB,CAACV,OAAO,GACvC9B,CAAa,IAAKA,CAAC,CAAC,CAAC,GACrBA,CAAa,IAAK6D,qBAAqB,CAAC7D,CAAC,CAAC;IAE9C4D,SAAS,CAAC,MAAM;MACf,MAAME,UAAU,GAAGxE,OAAO,CAACwC,OAAO,CAACE,QAAQ,CAACF,OAAO,CAAC,IAAI4B,WAAW;MAEnE,IAAI,CAACI,UAAU,EAAE;QAChB;MACD;MAEA,IAAI,CAACJ,WAAW,EAAE;QACjBN,QAAQ,CAACU,UAAU,CAAC;MACrB;MAEA,MAAMC,oBAAoB,GACzBD,UAAU,KAAKH,mBAAmB,IAAI,CAACzB,oBAAoB,CAACJ,OAAO,CAAC;MAErE,IAAIiC,oBAAoB,EAAE;QACzB;QACAD,UAAU,CAACE,cAAc,GAAG;UAAEC,KAAK,EAAE,SAAS;UAAEC,MAAM,EAAE;QAAU,CAAC,CAAC;MACrE;IACD,CAAC,CAAC;EACH,CAAC,CAAC;;EAEF;EACAvH,kBAAkB,CACjB,MAAM;IACL,IAAI,CAACiD,UAAU,CAAC,CAAC,EAAE,OAAO,IAAI;IAC9B,OAAO;MACN2C,IAAI,EAAEpD,KAAK,CAACiD,KAAK,CAACG,IAAI;MACtBF,eAAe,EAAElD,KAAK,CAACiD,KAAK,CAACC,eAAe;MAC5CpC,aAAa,EAAEF,gBAAgB,CAAC;IACjC,CAAC;EACF,CAAC,EACAoE,QAAQ,IAAK;IACb,IAAIA,QAAQ,IAAI,IAAI,EAAE;IACtB,MAAM;MAAE5B,IAAI;MAAEF,eAAe;MAAEpC;IAAc,CAAC,GAAGkE,QAAQ;IAEzD,IAAI5B,IAAI,IAAIF,eAAe,EAAE;MAC5BL,QAAQ,CAACF,OAAO,GAAG7B,aAAa,IAAI,CAAC,CAAC;MACtC,IAAI8B,kBAAkB,CAACD,OAAO,IAAI7B,aAAa,IAAI,IAAI,EAAE;QACxDwC,sBAAsB,CAACX,OAAO,GAAG,IAAI;QACrCvC,UAAU,CAAC,CAAC;MACb;IACD,CAAC,MAAM,IAAI4C,kBAAkB,CAACL,OAAO,EAAE;MACtC;MACA;MACA;MACAE,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;MACrBmB,qBAAqB,CAACnB,OAAO,CAAC,CAAC;IAChC;EACD,CACD,CAAC;;EAED;EACAnF,kBAAkB,CACjB,MAAM;IACL,IAAI,CAACiD,UAAU,CAAC,CAAC,EAAE,OAAO,IAAI;IAC9B;IACA;IACA;IACA,OAAO;MACN2C,IAAI,EAAEpD,KAAK,CAACiD,KAAK,CAACG,IAAI;MACtBF,eAAe,EAAElD,KAAK,CAACiD,KAAK,CAACC,eAAe;MAC5C1C,WAAW,EAAED,cAAc,CAAC,CAAC;MAC7BO,aAAa,EAAEF,gBAAgB,CAAC,CAAC;MACjCzB,WAAW,EAAEgD,cAAc,CAAC,CAAC;MAC7B1C,GAAG,EAAEuC,MAAM,CAAC,CAAC;MACbH,MAAM,EAAED,SAAS,CAAC;IACnB,CAAC;EACF,CAAC,EACAoD,QAAQ,IAAK;IACb,IAAIA,QAAQ,IAAI,IAAI,EAAE;IACtB,MAAM;MACL5B,IAAI;MACJF,eAAe;MACf1C,WAAW;MACXM,aAAa;MACb3B,WAAW;MACXM,GAAG;MACHoC;IACD,CAAC,GAAGmD,QAAQ;IAEZ,IAAI,CAAC5B,IAAI,EAAE;MACVC,iBAAiB,CAACV,OAAO,GAAG,KAAK;MACjC;IACD;IACA,IAAI,CAACO,eAAe,EAAE;IAEtB,IAAI1C,WAAW,IAAI,IAAI,EAAE;MACxB6C,iBAAiB,CAACV,OAAO,GAAG,KAAK;MAEjC,IAAI7B,aAAa,IAAI,IAAI,EAAE;QAC1B;MACD;;MAEA;MACA,IAAIkC,kBAAkB,CAACL,OAAO,EAAE;QAC/BE,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;QACrBoB,SAAS,CAAC,CAAC;MACZ;MAEA,IACC,CAAC,CAACZ,eAAe,CAACR,OAAO,IAAI,CAACK,kBAAkB,CAACL,OAAO,KACxDC,kBAAkB,CAACD,OAAO,KACzBG,MAAM,CAACH,OAAO,IAAI,IAAI,IACrBC,kBAAkB,CAACD,OAAO,KAAK,IAAI,IAAIG,MAAM,CAACH,OAAO,IAAI,IAAK,CAAC,EAChE;QACD,IAAIsC,IAAI,GAAG,CAAC;QACZ,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;UAClC,IAAI/E,OAAO,CAACwC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC/B,IAAIsC,IAAI,GAAG,CAAC,EAAE;cACb,MAAMR,SAAS,GAAGQ,IAAI,GAClBpE,CAAa,IAAK6D,qBAAqB,CAAC7D,CAAC,CAAC,GAC1CA,CAAa,IAAKsE,cAAc,CAACtE,CAAC,CAAC;cACvC4D,SAAS,CAACS,oBAAoB,CAAC;YAChC;YACAD,IAAI,IAAI,CAAC;UACV,CAAC,MAAM;YACNpC,QAAQ,CAACF,OAAO,GACfG,MAAM,CAACH,OAAO,IAAI,IAAI,IACtBnD,yBAAyB,CAACsD,MAAM,CAACH,OAAO,EAAExD,WAAW,EAAEM,GAAG,CAAC,IAC3DoC,MAAM,GACH5D,eAAe,CAACkC,OAAO,CAAC,GACxBnC,eAAe,CAACmC,OAAO,CAAC;YAC5B2C,MAAM,CAACH,OAAO,GAAG,IAAI;YACrBvC,UAAU,CAAC,CAAC;UACb;QACD,CAAC;QACD8E,oBAAoB,CAAC,CAAC;MACvB;IACD,CAAC,MAAM,IAAI,CAAChH,sBAAsB,CAACiC,OAAO,CAACwC,OAAO,EAAEnC,WAAW,CAAC,EAAE;MACjEqC,QAAQ,CAACF,OAAO,GAAGnC,WAAW;MAC9BuD,SAAS,CAAC,CAAC;MACXT,sBAAsB,CAACX,OAAO,GAAG,KAAK;IACvC;EACD,CACD,CAAC;;EAED;EACA;EACAnF,kBAAkB,CACjB,OAAO;IACN0F,eAAe,EAAElD,KAAK,CAACiD,KAAK,CAACC,eAAe;IAC5ChB,OAAO,EAAED,UAAU,CAAC,CAAC;IACrBvB,OAAO,EAAED,UAAU,CAAC;EACrB,CAAC,CAAC,EACDuE,QAAQ,IAAK;IACb,MAAM;MAAE9B,eAAe;MAAEhB,OAAO;MAAExB;IAAQ,CAAC,GAAGsE,QAAQ;IACtD,IACC,CAACtE,OAAO,IACRwC,eAAe,IACf,CAACR,IAAI,IACLR,OAAO,IACP,CAACc,kBAAkB,CAACL,OAAO,EAC1B;MACD;IACD;;IAEA;IACA,MAAMyC,KAAK,GAAG1C,IAAI,CAAC2C,QAAQ,CAAC1C,OAAO;IACnC,MAAM2C,MAAM,GAAGpI,OAAO,CACrB,MACCkI,KAAK,CAACG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAAClD,EAAE,KAAKG,QAAQ,CAAC,EAAE3C,OAAO,EAAE2F,QAAQ,CAC3DC,QACJ,CAAC;IACD,MAAMC,QAAQ,GAAGnH,aAAa,CAAClB,aAAa,CAAC4F,eAAe,CAAC,CAAC;IAC9D,MAAM0C,oBAAoB,GAAG1I,OAAO,CAAC,MACpCkI,KAAK,CAACS,IAAI,CACRL,IAAI,IACJA,IAAI,CAAC1F,OAAO,IAAIzC,QAAQ,CAACmI,IAAI,CAAC1F,OAAO,CAAC2F,QAAQ,CAACC,QAAQ,EAAEC,QAAQ,CACnE,CACD,CAAC;IAED,IAAIL,MAAM,IAAI,CAACM,oBAAoB,IAAI7C,oBAAoB,CAACJ,OAAO,EAAE;MACpE2C,MAAM,CAACQ,KAAK,CAAC;QAAExB,aAAa,EAAE;MAAK,CAAC,CAAC;IACtC;EACD,CACD,CAAC;;EAED;EACA;EACA9G,kBAAkB,CACjB,OAAO;IACN4F,IAAI,EAAEpD,KAAK,CAACiD,KAAK,CAACG,IAAI;IACtBF,eAAe,EAAElD,KAAK,CAACiD,KAAK,CAACC;EAC9B,CAAC,CAAC,EACD8B,QAAQ,IAAK;IACblB,qBAAqB,CAACnB,OAAO,GAAGvC,UAAU;IAC1C+C,eAAe,CAACR,OAAO,GAAGqC,QAAQ,CAAC5B,IAAI;IACvCJ,kBAAkB,CAACL,OAAO,GAAG,CAAC,CAACqC,QAAQ,CAAC9B,eAAe;EACxD,CACD,CAAC;;EAED;EACA1F,kBAAkB,CACjB,OAAO;IACN4F,IAAI,EAAEpD,KAAK,CAACiD,KAAK,CAACG,IAAI;IACtBnC,eAAe,EAAED,kBAAkB,CAAC;EACrC,CAAC,CAAC,EACDgE,QAAQ,IAAK;IACb,IAAI,CAACA,QAAQ,CAAC5B,IAAI,EAAE;MACnBN,MAAM,CAACH,OAAO,GAAG,IAAI;MACrBC,kBAAkB,CAACD,OAAO,GAAGqC,QAAQ,CAAC/D,eAAe;IACtD;EACD,CACD,CAAC;;EAED;EACA;EACA;EACAhE,SAAS,CAAC,MAAM;IACfsG,oBAAoB,CAACZ,OAAO,GAAG,CAAC;IAChCY,oBAAoB,CAACZ,OAAO,GAAG,IAAI;EACpC,CAAC,CAAC;EAEF,MAAMoD,iBAAiB,GAAGxI,oBAAoB,CAE5C,MAAOsG,KAAK,IAAK;IAClB,IAAI,CAAC7D,KAAK,CAACiD,KAAK,CAACG,IAAI,EAAE;IAEvB,MAAMY,IAAI,GAAG7D,OAAO,CAACwC,OAAO;IAC5B,MAAMqD,KAAK,GAAGhC,IAAI,CAACiC,OAAO,CAACpC,KAAK,CAACqC,aAA4B,CAAC;IAC9D;IACA;IACA;IACA,MAAM1F,WAAW,GAAGtD,OAAO,CAACqD,cAAc,CAAC;IAC3C,IAAIyF,KAAK,KAAK,CAAC,CAAC,KAAKnD,QAAQ,CAACF,OAAO,KAAKqD,KAAK,IAAIxF,WAAW,KAAKwF,KAAK,CAAC,EAAE;MAC1EnD,QAAQ,CAACF,OAAO,GAAGqD,KAAK;MACxB5F,UAAU,CAACyD,KAAK,CAAC;IAClB;EACD,CAAC,CAAC;EAEF,MAAMK,IAA0B,GAAG;IAClCiC,OAAOA,CAACtC,KAAiB,EAAE;MAC1BR,iBAAiB,CAACV,OAAO,GAAG,IAAI;MAChCoD,iBAAiB,CAAClC,KAAsD,CAAC;IAC1E,CAAC;IACD;IACAuC,OAAOA,CAACvC,KAAiB,EAAE;MACzBA,KAAK,CAACqC,aAAa,CAAiBJ,KAAK,CAAC;QAAExB,aAAa,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC;IACD+B,WAAWA,CAACxC,KAAiB,EAAE;MAC9BR,iBAAiB,CAACV,OAAO,GAAG,IAAI;MAChCW,sBAAsB,CAACX,OAAO,GAAG,KAAK;MACtC,IAAIzB,mBAAmB,CAAC,CAAC,EAAE;QAC1B6E,iBAAiB,CAChBlC,KACD,CAAC;MACF;IACD,CAAC;IACDyC,cAAcA,CAACzC,KAAmB,EAAE;MACnC,IACC,CAAC7D,KAAK,CAACiD,KAAK,CAACG,IAAI,IACjB,CAACL,oBAAoB,CAACJ,OAAO,IAC7BkB,KAAK,CAAC0C,WAAW,KAAK,OAAO,EAC5B;QACD;MACD;MAEAlD,iBAAiB,CAACV,OAAO,GAAG,IAAI;MAEhC,MAAM6D,aAAa,GAAG3C,KAAK,CAAC2C,aAAmC;MAE/D,IAAI,CAACtF,mBAAmB,CAAC,CAAC,IAAIf,OAAO,CAACwC,OAAO,CAAC8D,QAAQ,CAACD,aAAa,CAAC,EAAE;QACtE;MACD;MAEA,IAAI,CAACjE,sBAAsB,CAAC,CAAC,EAAE;QAC9B;MACD;MAEAgB,oBAAoB,CAACZ,OAAO,GAAG,CAAC;MAChCY,oBAAoB,CAACZ,OAAO,GAAG,IAAI;MAEnCE,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;MACrBvC,UAAU,CAACyD,KAAK,CAAC;MAEjB,IAAI,CAAC5B,UAAU,CAAC,CAAC,EAAE;QAClB,MAAMyE,eAAe,GAAGjI,uBAAuB,CAC9CuB,KAAK,CAACiD,KAAK,CAACC,eACb,CAAC;QACD,MAAMyC,QAAQ,GAAGnH,aAAa,CAAClB,aAAa,CAACoJ,eAAe,CAAC,CAAC;QAC9D,IAAIA,eAAe,IAAIrJ,QAAQ,CAACqJ,eAAe,EAAEf,QAAQ,CAAC,EAAE;UAC3De,eAAe,CAACZ,KAAK,CAAC;YAAExB,aAAa,EAAE;UAAK,CAAC,CAAC;QAC/C;MACD;IACD;EACD,CAAC;EAED,MAAMqC,oBAAoB,GAAGA,CAAA,KAA+B;IAC3D,MAAMC,QAAQ,GAAG9E,wBAAwB,CAAC,CAAC;IAC3C,IAAI8E,QAAQ,KAAKjG,SAAS,EAAE,OAAOiG,QAAQ;IAC3C,OACElE,IAAI,EAAE2C,QAAQ,CAAC1C,OAAO,CAAC4C,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAAClD,EAAE,KAAKG,QAAQ,CAAC,EAAE3C,OAAO,EAClEI,OAAO,EAAEyC,OAAO,CAACxD,WAAW,IAAgCwB,SAAS;EAE1E,CAAC;EAED,MAAMkG,eAAe,GAAGtJ,oBAAoB,CAC3C,MAAOsG,KAAoB,IAAK;IAC/Bd,oBAAoB,CAACJ,OAAO,GAAG,KAAK;IACpCU,iBAAiB,CAACV,OAAO,GAAG,IAAI;;IAEhC;IACA,IAAKkB,KAAK,CAAwCiD,KAAK,KAAK,GAAG,EAAE;MAChE;IACD;IAEA,MAAMJ,eAAe,GAAGjI,uBAAuB,CAC9CuB,KAAK,CAACiD,KAAK,CAACC,eACb,CAAC;;IAED;IACA;IACA,IAAI,CAAClD,KAAK,CAACiD,KAAK,CAACG,IAAI,IAAIS,KAAK,CAACqC,aAAa,KAAKQ,eAAe,EAAE;MACjE;IACD;;IAEA;IACA;IACA;IACA;IACA,IAAI7D,QAAQ,CAACF,OAAO,KAAK,CAAC,CAAC,EAAE;MAC5B,MAAMnC,WAAW,GAAGD,cAAc,CAAC,CAAC;MACpC,IACCC,WAAW,IAAI,IAAI,IACnB,CAACtC,sBAAsB,CAACiC,OAAO,CAACwC,OAAO,EAAEnC,WAAW,CAAC,EACpD;QACDqC,QAAQ,CAACF,OAAO,GAAGnC,WAAW;MAC/B;IACD;IAEA,MAAMrB,WAAW,GAAGgD,cAAc,CAAC,CAAC;IACpC,MAAM1C,GAAG,GAAGuC,MAAM,CAAC,CAAC;IACpB,MAAMH,MAAM,GAAGD,SAAS,CAAC,CAAC;IAC1B,MAAMhC,IAAI,GAAGwC,OAAO,CAAC,CAAC;IACtB,MAAMF,OAAO,GAAGD,UAAU,CAAC,CAAC;IAC5B,MAAMV,eAAe,GAAGD,kBAAkB,CAAC,CAAC;IAC5C,MAAMK,SAAS,GAAGD,YAAY,CAAC,CAAC;IAChC,MAAMD,WAAW,GAAGD,cAAc,CAAC,CAAC;IAEpC,IACCK,MAAM,IACNlC,0BAA0B,CAACkE,KAAK,CAACtE,GAAG,EAAEJ,WAAW,EAAEM,GAAG,EAAEG,IAAI,CAAC,EAC5D;MACD;MACA;MACA,IACC,CAACN,oBAAoB,CAACuE,KAAK,CAACtE,GAAG,EAAEoH,oBAAoB,CAAC,CAAC,IAAI,UAAU,CAAC,EACrE;QACD5H,SAAS,CAAC8E,KAAK,CAAC;MACjB;MAEA7D,KAAK,CAAC+G,OAAO,CACZ,KAAK,EACL5J,wBAAwB,CACvBC,OAAO,CAAC4J,cAAc,EACtBnD,KACD,CACD,CAAC;MAED,MAAMoD,mBAAmB,GAAGjH,KAAK,CAACiD,KAAK,CAACgE,mBAAmB;MAC3D,IAAIjK,aAAa,CAACiK,mBAAmB,CAAC,EAAE;QACvC,IAAI/E,OAAO,EAAE;UACZQ,IAAI,EAAEyB,MAAM,CAACC,IAAI,CAAC,cAAc,EAAE6C,mBAAmB,CAAC;QACvD,CAAC,MAAM;UACLA,mBAAmB,CAAiBnB,KAAK,CAAC,CAAC;QAC7C;MACD;MAEA;IACD;IAEA,MAAMoB,YAAY,GAAGrE,QAAQ,CAACF,OAAO;IACrC,MAAMwE,QAAQ,GAAGlJ,eAAe,CAACkC,OAAO,EAAEoB,eAAe,CAAC;IAC1D,MAAM6F,QAAQ,GAAGpJ,eAAe,CAACmC,OAAO,EAAEoB,eAAe,CAAC;IAE1D,MAAM0F,mBAAmB,GAAGjH,KAAK,CAACiD,KAAK,CAACgE,mBAAmB;IAC3D,MAAMI,yBAAyB,GAAG1I,kBAAkB,CAACsI,mBAAmB,CAAC;IAEzE,IAAI,CAACI,yBAAyB,EAAE;MAC/B,IAAIxD,KAAK,CAACtE,GAAG,KAAK,MAAM,EAAE;QACzBR,SAAS,CAAC8E,KAAK,CAAC;QAChBhB,QAAQ,CAACF,OAAO,GAAGwE,QAAQ;QAC3B/G,UAAU,CAACyD,KAAK,CAAC;MAClB;MACA,IAAIA,KAAK,CAACtE,GAAG,KAAK,KAAK,EAAE;QACxBR,SAAS,CAAC8E,KAAK,CAAC;QAChBhB,QAAQ,CAACF,OAAO,GAAGyE,QAAQ;QAC3BhH,UAAU,CAACyD,KAAK,CAAC;MAClB;IACD;;IAEA;IACA,IAAIjE,IAAI,GAAG,CAAC,EAAE;MACb,MAAM0H,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC;QAAEC,MAAM,EAAEtH,OAAO,CAACwC,OAAO,CAAC8E;MAAO,CAAC,EAAE,OAAO;QACnEC,KAAK,EAAE,CAAC;QACRC,MAAM,EAAE;MACT,CAAC,CAAC,CAAC;MACH,MAAMC,OAAO,GAAGjK,iBAAiB,CAAC2J,KAAK,EAAE1H,IAAI,EAAE,KAAK,CAAC;MACrD,MAAMiI,YAAY,GAAGD,OAAO,CAACE,SAAS,CACpC9B,KAAK,IACLA,KAAK,IAAI,IAAI,IACb,CAAC7H,mBAAmB,CAACgC,OAAO,CAACwC,OAAO,EAAEqD,KAAK,EAAEzE,eAAe,CAC9D,CAAC;MACD,MAAMwG,YAAY,GAAGH,OAAO,CAACI,MAAM,CAClC,CAACC,UAAkB,EAAEjC,KAAK,EAAEkC,SAAS,KACpClC,KAAK,IAAI,IAAI,IACb,CAAC7H,mBAAmB,CAACgC,OAAO,CAACwC,OAAO,EAAEqD,KAAK,EAAEzE,eAAe,CAAC,GAC1D2G,SAAS,GACTD,UAAU,EACd,CAAC,CACF,CAAC;MAED,MAAMjC,KAAK,GACV4B,OAAO,CACN7J,qBAAqB,CACpB6J,OAAO,CAACO,GAAG,CAAEC,SAAS,IACrBA,SAAS,IAAI,IAAI,GAAGjI,OAAO,CAACwC,OAAO,CAACyF,SAAS,CAAC,GAAG,IAClD,CAAC,EACD;QACCvE,KAAK;QACL1E,WAAW;QACXwC,SAAS;QACTlC,GAAG;QACHG,IAAI;QACJ2B,eAAe,EAAEzD,kBAAkB,CAClC,CACC,IAAI,CAAC,OAAOyD,eAAe,KAAK,UAAU,GACvCA,eAAe,GACf,IAAI,KACNpB,OAAO,CAACwC,OAAO,CAACwF,GAAG,CAAC,CAACE,CAAC,EAAEC,SAAS,KAChCnK,mBAAmB,CAClBgC,OAAO,CAACwC,OAAO,EACf2F,SAAS,EACT/G,eACD,CAAC,GACE+G,SAAS,GACT3H,SACJ,CAAC,CAAC,EACHA,SAAS,CACT,EACDiH,OACD,CAAC;QACDT,QAAQ,EAAEU,YAAY;QACtBT,QAAQ,EAAEW,YAAY;QACtBQ,SAAS,EAAE1K,wBAAwB,CAClCgF,QAAQ,CAACF,OAAO,GAAGyE,QAAQ,GAAGD,QAAQ,GAAGtE,QAAQ,CAACF,OAAO,EACzD2E,KAAK,EACLM,OAAO,EACPhI,IAAI,EACJiE,KAAK,CAACtE,GAAG,KAAKnB,UAAU,GACrB,IAAI,GACJyF,KAAK,CAACtE,GAAG,MAAME,GAAG,GAAGpB,UAAU,GAAGC,WAAW,CAAC,GAC7C,IAAI,GACJ,IACL,CAAC;QACDS,SAAS,EAAE;MACZ,CACD,CAAC,CACD;MAEF,IAAIiH,KAAK,IAAI,IAAI,EAAE;QAClBnD,QAAQ,CAACF,OAAO,GAAGqD,KAAK;QACxB5F,UAAU,CAACyD,KAAK,CAAC;MAClB;MAEA,IAAI1E,WAAW,KAAK,MAAM,EAAE;QAC3B;MACD;IACD;IAEA,IAAIG,oBAAoB,CAACuE,KAAK,CAACtE,GAAG,EAAEJ,WAAW,CAAC,EAAE;MACjDJ,SAAS,CAAC8E,KAAK,CAAC;MAEhB,MAAM2E,EAAE,GAAG3E,KAAK,CAACqC,aAAmC;MACpD;MACA,IACClG,KAAK,CAACiD,KAAK,CAACG,IAAI,IAChB,CAAClB,OAAO,IACRsG,EAAE,IACFhK,aAAa,CAACgK,EAAE,CAAClL,aAAa,CAAC,KAAKkL,EAAE,EACrC;QACD3F,QAAQ,CAACF,OAAO,GAAGnD,yBAAyB,CAC3CqE,KAAK,CAACtE,GAAG,EACTJ,WAAW,EACXM,GACD,CAAC,GACE0H,QAAQ,GACRC,QAAQ;QACXhH,UAAU,CAACyD,KAAK,CAAC;QACjB;MACD;MAEA,IAAIrE,yBAAyB,CAACqE,KAAK,CAACtE,GAAG,EAAEJ,WAAW,EAAEM,GAAG,CAAC,EAAE;QAC3D,IAAIkC,SAAS,EAAE;UACd,IAAIuF,YAAY,IAAIE,QAAQ,EAAE;YAC7B,IAAI3F,WAAW,IAAIyF,YAAY,KAAK/G,OAAO,CAACwC,OAAO,CAAC8E,MAAM,EAAE;cAC3D5E,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;YACtB,CAAC,MAAM;cACN;cACAU,iBAAiB,CAACV,OAAO,GAAG,KAAK;cACjCE,QAAQ,CAACF,OAAO,GAAGwE,QAAQ;YAC5B;UACD,CAAC,MAAM;YACNtE,QAAQ,CAACF,OAAO,GAAG/E,wBAAwB,CAACuC,OAAO,CAACwC,OAAO,EAAE;cAC5D8F,aAAa,EAAEvB,YAAY;cAC3B3F;YACD,CAAC,CAAC;UACH;QACD,CAAC,MAAM;UACNsB,QAAQ,CAACF,OAAO,GAAG+F,IAAI,CAACC,GAAG,CAC1BvB,QAAQ,EACRxJ,wBAAwB,CAACuC,OAAO,CAACwC,OAAO,EAAE;YACzC8F,aAAa,EAAEvB,YAAY;YAC3B3F;UACD,CAAC,CACF,CAAC;QACF;MACD,CAAC,MAAM,IAAII,SAAS,EAAE;QACrB,IAAIuF,YAAY,IAAIC,QAAQ,EAAE;UAC7B,IAAI1F,WAAW,IAAIyF,YAAY,KAAK,CAAC,CAAC,EAAE;YACvCrE,QAAQ,CAACF,OAAO,GAAGxC,OAAO,CAACwC,OAAO,CAAC8E,MAAM;UAC1C,CAAC,MAAM;YACNpE,iBAAiB,CAACV,OAAO,GAAG,KAAK;YACjCE,QAAQ,CAACF,OAAO,GAAGyE,QAAQ;UAC5B;QACD,CAAC,MAAM;UACNvE,QAAQ,CAACF,OAAO,GAAG/E,wBAAwB,CAACuC,OAAO,CAACwC,OAAO,EAAE;YAC5D8F,aAAa,EAAEvB,YAAY;YAC3B0B,SAAS,EAAE,IAAI;YACfrH;UACD,CAAC,CAAC;QACH;MACD,CAAC,MAAM;QACNsB,QAAQ,CAACF,OAAO,GAAG+F,IAAI,CAACG,GAAG,CAC1B1B,QAAQ,EACRvJ,wBAAwB,CAACuC,OAAO,CAACwC,OAAO,EAAE;UACzC8F,aAAa,EAAEvB,YAAY;UAC3B0B,SAAS,EAAE,IAAI;UACfrH;QACD,CAAC,CACF,CAAC;MACF;MAEA,IAAIrD,sBAAsB,CAACiC,OAAO,CAACwC,OAAO,EAAEE,QAAQ,CAACF,OAAO,CAAC,EAAE;QAC9DE,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;MACtB;MAEAvC,UAAU,CAACyD,KAAK,CAAC;IAClB;EACD,CACD,CAAC;EAED,MAAM6B,QAAkC,GAAG;IAC1C,IAAI,kBAAkBoD,CAAA,EAAG;MACxB,MAAM3J,WAAW,GAAGgD,cAAc,CAAC,CAAC;MACpC,OAAOhD,WAAW,KAAK,MAAM,GAAGwB,SAAS,GAAGxB,WAAW;IACxD,CAAC;IACD;IACA;IACA;IACA,IAAI,uBAAuB4J,CAAA,EAAG;MAC7B,IAAI,CAAC9G,UAAU,CAAC,CAAC,IAAI,CAACjC,KAAK,CAACiD,KAAK,CAACG,IAAI,EAAE,OAAOzC,SAAS;MACxD,MAAMH,WAAW,GAAGD,cAAc,CAAC,CAAC;MACpC,IAAIC,WAAW,IAAI,IAAI,EAAE,OAAOG,SAAS;MACzC,MAAM0G,yBAAyB,GAAG1I,kBAAkB,CACnDqB,KAAK,CAACiD,KAAK,CAACgE,mBACb,CAAC;MACD,IAAII,yBAAyB,EAAE,OAAO1G,SAAS;MAC/C,MAAM2B,EAAE,GAAGD,KAAK,CAAC,CAAC;MAClB,OAAO,GAAGC,EAAE,IAAI9B,WAAW,EAAE;IAC9B,CAAC;IACDwI,SAASA,CAACnF,KAAoB,EAAE;MAC/B,MAAM3B,OAAO,GAAGD,UAAU,CAAC,CAAC;MAC5B,MAAMmB,IAAI,GAAGpD,KAAK,CAACiD,KAAK,CAACG,IAAI;;MAE7B;MACA,IAAIS,KAAK,CAACtE,GAAG,KAAK,KAAK,IAAIsE,KAAK,CAACoF,QAAQ,IAAI7F,IAAI,IAAI,CAAClB,OAAO,EAAE;QAC9D,MAAMgH,MAAM,GAAGxK,SAAS,CAACmF,KAAK,CAAmB;QACjD,MAAM6C,eAAe,GAAGjI,uBAAuB,CAC9CuB,KAAK,CAACiD,KAAK,CAACC,eACb,CAAC;QACD;QACA;QACA,IAAIgG,MAAM,IAAI,CAAC7L,QAAQ,CAACqJ,eAAe,EAAEwC,MAAM,CAAC,EAAE;UACjD;QACD;QAEAnK,SAAS,CAAC8E,KAAK,CAAC;QAChB7D,KAAK,CAAC+G,OAAO,CACZ,KAAK,EACL5J,wBAAwB,CACvBC,OAAO,CAAC+L,QAAQ,EAChBtF,KACD,CACD,CAAC;QAED,MAAMoD,mBAAmB,GAAGjH,KAAK,CAACiD,KAAK,CAACgE,mBAAmB;QAC3D,IAAIjK,aAAa,CAACiK,mBAAmB,CAAC,EAAE;UACtCA,mBAAmB,CAAiBnB,KAAK,CAAC,CAAC;QAC7C;QACA;MACD;MAEAe,eAAe,CAAChD,KAAK,CAAC;IACvB,CAAC;IACDuF,aAAaA,CAAA,EAAG;MACfrG,oBAAoB,CAACJ,OAAO,GAAG,IAAI;IACpC;EACD,CAAC;EAED,MAAM0G,cAAc,GAAIxF,KAAoB,IAAK;IAChD;IACA,MAAMyF,WAAW,GAAGtJ,KAAK,CAACiD,KAAK,CAACG,IAAI;IACpCL,oBAAoB,CAACJ,OAAO,GAAG,KAAK;IAEpC,MAAMxD,WAAW,GAAGgD,cAAc,CAAC,CAAC;IACpC,MAAM1C,GAAG,GAAGuC,MAAM,CAAC,CAAC;IACpB,MAAMH,MAAM,GAAGD,SAAS,CAAC,CAAC;IAC1B,MAAMM,OAAO,GAAGD,UAAU,CAAC,CAAC;IAC5B,MAAMZ,kBAAkB,GAAGD,qBAAqB,CAAC,CAAC;IAElD,MAAMmI,UAAU,GAAG1F,KAAK,CAACtE,GAAG,CAACiK,UAAU,CAAC,OAAO,CAAC;IAChD,MAAMC,oBAAoB,GAAG/J,yBAAyB,CACrDmE,KAAK,CAACtE,GAAG,EACToH,oBAAoB,CAAC,CAAC,IAAI,UAAU,EACpClH,GACD,CAAC;IACD,MAAMiK,SAAS,GAAGpK,oBAAoB,CAACuE,KAAK,CAACtE,GAAG,EAAEJ,WAAW,CAAC;IAC9D,MAAMwK,eAAe,GACpB,CAAC9H,MAAM,GAAG4H,oBAAoB,GAAGC,SAAS,KAC1C7F,KAAK,CAACtE,GAAG,KAAK,OAAO,IACrBsE,KAAK,CAACtE,GAAG,CAACqK,IAAI,CAAC,CAAC,KAAK,EAAE;IAExB,IAAI1H,OAAO,IAAIoH,WAAW,EAAE;MAC3B,OAAOzC,eAAe,CAAChD,KAAK,CAAC;IAC9B;;IAEA;IACA,IAAI,CAACyF,WAAW,IAAI,CAACjI,kBAAkB,IAAIkI,UAAU,EAAE;MACtD,OAAO5I,SAAS;IACjB;IAEA,IAAIgJ,eAAe,EAAE;MACpB,MAAME,eAAe,GAAGvK,oBAAoB,CAC3CuE,KAAK,CAACtE,GAAG,EACToH,oBAAoB,CAAC,CAAC,IAAI,UAC3B,CAAC;MACD7D,MAAM,CAACH,OAAO,GAAGd,MAAM,IAAIgI,eAAe,GAAG,IAAI,GAAGhG,KAAK,CAACtE,GAAG;IAC9D;IAEA,IAAIsC,MAAM,EAAE;MACX,IAAI4H,oBAAoB,EAAE;QACzB1K,SAAS,CAAC8E,KAAK,CAAC;QAEhB,IAAIyF,WAAW,EAAE;UAChBzG,QAAQ,CAACF,OAAO,GAAG1E,eAAe,CAACkC,OAAO,EAAEmB,kBAAkB,CAAC,CAAC,CAAC;UACjElB,UAAU,CAACyD,KAAK,CAAC;QAClB,CAAC,MAAM;UACN7D,KAAK,CAAC+G,OAAO,CACZ,IAAI,EACJ5J,wBAAwB,CACvBC,OAAO,CAAC4J,cAAc,EACtBnD,KAAK,EACLA,KAAK,CAACqC,aACP,CACD,CAAC;QACF;MACD;MACA,OAAOvF,SAAS;IACjB;IAEA,IAAI+I,SAAS,EAAE;MACd,MAAM5I,aAAa,GAAGF,gBAAgB,CAAC,CAAC;MACxC,IAAIE,aAAa,IAAI,IAAI,EAAE;QAC1B+B,QAAQ,CAACF,OAAO,GAAG7B,aAAa;MACjC;MAEA/B,SAAS,CAAC8E,KAAK,CAAC;MAEhB,IAAI,CAACyF,WAAW,IAAIjI,kBAAkB,EAAE;QACvCrB,KAAK,CAAC+G,OAAO,CACZ,IAAI,EACJ5J,wBAAwB,CACvBC,OAAO,CAAC4J,cAAc,EACtBnD,KAAK,EACLA,KAAK,CAACqC,aACP,CACD,CAAC;MACF,CAAC,MAAM;QACNW,eAAe,CAAChD,KAAK,CAAC;MACvB;MAEA,IAAIyF,WAAW,EAAE;QAChBlJ,UAAU,CAACyD,KAAK,CAAC;MAClB;IACD;IAEA,OAAOlD,SAAS;EACjB,CAAC;EAED,MAAMmJ,iBAAiB,GAAIjG,KAAgC,IAAK;IAC/D,IACC7C,kBAAkB,CAAC,CAAC,KAAK,MAAM,IAC/BnC,cAAc,CAACgF,KAAmB,CAAC,EAClC;MACDjB,kBAAkB,CAACD,OAAO,GAAG,CAACV,UAAU,CAAC,CAAC;IAC3C;EACD,CAAC;EAED,MAAM8H,mBAAmB,GAAIlG,KAAmB,IAAK;IACpD;IACAjB,kBAAkB,CAACD,OAAO,GAAG3B,kBAAkB,CAAC,CAAC;IACjD,IAAIA,kBAAkB,CAAC,CAAC,KAAK,MAAM,IAAIlC,qBAAqB,CAAC+E,KAAK,CAAC,EAAE;MACpEjB,kBAAkB,CAACD,OAAO,GAAG,IAAI;IAClC;EACD,CAAC;EAED,MAAMqH,OAAgC,GAAG;IACxChB,SAAS,EAAEK,cAAc;IACzBlD,OAAOA,CAACtC,KAAiB,EAAE;MAC1B,IAAI7D,KAAK,CAACiD,KAAK,CAACG,IAAI,IAAI,CAACnB,UAAU,CAAC,CAAC,EAAE;QACtCY,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;QACrBvC,UAAU,CAACyD,KAAK,CAAC;MAClB;IACD,CAAC;IACDoG,aAAa,EAAEF,mBAAmB;IAClCG,cAAc,EAAEH,mBAAmB;IACnCI,WAAW,EAAEL,iBAAiB;IAC9B1D,OAAO,EAAE0D;EACV,CAAC;EAED,MAAMM,SAAoC,GAAG;IAC5C;IACA,IAAI,uBAAuBrB,CAAA,EAAG;MAC7B,IAAI,CAAC9G,UAAU,CAAC,CAAC,IAAI,CAACjC,KAAK,CAACiD,KAAK,CAACG,IAAI,EAAE,OAAOzC,SAAS;MACxD,MAAMH,WAAW,GAAGD,cAAc,CAAC,CAAC;MACpC,IAAIC,WAAW,IAAI,IAAI,EAAE,OAAOG,SAAS;MACzC,MAAM2B,EAAE,GAAGD,KAAK,CAAC,CAAC;MAClB,OAAO,GAAGC,EAAE,IAAI9B,WAAW,EAAE;IAC9B,CAAC;IACDwI,SAAS,EAAEK,cAAc;IACzBlD,OAAOA,CAACtC,KAAiB,EAAE;MAC1B,IAAI7D,KAAK,CAACiD,KAAK,CAACG,IAAI,IAAI,CAACnB,UAAU,CAAC,CAAC,EAAE;QACtCY,QAAQ,CAACF,OAAO,GAAG,CAAC,CAAC;QACrBvC,UAAU,CAACyD,KAAK,CAAC;MAClB;IACD,CAAC;IACDoG,aAAa,EAAEF,mBAAmB;IAClCG,cAAc,EAAEH,mBAAmB;IACnCI,WAAW,EAAEL,iBAAiB;IAC9B1D,OAAO,EAAE0D;EACV,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMO,oBAAoB,GAAGnN,OAAO,CACnC,MAAM,OAAO6C,KAAK,CAACW,OAAO,KAAK,UAAU,IAAI,CAACD,UAAU,CAAC,CAC1D,CAAC;EACD,IAAI4J,oBAAoB,EAAE;IACzB,OAAO,CAAC,CAAC;EACV;EAEA,OAAO;IAAED,SAAS;IAAE1E,QAAQ;IAAExB,IAAI;IAAE8F;EAAQ,CAAC;AAC9C","ignoreList":[]}