{"version":3,"names":["createMemo","createSignal","useBaseUiId","contains","makeSlotRefDirective","readOption","mergeRootProps","SNAPSHOT_KEYS","snapshotKeys","useTimeout","SCROLL_TIMEOUT","getOffset","scrollAreaDataAttrs","ScrollAreaRootContext","ScrollAreaRootCssVars","DEFAULT_SIZE","width","height","DEFAULT_OVERFLOW_EDGES","xStart","xEnd","yStart","yEnd","DEFAULT_HIDDEN_STATE","x","y","corner","normalizeOverflowEdgeThreshold","threshold","value","Math","max","createScrollArea","options","rootId","scrollYTimeout","scrollXTimeout","hovering","setHovering","name","ownedWrite","scrollingX","setScrollingX","scrollingY","setScrollingY","hasMeasuredScrollbar","setHasMeasuredScrollbar","cornerSize","setCornerSize","thumbSize","setThumbSize","overflowEdges","setOverflowEdges","hiddenState","setHiddenState","rootRef","current","viewportRef","scrollbarYRef","scrollbarXRef","thumbYRef","thumbXRef","cornerRef","thumbDragging","startY","startX","startScrollTop","startScrollLeft","currentOrientation","scrollPositionRef","handleScroll","scrollPosition","offsetX","offsetY","start","handlePointerDown","event","button","clientY","clientX","target","currentTarget","orientationAttr","getAttribute","scrollTop","scrollLeft","setPointerCapture","pointerId","handlePointerMove","deltaY","deltaX","viewportEl","scrollableContentHeight","scrollHeight","viewportHeight","clientHeight","scrollableContentWidth","scrollWidth","viewportWidth","clientWidth","scrollbarYOffset","thumbYOffset","thumbHeight","offsetHeight","maxThumbOffsetY","scrollRatioY","preventDefault","scrollbarXOffset","thumbXOffset","thumbWidth","offsetWidth","maxThumbOffsetX","scrollRatioX","handlePointerUp","releasePointerCapture","handlePointerEnterOrMove","pointerType","isTargetRootChild","state","edges","hidden","scrolling","hasOverflowX","hasOverflowY","overflowXStart","overflowXEnd","overflowYStart","overflowYEnd","cornerHidden","rootInternal","role","onPointerEnter","onPointerMove","onPointerLeave","style","size","position","scrollAreaCornerHeight","scrollAreaCornerWidth","root","userProps","merged","bindRoot","el","rootRefDirective","baseDirective","api","viewportState","overflowEdgeThreshold","Provider","providerProps","children","SCROLL_AREA_SNAPSHOT_KEYS"],"sources":["create-scroll-area.tsx"],"sourcesContent":["import type { JSX } from \"@solidjs/web\";\nimport { createMemo, createSignal } from \"solid-js\";\nimport { useBaseUiId } from \"../../internals/base-ui-id\";\nimport { contains } from \"../../internals/dom/contains.ts\";\nimport { makeSlotRefDirective } from \"../../internals/make-slot-ref-directive\";\nimport { type MaybeAccessor, readOption } from \"../../internals/maybe-accessor\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport {\n\tSNAPSHOT_KEYS,\n\ttype Snapshottable,\n\tsnapshotKeys,\n} from \"../../internals/observability/snapshot\";\nimport { useTimeout } from \"../../internals/use-timeout.ts\";\nimport { SCROLL_TIMEOUT } from \"../constants.ts\";\nimport { getOffset } from \"../utils/get-offset.ts\";\nimport { scrollAreaDataAttrs } from \"../utils/state-attrs.ts\";\nimport {\n\ttype Coords,\n\ttype HiddenState,\n\ttype MutableRef,\n\ttype OverflowEdges,\n\ttype OverflowEdgeThreshold,\n\tScrollAreaRootContext,\n\ttype ScrollAreaRootContextValue,\n\ttype ScrollAreaRootState,\n\ttype Size,\n} from \"./scroll-area-root-context.ts\";\nimport { ScrollAreaRootCssVars } from \"./scroll-area-root-css-vars.ts\";\n\nconst DEFAULT_SIZE: Size = { width: 0, height: 0 };\nconst DEFAULT_OVERFLOW_EDGES: OverflowEdges = {\n\txStart: false,\n\txEnd: false,\n\tyStart: false,\n\tyEnd: false,\n};\nconst DEFAULT_HIDDEN_STATE: HiddenState = { x: true, y: true, corner: true };\n\n/** Raw consumer shape for the overflow-edge threshold. */\nexport type OverflowEdgeThresholdInput =\n\t| number\n\t| Partial<{\n\t\t\txStart: number;\n\t\t\txEnd: number;\n\t\t\tyStart: number;\n\t\t\tyEnd: number;\n\t  }>\n\t| undefined;\n\nfunction normalizeOverflowEdgeThreshold(\n\tthreshold: OverflowEdgeThresholdInput,\n): OverflowEdgeThreshold {\n\tif (typeof threshold === \"number\") {\n\t\tconst value = Math.max(0, threshold);\n\t\treturn { xStart: value, xEnd: value, yStart: value, yEnd: value };\n\t}\n\treturn {\n\t\txStart: Math.max(0, threshold?.xStart ?? 0),\n\t\txEnd: Math.max(0, threshold?.xEnd ?? 0),\n\t\tyStart: Math.max(0, threshold?.yStart ?? 0),\n\t\tyEnd: Math.max(0, threshold?.yEnd ?? 0),\n\t};\n}\n\n/**\n * Options for {@link createScrollArea}. Every reactive input is\n * `MaybeAccessor<T>`.\n */\nexport interface CreateScrollAreaOptions {\n\t/**\n\t * Threshold in pixels that must be exceeded before the overflow-edge\n\t * attributes are applied. Accepts a number (applied to all four edges) or\n\t * a partial per-edge object.\n\t * @default 0\n\t */\n\toverflowEdgeThreshold?: MaybeAccessor<OverflowEdgeThresholdInput>;\n}\n\n/** Shape of attributes emitted by `c.root()`. */\nexport interface ScrollAreaRootSlotProps {\n\trole: \"presentation\";\n\tstyle: JSX.CSSProperties;\n\tonPointerEnter: (event: PointerEvent) => void;\n\tonPointerMove: (event: PointerEvent) => void;\n\tonPointerLeave: () => void;\n}\n\n/**\n * Public API returned by {@link createScrollArea}. A superset of\n * {@link ScrollAreaRootContextValue} — the api object IS the value published\n * to descendants via the root context, so `<ScrollArea.Viewport>` /\n * `<ScrollArea.Scrollbar>` / `<ScrollArea.Thumb>` keep reading it unchanged.\n *\n * On top of the context fields it adds the `root()` slot factory, a\n * `bindRoot` ref setter, a `Provider`, and the observability surface.\n *\n * **Inherently DOM-coupled.** Unlike `createSwitch`/`createCollapsible`, this\n * primitive owns no consumer logical state — its accessors reflect DOM\n * measurement (thumb/corner sizes, per-axis overflow) populated by the\n * viewport's `ResizeObserver` + scroll handler and the scrollbar/thumb drag\n * math. Bound to no elements it reports all-default (everything hidden, sizes\n * 0). It exists for parity / observability and to consolidate the root's\n * state machinery in one place, not as a standalone headless engine.\n */\nexport interface ScrollAreaApi extends ScrollAreaRootContextValue {\n\t/**\n\t * Root slot — getter-bag for the presentation `<div>` (role, pointer\n\t * hover handlers, corner-size CSS-var style). Does NOT include `ref` or\n\t * `children`; bind the element via {@link bindRoot} and wrap descendants\n\t * in {@link Provider} (or render `<ScrollAreaRootContext value={api}>`).\n\t */\n\troot: <U extends object | undefined = undefined>(\n\t\tuserProps?: U,\n\t) => ScrollAreaRootSlotProps & (U extends object ? U : object);\n\t/** Plain setter that binds the live root `<div>` (writes `rootRef`). */\n\tbindRoot: (el: HTMLDivElement | null) => void;\n\t/**\n\t * Directive form — a `ref` callback that spreads the root slot bag onto\n\t * the element AND binds it. For consumers owning the root element's prop\n\t * surface directly.\n\t */\n\trootRefDirective: () => (el: HTMLDivElement | null) => void;\n\t/** Context provider. Wrap a subtree to expose the api to descendants. */\n\tProvider: (props: { children: JSX.Element }) => JSX.Element;\n}\n\n/**\n * Solid 2.0-native scroll-area primitive. Owns the root's reactive state\n * (hover / scrolling / measured-scrollbar flags, thumb & corner sizes,\n * per-axis hidden state, overflow-edge flags), the element refs every part\n * reads, and the shared pointer/scroll handlers. The viewport's measurement\n * pipeline and the scrollbar/thumb drag math compose against the refs and\n * setters exposed here.\n *\n * Must be called in an owner scope (component body or `createRoot`) — it\n * allocates timeouts that install cleanups.\n */\nexport function createScrollArea(\n\toptions: CreateScrollAreaOptions = {},\n): ScrollAreaApi {\n\tconst rootId = useBaseUiId();\n\n\tconst scrollYTimeout = useTimeout();\n\tconst scrollXTimeout = useTimeout();\n\n\tconst [hovering, setHovering] = createSignal(false, {\n\t\tname: \"scroll-area.hovering\",\n\t\townedWrite: true,\n\t});\n\tconst [scrollingX, setScrollingX] = createSignal(false, {\n\t\tname: \"scroll-area.scrollingX\",\n\t\townedWrite: true,\n\t});\n\tconst [scrollingY, setScrollingY] = createSignal(false, {\n\t\tname: \"scroll-area.scrollingY\",\n\t\townedWrite: true,\n\t});\n\tconst [hasMeasuredScrollbar, setHasMeasuredScrollbar] = createSignal(false, {\n\t\tname: \"scroll-area.hasMeasuredScrollbar\",\n\t\townedWrite: true,\n\t});\n\tconst [cornerSize, setCornerSize] = createSignal<Size>(DEFAULT_SIZE, {\n\t\tname: \"scroll-area.cornerSize\",\n\t\townedWrite: true,\n\t});\n\tconst [thumbSize, setThumbSize] = createSignal<Size>(DEFAULT_SIZE, {\n\t\tname: \"scroll-area.thumbSize\",\n\t\townedWrite: true,\n\t});\n\tconst [overflowEdges, setOverflowEdges] = createSignal<OverflowEdges>(\n\t\tDEFAULT_OVERFLOW_EDGES,\n\t\t{ name: \"scroll-area.overflowEdges\", ownedWrite: true },\n\t);\n\tconst [hiddenState, setHiddenState] = createSignal<HiddenState>(\n\t\tDEFAULT_HIDDEN_STATE,\n\t\t{ name: \"scroll-area.hiddenState\", ownedWrite: true },\n\t);\n\n\tconst rootRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst viewportRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst scrollbarYRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst scrollbarXRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst thumbYRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst thumbXRef: MutableRef<HTMLDivElement> = { current: null };\n\tconst cornerRef: MutableRef<HTMLDivElement> = { current: null };\n\n\t// Imperative thumb-drag state. Not reactive — lives for the duration of a\n\t// single pointer gesture. Matches the React ref pattern 1:1.\n\tlet thumbDragging = false;\n\tlet startY = 0;\n\tlet startX = 0;\n\tlet startScrollTop = 0;\n\tlet startScrollLeft = 0;\n\tlet currentOrientation: \"vertical\" | \"horizontal\" = \"vertical\";\n\tconst scrollPositionRef: Coords = { x: 0, y: 0 };\n\n\tfunction handleScroll(scrollPosition: Coords): void {\n\t\tconst offsetX = scrollPosition.x - scrollPositionRef.x;\n\t\tconst offsetY = scrollPosition.y - scrollPositionRef.y;\n\t\tscrollPositionRef.x = scrollPosition.x;\n\t\tscrollPositionRef.y = scrollPosition.y;\n\n\t\tif (offsetY !== 0) {\n\t\t\tsetScrollingY(true);\n\t\t\tscrollYTimeout.start(SCROLL_TIMEOUT, () => {\n\t\t\t\tsetScrollingY(false);\n\t\t\t});\n\t\t}\n\n\t\tif (offsetX !== 0) {\n\t\t\tsetScrollingX(true);\n\t\t\tscrollXTimeout.start(SCROLL_TIMEOUT, () => {\n\t\t\t\tsetScrollingX(false);\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction handlePointerDown(event: PointerEvent): void {\n\t\tif (event.button !== 0) return;\n\t\tthumbDragging = true;\n\t\tstartY = event.clientY;\n\t\tstartX = event.clientX;\n\t\tconst target = event.currentTarget as HTMLElement | null;\n\t\tconst orientationAttr = target?.getAttribute(\"data-orientation\");\n\t\tcurrentOrientation =\n\t\t\torientationAttr === \"horizontal\" ? \"horizontal\" : \"vertical\";\n\t\tif (viewportRef.current) {\n\t\t\tstartScrollTop = viewportRef.current.scrollTop;\n\t\t\tstartScrollLeft = viewportRef.current.scrollLeft;\n\t\t}\n\t\tif (thumbYRef.current && currentOrientation === \"vertical\") {\n\t\t\tthumbYRef.current.setPointerCapture(event.pointerId);\n\t\t}\n\t\tif (thumbXRef.current && currentOrientation === \"horizontal\") {\n\t\t\tthumbXRef.current.setPointerCapture(event.pointerId);\n\t\t}\n\t}\n\n\tfunction handlePointerMove(event: PointerEvent): void {\n\t\tif (!thumbDragging) return;\n\t\tconst deltaY = event.clientY - startY;\n\t\tconst deltaX = event.clientX - startX;\n\t\tconst viewportEl = viewportRef.current;\n\t\tif (!viewportEl) return;\n\n\t\tconst scrollableContentHeight = viewportEl.scrollHeight;\n\t\tconst viewportHeight = viewportEl.clientHeight;\n\t\tconst scrollableContentWidth = viewportEl.scrollWidth;\n\t\tconst viewportWidth = viewportEl.clientWidth;\n\n\t\tif (\n\t\t\tthumbYRef.current &&\n\t\t\tscrollbarYRef.current &&\n\t\t\tcurrentOrientation === \"vertical\"\n\t\t) {\n\t\t\tconst scrollbarYOffset = getOffset(scrollbarYRef.current, \"padding\", \"y\");\n\t\t\tconst thumbYOffset = getOffset(thumbYRef.current, \"margin\", \"y\");\n\t\t\tconst thumbHeight = thumbYRef.current.offsetHeight;\n\t\t\tconst maxThumbOffsetY =\n\t\t\t\tscrollbarYRef.current.offsetHeight -\n\t\t\t\tthumbHeight -\n\t\t\t\tscrollbarYOffset -\n\t\t\t\tthumbYOffset;\n\t\t\tconst scrollRatioY = deltaY / maxThumbOffsetY;\n\t\t\tviewportEl.scrollTop =\n\t\t\t\tstartScrollTop +\n\t\t\t\tscrollRatioY * (scrollableContentHeight - viewportHeight);\n\t\t\tevent.preventDefault();\n\n\t\t\tsetScrollingY(true);\n\t\t\tscrollYTimeout.start(SCROLL_TIMEOUT, () => {\n\t\t\t\tsetScrollingY(false);\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\tthumbXRef.current &&\n\t\t\tscrollbarXRef.current &&\n\t\t\tcurrentOrientation === \"horizontal\"\n\t\t) {\n\t\t\tconst scrollbarXOffset = getOffset(scrollbarXRef.current, \"padding\", \"x\");\n\t\t\tconst thumbXOffset = getOffset(thumbXRef.current, \"margin\", \"x\");\n\t\t\tconst thumbWidth = thumbXRef.current.offsetWidth;\n\t\t\tconst maxThumbOffsetX =\n\t\t\t\tscrollbarXRef.current.offsetWidth -\n\t\t\t\tthumbWidth -\n\t\t\t\tscrollbarXOffset -\n\t\t\t\tthumbXOffset;\n\t\t\tconst scrollRatioX = deltaX / maxThumbOffsetX;\n\t\t\tviewportEl.scrollLeft =\n\t\t\t\tstartScrollLeft +\n\t\t\t\tscrollRatioX * (scrollableContentWidth - viewportWidth);\n\t\t\tevent.preventDefault();\n\n\t\t\tsetScrollingX(true);\n\t\t\tscrollXTimeout.start(SCROLL_TIMEOUT, () => {\n\t\t\t\tsetScrollingX(false);\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction handlePointerUp(event: PointerEvent): void {\n\t\tthumbDragging = false;\n\t\tif (thumbYRef.current && currentOrientation === \"vertical\") {\n\t\t\tthumbYRef.current.releasePointerCapture(event.pointerId);\n\t\t}\n\t\tif (thumbXRef.current && currentOrientation === \"horizontal\") {\n\t\t\tthumbXRef.current.releasePointerCapture(event.pointerId);\n\t\t}\n\t}\n\n\tfunction handlePointerEnterOrMove(event: PointerEvent): void {\n\t\tif (event.pointerType !== \"touch\") {\n\t\t\tconst isTargetRootChild = contains(\n\t\t\t\trootRef.current,\n\t\t\t\tevent.target as Element | null,\n\t\t\t);\n\t\t\tsetHovering(isTargetRootChild);\n\t\t}\n\t}\n\n\tconst state = createMemo<ScrollAreaRootState>(\n\t\t() => {\n\t\t\tconst edges = overflowEdges();\n\t\t\tconst hidden = hiddenState();\n\t\t\treturn {\n\t\t\t\tscrolling: scrollingX() || scrollingY(),\n\t\t\t\thasOverflowX: !hidden.x,\n\t\t\t\thasOverflowY: !hidden.y,\n\t\t\t\toverflowXStart: edges.xStart,\n\t\t\t\toverflowXEnd: edges.xEnd,\n\t\t\t\toverflowYStart: edges.yStart,\n\t\t\t\toverflowYEnd: edges.yEnd,\n\t\t\t\tcornerHidden: hidden.corner,\n\t\t\t};\n\t\t},\n\t\t{ name: \"scroll-area.state\" },\n\t);\n\n\t// ---------- root slot ----------\n\tconst rootInternal = {\n\t\trole: \"presentation\" as const,\n\t\tonPointerEnter: handlePointerEnterOrMove,\n\t\tonPointerMove: handlePointerEnterOrMove,\n\t\tonPointerLeave: () => {\n\t\t\tsetHovering(false);\n\t\t},\n\t\tget style(): JSX.CSSProperties {\n\t\t\tconst size = cornerSize();\n\t\t\treturn {\n\t\t\t\tposition: \"relative\",\n\t\t\t\t[ScrollAreaRootCssVars.scrollAreaCornerHeight]: `${size.height}px`,\n\t\t\t\t[ScrollAreaRootCssVars.scrollAreaCornerWidth]: `${size.width}px`,\n\t\t\t};\n\t\t},\n\t};\n\n\tconst root = <U extends object | undefined>(userProps?: U) => {\n\t\tconst merged = mergeRootProps(rootInternal, scrollAreaDataAttrs(state));\n\t\treturn mergeRootProps(merged, userProps) as ScrollAreaRootSlotProps &\n\t\t\t(U extends object ? U : object);\n\t};\n\n\tconst bindRoot = (el: HTMLDivElement | null): void => {\n\t\trootRef.current = el;\n\t};\n\n\tconst rootRefDirective = (): ((el: HTMLDivElement | null) => void) => {\n\t\tconst baseDirective = makeSlotRefDirective(\n\t\t\t() => root() as Record<string, unknown>,\n\t\t);\n\t\treturn (el: HTMLDivElement | null): void => {\n\t\t\tbindRoot(el);\n\t\t\tbaseDirective(el);\n\t\t};\n\t};\n\n\t// ---------- assemble api ----------\n\tconst api: ScrollAreaApi = {\n\t\thandlePointerDown,\n\t\thandlePointerMove,\n\t\thandlePointerUp,\n\t\thandleScroll,\n\t\tcornerSize,\n\t\tsetCornerSize,\n\t\tthumbSize,\n\t\tsetThumbSize,\n\t\thasMeasuredScrollbar,\n\t\tsetHasMeasuredScrollbar,\n\t\tcornerRef,\n\t\tscrollingX,\n\t\tsetScrollingX,\n\t\tscrollingY,\n\t\tsetScrollingY,\n\t\thovering,\n\t\tsetHovering,\n\t\tviewportRef,\n\t\trootRef,\n\t\tscrollbarYRef,\n\t\tscrollbarXRef,\n\t\tthumbYRef,\n\t\tthumbXRef,\n\t\trootId,\n\t\thiddenState,\n\t\tsetHiddenState,\n\t\toverflowEdges,\n\t\tsetOverflowEdges,\n\t\tviewportState: state,\n\t\tget overflowEdgeThreshold(): OverflowEdgeThreshold {\n\t\t\treturn normalizeOverflowEdgeThreshold(\n\t\t\t\treadOption(options.overflowEdgeThreshold),\n\t\t\t);\n\t\t},\n\t\troot,\n\t\tbindRoot,\n\t\trootRefDirective,\n\t\tProvider: (providerProps) => (\n\t\t\t<ScrollAreaRootContext value={api}>\n\t\t\t\t{providerProps.children}\n\t\t\t</ScrollAreaRootContext>\n\t\t),\n\t};\n\t(api as ScrollAreaApi & Snapshottable)[SNAPSHOT_KEYS] =\n\t\tSCROLL_AREA_SNAPSHOT_KEYS;\n\treturn api;\n}\n\nconst SCROLL_AREA_SNAPSHOT_KEYS = snapshotKeys<ScrollAreaApi>(\n\t\"hovering\",\n\t\"scrollingX\",\n\t\"scrollingY\",\n\t\"hasMeasuredScrollbar\",\n\t\"cornerSize\",\n\t\"thumbSize\",\n\t\"hiddenState\",\n\t\"overflowEdges\",\n);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,YAAY,QAAQ,UAAU;AACnD,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,oBAAoB,QAAQ,yCAAyC;AAC9E,SAA6BC,UAAU,QAAQ,gCAAgC;AAC/E,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SACCC,aAAa,EAEbC,YAAY,QACN,wCAAwC;AAC/C,SAASC,UAAU,QAAQ,gCAAgC;AAC3D,SAASC,cAAc,QAAQ,iBAAiB;AAChD,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAMCC,qBAAqB,QAIf,+BAA+B;AACtC,SAASC,qBAAqB,QAAQ,gCAAgC;AAEtE,MAAMC,YAAkB,GAAG;EAAEC,KAAK,EAAE,CAAC;EAAEC,MAAM,EAAE;AAAE,CAAC;AAClD,MAAMC,sBAAqC,GAAG;EAC7CC,MAAM,EAAE,KAAK;EACbC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,KAAK;EACbC,IAAI,EAAE;AACP,CAAC;AACD,MAAMC,oBAAiC,GAAG;EAAEC,CAAC,EAAE,IAAI;EAAEC,CAAC,EAAE,IAAI;EAAEC,MAAM,EAAE;AAAK,CAAC;;AAE5E;;AAWA,SAASC,8BAA8BA,CACtCC,SAAqC,EACb;EACxB,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;IAClC,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,CAAC;IACpC,OAAO;MAAET,MAAM,EAAEU,KAAK;MAAET,IAAI,EAAES,KAAK;MAAER,MAAM,EAAEQ,KAAK;MAAEP,IAAI,EAAEO;IAAM,CAAC;EAClE;EACA,OAAO;IACNV,MAAM,EAAEW,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,EAAET,MAAM,IAAI,CAAC,CAAC;IAC3CC,IAAI,EAAEU,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,EAAER,IAAI,IAAI,CAAC,CAAC;IACvCC,MAAM,EAAES,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,EAAEP,MAAM,IAAI,CAAC,CAAC;IAC3CC,IAAI,EAAEQ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,EAAEN,IAAI,IAAI,CAAC;EACvC,CAAC;AACF;;AAEA;AACA;AACA;AACA;;AAWA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASU,gBAAgBA,CAC/BC,OAAgC,GAAG,CAAC,CAAC,EACrB;EAChB,MAAMC,MAAM,GAAGhC,WAAW,CAAC,CAAC;EAE5B,MAAMiC,cAAc,GAAG1B,UAAU,CAAC,CAAC;EACnC,MAAM2B,cAAc,GAAG3B,UAAU,CAAC,CAAC;EAEnC,MAAM,CAAC4B,QAAQ,EAAEC,WAAW,CAAC,GAAGrC,YAAY,CAAC,KAAK,EAAE;IACnDsC,IAAI,EAAE,sBAAsB;IAC5BC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGzC,YAAY,CAAC,KAAK,EAAE;IACvDsC,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAG3C,YAAY,CAAC,KAAK,EAAE;IACvDsC,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACK,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG7C,YAAY,CAAC,KAAK,EAAE;IAC3EsC,IAAI,EAAE,kCAAkC;IACxCC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACO,UAAU,EAAEC,aAAa,CAAC,GAAG/C,YAAY,CAAOc,YAAY,EAAE;IACpEwB,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACS,SAAS,EAAEC,YAAY,CAAC,GAAGjD,YAAY,CAAOc,YAAY,EAAE;IAClEwB,IAAI,EAAE,uBAAuB;IAC7BC,UAAU,EAAE;EACb,CAAC,CAAC;EACF,MAAM,CAACW,aAAa,EAAEC,gBAAgB,CAAC,GAAGnD,YAAY,CACrDiB,sBAAsB,EACtB;IAAEqB,IAAI,EAAE,2BAA2B;IAAEC,UAAU,EAAE;EAAK,CACvD,CAAC;EACD,MAAM,CAACa,WAAW,EAAEC,cAAc,CAAC,GAAGrD,YAAY,CACjDsB,oBAAoB,EACpB;IAAEgB,IAAI,EAAE,yBAAyB;IAAEC,UAAU,EAAE;EAAK,CACrD,CAAC;EAED,MAAMe,OAAmC,GAAG;IAAEC,OAAO,EAAE;EAAK,CAAC;EAC7D,MAAMC,WAAuC,GAAG;IAAED,OAAO,EAAE;EAAK,CAAC;EACjE,MAAME,aAAyC,GAAG;IAAEF,OAAO,EAAE;EAAK,CAAC;EACnE,MAAMG,aAAyC,GAAG;IAAEH,OAAO,EAAE;EAAK,CAAC;EACnE,MAAMI,SAAqC,GAAG;IAAEJ,OAAO,EAAE;EAAK,CAAC;EAC/D,MAAMK,SAAqC,GAAG;IAAEL,OAAO,EAAE;EAAK,CAAC;EAC/D,MAAMM,SAAqC,GAAG;IAAEN,OAAO,EAAE;EAAK,CAAC;;EAE/D;EACA;EACA,IAAIO,aAAa,GAAG,KAAK;EACzB,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,cAAc,GAAG,CAAC;EACtB,IAAIC,eAAe,GAAG,CAAC;EACvB,IAAIC,kBAA6C,GAAG,UAAU;EAC9D,MAAMC,iBAAyB,GAAG;IAAE7C,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;EAEhD,SAAS6C,YAAYA,CAACC,cAAsB,EAAQ;IACnD,MAAMC,OAAO,GAAGD,cAAc,CAAC/C,CAAC,GAAG6C,iBAAiB,CAAC7C,CAAC;IACtD,MAAMiD,OAAO,GAAGF,cAAc,CAAC9C,CAAC,GAAG4C,iBAAiB,CAAC5C,CAAC;IACtD4C,iBAAiB,CAAC7C,CAAC,GAAG+C,cAAc,CAAC/C,CAAC;IACtC6C,iBAAiB,CAAC5C,CAAC,GAAG8C,cAAc,CAAC9C,CAAC;IAEtC,IAAIgD,OAAO,KAAK,CAAC,EAAE;MAClB7B,aAAa,CAAC,IAAI,CAAC;MACnBT,cAAc,CAACuC,KAAK,CAAChE,cAAc,EAAE,MAAM;QAC1CkC,aAAa,CAAC,KAAK,CAAC;MACrB,CAAC,CAAC;IACH;IAEA,IAAI4B,OAAO,KAAK,CAAC,EAAE;MAClB9B,aAAa,CAAC,IAAI,CAAC;MACnBN,cAAc,CAACsC,KAAK,CAAChE,cAAc,EAAE,MAAM;QAC1CgC,aAAa,CAAC,KAAK,CAAC;MACrB,CAAC,CAAC;IACH;EACD;EAEA,SAASiC,iBAAiBA,CAACC,KAAmB,EAAQ;IACrD,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IACxBd,aAAa,GAAG,IAAI;IACpBC,MAAM,GAAGY,KAAK,CAACE,OAAO;IACtBb,MAAM,GAAGW,KAAK,CAACG,OAAO;IACtB,MAAMC,MAAM,GAAGJ,KAAK,CAACK,aAAmC;IACxD,MAAMC,eAAe,GAAGF,MAAM,EAAEG,YAAY,CAAC,kBAAkB,CAAC;IAChEf,kBAAkB,GACjBc,eAAe,KAAK,YAAY,GAAG,YAAY,GAAG,UAAU;IAC7D,IAAIzB,WAAW,CAACD,OAAO,EAAE;MACxBU,cAAc,GAAGT,WAAW,CAACD,OAAO,CAAC4B,SAAS;MAC9CjB,eAAe,GAAGV,WAAW,CAACD,OAAO,CAAC6B,UAAU;IACjD;IACA,IAAIzB,SAAS,CAACJ,OAAO,IAAIY,kBAAkB,KAAK,UAAU,EAAE;MAC3DR,SAAS,CAACJ,OAAO,CAAC8B,iBAAiB,CAACV,KAAK,CAACW,SAAS,CAAC;IACrD;IACA,IAAI1B,SAAS,CAACL,OAAO,IAAIY,kBAAkB,KAAK,YAAY,EAAE;MAC7DP,SAAS,CAACL,OAAO,CAAC8B,iBAAiB,CAACV,KAAK,CAACW,SAAS,CAAC;IACrD;EACD;EAEA,SAASC,iBAAiBA,CAACZ,KAAmB,EAAQ;IACrD,IAAI,CAACb,aAAa,EAAE;IACpB,MAAM0B,MAAM,GAAGb,KAAK,CAACE,OAAO,GAAGd,MAAM;IACrC,MAAM0B,MAAM,GAAGd,KAAK,CAACG,OAAO,GAAGd,MAAM;IACrC,MAAM0B,UAAU,GAAGlC,WAAW,CAACD,OAAO;IACtC,IAAI,CAACmC,UAAU,EAAE;IAEjB,MAAMC,uBAAuB,GAAGD,UAAU,CAACE,YAAY;IACvD,MAAMC,cAAc,GAAGH,UAAU,CAACI,YAAY;IAC9C,MAAMC,sBAAsB,GAAGL,UAAU,CAACM,WAAW;IACrD,MAAMC,aAAa,GAAGP,UAAU,CAACQ,WAAW;IAE5C,IACCvC,SAAS,CAACJ,OAAO,IACjBE,aAAa,CAACF,OAAO,IACrBY,kBAAkB,KAAK,UAAU,EAChC;MACD,MAAMgC,gBAAgB,GAAGzF,SAAS,CAAC+C,aAAa,CAACF,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC;MACzE,MAAM6C,YAAY,GAAG1F,SAAS,CAACiD,SAAS,CAACJ,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;MAChE,MAAM8C,WAAW,GAAG1C,SAAS,CAACJ,OAAO,CAAC+C,YAAY;MAClD,MAAMC,eAAe,GACpB9C,aAAa,CAACF,OAAO,CAAC+C,YAAY,GAClCD,WAAW,GACXF,gBAAgB,GAChBC,YAAY;MACb,MAAMI,YAAY,GAAGhB,MAAM,GAAGe,eAAe;MAC7Cb,UAAU,CAACP,SAAS,GACnBlB,cAAc,GACduC,YAAY,IAAIb,uBAAuB,GAAGE,cAAc,CAAC;MAC1DlB,KAAK,CAAC8B,cAAc,CAAC,CAAC;MAEtB9D,aAAa,CAAC,IAAI,CAAC;MACnBT,cAAc,CAACuC,KAAK,CAAChE,cAAc,EAAE,MAAM;QAC1CkC,aAAa,CAAC,KAAK,CAAC;MACrB,CAAC,CAAC;IACH;IAEA,IACCiB,SAAS,CAACL,OAAO,IACjBG,aAAa,CAACH,OAAO,IACrBY,kBAAkB,KAAK,YAAY,EAClC;MACD,MAAMuC,gBAAgB,GAAGhG,SAAS,CAACgD,aAAa,CAACH,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC;MACzE,MAAMoD,YAAY,GAAGjG,SAAS,CAACkD,SAAS,CAACL,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;MAChE,MAAMqD,UAAU,GAAGhD,SAAS,CAACL,OAAO,CAACsD,WAAW;MAChD,MAAMC,eAAe,GACpBpD,aAAa,CAACH,OAAO,CAACsD,WAAW,GACjCD,UAAU,GACVF,gBAAgB,GAChBC,YAAY;MACb,MAAMI,YAAY,GAAGtB,MAAM,GAAGqB,eAAe;MAC7CpB,UAAU,CAACN,UAAU,GACpBlB,eAAe,GACf6C,YAAY,IAAIhB,sBAAsB,GAAGE,aAAa,CAAC;MACxDtB,KAAK,CAAC8B,cAAc,CAAC,CAAC;MAEtBhE,aAAa,CAAC,IAAI,CAAC;MACnBN,cAAc,CAACsC,KAAK,CAAChE,cAAc,EAAE,MAAM;QAC1CgC,aAAa,CAAC,KAAK,CAAC;MACrB,CAAC,CAAC;IACH;EACD;EAEA,SAASuE,eAAeA,CAACrC,KAAmB,EAAQ;IACnDb,aAAa,GAAG,KAAK;IACrB,IAAIH,SAAS,CAACJ,OAAO,IAAIY,kBAAkB,KAAK,UAAU,EAAE;MAC3DR,SAAS,CAACJ,OAAO,CAAC0D,qBAAqB,CAACtC,KAAK,CAACW,SAAS,CAAC;IACzD;IACA,IAAI1B,SAAS,CAACL,OAAO,IAAIY,kBAAkB,KAAK,YAAY,EAAE;MAC7DP,SAAS,CAACL,OAAO,CAAC0D,qBAAqB,CAACtC,KAAK,CAACW,SAAS,CAAC;IACzD;EACD;EAEA,SAAS4B,wBAAwBA,CAACvC,KAAmB,EAAQ;IAC5D,IAAIA,KAAK,CAACwC,WAAW,KAAK,OAAO,EAAE;MAClC,MAAMC,iBAAiB,GAAGlH,QAAQ,CACjCoD,OAAO,CAACC,OAAO,EACfoB,KAAK,CAACI,MACP,CAAC;MACD1C,WAAW,CAAC+E,iBAAiB,CAAC;IAC/B;EACD;EAEA,MAAMC,KAAK,GAAGtH,UAAU,CACvB,MAAM;IACL,MAAMuH,KAAK,GAAGpE,aAAa,CAAC,CAAC;IAC7B,MAAMqE,MAAM,GAAGnE,WAAW,CAAC,CAAC;IAC5B,OAAO;MACNoE,SAAS,EAAEhF,UAAU,CAAC,CAAC,IAAIE,UAAU,CAAC,CAAC;MACvC+E,YAAY,EAAE,CAACF,MAAM,CAAChG,CAAC;MACvBmG,YAAY,EAAE,CAACH,MAAM,CAAC/F,CAAC;MACvBmG,cAAc,EAAEL,KAAK,CAACpG,MAAM;MAC5B0G,YAAY,EAAEN,KAAK,CAACnG,IAAI;MACxB0G,cAAc,EAAEP,KAAK,CAAClG,MAAM;MAC5B0G,YAAY,EAAER,KAAK,CAACjG,IAAI;MACxB0G,YAAY,EAAER,MAAM,CAAC9F;IACtB,CAAC;EACF,CAAC,EACD;IAAEa,IAAI,EAAE;EAAoB,CAC7B,CAAC;;EAED;EACA,MAAM0F,YAAY,GAAG;IACpBC,IAAI,EAAE,cAAuB;IAC7BC,cAAc,EAAEhB,wBAAwB;IACxCiB,aAAa,EAAEjB,wBAAwB;IACvCkB,cAAc,EAAEA,CAAA,KAAM;MACrB/F,WAAW,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,IAAIgG,KAAKA,CAAA,EAAsB;MAC9B,MAAMC,IAAI,GAAGxF,UAAU,CAAC,CAAC;MACzB,OAAO;QACNyF,QAAQ,EAAE,UAAU;QACpB,CAAC1H,qBAAqB,CAAC2H,sBAAsB,GAAG,GAAGF,IAAI,CAACtH,MAAM,IAAI;QAClE,CAACH,qBAAqB,CAAC4H,qBAAqB,GAAG,GAAGH,IAAI,CAACvH,KAAK;MAC7D,CAAC;IACF;EACD,CAAC;EAED,MAAM2H,IAAI,GAAkCC,SAAa,IAAK;IAC7D,MAAMC,MAAM,GAAGvI,cAAc,CAAC2H,YAAY,EAAErH,mBAAmB,CAAC0G,KAAK,CAAC,CAAC;IACvE,OAAOhH,cAAc,CAACuI,MAAM,EAAED,SAAS,CAAC;EAEzC,CAAC;EAED,MAAME,QAAQ,GAAIC,EAAyB,IAAW;IACrDxF,OAAO,CAACC,OAAO,GAAGuF,EAAE;EACrB,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAA6C;IACrE,MAAMC,aAAa,GAAG7I,oBAAoB,CACzC,MAAMuI,IAAI,CAAC,CACZ,CAAC;IACD,OAAQI,EAAyB,IAAW;MAC3CD,QAAQ,CAACC,EAAE,CAAC;MACZE,aAAa,CAACF,EAAE,CAAC;IAClB,CAAC;EACF,CAAC;;EAED;EACA,MAAMG,GAAkB,GAAG;IAC1BvE,iBAAiB;IACjBa,iBAAiB;IACjByB,eAAe;IACf3C,YAAY;IACZvB,UAAU;IACVC,aAAa;IACbC,SAAS;IACTC,YAAY;IACZL,oBAAoB;IACpBC,uBAAuB;IACvBgB,SAAS;IACTrB,UAAU;IACVC,aAAa;IACbC,UAAU;IACVC,aAAa;IACbP,QAAQ;IACRC,WAAW;IACXmB,WAAW;IACXF,OAAO;IACPG,aAAa;IACbC,aAAa;IACbC,SAAS;IACTC,SAAS;IACT3B,MAAM;IACNmB,WAAW;IACXC,cAAc;IACdH,aAAa;IACbC,gBAAgB;IAChB+F,aAAa,EAAE7B,KAAK;IACpB,IAAI8B,qBAAqBA,CAAA,EAA0B;MAClD,OAAOzH,8BAA8B,CACpCtB,UAAU,CAAC4B,OAAO,CAACmH,qBAAqB,CACzC,CAAC;IACF,CAAC;IACDT,IAAI;IACJG,QAAQ;IACRE,gBAAgB;IAChBK,QAAQ,EAAGC,aAAa,IACvB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAACJ,GAAG,CAAC;AACrC,IAAI,CAACI,aAAa,CAACC,QAAQ;AAC3B,GAAG,EAAE,qBAAqB;EAEzB,CAAC;EACAL,GAAG,CAAmC3I,aAAa,CAAC,GACpDiJ,yBAAyB;EAC1B,OAAON,GAAG;AACX;AAEA,MAAMM,yBAAyB,GAAGhJ,YAAY,CAC7C,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eACD,CAAC","ignoreList":[]}