@guildofgleks/ui 21.12.0 → 21.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +179 -28
- package/CHANGELOG.md +612 -0
- package/README.md +23 -3
- package/TOKENS.md +52 -51
- package/fesm2022/guildofgleks-ui-datepicker.mjs +20 -0
- package/fesm2022/guildofgleks-ui-datepicker.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-dialog.mjs +20 -0
- package/fesm2022/guildofgleks-ui-dialog.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-shared.mjs +4692 -0
- package/fesm2022/guildofgleks-ui-shared.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui-table.mjs +20 -0
- package/fesm2022/guildofgleks-ui-table.mjs.map +1 -0
- package/fesm2022/guildofgleks-ui.mjs +607 -3760
- package/fesm2022/guildofgleks-ui.mjs.map +1 -1
- package/package.json +17 -1
- package/styles/button.css +5 -5
- package/styles/presets/parchment.css +89 -86
- package/styles/presets/terminal.css +107 -102
- package/styles/theme.css +128 -23
- package/types/guildofgleks-ui-datepicker.d.ts +1 -0
- package/types/guildofgleks-ui-dialog.d.ts +1 -0
- package/types/guildofgleks-ui-shared.d.ts +2000 -0
- package/types/guildofgleks-ui-table.d.ts +1 -0
- package/types/guildofgleks-ui.d.ts +279 -1226
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guildofgleks-ui-shared.mjs","sources":["../../../../projects/gleks/ui/shared/checkable-control.config.ts","../../../../projects/gleks/ui/shared/config.ts","../../../../projects/gleks/ui/shared/clearable-state.ts","../../../../projects/gleks/ui/shared/control-id.ts","../../../../projects/gleks/ui/shared/date-utils.ts","../../../../projects/gleks/ui/shared/deprecations.ts","../../../../projects/gleks/ui/shared/overlay-direction.ts","../../../../projects/gleks/ui/shared/overlay-theme.ts","../../../../projects/gleks/ui/shared/dropdown-overlay.ts","../../../../projects/gleks/ui/shared/dropdown-position.ts","../../../../projects/gleks/ui/shared/ripple-state.ts","../../../../projects/gleks/ui/shared/error-state.ts","../../../../projects/gleks/ui/shared/option-accessor.ts","../../../../projects/gleks/ui/shared/float-label-state.ts","../../../../projects/gleks/ui/shared/roving-focus.ts","../../../../projects/gleks/ui/shared/virtual-window.ts","../../../../projects/gleks/ui/shared/dropdown-base.ts","../../../../projects/gleks/ui/shared/icon-registry.ts","../../../../projects/gleks/ui/shared/icons.ts","../../../../projects/gleks/ui/shared/token-names.ts","../../../../projects/gleks/ui/shared/token-values.ts","../../../../projects/gleks/ui/shared/tooltip-position.ts","../../../../projects/gleks/ui/shared/variable-window.ts","../../../../projects/gleks/ui/shared/public-api.ts","../../../../projects/gleks/ui/shared/guildofgleks-ui-shared.ts"],"sourcesContent":["import { GogSize } from './types';\r\n\r\nexport interface GogCheckableControlSizeConfig {\r\n readonly boxSize: string;\r\n readonly labelSize: string;\r\n readonly indicatorSize: string;\r\n}\r\n\r\nexport const GOG_CHECKABLE_CONTROL_PADDING = 'var(--gog-control-checkbox-padding, 8px)';\r\n\r\nexport const GOG_CHECKABLE_CONTROL_SIZE_MAP = {\r\n xsm: {\r\n boxSize: 'var(--gog-control-checkbox-box-size-xsm, 12px)',\r\n labelSize: 'var(--gog-control-checkbox-label-size-xsm, 0.6875rem)',\r\n indicatorSize: 'var(--gog-control-checkbox-icon-size-xsm, 10px)',\r\n },\r\n sm: {\r\n boxSize: 'var(--gog-control-checkbox-box-size-sm, 18px)',\r\n labelSize: 'var(--gog-control-checkbox-label-size-sm, 0.8125rem)',\r\n indicatorSize: 'var(--gog-control-checkbox-icon-size-sm, 12px)',\r\n },\r\n md: {\r\n boxSize: 'var(--gog-control-checkbox-box-size-md, 24px)',\r\n labelSize: 'var(--gog-control-checkbox-label-size-md, 0.9375rem)',\r\n indicatorSize: 'var(--gog-control-checkbox-icon-size-md, 14px)',\r\n },\r\n lg: {\r\n boxSize: 'var(--gog-control-checkbox-box-size-lg, 32px)',\r\n labelSize: 'var(--gog-control-checkbox-label-size-lg, 1.0625rem)',\r\n indicatorSize: 'var(--gog-control-checkbox-icon-size-lg, 18px)',\r\n },\r\n slg: {\r\n boxSize: 'var(--gog-control-checkbox-box-size-slg, 40px)',\r\n labelSize: 'var(--gog-control-checkbox-label-size-slg, 1.1875rem)',\r\n indicatorSize: 'var(--gog-control-checkbox-icon-size-slg, 22px)',\r\n },\r\n} as const satisfies Record<GogSize, GogCheckableControlSizeConfig>;\r\n","import { InjectionToken, Provider, Type, inject } from '@angular/core';\r\n\r\nimport {\r\n GogFloatLabelVariant,\r\n GogScrollOverscrollBehavior,\r\n GogScrollSize,\r\n GogSize,\r\n GogSpinnerVariant,\r\n GogTextareaResize,\r\n GogTooltipPosition,\r\n} from './types';\r\n// Type-only, so none of these pull a runtime dependency into this module — `config.ts` is\r\n// imported by nearly every component and must stay free of import cycles.\r\nimport type { GogErrorDisplay } from './error-state';\r\nimport type { GogDropdownDirection } from './dropdown-position';\r\nimport type { GogDropdownFilterPosition } from './types';\r\nimport type { ToastPosition } from './types';\r\n\r\n/**\r\n * App-wide defaults for the handful of component inputs where that actually makes sense —\r\n * timing/behavior knobs a whole app typically wants to set once (a house style for how long\r\n * scrollbars stay visible, how aggressively buttons debounce clicks), not visual ones.\r\n * Visual defaults (colors, radii, animation *durations expressed in CSS*) already have a\r\n * global mechanism: the `--gog-*` custom properties in `styles/theme.css`. This is only for\r\n * inputs that can't be a CSS token because a component reads them in TypeScript (a\r\n * `setTimeout` delay, an RxJS `timer` duration) — see `styling.instructions.md` and\r\n * `gleks-ui-library.instructions.md`'s \"Global configuration\" section for the line between\r\n * the two and for how to add a new field here when a component needs one.\r\n *\r\n * Every field is optional at every level: set only the ones you want to change from the\r\n * component's own built-in default. An instance's own input, when set, always wins over\r\n * this — this only fills in what the instance didn't specify itself.\r\n */\r\nexport interface GogGlobalConfig {\r\n /**\r\n * The loading indicator, app-wide.\r\n *\r\n * `component` is the one config key that carries markup rather than a value, and it is here\r\n * because of what it removes: a house spinner otherwise has to be passed into every control\r\n * that can show one, and cannot be passed into the ones that render their own. Set it once and\r\n * **every** spinner the library draws is yours — `gog-spinner`, `gog-spinner-overlay`, and the\r\n * ones inside `gog-button`, `gog-autocomplete` and `gog-table`'s loading states, which have no\r\n * input to reach. It is rendered through `NgComponentOutlet` inside the size wrapper, so it\r\n * keeps the sizing, the overlay behaviour, the `role=\"status\"` and the accessible name; only\r\n * the visual is yours.\r\n *\r\n * Precedence is the library's usual one, with a wrinkle worth stating: an instance's own\r\n * `variant` wins over both keys here, `component` wins over `variant`, and the built-in\r\n * `runic` is the fallback. So `<gog-spinner variant=\"ring\">` still gets a ring in an app that\r\n * has set a component — an instance asking for something specific is not overridden by a\r\n * default.\r\n *\r\n * Applies to: `gog-spinner`, `gog-spinner-overlay`, and the spinners inside `gog-button`,\r\n * `gog-autocomplete` and `gog-table`. Two of those were wrong until 21.10.0 and are worth the\r\n * warning: `gog-table` was never listed although it always honoured the key, and\r\n * `gog-spinner-overlay` was listed although it did not — it forwards its own `variant` down,\r\n * and that input defaulted to `'runic'`, which the spinner inside correctly read as an\r\n * instance overruling a default. Neither shows up in a grep for `globalConfig.spinner`,\r\n * because neither reads the config: they render a `gog-spinner` that does.\r\n */\r\n spinner?: {\r\n component?: Type<unknown>;\r\n variant?: GogSpinnerVariant;\r\n };\r\n\r\n scroll?: {\r\n autoHide?: boolean;\r\n hideDelay?: number;\r\n size?: GogScrollSize;\r\n overscrollBehavior?: GogScrollOverscrollBehavior;\r\n /**\r\n * Whether the overlay thumb/track ever renders. Scrolling itself is unaffected either way\r\n * — this is purely the visual affordance. Defaults to `true`.\r\n */\r\n showTrack?: boolean;\r\n /**\r\n * Turns a vertical wheel into horizontal scrolling on a `gog-scroll` that has nothing to\r\n * scroll vertically. Defaults to `false`; see the component's `horizontalWheel` input for\r\n * the conditions it applies under and why it never swallows a gesture at the content's end.\r\n */\r\n horizontalWheel?: boolean;\r\n };\r\n button?: {\r\n debounce?: number;\r\n };\r\n /**\r\n * Whether the library's own interactive surfaces show a press ripple: `gog-button`,\r\n * `[gogButton]`, `gog-button-toggle`, `gog-chip`, `gog-tabs`, `gog-accordion`,\r\n * `gog-collapsible`, `gog-menu` and the three dropdowns' options. **Off by default**, so the\r\n * effect is additive and nothing changes appearance until an app asks for it.\r\n *\r\n * This is the one visual default that is *not* expressible as a CSS token, which is why it is\r\n * here at all: `--gog-ripple-opacity: 0` would hide the wash but still pay for the DOM node,\r\n * the pointer listeners and the animation frames on every press. A real off has to reach the\r\n * TypeScript.\r\n *\r\n * Per-instance: every component listed above takes a `ripple` input that wins over this, so\r\n * `[ripple]=\"false\"` opts one control out of an app-wide `true` (and `[ripple]=\"true\"` opts one\r\n * in without switching the app over). The `[gogRipple]` directive on your **own** element is\r\n * not covered — writing the attribute is already the per-element decision, the same way\r\n * `[filter]=\"true\"` on one `gog-select` is; `rippleDisabled` turns that one off.\r\n */\r\n ripple?: {\r\n enabled?: boolean;\r\n };\r\n tooltip?: {\r\n showDelay?: number;\r\n hideDelay?: number;\r\n position?: GogTooltipPosition;\r\n };\r\n /**\r\n * Applies to `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`,\r\n * `gog-autocomplete` and `gog-datepicker` — every field that can float a label. All six read\r\n * it through the same `GogFloatLabelState`, three of them via `GogDropdownBase`.\r\n */\r\n floatLabel?: {\r\n variant?: GogFloatLabelVariant;\r\n /**\r\n * Whether the field's own `placeholder` reappears once its label has floated out of\r\n * the way. Defaults to `false` — the placeholder stays hidden the whole time a float\r\n * label is active, since the resting label already occupies that space.\r\n */\r\n showPlaceholder?: boolean;\r\n };\r\n /**\r\n * Defaults for the interactive form controls — the two settings an app otherwise repeats on\r\n * literally every one of them: a compact app writes `size=\"sm\"` everywhere, and a\r\n * Reactive-Forms app writes `errorDisplay=\"auto\"` on every field.\r\n *\r\n * - `size` applies to `gog-button` and `[gogButton]`, `gog-button-toggle-group`,\r\n * `gog-checkbox`, `gog-toggle`, `gog-radio-group`, `gog-inputfield`, `gog-textarea`,\r\n * `gog-select`, `gog-multiselect`, `gog-autocomplete` and `gog-datepicker`. Deliberately\r\n * **not** to `gog-table`, `gog-accordion` or `gog-paginator` (whose `size` means row/layout\r\n * density and whose defaults differ), nor to `gog-spinner`, `gog-skeleton`, `gog-tag` or\r\n * `gog-chip` (sized to fit whatever they sit next to, not to a form's density).\r\n * - `errorDisplay` applies to every control that renders a validation message:\r\n * `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`, `gog-autocomplete`,\r\n * `gog-datepicker`, `gog-radio-group` and `gog-slider`.\r\n *\r\n * A component's own built-in default still applies when this is unset, so setting `size`\r\n * here does not flatten the different defaults those excluded components have.\r\n *\r\n * **When you add a reader, add it here — and note that \"reader\" is not the same as \"names\r\n * the field\".** These lists were wrong for four keys until 2026-09-02, always in the same\r\n * direction and for the same reason: `gog-select`, `gog-multiselect` and `gog-autocomplete`\r\n * resolve `size`/`errorDisplay`/`clearable`/`floatLabel` inside `GogDropdownBase`, and\r\n * `gog-datepicker` composes the same state classes directly, so none of the four contains the\r\n * `globalConfig.control?.…` expression that a grep for readers finds. Nor does the resolved\r\n * value always reach a template by name — `size` arrives as a computed class (`sizeClass`,\r\n * `panelSizeClass`) and `dropdown.direction` is consumed by placement code, so \"is the\r\n * computed referenced in the component's HTML?\" answers *no* for components that genuinely\r\n * honour the key. Trace the shared state classes, not just the components.\r\n */\r\n control?: {\r\n size?: GogSize;\r\n errorDisplay?: GogErrorDisplay;\r\n /**\r\n * Whether `gog-inputfield`, `gog-textarea`, `gog-select`, `gog-multiselect`,\r\n * `gog-autocomplete` and `gog-datepicker` offer a clear button — every control that\r\n * composes `GogClearableState`. The button only ever appears once the control actually has\r\n * something to clear, so switching this on app-wide adds no permanent chrome.\r\n *\r\n * Component defaults are `false`, except `gog-multiselect`, which had a clear button\r\n * before this input existed and keeps it.\r\n */\r\n clearable?: boolean;\r\n };\r\n /**\r\n * Applies per field rather than per component, which is why this is not one sentence:\r\n *\r\n * - `appendToBody` and `direction` reach `gog-select`, `gog-multiselect`,\r\n * `gog-autocomplete` (all three through `GogDropdownBase`) and `gog-datepicker`, which\r\n * resolves the same pair itself.\r\n * - `filter` and `filterPosition` reach `gog-select` and `gog-multiselect` only.\r\n * `gog-autocomplete` inherits both inputs from the same base class and renders no filter\r\n * box for them — its own text field *is* the filter, so a second search box inside the\r\n * panel would be a duplicate. Setting these does nothing to an autocomplete.\r\n */\r\n dropdown?: {\r\n /**\r\n * Whether the panel is rendered into `<body>` instead of inline. Worth setting app-wide\r\n * for a layout whose dropdowns generally live inside scrollable or overflow-clipped\r\n * containers, which is the case this exists for.\r\n */\r\n appendToBody?: boolean;\r\n direction?: GogDropdownDirection;\r\n /** Whether the panel shows a search box. Off by default. */\r\n filter?: boolean;\r\n /** Which end of the panel the search box sticks to. `'top'` by default. */\r\n filterPosition?: GogDropdownFilterPosition;\r\n /**\r\n * Whether the option list renders only the rows in view instead of all of them. Reaches\r\n * `gog-select`. **Off by default**, and deliberately not switched on above some row count:\r\n * a windowed list and a plain one differ under `Ctrl+F`, under a screen reader's \"list all\r\n * items\", and under consumer CSS that targets `:last-child`, so a data-dependent threshold\r\n * would make behaviour depend on how much data happened to arrive.\r\n *\r\n * Worth setting app-wide for an app whose selects are generally fed long lists; a per-field\r\n * `virtualize` still wins over it.\r\n */\r\n virtualize?: boolean;\r\n };\r\n /**\r\n * Applies to `gog-datepicker` and `gog-calendar`. Every field here is something an app sets\r\n * once rather than per field — a locale and a date format repeated on every date input is\r\n * exactly the boilerplate this config exists to remove.\r\n */\r\n datepicker?: {\r\n /** BCP-47 tag driving month and weekday names. */\r\n locale?: string;\r\n /** 0 = Sunday … 6 = Saturday. Unset, it comes from the locale. */\r\n firstDayOfWeek?: number;\r\n /** Display and parse pattern (`dd.MM.yyyy`, `yyyy-MM-dd`, …). */\r\n format?: string;\r\n };\r\n /**\r\n * Applies to `gog-paginator`, and through it to `gog-table`'s built-in pagination.\r\n *\r\n * The page-size select is the one piece of paginator chrome an app decides once — either its\r\n * tables offer the choice or they don't, and the option list is a house style. Both are still\r\n * overridable per instance, for the page whose table genuinely needs `5, 10, 20` while the rest\r\n * of the app uses `20, 50, 100`.\r\n */\r\n paginator?: {\r\n /** Whether the rows-per-page select renders at all. **Off by default.** */\r\n showPageSizeSelect?: boolean;\r\n /** The choices it offers. Defaults to `[10, 20, 30, 40, 50]`. */\r\n pageSizeOptions?: number[];\r\n };\r\n /** Applies to `gog-autocomplete`. */\r\n autocomplete?: {\r\n /**\r\n * Milliseconds to wait after the last keystroke before `gogSearch` fires. A whole app\r\n * usually wants one answer here, tuned to its backend rather than to each field.\r\n */\r\n searchDebounce?: number;\r\n /** How many characters before the panel opens at all. */\r\n minLength?: number;\r\n /**\r\n * Whether focusing the field opens the panel immediately, showing the full option list.\r\n * Defaults to `true`.\r\n */\r\n openOnFocus?: boolean;\r\n };\r\n /** Applies to `gog-inputfield`. */\r\n inputfield?: {\r\n /**\r\n * Whether a `type=\"number\"` field shows the library's own spin buttons in place of the\r\n * browser's native ones. Defaults to `true`.\r\n */\r\n showSpinButtons?: boolean;\r\n };\r\n /** Applies to `gog-textarea`. */\r\n textarea?: {\r\n /**\r\n * Which direction(s) the field's own drag handle resizes it in — matches the native CSS\r\n * `resize` value space. Defaults to `'vertical'`.\r\n */\r\n resize?: GogTextareaResize;\r\n };\r\n toast?: {\r\n position?: ToastPosition;\r\n /** How long a non-sticky toast stays up, in ms. */\r\n duration?: number;\r\n };\r\n /**\r\n * Every fixed, user-visible string the library renders — button text and accessible names for\r\n * chrome the consumer never writes markup for.\r\n *\r\n * These are here rather than as one input per string because they are the definition of a\r\n * setting an app states once: a Russian-language app relabels \"Clear\" once, not on all 340\r\n * fields. Where a per-instance input already exists (`clearAriaLabel`, `todayLabel`, …) it\r\n * still wins for that one control — the usual instance → config → default order.\r\n *\r\n * Deliberately excludes anything that is *content* rather than chrome: `gog-checkbox`'s\r\n * `ariaLabel`, `gog-button`'s `ariaLabel`, a field's `label` or `placeholder`. Those differ\r\n * per instance by definition and have no meaningful app-wide value.\r\n */\r\n labels?: {\r\n /** Clear button on `gog-inputfield` / `gog-textarea`. */\r\n clear?: string;\r\n /**\r\n * Clear button on `gog-select` / `gog-multiselect` / `gog-autocomplete`, which clears a\r\n * selection rather than text.\r\n */\r\n clearSelection?: string;\r\n /** Clear button on `gog-datepicker`. */\r\n clearDate?: string;\r\n /** `gog-multiselect`'s select-all / clear-all buttons — visible text, not just a label. */\r\n selectAll?: string;\r\n clearAll?: string;\r\n /** `gog-inputfield`'s number spin buttons. */\r\n increment?: string;\r\n decrement?: string;\r\n /** `gog-inputfield`'s password reveal toggle, in its two states. */\r\n showPassword?: string;\r\n hidePassword?: string;\r\n /** Close buttons on the two service-driven overlays. */\r\n closeDialog?: string;\r\n closeToast?: string;\r\n /**\r\n * `gog-alert`'s dismiss button. Separate from `closeToast` on purpose: a toast closes\r\n * something that was going to leave anyway, an alert dismisses a message that would have\r\n * stayed, and several languages use different verbs for the two.\r\n */\r\n closeAlert?: string;\r\n /** `gog-paginator`'s `<nav>` accessible name and its two step buttons. */\r\n pagination?: string;\r\n previousPage?: string;\r\n nextPage?: string;\r\n /**\r\n * `gog-paginator`'s per-page button names (\"Go to page 4\", \"Page 4, current page\").\r\n *\r\n * A function rather than a string, and the only one in this block: these interpolate the\r\n * page number, and a template string with a `{0}` placeholder would be a second, weaker\r\n * formatting language to learn — one that also can't express languages where the number's\r\n * position or the surrounding grammar depends on its value. The default is\r\n * `` (page, isCurrent) => isCurrent ? `Page ${page}, current page` : `Go to page ${page}` ``.\r\n */\r\n page?: (page: number, isCurrent: boolean) => string;\r\n /** `gog-datepicker`'s button that opens the calendar panel. */\r\n openCalendar?: string;\r\n /**\r\n * `gog-panel`'s collapse toggle, used **only** when the panel has no `gogPanelHeader` to\r\n * borrow a name from. A panel with a heading names its toggle after that heading, which is\r\n * both more useful and per-instance by definition.\r\n */\r\n togglePanel?: string;\r\n /** `gog-paginator`'s rows-per-page select. */\r\n rowsPerPage?: string;\r\n /** `gog-table`: the row-count label, its paginator, and the selection checkboxes. */\r\n total?: string;\r\n tablePagination?: string;\r\n selectRow?: string;\r\n selectAllRows?: string;\r\n /** `gog-calendar` navigation and shortcuts. */\r\n today?: string;\r\n thisMonth?: string;\r\n previousMonth?: string;\r\n nextMonth?: string;\r\n previousYear?: string;\r\n nextYear?: string;\r\n /** `gog-calendar`'s time section. */\r\n hours?: string;\r\n minutes?: string;\r\n seconds?: string;\r\n };\r\n /**\r\n * Applies to `ThemeService`. Every field is off/neutral by default, so an app that configures\r\n * nothing keeps the pre-21.3.2 behaviour: adopt whatever `data-theme` is already on `<html>`,\r\n * else `'light'`.\r\n */\r\n theme?: {\r\n /**\r\n * `localStorage` key the chosen theme is written to and read back from. Unset, nothing is\r\n * persisted and the theme resets on every load.\r\n */\r\n storageKey?: string | null;\r\n /** Theme applied when nothing else decides. `'light'` by default. */\r\n defaultTheme?: string;\r\n /**\r\n * Whether to fall back to the OS `prefers-color-scheme` setting — and to keep following it\r\n * until the app calls `setTheme`/`toggleTheme`. Off by default: switching this on changes\r\n * which theme an existing app opens in.\r\n */\r\n followSystem?: boolean;\r\n /** Theme names `toggleTheme()` alternates between, and `followSystem` maps the OS setting to. */\r\n lightTheme?: string;\r\n darkTheme?: string;\r\n };\r\n}\r\n\r\n/**\r\n * Resolves to `{}` — every field falls through to its component's own hardcoded default —\r\n * until a `provideGogConfig(...)` call overrides it somewhere in the injector tree.\r\n */\r\nexport const GOG_CONFIG = new InjectionToken<GogGlobalConfig>('GOG_CONFIG', {\r\n providedIn: 'root',\r\n factory: () => ({}),\r\n});\r\n\r\n/**\r\n * Layers `override` onto `base`, one level deep: a component key present in both has its\r\n * fields merged (so `{ tooltip: { showDelay } }` keeps the parent's `tooltip.position`), and a\r\n * key present in only one is taken as-is.\r\n *\r\n * Deliberately not a deep merge — `GogGlobalConfig` is exactly two levels by design, and a\r\n * recursive merge would start doing surprising things to any future field whose value is\r\n * itself an object the consumer means to replace wholesale.\r\n */\r\nfunction mergeGogConfig(base: GogGlobalConfig, override: GogGlobalConfig): GogGlobalConfig {\r\n const merged: Record<string, unknown> = { ...base };\r\n\r\n for (const [key, overrideValue] of Object.entries(override)) {\r\n const baseValue = (base as Record<string, unknown>)[key];\r\n merged[key] =\r\n isPlainObject(baseValue) && isPlainObject(overrideValue)\r\n ? { ...baseValue, ...overrideValue }\r\n : overrideValue;\r\n }\r\n\r\n return merged as GogGlobalConfig;\r\n}\r\n\r\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n}\r\n\r\n/**\r\n * Sets app-wide (or subtree-wide, if placed in a route's or component's own `providers`\r\n * instead of the bootstrap config) defaults for every `@guildofgleks/ui` component that\r\n * reads `GOG_CONFIG` — one call instead of a separate injection token per setting:\r\n *\r\n * ```ts\r\n * // app.config.ts\r\n * providers: [\r\n * provideGogConfig({\r\n * scroll: { hideDelay: 1000 },\r\n * button: { debounce: 500 },\r\n * }),\r\n * ]\r\n * ```\r\n *\r\n * **Providing this again further down the injector tree layers onto the parent's config\r\n * rather than replacing it.** A route that only cares about tooltips can say so, and the\r\n * app-wide `button.debounce` stays in effect inside it:\r\n *\r\n * ```ts\r\n * // a route's providers — button.debounce from app.config.ts still applies here\r\n * provideGogConfig({ tooltip: { showDelay: 0 } })\r\n * ```\r\n *\r\n * Merging is one level deep, per component key: the nearest provider wins field by field, so\r\n * `{ tooltip: { showDelay: 0 } }` overrides only `showDelay` and leaves a parent's\r\n * `tooltip.position` alone. To drop an inherited value rather than change it, set it back to\r\n * the component's own default explicitly — there is no \"unset\" marker.\r\n */\r\nexport function provideGogConfig(config: GogGlobalConfig): Provider {\r\n return {\r\n provide: GOG_CONFIG,\r\n // skipSelf so this reads the *parent* injector's config rather than recursing into the\r\n // provider being defined here; optional because at the root there is no parent providing it.\r\n useFactory: () =>\r\n mergeGogConfig(inject(GOG_CONFIG, { skipSelf: true, optional: true }) ?? {}, config),\r\n };\r\n}\r\n\r\n/**\r\n * The library's precedence rule for a configurable input, in one place: an instance's own\r\n * input wins, then the app-wide `GOG_CONFIG` value, then the component's built-in default.\r\n *\r\n * Every configurable input resolves through this rather than repeating the `??` chain, so the\r\n * order can't drift between components — a component that accidentally checked the config\r\n * first would silently ignore the input on that one control only, which is close to invisible\r\n * in review. Kept a plain function (no `inject`) so it works anywhere: inside a `computed`, in\r\n * a composition class like `GogFloatLabelState`, and in unit tests without an injector.\r\n *\r\n * ```ts\r\n * private readonly globalConfig = inject(GOG_CONFIG);\r\n * protected readonly resolvedDebounce = computed(() =>\r\n * resolveConfigured(this.debounce(), this.globalConfig.button?.debounce, DEFAULT_DEBOUNCE),\r\n * );\r\n * ```\r\n */\r\nexport function resolveConfigured<T>(\r\n instanceValue: T | undefined,\r\n configuredValue: T | undefined,\r\n fallback: T,\r\n): T {\r\n return instanceValue ?? configuredValue ?? fallback;\r\n}\r\n","import { Signal, computed } from '@angular/core';\r\n\r\nimport { GogGlobalConfig, resolveConfigured } from './config';\r\n\r\n/**\r\n * Shared \"show a clear button\" state for the field-style controls.\r\n *\r\n * A plain composition class, same reasoning as `GogErrorState` and `GogFloatLabelState`: it has\r\n * to serve `gog-inputfield` and `gog-textarea` (no common base class) as well as\r\n * `GogDropdownBase`, which is one.\r\n *\r\n * The two things each control supplies itself are `hasValue` — \"there is something to clear\"\r\n * differs per control (non-empty string / non-null selection / non-empty array) — and the\r\n * actual clearing, since only the control knows its own empty value and how to notify forms.\r\n */\r\nexport class GogClearableState {\r\n /**\r\n * @param clearableInput the control's own `clearable` input (`undefined` when unset)\r\n * @param hasValue whether there is anything to clear\r\n * @param isNotEditable whether the control currently refuses edits — disabled, or (for the\r\n * text controls) read-only. Either way it offers no clear button: the affordance would\r\n * promise a change the control won't accept.\r\n * @param config the injected `GOG_CONFIG`\r\n * @param fallback the control's own default, read lazily — `GogDropdownBase` constructs this\r\n * in a field initializer, before its subclass has assigned `clearableByDefault`. `false`\r\n * everywhere except `gog-multiselect`, which shipped a clear button before this input\r\n * existed and keeps it.\r\n */\r\n constructor(\r\n private readonly clearableInput: Signal<boolean | undefined>,\r\n private readonly hasValue: Signal<boolean>,\r\n private readonly isNotEditable: Signal<boolean>,\r\n private readonly config: GogGlobalConfig,\r\n private readonly fallback: () => boolean,\r\n ) {}\r\n\r\n /** Whether the control is clearable at all — instance input, then config, then the default. */\r\n readonly enabled = computed(() =>\r\n resolveConfigured(this.clearableInput(), this.config.control?.clearable, this.fallback()),\r\n );\r\n\r\n /**\r\n * Whether the clear button should render *right now*. Deliberately value-driven: the control\r\n * shows nothing to clear until there is something to clear, so the affordance appears with the\r\n * content rather than sitting there permanently as dead chrome.\r\n */\r\n readonly isVisible = computed(() => this.enabled() && this.hasValue() && !this.isNotEditable());\r\n}\r\n","/**\r\n * Per-prefix counter behind every auto-generated DOM id in the library.\r\n *\r\n * A form control needs a real `id` whether or not the consumer supplied one: without it a\r\n * `<label for>` cannot point at the field (so clicking the label does not focus it, and\r\n * assistive tech gets no accessible name), and `aria-describedby` cannot point at the error\r\n * message. Making the consumer pass `inputId` for that is a trap — the field looks fine and is\r\n * quietly inaccessible.\r\n *\r\n * Counters are keyed by prefix rather than shared, so ids stay stable per component type\r\n * (`gog-input-1`, `gog-slider-1`) instead of depending on how many *other* controls happened to\r\n * be constructed first. That also keeps them predictable in tests and diffs.\r\n *\r\n * SSR/hydration-safe by construction: the server and the client walk the same component tree in\r\n * the same order, so both arrive at the same ids. Do not seed this with randomness for that\r\n * reason.\r\n */\r\nconst counters = new Map<string, number>();\r\n\r\n/** Returns the next id for `prefix`, e.g. `nextGogControlId('gog-input')` → `'gog-input-3'`. */\r\nexport function nextGogControlId(prefix: string): string {\r\n const next = (counters.get(prefix) ?? 0) + 1;\r\n counters.set(prefix, next);\r\n return `${prefix}-${next}`;\r\n}\r\n","/**\n * Every date calculation `gog-datepicker` and `gog-calendar` do, as pure functions.\n *\n * Kept out of the components so the arithmetic is testable without a fixture, and so a range\n * calculation is written once rather than once per selection mode.\n *\n * **Everything here works in local time.** Nothing round-trips through `toISOString()` or\n * compares `Date` objects directly: an ISO round trip converts to UTC, which moves the date\n * across midnight for anyone east or west of Greenwich, and two `Date`s for \"the same day\"\n * are almost never equal because they carry different times. Comparisons go through\n * `startOfDay` and `isSameDay` instead. This is the single most common defect in a datepicker.\n */\n\n/** A start/end pair. `end` is null while a range is half-picked. */\nexport interface GogDateRange {\n start: Date | null;\n end: Date | null;\n}\n\n/** Midnight local time on the same calendar day. */\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/** Whether two dates fall on the same calendar day, ignoring the time of day. */\nexport function isSameDay(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\n/** Whether two dates fall in the same calendar month. */\nexport function isSameMonth(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addDays(date: Date, days: number): Date {\n const next = new Date(date.getTime());\n next.setDate(next.getDate() + days);\n return next;\n}\n\n/** Days in a given month. `month` is 0-based, as `Date` uses it. */\nexport function daysInMonth(year: number, month: number): number {\n // Day 0 of the next month is the last day of this one.\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Adds whole months, **clamping the day** to the target month's length: 31 January plus one\n * month is 28 February, not 3 March. `Date.setMonth` does the latter, which is why this is\n * not a one-liner.\n */\nexport function addMonths(date: Date, months: number): Date {\n const year = date.getFullYear();\n const month = date.getMonth() + months;\n const targetYear = year + Math.floor(month / 12);\n const targetMonth = ((month % 12) + 12) % 12;\n const day = Math.min(date.getDate(), daysInMonth(targetYear, targetMonth));\n\n return new Date(\n targetYear,\n targetMonth,\n day,\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n );\n}\n\nexport function addYears(date: Date, years: number): Date {\n return addMonths(date, years * 12);\n}\n\n/** Day-granularity comparison: `a` is strictly before `b`'s day. */\nexport function isBeforeDay(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\n/** Day-granularity comparison: `a` is strictly after `b`'s day. */\nexport function isAfterDay(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\n/** Whether `date`'s day falls within `[min, max]`, either bound optional. */\nexport function isWithinBounds(date: Date, min: Date | null, max: Date | null): boolean {\n if (min && isBeforeDay(date, min)) return false;\n if (max && isAfterDay(date, max)) return false;\n return true;\n}\n\n/** Whether `date`'s day falls inside a range, inclusive of both ends. */\nexport function isInRange(date: Date, start: Date | null, end: Date | null): boolean {\n if (!start || !end) return false;\n const [from, to] = isAfterDay(start, end) ? [end, start] : [start, end];\n return !isBeforeDay(date, from) && !isAfterDay(date, to);\n}\n\n/** Pulls `date` inside `[min, max]`, keeping its time of day. */\nexport function clampDate(date: Date, min: Date | null, max: Date | null): Date {\n if (min && isBeforeDay(date, min)) return copyTimeOnto(min, date);\n if (max && isAfterDay(date, max)) return copyTimeOnto(max, date);\n return date;\n}\n\n/** A new date on `day`'s calendar day carrying `time`'s clock. */\nexport function copyTimeOnto(day: Date, time: Date): Date {\n return new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate(),\n time.getHours(),\n time.getMinutes(),\n time.getSeconds(),\n );\n}\n\n/** A new date on the same day with the clock replaced. */\nexport function withTime(date: Date, hours: number, minutes: number, seconds = 0): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours, minutes, seconds);\n}\n\n/**\n * The six-week grid a month is drawn on, always 6×7 so the calendar's height never changes as\n * you page through months — a grid that grows and shrinks pushes the rest of the page around\n * and moves the button you were about to click.\n *\n * `firstDayOfWeek` is 0 (Sunday) to 6 (Saturday). Leading and trailing cells come from the\n * neighbouring months, as every calendar does.\n */\nexport function buildMonthGrid(year: number, month: number, firstDayOfWeek: number): Date[][] {\n const first = new Date(year, month, 1);\n const shift = (first.getDay() - firstDayOfWeek + 7) % 7;\n const gridStart = addDays(first, -shift);\n\n const weeks: Date[][] = [];\n for (let week = 0; week < 6; week++) {\n const days: Date[] = [];\n for (let day = 0; day < 7; day++) {\n days.push(addDays(gridStart, week * 7 + day));\n }\n weeks.push(days);\n }\n return weeks;\n}\n\n/** Weekday names in `locale`, rotated so `firstDayOfWeek` comes first. */\nexport function weekdayNames(\n locale: string,\n firstDayOfWeek: number,\n style: 'short' | 'narrow' | 'long' = 'short',\n): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: style });\n // 2024-01-07 was a Sunday, so index 0 lines up with `Date.getDay()` 0.\n const sunday = new Date(2024, 0, 7);\n return Array.from({ length: 7 }, (_, i) =>\n formatter.format(addDays(sunday, (i + firstDayOfWeek) % 7)),\n );\n}\n\n/** Month names in `locale`. */\nexport function monthNames(locale: string, style: 'long' | 'short' = 'long'): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: style });\n return Array.from({ length: 12 }, (_, month) => formatter.format(new Date(2024, month, 1)));\n}\n\n/**\n * The first day of the week for a locale, from `Intl.Locale.prototype.getWeekInfo` where the\n * engine has it, falling back to Monday.\n *\n * `getWeekInfo` reports 1–7 with 1 = Monday and 7 = Sunday; `Date.getDay()` uses 0 = Sunday.\n * Converting between the two is exactly the kind of off-by-one that silently shifts a whole\n * calendar by a day, which is why it happens here once.\n */\nexport function localeFirstDayOfWeek(locale: string): number {\n interface WeekInfo {\n firstDay: number;\n }\n type LocaleWithWeekInfo = Intl.Locale & {\n getWeekInfo?: () => WeekInfo;\n weekInfo?: WeekInfo;\n };\n\n try {\n const resolved = new Intl.Locale(locale) as LocaleWithWeekInfo;\n const info = resolved.getWeekInfo?.() ?? resolved.weekInfo;\n if (info && typeof info.firstDay === 'number') {\n return info.firstDay % 7;\n }\n } catch {\n // An invalid locale tag shouldn't take the calendar down with it.\n }\n return 1;\n}\n\nconst PAD2 = (value: number): string => String(value).padStart(2, '0');\n\n/**\n * Formats a date against a token pattern.\n *\n * Supported tokens: `yyyy`, `MM`, `dd`, `HH` (24h), `hh` (12h), `mm`, `ss`, `a` (AM/PM).\n * Anything else is copied through literally.\n *\n * Deliberately **not** `Intl.DateTimeFormat`: this pattern is also what `parseDate` reads, and\n * a formatter whose output cannot be parsed back is how a typed date silently becomes a\n * different one. `Intl` is still used for month and weekday *names*, which are never parsed.\n */\nexport function formatDate(date: Date, pattern: string): string {\n const hours24 = date.getHours();\n const hours12 = hours24 % 12 === 0 ? 12 : hours24 % 12;\n\n const replacements: Record<string, string> = {\n yyyy: String(date.getFullYear()).padStart(4, '0'),\n MM: PAD2(date.getMonth() + 1),\n dd: PAD2(date.getDate()),\n HH: PAD2(hours24),\n hh: PAD2(hours12),\n mm: PAD2(date.getMinutes()),\n ss: PAD2(date.getSeconds()),\n a: hours24 < 12 ? 'AM' : 'PM',\n };\n\n return pattern.replace(/yyyy|MM|dd|HH|hh|mm|ss|a/g, (token) => replacements[token]);\n}\n\n/**\n * Reads a date back out of text written in `pattern`. Returns `null` when the text doesn't\n * match, or matches but isn't a real date (`31.02.2026`).\n *\n * The out-of-range check matters: `new Date(2026, 1, 31)` happily rolls over to 3 March, so a\n * typo would be accepted as a different date rather than rejected.\n */\nexport function parseDate(text: string, pattern: string): Date | null {\n const trimmed = text.trim();\n if (trimmed === '') return null;\n\n const order: string[] = [];\n const source = pattern.replace(/yyyy|MM|dd|HH|hh|mm|ss|a|./g, (token) => {\n switch (token) {\n case 'yyyy':\n order.push(token);\n return '(\\\\d{4})';\n case 'MM':\n case 'dd':\n case 'HH':\n case 'hh':\n case 'mm':\n case 'ss':\n order.push(token);\n return '(\\\\d{1,2})';\n case 'a':\n order.push(token);\n return '([AaPp][Mm])';\n default:\n return token.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n });\n\n const match = new RegExp(`^${source}$`).exec(trimmed);\n if (!match) return null;\n\n const parts: Record<string, number> = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0 };\n let meridiem: 'am' | 'pm' | null = null;\n\n order.forEach((token, index) => {\n const raw = match[index + 1];\n if (token === 'a') {\n meridiem = raw.toLowerCase() as 'am' | 'pm';\n } else {\n parts[token] = Number(raw);\n }\n });\n\n if (order.includes('hh') && meridiem) {\n const base = parts['hh'] % 12;\n parts['HH'] = meridiem === 'pm' ? base + 12 : base;\n } else if (order.includes('hh')) {\n parts['HH'] = parts['hh'];\n }\n\n const year = parts['yyyy'];\n const month = parts['MM'] - 1;\n const day = parts['dd'];\n\n if (month < 0 || month > 11) return null;\n if (day < 1 || day > daysInMonth(year, month)) return null;\n if (parts['HH'] > 23 || parts['mm'] > 59 || parts['ss'] > 59) return null;\n\n return new Date(year, month, day, parts['HH'], parts['mm'], parts['ss']);\n}\n","// GENERATED by scripts/generate-deprecations.mjs — do not edit by hand.\r\n// Run `npm run generate:deprecations`; `npm run check:deprecations` fails on a stale copy.\r\n\r\n/** What kind of thing a deprecation is about: an exported symbol, or a CSS custom property. */\r\nexport type GogDeprecationKind = 'symbol' | 'token';\r\n\r\n/** One deprecated part of the public API, with the version that removes it. */\r\nexport interface GogDeprecation {\r\n kind: GogDeprecationKind;\r\n /** The deprecated name — an export, an input, or a `--gog-*` custom property. */\r\n name: string;\r\n /** What to use instead. */\r\n replacement: string;\r\n /** The version that deprecated it, and the day it was announced. */\r\n since: string;\r\n sinceDate: string;\r\n /** The version that removes it. Until then, the deprecated name still works. */\r\n removedIn: string;\r\n}\r\n\r\n/**\r\n * Everything `@guildofgleks/ui` currently deprecates: 28 symbol(s) and 3 token(s).\r\n *\r\n * Generated from the library's own source — `@deprecated` tags for symbols, and the stylesheets\r\n * themselves for tokens — so it cannot drift from what actually still resolves. Meant for tooling\r\n * that has to answer \"is this still supported, and until when?\": a docs site marking an API row,\r\n * an editor plugin, a codemod.\r\n *\r\n * An empty `symbol` half means exactly what it says: nothing in the TypeScript API is deprecated\r\n * right now.\r\n */\r\nexport const GOG_DEPRECATIONS: readonly GogDeprecation[] = [\r\n {\r\n kind: 'symbol',\r\n name: 'CalendarComponent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/datepicker`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'ConfirmationDialogComponent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'ConfirmDialogData',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DatepickerComponent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/datepicker`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'defaultCompare',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DIALOG_DATA',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DIALOG_REF',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DialogComponent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DialogConfig',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DialogHandle',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DialogRef',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'DialogService',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'getByPath',\r\n replacement:\r\n \"read the field yourself; this is the package's own plumbing and it leaves the root. It stays inside `@guildofgleks/ui/shared`, the internal entry point, which is not a replacement to build on.\",\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogCalendarDay',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/datepicker`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogColumn',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogColumnBodyContext',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogColumnBodyDirective',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogColumnHeaderContext',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogColumnHeaderDirective',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogDatepickerValue',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/datepicker`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogTableRowClickEvent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogTableSelectionMode',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'GogTableSortEvent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'isSameOptionValue',\r\n replacement:\r\n \"read the field yourself; this is the package's own plumbing and it leaves the root. It stays inside `@guildofgleks/ui/shared`, the internal entry point, which is not a replacement to build on.\",\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'OpenDialog',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/dialog`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'readOption',\r\n replacement:\r\n \"read the field yourself; this is the package's own plumbing and it leaves the root. It stays inside `@guildofgleks/ui/shared`, the internal entry point, which is not a replacement to build on.\",\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'SortDirection',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'symbol',\r\n name: 'TableComponent',\r\n replacement:\r\n 'import it from `@guildofgleks/ui/table`. From that minor on it stays out of the initial bundle of an app that only uses it behind a lazy route.',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-13',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'token',\r\n name: '--gog-multiselect-panel-offset',\r\n replacement: '--gog-multiselect-panel-gap',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'token',\r\n name: '--gog-select-panel-offset',\r\n replacement: '--gog-select-panel-gap',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n {\r\n kind: 'token',\r\n name: '--gog-slider-thumb-shadow',\r\n replacement: '--gog-slider-thumb-glow-color',\r\n since: '21.13.0',\r\n sinceDate: '2026-09-12',\r\n removedIn: '21.14.0',\r\n },\r\n];\r\n","/**\r\n * Which writing direction a portaled overlay has to carry, if any.\r\n *\r\n * A dropdown panel or tooltip bubble is appended to `<body>`, which takes it out of whatever\r\n * subtree it was opened from. `dir` is inherited, so an overlay opened inside an RTL region of\r\n * an otherwise-LTR page would render LTR — text aligned the wrong way, the panel's own\r\n * `inset-inline-*` resolving against the wrong side. Copying the nearest scoped `dir` onto the\r\n * portal host fixes that, exactly as `scopedOverlayTheme` does for `data-theme`.\r\n *\r\n * **Only when the direction really is scoped.** When the nearest `[dir]` is the document\r\n * element — the ordinary case, a whole RTL app — the overlay already inherits it through\r\n * `<body>`, and re-stating it is noise on every panel in the app.\r\n *\r\n * Known limitation, shared with `scopedOverlayTheme`: a direction set through CSS\r\n * (`direction: rtl` in a stylesheet) rather than the `dir` attribute is not detected. Reading\r\n * `getComputedStyle().direction` would catch it, but that forces layout on every open for a\r\n * case the HTML spec itself discourages — `dir` is the attribute browsers, form controls and\r\n * assistive tech all key off.\r\n */\r\nexport function scopedOverlayDirection(\r\n directionSource: Element | null,\r\n documentElement: Element,\r\n): 'ltr' | 'rtl' | null {\r\n const scoped = directionSource?.closest('[dir]');\r\n if (!scoped || scoped === documentElement || scoped === documentElement.ownerDocument?.body) {\r\n return null;\r\n }\r\n\r\n const dir = scoped.getAttribute('dir')?.trim().toLowerCase();\r\n return dir === 'rtl' || dir === 'ltr' ? dir : null;\r\n}\r\n","/**\r\n * Which `data-theme` an overlay rendered into `<body>` has to carry, if any.\r\n *\r\n * A panel or tooltip bubble is appended to `<body>`, which puts it outside whatever subtree it\r\n * was opened from. `data-theme` can be scoped to any subtree — several themes rendering side by\r\n * side is a documented use — so an overlay opened inside one of those has to be told which theme\r\n * it belongs to, or it silently picks up the document's instead.\r\n *\r\n * **But only when the theme really is scoped.** When the nearest themed ancestor is the document\r\n * element, copying the attribute is not merely redundant, it is actively wrong: the overlay\r\n * already inherits everything from `<html>` through `<body>`, and re-stating `data-theme` on it\r\n * makes it match `theme.css`'s derived layer (`:root, [data-theme]`) *locally*. That re-declares\r\n * every component token on the overlay itself, resolved against the plain preset palette — which\r\n * discards anything set on `<html>` that is not part of that preset. Custom properties written\r\n * inline on `:root` are the case that bites: a live theme editor sets them there, the page\r\n * follows, and every portal keeps rendering the un-edited theme.\r\n *\r\n * So: return the theme only for a genuinely scoped ancestor, and let inheritance do the work\r\n * otherwise.\r\n *\r\n * Known limitation, currently unreachable: a *scoped* theme that is itself being edited through\r\n * inline custom properties would still lose those on the overlay, since only the attribute is\r\n * carried across. Copying resolved values instead would mean reading ~1200 properties on every\r\n * open, which is not worth it for a case nothing does yet.\r\n */\r\nexport function scopedOverlayTheme(\r\n themeSource: Element | null,\r\n documentElement: Element,\r\n): string | null {\r\n const themedAncestor = themeSource?.closest('[data-theme]');\r\n if (!themedAncestor || themedAncestor === documentElement) return null;\r\n\r\n return themedAncestor.getAttribute('data-theme');\r\n}\r\n","import { ApplicationRef, EmbeddedViewRef, TemplateRef } from '@angular/core';\r\n\r\nimport { scopedOverlayDirection } from './overlay-direction';\r\nimport { scopedOverlayTheme } from './overlay-theme';\r\n\r\n/**\r\n * Renders a template into `document.body` while keeping it wired to the declaring\r\n * component: the view is stamped with that component's style encapsulation and reads\r\n * its signals directly.\r\n *\r\n * That is the whole point of doing it this way rather than with a second, portal-only\r\n * component: one `<ng-template>` can serve both the inline and the appended-to-body\r\n * dropdown, so the option markup exists once and cannot drift between the two modes,\r\n * and selection state needs no manual field-syncing to stay in step.\r\n */\r\nexport class GogDropdownOverlay {\r\n private hostEl: HTMLElement | null = null;\r\n private viewRef: EmbeddedViewRef<unknown> | null = null;\r\n\r\n constructor(\r\n private readonly appRef: ApplicationRef,\r\n private readonly document: Document,\r\n ) {}\r\n\r\n /** The `<body>` child holding the rendered panel, or null while detached. */\r\n get hostElement(): HTMLElement | null {\r\n return this.hostEl;\r\n }\r\n\r\n get isAttached(): boolean {\r\n return this.viewRef !== null;\r\n }\r\n\r\n attach(template: TemplateRef<unknown>, themeSource: Element | null = null): void {\r\n this.detach();\r\n\r\n this.hostEl = this.document.createElement('div');\r\n this.hostEl.classList.add('gog-overlay-host');\r\n\r\n // Only for a genuinely scoped theme — see `scopedOverlayTheme` for why copying it when the\r\n // theme sits on `<html>` breaks live-edited themes.\r\n const theme = scopedOverlayTheme(themeSource, this.document.documentElement);\r\n if (theme) {\r\n this.hostEl.setAttribute('data-theme', theme);\r\n }\r\n\r\n // Same reasoning for the writing direction — see `scopedOverlayDirection`.\r\n const direction = scopedOverlayDirection(themeSource, this.document.documentElement);\r\n if (direction) {\r\n this.hostEl.setAttribute('dir', direction);\r\n }\r\n\r\n this.document.body.appendChild(this.hostEl);\r\n\r\n this.viewRef = template.createEmbeddedView({});\r\n // Attached as its own change-detection root so signal reads inside the panel still\r\n // mark it dirty even though its DOM no longer sits under the declaring component.\r\n this.appRef.attachView(this.viewRef);\r\n\r\n for (const node of this.viewRef.rootNodes as Node[]) {\r\n this.hostEl.appendChild(node);\r\n }\r\n\r\n this.viewRef.detectChanges();\r\n }\r\n\r\n detach(): void {\r\n if (this.viewRef) {\r\n this.appRef.detachView(this.viewRef);\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }\r\n\r\n this.hostEl?.remove();\r\n this.hostEl = null;\r\n }\r\n}\r\n","export type GogDropdownDirection = 'auto' | 'up' | 'down';\n\nexport interface GogDropdownTriggerRect {\n top: number;\n bottom: number;\n left: number;\n width: number;\n}\n\nexport interface GogDropdownPlacement {\n direction: 'up' | 'down';\n top: number;\n left: number;\n width: number;\n maxHeight: number;\n}\n\nconst DEFAULT_GAP = 8;\nconst DEFAULT_VIEWPORT_PADDING = 8;\n\nexport function resolveDropdownDirection(\n direction: GogDropdownDirection,\n triggerRect: GogDropdownTriggerRect,\n panelHeight: number,\n viewportHeight: number,\n gap = DEFAULT_GAP,\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\n): 'up' | 'down' {\n if (direction !== 'auto') {\n return direction;\n }\n\n const spaceAbove = Math.max(0, triggerRect.top - gap - viewportPadding);\n const spaceBelow = Math.max(0, viewportHeight - triggerRect.bottom - gap - viewportPadding);\n\n if (spaceBelow >= panelHeight && spaceAbove < panelHeight) {\n return 'down';\n }\n\n if (spaceAbove >= panelHeight && spaceBelow < panelHeight) {\n return 'up';\n }\n\n return spaceBelow >= spaceAbove ? 'down' : 'up';\n}\n\nexport function resolveDropdownPlacement(\n direction: GogDropdownDirection,\n triggerRect: GogDropdownTriggerRect,\n panelHeight: number,\n viewportHeight: number,\n gap = DEFAULT_GAP,\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\n): GogDropdownPlacement {\n const resolvedDirection = resolveDropdownDirection(\n direction,\n triggerRect,\n panelHeight,\n viewportHeight,\n gap,\n viewportPadding,\n );\n\n if (resolvedDirection === 'up') {\n const availableSpace = Math.max(0, triggerRect.top - gap - viewportPadding);\n const actualHeight = Math.min(panelHeight, availableSpace || panelHeight);\n return {\n direction: resolvedDirection,\n top: Math.max(viewportPadding, triggerRect.top - gap - actualHeight),\n left: triggerRect.left,\n width: triggerRect.width,\n // Must match actualHeight, not availableSpace: `top` above was computed assuming\n // the panel is actualHeight tall, so this is what goes into the panel's CSS\n // max-height too. Returning the full availableSpace here let real content taller\n // than actualHeight (but still under availableSpace) render past its computed\n // top and cover the trigger it's supposed to sit above.\n maxHeight: actualHeight,\n };\n }\n\n const maxHeight = Math.max(0, viewportHeight - triggerRect.bottom - gap - viewportPadding);\n return {\n direction: resolvedDirection,\n top: triggerRect.bottom + gap,\n left: triggerRect.left,\n width: triggerRect.width,\n maxHeight,\n };\n}\n\n/**\n * Resolves a CSS length to pixels for the placement math. Only `px`, `%` and `vh` can be\n * resolved without laying out the DOM — `%` and `vh` are taken relative to the viewport\n * height, which is exactly what a `position: fixed` panel's height resolves against in CSS.\n * Any other unit (`rem`, `em`, `auto`, a bare number, …) returns null: the caller falls back\n * to its own estimate for the up/down decision, while the original string is still written\n * to the panel's `style.max-height` as-is — only the direction heuristic loses precision.\n */\nexport function resolveCssLengthPx(value: string, viewportHeight: number): number | null {\n const match = /^(-?[\\d.]+)(px|%|vh)$/.exec(value.trim());\n if (!match) return null;\n\n const amount = Number.parseFloat(match[1]);\n if (!Number.isFinite(amount)) return null;\n\n return match[2] === 'px' ? amount : (amount / 100) * viewportHeight;\n}\n","import { Signal, computed } from '@angular/core';\r\n\r\nimport { GogGlobalConfig, resolveConfigured } from './config';\r\n\r\n/**\r\n * Off, so the ripple is purely additive: adding it to the library changed the appearance of\r\n * nothing until an app asks for it. Flipping this default would change how every button in every\r\n * consuming app looks, which is a release of its own, not a line in a feature commit.\r\n */\r\nexport const DEFAULT_RIPPLE = false;\r\n\r\n/**\r\n * Shared \"does this control ripple\" state, resolved the usual way — instance input, then\r\n * `GOG_CONFIG.ripple.enabled`, then off.\r\n *\r\n * A plain function rather than a class (`GogClearableState`'s shape) because there is exactly one\r\n * derived value and nothing to hold: every component that ripples writes the same two lines, and\r\n * this is what keeps the precedence identical across all nine of them instead of nine separate\r\n * `??` chains that can drift.\r\n *\r\n * The component then binds the *negation* onto its own inner element:\r\n *\r\n * ```html\r\n * <button class=\"gog-btn\" gogRipple [rippleDisabled]=\"!rippleEnabled()\">\r\n * ```\r\n *\r\n * `[gogRipple]` is always applied rather than toggled, because a directive cannot be added and\r\n * removed by a binding — and it costs nothing while disabled: `GogRippleDirective` attaches no\r\n * event listeners at all until `rippleDisabled` goes false.\r\n */\r\nexport function resolveRipple(\r\n rippleInput: Signal<boolean | undefined>,\r\n config: GogGlobalConfig,\r\n): Signal<boolean> {\r\n return computed(() => resolveConfigured(rippleInput(), config.ripple?.enabled, DEFAULT_RIPPLE));\r\n}\r\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n/**\r\n * `'manual'` (default): the field shows `errorMessage` for as long as it is non-empty — the\r\n * consumer decides when to clear it, e.g.\r\n * `errorMessage=\"control.invalid && control.touched ? 'Required' : ''\"`.\r\n *\r\n * `'auto'`: shown once the attached form control has been touched and is invalid — the\r\n * consumer only supplies the message text, not the timing. Requires a\r\n * `[formControl]` / `formControlName` on the element; without one this falls back to\r\n * `'manual'`, since there is no control state to key off.\r\n */\r\nexport type GogErrorDisplay = 'auto' | 'manual';\r\n\r\n/**\r\n * Shared error-visibility state for the library's form controls. A plain class rather than\r\n * a base class or directive so it drops into components that can't share a base class\r\n * (`gog-inputfield`, `gog-slider`) as well as ones that already do (`GogDropdownBase`).\r\n * Each consumer owns its own instance and wires `check()` into its own `ngDoCheck`.\r\n */\r\nexport class GogErrorState {\r\n private readonly controlTouched = signal(false);\r\n private readonly controlInvalid = signal(false);\r\n\r\n constructor(\r\n private readonly errorMessage: Signal<string>,\r\n private readonly errorDisplay: Signal<GogErrorDisplay>,\r\n private readonly ngControl: NgControl | null,\r\n ) {}\r\n\r\n readonly hasError = computed(() => {\r\n if (this.errorDisplay() === 'auto' && this.ngControl) {\r\n return this.controlTouched() && this.controlInvalid();\r\n }\r\n return !!this.errorMessage();\r\n });\r\n\r\n readonly visibleError = computed(() => (this.hasError() ? this.errorMessage() : ''));\r\n\r\n /**\r\n * `NgControl` exposes validity as plain properties, and has no change notification for\r\n * `touched` at all — `statusChanges` fires only on validity transitions, never on\r\n * `markAsTouched()` — while its `control` does not exist yet during construction, so\r\n * subscribing early would miss it regardless. Mirroring on each check sidesteps both;\r\n * re-setting a signal to its current value notifies nothing, so the common case costs two\r\n * comparisons.\r\n */\r\n check(): void {\r\n const control = this.ngControl?.control;\r\n if (!control) return;\r\n\r\n this.controlTouched.set(control.touched);\r\n this.controlInvalid.set(control.invalid);\r\n }\r\n}\r\n","/**\n * How a collection-driven component reads one field off a consumer's own object.\n *\n * A `string` is a property name, or a dot-path into a nested one (`'profile.city'`). A function\n * is anything else. This is what lets `gog-select` / `gog-multiselect` take a consumer's real\n * DTO instead of forcing everything through a `{ id, name }` shape first.\n */\nexport type GogOptionAccessor<TOption, TResult> = string | ((option: TOption) => TResult);\n\n/** Resolves `field` against `source`, following dot-paths (e.g. `\"address.city\"`). */\nexport function getByPath(source: unknown, field: string): unknown {\n if (!field.includes('.')) return (source as Record<string, unknown> | null)?.[field];\n\n let value: unknown = source;\n for (const key of field.split('.')) {\n if (value == null) return undefined;\n value = (value as Record<string, unknown>)[key];\n }\n return value;\n}\n\n/** Applies an accessor — a property path or a function — to one option. */\nexport function readOption<TOption, TResult>(\n option: TOption,\n accessor: GogOptionAccessor<TOption, TResult>,\n): TResult {\n return typeof accessor === 'function'\n ? accessor(option)\n : (getByPath(option, accessor) as TResult);\n}\n\n/**\n * Whether two resolved option values refer to the same option.\n *\n * Primitives are compared as strings, so a `formControl` holding `'1'` still matches an option\n * whose value is the number `1` — the library behaved this way before option values could be\n * anything, and forms routinely stringify. Objects are compared by identity instead: coercing\n * them would make every plain object equal to every other (`\"[object Object]\"`).\n */\nexport function isSameOptionValue(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a === 'object' || typeof b === 'object') return false;\n return String(a) === String(b);\n}\n","import { Signal, computed } from '@angular/core';\r\n\r\nimport { GogGlobalConfig, resolveConfigured } from './config';\r\nimport { GogFloatLabelVariant } from './types';\r\n\r\nconst DEFAULT_VARIANT: GogFloatLabelVariant = 'none';\r\nconst DEFAULT_SHOW_PLACEHOLDER = false;\r\n\r\n/**\r\n * Shared float-label state for the library's field-style controls.\r\n *\r\n * A plain class rather than a base class or directive, for the same reason as `GogErrorState`:\r\n * it has to serve `gog-inputfield` and `gog-textarea`, which share no base class, as well as\r\n * `GogDropdownBase`, which is one. Each consumer owns an instance and exposes whichever\r\n * members its template needs.\r\n *\r\n * The one thing each control must supply itself is `hasValue` — \"this field has content\" means\r\n * something different everywhere (a non-empty string, a non-null selection, a non-empty\r\n * selection array), which is exactly why this is composed in rather than implemented as a\r\n * directive sitting outside the component.\r\n */\r\nexport class GogFloatLabelState {\r\n /**\r\n * @param variantInput the control's own `floatLabel` input (`undefined` when unset)\r\n * @param showPlaceholderInput the control's own `floatLabelShowPlaceholder` input\r\n * @param placeholder the control's `placeholder` input\r\n * @param isFocused whether the control currently has focus\r\n * @param hasValue whether the control has a value — see the class note\r\n * @param config the injected `GOG_CONFIG`\r\n */\r\n constructor(\r\n private readonly variantInput: Signal<GogFloatLabelVariant | undefined>,\r\n private readonly showPlaceholderInput: Signal<boolean | undefined>,\r\n private readonly placeholder: Signal<string>,\r\n private readonly isFocused: Signal<boolean>,\r\n private readonly hasValue: Signal<boolean>,\r\n private readonly config: GogGlobalConfig,\r\n ) {}\r\n\r\n /** The resolved variant: instance input, else `GOG_CONFIG.floatLabel.variant`, else `'none'`. */\r\n readonly variant = computed(() =>\r\n resolveConfigured(this.variantInput(), this.config.floatLabel?.variant, DEFAULT_VARIANT),\r\n );\r\n\r\n readonly showPlaceholder = computed(() =>\r\n resolveConfigured(\r\n this.showPlaceholderInput(),\r\n this.config.floatLabel?.showPlaceholder,\r\n DEFAULT_SHOW_PLACEHOLDER,\r\n ),\r\n );\r\n\r\n /** Whether a float label is in effect at all — `false` keeps the static label-above layout. */\r\n readonly isActive = computed(() => this.variant() !== 'none');\r\n\r\n /** Whether the label is at its floated target rather than resting like a placeholder. */\r\n readonly isFloated = computed(() => this.isFocused() || this.hasValue());\r\n\r\n /**\r\n * The placeholder the control should actually render. While a float label is active the\r\n * resting label already occupies that space, so the placeholder stays hidden unless the\r\n * consumer opted into `floatLabelShowPlaceholder` — and even then only once the label has\r\n * floated out of the way.\r\n */\r\n readonly effectivePlaceholder = computed(() => {\r\n if (!this.isActive()) return this.placeholder();\r\n if (!this.showPlaceholder()) return '';\r\n return this.isFloated() ? this.placeholder() : '';\r\n });\r\n}\r\n","import { GogOrientation } from './types';\n\nconst VERTICAL_ARROWS = ['ArrowDown', 'ArrowUp'] as const;\nconst HORIZONTAL_ARROWS = ['ArrowRight', 'ArrowLeft'] as const;\nconst EDGE_KEYS = ['Home', 'End'] as const;\n\nexport type RovingFocusKey =\n | (typeof VERTICAL_ARROWS)[number]\n | (typeof HORIZONTAL_ARROWS)[number]\n | (typeof EDGE_KEYS)[number];\n\n/** Which arrow pair drives a given orientation. `Home`/`End` apply to both. */\nfunction arrowsFor(orientation: GogOrientation): readonly string[] {\n return orientation === 'horizontal' ? HORIZONTAL_ARROWS : VERTICAL_ARROWS;\n}\n\n/**\n * Whether `key` navigates a roving-tabindex list laid out along `orientation`.\n *\n * The orientation filter is the point: a horizontal tablist must leave `ArrowDown` alone so\n * the page still scrolls, and a vertical listbox must not steal `ArrowRight` from a caret\n * inside a text field. `Home`/`End` are accepted for both.\n */\nexport function isRovingFocusKey(\n key: string,\n orientation: GogOrientation = 'vertical',\n): key is RovingFocusKey {\n return arrowsFor(orientation).includes(key) || (EDGE_KEYS as readonly string[]).includes(key);\n}\n\n/** Whether `key` moves backwards (up / left) rather than forwards. */\nfunction isBackwards(key: RovingFocusKey): boolean {\n return key === 'ArrowUp' || key === 'ArrowLeft';\n}\n\n/**\n * The index `key` moves to from `currentIndex`, wrapping at both ends.\n *\n * `isEnabled` lets a caller keep disabled items in the list — which it must, since they still\n * occupy a position in the DOM — while navigation steps over them. Without it every index is a\n * target, which is the behaviour the dropdowns rely on (they pre-filter their own list).\n * Returns `currentIndex` when nothing else is reachable, so a group of one enabled item cannot\n * spin.\n */\nexport function nextRovingFocusIndex(\n key: RovingFocusKey,\n currentIndex: number,\n count: number,\n isEnabled?: (index: number) => boolean,\n): number {\n if (count === 0) return currentIndex;\n\n const enabled = isEnabled ?? (() => true);\n const lastIndex = count - 1;\n\n // Home/End mean the first/last *reachable* item, not the first/last element.\n if (key === 'Home' || key === 'End') {\n const order =\n key === 'Home'\n ? Array.from({ length: count }, (_, i) => i)\n : Array.from({ length: count }, (_, i) => lastIndex - i);\n return order.find(enabled) ?? currentIndex;\n }\n\n const step = isBackwards(key) ? -1 : 1;\n // At most `count` hops: enough to come back round to where we started, never more.\n for (let hop = 1; hop <= count; hop++) {\n const candidate = (currentIndex + step * hop + count * hop) % count;\n if (enabled(candidate)) return candidate;\n }\n\n return currentIndex;\n}\n\n/**\n * Arrow/Home/End navigation across a roving-tabindex-style list of focusable elements.\n * `event.currentTarget` must be one of `items`. Returns false (and leaves the event\n * untouched) for any other key, or when `items` doesn't contain the current target,\n * so callers can safely invoke this unconditionally from a keydown handler.\n *\n * Defaults to a vertical list with every item reachable — the shape the option lists and the\n * accordion were written against — so existing callers need no options object.\n */\nexport function handleRovingFocusKeydown(\n event: KeyboardEvent,\n items: readonly HTMLElement[],\n options: {\n orientation?: GogOrientation;\n /** Items this returns true for are skipped rather than focused. */\n isDisabled?: (item: HTMLElement, index: number) => boolean;\n } = {},\n): boolean {\n const orientation = options.orientation ?? 'vertical';\n if (!isRovingFocusKey(event.key, orientation) || items.length === 0) {\n return false;\n }\n\n const current = event.currentTarget as HTMLElement;\n const index = items.indexOf(current);\n if (index === -1) {\n return false;\n }\n\n const { isDisabled } = options;\n const isEnabled = isDisabled\n ? (candidate: number) => !isDisabled(items[candidate], candidate)\n : undefined;\n\n // Swallowed even when there is nowhere else to go: an open listbox or a focused tablist owns\n // its arrow keys, and letting one through would scroll the page out from under the widget.\n event.preventDefault();\n\n const nextIndex = nextRovingFocusIndex(event.key, index, items.length, isEnabled);\n if (nextIndex !== index) {\n items[nextIndex]?.focus();\n }\n return true;\n}\n","import { Signal, computed } from '@angular/core';\n\n/** The slice of a list that is worth rendering, as indices into the full list. */\nexport interface GogVirtualRange {\n /** First index to render, inclusive. */\n readonly start: number;\n /** One past the last index to render, so `slice(start, end)` is the window. */\n readonly end: number;\n}\n\n/** What `GogVirtualWindow` needs to do its arithmetic. Every input is a signal it reads. */\nexport interface GogVirtualWindowInputs {\n /** How many rows the list has in total — not how many are rendered. */\n readonly count: Signal<number>;\n /**\n * One row's height in px, measured rather than assumed.\n *\n * The library learned this the expensive way: `--gog-*-option-height` described itself as an\n * estimate and was wrong in all eleven shipped themes, low by up to 8.38px a row, while a\n * placement decision depended on it. A window is far less forgiving than a placement — the error\n * accumulates once per row — so this takes a number that came from `getBoundingClientRect`.\n */\n readonly rowHeight: Signal<number>;\n /** The scroller's visible height in px. Not the panel's max-height, which is a cap. */\n readonly viewportHeight: Signal<number>;\n /** How far the scroller is scrolled, in px. */\n readonly scrollTop: Signal<number>;\n /**\n * Rows rendered beyond each edge of the viewport, so a scroll does not expose blank space\n * before the next frame lands. Defaults to 4.\n */\n readonly overscan?: number;\n}\n\nconst DEFAULT_OVERSCAN = 4;\n\n/**\n * The arithmetic behind a windowed list, and nothing else.\n *\n * **No DOM, no template, no scroll listener.** The component that uses this owns its scroller —\n * the three dropdowns already own theirs (a `gog-scroll` inside the panel) and `gog-table` owns a\n * different one — so a primitive that grabbed an element would have to be told which, and would\n * still not know when that element moved. It reads signals and returns numbers; everything that\n * touches the page stays in the component.\n *\n * That is the same division `GogRippleController` made, for the reason `docs/ripple.md` records:\n * the engine lives beside the components rather than inside a directive, because the things that\n * need it cannot all reach a directive through `hostDirectives`.\n *\n * ```ts\n * private readonly window = new GogVirtualWindow({\n * count: computed(() => this.visibleOptions().length),\n * rowHeight: this.measuredRowHeight,\n * viewportHeight: this.panelHeight,\n * scrollTop: this.panelScrollTop,\n * });\n * // window.range() -> { start, end }\n * // window.padBefore() / window.padEnd() -> px of filler above and below the rendered slice\n * ```\n *\n * **Why padding rather than absolute positioning.** A spacer above and below the rendered rows\n * keeps the list in normal flow, so the rows stay `display: flex` children of the same container\n * and every selector, gap and `:last-child` a component already relies on keeps working. Absolute\n * positioning each row is the other common shape and it changes what the component's own CSS\n * means, which is a large price for a list that is one column wide.\n *\n * @see docs/virtualization.md — the plan, its measurements, and what still has to be got right in\n * the components that adopt this (ARIA counts, keyboard reach, panel height, filter resets).\n */\nexport class GogVirtualWindow {\n private readonly overscan: number;\n\n constructor(private readonly inputs: GogVirtualWindowInputs) {\n this.overscan = Math.max(0, Math.trunc(inputs.overscan ?? DEFAULT_OVERSCAN));\n }\n\n /**\n * The total height the list would have if every row were rendered. What the scroller needs to\n * believe so its thumb is the right size and `scrollTop` spans the whole list.\n */\n readonly totalHeight = computed(() => {\n const rowHeight = this.safeRowHeight();\n return rowHeight === 0 ? 0 : this.safeCount() * rowHeight;\n });\n\n /**\n * The slice worth rendering.\n *\n * **Degrades to the whole list rather than to nothing.** A row height of zero is what a caller\n * has before it has measured anything, and a window computed from it would be `{0, 0}` — an\n * empty panel that looks like a bug and hides the data. Rendering everything is the pre-window\n * behaviour, which is slow and correct; that is the right way round for a fallback.\n */\n readonly range = computed<GogVirtualRange>(() => {\n const count = this.safeCount();\n const rowHeight = this.safeRowHeight();\n const viewportHeight = this.safeViewportHeight();\n\n if (count === 0) return { start: 0, end: 0 };\n if (rowHeight === 0 || viewportHeight === 0) return { start: 0, end: count };\n\n const first = Math.floor(this.safeScrollTop() / rowHeight);\n // `ceil` on the viewport, then one more: a viewport that is not an exact multiple of the row\n // height always straddles one extra row, and scrolling by a fraction of a row straddles\n // another. Getting this wrong leaves a sliver of blank at the bottom edge on every scroll.\n const visible = Math.ceil(viewportHeight / rowHeight) + 1;\n\n const start = Math.max(0, first - this.overscan);\n const end = Math.min(count, first + visible + this.overscan);\n return { start, end };\n });\n\n /** Filler above the rendered slice, in px, so the rows sit where their indices say. */\n readonly padBefore = computed(() => this.range().start * this.safeRowHeight());\n\n /** Filler below, in px. Derived from the total so rounding cannot leave a gap. */\n readonly padAfter = computed(() => {\n const rendered = this.range().end * this.safeRowHeight();\n return Math.max(0, this.totalHeight() - rendered);\n });\n\n /**\n * Where the scroller has to be for `index` to be fully visible, or `null` if it already is.\n *\n * This is what keyboard navigation needs: arrowing to a row outside the window is a scroll\n * first and a focus move second, because the element does not exist until the scroll has\n * re-rendered the slice. Returning `null` rather than the current position lets a caller skip\n * the scroll entirely, which matters because scrolling when nothing needs to move cancels a\n * user's own in-progress scroll in some browsers.\n */\n scrollOffsetFor(index: number): number | null {\n const count = this.safeCount();\n const rowHeight = this.safeRowHeight();\n const viewportHeight = this.safeViewportHeight();\n if (count === 0 || rowHeight === 0 || viewportHeight === 0) return null;\n\n const clamped = Math.min(Math.max(0, Math.trunc(index)), count - 1);\n const rowTop = clamped * rowHeight;\n const rowBottom = rowTop + rowHeight;\n const scrollTop = this.safeScrollTop();\n\n if (rowTop < scrollTop) return rowTop;\n if (rowBottom > scrollTop + viewportHeight) return rowBottom - viewportHeight;\n return null;\n }\n\n /** Guards against the shapes a caller can legitimately be in before it has measured anything. */\n private safeCount(): number {\n return Math.max(0, Math.trunc(this.inputs.count()));\n }\n\n private safeRowHeight(): number {\n const value = this.inputs.rowHeight();\n return Number.isFinite(value) && value > 0 ? value : 0;\n }\n\n private safeViewportHeight(): number {\n const value = this.inputs.viewportHeight();\n return Number.isFinite(value) && value > 0 ? value : 0;\n }\n\n private safeScrollTop(): number {\n const value = this.inputs.scrollTop();\n if (!Number.isFinite(value) || value <= 0) return 0;\n // A scroller can report a scrollTop past its own end during an elastic/overscroll bounce.\n // Clamping keeps `range()` inside the list instead of returning an empty slice at the moment\n // a user flicks to the bottom.\n return Math.min(value, Math.max(0, this.totalHeight() - this.safeViewportHeight()));\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ApplicationRef,\n DestroyRef,\n Directive,\n DoCheck,\n ElementRef,\n Injector,\n ModelSignal,\n PLATFORM_ID,\n Signal,\n TemplateRef,\n afterNextRender,\n computed,\n contentChild,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport { GOG_CONFIG, resolveConfigured } from './config';\nimport { GogDropdownOverlay } from './dropdown-overlay';\nimport {\n type GogDropdownDirection,\n type GogDropdownPlacement,\n type GogDropdownTriggerRect,\n resolveCssLengthPx,\n resolveDropdownPlacement,\n} from './dropdown-position';\nimport { GogClearableState } from './clearable-state';\nimport { resolveRipple } from './ripple-state';\nimport { GogErrorState, type GogErrorDisplay } from './error-state';\nimport { type GogOptionAccessor, isSameOptionValue, readOption } from './option-accessor';\nimport { GogFloatLabelState } from './float-label-state';\nimport {\n type RovingFocusKey,\n handleRovingFocusKeydown,\n isRovingFocusKey,\n nextRovingFocusIndex,\n} from './roving-focus';\nimport { GogVirtualWindow } from './virtual-window';\nimport { GogDropdownFilterPosition, GogFloatLabelVariant, GogSize } from './types';\n\n/**\n * Custom markup for the trigger's chevron, on `gog-select` and `gog-multiselect`:\n *\n * ```html\n * <gog-select [options]=\"opts\">\n * <ng-template gogDropdownChevron><gog-icon name=\"sort\" /></ng-template>\n * </gog-select>\n * ```\n */\n@Directive({ selector: '[gogDropdownChevron]' })\nexport class GogDropdownChevronDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n/** Context handed to a `gogDropdownOption` template. */\nexport interface GogDropdownOptionContext<TOption> {\n /** The consumer's own option object, untouched. */\n $implicit: TOption;\n selected: boolean;\n disabled: boolean;\n /** The resolved label, so a custom row can decorate it rather than re-derive it. */\n label: string;\n}\n\n/**\n * Custom markup for one option row, on `gog-select` and `gog-multiselect`:\n *\n * ```html\n * <gog-select [options]=\"users\" optionLabel=\"fullName\" optionValue=\"id\" [(value)]=\"userId\">\n * <ng-template gogDropdownOption let-user let-selected=\"selected\">\n * <img [src]=\"user.avatar\" alt=\"\" /> {{ user.fullName }}\n * </ng-template>\n * </gog-select>\n * ```\n */\n@Directive({ selector: '[gogDropdownOption]' })\nexport class GogDropdownOptionDirective<TOption = unknown> {\n readonly templateRef = inject<TemplateRef<GogDropdownOptionContext<TOption>>>(TemplateRef);\n\n static ngTemplateContextGuard<TOption>(\n _dir: GogDropdownOptionDirective<TOption>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- only used as a type guard\n ctx: unknown,\n ): ctx is GogDropdownOptionContext<TOption> {\n return true;\n }\n}\n\n/**\n * The shape the listbox controls assume when their accessor inputs are left at their defaults.\n *\n * It is no longer required: `optionLabel` / `optionValue` / `optionDisabled` accept any property\n * path or function, so a consumer can pass their own DTO straight through. This interface just\n * describes what the *default* accessors (`'name'` / `'id'` / `'disabled'`) expect to find.\n */\nexport interface GogDropdownOption {\n id: string | number;\n name: string;\n disabled?: boolean;\n}\n\n/** Gap between the trigger and the panel. */\nconst PANEL_GAP = 2;\n/** Smallest allowed gap between the panel and the viewport edge. */\nconst VIEWPORT_PADDING = 8;\n/** Used only if a subclass's `panelMaxHeightToken` isn't declared anywhere in the cascade. */\nconst FALLBACK_MAX_PANEL_HEIGHT = 260;\n/** Used only if a subclass's `optionHeightToken` isn't declared anywhere in the cascade. */\nconst FALLBACK_OPTION_HEIGHT = 40;\n/** Must match the `var(--gog-dropdown-z, …)` fallback in the component stylesheets. */\nconst DEFAULT_PANEL_Z_INDEX = 300;\n\n/** Built-in defaults, used when neither the instance input nor `GOG_CONFIG` supplies one. */\nconst DEFAULT_SIZE: GogSize = 'md';\nconst DEFAULT_ERROR_DISPLAY: GogErrorDisplay = 'manual';\nconst DEFAULT_APPEND_TO_BODY = false;\nconst DEFAULT_DROPDOWN_DIRECTION: GogDropdownDirection = 'auto';\nconst DEFAULT_FILTER = false;\nconst DEFAULT_FILTER_POSITION: GogDropdownFilterPosition = 'top';\nconst DEFAULT_CLEAR_SELECTION_LABEL = 'Clear selection';\n\n/**\n * Shared behaviour for the listbox-style controls: open/close, placement, the\n * append-to-body overlay, click-outside, keyboard navigation and `ControlValueAccessor`\n * plumbing. Subclasses supply only what actually differs — the value type, the panel\n * markup, and the BEM class names used to find the trigger and the options.\n *\n * Exported because it appears in the public type signatures of the components that\n * extend it; it is not meant to be used or subclassed by consumers.\n */\n@Directive({\n host: {\n // Drives the :host(.gog-host--auto-width) rules in each subclass's stylesheet —\n // without this binding the `fullWidth` input has no visible effect. Inverted from\n // gog-button's full-width class: these controls are full width by default, so the\n // class only appears once a consumer opts *out* of that.\n '[class.gog-host--auto-width]': '!fullWidth()',\n },\n})\nexport abstract class GogDropdownBase<TValue, TOption = GogDropdownOption>\n implements ControlValueAccessor, DoCheck\n{\n private static nextUid = 0;\n\n readonly label = input('');\n readonly ariaLabel = input('');\n readonly placeholder = input('Select...');\n readonly options = input<TOption[]>([]);\n /**\n * How to read an option's visible text — a property path (`'name'`, `'profile.title'`) or a\n * function. Defaults to `'name'`, matching `GogDropdownOption`.\n */\n readonly optionLabel = input<GogOptionAccessor<TOption, string>>('name');\n /**\n * How to read the value this control emits for an option. A property path or a function, or\n * `null` to emit **the option object itself** — which is what lets a consumer keep their own\n * DTO end to end instead of mapping ids back to objects on every change.\n *\n * Defaults to `'id'`, matching `GogDropdownOption`, so existing code is unaffected.\n */\n readonly optionValue = input<GogOptionAccessor<TOption, unknown> | null>('id');\n /** How to read whether an option is disabled. Defaults to `'disabled'`. */\n readonly optionDisabled = input<GogOptionAccessor<TOption, boolean>>('disabled');\n /**\n * Whether to offer a clear button once something is selected. Unset, falls back to\n * `GOG_CONFIG.control.clearable`, then to the control's own default.\n */\n readonly clearable = input<boolean | undefined>(undefined);\n /**\n * Accessible name for the clear button. Unset, falls back to\n * `GOG_CONFIG.labels.clearSelection`, then to `'Clear selection'`.\n */\n readonly clearAriaLabel = input<string | undefined>(undefined);\n /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */\n protected readonly resolvedClearLabel = computed(() =>\n resolveConfigured(\n this.clearAriaLabel(),\n this.globalConfig.labels?.clearSelection,\n DEFAULT_CLEAR_SELECTION_LABEL,\n ),\n );\n /**\n * Smallest width the trigger may shrink to, as any CSS length. Only meaningful with\n * `[fullWidth]=\"false\"`, where the trigger otherwise sizes to whatever is currently selected\n * and can collapse to almost nothing on a short option. Left unset it falls back to the\n * `--gog-{select,multiselect}-min-width` token.\n */\n readonly minWidth = input<string | null>(null);\n /**\n * Whether the panel shows a search box that narrows the option list. Unset, falls back to\n * `GOG_CONFIG.dropdown.filter`, then to `false`.\n */\n readonly filter = input<boolean | undefined>(undefined);\n readonly filterPlaceholder = input('Search...');\n /**\n * Which end of the panel the search box sticks to. Named to match `gog-multiselect`'s\n * `controlsPosition`, which is the same idea for its select-all row. Unset, falls back to\n * `GOG_CONFIG.dropdown.filterPosition`, then to `'top'`.\n */\n readonly filterPosition = input<GogDropdownFilterPosition | undefined>(undefined);\n /** Shown in place of the list when the query matches nothing. */\n readonly filterEmptyMessage = input('No matches');\n /**\n * How an option is matched against the query. Left null, the resolved `optionLabel` is\n * matched case-insensitively as a substring — pass a function to search other fields, match\n * on a prefix, or plug in your own fuzzy matcher.\n */\n readonly filterMatch = input<((option: TOption, query: string) => boolean) | null>(null);\n readonly errorMessage = input('');\n /**\n * See `GogErrorDisplay`. Unset, falls back to `GOG_CONFIG.control.errorDisplay`, then to\n * `'manual'` — matching every other control in the library.\n */\n readonly errorDisplay = input<GogErrorDisplay | undefined>(undefined);\n /** Unset, falls back to `GOG_CONFIG.control.size`, then to `'md'`. */\n readonly size = input<GogSize | undefined>(undefined);\n /** Unset, falls back to `GOG_CONFIG.dropdown.direction`, then to `'auto'`. */\n readonly dropdownDirection = input<GogDropdownDirection | undefined>(undefined);\n /**\n * Explicit stacking order for the panel. Left unset the panel falls back to the\n * stylesheet's `--gog-dropdown-z`, so the default lives in CSS where a consumer can\n * retheme it, rather than being baked into the component.\n */\n readonly dropdownZIndex = input<number | null>(null);\n /**\n * Fixed panel width as any CSS length (`'320px'`, `'40ch'`, `'100%'`, …), applied only\n * when `appendToBody` is set. Left unset the panel matches the trigger's width, same as\n * the inline panel already does via CSS.\n */\n readonly dropdownWidth = input<string | null>(null);\n /**\n * Fixed panel max-height as any CSS length, applied only when `appendToBody` is set.\n * `px`, `%` and `vh` also feed the up/down placement math (see `resolveCssLengthPx`); any\n * other unit still renders correctly but is invisible to that heuristic, so the panel may\n * pick the \"wrong\" side close to a viewport edge. Left unset the panel keeps the existing\n * viewport-derived, auto-flipping height.\n */\n readonly dropdownMaxHeight = input<string | null>(null);\n /** Unset, falls back to `GOG_CONFIG.dropdown.appendToBody`, then to `false`. */\n readonly appendToBody = input<boolean | undefined>(undefined);\n readonly disabled = input(false);\n /** Projected `gogDropdownChevron` template, replacing the built-in chevron. */\n protected readonly chevronSlot = contentChild(GogDropdownChevronDirective);\n /**\n * Full width of the container by default, matching every other field-style control.\n * Set to `false` to shrink the trigger to fit its selected label instead.\n */\n readonly fullWidth = input(true);\n /** Unset, falls back to `GOG_CONFIG.floatLabel.variant`, then to `'none'` (off). */\n readonly floatLabel = input<GogFloatLabelVariant | undefined>(undefined);\n /** Unset, falls back to `GOG_CONFIG.floatLabel.showPlaceholder`, then to `false`. */\n readonly floatLabelShowPlaceholder = input<boolean | undefined>(undefined);\n /**\n * Press ripple on the panel's options. Unset, falls back to `GOG_CONFIG.ripple.enabled`, then\n * to `false`. The trigger itself never ripples — it is a field, not a button.\n */\n readonly ripple = input<boolean | undefined>(undefined);\n\n readonly isOpen = signal(false);\n\n /** Projected `gogDropdownOption` template, if the consumer supplied one. */\n protected readonly optionSlot = contentChild(GogDropdownOptionDirective);\n\n /** An option's visible text, via `optionLabel`. */\n protected labelOf(option: TOption): string {\n return readOption(option, this.optionLabel());\n }\n\n /**\n * The value this control emits for an option, via `optionValue` — or the option object\n * itself when `optionValue` is `null`.\n */\n protected valueOf(option: TOption): unknown {\n const accessor = this.optionValue();\n return accessor === null ? option : readOption(option, accessor);\n }\n\n /** Whether an option is disabled, via `optionDisabled`. Anything falsy counts as enabled. */\n protected isOptionDisabled(option: TOption): boolean {\n return !!readOption(option, this.optionDisabled());\n }\n\n /** Context for a projected `gogDropdownOption` row. */\n protected optionContext(option: TOption, selected: boolean): GogDropdownOptionContext<TOption> {\n return {\n $implicit: option,\n selected,\n disabled: this.isOptionDisabled(option),\n label: this.labelOf(option),\n };\n }\n\n /** Shared by both controls to match a resolved option value against the current value. */\n protected sameValue(a: unknown, b: unknown): boolean {\n return isSameOptionValue(a, b);\n }\n\n /** The `<ng-template>` holding the panel markup, rendered inline or into `<body>`. */\n protected abstract readonly panelTemplate: Signal<TemplateRef<unknown> | undefined>;\n /** Declared by the subclass so each control keeps its own value type. */\n protected abstract readonly value: ModelSignal<TValue>;\n /** Value applied when a form writes `null` / the control is reset. */\n protected abstract readonly emptyValue: TValue;\n /** BEM class of one option button, used to collect keyboard-navigable elements. */\n protected abstract readonly optionClass: string;\n /** BEM class of the focusable trigger. */\n protected abstract readonly triggerClass: string;\n /**\n * BEM block that carries the size modifier — `.gog-select` vs `.gog-ms-wrapper`. Separate\n * from `triggerClass` because in `gog-multiselect` the two are different elements.\n */\n protected abstract readonly sizeBlockClass: string;\n /** BEM block of the panel, which repeats the size modifier when appended to `<body>`. */\n protected abstract readonly panelBlockClass: string;\n /** Whether the control currently has a selection — drives the float-label \"filled\" state. */\n protected abstract readonly hasFloatValue: Signal<boolean>;\n /**\n * Spacing tokens feeding the height estimate. Overridable so each control keeps the\n * `--gog-<block>-*` names it already exposes to consumers for theming.\n */\n /**\n * The gap **between rows**, as a seed for the first frame. Like `optionHeightToken`, the real\n * value is measured from the rendered list and replaces this.\n *\n * **Read the options container's CSS before pointing this at a token, not the token's name.**\n * Two of the three controls name a token `--gog-<block>-option-gap` and use it for the gap\n * *inside* a row — between the check mark and the label — with no gap between rows at all.\n * Seeding from it added 12px per row of panel that does not exist. Only `gog-multiselect`'s\n * options container declares a `gap`, and only it overrides this.\n */\n protected readonly optionGapToken: string = '--gog-dropdown-option-gap';\n protected readonly optionsPaddingToken: string = '--gog-dropdown-options-padding';\n /** Keep in sync with the real `max-height` on the subclass's `__dropdown` block. */\n protected readonly panelMaxHeightToken: string = '--gog-dropdown-panel-max-height';\n /** Estimated row height fed into the placement math; not a real layout property. */\n protected readonly optionHeightToken: string = '--gog-dropdown-option-height';\n\n /**\n * Unique per-instance suffix, so several dropdowns on a page can't collide on DOM ids.\n *\n * Deliberately a bare number rather than `nextGogControlId()` (which the single-element\n * controls use): each subclass derives *several* ids from this one instance — trigger,\n * listbox, label, error — so what it needs is the instance number, not one finished id.\n */\n protected readonly uid = ++GogDropdownBase.nextUid;\n\n protected readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly injector = inject(Injector);\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly document = inject(DOCUMENT);\n private readonly appRef = inject(ApplicationRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** `protected` so subclasses can resolve their own inputs against the same config object. */\n protected readonly globalConfig = inject(GOG_CONFIG);\n private readonly overlay = new GogDropdownOverlay(this.appRef, this.document);\n\n /** Set from `(focus)`/`(blur)` on the trigger — see `onFocusIn`/`onFocusOut`. */\n protected readonly isFocused = signal(false);\n\n /** Instance input → `GOG_CONFIG` → the component's own default. See `resolveConfigured`. */\n protected readonly resolvedSize = computed(() =>\n resolveConfigured(this.size(), this.globalConfig.control?.size, DEFAULT_SIZE),\n );\n protected readonly rippleEnabled = resolveRipple(this.ripple, this.globalConfig);\n protected readonly resolvedErrorDisplay = computed(() =>\n resolveConfigured(\n this.errorDisplay(),\n this.globalConfig.control?.errorDisplay,\n DEFAULT_ERROR_DISPLAY,\n ),\n );\n protected readonly resolvedAppendToBody = computed(() =>\n resolveConfigured(\n this.appendToBody(),\n this.globalConfig.dropdown?.appendToBody,\n DEFAULT_APPEND_TO_BODY,\n ),\n );\n protected readonly resolvedDropdownDirection = computed(() =>\n resolveConfigured(\n this.dropdownDirection(),\n this.globalConfig.dropdown?.direction,\n DEFAULT_DROPDOWN_DIRECTION,\n ),\n );\n\n /**\n * The single size modifier for the wrapper, replacing one `[class.<block>--<size>]` binding\n * per size. Empty for `'md'`: that is the default size and has no modifier rule of its own —\n * every `--gog-<block>-size-*` chain bottoms out at the `md` tokens.\n */\n protected readonly sizeClass = computed(() =>\n this.resolvedSize() === DEFAULT_SIZE ? '' : `${this.sizeBlockClass}--${this.resolvedSize()}`,\n );\n /**\n * Same modifier repeated on the panel, but only when it is appended to `<body>` — outside\n * the component's subtree the panel no longer inherits the wrapper's size tokens, so it has\n * to carry them itself. See the `--portal` blocks in the component stylesheets.\n */\n protected readonly panelSizeClass = computed(() =>\n this.resolvedAppendToBody() && this.resolvedSize() !== DEFAULT_SIZE\n ? `${this.panelBlockClass}--${this.resolvedSize()}`\n : '',\n );\n\n private readonly cvaDisabled = signal(false);\n private readonly errorState = new GogErrorState(\n this.errorMessage,\n this.resolvedErrorDisplay,\n this.ngControl,\n );\n\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly dropdownDirectionState = signal<'up' | 'down'>('down');\n protected readonly panelPlacement = signal<GogDropdownPlacement | null>(null);\n /**\n * Stacking order to write onto the panel, or null to leave it to the stylesheet.\n *\n * Only needed when appending to `<body>`: an inline panel inherits `--gog-dropdown-z` from\n * its surroundings — which is how a dropdown inside a dialog ends up above the dialog —\n * but an appended one sits outside that subtree and inherits nothing, so the value has\n * to be resolved from the trigger and written out explicitly.\n */\n protected readonly panelZIndex = signal<number | null>(null);\n\n /**\n * Explicit panel width, or null to let it size to its own content.\n *\n * The panel used to be pinned to the trigger's width, which broke a trigger narrower than its\n * options: with `[fullWidth]=\"false\"` the trigger shrinks to the *current* selection, so\n * picking a short option cut the longer ones off in the list. It now sizes to its content with\n * the trigger width as a floor — see `resolvedPanelMinWidth`.\n */\n protected readonly resolvedPanelWidth = computed(() => this.dropdownWidth());\n\n /** The trigger's width, used as the panel's minimum so it never renders narrower than it. */\n protected readonly resolvedPanelMinWidth = computed(() => {\n const width = this.panelPlacement()?.width;\n return width != null ? `${width}px` : null;\n });\n /** `dropdownMaxHeight`, or the viewport-derived max-height from `panelPlacement`. */\n protected readonly resolvedPanelMaxHeight = computed(() => {\n const maxHeight = this.panelPlacement()?.maxHeight;\n return this.dropdownMaxHeight() ?? (maxHeight != null ? `${maxHeight}px` : null);\n });\n\n protected readonly hasError = this.errorState.hasError;\n protected readonly visibleError = this.errorState.visibleError;\n\n /**\n * Each control supplies its own default: `gog-multiselect` shipped a clear button before\n * `clearable` existed, so it keeps one; `gog-select` opts in.\n */\n protected abstract readonly clearableByDefault: boolean;\n\n private readonly clearableState = new GogClearableState(\n this.clearable,\n computed(() => this.hasFloatValue()),\n this.isDisabled,\n this.globalConfig,\n // read lazily for the same field-initialisation-order reason as hasFloatValue below\n () => this.clearableByDefault,\n );\n\n /** Whether to render the clear button right now — see `GogClearableState`. */\n protected readonly showClear = this.clearableState.isVisible;\n\n protected readonly resolvedFilter = computed(() =>\n resolveConfigured(this.filter(), this.globalConfig.dropdown?.filter, DEFAULT_FILTER),\n );\n protected readonly resolvedFilterPosition = computed(() =>\n resolveConfigured(\n this.filterPosition(),\n this.globalConfig.dropdown?.filterPosition,\n DEFAULT_FILTER_POSITION,\n ),\n );\n /** Current search text. Cleared whenever the panel closes, so reopening starts fresh. */\n protected readonly filterQuery = signal('');\n\n /**\n * The options actually rendered. Everything downstream — the loops, the keyboard navigation\n * target list, the panel height estimate, and multiselect's select-all — reads this rather\n * than `options()`, so filtering stays consistent instead of only hiding rows visually.\n */\n protected readonly visibleOptions = computed(() => {\n const query = this.filterQuery().trim();\n if (!this.resolvedFilter() || query === '') return this.options();\n\n const match = this.filterMatch();\n if (match) return this.options().filter((option) => match(option, query));\n\n const needle = query.toLowerCase();\n return this.options().filter((option) => this.labelOf(option).toLowerCase().includes(needle));\n });\n\n protected onFilterInput(event: Event): void {\n this.filterQuery.set((event.target as HTMLInputElement).value);\n // Typing can take 10 000 options to 3. The window's range and the scroller's position have\n // to reset *together*: leave the scroller where it was and the range is computed from a\n // scrollTop that is past the end of the new list, so the panel renders rows 400-420 of a\n // three-row list and shows nothing. The panel still looks right until you type, which is\n // why this is the bug a reviewer does not see.\n this.resetPanelScroll();\n }\n\n /**\n * Scrolls `index` into view **without moving focus**, which is what a combobox needs: focus\n * stays in the text field and the highlight is pointed at with `aria-activedescendant`, so\n * nothing scrolls the row into view on its own the way focusing it would.\n */\n protected revealOption(index: number): void {\n const offset = this.virtualWindow.scrollOffsetFor(index);\n if (offset !== null) this.setPanelScrollTop(offset);\n }\n\n /** Puts the scroller, the window and the keyboard's idea of \"here\" back at the top together. */\n protected resetPanelScroll(): void {\n this.activeOptionIndex.set(-1);\n this.setPanelScrollTop(0);\n }\n\n /**\n * Moves the scroller and the window's own idea of where it is, in that order and in the same\n * turn.\n *\n * The signal is written here rather than waiting for the scroller to echo the change back\n * through `(gogScroll)`: that echo is coalesced into an animation frame, so a keyboard move\n * that scrolled would compute its new range one frame after it moved focus -- which is one\n * frame during which the row it is trying to focus has not been rendered.\n */\n private setPanelScrollTop(top: number): void {\n this.panelViewport.update((viewport) => ({ ...viewport, scrollTop: top }));\n\n const viewport = this.panelViewportElement();\n if (!viewport) return;\n // Feature-detected rather than assumed, for the reason `gog-autocomplete` records against\n // `scrollIntoView`: jsdom implements neither, and an unhandled throw here fails a whole test\n // run rather than this line. Assigning `scrollTop` is the equivalent every host does have.\n if (typeof viewport.scrollTo === 'function') {\n viewport.scrollTo({ top, behavior: 'auto' });\n } else {\n viewport.scrollTop = top;\n }\n }\n\n /**\n * `gog-scroll`'s scrolling element inside the open panel, found in the DOM rather than with a\n * `viewChild`: an appended panel is attached to `<body>` as its own change-detection root, so a\n * view query on this component does not reach it.\n */\n private panelViewportElement(): HTMLElement | null {\n if (!this.isBrowser) return null;\n const scope = this.overlay.hostElement ?? (this.elRef.nativeElement as HTMLElement);\n return scope.querySelector<HTMLElement>('.gog-scroll__viewport');\n }\n\n /** Resets the control to its empty value and notifies any attached form. */\n protected clearValue(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.commitValue(this.emptyValue);\n }\n\n /**\n * `hasFloatValue` is wrapped in a `computed` rather than passed straight through: these\n * field initializers run before the *subclass's* do, so `this.hasFloatValue` is still\n * undefined right here. The arrow defers the read until the signal is first evaluated, by\n * which time the subclass has assigned it.\n */\n private readonly floatLabelState = new GogFloatLabelState(\n this.floatLabel,\n this.floatLabelShowPlaceholder,\n this.placeholder,\n this.isFocused,\n computed(() => this.hasFloatValue()),\n this.globalConfig,\n );\n\n protected readonly resolvedFloatLabel = this.floatLabelState.variant;\n protected readonly isFloatLabelActive = this.floatLabelState.isActive;\n protected readonly isFloatLabelFloated = this.floatLabelState.isFloated;\n protected readonly effectivePlaceholder = this.floatLabelState.effectivePlaceholder;\n\n /** Measured once per open rather than per scroll tick — see `refreshPanelMetrics`. */\n private optionGap = 0;\n private optionsPadding = 0;\n private maxPanelHeight = FALLBACK_MAX_PANEL_HEIGHT;\n private optionHeight = FALLBACK_OPTION_HEIGHT;\n /**\n * A real row's height, once one has ever been rendered. `null` until then.\n *\n * The token this class reads for `optionHeight` calls itself an estimate, and it is a bad one:\n * measured against a rendered row in all eleven shipped themes it is wrong in every one, from\n * -0.62px (`terminal`) to +8.38px (`parchment`), and low in ten of them. No static value can be\n * right -- the same `parchment` row is 48.38px at `--gog-density: 1` and 42.38px at 0.85,\n * because the height is padding plus leading plus border and a theme or a consumer can move\n * every term.\n *\n * That matters because the estimate is not decorative: `estimatePanelHeight` multiplies it by\n * the option count and `resolveDropdownDirection` opens the panel up or down on the result. Low\n * by 7px a row means a five-row panel judged to fit below when it needs 37px more than there is.\n * Only short lists were ever affected -- above `panelMaxHeightToken` the cap dominates and the\n * error is masked -- which is why it went unseen.\n */\n private measuredOptionHeight: number | null = null;\n /**\n * The real gap between two rows, once a list has ever rendered. `null` until then.\n *\n * Measured for the same reason the row height is, and it came out of the same audit: the token\n * `optionGapToken` seeds from is the *inside* of a row in two of the three controls (mark to\n * label), while their options containers declare no row gap at all. Reading the container is\n * exact where reading a token is a guess about what the token means.\n */\n private measuredOptionGap: number | null = null;\n private measureFrame: number | null = null;\n private repositionFrame: number | null = null;\n\n // ── Windowing ────────────────────────────────────────────────────────────────\n //\n // See `docs/virtualization.md`. The arithmetic is `GogVirtualWindow`'s; what lives here is\n // everything that touches the page: what the row pitch really is, how tall the scroller\n // actually became, where it is scrolled to, and which index the keyboard is on.\n\n /**\n * Whether this instance windows its list. Resolved the same way every other dropdown setting\n * is: instance input, then `GOG_CONFIG.dropdown.virtualize`, then off.\n *\n * **Off by default and never switched on automatically.** A windowed list and a plain one\n * differ under `Ctrl+F`, under a screen reader's \"list all items\", and under any consumer CSS\n * that targets `:last-child`; flipping that at a row-count threshold would make the component's\n * behaviour depend on how much data happened to arrive, which works in development and\n * surprises in production. `GOG_CONFIG.ripple.enabled` is off by default for the same reason.\n */\n protected readonly resolvedVirtualize = computed(() =>\n resolveConfigured(this.virtualizeRequest(), this.globalConfig.dropdown?.virtualize, false),\n );\n\n /**\n * The subclass's own `virtualize` input, if it offers one.\n *\n * A subclass overrides this with its input rather than the base declaring one, so a control\n * that has not adopted windowing yet does not inherit a public input that does nothing. Read\n * only from inside a `computed`, which is what lets a subclass field override a base field\n * that was initialised first.\n */\n protected readonly virtualizeRequest: Signal<boolean | undefined> = signal(undefined);\n\n /**\n * How far apart two rows start, in px: the row's own height plus whatever gap the list puts\n * between rows. Seeded from the tokens and replaced by the measurement, exactly as the\n * placement estimate is -- and for a window it matters more, because the error accumulates\n * once per row instead of once per panel.\n */\n protected readonly rowPitch = signal(0);\n\n /**\n * The gap alone, as a signal, because `spacerHeight` needs it from inside a `computed` and the\n * cached `measuredOptionGap` beside it is a plain field -- a computed reading that would be\n * correct only by the accident of `rowPitch` changing in the same statement.\n */\n private readonly rowGap = signal(0);\n\n /**\n * The scroller's real geometry, fed from `gog-scroll`'s own `(gogScroll)`.\n *\n * The plan called for a `ResizeObserver` on the scroller; it is not needed, because the\n * scroller already runs one and already coalesces scroll and resize into a single\n * rAF-batched emission carrying both numbers. A second observer would have measured the same\n * element one frame later.\n *\n * `height` is the viewport's `clientHeight`, never `--gog-*-panel-max-height`: that token is a\n * cap, and a panel with three options is three rows tall.\n */\n protected readonly panelViewport = signal<{ scrollTop: number; height: number }>({\n scrollTop: 0,\n height: 0,\n });\n\n private readonly virtualWindow = new GogVirtualWindow({\n count: computed(() => this.visibleOptions().length),\n rowHeight: this.rowPitch,\n viewportHeight: computed(() => this.panelViewport().height),\n scrollTop: computed(() => this.panelViewport().scrollTop),\n });\n\n /** Index into `visibleOptions()` of the row the keyboard is on, or -1 for none. */\n protected readonly activeOptionIndex = signal(-1);\n\n /** The slice of `visibleOptions()` actually stamped into the panel. */\n protected readonly optionWindow = computed(() =>\n this.resolvedVirtualize()\n ? this.virtualWindow.range()\n : { start: 0, end: this.visibleOptions().length },\n );\n\n /**\n * What the template loops over. Identical to `visibleOptions()` when not windowing, and the\n * same array instance, so nothing re-renders for the sake of a slice that changed nothing.\n */\n protected readonly renderedOptions = computed(() => {\n const all = this.visibleOptions();\n const { start, end } = this.optionWindow();\n return start === 0 && end === all.length ? all : all.slice(start, end);\n });\n\n /**\n * Filler above and below the rendered rows, in px.\n *\n * Spacers rather than absolute positioning: the rows stay flex children of the same container,\n * so every gap, selector and `:last-child` the component already relies on keeps working. See\n * `GogVirtualWindow`'s own note for why that trade is worth making for a one-column list.\n */\n protected readonly padBefore = computed(() =>\n this.resolvedVirtualize() ? this.spacerHeight(this.virtualWindow.padBefore()) : 0,\n );\n protected readonly padAfter = computed(() =>\n this.resolvedVirtualize() ? this.spacerHeight(this.virtualWindow.padAfter()) : 0,\n );\n\n /**\n * A spacer's own height, less the gap the flex column puts either side of it.\n *\n * A spacer is a flex child like a row, so a list that declares `gap` gets one *around the\n * spacer too* -- and the window's padding already accounts for every gap in the rows it stands\n * in for. Left uncorrected, an open panel is two gaps too tall and every rendered row sits one\n * gap lower than its index says. It is a constant, not an accumulating error, which is exactly\n * why it would have survived review: at `gog-multiselect`'s 4px nothing looks wrong, it is just\n * 4px wrong everywhere.\n *\n * `gog-select` and `gog-autocomplete` declare no row gap, so this subtracts nothing there. The\n * subtraction can never go negative on a spacer that exists: any non-zero padding is at least\n * one whole row, and a row is taller than the gap beside it.\n */\n private spacerHeight(padding: number): number {\n if (padding <= 0) return 0;\n return Math.max(0, padding - this.rowGap());\n }\n\n /**\n * A windowed listbox holds twenty `role=\"option\"` children and has to announce ten thousand.\n *\n * Set only while windowing. An unwindowed list has every option in the DOM, and the browser's\n * own count is then both correct and free -- restating it would be one more thing to keep true.\n */\n protected readonly ariaSetSize = computed(() =>\n this.resolvedVirtualize() ? this.visibleOptions().length : null,\n );\n\n /** The real position of a rendered row in the full list, 1-based, or null when not windowing. */\n protected ariaPosInSet(renderedIndex: number): number | null {\n return this.resolvedVirtualize() ? this.optionWindow().start + renderedIndex + 1 : null;\n }\n\n /** `(gogScroll)` on the panel's `gog-scroll`. */\n protected onPanelScroll(metrics: { scrollTop: number; clientHeight: number }): void {\n this.panelViewport.update((viewport) => ({\n scrollTop: metrics.scrollTop,\n // A zero is \"not laid out yet\", not \"no viewport\": the scroller's first emission comes\n // from its own `afterNextRender`, which can land before the panel has a height. Taking it\n // literally would throw away the seed and render the whole list for a frame -- the one\n // thing the seed exists to prevent -- and then render it again once the real height\n // arrived. The last number known to be real is a better answer than a zero.\n height: metrics.clientHeight > 0 ? metrics.clientHeight : viewport.height,\n }));\n this.releaseFocusLeavingTheWindow();\n }\n\n /**\n * A row that scrolls out of the window is unmounted, and an unmounted element holding focus\n * drops it on `<body>` -- where an open panel has no keyboard at all: Escape does not close it\n * and the arrows scroll the page instead of the list.\n *\n * So a mouse scroll that would take the focused row away hands focus back to the trigger,\n * which is a state both Escape and ArrowDown work from. Checked here rather than in an effect\n * because this runs *before* the re-render, while the row still exists and can still be asked\n * whether it is the focused one -- after the unmount that question has no answer.\n *\n * This is the price of windowing that a plain list does not pay, and the reason it is opt-in.\n */\n private releaseFocusLeavingTheWindow(): void {\n const active = this.activeOptionIndex();\n if (!this.isBrowser || !this.resolvedVirtualize() || active < 0) return;\n\n const { start, end } = this.optionWindow();\n if (active >= start && active < end) return;\n\n this.activeOptionIndex.set(-1);\n\n const scope = this.overlay.hostElement ?? (this.elRef.nativeElement as HTMLElement);\n const focused = this.document.activeElement;\n if (\n focused instanceof HTMLElement &&\n scope.contains(focused) &&\n focused.classList.contains(this.optionClass)\n ) {\n this.focusTrigger();\n }\n }\n\n private onChangeFn: (val: TValue) => void = () => {};\n private onTouchedFn: () => void = () => {};\n\n constructor() {\n // Registering through NgControl instead of NG_VALUE_ACCESSOR keeps `this.ngControl`\n // available for `hasError` — providing NG_VALUE_ACCESSOR on the component while also\n // injecting NgControl would be a dependency cycle.\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n this.destroyRef.onDestroy(() => this.overlay.detach());\n this.bindWhileOpen();\n }\n\n /**\n * Binds the click-outside and reposition listeners only for as long as the panel is\n * open. Bound permanently — as host listeners were — every dropdown on the page runs a\n * handler on every document click and every scroll frame, whether or not it is showing\n * anything.\n */\n private bindWhileOpen(): void {\n effect((onCleanup) => {\n if (!this.isOpen() || !this.isBrowser) return;\n\n const onDocumentClick = (event: MouseEvent) => this.closeIfClickedOutside(event);\n const onReflow = () => this.scheduleReposition();\n\n // Capture phase: scroll does not bubble, so a bubble-phase listener on window would\n // miss scrolling inside a nested container — which is exactly the case appendToBody\n // exists for. Passive: these handlers never call preventDefault.\n this.document.addEventListener('click', onDocumentClick);\n window.addEventListener('scroll', onReflow, { passive: true, capture: true });\n window.addEventListener('resize', onReflow, { passive: true });\n\n onCleanup(() => {\n this.document.removeEventListener('click', onDocumentClick);\n window.removeEventListener('scroll', onReflow, { capture: true });\n window.removeEventListener('resize', onReflow);\n\n if (this.repositionFrame !== null) {\n cancelAnimationFrame(this.repositionFrame);\n this.repositionFrame = null;\n }\n\n if (this.measureFrame !== null) {\n cancelAnimationFrame(this.measureFrame);\n this.measureFrame = null;\n }\n });\n });\n }\n\n ngDoCheck(): void {\n this.errorState.check();\n }\n\n writeValue(val: TValue | null): void {\n this.value.set(val ?? this.emptyValue);\n }\n\n registerOnChange(fn: (val: TValue) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n if (isDisabled) {\n this.close();\n }\n }\n\n /** Bound to `(focus)` on the trigger — only drives the float-label floated state. */\n protected onFocusIn(): void {\n this.isFocused.set(true);\n }\n\n /** Bound to `(blur)` on the trigger — only drives the float-label floated state. */\n protected onFocusOut(): void {\n this.isFocused.set(false);\n }\n\n protected toggle(): void {\n if (this.isDisabled()) return;\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected open(): void {\n if (this.isDisabled() || this.isOpen()) return;\n\n this.isOpen.set(true);\n this.refreshPanelMetrics();\n this.seedWindow();\n this.updatePlacement();\n\n if (this.resolvedAppendToBody()) {\n this.attachOverlay();\n }\n\n this.scheduleOptionMeasure();\n }\n\n /**\n * Gives the window numbers to work from before anything has rendered.\n *\n * Without this the first frame has a viewport height of zero, which `GogVirtualWindow`\n * deliberately reads as \"render everything\" -- correct, and exactly the 10 000 rows the window\n * exists to avoid, stamped once before the scroller reports its real height a frame later. The\n * seed is the same panel-height estimate placement already uses, so no new arithmetic and no\n * new token.\n */\n private seedWindow(): void {\n this.activeOptionIndex.set(-1);\n const gap = this.measuredOptionGap ?? this.optionGap;\n this.rowGap.set(gap);\n this.rowPitch.set((this.measuredOptionHeight ?? this.optionHeight) + gap);\n this.panelViewport.set({\n scrollTop: 0,\n height: this.isBrowser ? this.estimatePanelHeight() : 0,\n });\n }\n\n protected close(): void {\n if (!this.isOpen()) return;\n\n this.isOpen.set(false);\n this.filterQuery.set('');\n this.overlay.detach();\n // Closing is this control's equivalent of a blur, which is when a form control is\n // conventionally considered touched.\n this.markTouched();\n }\n\n /** Writes a new selection out to both the model and the attached form control. */\n protected commitValue(next: TValue): void {\n this.value.set(next);\n this.onChangeFn(next);\n this.markTouched();\n }\n\n protected markTouched(): void {\n this.onTouchedFn();\n }\n\n private closeIfClickedOutside(event: MouseEvent): void {\n const target = event.target as Node | null;\n if (!target) return;\n\n const inside =\n this.elRef.nativeElement.contains(target) ||\n (this.overlay.hostElement?.contains(target) ?? false);\n\n if (!inside) {\n this.close();\n }\n }\n\n /**\n * Coalesces bursts of scroll/resize events into one reposition per frame. Placement\n * reads layout, so running it per event is what makes a scroll janky.\n */\n private scheduleReposition(): void {\n if (this.repositionFrame !== null) return;\n\n this.repositionFrame = requestAnimationFrame(() => {\n this.repositionFrame = null;\n if (this.isOpen()) {\n this.updatePlacement();\n }\n });\n }\n\n /**\n * Reads one real row after the panel has rendered, and re-places if the token had lied.\n *\n * One frame late by construction -- the row has to exist -- so the very first open of an\n * instance can be placed from the estimate and corrected before the next paint. Every later\n * open starts from the measurement and is right immediately, which is why this caches rather\n * than measuring each time.\n *\n * Deliberately does **not** fall back to the token when no row is found: an empty list has no\n * row to measure and no rows to be wrong about, and overwriting a good measurement with the\n * token because the user filtered everything away would undo the fix.\n */\n private scheduleOptionMeasure(): void {\n if (!this.isBrowser || this.measureFrame !== null) return;\n\n this.measureFrame = requestAnimationFrame(() => {\n this.measureFrame = null;\n if (!this.isOpen()) return;\n\n const scope = this.overlay.hostElement ?? (this.elRef.nativeElement as HTMLElement);\n const row = scope.querySelector<HTMLElement>(`.${this.optionClass}`);\n const height = row?.getBoundingClientRect().height ?? 0;\n if (height <= 0) return;\n\n // The row's own parent is the options container, so the gap comes for free once the row\n // has been found -- no second selector for a class each subclass would have to declare.\n // `row-gap` computes to the keyword `normal` when a flex container sets no gap, which is\n // used as zero; `readPx` returns the fallback for anything it cannot parse, which is that.\n const gap = row?.parentElement\n ? readPx(getComputedStyle(row.parentElement).rowGap, 0)\n : (this.measuredOptionGap ?? this.optionGap);\n\n const changed =\n this.measuredOptionHeight === null\n ? Math.abs(height - this.optionHeight) > 0.5 || Math.abs(gap - this.optionGap) > 0.5\n : Math.abs(height - this.measuredOptionHeight) > 0.5 ||\n Math.abs(gap - (this.measuredOptionGap ?? this.optionGap)) > 0.5;\n this.measuredOptionHeight = height;\n this.measuredOptionGap = gap;\n // The window reads this too, and it is the reason the measurement is not optional there:\n // a placement is wrong once, a pitch is wrong once per row and the error accumulates down\n // the list until the rendered rows and the scrollbar disagree about where they are.\n this.rowGap.set(gap);\n this.rowPitch.set(height + gap);\n if (changed) this.updatePlacement();\n });\n }\n\n /** Jumps from the trigger into the option list on ArrowDown/ArrowUp while open. */\n protected onTriggerArrowKeydown(event: Event): void {\n if (!this.isOpen()) return;\n event.preventDefault();\n\n // Windowed, the last option is not in the DOM to be focused, so the entry point is an index\n // in the full list rather than an element in the rendered slice. Home/End mean the first and\n // last *reachable* option, which is what ArrowDown and ArrowUp mean from the trigger.\n if (this.resolvedVirtualize()) {\n this.moveActiveOption((event as KeyboardEvent).key === 'ArrowUp' ? 'End' : 'Home');\n return;\n }\n\n const options = this.enabledOptionElements();\n if (options.length === 0) return;\n\n const index = (event as KeyboardEvent).key === 'ArrowUp' ? options.length - 1 : 0;\n options[index]?.focus();\n }\n\n protected onOptionKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.focusTrigger();\n return;\n }\n\n if (event.key === 'Tab') {\n // Deliberately not prevented: closing and handing focus back to the trigger lets\n // the browser's own Tab handling continue from there, so focus lands on whatever\n // follows the control. Without this, tabbing out of an appended panel would jump\n // to the end of the document, since that is where the panel's DOM lives.\n this.close();\n this.focusTrigger();\n return;\n }\n\n // The inversion windowing needs: arrow keys move an index in `visibleOptions()`, and the DOM\n // follows it. Walking rendered elements stops at the edge of the window, so ArrowDown from\n // the last rendered row would wrap to the first rendered row rather than advance the list.\n if (this.resolvedVirtualize() && isRovingFocusKey(event.key)) {\n event.preventDefault();\n this.moveActiveOption(event.key);\n return;\n }\n\n handleRovingFocusKeydown(event, this.enabledOptionElements());\n }\n\n /**\n * Moves the keyboard's index by one roving-focus key, skipping disabled options and wrapping,\n * then makes the DOM agree: scroll first if the target is outside the window, focus second.\n */\n private moveActiveOption(key: RovingFocusKey): void {\n const options = this.visibleOptions();\n if (options.length === 0) return;\n\n const current = this.activeOptionIndex();\n // With nothing active yet, start one step *behind* the intended first target and let the\n // wrap do the work, so a disabled first (or last) option is skipped by the same code that\n // skips one in the middle.\n const from =\n current >= 0 ? current : key === 'ArrowUp' || key === 'End' ? 0 : options.length - 1;\n\n this.focusOptionAt(\n nextRovingFocusIndex(\n key,\n from,\n options.length,\n (index) => !this.isOptionDisabled(options[index]),\n ),\n );\n }\n\n /**\n * Puts the keyboard on `index` and the focus with it.\n *\n * The wait is conditional on purpose: `scrollOffsetFor` returns null when the row is already\n * visible, which means it is already rendered and can be focused in this turn. Only a move\n * that actually changes the window has to wait for the render that stamps the row.\n */\n private focusOptionAt(index: number): void {\n this.activeOptionIndex.set(index);\n\n const offset = this.virtualWindow.scrollOffsetFor(index);\n if (offset === null) {\n this.focusRenderedOption(index);\n return;\n }\n\n this.setPanelScrollTop(offset);\n if (!this.isBrowser) return;\n afterNextRender(() => this.focusRenderedOption(index), { injector: this.injector });\n }\n\n private focusRenderedOption(index: number): void {\n if (!this.isBrowser) return;\n const scope = this.overlay.hostElement ?? (this.elRef.nativeElement as HTMLElement);\n scope\n .querySelector<HTMLElement>(`.${this.optionClass}[data-gog-option-index=\"${index}\"]`)\n ?.focus();\n }\n\n protected focusTrigger(): void {\n (this.elRef.nativeElement as HTMLElement)\n .querySelector<HTMLElement>(`.${this.triggerClass}`)\n ?.focus();\n }\n\n /** Extra chrome stacked above the options (e.g. a select-all row), in px. */\n protected extraPanelHeight(): number {\n return 0;\n }\n\n private enabledOptionElements(): HTMLButtonElement[] {\n const scope = this.overlay.hostElement ?? (this.elRef.nativeElement as HTMLElement);\n return Array.from(\n scope.querySelectorAll<HTMLButtonElement>(`.${this.optionClass}:not([aria-disabled=\"true\"])`),\n );\n }\n\n private attachOverlay(): void {\n if (!this.isBrowser) return;\n\n const template = this.panelTemplate();\n if (!template) return;\n\n this.overlay.attach(template, this.elRef.nativeElement);\n }\n\n /**\n * Reads the spacing tokens that feed the height estimate. Done once per open instead of\n * on every scroll tick, because `getComputedStyle` forces a style recalculation and the\n * tokens cannot change while the panel is on screen.\n */\n private refreshPanelMetrics(): void {\n if (!this.isBrowser) {\n this.optionGap = 0;\n this.optionsPadding = 0;\n this.maxPanelHeight = FALLBACK_MAX_PANEL_HEIGHT;\n this.optionHeight = FALLBACK_OPTION_HEIGHT;\n this.panelZIndex.set(null);\n return;\n }\n\n const styles = getComputedStyle(this.elRef.nativeElement);\n this.optionGap = readPx(styles.getPropertyValue(this.optionGapToken), 0);\n this.optionsPadding = readPx(styles.getPropertyValue(this.optionsPaddingToken), 0);\n this.maxPanelHeight = readPx(\n styles.getPropertyValue(this.panelMaxHeightToken),\n FALLBACK_MAX_PANEL_HEIGHT,\n );\n this.optionHeight = readPx(\n styles.getPropertyValue(this.optionHeightToken),\n FALLBACK_OPTION_HEIGHT,\n );\n this.panelZIndex.set(this.resolvedAppendToBody() ? this.resolvePanelZIndex(styles) : null);\n }\n\n /**\n * The panel's height, used to choose up/down and to cap `max-height`.\n *\n * Estimated on the very first open of an instance and exact from then on. Measuring needs a\n * rendered row and placement runs before the panel renders, so the first pass uses the row\n * height token; `measureOptionHeight` then reads a real row and re-places if it disagreed.\n * Every open after that starts from the measurement.\n *\n * A resolvable `dropdownMaxHeight` replaces the row-count arithmetic outright, since it is\n * exact rather than derived.\n */\n private estimatePanelHeight(): number {\n const custom = this.dropdownMaxHeight();\n if (custom) {\n const resolved = resolveCssLengthPx(custom, window.innerHeight);\n if (resolved !== null) return resolved;\n }\n\n const count = Math.max(this.visibleOptions().length, 1);\n const rowHeight = this.measuredOptionHeight ?? this.optionHeight;\n const gap = this.measuredOptionGap ?? this.optionGap;\n const rows = count * rowHeight + Math.max(count - 1, 0) * gap;\n return Math.min(rows + this.optionsPadding * 2 + this.extraPanelHeight(), this.maxPanelHeight);\n }\n\n /**\n * The trigger's own rect, not the whole component's — a label above it or an error\n * message below it sit in normal document flow and are not part of what the panel needs\n * to clear. This also keeps `appendToBody` placement consistent with the inline panel,\n * which is already positioned purely relative to the trigger via CSS.\n */\n private triggerRect(): GogDropdownTriggerRect {\n const host = this.elRef.nativeElement as HTMLElement;\n const trigger = host.querySelector<HTMLElement>(`.${this.triggerClass}`) ?? host;\n return trigger.getBoundingClientRect();\n }\n\n /** The stacking order the panel would have had if it were still inside the subtree. */\n private resolvePanelZIndex(triggerStyles: CSSStyleDeclaration): number {\n const inherited = triggerStyles.getPropertyValue('--gog-dropdown-z').trim();\n if (inherited) {\n return readPx(inherited, DEFAULT_PANEL_Z_INDEX);\n }\n\n // Not every DOM implementation resolves inherited custom properties through\n // getComputedStyle (jsdom does not), so also look for an inline declaration up the\n // tree — which is exactly how gog-dialog hands its stacking order to nested dropdowns.\n for (let el: HTMLElement | null = this.elRef.nativeElement; el; el = el.parentElement) {\n const declared = el.style.getPropertyValue('--gog-dropdown-z').trim();\n if (declared) {\n return readPx(declared, DEFAULT_PANEL_Z_INDEX);\n }\n }\n\n return DEFAULT_PANEL_Z_INDEX;\n }\n\n private updatePlacement(): void {\n if (!this.isBrowser) return;\n\n const placement = resolveDropdownPlacement(\n this.resolvedDropdownDirection(),\n this.triggerRect(),\n this.estimatePanelHeight(),\n window.innerHeight,\n PANEL_GAP,\n VIEWPORT_PADDING,\n );\n\n this.dropdownDirectionState.set(placement.direction);\n this.panelPlacement.set(placement);\n }\n}\n\nfunction readPx(raw: string, fallback: number): number {\n const parsed = Number.parseFloat(raw.trim());\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\r\n\r\n/**\r\n * Icons an app has registered, keyed by the name `gog-icon` will be asked for. Resolves to `{}`\r\n * — only the built-ins are available — until a `provideGogIcons(...)` call fills it in.\r\n *\r\n * Values are raw `<svg>` markup, injected with `bypassSecurityTrustHtml` exactly like the\r\n * built-ins. See `provideGogIcons` for what that means for you.\r\n */\r\nexport const GOG_ICONS = new InjectionToken<Readonly<Record<string, string>>>('GOG_ICONS', {\r\n providedIn: 'root',\r\n factory: () => ({}),\r\n});\r\n\r\n/**\r\n * Registers icons by name, so `<gog-icon name=\"cart\" />` works for glyphs the library does not\r\n * ship. This is the supported way to use your own icon set: the alternative — a `TemplateRef`\r\n * per instance through the `template` input — costs a `<ng-template>` at every use site and is\r\n * meant for one-offs, not for an icon set.\r\n *\r\n * ```ts\r\n * // app.config.ts\r\n * providers: [\r\n * provideGogIcons({\r\n * cart: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">…</svg>',\r\n * user: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">…</svg>',\r\n * }),\r\n * ]\r\n * ```\r\n *\r\n * **A registered name overrides a built-in of the same name**, which is how you swap the\r\n * library's checkmark or chevron for your own without touching every component that renders one.\r\n *\r\n * **Providing this again further down the injector tree layers onto the parent's set** rather\r\n * than replacing it, matching `provideGogConfig`: a lazy feature can register the three icons\r\n * only it uses, and the app-wide set stays available inside it.\r\n *\r\n * ## What to put in the SVG\r\n *\r\n * Use `stroke=\"currentColor\"` (or `fill=\"currentColor\"`) and a `viewBox`, and leave the sizing\r\n * alone — `gog-icon`'s stylesheet drives width, height and stroke width from the\r\n * `--gog-icon-*` tokens, so an icon inherits size and colour from wherever it is used, the same\r\n * as a built-in.\r\n *\r\n * ## Security\r\n *\r\n * The markup is inserted with `DomSanitizer.bypassSecurityTrustHtml`, because Angular's HTML\r\n * sanitizer strips SVG and would leave you with nothing. That is safe for what this is for —\r\n * static icon markup you wrote or imported at build time — and unsafe for anything derived from\r\n * user input or fetched at runtime. **Never build a registered icon string from data you did\r\n * not author.** If you need remote icons, fetch them yourself, sanitize them with a real SVG\r\n * sanitizer, and register the result.\r\n */\r\nexport function provideGogIcons(icons: Readonly<Record<string, string>>): Provider {\r\n return {\r\n provide: GOG_ICONS,\r\n // skipSelf so this reads the *parent* injector's set rather than recursing into the provider\r\n // being defined here; optional because at the root there is no parent providing it.\r\n useFactory: () => ({\r\n ...(inject(GOG_ICONS, { skipSelf: true, optional: true }) ?? {}),\r\n ...icons,\r\n }),\r\n };\r\n}\r\n","/*\r\n * The glyphs are from **Lucide** (https://lucide.dev), ISC licensed:\r\n *\r\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather\r\n * (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.\r\n *\r\n * Permission to use, copy, modify, and/or distribute this software for any purpose with or\r\n * without fee is hereby granted, provided that the above copyright notice and this permission\r\n * notice appear in all copies.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO\r\n * THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT\r\n * SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR\r\n * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF\r\n * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE\r\n * OR PERFORMANCE OF THIS SOFTWARE.\r\n *\r\n * They are inlined rather than pulled from `lucide` so the package keeps zero runtime\r\n * dependencies. Anything added here must be a Lucide glyph too: a 24×24 grid, `stroke-width`\r\n * 2, round caps and joins. Mixing in a set drawn for a different weight (Heroicons is drawn for\r\n * 1.5) shows up immediately as uneven visual mass in a row of icons.\r\n *\r\n * **A new glyph centres its ink in that 24×24 box**, and `npm run check:geometry` measures it\r\n * (L7, `docs/component-geometry.md`): centring the box has to centre the mark, because that is\r\n * all any caller does. A *filled* glyph is measured on its area rather than its extent — a solid\r\n * triangle's centroid sits a sixth of its width from the middle of its bounding box, which is the\r\n * one case where drawing inside a centred box still reads as off-centre.\r\n *\r\n * An app that wants a different set does not need a fork — `provideGogIcons` overrides any of\r\n * these by name.\r\n */\r\n\r\n/**\r\n * The glyphs the package ships. Kept as a closed union so they still autocomplete and so\r\n * `ICON_DEFS` below stays exhaustive — a `Record` over the open `GogIconName` would collapse\r\n * into an index signature and stop catching a missing definition.\r\n */\r\nexport type GogBuiltinIconName =\r\n | 'check'\r\n | 'close'\r\n | 'chevron-up'\r\n | 'chevron-down'\r\n | 'chevron-left'\r\n | 'chevron-right'\r\n | 'calendar'\r\n | 'clock'\r\n | 'sort'\r\n | 'sort-up'\r\n | 'sort-down'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'checkbox'\r\n | 'checkbox-checked'\r\n | 'eye'\r\n | 'eye-off'\r\n | 'copy'\r\n // Actions\r\n | 'search'\r\n | 'plus'\r\n | 'minus'\r\n | 'trash'\r\n | 'pencil'\r\n | 'download'\r\n | 'upload'\r\n | 'refresh'\r\n | 'filter'\r\n | 'external-link'\r\n // Navigation & chrome\r\n | 'menu'\r\n | 'more-horizontal'\r\n | 'more-vertical'\r\n | 'arrow-left'\r\n | 'arrow-right'\r\n // Objects & state\r\n | 'user'\r\n | 'settings'\r\n | 'lock'\r\n | 'mail'\r\n | 'star'\r\n | 'star-filled';\r\n\r\n/**\r\n * Any icon `gog-icon` can render: one of the built-ins, or a name registered through\r\n * `provideGogIcons(...)`. The `(string & {})` half keeps the built-in names in autocomplete\r\n * while letting a registered name through — an open union is the point, since the set of icons\r\n * an app uses is the app's business, not the library's.\r\n */\r\nexport type GogIconName = GogBuiltinIconName | (string & {});\r\n\r\nexport const ICON_DEFS: Record<GogBuiltinIconName, string> = {\r\n check: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>`,\r\n\r\n close: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-x-icon lucide-x\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>`,\r\n\r\n 'chevron-up': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-up-icon lucide-chevron-up\"><path d=\"m18 15-6-6-6 6\"/></svg>`,\r\n\r\n 'chevron-down': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-down-icon lucide-chevron-down\"><path d=\"m6 9 6 6 6-6\"/></svg>`,\r\n\r\n 'chevron-left': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-left-icon lucide-chevron-left\"><path d=\"m15 18-6-6 6-6\"/></svg>`,\r\n\r\n 'chevron-right': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-right-icon lucide-chevron-right\"><path d=\"m9 18 6-6-6-6\"/></svg>`,\r\n\r\n calendar: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-calendar-icon lucide-calendar\"><path d=\"M8 2v4\"/><path d=\"M16 2v4\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/><path d=\"M3 10h18\"/></svg>`,\r\n\r\n clock: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clock-icon lucide-clock\"><path d=\"M12 6v6l4 2\"/><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>`,\r\n\r\n sort: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-up-icon lucide-arrow-down-up\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"m21 8-4-4-4 4\"/><path d=\"M17 4v16\"/></svg>`,\r\n\r\n 'sort-up': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-narrow-wide-icon lucide-arrow-up-narrow-wide\"><path d=\"m3 8 4-4 4 4\"/><path d=\"M7 4v16\"/><path d=\"M11 12h4\"/><path d=\"M11 16h7\"/><path d=\"M11 20h10\"/></svg>`,\r\n\r\n 'sort-down': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-wide-narrow-icon lucide-arrow-down-wide-narrow\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M11 4h10\"/><path d=\"M11 8h7\"/><path d=\"M11 12h4\"/></svg>`,\r\n\r\n success: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>`,\r\n\r\n error: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-bug-icon lucide-bug\"><path d=\"M12 20v-9\"/><path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\"/><path d=\"M14.12 3.88 16 2\"/><path d=\"M21 21a4 4 0 0 0-3.81-4\"/><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"/><path d=\"M22 13h-4\"/><path d=\"M3 21a4 4 0 0 1 3.81-4\"/><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"/><path d=\"M6 13H2\"/><path d=\"m8 2 1.88 1.88\"/><path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\"/></svg>`,\r\n\r\n warning: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-triangle-alert-icon lucide-triangle-alert\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg>`,\r\n\r\n info: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-info-icon lucide-info\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></svg>`,\r\n\r\n checkbox: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-icon lucide-square\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/></svg>`,\r\n\r\n 'checkbox-checked': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>`,\r\n\r\n eye: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-eye-icon lucide-eye\"><path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>`,\r\n\r\n 'eye-off': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-eye-off-icon lucide-eye-off\"><path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"/><path d=\"m2 2 20 20\"/></svg>`,\r\n\r\n copy: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy-icon lucide-copy\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg>`,\r\n\r\n /* ── Actions ─────────────────────────────────────────────────────────────── */\r\n\r\n search: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-search\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>`,\r\n\r\n plus: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus\"><path d=\"M5 12h14\"/><path d=\"M12 5v14\"/></svg>`,\r\n\r\n minus: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-minus\"><path d=\"M5 12h14\"/></svg>`,\r\n\r\n trash: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-trash-2\"><path d=\"M3 6h18\"/><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"/><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\"/><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\"/><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\"/></svg>`,\r\n\r\n pencil: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-pencil\"><path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/><path d=\"m15 5 4 4\"/></svg>`,\r\n\r\n download: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-download\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\"/></svg>`,\r\n\r\n upload: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-upload\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"17 8 12 3 7 8\"/><line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\"/></svg>`,\r\n\r\n refresh: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-refresh-cw\"><path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/><path d=\"M8 16H3v5\"/></svg>`,\r\n\r\n filter: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-filter\"><polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"/></svg>`,\r\n\r\n 'external-link': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-external-link\"><path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/></svg>`,\r\n\r\n /* ── Navigation & chrome ─────────────────────────────────────────────────── */\r\n\r\n menu: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-menu\"><line x1=\"4\" x2=\"20\" y1=\"12\" y2=\"12\"/><line x1=\"4\" x2=\"20\" y1=\"6\" y2=\"6\"/><line x1=\"4\" x2=\"20\" y1=\"18\" y2=\"18\"/></svg>`,\r\n\r\n 'more-horizontal': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-ellipsis\"><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"19\" cy=\"12\" r=\"1\"/><circle cx=\"5\" cy=\"12\" r=\"1\"/></svg>`,\r\n\r\n 'more-vertical': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-ellipsis-vertical\"><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"5\" r=\"1\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/></svg>`,\r\n\r\n 'arrow-left': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-left\"><path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/></svg>`,\r\n\r\n 'arrow-right': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right\"><path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/></svg>`,\r\n\r\n /* ── Objects & state ─────────────────────────────────────────────────────── */\r\n\r\n user: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-user\"><path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>`,\r\n\r\n settings: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-settings\"><path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>`,\r\n\r\n lock: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-lock\"><rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/></svg>`,\r\n\r\n mail: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-mail\"><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"/><path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"/></svg>`,\r\n\r\n star: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-star\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>`,\r\n\r\n 'star-filled': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-star\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" fill=\"currentColor\"/></svg>`,\r\n};\r\n","// GENERATED FILE — do not edit by hand.\r\n// Run `npm run generate:tokens` after changing src/styles/theme.css.\r\n// See scripts/generate-tokens.mjs for why theme.css is the source and this is the output.\r\n\r\n/** Every `--gog-*` custom property the library declares or documents as an override point. */\r\nexport type GogTokenName =\r\n | '--gog-accent-bright'\r\n | '--gog-accent-color'\r\n | '--gog-accent-dim'\r\n | '--gog-accent-pale'\r\n | '--gog-accent-text-color'\r\n | '--gog-accordion-accent-color'\r\n | '--gog-accordion-body-bg'\r\n | '--gog-accordion-body-color'\r\n | '--gog-accordion-body-font-family'\r\n | '--gog-accordion-body-font-size'\r\n | '--gog-accordion-body-lift'\r\n | '--gog-accordion-body-line-height'\r\n | '--gog-accordion-body-padding-bottom'\r\n | '--gog-accordion-body-padding-top'\r\n | '--gog-accordion-body-radius'\r\n | '--gog-accordion-body-transition-duration'\r\n | '--gog-accordion-border-color'\r\n | '--gog-accordion-border-style'\r\n | '--gog-accordion-border-width'\r\n | '--gog-accordion-chevron-font-size'\r\n | '--gog-accordion-chevron-line-height'\r\n | '--gog-accordion-chevron-size'\r\n | '--gog-accordion-chevron-transition-duration'\r\n | '--gog-accordion-content-gap'\r\n | '--gog-accordion-disabled-opacity'\r\n | '--gog-accordion-focus-ring-color'\r\n | '--gog-accordion-focus-ring-width'\r\n | '--gog-accordion-font-family'\r\n | '--gog-accordion-font-size'\r\n | '--gog-accordion-header-bg'\r\n | '--gog-accordion-header-gap'\r\n | '--gog-accordion-header-text-transform'\r\n | '--gog-accordion-hover-bg'\r\n | '--gog-accordion-hover-color'\r\n | '--gog-accordion-letter-spacing'\r\n | '--gog-accordion-lg-body-font-size'\r\n | '--gog-accordion-lg-body-line-height'\r\n | '--gog-accordion-lg-body-padding-bottom'\r\n | '--gog-accordion-lg-body-padding-top'\r\n | '--gog-accordion-lg-chevron-font-size'\r\n | '--gog-accordion-lg-chevron-size'\r\n | '--gog-accordion-lg-content-gap'\r\n | '--gog-accordion-lg-font-size'\r\n | '--gog-accordion-lg-letter-spacing'\r\n | '--gog-accordion-lg-padding-x'\r\n | '--gog-accordion-lg-padding-y'\r\n | '--gog-accordion-line-height'\r\n | '--gog-accordion-md-body-font-size'\r\n | '--gog-accordion-md-body-line-height'\r\n | '--gog-accordion-md-body-padding-bottom'\r\n | '--gog-accordion-md-body-padding-top'\r\n | '--gog-accordion-md-chevron-font-size'\r\n | '--gog-accordion-md-chevron-size'\r\n | '--gog-accordion-md-content-gap'\r\n | '--gog-accordion-md-font-size'\r\n | '--gog-accordion-md-letter-spacing'\r\n | '--gog-accordion-md-padding-x'\r\n | '--gog-accordion-md-padding-y'\r\n | '--gog-accordion-padding-x'\r\n | '--gog-accordion-padding-y'\r\n | '--gog-accordion-press-bg'\r\n | '--gog-accordion-radius'\r\n | '--gog-accordion-slg-body-font-size'\r\n | '--gog-accordion-slg-body-line-height'\r\n | '--gog-accordion-slg-body-padding-bottom'\r\n | '--gog-accordion-slg-body-padding-top'\r\n | '--gog-accordion-slg-chevron-font-size'\r\n | '--gog-accordion-slg-chevron-size'\r\n | '--gog-accordion-slg-content-gap'\r\n | '--gog-accordion-slg-font-size'\r\n | '--gog-accordion-slg-letter-spacing'\r\n | '--gog-accordion-slg-padding-x'\r\n | '--gog-accordion-slg-padding-y'\r\n | '--gog-accordion-sm-body-font-size'\r\n | '--gog-accordion-sm-body-line-height'\r\n | '--gog-accordion-sm-body-padding-bottom'\r\n | '--gog-accordion-sm-body-padding-top'\r\n | '--gog-accordion-sm-chevron-font-size'\r\n | '--gog-accordion-sm-chevron-size'\r\n | '--gog-accordion-sm-content-gap'\r\n | '--gog-accordion-sm-font-size'\r\n | '--gog-accordion-sm-letter-spacing'\r\n | '--gog-accordion-sm-padding-x'\r\n | '--gog-accordion-sm-padding-y'\r\n | '--gog-accordion-text-color'\r\n | '--gog-accordion-transition-duration'\r\n | '--gog-accordion-xsm-body-font-size'\r\n | '--gog-accordion-xsm-body-line-height'\r\n | '--gog-accordion-xsm-body-padding-bottom'\r\n | '--gog-accordion-xsm-body-padding-top'\r\n | '--gog-accordion-xsm-chevron-font-size'\r\n | '--gog-accordion-xsm-chevron-size'\r\n | '--gog-accordion-xsm-content-gap'\r\n | '--gog-accordion-xsm-font-size'\r\n | '--gog-accordion-xsm-letter-spacing'\r\n | '--gog-accordion-xsm-padding-x'\r\n | '--gog-accordion-xsm-padding-y'\r\n | '--gog-alert-accent-color'\r\n | '--gog-alert-bg'\r\n | '--gog-alert-body-font-size'\r\n | '--gog-alert-body-line-height'\r\n | '--gog-alert-border-color'\r\n | '--gog-alert-border-style'\r\n | '--gog-alert-border-width'\r\n | '--gog-alert-color'\r\n | '--gog-alert-danger-color'\r\n | '--gog-alert-edge-width'\r\n | '--gog-alert-font-family'\r\n | '--gog-alert-gap'\r\n | '--gog-alert-heading-color'\r\n | '--gog-alert-heading-font-size'\r\n | '--gog-alert-heading-font-weight'\r\n | '--gog-alert-heading-line-height'\r\n | '--gog-alert-icon-font-size'\r\n | '--gog-alert-icon-line-height'\r\n | '--gog-alert-info-color'\r\n | '--gog-alert-main-gap'\r\n | '--gog-alert-padding-x'\r\n | '--gog-alert-padding-y'\r\n | '--gog-alert-radius'\r\n | '--gog-alert-success-color'\r\n | '--gog-alert-warning-color'\r\n | '--gog-autocomplete-actions-gap'\r\n | '--gog-autocomplete-actions-inset'\r\n | '--gog-autocomplete-actions-reserve'\r\n | '--gog-autocomplete-bg'\r\n | '--gog-autocomplete-border-color'\r\n | '--gog-autocomplete-border-style'\r\n | '--gog-autocomplete-border-width'\r\n | '--gog-autocomplete-clear-color'\r\n | '--gog-autocomplete-clear-hover-color'\r\n | '--gog-autocomplete-clear-icon-ratio'\r\n | '--gog-autocomplete-color'\r\n | '--gog-autocomplete-disabled-opacity'\r\n | '--gog-autocomplete-empty-color'\r\n | '--gog-autocomplete-empty-font-size'\r\n | '--gog-autocomplete-empty-line-height'\r\n | '--gog-autocomplete-error-border-color'\r\n | '--gog-autocomplete-error-color'\r\n | '--gog-autocomplete-error-font-family'\r\n | '--gog-autocomplete-error-font-size'\r\n | '--gog-autocomplete-error-line-height'\r\n | '--gog-autocomplete-field-bg'\r\n | '--gog-autocomplete-float-label-in-top'\r\n | '--gog-autocomplete-float-label-on-bg'\r\n | '--gog-autocomplete-float-label-over-gap'\r\n | '--gog-autocomplete-float-label-over-reserve'\r\n | '--gog-autocomplete-float-label-reserve'\r\n | '--gog-autocomplete-focus-ring-color'\r\n | '--gog-autocomplete-focus-ring-offset'\r\n | '--gog-autocomplete-focus-ring-width'\r\n | '--gog-autocomplete-font-family'\r\n | '--gog-autocomplete-font-size'\r\n | '--gog-autocomplete-gap'\r\n | '--gog-autocomplete-hover-border-color'\r\n | '--gog-autocomplete-label-color'\r\n | '--gog-autocomplete-label-font-family'\r\n | '--gog-autocomplete-label-font-size'\r\n | '--gog-autocomplete-label-font-weight'\r\n | '--gog-autocomplete-label-letter-spacing'\r\n | '--gog-autocomplete-label-line-height'\r\n | '--gog-autocomplete-label-text-transform'\r\n | '--gog-autocomplete-line-height'\r\n | '--gog-autocomplete-min-width'\r\n | '--gog-autocomplete-option-color'\r\n | '--gog-autocomplete-option-gap'\r\n | '--gog-autocomplete-option-height'\r\n | '--gog-autocomplete-option-hover-bg'\r\n | '--gog-autocomplete-option-hover-color'\r\n | '--gog-autocomplete-option-padding'\r\n | '--gog-autocomplete-option-press-bg'\r\n | '--gog-autocomplete-option-radius'\r\n | '--gog-autocomplete-option-selected-bg'\r\n | '--gog-autocomplete-option-selected-color'\r\n | '--gog-autocomplete-options-padding'\r\n | '--gog-autocomplete-padding-x'\r\n | '--gog-autocomplete-padding-y'\r\n | '--gog-autocomplete-panel-bg'\r\n | '--gog-autocomplete-panel-border-color'\r\n | '--gog-autocomplete-panel-border-style'\r\n | '--gog-autocomplete-panel-border-width'\r\n | '--gog-autocomplete-panel-gap'\r\n | '--gog-autocomplete-panel-max-height'\r\n | '--gog-autocomplete-panel-max-width'\r\n | '--gog-autocomplete-panel-radius'\r\n | '--gog-autocomplete-panel-shadow'\r\n | '--gog-autocomplete-placeholder-color'\r\n | '--gog-autocomplete-radius'\r\n | '--gog-autocomplete-spinner-size'\r\n | '--gog-autocomplete-text-color'\r\n | '--gog-autocomplete-transition-duration'\r\n | '--gog-background-color'\r\n | '--gog-badge-bg'\r\n | '--gog-badge-border-color'\r\n | '--gog-badge-border-style'\r\n | '--gog-badge-border-width'\r\n | '--gog-badge-color'\r\n | '--gog-badge-danger-bg'\r\n | '--gog-badge-danger-color'\r\n | '--gog-badge-dot-size'\r\n | '--gog-badge-font-family'\r\n | '--gog-badge-font-size'\r\n | '--gog-badge-font-weight'\r\n | '--gog-badge-info-bg'\r\n | '--gog-badge-info-color'\r\n | '--gog-badge-line-height'\r\n | '--gog-badge-offset'\r\n | '--gog-badge-padding-inline'\r\n | '--gog-badge-radius'\r\n | '--gog-badge-size'\r\n | '--gog-badge-success-bg'\r\n | '--gog-badge-success-color'\r\n | '--gog-badge-warning-bg'\r\n | '--gog-badge-warning-color'\r\n | '--gog-badge-z'\r\n | '--gog-border-color'\r\n | '--gog-border-style'\r\n | '--gog-border-width'\r\n | '--gog-button-active-scale'\r\n | '--gog-button-bg'\r\n | '--gog-button-border'\r\n | '--gog-button-border-style'\r\n | '--gog-button-border-width'\r\n | '--gog-button-color'\r\n | '--gog-button-danger-fill'\r\n | '--gog-button-danger-fill-hover'\r\n | '--gog-button-danger-fill-press'\r\n | '--gog-button-danger-ink'\r\n | '--gog-button-danger-on-fill'\r\n | '--gog-button-danger-wash'\r\n | '--gog-button-disabled-opacity'\r\n | '--gog-button-focus-ring-color'\r\n | '--gog-button-focus-ring-offset'\r\n | '--gog-button-focus-ring-width'\r\n | '--gog-button-font-family'\r\n | '--gog-button-font-weight'\r\n | '--gog-button-gap'\r\n | '--gog-button-ghost-bg'\r\n | '--gog-button-ghost-border'\r\n | '--gog-button-ghost-color'\r\n | '--gog-button-ghost-hover-bg'\r\n | '--gog-button-ghost-hover-color'\r\n | '--gog-button-ghost-hover-shadow'\r\n | '--gog-button-ghost-press-bg'\r\n | '--gog-button-ghost-press-color'\r\n | '--gog-button-ghost-shadow'\r\n | '--gog-button-ghost-spinner-color'\r\n | '--gog-button-ghost-toggled-shadow'\r\n | '--gog-button-hover-bg'\r\n | '--gog-button-hover-color'\r\n | '--gog-button-hover-shadow'\r\n | '--gog-button-info-fill'\r\n | '--gog-button-info-fill-hover'\r\n | '--gog-button-info-fill-press'\r\n | '--gog-button-info-ink'\r\n | '--gog-button-info-on-fill'\r\n | '--gog-button-info-wash'\r\n | '--gog-button-letter-spacing'\r\n | '--gog-button-lg-font-size'\r\n | '--gog-button-lg-padding'\r\n | '--gog-button-line-height'\r\n | '--gog-button-loading-opacity'\r\n | '--gog-button-md-font-size'\r\n | '--gog-button-md-padding'\r\n | '--gog-button-outline-bg'\r\n | '--gog-button-outline-border'\r\n | '--gog-button-outline-color'\r\n | '--gog-button-outline-hover-bg'\r\n | '--gog-button-outline-hover-color'\r\n | '--gog-button-outline-hover-shadow'\r\n | '--gog-button-outline-press-bg'\r\n | '--gog-button-outline-press-color'\r\n | '--gog-button-outline-shadow'\r\n | '--gog-button-outline-spinner-color'\r\n | '--gog-button-outline-toggled-shadow'\r\n | '--gog-button-press-bg'\r\n | '--gog-button-press-color'\r\n | '--gog-button-primary-bg'\r\n | '--gog-button-primary-border'\r\n | '--gog-button-primary-color'\r\n | '--gog-button-primary-hover-bg'\r\n | '--gog-button-primary-hover-color'\r\n | '--gog-button-primary-hover-shadow'\r\n | '--gog-button-primary-press-bg'\r\n | '--gog-button-primary-press-color'\r\n | '--gog-button-primary-shadow'\r\n | '--gog-button-primary-spinner-color'\r\n | '--gog-button-primary-toggled-shadow'\r\n | '--gog-button-radius'\r\n | '--gog-button-secondary-bg'\r\n | '--gog-button-secondary-border'\r\n | '--gog-button-secondary-color'\r\n | '--gog-button-secondary-hover-bg'\r\n | '--gog-button-secondary-hover-color'\r\n | '--gog-button-secondary-hover-shadow'\r\n | '--gog-button-secondary-press-bg'\r\n | '--gog-button-secondary-press-color'\r\n | '--gog-button-secondary-shadow'\r\n | '--gog-button-secondary-spinner-color'\r\n | '--gog-button-secondary-toggled-shadow'\r\n | '--gog-button-shadow'\r\n | '--gog-button-slg-font-size'\r\n | '--gog-button-slg-padding'\r\n | '--gog-button-sm-font-size'\r\n | '--gog-button-sm-padding'\r\n | '--gog-button-spinner-color'\r\n | '--gog-button-spinner-max-size'\r\n | '--gog-button-success-fill'\r\n | '--gog-button-success-fill-hover'\r\n | '--gog-button-success-fill-press'\r\n | '--gog-button-success-ink'\r\n | '--gog-button-success-on-fill'\r\n | '--gog-button-success-wash'\r\n | '--gog-button-text-transform'\r\n | '--gog-button-toggle-bg'\r\n | '--gog-button-toggle-border-color'\r\n | '--gog-button-toggle-border-style'\r\n | '--gog-button-toggle-border-width'\r\n | '--gog-button-toggle-color'\r\n | '--gog-button-toggle-disabled-opacity'\r\n | '--gog-button-toggle-focus-ring-color'\r\n | '--gog-button-toggle-focus-ring-offset'\r\n | '--gog-button-toggle-focus-ring-width'\r\n | '--gog-button-toggle-font-family'\r\n | '--gog-button-toggle-font-size'\r\n | '--gog-button-toggle-font-weight'\r\n | '--gog-button-toggle-gap'\r\n | '--gog-button-toggle-hover-bg'\r\n | '--gog-button-toggle-hover-color'\r\n | '--gog-button-toggle-icon-size'\r\n | '--gog-button-toggle-letter-spacing'\r\n | '--gog-button-toggle-line-height'\r\n | '--gog-button-toggle-padding'\r\n | '--gog-button-toggle-press-bg'\r\n | '--gog-button-toggle-radius'\r\n | '--gog-button-toggle-rest-bg'\r\n | '--gog-button-toggle-rest-color'\r\n | '--gog-button-toggle-selected-bg'\r\n | '--gog-button-toggle-selected-border-color'\r\n | '--gog-button-toggle-selected-color'\r\n | '--gog-button-toggle-selected-press-bg'\r\n | '--gog-button-toggle-separated-gap'\r\n | '--gog-button-toggle-text-transform'\r\n | '--gog-button-toggle-transition-duration'\r\n | '--gog-button-toggled-ring-width'\r\n | '--gog-button-toggled-shadow'\r\n | '--gog-button-transition-duration'\r\n | '--gog-button-warning-fill'\r\n | '--gog-button-warning-fill-hover'\r\n | '--gog-button-warning-fill-press'\r\n | '--gog-button-warning-ink'\r\n | '--gog-button-warning-on-fill'\r\n | '--gog-button-warning-wash'\r\n | '--gog-button-xsm-font-size'\r\n | '--gog-button-xsm-padding'\r\n | '--gog-calendar-action-padding'\r\n | '--gog-calendar-color'\r\n | '--gog-calendar-day-bg'\r\n | '--gog-calendar-day-border-style'\r\n | '--gog-calendar-day-border-width'\r\n | '--gog-calendar-day-color'\r\n | '--gog-calendar-day-hover-bg'\r\n | '--gog-calendar-day-outside-color'\r\n | '--gog-calendar-day-radius'\r\n | '--gog-calendar-day-rest-bg'\r\n | '--gog-calendar-day-rest-color'\r\n | '--gog-calendar-day-size'\r\n | '--gog-calendar-disabled-opacity'\r\n | '--gog-calendar-divider-color'\r\n | '--gog-calendar-divider-style'\r\n | '--gog-calendar-divider-width'\r\n | '--gog-calendar-focus-ring-color'\r\n | '--gog-calendar-focus-ring-offset'\r\n | '--gog-calendar-focus-ring-width'\r\n | '--gog-calendar-font-family'\r\n | '--gog-calendar-footer-gap'\r\n | '--gog-calendar-header-gap'\r\n | '--gog-calendar-header-margin'\r\n | '--gog-calendar-lg-day-size'\r\n | '--gog-calendar-lg-font-size'\r\n | '--gog-calendar-line-height'\r\n | '--gog-calendar-max-width'\r\n | '--gog-calendar-md-day-size'\r\n | '--gog-calendar-md-font-size'\r\n | '--gog-calendar-months-gap'\r\n | '--gog-calendar-nav-bg'\r\n | '--gog-calendar-nav-color'\r\n | '--gog-calendar-nav-hover-bg'\r\n | '--gog-calendar-nav-hover-color'\r\n | '--gog-calendar-nav-icon-overlap'\r\n | '--gog-calendar-nav-icon-size'\r\n | '--gog-calendar-nav-radius'\r\n | '--gog-calendar-nav-size'\r\n | '--gog-calendar-padding'\r\n | '--gog-calendar-range-bg'\r\n | '--gog-calendar-range-color'\r\n | '--gog-calendar-selected-bg'\r\n | '--gog-calendar-selected-color'\r\n | '--gog-calendar-selected-font-weight'\r\n | '--gog-calendar-slg-day-size'\r\n | '--gog-calendar-slg-font-size'\r\n | '--gog-calendar-sm-day-size'\r\n | '--gog-calendar-sm-font-size'\r\n | '--gog-calendar-time-gap'\r\n | '--gog-calendar-time-input-bg'\r\n | '--gog-calendar-time-input-padding'\r\n | '--gog-calendar-time-input-width'\r\n | '--gog-calendar-time-margin'\r\n | '--gog-calendar-title-color'\r\n | '--gog-calendar-title-font-weight'\r\n | '--gog-calendar-today-border-color'\r\n | '--gog-calendar-today-font-weight'\r\n | '--gog-calendar-transition-duration'\r\n | '--gog-calendar-weekday-color'\r\n | '--gog-calendar-weekday-font-size'\r\n | '--gog-calendar-weekday-font-weight'\r\n | '--gog-calendar-weekday-line-height'\r\n | '--gog-calendar-weekday-padding'\r\n | '--gog-calendar-weekday-text-transform'\r\n | '--gog-calendar-xsm-day-size'\r\n | '--gog-calendar-xsm-font-size'\r\n | '--gog-card-bg'\r\n | '--gog-card-border-color'\r\n | '--gog-card-border-style'\r\n | '--gog-card-border-width'\r\n | '--gog-card-color'\r\n | '--gog-card-disabled-opacity'\r\n | '--gog-card-elevated-bg'\r\n | '--gog-card-elevated-border-color'\r\n | '--gog-card-elevated-shadow'\r\n | '--gog-card-filled-bg'\r\n | '--gog-card-filled-border-color'\r\n | '--gog-card-filled-shadow'\r\n | '--gog-card-focus-ring'\r\n | '--gog-card-focus-ring-offset'\r\n | '--gog-card-focus-ring-width'\r\n | '--gog-card-font-family'\r\n | '--gog-card-footer-border-color'\r\n | '--gog-card-footer-gap'\r\n | '--gog-card-footer-padding-top'\r\n | '--gog-card-gap'\r\n | '--gog-card-heading-color'\r\n | '--gog-card-heading-font-family'\r\n | '--gog-card-heading-font-size'\r\n | '--gog-card-heading-font-weight'\r\n | '--gog-card-heading-line-height'\r\n | '--gog-card-hover-border-color'\r\n | '--gog-card-hover-shadow'\r\n | '--gog-card-lg-gap'\r\n | '--gog-card-lg-padding-x'\r\n | '--gog-card-lg-padding-y'\r\n | '--gog-card-md-gap'\r\n | '--gog-card-md-padding-x'\r\n | '--gog-card-md-padding-y'\r\n | '--gog-card-outlined-bg'\r\n | '--gog-card-outlined-border-color'\r\n | '--gog-card-outlined-shadow'\r\n | '--gog-card-padding-x'\r\n | '--gog-card-padding-y'\r\n | '--gog-card-radius'\r\n | '--gog-card-shadow'\r\n | '--gog-card-slg-gap'\r\n | '--gog-card-slg-padding-x'\r\n | '--gog-card-slg-padding-y'\r\n | '--gog-card-sm-gap'\r\n | '--gog-card-sm-padding-x'\r\n | '--gog-card-sm-padding-y'\r\n | '--gog-card-transition-duration'\r\n | '--gog-card-xsm-gap'\r\n | '--gog-card-xsm-padding-x'\r\n | '--gog-card-xsm-padding-y'\r\n | '--gog-checkbox-bg'\r\n | '--gog-checkbox-border-color'\r\n | '--gog-checkbox-border-style'\r\n | '--gog-checkbox-border-width'\r\n | '--gog-checkbox-box-size'\r\n | '--gog-checkbox-checked-bg'\r\n | '--gog-checkbox-checked-border'\r\n | '--gog-checkbox-dash-height'\r\n | '--gog-checkbox-dash-radius'\r\n | '--gog-checkbox-dash-width-ratio'\r\n | '--gog-checkbox-disabled-opacity'\r\n | '--gog-checkbox-focus-ring'\r\n | '--gog-checkbox-focus-ring-offset'\r\n | '--gog-checkbox-focus-ring-width'\r\n | '--gog-checkbox-font-family'\r\n | '--gog-checkbox-gap'\r\n | '--gog-checkbox-icon-color'\r\n | '--gog-checkbox-icon-line-height'\r\n | '--gog-checkbox-icon-size'\r\n | '--gog-checkbox-label-color'\r\n | '--gog-checkbox-label-line-height'\r\n | '--gog-checkbox-label-size'\r\n | '--gog-checkbox-padding'\r\n | '--gog-checkbox-radius'\r\n | '--gog-checkbox-transition-duration'\r\n | '--gog-chip-avatar-inset-ratio'\r\n | '--gog-chip-avatar-size'\r\n | '--gog-chip-bg'\r\n | '--gog-chip-border'\r\n | '--gog-chip-border-style'\r\n | '--gog-chip-border-width'\r\n | '--gog-chip-color'\r\n | '--gog-chip-disabled-opacity'\r\n | '--gog-chip-focus-ring-color'\r\n | '--gog-chip-focus-ring-offset'\r\n | '--gog-chip-focus-ring-width'\r\n | '--gog-chip-font-family'\r\n | '--gog-chip-font-size'\r\n | '--gog-chip-font-weight'\r\n | '--gog-chip-gap'\r\n | '--gog-chip-hover-bg'\r\n | '--gog-chip-icon-size'\r\n | '--gog-chip-lg-avatar-size'\r\n | '--gog-chip-lg-font-size'\r\n | '--gog-chip-lg-gap'\r\n | '--gog-chip-lg-icon-size'\r\n | '--gog-chip-lg-padding-block'\r\n | '--gog-chip-lg-padding-inline'\r\n | '--gog-chip-lg-remove-size'\r\n | '--gog-chip-line-height'\r\n | '--gog-chip-md-avatar-size'\r\n | '--gog-chip-md-font-size'\r\n | '--gog-chip-md-gap'\r\n | '--gog-chip-md-icon-size'\r\n | '--gog-chip-md-padding-block'\r\n | '--gog-chip-md-padding-inline'\r\n | '--gog-chip-md-remove-size'\r\n | '--gog-chip-padding-block'\r\n | '--gog-chip-padding-inline'\r\n | '--gog-chip-pill-radius'\r\n | '--gog-chip-press-bg'\r\n | '--gog-chip-radius'\r\n | '--gog-chip-remove-color'\r\n | '--gog-chip-remove-hover-color'\r\n | '--gog-chip-remove-inset-ratio'\r\n | '--gog-chip-remove-scale'\r\n | '--gog-chip-remove-size'\r\n | '--gog-chip-selected-ring-width'\r\n | '--gog-chip-selected-shadow'\r\n | '--gog-chip-slg-avatar-size'\r\n | '--gog-chip-slg-font-size'\r\n | '--gog-chip-slg-gap'\r\n | '--gog-chip-slg-icon-size'\r\n | '--gog-chip-slg-padding-block'\r\n | '--gog-chip-slg-padding-inline'\r\n | '--gog-chip-slg-remove-size'\r\n | '--gog-chip-sm-avatar-size'\r\n | '--gog-chip-sm-font-size'\r\n | '--gog-chip-sm-gap'\r\n | '--gog-chip-sm-icon-size'\r\n | '--gog-chip-sm-padding-block'\r\n | '--gog-chip-sm-padding-inline'\r\n | '--gog-chip-sm-remove-size'\r\n | '--gog-chip-xsm-avatar-size'\r\n | '--gog-chip-xsm-font-size'\r\n | '--gog-chip-xsm-gap'\r\n | '--gog-chip-xsm-icon-size'\r\n | '--gog-chip-xsm-padding-block'\r\n | '--gog-chip-xsm-padding-inline'\r\n | '--gog-chip-xsm-remove-size'\r\n | '--gog-collapsible-disabled-opacity'\r\n | '--gog-collapsible-max-height'\r\n | '--gog-collapsible-transition-duration'\r\n | '--gog-confirmation-dialog-actions-gap'\r\n | '--gog-confirmation-dialog-actions-offset'\r\n | '--gog-confirmation-dialog-color'\r\n | '--gog-confirmation-dialog-description-color'\r\n | '--gog-confirmation-dialog-description-font-size'\r\n | '--gog-confirmation-dialog-description-line-height'\r\n | '--gog-confirmation-dialog-gap'\r\n | '--gog-confirmation-dialog-max-width'\r\n | '--gog-confirmation-dialog-min-width'\r\n | '--gog-confirmation-dialog-title-font-size'\r\n | '--gog-confirmation-dialog-title-line-height'\r\n | '--gog-control-border-style'\r\n | '--gog-control-border-width'\r\n | '--gog-control-boundary-color'\r\n | '--gog-control-checkbox-box-size-lg'\r\n | '--gog-control-checkbox-box-size-md'\r\n | '--gog-control-checkbox-box-size-slg'\r\n | '--gog-control-checkbox-box-size-sm'\r\n | '--gog-control-checkbox-box-size-xsm'\r\n | '--gog-control-checkbox-icon-size-lg'\r\n | '--gog-control-checkbox-icon-size-md'\r\n | '--gog-control-checkbox-icon-size-slg'\r\n | '--gog-control-checkbox-icon-size-sm'\r\n | '--gog-control-checkbox-icon-size-xsm'\r\n | '--gog-control-checkbox-label-size-lg'\r\n | '--gog-control-checkbox-label-size-md'\r\n | '--gog-control-checkbox-label-size-slg'\r\n | '--gog-control-checkbox-label-size-sm'\r\n | '--gog-control-checkbox-label-size-xsm'\r\n | '--gog-control-checkbox-padding'\r\n | '--gog-control-clear-icon-ratio'\r\n | '--gog-control-icon-offset'\r\n | '--gog-control-padding-x'\r\n | '--gog-control-padding-y'\r\n | '--gog-danger-color'\r\n | '--gog-danger-shade'\r\n | '--gog-danger-text-color'\r\n | '--gog-datepicker-actions-gap'\r\n | '--gog-datepicker-actions-inset'\r\n | '--gog-datepicker-actions-reserve'\r\n | '--gog-datepicker-bg'\r\n | '--gog-datepicker-border-color'\r\n | '--gog-datepicker-border-style'\r\n | '--gog-datepicker-border-width'\r\n | '--gog-datepicker-clear-color'\r\n | '--gog-datepicker-clear-icon-ratio'\r\n | '--gog-datepicker-color'\r\n | '--gog-datepicker-disabled-opacity'\r\n | '--gog-datepicker-error-border-color'\r\n | '--gog-datepicker-error-color'\r\n | '--gog-datepicker-error-font-family'\r\n | '--gog-datepicker-error-font-size'\r\n | '--gog-datepicker-error-line-height'\r\n | '--gog-datepicker-field-bg'\r\n | '--gog-datepicker-float-label-in-top'\r\n | '--gog-datepicker-float-label-on-bg'\r\n | '--gog-datepicker-float-label-over-gap'\r\n | '--gog-datepicker-float-label-over-reserve'\r\n | '--gog-datepicker-float-label-reserve'\r\n | '--gog-datepicker-focus-ring-color'\r\n | '--gog-datepicker-focus-ring-offset'\r\n | '--gog-datepicker-focus-ring-width'\r\n | '--gog-datepicker-font-family'\r\n | '--gog-datepicker-font-size'\r\n | '--gog-datepicker-gap'\r\n | '--gog-datepicker-hover-border-color'\r\n | '--gog-datepicker-icon-color'\r\n | '--gog-datepicker-icon-hover-color'\r\n | '--gog-datepicker-label-color'\r\n | '--gog-datepicker-label-font-family'\r\n | '--gog-datepicker-label-font-size'\r\n | '--gog-datepicker-label-letter-spacing'\r\n | '--gog-datepicker-label-line-height'\r\n | '--gog-datepicker-label-text-transform'\r\n | '--gog-datepicker-line-height'\r\n | '--gog-datepicker-min-width'\r\n | '--gog-datepicker-padding-x'\r\n | '--gog-datepicker-padding-y'\r\n | '--gog-datepicker-panel-bg'\r\n | '--gog-datepicker-panel-border-color'\r\n | '--gog-datepicker-panel-border-style'\r\n | '--gog-datepicker-panel-border-width'\r\n | '--gog-datepicker-panel-gap'\r\n | '--gog-datepicker-panel-radius'\r\n | '--gog-datepicker-panel-shadow'\r\n | '--gog-datepicker-panel-width'\r\n | '--gog-datepicker-placeholder-color'\r\n | '--gog-datepicker-radius'\r\n | '--gog-datepicker-text-color'\r\n | '--gog-datepicker-toggle-icon-size'\r\n | '--gog-datepicker-transition-duration'\r\n | '--gog-density'\r\n | '--gog-dialog-backdrop-bg'\r\n | '--gog-dialog-backdrop-blur'\r\n | '--gog-dialog-backdrop-fade-duration'\r\n | '--gog-dialog-backdrop-padding'\r\n | '--gog-dialog-bg'\r\n | '--gog-dialog-body-max-height'\r\n | '--gog-dialog-body-padding'\r\n | '--gog-dialog-border'\r\n | '--gog-dialog-border-style'\r\n | '--gog-dialog-border-width'\r\n | '--gog-dialog-close-color'\r\n | '--gog-dialog-close-focus-ring'\r\n | '--gog-dialog-close-focus-ring-offset'\r\n | '--gog-dialog-close-focus-ring-width'\r\n | '--gog-dialog-close-font-size'\r\n | '--gog-dialog-close-hover-bg'\r\n | '--gog-dialog-close-hover-border'\r\n | '--gog-dialog-close-hover-color'\r\n | '--gog-dialog-close-line-height'\r\n | '--gog-dialog-close-size'\r\n | '--gog-dialog-color'\r\n | '--gog-dialog-enter-distance'\r\n | '--gog-dialog-enter-duration'\r\n | '--gog-dialog-font-family'\r\n | '--gog-dialog-header-border-color'\r\n | '--gog-dialog-header-gap'\r\n | '--gog-dialog-header-padding'\r\n | '--gog-dialog-max-height'\r\n | '--gog-dialog-min-width'\r\n | '--gog-dialog-offset-x'\r\n | '--gog-dialog-offset-y'\r\n | '--gog-dialog-radius'\r\n | '--gog-dialog-shadow'\r\n | '--gog-dialog-title-font-size'\r\n | '--gog-dialog-title-line-height'\r\n | '--gog-disabled-opacity'\r\n | '--gog-divider-block-spacing'\r\n | '--gog-divider-color'\r\n | '--gog-divider-dashed-style'\r\n | '--gog-divider-dotted-style'\r\n | '--gog-divider-inline-spacing'\r\n | '--gog-divider-inset-size'\r\n | '--gog-divider-label-color'\r\n | '--gog-divider-label-font-family'\r\n | '--gog-divider-label-font-size'\r\n | '--gog-divider-label-font-weight'\r\n | '--gog-divider-label-gap'\r\n | '--gog-divider-label-line-height'\r\n | '--gog-divider-line-color'\r\n | '--gog-divider-line-thickness'\r\n | '--gog-divider-solid-style'\r\n | '--gog-divider-spacing'\r\n | '--gog-divider-thickness'\r\n | '--gog-divider-vertical-length'\r\n | '--gog-dropdown-z'\r\n | '--gog-duration-base'\r\n | '--gog-duration-fast'\r\n | '--gog-duration-slow'\r\n | '--gog-easing'\r\n | '--gog-elevated-surface-color'\r\n | '--gog-elevation-0'\r\n | '--gog-elevation-1'\r\n | '--gog-elevation-2'\r\n | '--gog-elevation-3'\r\n | '--gog-elevation-4'\r\n | '--gog-elevation-5'\r\n | '--gog-elevation-ambient-alpha'\r\n | '--gog-elevation-contact'\r\n | '--gog-elevation-contact-blur'\r\n | '--gog-elevation-highlight'\r\n | '--gog-elevation-highlight-alpha'\r\n | '--gog-elevation-highlight-ink'\r\n | '--gog-elevation-ink'\r\n | '--gog-elevation-key-alpha'\r\n | '--gog-elevation-key-blur'\r\n | '--gog-elevation-key-x'\r\n | '--gog-elevation-key-y'\r\n | '--gog-elevation-ring'\r\n | '--gog-elevation-ring-width'\r\n | '--gog-field-error-line-height'\r\n | '--gog-field-float-label-in-top'\r\n | '--gog-field-float-label-over-gap'\r\n | '--gog-field-float-label-over-reserve'\r\n | '--gog-field-float-label-reserve'\r\n | '--gog-field-icon-glyph'\r\n | '--gog-field-icon-glyph-sm'\r\n | '--gog-field-icon-glyph-xsm'\r\n | '--gog-field-label-line-height'\r\n | '--gog-field-lg-font-size'\r\n | '--gog-field-lg-icon-inset'\r\n | '--gog-field-lg-icon-offset'\r\n | '--gog-field-lg-padding-x'\r\n | '--gog-field-lg-padding-y'\r\n | '--gog-field-line-height'\r\n | '--gog-field-md-font-size'\r\n | '--gog-field-md-icon-inset'\r\n | '--gog-field-md-icon-offset'\r\n | '--gog-field-md-padding-x'\r\n | '--gog-field-md-padding-y'\r\n | '--gog-field-slg-font-size'\r\n | '--gog-field-slg-icon-inset'\r\n | '--gog-field-slg-icon-offset'\r\n | '--gog-field-slg-padding-x'\r\n | '--gog-field-slg-padding-y'\r\n | '--gog-field-sm-font-size'\r\n | '--gog-field-sm-icon-inset'\r\n | '--gog-field-sm-icon-offset'\r\n | '--gog-field-sm-padding-x'\r\n | '--gog-field-sm-padding-y'\r\n | '--gog-field-xsm-font-size'\r\n | '--gog-field-xsm-icon-inset'\r\n | '--gog-field-xsm-icon-offset'\r\n | '--gog-field-xsm-padding-x'\r\n | '--gog-field-xsm-padding-y'\r\n | '--gog-focus-ring-offset'\r\n | '--gog-focus-ring-width'\r\n | '--gog-font-body'\r\n | '--gog-font-heading'\r\n | '--gog-font-mono'\r\n | '--gog-font-weight-bold'\r\n | '--gog-font-weight-heavy'\r\n | '--gog-font-weight-medium'\r\n | '--gog-font-weight-semibold'\r\n | '--gog-hover-color'\r\n | '--gog-icon-fallback-size'\r\n | '--gog-icon-size'\r\n | '--gog-icon-stroke-width'\r\n | '--gog-info-color'\r\n | '--gog-info-shade'\r\n | '--gog-info-text-color'\r\n | '--gog-input-clear-icon-ratio'\r\n | '--gog-input-clear-inset'\r\n | '--gog-input-clear-line-height'\r\n | '--gog-input-clear-radius'\r\n | '--gog-input-disabled-opacity'\r\n | '--gog-input-error-color'\r\n | '--gog-input-error-font-size'\r\n | '--gog-input-error-line-height'\r\n | '--gog-input-error-offset'\r\n | '--gog-input-field-bg'\r\n | '--gog-input-field-border'\r\n | '--gog-input-field-border-style'\r\n | '--gog-input-field-border-width'\r\n | '--gog-input-field-color'\r\n | '--gog-input-float-label-in-top'\r\n | '--gog-input-float-label-on-bg'\r\n | '--gog-input-float-label-over-gap'\r\n | '--gog-input-float-label-over-reserve'\r\n | '--gog-input-float-label-reserve'\r\n | '--gog-input-focus-border'\r\n | '--gog-input-focus-glow'\r\n | '--gog-input-focus-ring'\r\n | '--gog-input-focus-ring-offset'\r\n | '--gog-input-focus-ring-width'\r\n | '--gog-input-font'\r\n | '--gog-input-font-family'\r\n | '--gog-input-gap'\r\n | '--gog-input-icon-action-radius'\r\n | '--gog-input-icon-color'\r\n | '--gog-input-icon-focus-ring-width'\r\n | '--gog-input-icon-hover-color'\r\n | '--gog-input-icon-line-height'\r\n | '--gog-input-label-color'\r\n | '--gog-input-label-font-family'\r\n | '--gog-input-label-font-size'\r\n | '--gog-input-label-letter-spacing'\r\n | '--gog-input-label-line-height'\r\n | '--gog-input-label-text-transform'\r\n | '--gog-input-padding-x'\r\n | '--gog-input-padding-y'\r\n | '--gog-input-placeholder-color'\r\n | '--gog-input-radius'\r\n | '--gog-input-spin-hover-bg'\r\n | '--gog-input-spin-width'\r\n | '--gog-input-transition-duration'\r\n | '--gog-letter-spacing'\r\n | '--gog-line-height-loose'\r\n | '--gog-line-height-none'\r\n | '--gog-line-height-normal'\r\n | '--gog-line-height-relaxed'\r\n | '--gog-line-height-snug'\r\n | '--gog-line-height-tight'\r\n | '--gog-menu-available-height'\r\n | '--gog-menu-bg'\r\n | '--gog-menu-border-color'\r\n | '--gog-menu-border-style'\r\n | '--gog-menu-border-width'\r\n | '--gog-menu-focus-ring'\r\n | '--gog-menu-focus-ring-width'\r\n | '--gog-menu-font-family'\r\n | '--gog-menu-gap'\r\n | '--gog-menu-item-color'\r\n | '--gog-menu-item-disabled-color'\r\n | '--gog-menu-item-disabled-opacity'\r\n | '--gog-menu-item-font-size'\r\n | '--gog-menu-item-gap'\r\n | '--gog-menu-item-hover-bg'\r\n | '--gog-menu-item-hover-color'\r\n | '--gog-menu-item-icon-size'\r\n | '--gog-menu-item-line-height'\r\n | '--gog-menu-item-padding'\r\n | '--gog-menu-item-press-bg'\r\n | '--gog-menu-item-radius'\r\n | '--gog-menu-max-height'\r\n | '--gog-menu-max-width'\r\n | '--gog-menu-min-width'\r\n | '--gog-menu-padding'\r\n | '--gog-menu-panel-gap'\r\n | '--gog-menu-radius'\r\n | '--gog-menu-shadow'\r\n | '--gog-menu-transition-duration'\r\n | '--gog-menu-z'\r\n | '--gog-multiselect-actions-gap'\r\n | '--gog-multiselect-actions-inset'\r\n | '--gog-multiselect-arrow-icon-ratio'\r\n | '--gog-multiselect-arrow-transition-duration'\r\n | '--gog-multiselect-border-color'\r\n | '--gog-multiselect-checkbox-border'\r\n | '--gog-multiselect-checkbox-checked-bg'\r\n | '--gog-multiselect-clear-icon-ratio'\r\n | '--gog-multiselect-clear-line-height'\r\n | '--gog-multiselect-clear-radius'\r\n | '--gog-multiselect-controls-gap'\r\n | '--gog-multiselect-controls-padding'\r\n | '--gog-multiselect-disabled-opacity'\r\n | '--gog-multiselect-error-color'\r\n | '--gog-multiselect-error-font-size'\r\n | '--gog-multiselect-error-line-height'\r\n | '--gog-multiselect-error-offset'\r\n | '--gog-multiselect-field-bg'\r\n | '--gog-multiselect-field-border'\r\n | '--gog-multiselect-field-border-style'\r\n | '--gog-multiselect-field-border-width'\r\n | '--gog-multiselect-field-color'\r\n | '--gog-multiselect-filter-border-color'\r\n | '--gog-multiselect-filter-border-style'\r\n | '--gog-multiselect-filter-border-width'\r\n | '--gog-multiselect-filter-empty-color'\r\n | '--gog-multiselect-filter-empty-padding'\r\n | '--gog-multiselect-filter-input-bg'\r\n | '--gog-multiselect-filter-input-border'\r\n | '--gog-multiselect-filter-input-color'\r\n | '--gog-multiselect-filter-input-padding-x'\r\n | '--gog-multiselect-filter-input-padding-y'\r\n | '--gog-multiselect-filter-input-radius'\r\n | '--gog-multiselect-filter-padding'\r\n | '--gog-multiselect-float-label-in-top'\r\n | '--gog-multiselect-float-label-on-bg'\r\n | '--gog-multiselect-float-label-over-gap'\r\n | '--gog-multiselect-float-label-over-reserve'\r\n | '--gog-multiselect-float-label-reserve'\r\n | '--gog-multiselect-focus-border'\r\n | '--gog-multiselect-focus-glow'\r\n | '--gog-multiselect-focus-ring'\r\n | '--gog-multiselect-focus-ring-offset'\r\n | '--gog-multiselect-focus-ring-width'\r\n | '--gog-multiselect-font-family'\r\n | '--gog-multiselect-font-size'\r\n | '--gog-multiselect-gap'\r\n | '--gog-multiselect-label-color'\r\n | '--gog-multiselect-label-font-family'\r\n | '--gog-multiselect-label-font-size'\r\n | '--gog-multiselect-label-letter-spacing'\r\n | '--gog-multiselect-label-line-height'\r\n | '--gog-multiselect-label-text-transform'\r\n | '--gog-multiselect-mark-icon-ratio'\r\n | '--gog-multiselect-mark-size-ratio'\r\n | '--gog-multiselect-min-width'\r\n | '--gog-multiselect-option-color'\r\n | '--gog-multiselect-option-disabled-opacity'\r\n | '--gog-multiselect-option-gap'\r\n | '--gog-multiselect-option-gap-inline'\r\n | '--gog-multiselect-option-height'\r\n | '--gog-multiselect-option-hover-bg'\r\n | '--gog-multiselect-option-press-bg'\r\n | '--gog-multiselect-option-radius'\r\n | '--gog-multiselect-option-transition-duration'\r\n | '--gog-multiselect-options-padding'\r\n | '--gog-multiselect-overflow-color'\r\n | '--gog-multiselect-overflow-font-size'\r\n | '--gog-multiselect-overflow-gap'\r\n | '--gog-multiselect-overflow-line-height'\r\n | '--gog-multiselect-padding-x'\r\n | '--gog-multiselect-padding-y'\r\n | '--gog-multiselect-panel-bg'\r\n | '--gog-multiselect-panel-border'\r\n | '--gog-multiselect-panel-gap'\r\n | '--gog-multiselect-panel-max-height'\r\n | '--gog-multiselect-panel-max-width'\r\n | '--gog-multiselect-panel-radius'\r\n | '--gog-multiselect-panel-shadow'\r\n | '--gog-multiselect-placeholder-color'\r\n | '--gog-multiselect-radius'\r\n | '--gog-multiselect-transition-duration'\r\n | '--gog-multiselect-value-color'\r\n | '--gog-muted-text-color'\r\n | '--gog-paginator-ellipsis-color'\r\n | '--gog-paginator-ellipsis-font-family'\r\n | '--gog-paginator-ellipsis-font-size'\r\n | '--gog-paginator-ellipsis-line-height'\r\n | '--gog-paginator-ellipsis-min-width'\r\n | '--gog-paginator-gap'\r\n | '--gog-paginator-page-size-min-width'\r\n | '--gog-panel-bg'\r\n | '--gog-panel-border-color'\r\n | '--gog-panel-border-style'\r\n | '--gog-panel-border-width'\r\n | '--gog-panel-chevron-size'\r\n | '--gog-panel-color'\r\n | '--gog-panel-disabled-opacity'\r\n | '--gog-panel-elevated-bg'\r\n | '--gog-panel-elevated-border-color'\r\n | '--gog-panel-filled-bg'\r\n | '--gog-panel-filled-border-color'\r\n | '--gog-panel-filled-shadow'\r\n | '--gog-panel-focus-ring'\r\n | '--gog-panel-focus-ring-offset'\r\n | '--gog-panel-focus-ring-width'\r\n | '--gog-panel-font-family'\r\n | '--gog-panel-footer-border-color'\r\n | '--gog-panel-footer-gap'\r\n | '--gog-panel-footer-padding-top'\r\n | '--gog-panel-gap'\r\n | '--gog-panel-header-gap'\r\n | '--gog-panel-heading-color'\r\n | '--gog-panel-heading-font-family'\r\n | '--gog-panel-heading-font-size'\r\n | '--gog-panel-heading-font-weight'\r\n | '--gog-panel-heading-line-height'\r\n | '--gog-panel-lg-gap'\r\n | '--gog-panel-lg-padding-x'\r\n | '--gog-panel-lg-padding-y'\r\n | '--gog-panel-md-gap'\r\n | '--gog-panel-md-padding-x'\r\n | '--gog-panel-md-padding-y'\r\n | '--gog-panel-outlined-bg'\r\n | '--gog-panel-outlined-border-color'\r\n | '--gog-panel-outlined-shadow'\r\n | '--gog-panel-padding-x'\r\n | '--gog-panel-padding-y'\r\n | '--gog-panel-radius'\r\n | '--gog-panel-shadow'\r\n | '--gog-panel-slg-gap'\r\n | '--gog-panel-slg-padding-x'\r\n | '--gog-panel-slg-padding-y'\r\n | '--gog-panel-sm-gap'\r\n | '--gog-panel-sm-padding-x'\r\n | '--gog-panel-sm-padding-y'\r\n | '--gog-panel-toggle-color'\r\n | '--gog-panel-toggle-hover-bg'\r\n | '--gog-panel-toggle-radius'\r\n | '--gog-panel-toggle-size'\r\n | '--gog-panel-transition-duration'\r\n | '--gog-panel-xsm-gap'\r\n | '--gog-panel-xsm-padding-x'\r\n | '--gog-panel-xsm-padding-y'\r\n | '--gog-primary-color'\r\n | '--gog-progressbar-accent-bg'\r\n | '--gog-progressbar-accent-buffer-bg'\r\n | '--gog-progressbar-buffer-bg'\r\n | '--gog-progressbar-danger-bg'\r\n | '--gog-progressbar-danger-buffer-bg'\r\n | '--gog-progressbar-edge-backing-color'\r\n | '--gog-progressbar-edge-color'\r\n | '--gog-progressbar-edge-width'\r\n | '--gog-progressbar-fill-bg'\r\n | '--gog-progressbar-height'\r\n | '--gog-progressbar-indeterminate-duration'\r\n | '--gog-progressbar-indeterminate-easing'\r\n | '--gog-progressbar-info-bg'\r\n | '--gog-progressbar-info-buffer-bg'\r\n | '--gog-progressbar-lg-height'\r\n | '--gog-progressbar-md-height'\r\n | '--gog-progressbar-radius'\r\n | '--gog-progressbar-slg-height'\r\n | '--gog-progressbar-sm-height'\r\n | '--gog-progressbar-stripe-color'\r\n | '--gog-progressbar-stripe-size'\r\n | '--gog-progressbar-success-bg'\r\n | '--gog-progressbar-success-buffer-bg'\r\n | '--gog-progressbar-track-base-bg'\r\n | '--gog-progressbar-track-bg'\r\n | '--gog-progressbar-transition-duration'\r\n | '--gog-progressbar-value-color'\r\n | '--gog-progressbar-value-font-family'\r\n | '--gog-progressbar-value-font-size'\r\n | '--gog-progressbar-value-gap'\r\n | '--gog-progressbar-value-line-height'\r\n | '--gog-progressbar-value-min-width'\r\n | '--gog-progressbar-warning-bg'\r\n | '--gog-progressbar-warning-buffer-bg'\r\n | '--gog-progressbar-xsm-height'\r\n | '--gog-radio-bg'\r\n | '--gog-radio-border-color'\r\n | '--gog-radio-border-style'\r\n | '--gog-radio-border-width'\r\n | '--gog-radio-box-size'\r\n | '--gog-radio-checked-bg'\r\n | '--gog-radio-checked-border'\r\n | '--gog-radio-disabled-opacity'\r\n | '--gog-radio-dot-color'\r\n | '--gog-radio-dot-size-ratio'\r\n | '--gog-radio-error-color'\r\n | '--gog-radio-error-font-size'\r\n | '--gog-radio-error-line-height'\r\n | '--gog-radio-focus-ring'\r\n | '--gog-radio-focus-ring-offset'\r\n | '--gog-radio-focus-ring-width'\r\n | '--gog-radio-font-family'\r\n | '--gog-radio-gap'\r\n | '--gog-radio-group-gap'\r\n | '--gog-radio-group-label-color'\r\n | '--gog-radio-group-label-size'\r\n | '--gog-radio-group-option-gap'\r\n | '--gog-radio-group-option-gap-horizontal'\r\n | '--gog-radio-label-color'\r\n | '--gog-radio-label-line-height'\r\n | '--gog-radio-label-size'\r\n | '--gog-radio-padding'\r\n | '--gog-radio-transition-duration'\r\n | '--gog-radius'\r\n | '--gog-ripple-color'\r\n | '--gog-ripple-easing'\r\n | '--gog-ripple-enter-duration'\r\n | '--gog-ripple-exit-duration'\r\n | '--gog-ripple-opacity'\r\n | '--gog-scroll-corner-bg'\r\n | '--gog-scroll-fade-duration'\r\n | '--gog-scroll-focus-ring'\r\n | '--gog-scroll-focus-ring-width'\r\n | '--gog-scroll-normal-thumb-hit-padding'\r\n | '--gog-scroll-normal-thumb-min-size'\r\n | '--gog-scroll-normal-track-width'\r\n | '--gog-scroll-thin-thumb-hit-padding'\r\n | '--gog-scroll-thin-thumb-min-size'\r\n | '--gog-scroll-thin-track-width'\r\n | '--gog-scroll-thumb-active-bg'\r\n | '--gog-scroll-thumb-bg'\r\n | '--gog-scroll-thumb-hover-bg'\r\n | '--gog-scroll-thumb-inset'\r\n | '--gog-scroll-thumb-radius'\r\n | '--gog-scroll-track-bg'\r\n | '--gog-scroll-track-radius'\r\n | '--gog-secondary-color'\r\n | '--gog-select-chevron-color'\r\n | '--gog-select-chevron-icon-ratio'\r\n | '--gog-select-chevron-inset'\r\n | '--gog-select-clear-color'\r\n | '--gog-select-clear-gap'\r\n | '--gog-select-clear-hover-color'\r\n | '--gog-select-clear-icon-ratio'\r\n | '--gog-select-clear-line-height'\r\n | '--gog-select-clear-radius'\r\n | '--gog-select-control-font'\r\n | '--gog-select-control-gap'\r\n | '--gog-select-control-padding-x'\r\n | '--gog-select-control-padding-y'\r\n | '--gog-select-disabled-opacity'\r\n | '--gog-select-error-color'\r\n | '--gog-select-error-font-size'\r\n | '--gog-select-error-line-height'\r\n | '--gog-select-field-bg'\r\n | '--gog-select-field-border'\r\n | '--gog-select-field-border-style'\r\n | '--gog-select-field-border-width'\r\n | '--gog-select-field-color'\r\n | '--gog-select-filter-border-color'\r\n | '--gog-select-filter-border-style'\r\n | '--gog-select-filter-border-width'\r\n | '--gog-select-filter-empty-color'\r\n | '--gog-select-filter-empty-padding'\r\n | '--gog-select-filter-input-bg'\r\n | '--gog-select-filter-input-border'\r\n | '--gog-select-filter-input-color'\r\n | '--gog-select-filter-input-padding-x'\r\n | '--gog-select-filter-input-padding-y'\r\n | '--gog-select-filter-input-radius'\r\n | '--gog-select-filter-padding'\r\n | '--gog-select-float-label-in-top'\r\n | '--gog-select-float-label-on-bg'\r\n | '--gog-select-float-label-over-gap'\r\n | '--gog-select-float-label-over-reserve'\r\n | '--gog-select-float-label-reserve'\r\n | '--gog-select-focus-border'\r\n | '--gog-select-focus-glow'\r\n | '--gog-select-focus-ring'\r\n | '--gog-select-focus-ring-offset'\r\n | '--gog-select-focus-ring-width'\r\n | '--gog-select-font-family'\r\n | '--gog-select-gap'\r\n | '--gog-select-label-color'\r\n | '--gog-select-label-font-family'\r\n | '--gog-select-label-font-size'\r\n | '--gog-select-label-letter-spacing'\r\n | '--gog-select-label-line-height'\r\n | '--gog-select-label-text-transform'\r\n | '--gog-select-mark-icon-ratio'\r\n | '--gog-select-mark-size-ratio'\r\n | '--gog-select-min-width'\r\n | '--gog-select-option-color'\r\n | '--gog-select-option-disabled-opacity'\r\n | '--gog-select-option-gap'\r\n | '--gog-select-option-height'\r\n | '--gog-select-option-hover-bg'\r\n | '--gog-select-option-press-bg'\r\n | '--gog-select-option-radius'\r\n | '--gog-select-option-selected-color'\r\n | '--gog-select-option-transition-duration'\r\n | '--gog-select-options-padding'\r\n | '--gog-select-panel-bg'\r\n | '--gog-select-panel-gap'\r\n | '--gog-select-panel-max-height'\r\n | '--gog-select-panel-max-width'\r\n | '--gog-select-panel-radius'\r\n | '--gog-select-panel-shadow'\r\n | '--gog-select-placeholder-color'\r\n | '--gog-select-radius'\r\n | '--gog-select-transition-duration'\r\n | '--gog-skeleton-base'\r\n | '--gog-skeleton-circle-size-lg'\r\n | '--gog-skeleton-circle-size-md'\r\n | '--gog-skeleton-circle-size-slg'\r\n | '--gog-skeleton-circle-size-sm'\r\n | '--gog-skeleton-circle-size-xsm'\r\n | '--gog-skeleton-line-gap'\r\n | '--gog-skeleton-line-height-lg'\r\n | '--gog-skeleton-line-height-md'\r\n | '--gog-skeleton-line-height-slg'\r\n | '--gog-skeleton-line-height-sm'\r\n | '--gog-skeleton-line-height-xsm'\r\n | '--gog-skeleton-line-radius'\r\n | '--gog-skeleton-pulse-duration'\r\n | '--gog-skeleton-pulse-min-opacity'\r\n | '--gog-skeleton-radius'\r\n | '--gog-skeleton-rect-height-lg'\r\n | '--gog-skeleton-rect-height-md'\r\n | '--gog-skeleton-rect-height-slg'\r\n | '--gog-skeleton-rect-height-sm'\r\n | '--gog-skeleton-rect-height-xsm'\r\n | '--gog-skeleton-shine'\r\n | '--gog-skeleton-short-line-width'\r\n | '--gog-skeleton-square-radius'\r\n | '--gog-skeleton-wave-duration'\r\n | '--gog-slider-auto-width'\r\n | '--gog-slider-disabled-opacity'\r\n | '--gog-slider-error-color'\r\n | '--gog-slider-error-font-family'\r\n | '--gog-slider-error-font-size'\r\n | '--gog-slider-error-line-height'\r\n | '--gog-slider-fill-bg'\r\n | '--gog-slider-focus-ring'\r\n | '--gog-slider-focus-ring-width'\r\n | '--gog-slider-gap'\r\n | '--gog-slider-label-color'\r\n | '--gog-slider-label-font-family'\r\n | '--gog-slider-label-font-size'\r\n | '--gog-slider-label-letter-spacing'\r\n | '--gog-slider-label-line-height'\r\n | '--gog-slider-label-text-transform'\r\n | '--gog-slider-range-color'\r\n | '--gog-slider-range-font-size'\r\n | '--gog-slider-range-line-height'\r\n | '--gog-slider-thumb-bg'\r\n | '--gog-slider-thumb-border'\r\n | '--gog-slider-thumb-border-width'\r\n | '--gog-slider-thumb-glow-color'\r\n | '--gog-slider-thumb-glow-size'\r\n | '--gog-slider-thumb-radius'\r\n | '--gog-slider-thumb-size'\r\n | '--gog-slider-track-area-height'\r\n | '--gog-slider-track-bg'\r\n | '--gog-slider-track-border-color'\r\n | '--gog-slider-track-border-style'\r\n | '--gog-slider-track-border-width'\r\n | '--gog-slider-track-height'\r\n | '--gog-slider-track-radius'\r\n | '--gog-slider-value-color'\r\n | '--gog-slider-value-font-family'\r\n | '--gog-slider-value-font-size'\r\n | '--gog-slider-value-line-height'\r\n | '--gog-slider-value-min-width'\r\n | '--gog-slider-vertical-length'\r\n | '--gog-space-12'\r\n | '--gog-space-16'\r\n | '--gog-space-20'\r\n | '--gog-space-24'\r\n | '--gog-space-28'\r\n | '--gog-space-2xl'\r\n | '--gog-space-32'\r\n | '--gog-space-4'\r\n | '--gog-space-40'\r\n | '--gog-space-48'\r\n | '--gog-space-8'\r\n | '--gog-space-lg'\r\n | '--gog-space-md'\r\n | '--gog-space-sm'\r\n | '--gog-space-xs'\r\n | '--gog-spinner-arc-inner-color'\r\n | '--gog-spinner-arc-inner-dash'\r\n | '--gog-spinner-arc-inner-glow'\r\n | '--gog-spinner-arc-inner-opacity'\r\n | '--gog-spinner-arc-inner-pulse-opacity'\r\n | '--gog-spinner-arc-inner-stroke-compact'\r\n | '--gog-spinner-arc-outer-color'\r\n | '--gog-spinner-arc-outer-dash'\r\n | '--gog-spinner-arc-outer-glow'\r\n | '--gog-spinner-arc-outer-pulse-opacity'\r\n | '--gog-spinner-diamond-color'\r\n | '--gog-spinner-diamond-glow'\r\n | '--gog-spinner-diamond-opacity'\r\n | '--gog-spinner-glow-color'\r\n | '--gog-spinner-overlay-bg'\r\n | '--gog-spinner-overlay-blur'\r\n | '--gog-spinner-overlay-fade-duration'\r\n | '--gog-spinner-overlay-z'\r\n | '--gog-spinner-pulse-duration'\r\n | '--gog-spinner-ring-duration'\r\n | '--gog-spinner-ring-glow'\r\n | '--gog-spinner-ring-padding'\r\n | '--gog-spinner-rune-color'\r\n | '--gog-spinner-rune-font-family'\r\n | '--gog-spinner-rune-glow'\r\n | '--gog-spinner-rune-pulse-opacity'\r\n | '--gog-spinner-rune-size'\r\n | '--gog-spinner-size-lg'\r\n | '--gog-spinner-size-md'\r\n | '--gog-spinner-size-slg'\r\n | '--gog-spinner-size-sm'\r\n | '--gog-spinner-size-xsm'\r\n | '--gog-spinner-spin-duration'\r\n | '--gog-spinner-spin-slow-duration'\r\n | '--gog-spinner-ticks-duration'\r\n | '--gog-spinner-track-color'\r\n | '--gog-spinner-track-opacity'\r\n | '--gog-success-color'\r\n | '--gog-success-shade'\r\n | '--gog-success-text-color'\r\n | '--gog-surface-color'\r\n | '--gog-table-accent-bright'\r\n | '--gog-table-accent-color'\r\n | '--gog-table-border-color'\r\n | '--gog-table-border-style'\r\n | '--gog-table-border-width'\r\n | '--gog-table-empty-font-size'\r\n | '--gog-table-empty-line-height'\r\n | '--gog-table-empty-padding'\r\n | '--gog-table-focus-ring'\r\n | '--gog-table-focus-ring-width'\r\n | '--gog-table-font-family'\r\n | '--gog-table-footer-gap'\r\n | '--gog-table-footer-min-height'\r\n | '--gog-table-gap'\r\n | '--gog-table-header-bg'\r\n | '--gog-table-header-font-family'\r\n | '--gog-table-header-letter-spacing'\r\n | '--gog-table-header-text-transform'\r\n | '--gog-table-hover-bg'\r\n | '--gog-table-lg-padding-v'\r\n | '--gog-table-lg-td-font-size'\r\n | '--gog-table-lg-th-font-size'\r\n | '--gog-table-loading-opacity'\r\n | '--gog-table-loading-padding'\r\n | '--gog-table-md-padding-v'\r\n | '--gog-table-md-td-font-size'\r\n | '--gog-table-md-th-font-size'\r\n | '--gog-table-muted-color'\r\n | '--gog-table-num-col-width'\r\n | '--gog-table-num-font-size'\r\n | '--gog-table-num-line-height'\r\n | '--gog-table-numeric-font-family'\r\n | '--gog-table-padding-h'\r\n | '--gog-table-row-border-width'\r\n | '--gog-table-row-press-bg'\r\n | '--gog-table-row-transition-duration'\r\n | '--gog-table-select-col-width'\r\n | '--gog-table-selected-bg'\r\n | '--gog-table-slg-padding-v'\r\n | '--gog-table-slg-td-font-size'\r\n | '--gog-table-slg-th-font-size'\r\n | '--gog-table-sm-padding-v'\r\n | '--gog-table-sm-td-font-size'\r\n | '--gog-table-sm-th-font-size'\r\n | '--gog-table-sort-icon-opacity'\r\n | '--gog-table-sort-icon-size'\r\n | '--gog-table-sort-icon-width'\r\n | '--gog-table-surface'\r\n | '--gog-table-td-font-size'\r\n | '--gog-table-td-line-height'\r\n | '--gog-table-td-padding-v'\r\n | '--gog-table-text-color'\r\n | '--gog-table-th-font-size'\r\n | '--gog-table-th-inner-gap'\r\n | '--gog-table-th-line-height'\r\n | '--gog-table-th-padding-v'\r\n | '--gog-table-total-font-size'\r\n | '--gog-table-total-letter-spacing'\r\n | '--gog-table-total-line-height'\r\n | '--gog-table-total-text-transform'\r\n | '--gog-table-xsm-padding-v'\r\n | '--gog-table-xsm-td-font-size'\r\n | '--gog-table-xsm-th-font-size'\r\n | '--gog-tabs-active-color'\r\n | '--gog-tabs-disabled-opacity'\r\n | '--gog-tabs-focus-ring-color'\r\n | '--gog-tabs-focus-ring-offset'\r\n | '--gog-tabs-focus-ring-width'\r\n | '--gog-tabs-font-family'\r\n | '--gog-tabs-font-weight'\r\n | '--gog-tabs-gap'\r\n | '--gog-tabs-header-border-color'\r\n | '--gog-tabs-header-border-style'\r\n | '--gog-tabs-header-border-width'\r\n | '--gog-tabs-hover-color'\r\n | '--gog-tabs-icon-size'\r\n | '--gog-tabs-indicator-color'\r\n | '--gog-tabs-indicator-radius'\r\n | '--gog-tabs-indicator-thickness'\r\n | '--gog-tabs-letter-spacing'\r\n | '--gog-tabs-lg-font-size'\r\n | '--gog-tabs-lg-padding'\r\n | '--gog-tabs-line-height'\r\n | '--gog-tabs-md-font-size'\r\n | '--gog-tabs-md-padding'\r\n | '--gog-tabs-panel-color'\r\n | '--gog-tabs-panel-padding'\r\n | '--gog-tabs-press-bg'\r\n | '--gog-tabs-press-color'\r\n | '--gog-tabs-rest-bg'\r\n | '--gog-tabs-rest-color'\r\n | '--gog-tabs-slg-font-size'\r\n | '--gog-tabs-slg-padding'\r\n | '--gog-tabs-sm-font-size'\r\n | '--gog-tabs-sm-padding'\r\n | '--gog-tabs-tab-bg'\r\n | '--gog-tabs-tab-color'\r\n | '--gog-tabs-tab-font-size'\r\n | '--gog-tabs-tab-gap'\r\n | '--gog-tabs-tab-padding'\r\n | '--gog-tabs-text-transform'\r\n | '--gog-tabs-transition-duration'\r\n | '--gog-tabs-xsm-font-size'\r\n | '--gog-tabs-xsm-padding'\r\n | '--gog-tag-accent'\r\n | '--gog-tag-bg'\r\n | '--gog-tag-bg-base'\r\n | '--gog-tag-bg-mix'\r\n | '--gog-tag-border'\r\n | '--gog-tag-border-style'\r\n | '--gog-tag-border-width'\r\n | '--gog-tag-color'\r\n | '--gog-tag-color-base'\r\n | '--gog-tag-color-mix'\r\n | '--gog-tag-danger-color'\r\n | '--gog-tag-default-color'\r\n | '--gog-tag-font-family'\r\n | '--gog-tag-font-size'\r\n | '--gog-tag-font-weight'\r\n | '--gog-tag-gap'\r\n | '--gog-tag-icon-size'\r\n | '--gog-tag-info-color'\r\n | '--gog-tag-inner-border-width'\r\n | '--gog-tag-lg-font-size'\r\n | '--gog-tag-lg-gap'\r\n | '--gog-tag-lg-icon-size'\r\n | '--gog-tag-lg-padding-block'\r\n | '--gog-tag-lg-padding-inline'\r\n | '--gog-tag-line-height'\r\n | '--gog-tag-md-font-size'\r\n | '--gog-tag-md-gap'\r\n | '--gog-tag-md-icon-size'\r\n | '--gog-tag-md-padding-block'\r\n | '--gog-tag-md-padding-inline'\r\n | '--gog-tag-padding-block'\r\n | '--gog-tag-padding-inline'\r\n | '--gog-tag-pill-radius'\r\n | '--gog-tag-radius'\r\n | '--gog-tag-slg-font-size'\r\n | '--gog-tag-slg-gap'\r\n | '--gog-tag-slg-icon-size'\r\n | '--gog-tag-slg-padding-block'\r\n | '--gog-tag-slg-padding-inline'\r\n | '--gog-tag-sm-font-size'\r\n | '--gog-tag-sm-gap'\r\n | '--gog-tag-sm-icon-size'\r\n | '--gog-tag-sm-padding-block'\r\n | '--gog-tag-sm-padding-inline'\r\n | '--gog-tag-success-color'\r\n | '--gog-tag-warning-color'\r\n | '--gog-tag-xsm-font-size'\r\n | '--gog-tag-xsm-gap'\r\n | '--gog-tag-xsm-icon-size'\r\n | '--gog-tag-xsm-padding-block'\r\n | '--gog-tag-xsm-padding-inline'\r\n | '--gog-text-2xl'\r\n | '--gog-text-2xs'\r\n | '--gog-text-3xl'\r\n | '--gog-text-color'\r\n | '--gog-text-lg'\r\n | '--gog-text-md'\r\n | '--gog-text-slg'\r\n | '--gog-text-sm'\r\n | '--gog-text-transform'\r\n | '--gog-text-xl'\r\n | '--gog-text-xs'\r\n | '--gog-textarea-clear-icon-ratio'\r\n | '--gog-textarea-line-height'\r\n | '--gog-textarea-resize-grip-color'\r\n | '--gog-textarea-resize-grip-offset'\r\n | '--gog-textarea-resize-grip-opacity'\r\n | '--gog-textarea-resize-grip-size'\r\n | '--gog-textarea-resize-grip-stripe-gap'\r\n | '--gog-textarea-resize-grip-stripe-width'\r\n | '--gog-textarea-resize-inset-bottom'\r\n | '--gog-textarea-resize-inset-right'\r\n | '--gog-textarea-scrollbar-width'\r\n | '--gog-toast-accent-width'\r\n | '--gog-toast-action-font-size'\r\n | '--gog-toast-action-line-height'\r\n | '--gog-toast-action-padding'\r\n | '--gog-toast-actions-gap'\r\n | '--gog-toast-base-z'\r\n | '--gog-toast-bg'\r\n | '--gog-toast-border'\r\n | '--gog-toast-close-font-size'\r\n | '--gog-toast-close-line-height'\r\n | '--gog-toast-close-padding'\r\n | '--gog-toast-color'\r\n | '--gog-toast-content-gap'\r\n | '--gog-toast-enter-distance'\r\n | '--gog-toast-error-color'\r\n | '--gog-toast-font-family'\r\n | '--gog-toast-icon-color'\r\n | '--gog-toast-icon-line-height'\r\n | '--gog-toast-icon-size'\r\n | '--gog-toast-info-color'\r\n | '--gog-toast-main-gap'\r\n | '--gog-toast-max-width'\r\n | '--gog-toast-message-font-size'\r\n | '--gog-toast-message-line-height'\r\n | '--gog-toast-min-width'\r\n | '--gog-toast-padding'\r\n | '--gog-toast-progress-height'\r\n | '--gog-toast-progress-opacity'\r\n | '--gog-toast-radius'\r\n | '--gog-toast-shadow'\r\n | '--gog-toast-stack-expanded-gap'\r\n | '--gog-toast-stack-max-depth'\r\n | '--gog-toast-stack-min-opacity'\r\n | '--gog-toast-stack-opacity-step'\r\n | '--gog-toast-stack-padding'\r\n | '--gog-toast-stack-peek'\r\n | '--gog-toast-stack-scale-step'\r\n | '--gog-toast-success-color'\r\n | '--gog-toast-transition-duration'\r\n | '--gog-toast-warning-color'\r\n | '--gog-toast-z-index'\r\n | '--gog-toggle-border-color'\r\n | '--gog-toggle-border-style'\r\n | '--gog-toggle-border-width'\r\n | '--gog-toggle-disabled-opacity'\r\n | '--gog-toggle-focus-ring-color'\r\n | '--gog-toggle-focus-ring-offset'\r\n | '--gog-toggle-focus-ring-width'\r\n | '--gog-toggle-font-family'\r\n | '--gog-toggle-gap'\r\n | '--gog-toggle-label-color'\r\n | '--gog-toggle-label-line-height'\r\n | '--gog-toggle-lg-label-size'\r\n | '--gog-toggle-lg-state-font-size'\r\n | '--gog-toggle-lg-thumb-size'\r\n | '--gog-toggle-lg-track-height'\r\n | '--gog-toggle-lg-track-width'\r\n | '--gog-toggle-md-label-size'\r\n | '--gog-toggle-md-state-font-size'\r\n | '--gog-toggle-md-thumb-size'\r\n | '--gog-toggle-md-track-height'\r\n | '--gog-toggle-md-track-width'\r\n | '--gog-toggle-on-border-color'\r\n | '--gog-toggle-padding'\r\n | '--gog-toggle-radius'\r\n | '--gog-toggle-slg-label-size'\r\n | '--gog-toggle-slg-state-font-size'\r\n | '--gog-toggle-slg-thumb-size'\r\n | '--gog-toggle-slg-track-height'\r\n | '--gog-toggle-slg-track-width'\r\n | '--gog-toggle-sm-label-size'\r\n | '--gog-toggle-sm-state-font-size'\r\n | '--gog-toggle-sm-thumb-size'\r\n | '--gog-toggle-sm-track-height'\r\n | '--gog-toggle-sm-track-width'\r\n | '--gog-toggle-state-color'\r\n | '--gog-toggle-state-font-weight'\r\n | '--gog-toggle-state-letter-spacing'\r\n | '--gog-toggle-state-line-height'\r\n | '--gog-toggle-state-offset'\r\n | '--gog-toggle-state-padding-inline'\r\n | '--gog-toggle-state-thumb-gap'\r\n | '--gog-toggle-thumb-bg'\r\n | '--gog-toggle-thumb-inset'\r\n | '--gog-toggle-thumb-off-bg'\r\n | '--gog-toggle-thumb-on-bg'\r\n | '--gog-toggle-thumb-shadow'\r\n | '--gog-toggle-track-bg'\r\n | '--gog-toggle-track-off-bg'\r\n | '--gog-toggle-track-on-bg'\r\n | '--gog-toggle-transition-duration'\r\n | '--gog-toggle-xsm-label-size'\r\n | '--gog-toggle-xsm-state-font-size'\r\n | '--gog-toggle-xsm-thumb-size'\r\n | '--gog-toggle-xsm-track-height'\r\n | '--gog-toggle-xsm-track-width'\r\n | '--gog-tooltip-arrow-size'\r\n | '--gog-tooltip-bg'\r\n | '--gog-tooltip-border-color'\r\n | '--gog-tooltip-border-style'\r\n | '--gog-tooltip-border-width'\r\n | '--gog-tooltip-color'\r\n | '--gog-tooltip-font-family'\r\n | '--gog-tooltip-font-size'\r\n | '--gog-tooltip-gap'\r\n | '--gog-tooltip-line-height'\r\n | '--gog-tooltip-max-height'\r\n | '--gog-tooltip-max-width'\r\n | '--gog-tooltip-padding'\r\n | '--gog-tooltip-radius'\r\n | '--gog-tooltip-shadow'\r\n | '--gog-tooltip-transition-duration'\r\n | '--gog-tooltip-z'\r\n | '--gog-warning-color'\r\n | '--gog-warning-shade'\r\n | '--gog-warning-text-color'\r\n | '--gog-z-base';\r\n\r\n/** Which of the three layers a token belongs to — see the README's theming section. */\r\nexport type GogTokenLayer = 'foundation' | 'component' | 'instance';\r\n\r\nexport interface GogTokenGroup {\r\n /** The `── Section ──` heading the token sits under in theme.css. */\r\n readonly section: string;\r\n readonly layer: GogTokenLayer;\r\n readonly tokens: readonly GogTokenName[];\r\n}\r\n\r\n/**\r\n * The token catalogue, grouped as theme.css groups it. Exported so a theme editor or docs page\r\n * can enumerate the real tokens instead of keeping a hand-copied list that drifts.\r\n */\r\nexport const GOG_TOKEN_GROUPS: readonly GogTokenGroup[] = [\r\n {\r\n section: 'Typography',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-font-body',\r\n '--gog-font-heading',\r\n '--gog-font-mono',\r\n '--gog-font-weight-bold',\r\n '--gog-font-weight-heavy',\r\n '--gog-font-weight-medium',\r\n '--gog-font-weight-semibold',\r\n '--gog-letter-spacing',\r\n '--gog-line-height-loose',\r\n '--gog-line-height-none',\r\n '--gog-line-height-normal',\r\n '--gog-line-height-relaxed',\r\n '--gog-line-height-snug',\r\n '--gog-line-height-tight',\r\n '--gog-text-2xl',\r\n '--gog-text-2xs',\r\n '--gog-text-3xl',\r\n '--gog-text-lg',\r\n '--gog-text-md',\r\n '--gog-text-slg',\r\n '--gog-text-sm',\r\n '--gog-text-transform',\r\n '--gog-text-xl',\r\n '--gog-text-xs',\r\n ],\r\n },\r\n {\r\n section: 'Spacing & geometry',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-border-style',\r\n '--gog-border-width',\r\n '--gog-density',\r\n '--gog-panel-border-style',\r\n '--gog-panel-border-width',\r\n '--gog-radius',\r\n ],\r\n },\r\n {\r\n section: 'Motion',\r\n layer: 'foundation',\r\n tokens: ['--gog-duration-base', '--gog-duration-fast', '--gog-duration-slow', '--gog-easing'],\r\n },\r\n {\r\n section: 'Focus & disabled',\r\n layer: 'foundation',\r\n tokens: ['--gog-disabled-opacity', '--gog-focus-ring-offset', '--gog-focus-ring-width'],\r\n },\r\n {\r\n section: 'Control metrics',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-control-border-style',\r\n '--gog-control-border-width',\r\n '--gog-control-checkbox-box-size-lg',\r\n '--gog-control-checkbox-box-size-md',\r\n '--gog-control-checkbox-box-size-slg',\r\n '--gog-control-checkbox-box-size-sm',\r\n '--gog-control-checkbox-box-size-xsm',\r\n '--gog-control-checkbox-icon-size-lg',\r\n '--gog-control-checkbox-icon-size-md',\r\n '--gog-control-checkbox-icon-size-slg',\r\n '--gog-control-checkbox-icon-size-sm',\r\n '--gog-control-checkbox-icon-size-xsm',\r\n '--gog-control-checkbox-label-size-lg',\r\n '--gog-control-checkbox-label-size-md',\r\n '--gog-control-checkbox-label-size-slg',\r\n '--gog-control-checkbox-label-size-sm',\r\n '--gog-control-checkbox-label-size-xsm',\r\n '--gog-control-clear-icon-ratio',\r\n ],\r\n },\r\n {\r\n section: 'Field sizing (input / select / multiselect share one scale)',\r\n layer: 'foundation',\r\n tokens: ['--gog-field-icon-glyph', '--gog-field-icon-glyph-sm', '--gog-field-icon-glyph-xsm'],\r\n },\r\n {\r\n section: 'Float label geometry (input / textarea / select / multiselect)',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-field-float-label-in-top',\r\n '--gog-field-float-label-over-reserve',\r\n '--gog-field-float-label-reserve',\r\n ],\r\n },\r\n {\r\n section: 'Elevation',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-elevation-ambient-alpha',\r\n '--gog-elevation-contact-blur',\r\n '--gog-elevation-highlight-alpha',\r\n '--gog-elevation-highlight-ink',\r\n '--gog-elevation-ink',\r\n '--gog-elevation-key-alpha',\r\n '--gog-elevation-key-blur',\r\n '--gog-elevation-key-x',\r\n '--gog-elevation-key-y',\r\n '--gog-elevation-ring-width',\r\n ],\r\n },\r\n {\r\n section: 'Icon & spinner',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-icon-size',\r\n '--gog-icon-stroke-width',\r\n '--gog-spinner-rune-size',\r\n '--gog-spinner-size-lg',\r\n '--gog-spinner-size-md',\r\n '--gog-spinner-size-slg',\r\n '--gog-spinner-size-sm',\r\n '--gog-spinner-size-xsm',\r\n ],\r\n },\r\n {\r\n section: 'Toast stack',\r\n layer: 'foundation',\r\n tokens: ['--gog-toast-enter-distance', '--gog-toast-min-width', '--gog-toast-z-index'],\r\n },\r\n {\r\n section: 'Overlay stacking',\r\n layer: 'foundation',\r\n tokens: ['--gog-z-base'],\r\n },\r\n {\r\n section: 'Light palette (also the no-data-theme default)',\r\n layer: 'foundation',\r\n tokens: [\r\n '--gog-accent-bright',\r\n '--gog-accent-color',\r\n '--gog-accent-dim',\r\n '--gog-accent-pale',\r\n '--gog-accent-text-color',\r\n '--gog-background-color',\r\n '--gog-border-color',\r\n '--gog-control-boundary-color',\r\n '--gog-danger-color',\r\n '--gog-elevation-ambient-alpha',\r\n '--gog-elevation-contact-blur',\r\n '--gog-elevation-highlight-alpha',\r\n '--gog-elevation-highlight-ink',\r\n '--gog-elevation-ink',\r\n '--gog-elevation-key-alpha',\r\n '--gog-elevation-key-blur',\r\n '--gog-elevation-key-x',\r\n '--gog-elevation-key-y',\r\n '--gog-elevation-ring-width',\r\n '--gog-hover-color',\r\n '--gog-info-color',\r\n '--gog-muted-text-color',\r\n '--gog-primary-color',\r\n '--gog-secondary-color',\r\n '--gog-spinner-overlay-bg',\r\n '--gog-success-color',\r\n '--gog-surface-color',\r\n '--gog-text-color',\r\n '--gog-warning-color',\r\n ],\r\n },\r\n {\r\n section: 'The elevation ladder',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-dialog-shadow',\r\n '--gog-elevation-0',\r\n '--gog-elevation-1',\r\n '--gog-elevation-2',\r\n '--gog-elevation-3',\r\n '--gog-elevation-4',\r\n '--gog-elevation-5',\r\n '--gog-elevation-contact',\r\n '--gog-elevation-highlight',\r\n '--gog-elevation-ring',\r\n '--gog-panel-shadow',\r\n '--gog-toast-shadow',\r\n '--gog-toggle-thumb-shadow',\r\n ],\r\n },\r\n {\r\n section: 'Text on a status fill',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-danger-shade',\r\n '--gog-danger-text-color',\r\n '--gog-info-shade',\r\n '--gog-info-text-color',\r\n '--gog-success-shade',\r\n '--gog-success-text-color',\r\n '--gog-warning-shade',\r\n '--gog-warning-text-color',\r\n ],\r\n },\r\n {\r\n section: 'Stacking layers',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-badge-z',\r\n '--gog-control-checkbox-padding',\r\n '--gog-control-icon-offset',\r\n '--gog-control-padding-x',\r\n '--gog-control-padding-y',\r\n '--gog-dropdown-z',\r\n '--gog-elevated-surface-color',\r\n '--gog-field-error-line-height',\r\n '--gog-field-float-label-over-gap',\r\n '--gog-field-label-line-height',\r\n '--gog-field-lg-font-size',\r\n '--gog-field-lg-icon-inset',\r\n '--gog-field-lg-icon-offset',\r\n '--gog-field-lg-padding-x',\r\n '--gog-field-lg-padding-y',\r\n '--gog-field-line-height',\r\n '--gog-field-md-font-size',\r\n '--gog-field-md-icon-inset',\r\n '--gog-field-md-icon-offset',\r\n '--gog-field-md-padding-x',\r\n '--gog-field-md-padding-y',\r\n '--gog-field-slg-font-size',\r\n '--gog-field-slg-icon-inset',\r\n '--gog-field-slg-icon-offset',\r\n '--gog-field-slg-padding-x',\r\n '--gog-field-slg-padding-y',\r\n '--gog-field-sm-font-size',\r\n '--gog-field-sm-icon-inset',\r\n '--gog-field-sm-icon-offset',\r\n '--gog-field-sm-padding-x',\r\n '--gog-field-sm-padding-y',\r\n '--gog-field-xsm-font-size',\r\n '--gog-field-xsm-icon-inset',\r\n '--gog-field-xsm-icon-offset',\r\n '--gog-field-xsm-padding-x',\r\n '--gog-field-xsm-padding-y',\r\n '--gog-panel-radius',\r\n '--gog-space-12',\r\n '--gog-space-16',\r\n '--gog-space-20',\r\n '--gog-space-24',\r\n '--gog-space-28',\r\n '--gog-space-2xl',\r\n '--gog-space-32',\r\n '--gog-space-4',\r\n '--gog-space-40',\r\n '--gog-space-48',\r\n '--gog-space-8',\r\n '--gog-space-lg',\r\n '--gog-space-md',\r\n '--gog-space-sm',\r\n '--gog-space-xs',\r\n '--gog-spinner-overlay-z',\r\n '--gog-toast-base-z',\r\n '--gog-toast-max-width',\r\n '--gog-toast-stack-padding',\r\n '--gog-tooltip-z',\r\n ],\r\n },\r\n {\r\n section: 'Accordion',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-accordion-accent-color',\r\n '--gog-accordion-body-bg',\r\n '--gog-accordion-body-color',\r\n '--gog-accordion-body-font-family',\r\n '--gog-accordion-body-lift',\r\n '--gog-accordion-body-line-height',\r\n '--gog-accordion-body-radius',\r\n '--gog-accordion-body-transition-duration',\r\n '--gog-accordion-border-color',\r\n '--gog-accordion-border-style',\r\n '--gog-accordion-border-width',\r\n '--gog-accordion-chevron-line-height',\r\n '--gog-accordion-chevron-transition-duration',\r\n '--gog-accordion-disabled-opacity',\r\n '--gog-accordion-focus-ring-color',\r\n '--gog-accordion-focus-ring-width',\r\n '--gog-accordion-font-family',\r\n '--gog-accordion-header-bg',\r\n '--gog-accordion-header-gap',\r\n '--gog-accordion-header-text-transform',\r\n '--gog-accordion-hover-bg',\r\n '--gog-accordion-hover-color',\r\n '--gog-accordion-lg-body-font-size',\r\n '--gog-accordion-lg-body-line-height',\r\n '--gog-accordion-lg-body-padding-bottom',\r\n '--gog-accordion-lg-body-padding-top',\r\n '--gog-accordion-lg-chevron-font-size',\r\n '--gog-accordion-lg-chevron-size',\r\n '--gog-accordion-lg-content-gap',\r\n '--gog-accordion-lg-font-size',\r\n '--gog-accordion-lg-letter-spacing',\r\n '--gog-accordion-lg-padding-x',\r\n '--gog-accordion-lg-padding-y',\r\n '--gog-accordion-line-height',\r\n '--gog-accordion-md-body-font-size',\r\n '--gog-accordion-md-body-line-height',\r\n '--gog-accordion-md-body-padding-bottom',\r\n '--gog-accordion-md-body-padding-top',\r\n '--gog-accordion-md-chevron-font-size',\r\n '--gog-accordion-md-chevron-size',\r\n '--gog-accordion-md-content-gap',\r\n '--gog-accordion-md-font-size',\r\n '--gog-accordion-md-letter-spacing',\r\n '--gog-accordion-md-padding-x',\r\n '--gog-accordion-md-padding-y',\r\n '--gog-accordion-press-bg',\r\n '--gog-accordion-radius',\r\n '--gog-accordion-slg-body-font-size',\r\n '--gog-accordion-slg-body-line-height',\r\n '--gog-accordion-slg-body-padding-bottom',\r\n '--gog-accordion-slg-body-padding-top',\r\n '--gog-accordion-slg-chevron-font-size',\r\n '--gog-accordion-slg-chevron-size',\r\n '--gog-accordion-slg-content-gap',\r\n '--gog-accordion-slg-font-size',\r\n '--gog-accordion-slg-letter-spacing',\r\n '--gog-accordion-slg-padding-x',\r\n '--gog-accordion-slg-padding-y',\r\n '--gog-accordion-sm-body-font-size',\r\n '--gog-accordion-sm-body-line-height',\r\n '--gog-accordion-sm-body-padding-bottom',\r\n '--gog-accordion-sm-body-padding-top',\r\n '--gog-accordion-sm-chevron-font-size',\r\n '--gog-accordion-sm-chevron-size',\r\n '--gog-accordion-sm-content-gap',\r\n '--gog-accordion-sm-font-size',\r\n '--gog-accordion-sm-letter-spacing',\r\n '--gog-accordion-sm-padding-x',\r\n '--gog-accordion-sm-padding-y',\r\n '--gog-accordion-text-color',\r\n '--gog-accordion-transition-duration',\r\n '--gog-accordion-xsm-body-font-size',\r\n '--gog-accordion-xsm-body-line-height',\r\n '--gog-accordion-xsm-body-padding-bottom',\r\n '--gog-accordion-xsm-body-padding-top',\r\n '--gog-accordion-xsm-chevron-font-size',\r\n '--gog-accordion-xsm-chevron-size',\r\n '--gog-accordion-xsm-content-gap',\r\n '--gog-accordion-xsm-font-size',\r\n '--gog-accordion-xsm-letter-spacing',\r\n '--gog-accordion-xsm-padding-x',\r\n '--gog-accordion-xsm-padding-y',\r\n ],\r\n },\r\n {\r\n section: 'Alert',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-alert-accent-color',\r\n '--gog-alert-bg',\r\n '--gog-alert-body-font-size',\r\n '--gog-alert-body-line-height',\r\n '--gog-alert-border-color',\r\n '--gog-alert-border-style',\r\n '--gog-alert-border-width',\r\n '--gog-alert-color',\r\n '--gog-alert-danger-color',\r\n '--gog-alert-edge-width',\r\n '--gog-alert-font-family',\r\n '--gog-alert-gap',\r\n '--gog-alert-heading-color',\r\n '--gog-alert-heading-font-size',\r\n '--gog-alert-heading-font-weight',\r\n '--gog-alert-heading-line-height',\r\n '--gog-alert-icon-font-size',\r\n '--gog-alert-icon-line-height',\r\n '--gog-alert-info-color',\r\n '--gog-alert-main-gap',\r\n '--gog-alert-padding-x',\r\n '--gog-alert-padding-y',\r\n '--gog-alert-radius',\r\n '--gog-alert-success-color',\r\n '--gog-alert-warning-color',\r\n ],\r\n },\r\n {\r\n section: 'Collapsible',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-collapsible-disabled-opacity',\r\n '--gog-collapsible-max-height',\r\n '--gog-collapsible-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Button',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-button-active-scale',\r\n '--gog-button-border-style',\r\n '--gog-button-border-width',\r\n '--gog-button-disabled-opacity',\r\n '--gog-button-focus-ring-color',\r\n '--gog-button-focus-ring-offset',\r\n '--gog-button-focus-ring-width',\r\n '--gog-button-font-family',\r\n '--gog-button-font-weight',\r\n '--gog-button-gap',\r\n '--gog-button-ghost-bg',\r\n '--gog-button-ghost-border',\r\n '--gog-button-ghost-color',\r\n '--gog-button-ghost-hover-bg',\r\n '--gog-button-ghost-hover-color',\r\n '--gog-button-ghost-hover-shadow',\r\n '--gog-button-ghost-press-bg',\r\n '--gog-button-ghost-press-color',\r\n '--gog-button-ghost-shadow',\r\n '--gog-button-ghost-spinner-color',\r\n '--gog-button-ghost-toggled-shadow',\r\n '--gog-button-letter-spacing',\r\n '--gog-button-lg-font-size',\r\n '--gog-button-lg-padding',\r\n '--gog-button-line-height',\r\n '--gog-button-loading-opacity',\r\n '--gog-button-md-font-size',\r\n '--gog-button-md-padding',\r\n '--gog-button-outline-bg',\r\n '--gog-button-outline-border',\r\n '--gog-button-outline-color',\r\n '--gog-button-outline-hover-bg',\r\n '--gog-button-outline-hover-color',\r\n '--gog-button-outline-hover-shadow',\r\n '--gog-button-outline-press-bg',\r\n '--gog-button-outline-press-color',\r\n '--gog-button-outline-shadow',\r\n '--gog-button-outline-spinner-color',\r\n '--gog-button-outline-toggled-shadow',\r\n '--gog-button-primary-bg',\r\n '--gog-button-primary-border',\r\n '--gog-button-primary-color',\r\n '--gog-button-primary-hover-bg',\r\n '--gog-button-primary-hover-color',\r\n '--gog-button-primary-hover-shadow',\r\n '--gog-button-primary-press-bg',\r\n '--gog-button-primary-press-color',\r\n '--gog-button-primary-shadow',\r\n '--gog-button-primary-spinner-color',\r\n '--gog-button-primary-toggled-shadow',\r\n '--gog-button-radius',\r\n '--gog-button-secondary-bg',\r\n '--gog-button-secondary-border',\r\n '--gog-button-secondary-color',\r\n '--gog-button-secondary-hover-bg',\r\n '--gog-button-secondary-hover-color',\r\n '--gog-button-secondary-hover-shadow',\r\n '--gog-button-secondary-press-bg',\r\n '--gog-button-secondary-press-color',\r\n '--gog-button-secondary-shadow',\r\n '--gog-button-secondary-spinner-color',\r\n '--gog-button-secondary-toggled-shadow',\r\n '--gog-button-slg-font-size',\r\n '--gog-button-slg-padding',\r\n '--gog-button-sm-font-size',\r\n '--gog-button-sm-padding',\r\n '--gog-button-spinner-max-size',\r\n '--gog-button-text-transform',\r\n '--gog-button-toggled-ring-width',\r\n '--gog-button-transition-duration',\r\n '--gog-button-xsm-font-size',\r\n '--gog-button-xsm-padding',\r\n ],\r\n },\r\n {\r\n section: 'Button severity',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-button-danger-fill',\r\n '--gog-button-danger-fill-hover',\r\n '--gog-button-danger-fill-press',\r\n '--gog-button-danger-ink',\r\n '--gog-button-danger-on-fill',\r\n '--gog-button-danger-wash',\r\n '--gog-button-info-fill',\r\n '--gog-button-info-fill-hover',\r\n '--gog-button-info-fill-press',\r\n '--gog-button-info-ink',\r\n '--gog-button-info-on-fill',\r\n '--gog-button-info-wash',\r\n '--gog-button-success-fill',\r\n '--gog-button-success-fill-hover',\r\n '--gog-button-success-fill-press',\r\n '--gog-button-success-ink',\r\n '--gog-button-success-on-fill',\r\n '--gog-button-success-wash',\r\n '--gog-button-warning-fill',\r\n '--gog-button-warning-fill-hover',\r\n '--gog-button-warning-fill-press',\r\n '--gog-button-warning-ink',\r\n '--gog-button-warning-on-fill',\r\n '--gog-button-warning-wash',\r\n ],\r\n },\r\n {\r\n section: 'Button toggle group',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-button-toggle-border-color',\r\n '--gog-button-toggle-border-style',\r\n '--gog-button-toggle-border-width',\r\n '--gog-button-toggle-disabled-opacity',\r\n '--gog-button-toggle-focus-ring-color',\r\n '--gog-button-toggle-focus-ring-offset',\r\n '--gog-button-toggle-focus-ring-width',\r\n '--gog-button-toggle-font-family',\r\n '--gog-button-toggle-font-weight',\r\n '--gog-button-toggle-gap',\r\n '--gog-button-toggle-hover-bg',\r\n '--gog-button-toggle-hover-color',\r\n '--gog-button-toggle-icon-size',\r\n '--gog-button-toggle-letter-spacing',\r\n '--gog-button-toggle-line-height',\r\n '--gog-button-toggle-press-bg',\r\n '--gog-button-toggle-radius',\r\n '--gog-button-toggle-rest-bg',\r\n '--gog-button-toggle-rest-color',\r\n '--gog-button-toggle-selected-bg',\r\n '--gog-button-toggle-selected-border-color',\r\n '--gog-button-toggle-selected-color',\r\n '--gog-button-toggle-selected-press-bg',\r\n '--gog-button-toggle-separated-gap',\r\n '--gog-button-toggle-text-transform',\r\n '--gog-button-toggle-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Calendar (the month grid inside gog-datepicker, and gog-calendar on its own)',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-calendar-action-padding',\r\n '--gog-calendar-color',\r\n '--gog-calendar-day-border-style',\r\n '--gog-calendar-day-border-width',\r\n '--gog-calendar-day-hover-bg',\r\n '--gog-calendar-day-outside-color',\r\n '--gog-calendar-day-radius',\r\n '--gog-calendar-day-rest-bg',\r\n '--gog-calendar-day-rest-color',\r\n '--gog-calendar-disabled-opacity',\r\n '--gog-calendar-divider-color',\r\n '--gog-calendar-divider-style',\r\n '--gog-calendar-divider-width',\r\n '--gog-calendar-focus-ring-color',\r\n '--gog-calendar-focus-ring-offset',\r\n '--gog-calendar-focus-ring-width',\r\n '--gog-calendar-font-family',\r\n '--gog-calendar-footer-gap',\r\n '--gog-calendar-header-gap',\r\n '--gog-calendar-header-margin',\r\n '--gog-calendar-lg-day-size',\r\n '--gog-calendar-lg-font-size',\r\n '--gog-calendar-line-height',\r\n '--gog-calendar-max-width',\r\n '--gog-calendar-md-day-size',\r\n '--gog-calendar-md-font-size',\r\n '--gog-calendar-months-gap',\r\n '--gog-calendar-nav-bg',\r\n '--gog-calendar-nav-color',\r\n '--gog-calendar-nav-hover-bg',\r\n '--gog-calendar-nav-hover-color',\r\n '--gog-calendar-nav-icon-overlap',\r\n '--gog-calendar-nav-icon-size',\r\n '--gog-calendar-nav-radius',\r\n '--gog-calendar-nav-size',\r\n '--gog-calendar-padding',\r\n '--gog-calendar-range-bg',\r\n '--gog-calendar-range-color',\r\n '--gog-calendar-selected-bg',\r\n '--gog-calendar-selected-color',\r\n '--gog-calendar-selected-font-weight',\r\n '--gog-calendar-slg-day-size',\r\n '--gog-calendar-slg-font-size',\r\n '--gog-calendar-sm-day-size',\r\n '--gog-calendar-sm-font-size',\r\n '--gog-calendar-time-gap',\r\n '--gog-calendar-time-input-bg',\r\n '--gog-calendar-time-input-padding',\r\n '--gog-calendar-time-input-width',\r\n '--gog-calendar-time-margin',\r\n '--gog-calendar-title-color',\r\n '--gog-calendar-title-font-weight',\r\n '--gog-calendar-today-border-color',\r\n '--gog-calendar-today-font-weight',\r\n '--gog-calendar-transition-duration',\r\n '--gog-calendar-weekday-color',\r\n '--gog-calendar-weekday-font-size',\r\n '--gog-calendar-weekday-font-weight',\r\n '--gog-calendar-weekday-line-height',\r\n '--gog-calendar-weekday-padding',\r\n '--gog-calendar-weekday-text-transform',\r\n '--gog-calendar-xsm-day-size',\r\n '--gog-calendar-xsm-font-size',\r\n ],\r\n },\r\n {\r\n section: 'Card',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-card-border-style',\r\n '--gog-card-border-width',\r\n '--gog-card-color',\r\n '--gog-card-disabled-opacity',\r\n '--gog-card-elevated-bg',\r\n '--gog-card-elevated-border-color',\r\n '--gog-card-elevated-shadow',\r\n '--gog-card-filled-bg',\r\n '--gog-card-filled-border-color',\r\n '--gog-card-filled-shadow',\r\n '--gog-card-focus-ring',\r\n '--gog-card-focus-ring-offset',\r\n '--gog-card-focus-ring-width',\r\n '--gog-card-font-family',\r\n '--gog-card-footer-border-color',\r\n '--gog-card-footer-gap',\r\n '--gog-card-footer-padding-top',\r\n '--gog-card-heading-color',\r\n '--gog-card-heading-font-family',\r\n '--gog-card-heading-font-size',\r\n '--gog-card-heading-font-weight',\r\n '--gog-card-heading-line-height',\r\n '--gog-card-hover-border-color',\r\n '--gog-card-hover-shadow',\r\n '--gog-card-lg-gap',\r\n '--gog-card-lg-padding-x',\r\n '--gog-card-lg-padding-y',\r\n '--gog-card-md-gap',\r\n '--gog-card-md-padding-x',\r\n '--gog-card-md-padding-y',\r\n '--gog-card-outlined-bg',\r\n '--gog-card-outlined-border-color',\r\n '--gog-card-outlined-shadow',\r\n '--gog-card-radius',\r\n '--gog-card-slg-gap',\r\n '--gog-card-slg-padding-x',\r\n '--gog-card-slg-padding-y',\r\n '--gog-card-sm-gap',\r\n '--gog-card-sm-padding-x',\r\n '--gog-card-sm-padding-y',\r\n '--gog-card-transition-duration',\r\n '--gog-card-xsm-gap',\r\n '--gog-card-xsm-padding-x',\r\n '--gog-card-xsm-padding-y',\r\n ],\r\n },\r\n {\r\n section: 'Checkbox',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-checkbox-bg',\r\n '--gog-checkbox-border-color',\r\n '--gog-checkbox-border-style',\r\n '--gog-checkbox-border-width',\r\n '--gog-checkbox-checked-bg',\r\n '--gog-checkbox-checked-border',\r\n '--gog-checkbox-dash-height',\r\n '--gog-checkbox-dash-radius',\r\n '--gog-checkbox-dash-width-ratio',\r\n '--gog-checkbox-disabled-opacity',\r\n '--gog-checkbox-focus-ring',\r\n '--gog-checkbox-focus-ring-offset',\r\n '--gog-checkbox-focus-ring-width',\r\n '--gog-checkbox-font-family',\r\n '--gog-checkbox-gap',\r\n '--gog-checkbox-icon-color',\r\n '--gog-checkbox-icon-line-height',\r\n '--gog-checkbox-label-color',\r\n '--gog-checkbox-label-line-height',\r\n '--gog-checkbox-radius',\r\n '--gog-checkbox-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Radio group',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-radio-bg',\r\n '--gog-radio-border-color',\r\n '--gog-radio-border-style',\r\n '--gog-radio-border-width',\r\n '--gog-radio-checked-bg',\r\n '--gog-radio-checked-border',\r\n '--gog-radio-disabled-opacity',\r\n '--gog-radio-dot-color',\r\n '--gog-radio-dot-size-ratio',\r\n '--gog-radio-error-color',\r\n '--gog-radio-error-font-size',\r\n '--gog-radio-error-line-height',\r\n '--gog-radio-focus-ring',\r\n '--gog-radio-focus-ring-offset',\r\n '--gog-radio-focus-ring-width',\r\n '--gog-radio-font-family',\r\n '--gog-radio-gap',\r\n '--gog-radio-group-gap',\r\n '--gog-radio-group-label-color',\r\n '--gog-radio-group-label-size',\r\n '--gog-radio-group-option-gap',\r\n '--gog-radio-group-option-gap-horizontal',\r\n '--gog-radio-label-color',\r\n '--gog-radio-label-line-height',\r\n '--gog-radio-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Chip',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-chip-avatar-inset-ratio',\r\n '--gog-chip-bg',\r\n '--gog-chip-border',\r\n '--gog-chip-border-style',\r\n '--gog-chip-border-width',\r\n '--gog-chip-color',\r\n '--gog-chip-disabled-opacity',\r\n '--gog-chip-focus-ring-color',\r\n '--gog-chip-focus-ring-offset',\r\n '--gog-chip-focus-ring-width',\r\n '--gog-chip-font-family',\r\n '--gog-chip-font-weight',\r\n '--gog-chip-hover-bg',\r\n '--gog-chip-lg-avatar-size',\r\n '--gog-chip-lg-font-size',\r\n '--gog-chip-lg-gap',\r\n '--gog-chip-lg-icon-size',\r\n '--gog-chip-lg-padding-block',\r\n '--gog-chip-lg-padding-inline',\r\n '--gog-chip-lg-remove-size',\r\n '--gog-chip-line-height',\r\n '--gog-chip-md-avatar-size',\r\n '--gog-chip-md-font-size',\r\n '--gog-chip-md-gap',\r\n '--gog-chip-md-icon-size',\r\n '--gog-chip-md-padding-block',\r\n '--gog-chip-md-padding-inline',\r\n '--gog-chip-md-remove-size',\r\n '--gog-chip-pill-radius',\r\n '--gog-chip-press-bg',\r\n '--gog-chip-radius',\r\n '--gog-chip-remove-color',\r\n '--gog-chip-remove-hover-color',\r\n '--gog-chip-remove-inset-ratio',\r\n '--gog-chip-remove-scale',\r\n '--gog-chip-selected-ring-width',\r\n '--gog-chip-selected-shadow',\r\n '--gog-chip-slg-avatar-size',\r\n '--gog-chip-slg-font-size',\r\n '--gog-chip-slg-gap',\r\n '--gog-chip-slg-icon-size',\r\n '--gog-chip-slg-padding-block',\r\n '--gog-chip-slg-padding-inline',\r\n '--gog-chip-slg-remove-size',\r\n '--gog-chip-sm-avatar-size',\r\n '--gog-chip-sm-font-size',\r\n '--gog-chip-sm-gap',\r\n '--gog-chip-sm-icon-size',\r\n '--gog-chip-sm-padding-block',\r\n '--gog-chip-sm-padding-inline',\r\n '--gog-chip-sm-remove-size',\r\n '--gog-chip-xsm-avatar-size',\r\n '--gog-chip-xsm-font-size',\r\n '--gog-chip-xsm-gap',\r\n '--gog-chip-xsm-icon-size',\r\n '--gog-chip-xsm-padding-block',\r\n '--gog-chip-xsm-padding-inline',\r\n '--gog-chip-xsm-remove-size',\r\n ],\r\n },\r\n {\r\n section: 'Dialog',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-confirmation-dialog-actions-gap',\r\n '--gog-confirmation-dialog-actions-offset',\r\n '--gog-confirmation-dialog-color',\r\n '--gog-confirmation-dialog-description-color',\r\n '--gog-confirmation-dialog-description-font-size',\r\n '--gog-confirmation-dialog-description-line-height',\r\n '--gog-confirmation-dialog-gap',\r\n '--gog-confirmation-dialog-max-width',\r\n '--gog-confirmation-dialog-min-width',\r\n '--gog-confirmation-dialog-title-font-size',\r\n '--gog-confirmation-dialog-title-line-height',\r\n '--gog-dialog-backdrop-bg',\r\n '--gog-dialog-backdrop-blur',\r\n '--gog-dialog-backdrop-fade-duration',\r\n '--gog-dialog-backdrop-padding',\r\n '--gog-dialog-bg',\r\n '--gog-dialog-body-max-height',\r\n '--gog-dialog-body-padding',\r\n '--gog-dialog-border',\r\n '--gog-dialog-border-style',\r\n '--gog-dialog-border-width',\r\n '--gog-dialog-close-color',\r\n '--gog-dialog-close-focus-ring',\r\n '--gog-dialog-close-focus-ring-offset',\r\n '--gog-dialog-close-focus-ring-width',\r\n '--gog-dialog-close-font-size',\r\n '--gog-dialog-close-hover-bg',\r\n '--gog-dialog-close-hover-border',\r\n '--gog-dialog-close-hover-color',\r\n '--gog-dialog-close-line-height',\r\n '--gog-dialog-close-size',\r\n '--gog-dialog-color',\r\n '--gog-dialog-enter-distance',\r\n '--gog-dialog-enter-duration',\r\n '--gog-dialog-font-family',\r\n '--gog-dialog-header-border-color',\r\n '--gog-dialog-header-gap',\r\n '--gog-dialog-header-padding',\r\n '--gog-dialog-max-height',\r\n '--gog-dialog-min-width',\r\n '--gog-dialog-radius',\r\n '--gog-dialog-title-font-size',\r\n '--gog-dialog-title-line-height',\r\n ],\r\n },\r\n {\r\n section: 'Autocomplete',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-autocomplete-actions-gap',\r\n '--gog-autocomplete-actions-inset',\r\n '--gog-autocomplete-actions-reserve',\r\n '--gog-autocomplete-border-color',\r\n '--gog-autocomplete-border-style',\r\n '--gog-autocomplete-border-width',\r\n '--gog-autocomplete-clear-color',\r\n '--gog-autocomplete-clear-hover-color',\r\n '--gog-autocomplete-clear-icon-ratio',\r\n '--gog-autocomplete-disabled-opacity',\r\n '--gog-autocomplete-empty-color',\r\n '--gog-autocomplete-empty-font-size',\r\n '--gog-autocomplete-empty-line-height',\r\n '--gog-autocomplete-error-border-color',\r\n '--gog-autocomplete-error-color',\r\n '--gog-autocomplete-error-font-family',\r\n '--gog-autocomplete-error-font-size',\r\n '--gog-autocomplete-error-line-height',\r\n '--gog-autocomplete-field-bg',\r\n '--gog-autocomplete-float-label-in-top',\r\n '--gog-autocomplete-float-label-over-gap',\r\n '--gog-autocomplete-float-label-over-reserve',\r\n '--gog-autocomplete-float-label-reserve',\r\n '--gog-autocomplete-focus-ring-color',\r\n '--gog-autocomplete-focus-ring-offset',\r\n '--gog-autocomplete-focus-ring-width',\r\n '--gog-autocomplete-font-family',\r\n '--gog-autocomplete-gap',\r\n '--gog-autocomplete-hover-border-color',\r\n '--gog-autocomplete-label-color',\r\n '--gog-autocomplete-label-font-family',\r\n '--gog-autocomplete-label-font-size',\r\n '--gog-autocomplete-label-font-weight',\r\n '--gog-autocomplete-label-letter-spacing',\r\n '--gog-autocomplete-label-line-height',\r\n '--gog-autocomplete-label-text-transform',\r\n '--gog-autocomplete-line-height',\r\n '--gog-autocomplete-min-width',\r\n '--gog-autocomplete-option-color',\r\n '--gog-autocomplete-option-gap',\r\n '--gog-autocomplete-option-height',\r\n '--gog-autocomplete-option-hover-bg',\r\n '--gog-autocomplete-option-hover-color',\r\n '--gog-autocomplete-option-padding',\r\n '--gog-autocomplete-option-press-bg',\r\n '--gog-autocomplete-option-radius',\r\n '--gog-autocomplete-option-selected-bg',\r\n '--gog-autocomplete-option-selected-color',\r\n '--gog-autocomplete-options-padding',\r\n '--gog-autocomplete-panel-bg',\r\n '--gog-autocomplete-panel-border-color',\r\n '--gog-autocomplete-panel-border-style',\r\n '--gog-autocomplete-panel-border-width',\r\n '--gog-autocomplete-panel-gap',\r\n '--gog-autocomplete-panel-max-height',\r\n '--gog-autocomplete-panel-max-width',\r\n '--gog-autocomplete-panel-radius',\r\n '--gog-autocomplete-panel-shadow',\r\n '--gog-autocomplete-placeholder-color',\r\n '--gog-autocomplete-radius',\r\n '--gog-autocomplete-spinner-size',\r\n '--gog-autocomplete-text-color',\r\n '--gog-autocomplete-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Badge (the `gogBadge` directive; its classes live in utilities.css)',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-badge-border-color',\r\n '--gog-badge-border-style',\r\n '--gog-badge-border-width',\r\n '--gog-badge-danger-bg',\r\n '--gog-badge-danger-color',\r\n '--gog-badge-dot-size',\r\n '--gog-badge-font-family',\r\n '--gog-badge-font-size',\r\n '--gog-badge-font-weight',\r\n '--gog-badge-info-bg',\r\n '--gog-badge-info-color',\r\n '--gog-badge-line-height',\r\n '--gog-badge-offset',\r\n '--gog-badge-padding-inline',\r\n '--gog-badge-radius',\r\n '--gog-badge-size',\r\n '--gog-badge-success-bg',\r\n '--gog-badge-success-color',\r\n '--gog-badge-warning-bg',\r\n '--gog-badge-warning-color',\r\n ],\r\n },\r\n {\r\n section: 'Datepicker (the field; the grid inside it is themed by --gog-calendar-*)',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-datepicker-actions-gap',\r\n '--gog-datepicker-actions-inset',\r\n '--gog-datepicker-actions-reserve',\r\n '--gog-datepicker-border-color',\r\n '--gog-datepicker-border-style',\r\n '--gog-datepicker-border-width',\r\n '--gog-datepicker-clear-color',\r\n '--gog-datepicker-clear-icon-ratio',\r\n '--gog-datepicker-disabled-opacity',\r\n '--gog-datepicker-error-border-color',\r\n '--gog-datepicker-error-color',\r\n '--gog-datepicker-error-font-family',\r\n '--gog-datepicker-error-font-size',\r\n '--gog-datepicker-error-line-height',\r\n '--gog-datepicker-field-bg',\r\n '--gog-datepicker-float-label-in-top',\r\n '--gog-datepicker-float-label-over-gap',\r\n '--gog-datepicker-float-label-over-reserve',\r\n '--gog-datepicker-float-label-reserve',\r\n '--gog-datepicker-focus-ring-color',\r\n '--gog-datepicker-focus-ring-offset',\r\n '--gog-datepicker-focus-ring-width',\r\n '--gog-datepicker-font-family',\r\n '--gog-datepicker-gap',\r\n '--gog-datepicker-hover-border-color',\r\n '--gog-datepicker-icon-color',\r\n '--gog-datepicker-icon-hover-color',\r\n '--gog-datepicker-label-color',\r\n '--gog-datepicker-label-font-family',\r\n '--gog-datepicker-label-font-size',\r\n '--gog-datepicker-label-letter-spacing',\r\n '--gog-datepicker-label-line-height',\r\n '--gog-datepicker-label-text-transform',\r\n '--gog-datepicker-line-height',\r\n '--gog-datepicker-min-width',\r\n '--gog-datepicker-panel-bg',\r\n '--gog-datepicker-panel-border-color',\r\n '--gog-datepicker-panel-border-style',\r\n '--gog-datepicker-panel-border-width',\r\n '--gog-datepicker-panel-gap',\r\n '--gog-datepicker-panel-radius',\r\n '--gog-datepicker-panel-shadow',\r\n '--gog-datepicker-panel-width',\r\n '--gog-datepicker-placeholder-color',\r\n '--gog-datepicker-radius',\r\n '--gog-datepicker-text-color',\r\n '--gog-datepicker-toggle-icon-size',\r\n '--gog-datepicker-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Divider',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-divider-block-spacing',\r\n '--gog-divider-dashed-style',\r\n '--gog-divider-dotted-style',\r\n '--gog-divider-inline-spacing',\r\n '--gog-divider-inset-size',\r\n '--gog-divider-label-color',\r\n '--gog-divider-label-font-family',\r\n '--gog-divider-label-font-size',\r\n '--gog-divider-label-font-weight',\r\n '--gog-divider-label-gap',\r\n '--gog-divider-label-line-height',\r\n '--gog-divider-line-color',\r\n '--gog-divider-line-thickness',\r\n '--gog-divider-solid-style',\r\n '--gog-divider-vertical-length',\r\n ],\r\n },\r\n {\r\n section: 'Icon',\r\n layer: 'component',\r\n tokens: ['--gog-icon-fallback-size'],\r\n },\r\n {\r\n section: 'Input field',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-input-clear-icon-ratio',\r\n '--gog-input-clear-inset',\r\n '--gog-input-clear-line-height',\r\n '--gog-input-clear-radius',\r\n '--gog-input-disabled-opacity',\r\n '--gog-input-error-color',\r\n '--gog-input-error-font-size',\r\n '--gog-input-error-line-height',\r\n '--gog-input-error-offset',\r\n '--gog-input-field-bg',\r\n '--gog-input-field-border',\r\n '--gog-input-field-border-style',\r\n '--gog-input-field-border-width',\r\n '--gog-input-field-color',\r\n '--gog-input-float-label-in-top',\r\n '--gog-input-float-label-over-gap',\r\n '--gog-input-float-label-over-reserve',\r\n '--gog-input-float-label-reserve',\r\n '--gog-input-focus-border',\r\n '--gog-input-focus-glow',\r\n '--gog-input-focus-ring',\r\n '--gog-input-focus-ring-offset',\r\n '--gog-input-focus-ring-width',\r\n '--gog-input-font-family',\r\n '--gog-input-gap',\r\n '--gog-input-icon-action-radius',\r\n '--gog-input-icon-color',\r\n '--gog-input-icon-focus-ring-width',\r\n '--gog-input-icon-hover-color',\r\n '--gog-input-icon-line-height',\r\n '--gog-input-label-color',\r\n '--gog-input-label-font-family',\r\n '--gog-input-label-font-size',\r\n '--gog-input-label-letter-spacing',\r\n '--gog-input-label-line-height',\r\n '--gog-input-label-text-transform',\r\n '--gog-input-placeholder-color',\r\n '--gog-input-radius',\r\n '--gog-input-spin-hover-bg',\r\n '--gog-input-spin-width',\r\n '--gog-input-transition-duration',\r\n '--gog-textarea-clear-icon-ratio',\r\n '--gog-textarea-line-height',\r\n '--gog-textarea-resize-grip-color',\r\n '--gog-textarea-resize-grip-offset',\r\n '--gog-textarea-resize-grip-opacity',\r\n '--gog-textarea-resize-grip-size',\r\n '--gog-textarea-resize-grip-stripe-gap',\r\n '--gog-textarea-resize-grip-stripe-width',\r\n '--gog-textarea-resize-inset-bottom',\r\n '--gog-textarea-resize-inset-right',\r\n ],\r\n },\r\n {\r\n section: 'Multiselect',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-multiselect-actions-gap',\r\n '--gog-multiselect-actions-inset',\r\n '--gog-multiselect-arrow-icon-ratio',\r\n '--gog-multiselect-arrow-transition-duration',\r\n '--gog-multiselect-border-color',\r\n '--gog-multiselect-checkbox-border',\r\n '--gog-multiselect-checkbox-checked-bg',\r\n '--gog-multiselect-clear-icon-ratio',\r\n '--gog-multiselect-clear-line-height',\r\n '--gog-multiselect-clear-radius',\r\n '--gog-multiselect-controls-gap',\r\n '--gog-multiselect-controls-padding',\r\n '--gog-multiselect-disabled-opacity',\r\n '--gog-multiselect-error-color',\r\n '--gog-multiselect-error-font-size',\r\n '--gog-multiselect-error-line-height',\r\n '--gog-multiselect-error-offset',\r\n '--gog-multiselect-field-bg',\r\n '--gog-multiselect-field-border',\r\n '--gog-multiselect-field-border-style',\r\n '--gog-multiselect-field-border-width',\r\n '--gog-multiselect-field-color',\r\n '--gog-multiselect-filter-border-color',\r\n '--gog-multiselect-filter-border-style',\r\n '--gog-multiselect-filter-border-width',\r\n '--gog-multiselect-filter-empty-color',\r\n '--gog-multiselect-filter-empty-padding',\r\n '--gog-multiselect-filter-input-bg',\r\n '--gog-multiselect-filter-input-border',\r\n '--gog-multiselect-filter-input-color',\r\n '--gog-multiselect-filter-input-padding-x',\r\n '--gog-multiselect-filter-input-padding-y',\r\n '--gog-multiselect-filter-input-radius',\r\n '--gog-multiselect-filter-padding',\r\n '--gog-multiselect-float-label-in-top',\r\n '--gog-multiselect-float-label-over-gap',\r\n '--gog-multiselect-float-label-over-reserve',\r\n '--gog-multiselect-float-label-reserve',\r\n '--gog-multiselect-focus-border',\r\n '--gog-multiselect-focus-glow',\r\n '--gog-multiselect-focus-ring',\r\n '--gog-multiselect-focus-ring-offset',\r\n '--gog-multiselect-focus-ring-width',\r\n '--gog-multiselect-font-family',\r\n '--gog-multiselect-gap',\r\n '--gog-multiselect-label-color',\r\n '--gog-multiselect-label-font-family',\r\n '--gog-multiselect-label-font-size',\r\n '--gog-multiselect-label-letter-spacing',\r\n '--gog-multiselect-label-line-height',\r\n '--gog-multiselect-label-text-transform',\r\n '--gog-multiselect-mark-icon-ratio',\r\n '--gog-multiselect-mark-size-ratio',\r\n '--gog-multiselect-min-width',\r\n '--gog-multiselect-option-color',\r\n '--gog-multiselect-option-disabled-opacity',\r\n '--gog-multiselect-option-gap',\r\n '--gog-multiselect-option-gap-inline',\r\n '--gog-multiselect-option-height',\r\n '--gog-multiselect-option-hover-bg',\r\n '--gog-multiselect-option-press-bg',\r\n '--gog-multiselect-option-radius',\r\n '--gog-multiselect-option-transition-duration',\r\n '--gog-multiselect-options-padding',\r\n '--gog-multiselect-overflow-color',\r\n '--gog-multiselect-overflow-font-size',\r\n '--gog-multiselect-overflow-gap',\r\n '--gog-multiselect-overflow-line-height',\r\n '--gog-multiselect-panel-bg',\r\n '--gog-multiselect-panel-border',\r\n '--gog-multiselect-panel-gap',\r\n '--gog-multiselect-panel-max-height',\r\n '--gog-multiselect-panel-max-width',\r\n '--gog-multiselect-panel-radius',\r\n '--gog-multiselect-panel-shadow',\r\n '--gog-multiselect-placeholder-color',\r\n '--gog-multiselect-radius',\r\n '--gog-multiselect-transition-duration',\r\n '--gog-multiselect-value-color',\r\n ],\r\n },\r\n {\r\n section: 'Menu',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-menu-bg',\r\n '--gog-menu-border-color',\r\n '--gog-menu-border-style',\r\n '--gog-menu-border-width',\r\n '--gog-menu-focus-ring',\r\n '--gog-menu-focus-ring-width',\r\n '--gog-menu-font-family',\r\n '--gog-menu-gap',\r\n '--gog-menu-item-color',\r\n '--gog-menu-item-disabled-color',\r\n '--gog-menu-item-disabled-opacity',\r\n '--gog-menu-item-font-size',\r\n '--gog-menu-item-gap',\r\n '--gog-menu-item-hover-bg',\r\n '--gog-menu-item-hover-color',\r\n '--gog-menu-item-icon-size',\r\n '--gog-menu-item-line-height',\r\n '--gog-menu-item-padding',\r\n '--gog-menu-item-press-bg',\r\n '--gog-menu-item-radius',\r\n '--gog-menu-max-height',\r\n '--gog-menu-max-width',\r\n '--gog-menu-min-width',\r\n '--gog-menu-padding',\r\n '--gog-menu-panel-gap',\r\n '--gog-menu-radius',\r\n '--gog-menu-shadow',\r\n '--gog-menu-transition-duration',\r\n '--gog-menu-z',\r\n ],\r\n },\r\n {\r\n section: 'Paginator',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-paginator-ellipsis-color',\r\n '--gog-paginator-ellipsis-font-family',\r\n '--gog-paginator-ellipsis-font-size',\r\n '--gog-paginator-ellipsis-line-height',\r\n '--gog-paginator-ellipsis-min-width',\r\n '--gog-paginator-gap',\r\n '--gog-paginator-page-size-min-width',\r\n ],\r\n },\r\n {\r\n section: 'Panel',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-panel-chevron-size',\r\n '--gog-panel-color',\r\n '--gog-panel-disabled-opacity',\r\n '--gog-panel-elevated-bg',\r\n '--gog-panel-elevated-border-color',\r\n '--gog-panel-filled-bg',\r\n '--gog-panel-filled-border-color',\r\n '--gog-panel-filled-shadow',\r\n '--gog-panel-focus-ring',\r\n '--gog-panel-focus-ring-offset',\r\n '--gog-panel-focus-ring-width',\r\n '--gog-panel-font-family',\r\n '--gog-panel-footer-border-color',\r\n '--gog-panel-footer-gap',\r\n '--gog-panel-footer-padding-top',\r\n '--gog-panel-header-gap',\r\n '--gog-panel-heading-color',\r\n '--gog-panel-heading-font-family',\r\n '--gog-panel-heading-font-size',\r\n '--gog-panel-heading-font-weight',\r\n '--gog-panel-heading-line-height',\r\n '--gog-panel-lg-gap',\r\n '--gog-panel-lg-padding-x',\r\n '--gog-panel-lg-padding-y',\r\n '--gog-panel-md-gap',\r\n '--gog-panel-md-padding-x',\r\n '--gog-panel-md-padding-y',\r\n '--gog-panel-outlined-bg',\r\n '--gog-panel-outlined-border-color',\r\n '--gog-panel-outlined-shadow',\r\n '--gog-panel-slg-gap',\r\n '--gog-panel-slg-padding-x',\r\n '--gog-panel-slg-padding-y',\r\n '--gog-panel-sm-gap',\r\n '--gog-panel-sm-padding-x',\r\n '--gog-panel-sm-padding-y',\r\n '--gog-panel-toggle-color',\r\n '--gog-panel-toggle-hover-bg',\r\n '--gog-panel-toggle-radius',\r\n '--gog-panel-toggle-size',\r\n '--gog-panel-transition-duration',\r\n '--gog-panel-xsm-gap',\r\n '--gog-panel-xsm-padding-x',\r\n '--gog-panel-xsm-padding-y',\r\n ],\r\n },\r\n {\r\n section: 'Progressbar',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-progressbar-accent-bg',\r\n '--gog-progressbar-accent-buffer-bg',\r\n '--gog-progressbar-danger-bg',\r\n '--gog-progressbar-danger-buffer-bg',\r\n '--gog-progressbar-edge-backing-color',\r\n '--gog-progressbar-edge-color',\r\n '--gog-progressbar-edge-width',\r\n '--gog-progressbar-indeterminate-duration',\r\n '--gog-progressbar-indeterminate-easing',\r\n '--gog-progressbar-info-bg',\r\n '--gog-progressbar-info-buffer-bg',\r\n '--gog-progressbar-lg-height',\r\n '--gog-progressbar-md-height',\r\n '--gog-progressbar-radius',\r\n '--gog-progressbar-slg-height',\r\n '--gog-progressbar-sm-height',\r\n '--gog-progressbar-stripe-color',\r\n '--gog-progressbar-stripe-size',\r\n '--gog-progressbar-success-bg',\r\n '--gog-progressbar-success-buffer-bg',\r\n '--gog-progressbar-track-base-bg',\r\n '--gog-progressbar-transition-duration',\r\n '--gog-progressbar-value-color',\r\n '--gog-progressbar-value-font-family',\r\n '--gog-progressbar-value-font-size',\r\n '--gog-progressbar-value-gap',\r\n '--gog-progressbar-value-line-height',\r\n '--gog-progressbar-value-min-width',\r\n '--gog-progressbar-warning-bg',\r\n '--gog-progressbar-warning-buffer-bg',\r\n '--gog-progressbar-xsm-height',\r\n ],\r\n },\r\n {\r\n section: 'Ripple (the `gogRipple` directive; its classes live in ripple.css)',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-ripple-color',\r\n '--gog-ripple-easing',\r\n '--gog-ripple-enter-duration',\r\n '--gog-ripple-exit-duration',\r\n '--gog-ripple-opacity',\r\n ],\r\n },\r\n {\r\n section: 'Scroll',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-scroll-corner-bg',\r\n '--gog-scroll-fade-duration',\r\n '--gog-scroll-focus-ring',\r\n '--gog-scroll-focus-ring-width',\r\n '--gog-scroll-normal-thumb-hit-padding',\r\n '--gog-scroll-normal-thumb-min-size',\r\n '--gog-scroll-normal-track-width',\r\n '--gog-scroll-thin-thumb-hit-padding',\r\n '--gog-scroll-thin-thumb-min-size',\r\n '--gog-scroll-thin-track-width',\r\n '--gog-scroll-thumb-active-bg',\r\n '--gog-scroll-thumb-bg',\r\n '--gog-scroll-thumb-hover-bg',\r\n '--gog-scroll-thumb-inset',\r\n '--gog-scroll-thumb-radius',\r\n '--gog-scroll-track-bg',\r\n '--gog-scroll-track-radius',\r\n ],\r\n },\r\n {\r\n section: 'Select',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-select-chevron-color',\r\n '--gog-select-chevron-icon-ratio',\r\n '--gog-select-chevron-inset',\r\n '--gog-select-clear-color',\r\n '--gog-select-clear-gap',\r\n '--gog-select-clear-hover-color',\r\n '--gog-select-clear-icon-ratio',\r\n '--gog-select-clear-line-height',\r\n '--gog-select-clear-radius',\r\n '--gog-select-control-gap',\r\n '--gog-select-disabled-opacity',\r\n '--gog-select-error-color',\r\n '--gog-select-error-font-size',\r\n '--gog-select-error-line-height',\r\n '--gog-select-field-bg',\r\n '--gog-select-field-border',\r\n '--gog-select-field-border-style',\r\n '--gog-select-field-border-width',\r\n '--gog-select-field-color',\r\n '--gog-select-filter-border-color',\r\n '--gog-select-filter-border-style',\r\n '--gog-select-filter-border-width',\r\n '--gog-select-filter-empty-color',\r\n '--gog-select-filter-empty-padding',\r\n '--gog-select-filter-input-bg',\r\n '--gog-select-filter-input-border',\r\n '--gog-select-filter-input-color',\r\n '--gog-select-filter-input-padding-x',\r\n '--gog-select-filter-input-padding-y',\r\n '--gog-select-filter-input-radius',\r\n '--gog-select-filter-padding',\r\n '--gog-select-float-label-in-top',\r\n '--gog-select-float-label-over-gap',\r\n '--gog-select-float-label-over-reserve',\r\n '--gog-select-float-label-reserve',\r\n '--gog-select-focus-border',\r\n '--gog-select-focus-glow',\r\n '--gog-select-focus-ring',\r\n '--gog-select-focus-ring-offset',\r\n '--gog-select-focus-ring-width',\r\n '--gog-select-font-family',\r\n '--gog-select-gap',\r\n '--gog-select-label-color',\r\n '--gog-select-label-font-family',\r\n '--gog-select-label-font-size',\r\n '--gog-select-label-letter-spacing',\r\n '--gog-select-label-line-height',\r\n '--gog-select-label-text-transform',\r\n '--gog-select-mark-icon-ratio',\r\n '--gog-select-mark-size-ratio',\r\n '--gog-select-min-width',\r\n '--gog-select-option-color',\r\n '--gog-select-option-disabled-opacity',\r\n '--gog-select-option-gap',\r\n '--gog-select-option-height',\r\n '--gog-select-option-hover-bg',\r\n '--gog-select-option-press-bg',\r\n '--gog-select-option-radius',\r\n '--gog-select-option-selected-color',\r\n '--gog-select-option-transition-duration',\r\n '--gog-select-options-padding',\r\n '--gog-select-panel-bg',\r\n '--gog-select-panel-gap',\r\n '--gog-select-panel-max-height',\r\n '--gog-select-panel-max-width',\r\n '--gog-select-panel-radius',\r\n '--gog-select-panel-shadow',\r\n '--gog-select-placeholder-color',\r\n '--gog-select-radius',\r\n '--gog-select-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Skeleton',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-skeleton-base',\r\n '--gog-skeleton-circle-size-lg',\r\n '--gog-skeleton-circle-size-md',\r\n '--gog-skeleton-circle-size-slg',\r\n '--gog-skeleton-circle-size-sm',\r\n '--gog-skeleton-circle-size-xsm',\r\n '--gog-skeleton-line-gap',\r\n '--gog-skeleton-line-height-lg',\r\n '--gog-skeleton-line-height-md',\r\n '--gog-skeleton-line-height-slg',\r\n '--gog-skeleton-line-height-sm',\r\n '--gog-skeleton-line-height-xsm',\r\n '--gog-skeleton-line-radius',\r\n '--gog-skeleton-pulse-duration',\r\n '--gog-skeleton-pulse-min-opacity',\r\n '--gog-skeleton-radius',\r\n '--gog-skeleton-rect-height-lg',\r\n '--gog-skeleton-rect-height-md',\r\n '--gog-skeleton-rect-height-slg',\r\n '--gog-skeleton-rect-height-sm',\r\n '--gog-skeleton-rect-height-xsm',\r\n '--gog-skeleton-shine',\r\n '--gog-skeleton-short-line-width',\r\n '--gog-skeleton-square-radius',\r\n '--gog-skeleton-wave-duration',\r\n ],\r\n },\r\n {\r\n section: 'Slider',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-slider-auto-width',\r\n '--gog-slider-disabled-opacity',\r\n '--gog-slider-error-color',\r\n '--gog-slider-error-font-family',\r\n '--gog-slider-error-font-size',\r\n '--gog-slider-error-line-height',\r\n '--gog-slider-fill-bg',\r\n '--gog-slider-focus-ring',\r\n '--gog-slider-focus-ring-width',\r\n '--gog-slider-gap',\r\n '--gog-slider-label-color',\r\n '--gog-slider-label-font-family',\r\n '--gog-slider-label-font-size',\r\n '--gog-slider-label-letter-spacing',\r\n '--gog-slider-label-line-height',\r\n '--gog-slider-label-text-transform',\r\n '--gog-slider-range-color',\r\n '--gog-slider-range-font-size',\r\n '--gog-slider-range-line-height',\r\n '--gog-slider-thumb-bg',\r\n '--gog-slider-thumb-border',\r\n '--gog-slider-thumb-border-width',\r\n '--gog-slider-thumb-glow-color',\r\n '--gog-slider-thumb-glow-size',\r\n '--gog-slider-thumb-radius',\r\n '--gog-slider-thumb-size',\r\n '--gog-slider-track-area-height',\r\n '--gog-slider-track-bg',\r\n '--gog-slider-track-border-color',\r\n '--gog-slider-track-border-style',\r\n '--gog-slider-track-border-width',\r\n '--gog-slider-track-height',\r\n '--gog-slider-track-radius',\r\n '--gog-slider-value-color',\r\n '--gog-slider-value-font-family',\r\n '--gog-slider-value-font-size',\r\n '--gog-slider-value-line-height',\r\n '--gog-slider-value-min-width',\r\n '--gog-slider-vertical-length',\r\n ],\r\n },\r\n {\r\n section: 'Spinner',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-spinner-arc-inner-color',\r\n '--gog-spinner-arc-inner-dash',\r\n '--gog-spinner-arc-inner-glow',\r\n '--gog-spinner-arc-inner-opacity',\r\n '--gog-spinner-arc-inner-pulse-opacity',\r\n '--gog-spinner-arc-inner-stroke-compact',\r\n '--gog-spinner-arc-outer-color',\r\n '--gog-spinner-arc-outer-dash',\r\n '--gog-spinner-arc-outer-glow',\r\n '--gog-spinner-arc-outer-pulse-opacity',\r\n '--gog-spinner-diamond-color',\r\n '--gog-spinner-diamond-glow',\r\n '--gog-spinner-diamond-opacity',\r\n '--gog-spinner-glow-color',\r\n '--gog-spinner-overlay-blur',\r\n '--gog-spinner-overlay-fade-duration',\r\n '--gog-spinner-pulse-duration',\r\n '--gog-spinner-ring-duration',\r\n '--gog-spinner-ring-glow',\r\n '--gog-spinner-ring-padding',\r\n '--gog-spinner-rune-color',\r\n '--gog-spinner-rune-font-family',\r\n '--gog-spinner-rune-glow',\r\n '--gog-spinner-rune-pulse-opacity',\r\n '--gog-spinner-spin-duration',\r\n '--gog-spinner-spin-slow-duration',\r\n '--gog-spinner-ticks-duration',\r\n '--gog-spinner-track-color',\r\n '--gog-spinner-track-opacity',\r\n ],\r\n },\r\n {\r\n section: 'Table',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-table-accent-bright',\r\n '--gog-table-accent-color',\r\n '--gog-table-border-color',\r\n '--gog-table-border-style',\r\n '--gog-table-border-width',\r\n '--gog-table-empty-font-size',\r\n '--gog-table-empty-line-height',\r\n '--gog-table-empty-padding',\r\n '--gog-table-focus-ring',\r\n '--gog-table-focus-ring-width',\r\n '--gog-table-font-family',\r\n '--gog-table-footer-gap',\r\n '--gog-table-footer-min-height',\r\n '--gog-table-gap',\r\n '--gog-table-header-bg',\r\n '--gog-table-header-font-family',\r\n '--gog-table-header-letter-spacing',\r\n '--gog-table-header-text-transform',\r\n '--gog-table-hover-bg',\r\n '--gog-table-lg-padding-v',\r\n '--gog-table-lg-td-font-size',\r\n '--gog-table-lg-th-font-size',\r\n '--gog-table-loading-opacity',\r\n '--gog-table-loading-padding',\r\n '--gog-table-md-padding-v',\r\n '--gog-table-md-td-font-size',\r\n '--gog-table-md-th-font-size',\r\n '--gog-table-muted-color',\r\n '--gog-table-num-col-width',\r\n '--gog-table-num-font-size',\r\n '--gog-table-num-line-height',\r\n '--gog-table-numeric-font-family',\r\n '--gog-table-padding-h',\r\n '--gog-table-row-border-width',\r\n '--gog-table-row-press-bg',\r\n '--gog-table-row-transition-duration',\r\n '--gog-table-select-col-width',\r\n '--gog-table-selected-bg',\r\n '--gog-table-slg-padding-v',\r\n '--gog-table-slg-td-font-size',\r\n '--gog-table-slg-th-font-size',\r\n '--gog-table-sm-padding-v',\r\n '--gog-table-sm-td-font-size',\r\n '--gog-table-sm-th-font-size',\r\n '--gog-table-sort-icon-opacity',\r\n '--gog-table-sort-icon-size',\r\n '--gog-table-sort-icon-width',\r\n '--gog-table-surface',\r\n '--gog-table-td-line-height',\r\n '--gog-table-text-color',\r\n '--gog-table-th-inner-gap',\r\n '--gog-table-th-line-height',\r\n '--gog-table-total-font-size',\r\n '--gog-table-total-letter-spacing',\r\n '--gog-table-total-line-height',\r\n '--gog-table-total-text-transform',\r\n '--gog-table-xsm-padding-v',\r\n '--gog-table-xsm-td-font-size',\r\n '--gog-table-xsm-th-font-size',\r\n ],\r\n },\r\n {\r\n section: 'Tabs',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-tabs-active-color',\r\n '--gog-tabs-disabled-opacity',\r\n '--gog-tabs-focus-ring-color',\r\n '--gog-tabs-focus-ring-offset',\r\n '--gog-tabs-focus-ring-width',\r\n '--gog-tabs-font-family',\r\n '--gog-tabs-font-weight',\r\n '--gog-tabs-gap',\r\n '--gog-tabs-header-border-color',\r\n '--gog-tabs-header-border-style',\r\n '--gog-tabs-header-border-width',\r\n '--gog-tabs-hover-color',\r\n '--gog-tabs-icon-size',\r\n '--gog-tabs-indicator-color',\r\n '--gog-tabs-indicator-radius',\r\n '--gog-tabs-indicator-thickness',\r\n '--gog-tabs-letter-spacing',\r\n '--gog-tabs-lg-font-size',\r\n '--gog-tabs-lg-padding',\r\n '--gog-tabs-line-height',\r\n '--gog-tabs-md-font-size',\r\n '--gog-tabs-md-padding',\r\n '--gog-tabs-panel-color',\r\n '--gog-tabs-panel-padding',\r\n '--gog-tabs-press-bg',\r\n '--gog-tabs-press-color',\r\n '--gog-tabs-rest-bg',\r\n '--gog-tabs-rest-color',\r\n '--gog-tabs-slg-font-size',\r\n '--gog-tabs-slg-padding',\r\n '--gog-tabs-sm-font-size',\r\n '--gog-tabs-sm-padding',\r\n '--gog-tabs-tab-gap',\r\n '--gog-tabs-text-transform',\r\n '--gog-tabs-transition-duration',\r\n '--gog-tabs-xsm-font-size',\r\n '--gog-tabs-xsm-padding',\r\n ],\r\n },\r\n {\r\n section: 'Tag',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-tag-bg-base',\r\n '--gog-tag-bg-mix',\r\n '--gog-tag-border-style',\r\n '--gog-tag-border-width',\r\n '--gog-tag-color-base',\r\n '--gog-tag-color-mix',\r\n '--gog-tag-danger-color',\r\n '--gog-tag-default-color',\r\n '--gog-tag-font-family',\r\n '--gog-tag-font-weight',\r\n '--gog-tag-info-color',\r\n '--gog-tag-inner-border-width',\r\n '--gog-tag-lg-font-size',\r\n '--gog-tag-lg-gap',\r\n '--gog-tag-lg-icon-size',\r\n '--gog-tag-lg-padding-block',\r\n '--gog-tag-lg-padding-inline',\r\n '--gog-tag-line-height',\r\n '--gog-tag-md-font-size',\r\n '--gog-tag-md-gap',\r\n '--gog-tag-md-icon-size',\r\n '--gog-tag-md-padding-block',\r\n '--gog-tag-md-padding-inline',\r\n '--gog-tag-pill-radius',\r\n '--gog-tag-radius',\r\n '--gog-tag-slg-font-size',\r\n '--gog-tag-slg-gap',\r\n '--gog-tag-slg-icon-size',\r\n '--gog-tag-slg-padding-block',\r\n '--gog-tag-slg-padding-inline',\r\n '--gog-tag-sm-font-size',\r\n '--gog-tag-sm-gap',\r\n '--gog-tag-sm-icon-size',\r\n '--gog-tag-sm-padding-block',\r\n '--gog-tag-sm-padding-inline',\r\n '--gog-tag-success-color',\r\n '--gog-tag-warning-color',\r\n '--gog-tag-xsm-font-size',\r\n '--gog-tag-xsm-gap',\r\n '--gog-tag-xsm-icon-size',\r\n '--gog-tag-xsm-padding-block',\r\n '--gog-tag-xsm-padding-inline',\r\n ],\r\n },\r\n {\r\n section: 'Toast',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-toast-accent-width',\r\n '--gog-toast-action-font-size',\r\n '--gog-toast-action-line-height',\r\n '--gog-toast-action-padding',\r\n '--gog-toast-actions-gap',\r\n '--gog-toast-bg',\r\n '--gog-toast-border',\r\n '--gog-toast-close-font-size',\r\n '--gog-toast-close-line-height',\r\n '--gog-toast-close-padding',\r\n '--gog-toast-color',\r\n '--gog-toast-content-gap',\r\n '--gog-toast-error-color',\r\n '--gog-toast-font-family',\r\n '--gog-toast-icon-color',\r\n '--gog-toast-icon-line-height',\r\n '--gog-toast-icon-size',\r\n '--gog-toast-info-color',\r\n '--gog-toast-main-gap',\r\n '--gog-toast-message-font-size',\r\n '--gog-toast-message-line-height',\r\n '--gog-toast-padding',\r\n '--gog-toast-progress-height',\r\n '--gog-toast-progress-opacity',\r\n '--gog-toast-radius',\r\n '--gog-toast-stack-expanded-gap',\r\n '--gog-toast-stack-max-depth',\r\n '--gog-toast-stack-min-opacity',\r\n '--gog-toast-stack-opacity-step',\r\n '--gog-toast-stack-peek',\r\n '--gog-toast-stack-scale-step',\r\n '--gog-toast-success-color',\r\n '--gog-toast-transition-duration',\r\n '--gog-toast-warning-color',\r\n ],\r\n },\r\n {\r\n section: 'Toggle',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-toggle-border-color',\r\n '--gog-toggle-border-style',\r\n '--gog-toggle-border-width',\r\n '--gog-toggle-disabled-opacity',\r\n '--gog-toggle-focus-ring-color',\r\n '--gog-toggle-focus-ring-offset',\r\n '--gog-toggle-focus-ring-width',\r\n '--gog-toggle-font-family',\r\n '--gog-toggle-gap',\r\n '--gog-toggle-label-color',\r\n '--gog-toggle-label-line-height',\r\n '--gog-toggle-lg-label-size',\r\n '--gog-toggle-lg-state-font-size',\r\n '--gog-toggle-lg-thumb-size',\r\n '--gog-toggle-lg-track-height',\r\n '--gog-toggle-lg-track-width',\r\n '--gog-toggle-md-label-size',\r\n '--gog-toggle-md-state-font-size',\r\n '--gog-toggle-md-thumb-size',\r\n '--gog-toggle-md-track-height',\r\n '--gog-toggle-md-track-width',\r\n '--gog-toggle-on-border-color',\r\n '--gog-toggle-radius',\r\n '--gog-toggle-slg-label-size',\r\n '--gog-toggle-slg-state-font-size',\r\n '--gog-toggle-slg-thumb-size',\r\n '--gog-toggle-slg-track-height',\r\n '--gog-toggle-slg-track-width',\r\n '--gog-toggle-sm-label-size',\r\n '--gog-toggle-sm-state-font-size',\r\n '--gog-toggle-sm-thumb-size',\r\n '--gog-toggle-sm-track-height',\r\n '--gog-toggle-sm-track-width',\r\n '--gog-toggle-state-color',\r\n '--gog-toggle-state-font-weight',\r\n '--gog-toggle-state-letter-spacing',\r\n '--gog-toggle-state-line-height',\r\n '--gog-toggle-state-offset',\r\n '--gog-toggle-state-padding-inline',\r\n '--gog-toggle-state-thumb-gap',\r\n '--gog-toggle-thumb-inset',\r\n '--gog-toggle-thumb-off-bg',\r\n '--gog-toggle-thumb-on-bg',\r\n '--gog-toggle-track-off-bg',\r\n '--gog-toggle-track-on-bg',\r\n '--gog-toggle-transition-duration',\r\n '--gog-toggle-xsm-label-size',\r\n '--gog-toggle-xsm-state-font-size',\r\n '--gog-toggle-xsm-thumb-size',\r\n '--gog-toggle-xsm-track-height',\r\n '--gog-toggle-xsm-track-width',\r\n ],\r\n },\r\n {\r\n section: 'Tooltip',\r\n layer: 'component',\r\n tokens: [\r\n '--gog-tooltip-arrow-size',\r\n '--gog-tooltip-bg',\r\n '--gog-tooltip-border-color',\r\n '--gog-tooltip-border-style',\r\n '--gog-tooltip-border-width',\r\n '--gog-tooltip-color',\r\n '--gog-tooltip-font-family',\r\n '--gog-tooltip-font-size',\r\n '--gog-tooltip-gap',\r\n '--gog-tooltip-line-height',\r\n '--gog-tooltip-max-height',\r\n '--gog-tooltip-max-width',\r\n '--gog-tooltip-padding',\r\n '--gog-tooltip-radius',\r\n '--gog-tooltip-shadow',\r\n '--gog-tooltip-transition-duration',\r\n ],\r\n },\r\n {\r\n section: 'Instance (deliberately undeclared)',\r\n layer: 'instance',\r\n tokens: [\r\n '--gog-accordion-body-font-size',\r\n '--gog-accordion-body-padding-bottom',\r\n '--gog-accordion-body-padding-top',\r\n '--gog-accordion-chevron-font-size',\r\n '--gog-accordion-chevron-size',\r\n '--gog-accordion-content-gap',\r\n '--gog-accordion-font-size',\r\n '--gog-accordion-letter-spacing',\r\n '--gog-accordion-padding-x',\r\n '--gog-accordion-padding-y',\r\n '--gog-autocomplete-bg',\r\n '--gog-autocomplete-color',\r\n '--gog-autocomplete-float-label-on-bg',\r\n '--gog-autocomplete-font-size',\r\n '--gog-autocomplete-padding-x',\r\n '--gog-autocomplete-padding-y',\r\n '--gog-badge-bg',\r\n '--gog-badge-color',\r\n '--gog-button-bg',\r\n '--gog-button-border',\r\n '--gog-button-color',\r\n '--gog-button-hover-bg',\r\n '--gog-button-hover-color',\r\n '--gog-button-hover-shadow',\r\n '--gog-button-press-bg',\r\n '--gog-button-press-color',\r\n '--gog-button-shadow',\r\n '--gog-button-spinner-color',\r\n '--gog-button-toggle-bg',\r\n '--gog-button-toggle-color',\r\n '--gog-button-toggle-font-size',\r\n '--gog-button-toggle-padding',\r\n '--gog-button-toggled-shadow',\r\n '--gog-calendar-day-bg',\r\n '--gog-calendar-day-color',\r\n '--gog-calendar-day-size',\r\n '--gog-card-bg',\r\n '--gog-card-border-color',\r\n '--gog-card-gap',\r\n '--gog-card-padding-x',\r\n '--gog-card-padding-y',\r\n '--gog-card-shadow',\r\n '--gog-checkbox-box-size',\r\n '--gog-checkbox-icon-size',\r\n '--gog-checkbox-label-size',\r\n '--gog-checkbox-padding',\r\n '--gog-chip-avatar-size',\r\n '--gog-chip-font-size',\r\n '--gog-chip-gap',\r\n '--gog-chip-icon-size',\r\n '--gog-chip-padding-block',\r\n '--gog-chip-padding-inline',\r\n '--gog-chip-remove-size',\r\n '--gog-datepicker-bg',\r\n '--gog-datepicker-color',\r\n '--gog-datepicker-float-label-on-bg',\r\n '--gog-datepicker-font-size',\r\n '--gog-datepicker-padding-x',\r\n '--gog-datepicker-padding-y',\r\n '--gog-dialog-offset-x',\r\n '--gog-dialog-offset-y',\r\n '--gog-divider-color',\r\n '--gog-divider-spacing',\r\n '--gog-divider-thickness',\r\n '--gog-input-float-label-on-bg',\r\n '--gog-input-font',\r\n '--gog-input-padding-x',\r\n '--gog-input-padding-y',\r\n '--gog-menu-available-height',\r\n '--gog-multiselect-float-label-on-bg',\r\n '--gog-multiselect-font-size',\r\n '--gog-multiselect-padding-x',\r\n '--gog-multiselect-padding-y',\r\n '--gog-panel-bg',\r\n '--gog-panel-border-color',\r\n '--gog-panel-gap',\r\n '--gog-panel-padding-x',\r\n '--gog-panel-padding-y',\r\n '--gog-progressbar-buffer-bg',\r\n '--gog-progressbar-fill-bg',\r\n '--gog-progressbar-height',\r\n '--gog-progressbar-track-bg',\r\n '--gog-radio-box-size',\r\n '--gog-radio-label-size',\r\n '--gog-radio-padding',\r\n '--gog-select-control-font',\r\n '--gog-select-control-padding-x',\r\n '--gog-select-control-padding-y',\r\n '--gog-select-float-label-on-bg',\r\n '--gog-table-td-font-size',\r\n '--gog-table-td-padding-v',\r\n '--gog-table-th-font-size',\r\n '--gog-table-th-padding-v',\r\n '--gog-tabs-tab-bg',\r\n '--gog-tabs-tab-color',\r\n '--gog-tabs-tab-font-size',\r\n '--gog-tabs-tab-padding',\r\n '--gog-tag-accent',\r\n '--gog-tag-bg',\r\n '--gog-tag-border',\r\n '--gog-tag-color',\r\n '--gog-tag-font-size',\r\n '--gog-tag-gap',\r\n '--gog-tag-icon-size',\r\n '--gog-tag-padding-block',\r\n '--gog-tag-padding-inline',\r\n '--gog-textarea-scrollbar-width',\r\n '--gog-toggle-padding',\r\n '--gog-toggle-thumb-bg',\r\n '--gog-toggle-track-bg',\r\n ],\r\n },\r\n];\r\n","/**\n * Reading a `--gog-*` token's value from TypeScript, safely.\n *\n * **The trap these exist for.** `getComputedStyle(el).getPropertyValue('--x')` returns a custom\n * property's *specified* value, not a used one. A token declared\n * `calc(10px * var(--gog-density))` comes back as that whole string, and `Number.parseFloat` on\n * it returns `NaN` — which every caller in this library turned into its fallback, silently. No\n * error, no failing test, just a component quietly using the wrong number.\n *\n * That is not hypothetical. 21.7.0's density scale (`docs/themes.md` iteration 6) made 178\n * tokens `calc(<n>px * var(--gog-density))`; none of the three tokens read from TypeScript were\n * among them, but nothing stopped the next one from being. And a **consumer** can write\n * `--gog-scroll-thumb-min-size: calc(2rem + 4px)` in their own theme at any time, which no\n * repo-side check could ever catch.\n *\n * So these resolve rather than parse: the fast path still handles a plain `12px`, and anything\n * else is handed to the browser on a throwaway element, which also gets `rem`, `em`, `%` and\n * nested `var()` right for free. The probe is appended to the element the token was read from,\n * so relative units resolve against the same context the real value would.\n */\n\n/** Reads a length token in pixels. Returns `fallback` for an empty, unparseable or zero value. */\nexport function resolveLengthToken(el: HTMLElement, token: string, fallback: number): number {\n const raw = getComputedStyle(el).getPropertyValue(token).trim();\n if (!raw) return fallback;\n\n const plain = PX.exec(raw);\n if (plain) return Number.parseFloat(plain[1]);\n\n return probe(el, `width:${raw}`, (style) => readPx(style.width), fallback);\n}\n\n/**\n * Reads a unitless numeric token (a `z-index`). Same resolution path as lengths — `z-index`\n * takes an integer, so the browser computes `calc()` there too.\n */\nexport function resolveNumberToken(el: HTMLElement, token: string, fallback: number): number {\n const raw = getComputedStyle(el).getPropertyValue(token).trim();\n if (!raw) return fallback;\n\n const plain = NUMBER.exec(raw);\n if (plain) return Number.parseFloat(plain[1]);\n\n return probe(\n el,\n `position:relative;z-index:${raw}`,\n (s) => {\n const resolved = NUMBER.exec(s.zIndex.trim());\n return resolved ? Number.parseFloat(resolved[1]) : Number.NaN;\n },\n fallback,\n );\n}\n\nconst PX = /^(-?\\d*\\.?\\d+)px$/;\nconst NUMBER = /^(-?\\d*\\.?\\d+)$/;\n\n/**\n * A computed length, but only if it really was computed.\n *\n * An environment with no layout engine — jsdom, which is what this library's own unit tests run\n * in — hands back the *specified* string from `getComputedStyle`, so a probe styled `width: 2em`\n * reads back `\"2em\"`, and `parseFloat` would happily call that `2`. A wrong number is worse than\n * the fallback, so anything that is not a resolved pixel value is rejected.\n */\nfunction readPx(value: string): number {\n const m = PX.exec(value.trim());\n return m ? Number.parseFloat(m[1]) : Number.NaN;\n}\n\n/**\n * Measures `declaration` on a hidden child of `host` and reads the result back.\n *\n * `visibility: hidden` rather than `display: none`, because a `display: none` element has no\n * used value to read — that is the whole failure this helper exists to avoid. `position:\n * absolute` keeps it out of the host's layout, so a flex or grid host is not disturbed by the\n * measurement.\n */\nfunction probe(\n host: HTMLElement,\n declaration: string,\n read: (style: CSSStyleDeclaration) => number,\n fallback: number,\n): number {\n const doc = host.ownerDocument;\n if (!doc?.defaultView) return fallback;\n\n const el = doc.createElement('div');\n el.style.cssText = `position:absolute;visibility:hidden;pointer-events:none;${declaration}`;\n host.appendChild(el);\n let value: number;\n try {\n value = read(doc.defaultView.getComputedStyle(el));\n } finally {\n el.remove();\n }\n return Number.isFinite(value) ? value : fallback;\n}\n","import { GogTooltipPosition } from './types';\r\n\r\nexport type GogTooltipSide = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n/** Writing direction of the element a placement is resolved against. */\r\nexport type GogWritingDirection = 'ltr' | 'rtl';\r\n\r\nexport interface GogTooltipTargetRect {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n right: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface GogTooltipSize {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface GogTooltipViewport {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface GogTooltipPlacement {\r\n side: GogTooltipSide;\r\n top: number;\r\n left: number;\r\n}\r\n\r\nconst DEFAULT_GAP = 8;\r\nconst DEFAULT_VIEWPORT_PADDING = 8;\r\n\r\nfunction spaceFor(\r\n side: GogTooltipSide,\r\n target: GogTooltipTargetRect,\r\n viewport: GogTooltipViewport,\r\n): number {\r\n switch (side) {\r\n case 'top':\r\n return target.top;\r\n case 'bottom':\r\n return viewport.height - target.bottom;\r\n case 'left':\r\n return target.left;\r\n case 'right':\r\n return viewport.width - target.right;\r\n }\r\n}\r\n\r\nfunction fits(\r\n side: GogTooltipSide,\r\n target: GogTooltipTargetRect,\r\n bubble: GogTooltipSize,\r\n viewport: GogTooltipViewport,\r\n gap: number,\r\n viewportPadding: number,\r\n): boolean {\r\n const needed =\r\n (side === 'top' || side === 'bottom' ? bubble.height : bubble.width) + gap + viewportPadding;\r\n return spaceFor(side, target, viewport) >= needed;\r\n}\r\n\r\nconst OPPOSITE: Record<GogTooltipSide, GogTooltipSide> = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n left: 'right',\r\n right: 'left',\r\n};\r\n\r\n/**\r\n * Picks which side the bubble renders on. `'auto'` tries top, bottom, then the two horizontal\r\n * sides — top-first matches the conventional tooltip default — and falls back to whichever\r\n * side has the most room if the bubble doesn't fully fit anywhere. An explicit side flips to\r\n * its opposite when it has no room but the opposite does, same as `resolveDropdownDirection`\r\n * does for up/down; unlike that helper, a request for a specific side is honoured as-is\r\n * (no flip) whenever it fits, since the caller asked for that side deliberately.\r\n *\r\n * **`direction` mirrors the horizontal preference only.** In RTL, `'auto'` prefers the left\r\n * side where LTR prefers the right, so a tooltip opens away from the text it belongs to in the\r\n * same way in both. An explicit `'left'`/`'right'` is *not* mirrored: those are physical words\r\n * in a physical API, and a consumer who wrote `position=\"right\"` meant the right of the screen.\r\n * `'start'`/`'end'` would be the logical spelling, and there is deliberately no such value —\r\n * `'auto'` already does the right thing for a direction-aware layout.\r\n */\r\nexport function resolveTooltipSide(\r\n position: GogTooltipPosition,\r\n target: GogTooltipTargetRect,\r\n bubble: GogTooltipSize,\r\n viewport: GogTooltipViewport,\r\n gap = DEFAULT_GAP,\r\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\r\n direction: GogWritingDirection = 'ltr',\r\n): GogTooltipSide {\r\n if (position !== 'auto') {\r\n if (fits(position, target, bubble, viewport, gap, viewportPadding)) return position;\r\n const opposite = OPPOSITE[position];\r\n return fits(opposite, target, bubble, viewport, gap, viewportPadding) ? opposite : position;\r\n }\r\n\r\n const preferenceOrder: GogTooltipSide[] =\r\n direction === 'rtl' ? ['top', 'bottom', 'left', 'right'] : ['top', 'bottom', 'right', 'left'];\r\n const fitting = preferenceOrder.find((side) =>\r\n fits(side, target, bubble, viewport, gap, viewportPadding),\r\n );\r\n if (fitting) return fitting;\r\n\r\n return preferenceOrder.reduce((best, side) =>\r\n spaceFor(side, target, viewport) > spaceFor(best, target, viewport) ? side : best,\r\n );\r\n}\r\n\r\n/**\r\n * Resolves the bubble's side and its `position: fixed` top/left, centered on the target's\r\n * midpoint along the cross axis and clamped so it never renders past the viewport edge —\r\n * the centering can push it there for a target near a corner.\r\n */\r\nexport function resolveTooltipPlacement(\r\n position: GogTooltipPosition,\r\n target: GogTooltipTargetRect,\r\n bubble: GogTooltipSize,\r\n viewport: GogTooltipViewport,\r\n gap = DEFAULT_GAP,\r\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\r\n direction: GogWritingDirection = 'ltr',\r\n): GogTooltipPlacement {\r\n const side = resolveTooltipSide(\r\n position,\r\n target,\r\n bubble,\r\n viewport,\r\n gap,\r\n viewportPadding,\r\n direction,\r\n );\r\n\r\n const centerX = target.left + target.width / 2;\r\n const centerY = target.top + target.height / 2;\r\n\r\n let top: number;\r\n let left: number;\r\n\r\n switch (side) {\r\n case 'top':\r\n top = target.top - gap - bubble.height;\r\n left = centerX - bubble.width / 2;\r\n break;\r\n case 'bottom':\r\n top = target.bottom + gap;\r\n left = centerX - bubble.width / 2;\r\n break;\r\n case 'left':\r\n top = centerY - bubble.height / 2;\r\n left = target.left - gap - bubble.width;\r\n break;\r\n case 'right':\r\n top = centerY - bubble.height / 2;\r\n left = target.right + gap;\r\n break;\r\n }\r\n\r\n const maxLeft = Math.max(viewportPadding, viewport.width - bubble.width - viewportPadding);\r\n const maxTop = Math.max(viewportPadding, viewport.height - bubble.height - viewportPadding);\r\n left = Math.min(Math.max(left, viewportPadding), maxLeft);\r\n top = Math.min(Math.max(top, viewportPadding), maxTop);\r\n\r\n return { side, top, left };\r\n}\r\n","import { Signal, computed, signal } from '@angular/core';\n\nimport type { GogVirtualRange } from './virtual-window';\n\n/** What `GogVariableWindow` needs. Every input is a signal it reads. */\nexport interface GogVariableWindowInputs {\n /** How many rows the list has in total — not how many are rendered. */\n readonly count: Signal<number>;\n /**\n * The height in px to assume for a row that has never been measured.\n *\n * Seeded from the first row the caller measures rather than from a token: `gog-table`'s row\n * height is padding plus leading plus a border, and `docs/virtualization.md`'s iteration 0\n * measured the equivalent token wrong in all eleven shipped themes.\n */\n readonly estimatedRowHeight: Signal<number>;\n /** The scroller's visible height in px. Not a `max-height`, which is a cap. */\n readonly viewportHeight: Signal<number>;\n /** How far the scroller is scrolled, in px. */\n readonly scrollTop: Signal<number>;\n /**\n * Rows rendered beyond each edge of the viewport, so a scroll does not expose blank space\n * before the next frame lands. Defaults to 4.\n */\n readonly overscan?: number;\n}\n\nconst DEFAULT_OVERSCAN = 4;\n\n/**\n * The arithmetic behind a windowed list whose rows are **not** all the same height.\n *\n * `GogVirtualWindow` is the one to reach for wherever the rows are uniform — it is exact, it needs\n * no measurements, and a multiplication beats a binary search. This exists because `gog-table`\n * cannot use it, for a reason that is a fact about CSS rather than about this library:\n *\n * **A table row's height cannot be pinned.** `height` on a `<tr>` or a `<td>` is a *minimum* in\n * table layout, so a cell whose content wraps makes its row taller and nothing can stop it — one\n * cell taken from 40 to 600 characters measured 39px → 173.75px, under `table-layout: fixed`, with\n * the column width unchanged. A single-pitch window cannot describe that list.\n *\n * So this holds a height per row: the measured one where a row has ever been rendered, and an\n * estimate everywhere else. `range()` is then a binary search over the prefix sums rather than a\n * division.\n *\n * **Being an estimate is the whole difficulty**, and it lives in `applyMeasurements`, not here.\n * See its note: correcting a row *above* the viewport moves everything below it, under the reader,\n * while they scroll — so the correction has to be reported as a scroll delta and applied in the\n * same frame.\n *\n * @see docs/table-virtualization.md — the survey behind this, and what adopting it has to get right\n */\nexport class GogVariableWindow {\n private readonly overscan: number;\n\n /**\n * Measured heights by row index, `undefined` where a row has never been rendered.\n *\n * A sparse array rather than a `Map`: the index *is* the key, the reads are sequential, and the\n * prefix sum walks it start to finish either way.\n */\n private readonly measured = signal<readonly (number | undefined)[]>([]);\n\n constructor(private readonly inputs: GogVariableWindowInputs) {\n this.overscan = Math.max(0, Math.trunc(inputs.overscan ?? DEFAULT_OVERSCAN));\n }\n\n /**\n * Running total of row heights: `offsets[i]` is where row `i` starts, and `offsets[count]` is\n * the list's full height.\n *\n * Recomputed whole rather than patched. It is O(n) on a signal that changes only when a\n * measurement actually differs, and an incremental structure here would be a Fenwick tree\n * guarding a loop that costs a fraction of the layout it feeds.\n */\n private readonly offsets = computed<readonly number[]>(() => {\n const count = this.safeCount();\n const estimate = this.safeEstimate();\n const measured = this.measured();\n\n const offsets = new Array<number>(count + 1);\n offsets[0] = 0;\n for (let i = 0; i < count; i++) {\n const height = measured[i];\n offsets[i + 1] = offsets[i] + (height === undefined ? estimate : height);\n }\n return offsets;\n });\n\n /** What the scroller has to believe, so its thumb is the right size. */\n readonly totalHeight = computed(() => {\n const offsets = this.offsets();\n return offsets[offsets.length - 1] ?? 0;\n });\n\n /**\n * The slice worth rendering.\n *\n * **Degrades to the whole list rather than to nothing**, the same rule `GogVirtualWindow`\n * follows and for the same reason: a caller that has not measured anything yet has an estimate\n * of zero, and a window computed from it renders an empty panel that reads as broken. Rendering\n * everything is the pre-window behaviour — slow, and correct.\n */\n readonly range = computed<GogVirtualRange>(() => {\n const count = this.safeCount();\n if (count === 0) return { start: 0, end: 0 };\n\n const viewportHeight = this.safeViewportHeight();\n if (viewportHeight === 0 || this.totalHeight() === 0) return { start: 0, end: count };\n\n const offsets = this.offsets();\n const scrollTop = this.safeScrollTop();\n\n const first = this.indexAt(offsets, scrollTop);\n const last = this.indexAt(offsets, scrollTop + viewportHeight);\n\n return {\n start: Math.max(0, first - this.overscan),\n // `last` is the row the viewport's bottom edge falls in, so it is rendered: +1 for the\n // exclusive end, and another because a viewport that ends exactly on a boundary still\n // straddles the next row the moment it moves by a fraction of a pixel.\n end: Math.min(count, last + 1 + this.overscan),\n };\n });\n\n /** Filler above the rendered slice, in px, so the rows sit where their offsets say. */\n readonly padBefore = computed(() => this.offsets()[this.range().start] ?? 0);\n\n /** Filler below, in px. Derived from the total so rounding cannot leave a gap. */\n readonly padAfter = computed(() =>\n Math.max(0, this.totalHeight() - (this.offsets()[this.range().end] ?? 0)),\n );\n\n /**\n * Records what the rendered rows actually measured, and returns **how far the content above the\n * viewport moved** — which the caller must add to the scroller's `scrollTop`, in the same frame.\n *\n * This is the whole difficulty of a variable window, and it is not obvious from the arithmetic.\n * Every row starts as an estimate. The moment one is measured and disagrees, every row after it\n * shifts by the difference — including, when the corrected row is *above* the viewport, the rows\n * the reader is looking at. Scroll up into a region of taller-than-estimated rows and the\n * content jumps away from the pointer on every frame; the list appears to fight the scroll.\n *\n * Adding the delta back to `scrollTop` holds the visible rows still: the content moved down by\n * `delta`, so the viewport moves down by `delta` too and the same pixels stay under the reader.\n *\n * `heights[i]` is keyed by **real row index**, and a `0` or a negative is ignored rather than\n * stored — an unlaid-out row measures zero, and believing it would collapse the list.\n */\n applyMeasurements(heights: ReadonlyMap<number, number>): number {\n if (heights.size === 0) return 0;\n\n const estimate = this.safeEstimate();\n const current = this.measured();\n const next = current.slice();\n\n let changed = false;\n let deltaAbove = 0;\n const firstVisible = this.indexAt(this.offsets(), this.safeScrollTop());\n\n for (const [index, height] of heights) {\n if (!Number.isFinite(height) || height <= 0 || index < 0) continue;\n\n const previous = next[index] ?? estimate;\n if (Math.abs(previous - height) < 0.5) continue;\n\n next[index] = height;\n changed = true;\n // Only rows that start above the first visible one move it. A correction to a row the\n // reader is looking at, or below it, moves what comes after and leaves the viewport alone.\n if (index < firstVisible) deltaAbove += height - previous;\n }\n\n if (!changed) return 0;\n this.measured.set(next);\n return deltaAbove;\n }\n\n /**\n * Drops every measurement. For when the rows stop describing the same data — a new page, a new\n * sort, a filter — after which a cached height belongs to a row that is no longer there.\n */\n reset(): void {\n if (this.measured().length > 0) this.measured.set([]);\n }\n\n /** Where the scroller has to be for `index` to be fully visible, or `null` if it already is. */\n scrollOffsetFor(index: number): number | null {\n const count = this.safeCount();\n const viewportHeight = this.safeViewportHeight();\n if (count === 0 || viewportHeight === 0) return null;\n\n const offsets = this.offsets();\n const clamped = Math.min(Math.max(0, Math.trunc(index)), count - 1);\n const rowTop = offsets[clamped];\n const rowBottom = offsets[clamped + 1];\n const scrollTop = this.safeScrollTop();\n\n if (rowTop < scrollTop) return rowTop;\n if (rowBottom > scrollTop + viewportHeight) return rowBottom - viewportHeight;\n return null;\n }\n\n /**\n * The index of the row containing `position`, by binary search over the offsets.\n *\n * Returns the **last** index whose start is `<= position`, clamped to the list. A linear scan\n * would be fine at a thousand rows and is not at the hundreds of thousands this exists for, and\n * it runs on every scroll frame.\n */\n private indexAt(offsets: readonly number[], position: number): number {\n const count = offsets.length - 1;\n if (count <= 0) return 0;\n\n let low = 0;\n let high = count - 1;\n while (low < high) {\n const mid = (low + high + 1) >> 1;\n if (offsets[mid] <= position) low = mid;\n else high = mid - 1;\n }\n return low;\n }\n\n private safeCount(): number {\n return Math.max(0, Math.trunc(this.inputs.count()));\n }\n\n private safeEstimate(): number {\n const value = this.inputs.estimatedRowHeight();\n return Number.isFinite(value) && value > 0 ? value : 0;\n }\n\n private safeViewportHeight(): number {\n const value = this.inputs.viewportHeight();\n return Number.isFinite(value) && value > 0 ? value : 0;\n }\n\n private safeScrollTop(): number {\n const value = this.inputs.scrollTop();\n if (!Number.isFinite(value) || value <= 0) return 0;\n // A scroller can report past its own end during an elastic bounce, and — more often here —\n // right after a measurement shortened the list under it.\n return Math.min(value, Math.max(0, this.totalHeight() - this.safeViewportHeight()));\n }\n}\n","/*\n * `@guildofgleks/ui/shared` -- the floor every other entry point stands on.\n *\n * An entry point of its own for one reason, measured in docs/entry-points.md: an\n * `InjectionToken` is one instance only if the file declaring it is compiled into one bundle, and\n * a file imported across entry points by relative path is compiled into every bundle that\n * reaches it. So `GOG_CONFIG` and everything beside it live here, and the root and every\n * secondary import them by package path.\n *\n * Whole modules are re-exported because this barrel is the package's internal plumbing, not a\n * consumer-facing API: `src/public-api.ts` names what the root publishes, one symbol at a time.\n */\nexport * from './checkable-control.config';\nexport * from './clearable-state';\nexport * from './config';\nexport * from './control-id';\nexport * from './date-utils';\nexport * from './deprecations';\nexport * from './dropdown-base';\nexport * from './dropdown-overlay';\nexport * from './dropdown-position';\nexport * from './error-state';\nexport * from './float-label-state';\nexport * from './icon-registry';\nexport * from './icons';\nexport * from './option-accessor';\nexport * from './overlay-direction';\nexport * from './overlay-theme';\nexport * from './ripple-state';\nexport * from './roving-focus';\nexport * from './token-names';\nexport * from './token-values';\nexport * from './tooltip-position';\nexport * from './types';\nexport * from './variable-window';\nexport * from './virtual-window';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_GAP","DEFAULT_VIEWPORT_PADDING","DEFAULT_OVERSCAN","readPx"],"mappings":";;;;;AAQO,MAAM,6BAA6B,GAAG;AAEtC,MAAM,8BAA8B,GAAG;AAC5C,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,gDAAgD;AACzD,QAAA,SAAS,EAAE,uDAAuD;AAClE,QAAA,aAAa,EAAE,iDAAiD;AACjE,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,+CAA+C;AACxD,QAAA,SAAS,EAAE,sDAAsD;AACjE,QAAA,aAAa,EAAE,gDAAgD;AAChE,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,+CAA+C;AACxD,QAAA,SAAS,EAAE,sDAAsD;AACjE,QAAA,aAAa,EAAE,gDAAgD;AAChE,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,+CAA+C;AACxD,QAAA,SAAS,EAAE,sDAAsD;AACjE,QAAA,aAAa,EAAE,gDAAgD;AAChE,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,gDAAgD;AACzD,QAAA,SAAS,EAAE,uDAAuD;AAClE,QAAA,aAAa,EAAE,iDAAiD;AACjE,KAAA;;;ACiVH;;;AAGG;MACU,UAAU,GAAG,IAAI,cAAc,CAAkB,YAAY,EAAE;AAC1E,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO,EAAE,CAAC;AACpB,CAAA;AAED;;;;;;;;AAQG;AACH,SAAS,cAAc,CAAC,IAAqB,EAAE,QAAyB,EAAA;AACtE,IAAA,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE;AAEnD,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3D,QAAA,MAAM,SAAS,GAAI,IAAgC,CAAC,GAAG,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC;AACT,YAAA,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,aAAa;AACrD,kBAAE,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa;kBAChC,aAAa;IACrB;AAEA,IAAA,OAAO,MAAyB;AAClC;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;AACnC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,gBAAgB,CAAC,MAAuB,EAAA;IACtD,OAAO;AACL,QAAA,OAAO,EAAE,UAAU;;;QAGnB,UAAU,EAAE,MACV,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;KACvF;AACH;AAEA;;;;;;;;;;;;;;;;AAgBG;SACa,iBAAiB,CAC/B,aAA4B,EAC5B,eAA8B,EAC9B,QAAW,EAAA;AAEX,IAAA,OAAO,aAAa,IAAI,eAAe,IAAI,QAAQ;AACrD;;ACldA;;;;;;;;;;AAUG;MACU,iBAAiB,CAAA;AAcT,IAAA,cAAA;AACA,IAAA,QAAA;AACA,IAAA,aAAA;AACA,IAAA,MAAA;AACA,IAAA,QAAA;AAjBnB;;;;;;;;;;;AAWG;IACH,WAAA,CACmB,cAA2C,EAC3C,QAAyB,EACzB,aAA8B,EAC9B,MAAuB,EACvB,QAAuB,EAAA;QAJvB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACxB;;IAGM,OAAO,GAAG,QAAQ,CAAC,MAC1B,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC1F;AAED;;;;AAIG;IACM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAChG;;AC/CD;;;;;;;;;;;;;;;;AAgBG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB;AAE1C;AACM,SAAU,gBAAgB,CAAC,MAAc,EAAA;AAC7C,IAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,IAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1B,IAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,EAAE;AAC5B;;ACxBA;;;;;;;;;;;AAWG;AAQH;AACM,SAAU,UAAU,CAAC,IAAU,EAAA;AACnC,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACtE;AAEA;AACM,SAAU,SAAS,CAAC,CAAc,EAAE,CAAc,EAAA;AACtD,IAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;IAC1B,QACE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;AACnC,QAAA,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7B,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;AAE/B;AAEA;AACM,SAAU,WAAW,CAAC,CAAc,EAAE,CAAc,EAAA;AACxD,IAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK;AAC1B,IAAA,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC7E;AAEM,SAAU,OAAO,CAAC,IAAU,EAAE,IAAY,EAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACnC,IAAA,OAAO,IAAI;AACb;AAEA;AACM,SAAU,WAAW,CAAC,IAAY,EAAE,KAAa,EAAA;;AAErD,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAC/C;AAEA;;;;AAIG;AACG,SAAU,SAAS,CAAC,IAAU,EAAE,MAAc,EAAA;AAClD,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM;AACtC,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChD,IAAA,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5C,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE1E,OAAO,IAAI,IAAI,CACb,UAAU,EACV,WAAW,EACX,GAAG,EACH,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CAClB;AACH;AAEM,SAAU,QAAQ,CAAC,IAAU,EAAE,KAAa,EAAA;IAChD,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;AACpC;AAEA;AACM,SAAU,WAAW,CAAC,CAAO,EAAE,CAAO,EAAA;AAC1C,IAAA,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC1D;AAEA;AACM,SAAU,UAAU,CAAC,CAAO,EAAE,CAAO,EAAA;AACzC,IAAA,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC1D;AAEA;SACgB,cAAc,CAAC,IAAU,EAAE,GAAgB,EAAE,GAAgB,EAAA;AAC3E,IAAA,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;AAC/C,IAAA,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;AAC9C,IAAA,OAAO,IAAI;AACb;AAEA;SACgB,SAAS,CAAC,IAAU,EAAE,KAAkB,EAAE,GAAgB,EAAA;AACxE,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,KAAK;AAChC,IAAA,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;AACvE,IAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1D;AAEA;SACgB,SAAS,CAAC,IAAU,EAAE,GAAgB,EAAE,GAAgB,EAAA;AACtE,IAAA,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AACjE,IAAA,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AAChE,IAAA,OAAO,IAAI;AACb;AAEA;AACM,SAAU,YAAY,CAAC,GAAS,EAAE,IAAU,EAAA;AAChD,IAAA,OAAO,IAAI,IAAI,CACb,GAAG,CAAC,WAAW,EAAE,EACjB,GAAG,CAAC,QAAQ,EAAE,EACd,GAAG,CAAC,OAAO,EAAE,EACb,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CAClB;AACH;AAEA;AACM,SAAU,QAAQ,CAAC,IAAU,EAAE,KAAa,EAAE,OAAe,EAAE,OAAO,GAAG,CAAC,EAAA;IAC9E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC/F;AAEA;;;;;;;AAOG;SACa,cAAc,CAAC,IAAY,EAAE,KAAa,EAAE,cAAsB,EAAA;IAChF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,IAAA,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;IAExC,MAAM,KAAK,GAAa,EAAE;AAC1B,IAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,IAAI,GAAW,EAAE;AACvB,QAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/C;AACA,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAClB;AACA,IAAA,OAAO,KAAK;AACd;AAEA;AACM,SAAU,YAAY,CAC1B,MAAc,EACd,cAAsB,EACtB,QAAqC,OAAO,EAAA;AAE5C,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;IAErE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACpC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAC5D;AACH;AAEA;SACgB,UAAU,CAAC,MAAc,EAAE,QAA0B,MAAM,EAAA;AACzE,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnE,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7F;AAEA;;;;;;;AAOG;AACG,SAAU,oBAAoB,CAAC,MAAc,EAAA;AASjD,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAuB;QAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,QAAQ,CAAC,QAAQ;QAC1D,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC;QAC1B;IACF;AAAE,IAAA,MAAM;;IAER;AACA,IAAA,OAAO,CAAC;AACV;AAEA,MAAM,IAAI,GAAG,CAAC,KAAa,KAAa,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEtE;;;;;;;;;AASG;AACG,SAAU,UAAU,CAAC,IAAU,EAAE,OAAe,EAAA;AACpD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,IAAA,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE;AAEtD,IAAA,MAAM,YAAY,GAA2B;AAC3C,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACjD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7B,QAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;AACjB,QAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;AACjB,QAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,EAAE,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;KAC9B;AAED,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC;AACrF;AAEA;;;;;;AAMG;AACG,SAAU,SAAS,CAAC,IAAY,EAAE,OAAe,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;IAC3B,IAAI,OAAO,KAAK,EAAE;AAAE,QAAA,OAAO,IAAI;IAE/B,MAAM,KAAK,GAAa,EAAE;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,KAAK,KAAI;QACtE,QAAQ,KAAK;AACX,YAAA,KAAK,MAAM;AACT,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,GAAG;AACN,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,gBAAA,OAAO,cAAc;AACvB,YAAA;gBACE,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;;AAEzD,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;IAEvB,MAAM,KAAK,GAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;IACvF,IAAI,QAAQ,GAAuB,IAAI;IAEvC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,KAAK,KAAK,GAAG,EAAE;AACjB,YAAA,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAiB;QAC7C;aAAO;YACL,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QAC5B;AACF,IAAA,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7B,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI;IACpD;AAAO,SAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;AAEvB,IAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAAE,QAAA,OAAO,IAAI;IACxC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAC1D,IAAA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AAAE,QAAA,OAAO,IAAI;IAEzE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1E;;ACrSA;AACA;AAmBA;;;;;;;;;;AAUG;AACI,MAAM,gBAAgB,GAA8B;AACzD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,WAAW,EACT,sJAAsJ;AACxJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,6BAA6B;AACnC,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,WAAW,EACT,sJAAsJ;AACxJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EACT,kMAAkM;AACpM,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,WAAW,EACT,sJAAsJ;AACxJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,WAAW,EACT,sJAAsJ;AACxJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,uBAAuB;AAC7B,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,uBAAuB;AAC7B,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,WAAW,EACT,kMAAkM;AACpM,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EACT,kJAAkJ;AACpJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,WAAW,EACT,kMAAkM;AACpM,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,WAAW,EACT,iJAAiJ;AACnJ,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,gCAAgC;AACtC,QAAA,WAAW,EAAE,6BAA6B;AAC1C,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,2BAA2B;AACjC,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,2BAA2B;AACjC,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,SAAS,EAAE,SAAS;AACrB,KAAA;;;ACnTH;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,sBAAsB,CACpC,eAA+B,EAC/B,eAAwB,EAAA;IAExB,MAAM,MAAM,GAAG,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC;AAChD,IAAA,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,eAAe,CAAC,aAAa,EAAE,IAAI,EAAE;AAC3F,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AAC5D,IAAA,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI;AACpD;;AC9BA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACG,SAAU,kBAAkB,CAChC,WAA2B,EAC3B,eAAwB,EAAA;IAExB,MAAM,cAAc,GAAG,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC;AAC3D,IAAA,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,eAAe;AAAE,QAAA,OAAO,IAAI;AAEtE,IAAA,OAAO,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC;AAClD;;AC5BA;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAKV,IAAA,MAAA;AACA,IAAA,QAAA;IALX,MAAM,GAAuB,IAAI;IACjC,OAAO,GAAoC,IAAI;IAEvD,WAAA,CACmB,MAAsB,EACtB,QAAkB,EAAA;QADlB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACxB;;AAGH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI;IAC9B;AAEA,IAAA,MAAM,CAAC,QAA8B,EAAE,WAAA,GAA8B,IAAI,EAAA;QACvE,IAAI,CAAC,MAAM,EAAE;QAEb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;;;AAI7C,QAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5E,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;QAC/C;;AAGA,QAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QACpF,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;QAC5C;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAE3C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;;;QAG9C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAmB,EAAE;AACnD,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAC9B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;AAEA,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACpB;AACD;;AC3DD,MAAMA,aAAW,GAAG,CAAC;AACrB,MAAMC,0BAAwB,GAAG,CAAC;SAElB,wBAAwB,CACtC,SAA+B,EAC/B,WAAmC,EACnC,WAAmB,EACnB,cAAsB,EACtB,GAAG,GAAGD,aAAW,EACjB,eAAe,GAAGC,0BAAwB,EAAA;AAE1C,IAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,eAAe,CAAC;AACvE,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,eAAe,CAAC;IAE3F,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,GAAG,WAAW,EAAE;AACzD,QAAA,OAAO,MAAM;IACf;IAEA,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,GAAG,WAAW,EAAE;AACzD,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,UAAU,IAAI,UAAU,GAAG,MAAM,GAAG,IAAI;AACjD;SAEgB,wBAAwB,CACtC,SAA+B,EAC/B,WAAmC,EACnC,WAAmB,EACnB,cAAsB,EACtB,GAAG,GAAGD,aAAW,EACjB,eAAe,GAAGC,0BAAwB,EAAA;AAE1C,IAAA,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,GAAG,EACH,eAAe,CAChB;AAED,IAAA,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,eAAe,CAAC;AAC3E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,IAAI,WAAW,CAAC;QACzE,OAAO;AACL,YAAA,SAAS,EAAE,iBAAiB;AAC5B,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,YAAY,CAAC;YACpE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK;;;;;;AAMxB,YAAA,SAAS,EAAE,YAAY;SACxB;IACH;AAEA,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,eAAe,CAAC;IAC1F,OAAO;AACL,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,GAAG,EAAE,WAAW,CAAC,MAAM,GAAG,GAAG;QAC7B,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,SAAS;KACV;AACH;AAEA;;;;;;;AAOG;AACG,SAAU,kBAAkB,CAAC,KAAa,EAAE,cAAsB,EAAA;IACtE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACxD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,IAAI;IAEzC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,cAAc;AACrE;;ACtGA;;;;AAIG;AACI,MAAM,cAAc,GAAG;AAE9B;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,aAAa,CAC3B,WAAwC,EACxC,MAAuB,EAAA;AAEvB,IAAA,OAAO,QAAQ,CAAC,MAAM,iBAAiB,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACjG;;ACpBA;;;;;AAKG;MACU,aAAa,CAAA;AAKL,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AANF,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,qFAAC;AAC9B,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,qFAAC;AAE/C,IAAA,WAAA,CACmB,YAA4B,EAC5B,YAAqC,EACrC,SAA2B,EAAA;QAF3B,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;IACzB;AAEM,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACpD,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;QACvD;AACA,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;AAC9B,IAAA,CAAC,+EAAC;IAEO,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEpF;;;;;;;AAOG;IACH,KAAK,GAAA;AACH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC,QAAA,IAAI,CAAC,OAAO;YAAE;QAEd,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1C;AACD;;AC9CD;AACM,SAAU,SAAS,CAAC,MAAe,EAAE,KAAa,EAAA;AACtD,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAQ,MAAyC,GAAG,KAAK,CAAC;IAEpF,IAAI,KAAK,GAAY,MAAM;IAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAClC,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,SAAS;AACnC,QAAA,KAAK,GAAI,KAAiC,CAAC,GAAG,CAAC;IACjD;AACA,IAAA,OAAO,KAAK;AACd;AAEA;AACM,SAAU,UAAU,CACxB,MAAe,EACf,QAA6C,EAAA;IAE7C,OAAO,OAAO,QAAQ,KAAK;AACzB,UAAE,QAAQ,CAAC,MAAM;AACjB,UAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAa;AAC9C;AAEA;;;;;;;AAOG;AACG,SAAU,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAA;IACtD,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK;IACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK;IAChE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AAChC;;ACvCA,MAAM,eAAe,GAAyB,MAAM;AACpD,MAAM,wBAAwB,GAAG,KAAK;AAEtC;;;;;;;;;;;;AAYG;MACU,kBAAkB,CAAA;AAUV,IAAA,YAAA;AACA,IAAA,oBAAA;AACA,IAAA,WAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AAdnB;;;;;;;AAOG;IACH,WAAA,CACmB,YAAsD,EACtD,oBAAiD,EACjD,WAA2B,EAC3B,SAA0B,EAC1B,QAAyB,EACzB,MAAuB,EAAA;QALvB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;IACtB;;IAGM,OAAO,GAAG,QAAQ,CAAC,MAC1B,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACzF;IAEQ,eAAe,GAAG,QAAQ,CAAC,MAClC,iBAAiB,CACf,IAAI,CAAC,oBAAoB,EAAE,EAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,EACvC,wBAAwB,CACzB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;;AAGQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,+EAAC;;AAGpD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,gFAAC;AAExE;;;;;AAKG;AACM,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAAE,YAAA,OAAO,EAAE;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;AACnD,IAAA,CAAC,2FAAC;AACH;;ACnED,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,SAAS,CAAU;AACzD,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,WAAW,CAAU;AAC9D,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,KAAK,CAAU;AAO1C;AACA,SAAS,SAAS,CAAC,WAA2B,EAAA;IAC5C,OAAO,WAAW,KAAK,YAAY,GAAG,iBAAiB,GAAG,eAAe;AAC3E;AAEA;;;;;;AAMG;SACa,gBAAgB,CAC9B,GAAW,EACX,cAA8B,UAAU,EAAA;AAExC,IAAA,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAK,SAA+B,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC/F;AAEA;AACA,SAAS,WAAW,CAAC,GAAmB,EAAA;AACtC,IAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW;AACjD;AAEA;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAClC,GAAmB,EACnB,YAAoB,EACpB,KAAa,EACb,SAAsC,EAAA;IAEtC,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY;IAEpC,MAAM,OAAO,GAAG,SAAS,KAAK,MAAM,IAAI,CAAC;AACzC,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;;IAG3B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACnC,QAAA,MAAM,KAAK,GACT,GAAG,KAAK;AACN,cAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;cACzC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY;IAC5C;AAEA,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;;AAEtC,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,EAAE,EAAE;AACrC,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,IAAI,KAAK;QACnE,IAAI,OAAO,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,SAAS;IAC1C;AAEA,IAAA,OAAO,YAAY;AACrB;AAEA;;;;;;;;AAQG;AACG,SAAU,wBAAwB,CACtC,KAAoB,EACpB,KAA6B,EAC7B,UAII,EAAE,EAAA;AAEN,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU;AACrD,IAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACnE,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAA4B;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACpC,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;IAC9B,MAAM,SAAS,GAAG;AAChB,UAAE,CAAC,SAAiB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS;UAC9D,SAAS;;;IAIb,KAAK,CAAC,cAAc,EAAE;AAEtB,IAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;AACjF,IAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,QAAA,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE;IAC3B;AACA,IAAA,OAAO,IAAI;AACb;;ACnFA,MAAMC,kBAAgB,GAAG,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;MACU,gBAAgB,CAAA;AAGE,IAAA,MAAA;AAFZ,IAAA,QAAQ;AAEzB,IAAA,WAAA,CAA6B,MAA8B,EAAA;QAA9B,IAAA,CAAA,MAAM,GAAN,MAAM;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAIA,kBAAgB,CAAC,CAAC;IAC9E;AAEA;;;AAGG;AACM,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,OAAO,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS;AAC3D,IAAA,CAAC,kFAAC;AAEF;;;;;;;AAOG;AACM,IAAA,KAAK,GAAG,QAAQ,CAAkB,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAEhD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC5C,QAAA,IAAI,SAAS,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;AAE5E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;;;;AAI1D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC;AAEzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5D,QAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACvB,IAAA,CAAC,4EAAC;;AAGO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,gFAAC;;AAGrE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AACxD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;AACnD,IAAA,CAAC,+EAAC;AAEF;;;;;;;;AAQG;AACH,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAChD,IAAI,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,SAAS;AAClC,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;QAEtC,IAAI,MAAM,GAAG,SAAS;AAAE,YAAA,OAAO,MAAM;AACrC,QAAA,IAAI,SAAS,GAAG,SAAS,GAAG,cAAc;YAAE,OAAO,SAAS,GAAG,cAAc;AAC7E,QAAA,OAAO,IAAI;IACb;;IAGQ,SAAS,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD;IAEQ,aAAa,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACrC,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IACxD;IAEQ,kBAAkB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC1C,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IACxD;IAEQ,aAAa,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;;;;QAInD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACrF;AACD;;AC5HD;;;;;;;;AAQG;MAEU,2BAA2B,CAAA;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAuB,WAAW,CAAC;wGADrD,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE;;AAe/C;;;;;;;;;;AAUG;MAEU,0BAA0B,CAAA;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAiD,WAAW,CAAC;IAE1F,OAAO,sBAAsB,CAC3B,IAAyC;;IAEzC,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;IACb;wGATW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;mBAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;;AA0B9C;AACA,MAAM,SAAS,GAAG,CAAC;AACnB;AACA,MAAM,gBAAgB,GAAG,CAAC;AAC1B;AACA,MAAM,yBAAyB,GAAG,GAAG;AACrC;AACA,MAAM,sBAAsB,GAAG,EAAE;AACjC;AACA,MAAM,qBAAqB,GAAG,GAAG;AAEjC;AACA,MAAM,YAAY,GAAY,IAAI;AAClC,MAAM,qBAAqB,GAAoB,QAAQ;AACvD,MAAM,sBAAsB,GAAG,KAAK;AACpC,MAAM,0BAA0B,GAAyB,MAAM;AAC/D,MAAM,cAAc,GAAG,KAAK;AAC5B,MAAM,uBAAuB,GAA8B,KAAK;AAChE,MAAM,6BAA6B,GAAG,iBAAiB;AAEvD;;;;;;;;AAQG;MAUmB,eAAe,CAAA;AAG3B,IAAA,OAAO,OAAO,GAAG,CAAC;AAEjB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,SAAS,GAAG,KAAK,CAAC,EAAE,gFAAC;AACrB,IAAA,WAAW,GAAG,KAAK,CAAC,WAAW,kFAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAY,EAAE,8EAAC;AACvC;;;AAGG;AACM,IAAA,WAAW,GAAG,KAAK,CAAqC,MAAM,kFAAC;AACxE;;;;;;AAMG;AACM,IAAA,WAAW,GAAG,KAAK,CAA6C,IAAI,kFAAC;;AAErE,IAAA,cAAc,GAAG,KAAK,CAAsC,UAAU,qFAAC;AAChF;;;AAGG;AACM,IAAA,SAAS,GAAG,KAAK,CAAsB,SAAS,gFAAC;AAC1D;;;AAGG;AACM,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,qFAAC;;IAE3C,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,iBAAiB,CACf,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EACxC,6BAA6B,CAC9B,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;AACD;;;;;AAKG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,+EAAC;AAC9C;;;AAGG;AACM,IAAA,MAAM,GAAG,KAAK,CAAsB,SAAS,6EAAC;AAC9C,IAAA,iBAAiB,GAAG,KAAK,CAAC,WAAW,wFAAC;AAC/C;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK,CAAwC,SAAS,qFAAC;;AAExE,IAAA,kBAAkB,GAAG,KAAK,CAAC,YAAY,yFAAC;AACjD;;;;AAIG;AACM,IAAA,WAAW,GAAG,KAAK,CAAuD,IAAI,kFAAC;AAC/E,IAAA,YAAY,GAAG,KAAK,CAAC,EAAE,mFAAC;AACjC;;;AAGG;AACM,IAAA,YAAY,GAAG,KAAK,CAA8B,SAAS,mFAAC;;AAE5D,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,2EAAC;;AAE5C,IAAA,iBAAiB,GAAG,KAAK,CAAmC,SAAS,wFAAC;AAC/E;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK,CAAgB,IAAI,qFAAC;AACpD;;;;AAIG;AACM,IAAA,aAAa,GAAG,KAAK,CAAgB,IAAI,oFAAC;AACnD;;;;;;AAMG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAgB,IAAI,wFAAC;;AAE9C,IAAA,YAAY,GAAG,KAAK,CAAsB,SAAS,mFAAC;AACpD,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;;AAEb,IAAA,WAAW,GAAG,YAAY,CAAC,2BAA2B,kFAAC;AAC1E;;;AAGG;AACM,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;;AAEvB,IAAA,UAAU,GAAG,KAAK,CAAmC,SAAS,iFAAC;;AAE/D,IAAA,yBAAyB,GAAG,KAAK,CAAsB,SAAS,gGAAC;AAC1E;;;AAGG;AACM,IAAA,MAAM,GAAG,KAAK,CAAsB,SAAS,6EAAC;AAE9C,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAGZ,IAAA,UAAU,GAAG,YAAY,CAAC,0BAA0B,iFAAC;;AAG9D,IAAA,OAAO,CAAC,MAAe,EAAA;QAC/B,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/C;AAEA;;;AAGG;AACO,IAAA,OAAO,CAAC,MAAe,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,QAAA,OAAO,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClE;;AAGU,IAAA,gBAAgB,CAAC,MAAe,EAAA;QACxC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IACpD;;IAGU,aAAa,CAAC,MAAe,EAAE,QAAiB,EAAA;QACxD,OAAO;AACL,YAAA,SAAS,EAAE,MAAM;YACjB,QAAQ;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAC5B;IACH;;IAGU,SAAS,CAAC,CAAU,EAAE,CAAU,EAAA;AACxC,QAAA,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC;AAqBA;;;AAGG;AACH;;;;;;;;;AASG;IACgB,cAAc,GAAW,2BAA2B;IACpD,mBAAmB,GAAW,gCAAgC;;IAE9D,mBAAmB,GAAW,iCAAiC;;IAE/D,iBAAiB,GAAW,8BAA8B;AAE7E;;;;;;AAMG;AACgB,IAAA,GAAG,GAAG,EAAE,eAAe,CAAC,OAAO;AAE/B,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzB,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAE3D,IAAA,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,IAAA,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAG1D,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;;IAGzB,YAAY,GAAG,QAAQ,CAAC,MACzC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9E;IACkB,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7D,oBAAoB,GAAG,QAAQ,CAAC,MACjD,iBAAiB,CACf,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EACvC,qBAAqB,CACtB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;IACkB,oBAAoB,GAAG,QAAQ,CAAC,MACjD,iBAAiB,CACf,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EACxC,sBAAsB,CACvB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;IACkB,yBAAyB,GAAG,QAAQ,CAAC,MACtD,iBAAiB,CACf,IAAI,CAAC,iBAAiB,EAAE,EACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EACrC,0BAA0B,CAC3B,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;AAED;;;;AAIG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY,GAAG,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,gFAC7F;AACD;;;;AAIG;AACgB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK;UACnD,CAAA,EAAG,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,YAAY,EAAE,CAAA;UAC/C,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACP;AAEgB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,IAAA,UAAU,GAAG,IAAI,aAAa,CAC7C,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,SAAS,CACf;AAEkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,iFAAC;AAClE,IAAA,sBAAsB,GAAG,MAAM,CAAgB,MAAM,6FAAC;AACtD,IAAA,cAAc,GAAG,MAAM,CAA8B,IAAI,qFAAC;AAC7E;;;;;;;AAOG;AACgB,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,kFAAC;AAE5D;;;;;;;AAOG;IACgB,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAGzD,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK;AAC1C,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,IAAI;AAC5C,IAAA,CAAC,4FAAC;;AAEiB,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS;QAClD,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK,SAAS,IAAI,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,GAAG,IAAI,CAAC;AAClF,IAAA,CAAC,6FAAC;AAEiB,IAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AACnC,IAAA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY;IAQ7C,cAAc,GAAG,IAAI,iBAAiB,CACrD,IAAI,CAAC,SAAS,EACd,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,EACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY;;AAEjB,IAAA,MAAM,IAAI,CAAC,kBAAkB,CAC9B;;AAGkB,IAAA,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS;IAEzC,cAAc,GAAG,QAAQ,CAAC,MAC3C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACrF;IACkB,sBAAsB,GAAG,QAAQ,CAAC,MACnD,iBAAiB,CACf,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,EAC1C,uBAAuB,CACxB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;;AAEkB,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,kFAAC;AAE3C;;;;AAIG;AACgB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;AAEjE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEzE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;QAClC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/F,IAAA,CAAC,qFAAC;AAEQ,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;;;;;;QAM9D,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA;;;;AAIG;AACO,IAAA,YAAY,CAAC,KAAa,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;QACxD,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACrD;;IAGU,gBAAgB,GAAA;QACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3B;AAEA;;;;;;;;AAQG;AACK,IAAA,iBAAiB,CAAC,GAAW,EAAA;QACnC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAE1E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC5C,QAAA,IAAI,CAAC,QAAQ;YAAE;;;;AAIf,QAAA,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9C;aAAO;AACL,YAAA,QAAQ,CAAC,SAAS,GAAG,GAAG;QAC1B;IACF;AAEA;;;;AAIG;IACK,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAK,IAAI,CAAC,KAAK,CAAC,aAA6B;AACnF,QAAA,OAAO,KAAK,CAAC,aAAa,CAAc,uBAAuB,CAAC;IAClE;;AAGU,IAAA,UAAU,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC;AAEA;;;;;AAKG;AACc,IAAA,eAAe,GAAG,IAAI,kBAAkB,CACvD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,EACpC,IAAI,CAAC,YAAY,CAClB;AAEkB,IAAA,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO;AACjD,IAAA,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ;AAClD,IAAA,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS;AACpD,IAAA,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB;;IAG3E,SAAS,GAAG,CAAC;IACb,cAAc,GAAG,CAAC;IAClB,cAAc,GAAG,yBAAyB;IAC1C,YAAY,GAAG,sBAAsB;AAC7C;;;;;;;;;;;;;;;AAeG;IACK,oBAAoB,GAAkB,IAAI;AAClD;;;;;;;AAOG;IACK,iBAAiB,GAAkB,IAAI;IACvC,YAAY,GAAkB,IAAI;IAClC,eAAe,GAAkB,IAAI;;;;;;AAQ7C;;;;;;;;;AASG;IACgB,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC3F;AAED;;;;;;;AAOG;AACgB,IAAA,iBAAiB,GAAgC,MAAM,CAAC,SAAS,wFAAC;AAErF;;;;;AAKG;AACgB,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,+EAAC;AAEvC;;;;AAIG;AACc,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,6EAAC;AAEnC;;;;;;;;;;AAUG;IACgB,aAAa,GAAG,MAAM,CAAwC;AAC/E,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,MAAM,EAAE,CAAC;AACV,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEe,aAAa,GAAG,IAAI,gBAAgB,CAAC;AACpD,QAAA,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;QACnD,SAAS,EAAE,IAAI,CAAC,QAAQ;AACxB,QAAA,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;AAC3D,QAAA,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;AAC1D,KAAA,CAAC;;AAGiB,IAAA,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,wFAAC;;IAG9B,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,kBAAkB;AACrB,UAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC1B,UAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,mFACpD;AAED;;;AAGG;AACgB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;QACjC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QAC1C,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACxE,IAAA,CAAC,sFAAC;AAEF;;;;;;AAMG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,gFAClF;AACkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,+EACjF;AAED;;;;;;;;;;;;;AAaG;AACK,IAAA,YAAY,CAAC,OAAe,EAAA;QAClC,IAAI,OAAO,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7C;AAEA;;;;;AAKG;IACgB,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChE;;AAGS,IAAA,YAAY,CAAC,aAAqB,EAAA;QAC1C,OAAO,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,GAAG,aAAa,GAAG,CAAC,GAAG,IAAI;IACzF;;AAGU,IAAA,aAAa,CAAC,OAAoD,EAAA;QAC1E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,MAAM;YACvC,SAAS,EAAE,OAAO,CAAC,SAAS;;;;;;AAM5B,YAAA,MAAM,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC1E,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,EAAE;IACrC;AAEA;;;;;;;;;;;AAWG;IACK,4BAA4B,GAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,MAAM,GAAG,CAAC;YAAE;QAEjE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AAC1C,QAAA,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,GAAG,GAAG;YAAE;QAErC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAK,IAAI,CAAC,KAAK,CAAC,aAA6B;AACnF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;QAC3C,IACE,OAAO,YAAY,WAAW;AAC9B,YAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAC5C;YACA,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEQ,IAAA,UAAU,GAA0B,MAAK,EAAE,CAAC;AAC5C,IAAA,WAAW,GAAe,MAAK,EAAE,CAAC;AAE1C,IAAA,WAAA,GAAA;;;;AAIE,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA;;;;;AAKG;IACK,aAAa,GAAA;AACnB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE;AAEvC,YAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;;;;YAKhD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC;AACxD,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7E,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAE9D,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;AAC3D,gBAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjE,gBAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAE9C,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACjC,oBAAA,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1C,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;gBAC7B;AAEA,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,oBAAA,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;AAEA,IAAA,UAAU,CAAC,GAAkB,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;IACxC;AAEA,IAAA,gBAAgB,CAAC,EAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QAChC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;IAGU,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;;IAGU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEU,MAAM,GAAA;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,IAAI,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE;AAExC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,EAAE;QACtB;QAEA,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA;;;;;;;;AAQG;IACK,UAAU,GAAA;QAChB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACrB,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC;AACxD,SAAA,CAAC;IACJ;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE;AAEpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;;;QAGrB,IAAI,CAAC,WAAW,EAAE;IACpB;;AAGU,IAAA,WAAW,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE;IACpB;IAEU,WAAW,GAAA;QACnB,IAAI,CAAC,WAAW,EAAE;IACpB;AAEQ,IAAA,qBAAqB,CAAC,KAAiB,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,aAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAEvD,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA;;;AAGG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;YAAE;AAEnC,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;;;;;;;AAWG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE;AAEnD,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE;AAEpB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAK,IAAI,CAAC,KAAK,CAAC,aAA6B;AACnF,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YACpE,MAAM,MAAM,GAAG,GAAG,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC;YACvD,IAAI,MAAM,IAAI,CAAC;gBAAE;;;;;AAMjB,YAAA,MAAM,GAAG,GAAG,GAAG,EAAE;AACf,kBAAEC,QAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;mBACnD,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC;AAE9C,YAAA,MAAM,OAAO,GACX,IAAI,CAAC,oBAAoB,KAAK;kBAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG;AACjF,kBAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,GAAG;AAClD,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG;AACtE,YAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM;AAClC,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG;;;;AAI5B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AAC/B,YAAA,IAAI,OAAO;gBAAE,IAAI,CAAC,eAAe,EAAE;AACrC,QAAA,CAAC,CAAC;IACJ;;AAGU,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE;QACpB,KAAK,CAAC,cAAc,EAAE;;;;AAKtB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAE,KAAuB,CAAC,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;YAClF;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC5C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAE1B,QAAA,MAAM,KAAK,GAAI,KAAuB,CAAC,GAAG,KAAK,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;AACjF,QAAA,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;IACzB;AAEU,IAAA,eAAe,CAAC,KAAoB,EAAA;AAC5C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;;;;;YAKvB,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE;YACnB;QACF;;;;AAKA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC5D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;YAChC;QACF;QAEA,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/D;AAEA;;;AAGG;AACK,IAAA,gBAAgB,CAAC,GAAmB,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAE1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;;;;AAIxC,QAAA,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAEtF,QAAA,IAAI,CAAC,aAAa,CAChB,oBAAoB,CAClB,GAAG,EACH,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAClD,CACF;IACH;AAEA;;;;;;AAMG;AACK,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,eAAe,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrF;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAK,IAAI,CAAC,KAAK,CAAC,aAA6B;QACnF;aACG,aAAa,CAAc,IAAI,IAAI,CAAC,WAAW,CAAA,wBAAA,EAA2B,KAAK,IAAI;cAClF,KAAK,EAAE;IACb;IAEU,YAAY,GAAA;QACnB,IAAI,CAAC,KAAK,CAAC;AACT,aAAA,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,EAAE;cACjD,KAAK,EAAE;IACb;;IAGU,gBAAgB,GAAA;AACxB,QAAA,OAAO,CAAC;IACV;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAK,IAAI,CAAC,KAAK,CAAC,aAA6B;AACnF,QAAA,OAAO,KAAK,CAAC,IAAI,CACf,KAAK,CAAC,gBAAgB,CAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,4BAAA,CAA8B,CAAC,CAC9F;IACH;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAErB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACzD;AAEA;;;;AAIG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,yBAAyB;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;QACF;QAEA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACzD,QAAA,IAAI,CAAC,SAAS,GAAGA,QAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,cAAc,GAAGA,QAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,cAAc,GAAGA,QAAM,CAC1B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EACjD,yBAAyB,CAC1B;AACD,QAAA,IAAI,CAAC,YAAY,GAAGA,QAAM,CACxB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAC/C,sBAAsB,CACvB;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5F;AAEA;;;;;;;;;;AAUG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,IAAI,MAAM,EAAE;YACV,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;YAC/D,IAAI,QAAQ,KAAK,IAAI;AAAE,gBAAA,OAAO,QAAQ;QACxC;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS;AACpD,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC;IAChG;AAEA;;;;;AAKG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAA4B;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC,IAAI,IAAI;AAChF,QAAA,OAAO,OAAO,CAAC,qBAAqB,EAAE;IACxC;;AAGQ,IAAA,kBAAkB,CAAC,aAAkC,EAAA;QAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;QAC3E,IAAI,SAAS,EAAE;AACb,YAAA,OAAOA,QAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;QACjD;;;;AAKA,QAAA,KAAK,IAAI,EAAE,GAAuB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE;AACrF,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;YACrE,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAOA,QAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;YAChD;QACF;AAEA,QAAA,OAAO,qBAAqB;IAC9B;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QAErB,MAAM,SAAS,GAAG,wBAAwB,CACxC,IAAI,CAAC,yBAAyB,EAAE,EAChC,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,mBAAmB,EAAE,EAC1B,MAAM,CAAC,WAAW,EAClB,SAAS,EACT,gBAAgB,CACjB;QAED,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC;wGAhmCoB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuGW,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmB5B,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA1HnD,eAAe,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;;;;;AAKJ,wBAAA,8BAA8B,EAAE,cAAc;AAC/C,qBAAA;AACF,iBAAA;AAwG+C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,2BAA2B,ggBAmB5B,0BAA0B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAy+BzE,SAASA,QAAM,CAAC,GAAW,EAAE,QAAgB,EAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5C,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,QAAQ;AACpD;;ACpvCA;;;;;;AAMG;MACU,SAAS,GAAG,IAAI,cAAc,CAAmC,WAAW,EAAE;AACzF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO,EAAE,CAAC;AACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,eAAe,CAAC,KAAuC,EAAA;IACrE,OAAO;AACL,QAAA,OAAO,EAAE,SAAS;;;AAGlB,QAAA,UAAU,EAAE,OAAO;AACjB,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAChE,YAAA,GAAG,KAAK;SACT,CAAC;KACH;AACH;;AC/DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AA6DI,MAAM,SAAS,GAAuC;AAC3D,IAAA,KAAK,EAAE,CAAA,oQAAA,CAAsQ;AAE7Q,IAAA,KAAK,EAAE,CAAA,6QAAA,CAA+Q;AAEtR,IAAA,YAAY,EAAE,CAAA,6QAAA,CAA+Q;AAE7R,IAAA,cAAc,EAAE,CAAA,+QAAA,CAAiR;AAEjS,IAAA,cAAc,EAAE,CAAA,iRAAA,CAAmR;AAEnS,IAAA,eAAe,EAAE,CAAA,kRAAA,CAAoR;AAErS,IAAA,QAAQ,EAAE,CAAA,yVAAA,CAA2V;AAErW,IAAA,KAAK,EAAE,CAAA,gSAAA,CAAkS;AAEzS,IAAA,IAAI,EAAE,CAAA,kVAAA,CAAoV;AAE1V,IAAA,SAAS,EAAE,CAAA,+WAAA,CAAiX;AAE5X,IAAA,WAAW,EAAE,CAAA,kXAAA,CAAoX;AAEjY,IAAA,OAAO,EAAE,CAAA,oQAAA,CAAsQ;AAE/Q,IAAA,KAAK,EAAE,CAAA,glBAAA,CAAklB;AAEzlB,IAAA,OAAO,EAAE,CAAA,wXAAA,CAA0X;AAEnY,IAAA,IAAI,EAAE,CAAA,iTAAA,CAAmT;AAEzT,IAAA,QAAQ,EAAE,CAAA,4RAAA,CAA8R;AAExS,IAAA,kBAAkB,EAAE,CAAA,oQAAA,CAAsQ;AAE1R,IAAA,GAAG,EAAE,CAAA,qXAAA,CAAuX;AAE5X,IAAA,SAAS,EAAE,CAAA,qgBAAA,CAAugB;AAElhB,IAAA,IAAI,EAAE,CAAA,kWAAA,CAAoW;;AAI1W,IAAA,MAAM,EAAE,CAAA,iRAAA,CAAmR;AAE3R,IAAA,IAAI,EAAE,CAAA,8PAAA,CAAgQ;AAEtQ,IAAA,KAAK,EAAE,CAAA,2OAAA,CAA6O;AAEpP,IAAA,KAAK,EAAE,CAAA,yZAAA,CAA2Z;AAEla,IAAA,MAAM,EAAE,CAAA,yXAAA,CAA2X;AAEnY,IAAA,QAAQ,EAAE,CAAA,0VAAA,CAA4V;AAEtW,IAAA,MAAM,EAAE,CAAA,qVAAA,CAAuV;AAE/V,IAAA,OAAO,EAAE,CAAA,oYAAA,CAAsY;AAE/Y,IAAA,MAAM,EAAE,CAAA,uRAAA,CAAyR;AAEjS,IAAA,eAAe,EAAE,CAAA,+UAAA,CAAiV;;AAIlW,IAAA,IAAI,EAAE,CAAA,sUAAA,CAAwU;AAE9U,IAAA,iBAAiB,EAAE,CAAA,sTAAA,CAAwT;AAE3U,IAAA,eAAe,EAAE,CAAA,+TAAA,CAAiU;AAElV,IAAA,YAAY,EAAE,CAAA,0QAAA,CAA4Q;AAE1R,IAAA,aAAa,EAAE,CAAA,0QAAA,CAA4Q;;AAI3R,IAAA,IAAI,EAAE,CAAA,ySAAA,CAA2S;AAEjT,IAAA,QAAQ,EAAE,CAAA,0zBAAA,CAA4zB;AAEt0B,IAAA,IAAI,EAAE,CAAA,mTAAA,CAAqT;AAE3T,IAAA,IAAI,EAAE,CAAA,4TAAA,CAA8T;AAEpU,IAAA,IAAI,EAAE,CAAA,wUAAA,CAA0U;AAEhV,IAAA,aAAa,EAAE,CAAA,4VAAA,CAA8V;;;AClL/W;AACA;AACA;AAmkDA;;;AAGG;AACI,MAAM,gBAAgB,GAA6B;AACxD,IAAA;AACE,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,iBAAiB;YACjB,oBAAoB;YACpB,iBAAiB;YACjB,wBAAwB;YACxB,yBAAyB;YACzB,0BAA0B;YAC1B,4BAA4B;YAC5B,sBAAsB;YACtB,yBAAyB;YACzB,wBAAwB;YACxB,0BAA0B;YAC1B,2BAA2B;YAC3B,wBAAwB;YACxB,yBAAyB;YACzB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,sBAAsB;YACtB,eAAe;YACf,eAAe;AAChB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,oBAAoB;YACpB,oBAAoB;YACpB,eAAe;YACf,0BAA0B;YAC1B,0BAA0B;YAC1B,cAAc;AACf,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,cAAc,CAAC;AAC9F,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,wBAAwB,CAAC;AACxF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,4BAA4B;YAC5B,4BAA4B;YAC5B,oCAAoC;YACpC,oCAAoC;YACpC,qCAAqC;YACrC,oCAAoC;YACpC,qCAAqC;YACrC,qCAAqC;YACrC,qCAAqC;YACrC,sCAAsC;YACtC,qCAAqC;YACrC,sCAAsC;YACtC,sCAAsC;YACtC,sCAAsC;YACtC,uCAAuC;YACvC,sCAAsC;YACtC,uCAAuC;YACvC,gCAAgC;AACjC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,6DAA6D;AACtE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,2BAA2B,EAAE,4BAA4B,CAAC;AAC9F,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,gEAAgE;AACzE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,gCAAgC;YAChC,sCAAsC;YACtC,iCAAiC;AAClC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,+BAA+B;YAC/B,8BAA8B;YAC9B,iCAAiC;YACjC,+BAA+B;YAC/B,qBAAqB;YACrB,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,uBAAuB;YACvB,4BAA4B;AAC7B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,iBAAiB;YACjB,yBAAyB;YACzB,yBAAyB;YACzB,uBAAuB;YACvB,uBAAuB;YACvB,wBAAwB;YACxB,uBAAuB;YACvB,wBAAwB;AACzB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE,CAAC,4BAA4B,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;AACvF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;AACzB,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,gDAAgD;AACzD,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE;YACN,qBAAqB;YACrB,oBAAoB;YACpB,kBAAkB;YAClB,mBAAmB;YACnB,yBAAyB;YACzB,wBAAwB;YACxB,oBAAoB;YACpB,8BAA8B;YAC9B,oBAAoB;YACpB,+BAA+B;YAC/B,8BAA8B;YAC9B,iCAAiC;YACjC,+BAA+B;YAC/B,qBAAqB;YACrB,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,uBAAuB;YACvB,4BAA4B;YAC5B,mBAAmB;YACnB,kBAAkB;YAClB,wBAAwB;YACxB,qBAAqB;YACrB,uBAAuB;YACvB,0BAA0B;YAC1B,qBAAqB;YACrB,qBAAqB;YACrB,kBAAkB;YAClB,qBAAqB;AACtB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,sBAAsB;AAC/B,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,yBAAyB;YACzB,2BAA2B;YAC3B,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,oBAAoB;YACpB,yBAAyB;YACzB,kBAAkB;YAClB,uBAAuB;YACvB,qBAAqB;YACrB,0BAA0B;YAC1B,qBAAqB;YACrB,0BAA0B;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,eAAe;YACf,gCAAgC;YAChC,2BAA2B;YAC3B,yBAAyB;YACzB,yBAAyB;YACzB,kBAAkB;YAClB,8BAA8B;YAC9B,+BAA+B;YAC/B,kCAAkC;YAClC,+BAA+B;YAC/B,0BAA0B;YAC1B,2BAA2B;YAC3B,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,yBAAyB;YACzB,0BAA0B;YAC1B,2BAA2B;YAC3B,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,2BAA2B;YAC3B,4BAA4B;YAC5B,6BAA6B;YAC7B,2BAA2B;YAC3B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;YAC3B,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,2BAA2B;YAC3B,4BAA4B;YAC5B,6BAA6B;YAC7B,2BAA2B;YAC3B,2BAA2B;YAC3B,oBAAoB;YACpB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,yBAAyB;YACzB,oBAAoB;YACpB,uBAAuB;YACvB,2BAA2B;YAC3B,iBAAiB;AAClB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,8BAA8B;YAC9B,yBAAyB;YACzB,4BAA4B;YAC5B,kCAAkC;YAClC,2BAA2B;YAC3B,kCAAkC;YAClC,6BAA6B;YAC7B,0CAA0C;YAC1C,8BAA8B;YAC9B,8BAA8B;YAC9B,8BAA8B;YAC9B,qCAAqC;YACrC,6CAA6C;YAC7C,kCAAkC;YAClC,kCAAkC;YAClC,kCAAkC;YAClC,6BAA6B;YAC7B,2BAA2B;YAC3B,4BAA4B;YAC5B,uCAAuC;YACvC,0BAA0B;YAC1B,6BAA6B;YAC7B,mCAAmC;YACnC,qCAAqC;YACrC,wCAAwC;YACxC,qCAAqC;YACrC,sCAAsC;YACtC,iCAAiC;YACjC,gCAAgC;YAChC,8BAA8B;YAC9B,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,6BAA6B;YAC7B,mCAAmC;YACnC,qCAAqC;YACrC,wCAAwC;YACxC,qCAAqC;YACrC,sCAAsC;YACtC,iCAAiC;YACjC,gCAAgC;YAChC,8BAA8B;YAC9B,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,0BAA0B;YAC1B,wBAAwB;YACxB,oCAAoC;YACpC,sCAAsC;YACtC,yCAAyC;YACzC,sCAAsC;YACtC,uCAAuC;YACvC,kCAAkC;YAClC,iCAAiC;YACjC,+BAA+B;YAC/B,oCAAoC;YACpC,+BAA+B;YAC/B,+BAA+B;YAC/B,mCAAmC;YACnC,qCAAqC;YACrC,wCAAwC;YACxC,qCAAqC;YACrC,sCAAsC;YACtC,iCAAiC;YACjC,gCAAgC;YAChC,8BAA8B;YAC9B,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,4BAA4B;YAC5B,qCAAqC;YACrC,oCAAoC;YACpC,sCAAsC;YACtC,yCAAyC;YACzC,sCAAsC;YACtC,uCAAuC;YACvC,kCAAkC;YAClC,iCAAiC;YACjC,+BAA+B;YAC/B,oCAAoC;YACpC,+BAA+B;YAC/B,+BAA+B;AAChC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,gBAAgB;YAChB,4BAA4B;YAC5B,8BAA8B;YAC9B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,mBAAmB;YACnB,0BAA0B;YAC1B,wBAAwB;YACxB,yBAAyB;YACzB,iBAAiB;YACjB,2BAA2B;YAC3B,+BAA+B;YAC/B,iCAAiC;YACjC,iCAAiC;YACjC,4BAA4B;YAC5B,8BAA8B;YAC9B,wBAAwB;YACxB,sBAAsB;YACtB,uBAAuB;YACvB,uBAAuB;YACvB,oBAAoB;YACpB,2BAA2B;YAC3B,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,oCAAoC;YACpC,8BAA8B;YAC9B,uCAAuC;AACxC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,2BAA2B;YAC3B,2BAA2B;YAC3B,2BAA2B;YAC3B,+BAA+B;YAC/B,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,0BAA0B;YAC1B,0BAA0B;YAC1B,kBAAkB;YAClB,uBAAuB;YACvB,2BAA2B;YAC3B,0BAA0B;YAC1B,6BAA6B;YAC7B,gCAAgC;YAChC,iCAAiC;YACjC,6BAA6B;YAC7B,gCAAgC;YAChC,2BAA2B;YAC3B,kCAAkC;YAClC,mCAAmC;YACnC,6BAA6B;YAC7B,2BAA2B;YAC3B,yBAAyB;YACzB,0BAA0B;YAC1B,8BAA8B;YAC9B,2BAA2B;YAC3B,yBAAyB;YACzB,yBAAyB;YACzB,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,mCAAmC;YACnC,+BAA+B;YAC/B,kCAAkC;YAClC,6BAA6B;YAC7B,oCAAoC;YACpC,qCAAqC;YACrC,yBAAyB;YACzB,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,mCAAmC;YACnC,+BAA+B;YAC/B,kCAAkC;YAClC,6BAA6B;YAC7B,oCAAoC;YACpC,qCAAqC;YACrC,qBAAqB;YACrB,2BAA2B;YAC3B,+BAA+B;YAC/B,8BAA8B;YAC9B,iCAAiC;YACjC,oCAAoC;YACpC,qCAAqC;YACrC,iCAAiC;YACjC,oCAAoC;YACpC,+BAA+B;YAC/B,sCAAsC;YACtC,uCAAuC;YACvC,4BAA4B;YAC5B,0BAA0B;YAC1B,2BAA2B;YAC3B,yBAAyB;YACzB,+BAA+B;YAC/B,6BAA6B;YAC7B,iCAAiC;YACjC,kCAAkC;YAClC,4BAA4B;YAC5B,0BAA0B;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,gCAAgC;YAChC,gCAAgC;YAChC,yBAAyB;YACzB,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YACxB,8BAA8B;YAC9B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,wBAAwB;YACxB,2BAA2B;YAC3B,iCAAiC;YACjC,iCAAiC;YACjC,0BAA0B;YAC1B,8BAA8B;YAC9B,2BAA2B;YAC3B,2BAA2B;YAC3B,iCAAiC;YACjC,iCAAiC;YACjC,0BAA0B;YAC1B,8BAA8B;YAC9B,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,kCAAkC;YAClC,kCAAkC;YAClC,kCAAkC;YAClC,sCAAsC;YACtC,sCAAsC;YACtC,uCAAuC;YACvC,sCAAsC;YACtC,iCAAiC;YACjC,iCAAiC;YACjC,yBAAyB;YACzB,8BAA8B;YAC9B,iCAAiC;YACjC,+BAA+B;YAC/B,oCAAoC;YACpC,iCAAiC;YACjC,8BAA8B;YAC9B,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,iCAAiC;YACjC,2CAA2C;YAC3C,oCAAoC;YACpC,uCAAuC;YACvC,mCAAmC;YACnC,oCAAoC;YACpC,yCAAyC;AAC1C,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,8EAA8E;AACvF,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,+BAA+B;YAC/B,sBAAsB;YACtB,iCAAiC;YACjC,iCAAiC;YACjC,6BAA6B;YAC7B,kCAAkC;YAClC,2BAA2B;YAC3B,4BAA4B;YAC5B,+BAA+B;YAC/B,iCAAiC;YACjC,8BAA8B;YAC9B,8BAA8B;YAC9B,8BAA8B;YAC9B,iCAAiC;YACjC,kCAAkC;YAClC,iCAAiC;YACjC,4BAA4B;YAC5B,2BAA2B;YAC3B,2BAA2B;YAC3B,8BAA8B;YAC9B,4BAA4B;YAC5B,6BAA6B;YAC7B,4BAA4B;YAC5B,0BAA0B;YAC1B,4BAA4B;YAC5B,6BAA6B;YAC7B,2BAA2B;YAC3B,uBAAuB;YACvB,0BAA0B;YAC1B,6BAA6B;YAC7B,gCAAgC;YAChC,iCAAiC;YACjC,8BAA8B;YAC9B,2BAA2B;YAC3B,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,4BAA4B;YAC5B,4BAA4B;YAC5B,+BAA+B;YAC/B,qCAAqC;YACrC,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;YAC5B,6BAA6B;YAC7B,yBAAyB;YACzB,8BAA8B;YAC9B,mCAAmC;YACnC,iCAAiC;YACjC,4BAA4B;YAC5B,4BAA4B;YAC5B,kCAAkC;YAClC,mCAAmC;YACnC,kCAAkC;YAClC,oCAAoC;YACpC,8BAA8B;YAC9B,kCAAkC;YAClC,oCAAoC;YACpC,oCAAoC;YACpC,gCAAgC;YAChC,uCAAuC;YACvC,6BAA6B;YAC7B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,yBAAyB;YACzB,yBAAyB;YACzB,kBAAkB;YAClB,6BAA6B;YAC7B,wBAAwB;YACxB,kCAAkC;YAClC,4BAA4B;YAC5B,sBAAsB;YACtB,gCAAgC;YAChC,0BAA0B;YAC1B,uBAAuB;YACvB,8BAA8B;YAC9B,6BAA6B;YAC7B,wBAAwB;YACxB,gCAAgC;YAChC,uBAAuB;YACvB,+BAA+B;YAC/B,0BAA0B;YAC1B,gCAAgC;YAChC,8BAA8B;YAC9B,gCAAgC;YAChC,gCAAgC;YAChC,+BAA+B;YAC/B,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,yBAAyB;YACzB,wBAAwB;YACxB,kCAAkC;YAClC,4BAA4B;YAC5B,mBAAmB;YACnB,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,mBAAmB;YACnB,yBAAyB;YACzB,yBAAyB;YACzB,gCAAgC;YAChC,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;AAC3B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,mBAAmB;YACnB,6BAA6B;YAC7B,6BAA6B;YAC7B,6BAA6B;YAC7B,2BAA2B;YAC3B,+BAA+B;YAC/B,4BAA4B;YAC5B,4BAA4B;YAC5B,iCAAiC;YACjC,iCAAiC;YACjC,2BAA2B;YAC3B,kCAAkC;YAClC,iCAAiC;YACjC,4BAA4B;YAC5B,oBAAoB;YACpB,2BAA2B;YAC3B,iCAAiC;YACjC,4BAA4B;YAC5B,kCAAkC;YAClC,uBAAuB;YACvB,oCAAoC;AACrC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,gBAAgB;YAChB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,wBAAwB;YACxB,4BAA4B;YAC5B,8BAA8B;YAC9B,uBAAuB;YACvB,4BAA4B;YAC5B,yBAAyB;YACzB,6BAA6B;YAC7B,+BAA+B;YAC/B,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,yBAAyB;YACzB,iBAAiB;YACjB,uBAAuB;YACvB,+BAA+B;YAC/B,8BAA8B;YAC9B,8BAA8B;YAC9B,yCAAyC;YACzC,yBAAyB;YACzB,+BAA+B;YAC/B,iCAAiC;AAClC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,+BAA+B;YAC/B,eAAe;YACf,mBAAmB;YACnB,yBAAyB;YACzB,yBAAyB;YACzB,kBAAkB;YAClB,6BAA6B;YAC7B,6BAA6B;YAC7B,8BAA8B;YAC9B,6BAA6B;YAC7B,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;YAC9B,2BAA2B;YAC3B,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;YAC9B,2BAA2B;YAC3B,wBAAwB;YACxB,qBAAqB;YACrB,mBAAmB;YACnB,yBAAyB;YACzB,+BAA+B;YAC/B,+BAA+B;YAC/B,yBAAyB;YACzB,gCAAgC;YAChC,4BAA4B;YAC5B,4BAA4B;YAC5B,0BAA0B;YAC1B,oBAAoB;YACpB,0BAA0B;YAC1B,8BAA8B;YAC9B,+BAA+B;YAC/B,4BAA4B;YAC5B,2BAA2B;YAC3B,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;YAC5B,0BAA0B;YAC1B,oBAAoB;YACpB,0BAA0B;YAC1B,8BAA8B;YAC9B,+BAA+B;YAC/B,4BAA4B;AAC7B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,uCAAuC;YACvC,0CAA0C;YAC1C,iCAAiC;YACjC,6CAA6C;YAC7C,iDAAiD;YACjD,mDAAmD;YACnD,+BAA+B;YAC/B,qCAAqC;YACrC,qCAAqC;YACrC,2CAA2C;YAC3C,6CAA6C;YAC7C,0BAA0B;YAC1B,4BAA4B;YAC5B,qCAAqC;YACrC,+BAA+B;YAC/B,iBAAiB;YACjB,8BAA8B;YAC9B,2BAA2B;YAC3B,qBAAqB;YACrB,2BAA2B;YAC3B,2BAA2B;YAC3B,0BAA0B;YAC1B,+BAA+B;YAC/B,sCAAsC;YACtC,qCAAqC;YACrC,8BAA8B;YAC9B,6BAA6B;YAC7B,iCAAiC;YACjC,gCAAgC;YAChC,gCAAgC;YAChC,yBAAyB;YACzB,oBAAoB;YACpB,6BAA6B;YAC7B,6BAA6B;YAC7B,0BAA0B;YAC1B,kCAAkC;YAClC,yBAAyB;YACzB,6BAA6B;YAC7B,yBAAyB;YACzB,wBAAwB;YACxB,qBAAqB;YACrB,8BAA8B;YAC9B,gCAAgC;AACjC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,gCAAgC;YAChC,kCAAkC;YAClC,oCAAoC;YACpC,iCAAiC;YACjC,iCAAiC;YACjC,iCAAiC;YACjC,gCAAgC;YAChC,sCAAsC;YACtC,qCAAqC;YACrC,qCAAqC;YACrC,gCAAgC;YAChC,oCAAoC;YACpC,sCAAsC;YACtC,uCAAuC;YACvC,gCAAgC;YAChC,sCAAsC;YACtC,oCAAoC;YACpC,sCAAsC;YACtC,6BAA6B;YAC7B,uCAAuC;YACvC,yCAAyC;YACzC,6CAA6C;YAC7C,wCAAwC;YACxC,qCAAqC;YACrC,sCAAsC;YACtC,qCAAqC;YACrC,gCAAgC;YAChC,wBAAwB;YACxB,uCAAuC;YACvC,gCAAgC;YAChC,sCAAsC;YACtC,oCAAoC;YACpC,sCAAsC;YACtC,yCAAyC;YACzC,sCAAsC;YACtC,yCAAyC;YACzC,gCAAgC;YAChC,8BAA8B;YAC9B,iCAAiC;YACjC,+BAA+B;YAC/B,kCAAkC;YAClC,oCAAoC;YACpC,uCAAuC;YACvC,mCAAmC;YACnC,oCAAoC;YACpC,kCAAkC;YAClC,uCAAuC;YACvC,0CAA0C;YAC1C,oCAAoC;YACpC,6BAA6B;YAC7B,uCAAuC;YACvC,uCAAuC;YACvC,uCAAuC;YACvC,8BAA8B;YAC9B,qCAAqC;YACrC,oCAAoC;YACpC,iCAAiC;YACjC,iCAAiC;YACjC,sCAAsC;YACtC,2BAA2B;YAC3B,iCAAiC;YACjC,+BAA+B;YAC/B,wCAAwC;AACzC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,qEAAqE;AAC9E,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,uBAAuB;YACvB,0BAA0B;YAC1B,sBAAsB;YACtB,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;YACzB,qBAAqB;YACrB,wBAAwB;YACxB,yBAAyB;YACzB,oBAAoB;YACpB,4BAA4B;YAC5B,oBAAoB;YACpB,kBAAkB;YAClB,wBAAwB;YACxB,2BAA2B;YAC3B,wBAAwB;YACxB,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,0EAA0E;AACnF,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,8BAA8B;YAC9B,gCAAgC;YAChC,kCAAkC;YAClC,+BAA+B;YAC/B,+BAA+B;YAC/B,+BAA+B;YAC/B,8BAA8B;YAC9B,mCAAmC;YACnC,mCAAmC;YACnC,qCAAqC;YACrC,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC;YAClC,oCAAoC;YACpC,2BAA2B;YAC3B,qCAAqC;YACrC,uCAAuC;YACvC,2CAA2C;YAC3C,sCAAsC;YACtC,mCAAmC;YACnC,oCAAoC;YACpC,mCAAmC;YACnC,8BAA8B;YAC9B,sBAAsB;YACtB,qCAAqC;YACrC,6BAA6B;YAC7B,mCAAmC;YACnC,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC;YAClC,uCAAuC;YACvC,oCAAoC;YACpC,uCAAuC;YACvC,8BAA8B;YAC9B,4BAA4B;YAC5B,2BAA2B;YAC3B,qCAAqC;YACrC,qCAAqC;YACrC,qCAAqC;YACrC,4BAA4B;YAC5B,+BAA+B;YAC/B,+BAA+B;YAC/B,8BAA8B;YAC9B,oCAAoC;YACpC,yBAAyB;YACzB,6BAA6B;YAC7B,mCAAmC;YACnC,sCAAsC;AACvC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,6BAA6B;YAC7B,4BAA4B;YAC5B,4BAA4B;YAC5B,8BAA8B;YAC9B,0BAA0B;YAC1B,2BAA2B;YAC3B,iCAAiC;YACjC,+BAA+B;YAC/B,iCAAiC;YACjC,yBAAyB;YACzB,iCAAiC;YACjC,0BAA0B;YAC1B,8BAA8B;YAC9B,2BAA2B;YAC3B,+BAA+B;AAChC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,CAAC,0BAA0B,CAAC;AACrC,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,8BAA8B;YAC9B,yBAAyB;YACzB,+BAA+B;YAC/B,0BAA0B;YAC1B,8BAA8B;YAC9B,yBAAyB;YACzB,6BAA6B;YAC7B,+BAA+B;YAC/B,0BAA0B;YAC1B,sBAAsB;YACtB,0BAA0B;YAC1B,gCAAgC;YAChC,gCAAgC;YAChC,yBAAyB;YACzB,gCAAgC;YAChC,kCAAkC;YAClC,sCAAsC;YACtC,iCAAiC;YACjC,0BAA0B;YAC1B,wBAAwB;YACxB,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,yBAAyB;YACzB,iBAAiB;YACjB,gCAAgC;YAChC,wBAAwB;YACxB,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,yBAAyB;YACzB,+BAA+B;YAC/B,6BAA6B;YAC7B,kCAAkC;YAClC,+BAA+B;YAC/B,kCAAkC;YAClC,+BAA+B;YAC/B,oBAAoB;YACpB,2BAA2B;YAC3B,wBAAwB;YACxB,iCAAiC;YACjC,iCAAiC;YACjC,4BAA4B;YAC5B,kCAAkC;YAClC,mCAAmC;YACnC,oCAAoC;YACpC,iCAAiC;YACjC,uCAAuC;YACvC,yCAAyC;YACzC,oCAAoC;YACpC,mCAAmC;AACpC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,+BAA+B;YAC/B,iCAAiC;YACjC,oCAAoC;YACpC,6CAA6C;YAC7C,gCAAgC;YAChC,mCAAmC;YACnC,uCAAuC;YACvC,oCAAoC;YACpC,qCAAqC;YACrC,gCAAgC;YAChC,gCAAgC;YAChC,oCAAoC;YACpC,oCAAoC;YACpC,+BAA+B;YAC/B,mCAAmC;YACnC,qCAAqC;YACrC,gCAAgC;YAChC,4BAA4B;YAC5B,gCAAgC;YAChC,sCAAsC;YACtC,sCAAsC;YACtC,+BAA+B;YAC/B,uCAAuC;YACvC,uCAAuC;YACvC,uCAAuC;YACvC,sCAAsC;YACtC,wCAAwC;YACxC,mCAAmC;YACnC,uCAAuC;YACvC,sCAAsC;YACtC,0CAA0C;YAC1C,0CAA0C;YAC1C,uCAAuC;YACvC,kCAAkC;YAClC,sCAAsC;YACtC,wCAAwC;YACxC,4CAA4C;YAC5C,uCAAuC;YACvC,gCAAgC;YAChC,8BAA8B;YAC9B,8BAA8B;YAC9B,qCAAqC;YACrC,oCAAoC;YACpC,+BAA+B;YAC/B,uBAAuB;YACvB,+BAA+B;YAC/B,qCAAqC;YACrC,mCAAmC;YACnC,wCAAwC;YACxC,qCAAqC;YACrC,wCAAwC;YACxC,mCAAmC;YACnC,mCAAmC;YACnC,6BAA6B;YAC7B,gCAAgC;YAChC,2CAA2C;YAC3C,8BAA8B;YAC9B,qCAAqC;YACrC,iCAAiC;YACjC,mCAAmC;YACnC,mCAAmC;YACnC,iCAAiC;YACjC,8CAA8C;YAC9C,mCAAmC;YACnC,kCAAkC;YAClC,sCAAsC;YACtC,gCAAgC;YAChC,wCAAwC;YACxC,4BAA4B;YAC5B,gCAAgC;YAChC,6BAA6B;YAC7B,oCAAoC;YACpC,mCAAmC;YACnC,gCAAgC;YAChC,gCAAgC;YAChC,qCAAqC;YACrC,0BAA0B;YAC1B,uCAAuC;YACvC,+BAA+B;AAChC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,eAAe;YACf,yBAAyB;YACzB,yBAAyB;YACzB,yBAAyB;YACzB,uBAAuB;YACvB,6BAA6B;YAC7B,wBAAwB;YACxB,gBAAgB;YAChB,uBAAuB;YACvB,gCAAgC;YAChC,kCAAkC;YAClC,2BAA2B;YAC3B,qBAAqB;YACrB,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,6BAA6B;YAC7B,yBAAyB;YACzB,0BAA0B;YAC1B,wBAAwB;YACxB,uBAAuB;YACvB,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;YACnB,mBAAmB;YACnB,gCAAgC;YAChC,cAAc;AACf,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,gCAAgC;YAChC,sCAAsC;YACtC,oCAAoC;YACpC,sCAAsC;YACtC,oCAAoC;YACpC,qBAAqB;YACrB,qCAAqC;AACtC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,mBAAmB;YACnB,8BAA8B;YAC9B,yBAAyB;YACzB,mCAAmC;YACnC,uBAAuB;YACvB,iCAAiC;YACjC,2BAA2B;YAC3B,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,yBAAyB;YACzB,iCAAiC;YACjC,wBAAwB;YACxB,gCAAgC;YAChC,wBAAwB;YACxB,2BAA2B;YAC3B,iCAAiC;YACjC,+BAA+B;YAC/B,iCAAiC;YACjC,iCAAiC;YACjC,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,yBAAyB;YACzB,mCAAmC;YACnC,6BAA6B;YAC7B,qBAAqB;YACrB,2BAA2B;YAC3B,2BAA2B;YAC3B,oBAAoB;YACpB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,2BAA2B;YAC3B,yBAAyB;YACzB,iCAAiC;YACjC,qBAAqB;YACrB,2BAA2B;YAC3B,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,6BAA6B;YAC7B,oCAAoC;YACpC,6BAA6B;YAC7B,oCAAoC;YACpC,sCAAsC;YACtC,8BAA8B;YAC9B,8BAA8B;YAC9B,0CAA0C;YAC1C,wCAAwC;YACxC,2BAA2B;YAC3B,kCAAkC;YAClC,6BAA6B;YAC7B,6BAA6B;YAC7B,0BAA0B;YAC1B,8BAA8B;YAC9B,6BAA6B;YAC7B,gCAAgC;YAChC,+BAA+B;YAC/B,8BAA8B;YAC9B,qCAAqC;YACrC,iCAAiC;YACjC,uCAAuC;YACvC,+BAA+B;YAC/B,qCAAqC;YACrC,mCAAmC;YACnC,6BAA6B;YAC7B,qCAAqC;YACrC,mCAAmC;YACnC,8BAA8B;YAC9B,qCAAqC;YACrC,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,oEAAoE;AAC7E,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,oBAAoB;YACpB,qBAAqB;YACrB,6BAA6B;YAC7B,4BAA4B;YAC5B,sBAAsB;AACvB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,wBAAwB;YACxB,4BAA4B;YAC5B,yBAAyB;YACzB,+BAA+B;YAC/B,uCAAuC;YACvC,oCAAoC;YACpC,iCAAiC;YACjC,qCAAqC;YACrC,kCAAkC;YAClC,+BAA+B;YAC/B,8BAA8B;YAC9B,uBAAuB;YACvB,6BAA6B;YAC7B,0BAA0B;YAC1B,2BAA2B;YAC3B,uBAAuB;YACvB,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,4BAA4B;YAC5B,iCAAiC;YACjC,4BAA4B;YAC5B,0BAA0B;YAC1B,wBAAwB;YACxB,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,2BAA2B;YAC3B,0BAA0B;YAC1B,+BAA+B;YAC/B,0BAA0B;YAC1B,8BAA8B;YAC9B,gCAAgC;YAChC,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,iCAAiC;YACjC,0BAA0B;YAC1B,kCAAkC;YAClC,kCAAkC;YAClC,kCAAkC;YAClC,iCAAiC;YACjC,mCAAmC;YACnC,8BAA8B;YAC9B,kCAAkC;YAClC,iCAAiC;YACjC,qCAAqC;YACrC,qCAAqC;YACrC,kCAAkC;YAClC,6BAA6B;YAC7B,iCAAiC;YACjC,mCAAmC;YACnC,uCAAuC;YACvC,kCAAkC;YAClC,2BAA2B;YAC3B,yBAAyB;YACzB,yBAAyB;YACzB,gCAAgC;YAChC,+BAA+B;YAC/B,0BAA0B;YAC1B,kBAAkB;YAClB,0BAA0B;YAC1B,gCAAgC;YAChC,8BAA8B;YAC9B,mCAAmC;YACnC,gCAAgC;YAChC,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,wBAAwB;YACxB,2BAA2B;YAC3B,sCAAsC;YACtC,yBAAyB;YACzB,4BAA4B;YAC5B,8BAA8B;YAC9B,8BAA8B;YAC9B,4BAA4B;YAC5B,oCAAoC;YACpC,yCAAyC;YACzC,8BAA8B;YAC9B,uBAAuB;YACvB,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,2BAA2B;YAC3B,2BAA2B;YAC3B,gCAAgC;YAChC,qBAAqB;YACrB,kCAAkC;AACnC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,qBAAqB;YACrB,+BAA+B;YAC/B,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,yBAAyB;YACzB,+BAA+B;YAC/B,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,uBAAuB;YACvB,+BAA+B;YAC/B,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,sBAAsB;YACtB,iCAAiC;YACjC,8BAA8B;YAC9B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,yBAAyB;YACzB,+BAA+B;YAC/B,0BAA0B;YAC1B,gCAAgC;YAChC,8BAA8B;YAC9B,gCAAgC;YAChC,sBAAsB;YACtB,yBAAyB;YACzB,+BAA+B;YAC/B,kBAAkB;YAClB,0BAA0B;YAC1B,gCAAgC;YAChC,8BAA8B;YAC9B,mCAAmC;YACnC,gCAAgC;YAChC,mCAAmC;YACnC,0BAA0B;YAC1B,8BAA8B;YAC9B,gCAAgC;YAChC,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,+BAA+B;YAC/B,8BAA8B;YAC9B,2BAA2B;YAC3B,yBAAyB;YACzB,gCAAgC;YAChC,uBAAuB;YACvB,iCAAiC;YACjC,iCAAiC;YACjC,iCAAiC;YACjC,2BAA2B;YAC3B,2BAA2B;YAC3B,0BAA0B;YAC1B,gCAAgC;YAChC,8BAA8B;YAC9B,gCAAgC;YAChC,8BAA8B;YAC9B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,+BAA+B;YAC/B,8BAA8B;YAC9B,8BAA8B;YAC9B,iCAAiC;YACjC,uCAAuC;YACvC,wCAAwC;YACxC,+BAA+B;YAC/B,8BAA8B;YAC9B,8BAA8B;YAC9B,uCAAuC;YACvC,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,0BAA0B;YAC1B,4BAA4B;YAC5B,qCAAqC;YACrC,8BAA8B;YAC9B,6BAA6B;YAC7B,yBAAyB;YACzB,4BAA4B;YAC5B,0BAA0B;YAC1B,gCAAgC;YAChC,yBAAyB;YACzB,kCAAkC;YAClC,6BAA6B;YAC7B,kCAAkC;YAClC,8BAA8B;YAC9B,2BAA2B;YAC3B,6BAA6B;AAC9B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,2BAA2B;YAC3B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,6BAA6B;YAC7B,+BAA+B;YAC/B,2BAA2B;YAC3B,wBAAwB;YACxB,8BAA8B;YAC9B,yBAAyB;YACzB,wBAAwB;YACxB,+BAA+B;YAC/B,iBAAiB;YACjB,uBAAuB;YACvB,gCAAgC;YAChC,mCAAmC;YACnC,mCAAmC;YACnC,sBAAsB;YACtB,0BAA0B;YAC1B,6BAA6B;YAC7B,6BAA6B;YAC7B,6BAA6B;YAC7B,6BAA6B;YAC7B,0BAA0B;YAC1B,6BAA6B;YAC7B,6BAA6B;YAC7B,yBAAyB;YACzB,2BAA2B;YAC3B,2BAA2B;YAC3B,6BAA6B;YAC7B,iCAAiC;YACjC,uBAAuB;YACvB,8BAA8B;YAC9B,0BAA0B;YAC1B,qCAAqC;YACrC,8BAA8B;YAC9B,yBAAyB;YACzB,2BAA2B;YAC3B,8BAA8B;YAC9B,8BAA8B;YAC9B,0BAA0B;YAC1B,6BAA6B;YAC7B,6BAA6B;YAC7B,+BAA+B;YAC/B,4BAA4B;YAC5B,6BAA6B;YAC7B,qBAAqB;YACrB,4BAA4B;YAC5B,wBAAwB;YACxB,0BAA0B;YAC1B,4BAA4B;YAC5B,6BAA6B;YAC7B,kCAAkC;YAClC,+BAA+B;YAC/B,kCAAkC;YAClC,2BAA2B;YAC3B,8BAA8B;YAC9B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,yBAAyB;YACzB,6BAA6B;YAC7B,6BAA6B;YAC7B,8BAA8B;YAC9B,6BAA6B;YAC7B,wBAAwB;YACxB,wBAAwB;YACxB,gBAAgB;YAChB,gCAAgC;YAChC,gCAAgC;YAChC,gCAAgC;YAChC,wBAAwB;YACxB,sBAAsB;YACtB,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,2BAA2B;YAC3B,yBAAyB;YACzB,uBAAuB;YACvB,wBAAwB;YACxB,yBAAyB;YACzB,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,qBAAqB;YACrB,wBAAwB;YACxB,oBAAoB;YACpB,uBAAuB;YACvB,0BAA0B;YAC1B,wBAAwB;YACxB,yBAAyB;YACzB,uBAAuB;YACvB,oBAAoB;YACpB,2BAA2B;YAC3B,gCAAgC;YAChC,0BAA0B;YAC1B,wBAAwB;AACzB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,mBAAmB;YACnB,kBAAkB;YAClB,wBAAwB;YACxB,wBAAwB;YACxB,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,yBAAyB;YACzB,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB;YACtB,8BAA8B;YAC9B,wBAAwB;YACxB,kBAAkB;YAClB,wBAAwB;YACxB,4BAA4B;YAC5B,6BAA6B;YAC7B,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;YAClB,wBAAwB;YACxB,4BAA4B;YAC5B,6BAA6B;YAC7B,uBAAuB;YACvB,kBAAkB;YAClB,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;YAC9B,wBAAwB;YACxB,kBAAkB;YAClB,wBAAwB;YACxB,4BAA4B;YAC5B,6BAA6B;YAC7B,yBAAyB;YACzB,yBAAyB;YACzB,yBAAyB;YACzB,mBAAmB;YACnB,yBAAyB;YACzB,6BAA6B;YAC7B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,8BAA8B;YAC9B,gCAAgC;YAChC,4BAA4B;YAC5B,yBAAyB;YACzB,gBAAgB;YAChB,oBAAoB;YACpB,6BAA6B;YAC7B,+BAA+B;YAC/B,2BAA2B;YAC3B,mBAAmB;YACnB,yBAAyB;YACzB,yBAAyB;YACzB,yBAAyB;YACzB,wBAAwB;YACxB,8BAA8B;YAC9B,uBAAuB;YACvB,wBAAwB;YACxB,sBAAsB;YACtB,+BAA+B;YAC/B,iCAAiC;YACjC,qBAAqB;YACrB,6BAA6B;YAC7B,8BAA8B;YAC9B,oBAAoB;YACpB,gCAAgC;YAChC,6BAA6B;YAC7B,+BAA+B;YAC/B,gCAAgC;YAChC,wBAAwB;YACxB,8BAA8B;YAC9B,2BAA2B;YAC3B,iCAAiC;YACjC,2BAA2B;AAC5B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,2BAA2B;YAC3B,2BAA2B;YAC3B,2BAA2B;YAC3B,+BAA+B;YAC/B,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,0BAA0B;YAC1B,kBAAkB;YAClB,0BAA0B;YAC1B,gCAAgC;YAChC,4BAA4B;YAC5B,iCAAiC;YACjC,4BAA4B;YAC5B,8BAA8B;YAC9B,6BAA6B;YAC7B,4BAA4B;YAC5B,iCAAiC;YACjC,4BAA4B;YAC5B,8BAA8B;YAC9B,6BAA6B;YAC7B,8BAA8B;YAC9B,qBAAqB;YACrB,6BAA6B;YAC7B,kCAAkC;YAClC,6BAA6B;YAC7B,+BAA+B;YAC/B,8BAA8B;YAC9B,4BAA4B;YAC5B,iCAAiC;YACjC,4BAA4B;YAC5B,8BAA8B;YAC9B,6BAA6B;YAC7B,0BAA0B;YAC1B,gCAAgC;YAChC,mCAAmC;YACnC,gCAAgC;YAChC,2BAA2B;YAC3B,mCAAmC;YACnC,8BAA8B;YAC9B,0BAA0B;YAC1B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;YAC3B,0BAA0B;YAC1B,kCAAkC;YAClC,6BAA6B;YAC7B,kCAAkC;YAClC,6BAA6B;YAC7B,+BAA+B;YAC/B,8BAA8B;AAC/B,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,MAAM,EAAE;YACN,0BAA0B;YAC1B,kBAAkB;YAClB,4BAA4B;YAC5B,4BAA4B;YAC5B,4BAA4B;YAC5B,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,mBAAmB;YACnB,2BAA2B;YAC3B,0BAA0B;YAC1B,yBAAyB;YACzB,uBAAuB;YACvB,sBAAsB;YACtB,sBAAsB;YACtB,mCAAmC;AACpC,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,oCAAoC;AAC7C,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,MAAM,EAAE;YACN,gCAAgC;YAChC,qCAAqC;YACrC,kCAAkC;YAClC,mCAAmC;YACnC,8BAA8B;YAC9B,6BAA6B;YAC7B,2BAA2B;YAC3B,gCAAgC;YAChC,2BAA2B;YAC3B,2BAA2B;YAC3B,uBAAuB;YACvB,0BAA0B;YAC1B,sCAAsC;YACtC,8BAA8B;YAC9B,8BAA8B;YAC9B,8BAA8B;YAC9B,gBAAgB;YAChB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,oBAAoB;YACpB,uBAAuB;YACvB,0BAA0B;YAC1B,2BAA2B;YAC3B,uBAAuB;YACvB,0BAA0B;YAC1B,qBAAqB;YACrB,4BAA4B;YAC5B,wBAAwB;YACxB,2BAA2B;YAC3B,+BAA+B;YAC/B,6BAA6B;YAC7B,6BAA6B;YAC7B,uBAAuB;YACvB,0BAA0B;YAC1B,yBAAyB;YACzB,eAAe;YACf,yBAAyB;YACzB,gBAAgB;YAChB,sBAAsB;YACtB,sBAAsB;YACtB,mBAAmB;YACnB,yBAAyB;YACzB,0BAA0B;YAC1B,2BAA2B;YAC3B,wBAAwB;YACxB,wBAAwB;YACxB,sBAAsB;YACtB,gBAAgB;YAChB,sBAAsB;YACtB,0BAA0B;YAC1B,2BAA2B;YAC3B,wBAAwB;YACxB,qBAAqB;YACrB,wBAAwB;YACxB,oCAAoC;YACpC,4BAA4B;YAC5B,4BAA4B;YAC5B,4BAA4B;YAC5B,uBAAuB;YACvB,uBAAuB;YACvB,qBAAqB;YACrB,uBAAuB;YACvB,yBAAyB;YACzB,+BAA+B;YAC/B,kBAAkB;YAClB,uBAAuB;YACvB,uBAAuB;YACvB,6BAA6B;YAC7B,qCAAqC;YACrC,6BAA6B;YAC7B,6BAA6B;YAC7B,6BAA6B;YAC7B,gBAAgB;YAChB,0BAA0B;YAC1B,iBAAiB;YACjB,uBAAuB;YACvB,uBAAuB;YACvB,6BAA6B;YAC7B,2BAA2B;YAC3B,0BAA0B;YAC1B,4BAA4B;YAC5B,sBAAsB;YACtB,wBAAwB;YACxB,qBAAqB;YACrB,2BAA2B;YAC3B,gCAAgC;YAChC,gCAAgC;YAChC,gCAAgC;YAChC,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,mBAAmB;YACnB,sBAAsB;YACtB,0BAA0B;YAC1B,wBAAwB;YACxB,kBAAkB;YAClB,cAAc;YACd,kBAAkB;YAClB,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,qBAAqB;YACrB,yBAAyB;YACzB,0BAA0B;YAC1B,gCAAgC;YAChC,sBAAsB;YACtB,uBAAuB;YACvB,uBAAuB;AACxB,SAAA;AACF,KAAA;;;ACp6GH;;;;;;;;;;;;;;;;;;;AAmBG;AAEH;SACgB,kBAAkB,CAAC,EAAe,EAAE,KAAa,EAAE,QAAgB,EAAA;AACjF,IAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC/D,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,QAAQ;IAEzB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7C,OAAO,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,CAAA,CAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;AAC5E;AAEA;;;AAGG;SACa,kBAAkB,CAAC,EAAe,EAAE,KAAa,EAAE,QAAgB,EAAA;AACjF,IAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC/D,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,QAAQ;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7C,OAAO,KAAK,CACV,EAAE,EACF,CAAA,0BAAA,EAA6B,GAAG,CAAA,CAAE,EAClC,CAAC,CAAC,KAAI;AACJ,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,OAAO,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG;IAC/D,CAAC,EACD,QAAQ,CACT;AACH;AAEA,MAAM,EAAE,GAAG,mBAAmB;AAC9B,MAAM,MAAM,GAAG,iBAAiB;AAEhC;;;;;;;AAOG;AACH,SAAS,MAAM,CAAC,KAAa,EAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAA,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG;AACjD;AAEA;;;;;;;AAOG;AACH,SAAS,KAAK,CACZ,IAAiB,EACjB,WAAmB,EACnB,IAA4C,EAC5C,QAAgB,EAAA;AAEhB,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa;IAC9B,IAAI,CAAC,GAAG,EAAE,WAAW;AAAE,QAAA,OAAO,QAAQ;IAEtC,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,CAAA,wDAAA,EAA2D,WAAW,EAAE;AAC3F,IAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACpB,IAAA,IAAI,KAAa;AACjB,IAAA,IAAI;AACF,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACpD;YAAU;QACR,EAAE,CAAC,MAAM,EAAE;IACb;AACA,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AAClD;;ACjEA,MAAM,WAAW,GAAG,CAAC;AACrB,MAAM,wBAAwB,GAAG,CAAC;AAElC,SAAS,QAAQ,CACf,IAAoB,EACpB,MAA4B,EAC5B,QAA4B,EAAA;IAE5B,QAAQ,IAAI;AACV,QAAA,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG;AACnB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AACxC,QAAA,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI;AACpB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;;AAE1C;AAEA,SAAS,IAAI,CACX,IAAoB,EACpB,MAA4B,EAC5B,MAAsB,EACtB,QAA4B,EAC5B,GAAW,EACX,eAAuB,EAAA;IAEvB,MAAM,MAAM,GACV,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,GAAG,eAAe;IAC9F,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM;AACnD;AAEA,MAAM,QAAQ,GAA2C;AACvD,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,KAAK,EAAE,MAAM;CACd;AAED;;;;;;;;;;;;;;AAcG;AACG,SAAU,kBAAkB,CAChC,QAA4B,EAC5B,MAA4B,EAC5B,MAAsB,EACtB,QAA4B,EAC5B,GAAG,GAAG,WAAW,EACjB,eAAe,GAAG,wBAAwB,EAC1C,YAAiC,KAAK,EAAA;AAEtC,IAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC;AAAE,YAAA,OAAO,QAAQ;AACnF,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,QAAQ,GAAG,QAAQ;IAC7F;AAEA,IAAA,MAAM,eAAe,GACnB,SAAS,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/F,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KACxC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,CAC3D;AACD,IAAA,IAAI,OAAO;AAAE,QAAA,OAAO,OAAO;AAE3B,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAClF;AACH;AAEA;;;;AAIG;AACG,SAAU,uBAAuB,CACrC,QAA4B,EAC5B,MAA4B,EAC5B,MAAsB,EACtB,QAA4B,EAC5B,GAAG,GAAG,WAAW,EACjB,eAAe,GAAG,wBAAwB,EAC1C,YAAiC,KAAK,EAAA;AAEtC,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAC7B,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,GAAG,EACH,eAAe,EACf,SAAS,CACV;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAE9C,IAAA,IAAI,GAAW;AACf,IAAA,IAAI,IAAY;IAEhB,QAAQ,IAAI;AACV,QAAA,KAAK,KAAK;YACR,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM;YACtC,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;YACjC;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG;YACzB,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;YACjC;AACF,QAAA,KAAK,MAAM;YACT,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YACjC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK;YACvC;AACF,QAAA,KAAK,OAAO;YACV,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACjC,YAAA,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG;YACzB;;AAGJ,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC;AAC1F,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC;AAC3F,IAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC;AACzD,IAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC;AAEtD,IAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5B;;AC9IA,MAAM,gBAAgB,GAAG,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MACU,iBAAiB,CAAA;AAWC,IAAA,MAAA;AAVZ,IAAA,QAAQ;AAEzB;;;;;AAKG;AACc,IAAA,QAAQ,GAAG,MAAM,CAAkC,EAAE,+EAAC;AAEvE,IAAA,WAAA,CAA6B,MAA+B,EAAA;QAA/B,IAAA,CAAA,MAAM,GAAN,MAAM;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC;IAC9E;AAEA;;;;;;;AAOG;AACc,IAAA,OAAO,GAAG,QAAQ,CAAoB,MAAK;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEhC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,KAAK,GAAG,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC1E;AACA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,8EAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AACzC,IAAA,CAAC,kFAAC;AAEF;;;;;;;AAOG;AACM,IAAA,KAAK,GAAG,QAAQ,CAAkB,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAE5C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAChD,IAAI,cAAc,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;AAErF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,cAAc,CAAC;QAE9D,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;;;AAIzC,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/C;AACH,IAAA,CAAC,4EAAC;;IAGO,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAGnE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,+EAC1E;AAED;;;;;;;;;;;;;;;AAeG;AACH,IAAA,iBAAiB,CAAC,OAAoC,EAAA;AACpD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;AAEhC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE;QAE5B,IAAI,OAAO,GAAG,KAAK;QACnB,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAEvE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;gBAAE;YAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG;gBAAE;AAEvC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM;YACpB,OAAO,GAAG,IAAI;;;YAGd,IAAI,KAAK,GAAG,YAAY;AAAE,gBAAA,UAAU,IAAI,MAAM,GAAG,QAAQ;QAC3D;AAEA,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,OAAO,UAAU;IACnB;AAEA;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD;;AAGA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAChD,QAAA,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AAEpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;QAEtC,IAAI,MAAM,GAAG,SAAS;AAAE,YAAA,OAAO,MAAM;AACrC,QAAA,IAAI,SAAS,GAAG,SAAS,GAAG,cAAc;YAAE,OAAO,SAAS,GAAG,cAAc;AAC7E,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;AAMG;IACK,OAAO,CAAC,OAA0B,EAAE,QAAgB,EAAA;AAC1D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QAChC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;QAExB,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;AACpB,QAAA,OAAO,GAAG,GAAG,IAAI,EAAE;YACjB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ;gBAAE,GAAG,GAAG,GAAG;;AAClC,gBAAA,IAAI,GAAG,GAAG,GAAG,CAAC;QACrB;AACA,QAAA,OAAO,GAAG;IACZ;IAEQ,SAAS,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD;IAEQ,YAAY,GAAA;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC9C,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IACxD;IAEQ,kBAAkB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC1C,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IACxD;IAEQ,aAAa,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;;;QAGnD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACrF;AACD;;ACrPD;;;;;;;;;;;AAWG;;ACXH;;AAEG;;;;"}
|