@eduboxpro/studio 0.1.13 → 0.1.14
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/fesm2022/eduboxpro-studio.mjs +941 -5
- package/fesm2022/eduboxpro-studio.mjs.map +1 -1
- package/index.d.ts +300 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eduboxpro-studio.mjs","sources":["../../../projects/studio/src/lib/config/studio.config.ts","../../../projects/studio/src/lib/utils/font-loader.ts","../../../projects/studio/src/lib/config/studio.service.ts","../../../projects/studio/src/lib/config/provide-studio.ts","../../../projects/studio/src/lib/config/index.ts","../../../projects/studio/src/lib/primitives/icon/icon.component.ts","../../../projects/studio/src/lib/primitives/icon/icon.provider.ts","../../../projects/studio/src/lib/utils/url-validator.ts","../../../projects/studio/src/lib/utils/class-names.ts","../../../projects/studio/src/lib/utils/config-helpers.ts","../../../projects/studio/src/lib/utils/index.ts","../../../projects/studio/src/lib/primitives/badge/badge.component.ts","../../../projects/studio/src/lib/primitives/badge/badge.types.ts","../../../projects/studio/src/lib/primitives/badge/index.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.html","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/button-group/button-group.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.html","../../../projects/studio/src/lib/utils/color-converter.ts","../../../projects/studio/src/lib/primitives/color-picker/default-presets.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.html","../../../projects/studio/src/lib/primitives/drawer/drawer.service.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.html","../../../projects/studio/src/lib/primitives/input/input.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.html","../../../projects/studio/src/lib/primitives/menu/menu.component.ts","../../../projects/studio/src/lib/primitives/menu/menu.component.html","../../../projects/studio/src/lib/primitives/navbar/navbar.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.html","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.ts","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.html","../../../projects/studio/src/lib/primitives/select/select.component.ts","../../../projects/studio/src/lib/primitives/select/select.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.ts","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.types.ts","../../../projects/studio/src/lib/primitives/sidebar/index.ts","../../../projects/studio/src/lib/primitives/switch/switch.component.ts","../../../projects/studio/src/lib/primitives/switch/index.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.html","../../../projects/studio/src/lib/primitives/index.ts","../../../projects/studio/src/lib/composites/button-toggle-group/button-toggle-group.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.html","../../../projects/studio/src/lib/composites/theme-switch/theme-switch.component.ts","../../../projects/studio/src/lib/composites/theme-switch/index.ts","../../../projects/studio/src/lib/composites/index.ts","../../../projects/studio/src/lib/education/index.ts","../../../projects/studio/src/lib/directives/mask/mask-engine.ts","../../../projects/studio/src/lib/directives/mask/mask-presets.ts","../../../projects/studio/src/lib/directives/mask/mask.directive.ts","../../../projects/studio/src/public-api.ts","../../../projects/studio/src/eduboxpro-studio.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Theme mode: light or dark\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Color configuration with hover and active states\n */\nexport interface ColorConfig {\n base?: string;\n hover?: string;\n active?: string;\n bg?: string;\n}\n\n/**\n * Theme configuration interface\n */\nexport interface StudioThemeConfig {\n /**\n * Theme mode (default: 'light')\n */\n mode?: ThemeMode;\n\n /**\n * Color tokens override with hover/active states\n */\n colors?: {\n primary?: ColorConfig | string;\n secondary?: ColorConfig | string;\n success?: ColorConfig | string;\n error?: ColorConfig | string;\n warning?: ColorConfig | string;\n info?: ColorConfig | string;\n bg?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n };\n text?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n inverse?: string;\n };\n border?: {\n primary?: string;\n secondary?: string;\n };\n };\n\n /**\n * Typography tokens override\n */\n typography?: {\n fontFamily?: string;\n fontMono?: string;\n /**\n * Google Fonts configuration\n * Automatically loads fonts from Google Fonts\n */\n googleFonts?: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n }>;\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n };\n };\n\n /**\n * Spacing tokens override\n */\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n\n /**\n * Border radius tokens override\n */\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n full?: string;\n };\n\n /**\n * Shadow tokens override\n */\n shadows?: {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n\n /**\n * Transition tokens override\n */\n transitions?: {\n fast?: string;\n base?: string;\n slow?: string;\n };\n\n /**\n * Z-index tokens override\n */\n zIndex?: {\n dropdown?: number;\n sticky?: number;\n fixed?: number;\n modalBackdrop?: number;\n modal?: number;\n popover?: number;\n tooltip?: number;\n };\n}\n\n/**\n * Button component defaults configuration\n */\nexport interface ButtonDefaultsConfig {\n variant?: 'solid' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n compact?: boolean;\n}\n\n/**\n * Badge component defaults configuration\n */\nexport interface BadgeDefaultsConfig {\n variant?: 'solid' | 'outline' | 'soft' | 'dot';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\n radius?: 'sm' | 'md' | 'lg' | 'full';\n}\n\n/**\n * Switch component defaults configuration\n */\nexport interface SwitchDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success';\n}\n\n/**\n * Input component defaults configuration\n */\nexport interface InputDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n floatingLabel?: boolean;\n clearable?: boolean;\n}\n\n/**\n * Checkbox component defaults configuration\n */\nexport interface CheckboxDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * RadioButton component defaults configuration\n */\nexport interface RadioButtonDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * Textarea component defaults configuration\n */\nexport interface TextareaDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n rows?: number;\n autoResize?: boolean;\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n showCharCount?: boolean;\n clearable?: boolean;\n}\n\n/**\n * ButtonGroup component defaults configuration\n */\nexport interface ButtonGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * ButtonToggleGroup component defaults configuration\n */\nexport interface ButtonToggleGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Select component defaults configuration\n */\nexport interface SelectDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n searchable?: boolean;\n clearable?: boolean;\n maxHeight?: string;\n position?: 'auto' | 'top' | 'bottom';\n}\n\n/**\n * Drawer component defaults configuration\n */\nexport interface DrawerDefaultsConfig {\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n modal?: boolean;\n closeOnEscape?: boolean;\n closeOnBackdropClick?: boolean;\n showHeader?: boolean;\n showCloseButton?: boolean;\n closeButtonPosition?: 'left' | 'right';\n swipeToClose?: boolean;\n swipeThreshold?: number;\n animationDuration?: number;\n animationEasing?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';\n disableAnimation?: boolean;\n shadow?: boolean;\n shadowSize?: 'sm' | 'md' | 'lg' | 'xl';\n radius?: 'none' | 'sm' | 'md' | 'lg';\n autoFocus?: boolean;\n restoreFocus?: boolean;\n blockScroll?: boolean;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Sidebar component defaults configuration\n */\nexport interface SidebarDefaultsConfig {\n position?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'full';\n variant?: 'default' | 'minimal' | 'compact';\n modal?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n closeOnNavigate?: boolean;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n blockScroll?: boolean;\n swipeToClose?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * ColorPicker component defaults configuration\n */\nexport interface ColorPickerDefaultsConfig {\n variant?: 'inline' | 'popover' | 'input';\n size?: 'sm' | 'md' | 'lg';\n format?: 'hex' | 'rgb' | 'hsl';\n showAlpha?: boolean;\n showPresets?: boolean;\n showFormatToggle?: boolean;\n showCopyButton?: boolean;\n}\n\n/**\n * Components defaults configuration\n */\nexport interface ComponentsConfig {\n button?: ButtonDefaultsConfig;\n badge?: BadgeDefaultsConfig;\n switch?: SwitchDefaultsConfig;\n input?: InputDefaultsConfig;\n checkbox?: CheckboxDefaultsConfig;\n radioButton?: RadioButtonDefaultsConfig;\n textarea?: TextareaDefaultsConfig;\n buttonGroup?: ButtonGroupDefaultsConfig;\n buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;\n select?: SelectDefaultsConfig;\n drawer?: DrawerDefaultsConfig;\n sidebar?: SidebarDefaultsConfig;\n colorPicker?: ColorPickerDefaultsConfig;\n}\n\n/**\n * Main Studio configuration interface\n */\nexport interface StudioConfig {\n /**\n * Theme configuration\n */\n theme?: StudioThemeConfig;\n\n /**\n * Components default values configuration\n */\n components?: ComponentsConfig;\n}\n\n/**\n * Injection token for Studio configuration\n */\nexport const STUDIO_CONFIG = new InjectionToken<StudioConfig>('STUDIO_CONFIG', {\n providedIn: 'root',\n factory: () => ({})\n});\n","/**\n * Utility for loading Google Fonts dynamically\n */\n\n/**\n * Load a Google Font dynamically\n * @param fontFamily - Font family name (e.g., 'Inter', 'Poppins')\n * @param weights - Array of font weights to load (default: [400, 500, 600, 700])\n * @param display - Font display strategy (default: 'swap')\n *\n * @example\n * loadGoogleFont('Inter', [400, 500, 600, 700]);\n * loadGoogleFont('Poppins', [300, 400, 600]);\n */\nexport function loadGoogleFont(\n fontFamily: string,\n weights: number[] = [400, 500, 600, 700],\n display: 'auto' | 'block' | 'swap' | 'fallback' | 'optional' = 'swap'\n): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const fontId = `google-font-${fontFamily.toLowerCase().replace(/\\s+/g, '-')}`;\n if (document.getElementById(fontId)) {\n return;\n }\n\n const preconnect1 = document.createElement('link');\n preconnect1.rel = 'preconnect';\n preconnect1.href = 'https://fonts.googleapis.com';\n\n const preconnect2 = document.createElement('link');\n preconnect2.rel = 'preconnect';\n preconnect2.href = 'https://fonts.gstatic.com';\n preconnect2.crossOrigin = 'anonymous';\n\n const fontLink = document.createElement('link');\n fontLink.id = fontId;\n fontLink.rel = 'stylesheet';\n\n const weightsParam = weights.join(';');\n fontLink.href = `https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g, '+')}:wght@${weightsParam}&display=${display}`;\n\n const head = document.head || document.getElementsByTagName('head')[0];\n if (!head.querySelector('link[href*=\"fonts.googleapis.com\"]')) {\n head.appendChild(preconnect1);\n head.appendChild(preconnect2);\n }\n head.appendChild(fontLink);\n}\n\n/**\n * Load multiple Google Fonts at once\n * @param fonts - Array of font configurations\n *\n * @example\n * loadGoogleFonts([\n * { family: 'Inter', weights: [400, 500, 600, 700] },\n * { family: 'Roboto Mono', weights: [400, 500] }\n * ]);\n */\nexport function loadGoogleFonts(fonts: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n}>): void {\n fonts.forEach(font => {\n loadGoogleFont(font.family, font.weights, font.display);\n });\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\nimport { loadGoogleFonts } from '../utils/font-loader';\n\n@Injectable({ providedIn: 'root' })\nexport class StudioConfigService {\n private readonly document = inject(DOCUMENT);\n\n readonly config = signal<StudioConfig>({});\n readonly themeMode = signal<ThemeMode>('light');\n\n constructor() {\n effect(() => {\n this.applyTheme(this.config().theme);\n });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n if (config.theme?.mode) {\n this.setThemeMode(config.theme.mode);\n }\n }\n\n setThemeMode(mode: ThemeMode): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\n }\n\n updateTheme(theme: Partial<StudioThemeConfig>): void {\n this.config.update(cfg => ({\n ...cfg,\n theme: { ...cfg.theme, ...theme }\n }));\n }\n\n reset(): void {\n this.config.set({});\n this.setThemeMode('light');\n }\n\n private applyTheme(theme?: StudioThemeConfig): void {\n if (!theme) return;\n\n const root = this.document.documentElement;\n\n if (theme.colors) {\n this.applyColorTokens(root, theme.colors);\n }\n\n if (theme.typography) {\n // Load Google Fonts if configured\n if (theme.typography.googleFonts) {\n loadGoogleFonts(theme.typography.googleFonts);\n }\n\n if (theme.typography.fontFamily) {\n root.style.setProperty('--studio-font-family', theme.typography.fontFamily);\n }\n if (theme.typography.fontMono) {\n root.style.setProperty('--studio-font-mono', theme.typography.fontMono);\n }\n if (theme.typography.fontSize) {\n this.applyTokens(root, 'studio-font-size', theme.typography.fontSize);\n }\n if (theme.typography.fontWeight) {\n this.applyTokens(root, 'studio-font-weight', theme.typography.fontWeight);\n }\n if (theme.typography.lineHeight) {\n this.applyTokens(root, 'studio-line-height', theme.typography.lineHeight);\n }\n }\n\n if (theme.spacing) {\n this.applyTokens(root, 'studio-spacing', theme.spacing);\n }\n\n if (theme.borderRadius) {\n this.applyTokens(root, 'studio-radius', theme.borderRadius);\n }\n\n if (theme.shadows) {\n this.applyTokens(root, 'studio-shadow', theme.shadows);\n }\n\n if (theme.transitions) {\n this.applyTokens(root, 'studio-transition', theme.transitions);\n }\n\n if (theme.zIndex) {\n this.applyZIndexTokens(root, theme.zIndex);\n }\n }\n\n private applyColorTokens(\n root: HTMLElement,\n colors: NonNullable<StudioThemeConfig['colors']>\n ): void {\n const brandColors = ['primary', 'secondary', 'success', 'error', 'warning', 'info'] as const;\n\n brandColors.forEach(colorName => {\n const colorValue = colors[colorName];\n if (!colorValue) return;\n\n if (typeof colorValue === 'string') {\n root.style.setProperty(`--studio-${colorName}`, colorValue);\n } else {\n const config = colorValue as ColorConfig;\n if (config.base) {\n root.style.setProperty(`--studio-${colorName}`, config.base);\n }\n if (config.hover) {\n root.style.setProperty(`--studio-${colorName}-hover`, config.hover);\n }\n if (config.active) {\n root.style.setProperty(`--studio-${colorName}-active`, config.active);\n }\n if (config.bg) {\n root.style.setProperty(`--studio-${colorName}-bg`, config.bg);\n }\n }\n });\n\n if (colors.bg) {\n this.applyTokens(root, 'studio-bg', colors.bg);\n }\n\n if (colors.text) {\n this.applyTokens(root, 'studio-text', colors.text);\n }\n\n if (colors.border) {\n this.applyTokens(root, 'studio-border', colors.border);\n }\n }\n\n private applyZIndexTokens(\n root: HTMLElement,\n zIndex: NonNullable<StudioThemeConfig['zIndex']>\n ): void {\n const zIndexMap: Record<string, string> = {\n dropdown: 'dropdown',\n sticky: 'sticky',\n fixed: 'fixed',\n modalBackdrop: 'modal-backdrop',\n modal: 'modal',\n popover: 'popover',\n tooltip: 'tooltip'\n };\n\n Object.entries(zIndex).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const cssKey = zIndexMap[key] || key;\n root.style.setProperty(`--studio-z-${cssKey}`, String(value));\n }\n });\n }\n\n private applyTokens(\n root: HTMLElement,\n prefix: string,\n tokens: Record<string, string | number>\n ): void {\n Object.entries(tokens).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n root.style.setProperty(`--${prefix}-${key}`, String(value));\n }\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, inject } from '@angular/core';\nimport { STUDIO_CONFIG, StudioConfig } from './studio.config';\nimport { StudioConfigService } from './studio.service';\n\n/**\n * Provide Studio configuration for the application\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioConfig } from '@eduboxpro/studio/config';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioConfig({\n * theme: {\n * mode: 'light',\n * colors: {\n * primary: '#3b82f6'\n * }\n * }\n * })\n * ]\n * };\n * ```\n */\nexport function provideStudioConfig(config: StudioConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: STUDIO_CONFIG,\n useValue: config\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const studioConfig = inject(StudioConfigService);\n const initialConfig = inject(STUDIO_CONFIG);\n studioConfig.configure(initialConfig);\n }\n }\n ]);\n}\n","/**\n * Configuration module\n * @module config\n */\n\nexport * from './studio.config';\nexport * from './studio.service';\nexport * from './provide-studio';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { LucideAngularModule, icons } from 'lucide-angular';\n\n/**\n * Icon component with Lucide icons support\n *\n * @example\n * <studio-icon name=\"check\" size=\"24\" color=\"primary\" />\n */\n@Component({\n selector: 'studio-icon',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n },\n template: `\n @if (lucideIcon(); as iconName) {\n <lucide-icon\n [name]=\"iconName\"\n [size]=\"size()\"\n [color]=\"computedColor()\"\n [strokeWidth]=\"strokeWidth()\"\n [absoluteStrokeWidth]=\"absoluteStrokeWidth()\"\n />\n }\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n `]\n})\nexport class IconComponent {\n name = input.required<string>();\n size = input<number>(24);\n color = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'inherit' | string>('inherit');\n strokeWidth = input<number>(2);\n absoluteStrokeWidth = input<boolean>(false);\n showFallback = input<boolean>(true);\n fallbackIcon = input<string>('help-circle');\n\n protected readonly icons = icons;\n\n protected lucideIcon = computed(() => {\n const iconName = this.name();\n\n if (iconName && (icons as any)[iconName]) {\n return iconName;\n }\n\n const pascalCaseName = this.kebabToPascalCase(iconName);\n if (pascalCaseName && (icons as any)[pascalCaseName]) {\n return pascalCaseName;\n }\n\n if (this.showFallback()) {\n const fallback = this.fallbackIcon();\n if ((icons as any)[fallback]) {\n return fallback;\n }\n const pascalCaseFallback = this.kebabToPascalCase(fallback);\n if (pascalCaseFallback && (icons as any)[pascalCaseFallback]) {\n return pascalCaseFallback;\n }\n }\n\n return null;\n });\n\n private kebabToPascalCase(str: string): string {\n return str\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n }\n\n protected computedColor = computed(() => {\n const colorValue = this.color();\n\n const colorMap: Record<string, string> = {\n 'primary': 'var(--studio-primary)',\n 'secondary': 'var(--studio-secondary)',\n 'success': 'var(--studio-success)',\n 'error': 'var(--studio-error)',\n 'warning': 'var(--studio-warning)',\n 'inherit': 'currentColor'\n };\n\n return colorMap[colorValue] || colorValue;\n });\n\n protected hostClasses = computed(() => {\n return ['studio-icon'];\n });\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\nimport * as LucideIcons from 'lucide-angular';\n\nexport type IconPreset = 'minimal' | 'common' | 'full';\n\nexport interface StudioIconConfig {\n preset?: IconPreset;\n customIcons?: Record<string, any>;\n}\n\n// Минимальный набор - только для внутренних компонентов библиотеки\nconst MINIMAL_ICONS = {\n X: LucideIcons.X,\n ChevronDown: LucideIcons.ChevronDown,\n ChevronUp: LucideIcons.ChevronUp,\n ChevronLeft: LucideIcons.ChevronLeft,\n ChevronRight: LucideIcons.ChevronRight,\n Check: LucideIcons.Check,\n Loader2: LucideIcons.Loader2,\n Search: LucideIcons.Search,\n};\n\n// Расширенный набор - частоиспользуемые иконки для UI\nconst COMMON_ICONS = {\n ...MINIMAL_ICONS,\n ArrowRight: LucideIcons.ArrowRight,\n ArrowLeft: LucideIcons.ArrowLeft,\n Download: LucideIcons.Download,\n Upload: LucideIcons.Upload,\n Mail: LucideIcons.Mail,\n Phone: LucideIcons.Phone,\n Heart: LucideIcons.Heart,\n Star: LucideIcons.Star,\n Settings: LucideIcons.Settings,\n User: LucideIcons.User,\n Users: LucideIcons.Users,\n Trash2: LucideIcons.Trash2,\n Pen: LucideIcons.Pen,\n Edit2: LucideIcons.Edit2,\n Plus: LucideIcons.Plus,\n Minus: LucideIcons.Minus,\n Filter: LucideIcons.Filter,\n ExternalLink: LucideIcons.ExternalLink,\n Link: LucideIcons.Link,\n Copy: LucideIcons.Copy,\n Share2: LucideIcons.Share2,\n House: LucideIcons.House,\n Menu: LucideIcons.Menu,\n MoreVertical: LucideIcons.MoreVertical,\n MoreHorizontal: LucideIcons.MoreHorizontal,\n Bell: LucideIcons.Bell,\n Calendar: LucideIcons.Calendar,\n Clock: LucideIcons.Clock,\n Eye: LucideIcons.Eye,\n EyeOff: LucideIcons.EyeOff,\n Lock: LucideIcons.Lock,\n LockOpen: LucideIcons.LockOpen,\n LogIn: LucideIcons.LogIn,\n LogOut: LucideIcons.LogOut,\n CircleAlert: LucideIcons.CircleAlert,\n TriangleAlert: LucideIcons.TriangleAlert,\n Info: LucideIcons.Info,\n CircleCheck: LucideIcons.CircleCheck,\n CircleX: LucideIcons.CircleX,\n CircleQuestionMark: LucideIcons.CircleQuestionMark,\n File: LucideIcons.File,\n FileText: LucideIcons.FileText,\n Folder: LucideIcons.Folder,\n FolderOpen: LucideIcons.FolderOpen,\n Image: LucideIcons.Image,\n Save: LucideIcons.Save,\n Printer: LucideIcons.Printer,\n RefreshCw: LucideIcons.RefreshCw,\n RotateCw: LucideIcons.RotateCw,\n Loader: LucideIcons.Loader,\n ShoppingCart: LucideIcons.ShoppingCart,\n Sun: LucideIcons.Sun,\n Moon: LucideIcons.Moon,\n TextAlignStart: LucideIcons.TextAlignStart,\n TextAlignCenter: LucideIcons.TextAlignCenter,\n TextAlignEnd: LucideIcons.TextAlignEnd,\n TextAlignJustify: LucideIcons.TextAlignJustify,\n Bold: LucideIcons.Bold,\n Italic: LucideIcons.Italic,\n Underline: LucideIcons.Underline,\n Strikethrough: LucideIcons.Strikethrough,\n Grid3x3: LucideIcons.Grid3x3,\n List: LucideIcons.List,\n MessageSquare: LucideIcons.MessageSquare,\n Laptop: LucideIcons.Laptop,\n Globe: LucideIcons.Globe,\n Apple: LucideIcons.Apple,\n Circle: LucideIcons.Circle,\n};\n\n/**\n * Studio icon provider с поддержкой preset'ов\n *\n * @example\n * ```typescript\n * // Минимальный набор (только для компонентов библиотеки)\n * provideStudioIcons({ preset: 'minimal' });\n *\n * // Расширенный набор (рекомендуется)\n * provideStudioIcons({ preset: 'common' });\n *\n * // Все иконки Lucide (~1400 штук)\n * provideStudioIcons({ preset: 'full' });\n *\n * // С кастомными иконками\n * import { Zap, Wifi } from 'lucide-angular';\n * provideStudioIcons({\n * preset: 'common',\n * customIcons: { Zap, Wifi }\n * });\n * ```\n */\nexport function provideStudioIcons(config: StudioIconConfig = { preset: 'common' }): EnvironmentProviders {\n let icons: Record<string, any>;\n\n switch (config.preset) {\n case 'minimal':\n icons = MINIMAL_ICONS;\n break;\n case 'full':\n // Все иконки из lucide-angular (кроме служебных)\n icons = Object.keys(LucideIcons)\n .filter(key => !key.startsWith('Lucide') && !key.startsWith('LUCIDE'))\n .reduce((acc, key) => {\n acc[key] = (LucideIcons as any)[key];\n return acc;\n }, {} as Record<string, any>);\n break;\n case 'common':\n default:\n icons = COMMON_ICONS;\n break;\n }\n\n // Добавляем кастомные иконки\n if (config.customIcons) {\n icons = { ...icons, ...config.customIcons };\n }\n\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider(icons)\n }\n ]);\n}\n","/**\n * Checks if URL is safe for navigation\n *\n * @param url - URL to check\n * @returns true if URL is safe (http/https or relative)\n *\n * @example\n * ```typescript\n * isSafeUrl('https://example.com') // true\n * isSafeUrl('javascript:alert(1)') // false\n * isSafeUrl('/relative/path') // true\n * ```\n */\nexport function isSafeUrl(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n try {\n const parsed = new URL(url, window.location.origin);\n return ['http:', 'https:', ''].includes(parsed.protocol);\n } catch {\n return false;\n }\n}\n\n/**\n * Sanitize URL before using in navigation\n *\n * @param url - URL to sanitize\n * @returns Safe URL or '#' if URL is unsafe\n *\n * @example\n * ```typescript\n * sanitizeUrl('https://example.com') // 'https://example.com'\n * sanitizeUrl('javascript:alert(1)') // '#' (with console warning)\n * ```\n */\nexport function sanitizeUrl(url: string): string {\n if (!isSafeUrl(url)) {\n console.warn(`[Studio] Unsafe URL blocked: ${url}`);\n return '#';\n }\n return url;\n}\n","/**\n * Combines CSS classes, ignoring falsy values\n *\n * @param classes - Array of classes (strings, undefined, null, false)\n * @returns String with combined classes\n *\n * @example\n * ```typescript\n * classNames('btn', 'btn-primary') // 'btn btn-primary'\n * classNames('btn', isActive && 'active') // 'btn active' if isActive=true, else 'btn'\n * classNames('btn', undefined, null, false, 'large') // 'btn large'\n * ```\n */\nexport function classNames(...classes: (string | false | undefined | null)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n","import { computed, Signal } from '@angular/core';\n\n/**\n * Creates computed signal with fallback chain: input → config → default\n *\n * @param inputSignal - User input signal\n * @param configSignal - Config value (can be undefined)\n * @param defaultValue - Fallback value\n * @returns Computed signal with resolved value\n *\n * @example\n * ```typescript\n * export class ButtonComponent {\n * private defaults = computed(() => this.configService.config().components?.button);\n *\n * variantInput = input<Variant | undefined>(undefined, { alias: 'variant' });\n *\n * variant = withConfigDefault(\n * this.variantInput,\n * computed(() => this.defaults()?.variant),\n * 'solid'\n * );\n * }\n * ```\n */\nexport function withConfigDefault<T>(\n inputSignal: Signal<T | undefined>,\n configSignal: Signal<T | undefined>,\n defaultValue: T\n): Signal<T> {\n return computed(() => {\n const inputValue = inputSignal();\n if (inputValue !== undefined) return inputValue;\n\n const configValue = configSignal();\n if (configValue !== undefined) return configValue;\n\n return defaultValue;\n });\n}\n","/**\n * @eduboxpro/studio - Utilities\n *\n * Helper functions and utilities for the Studio library\n */\n\nexport * from './url-validator';\nexport * from './class-names';\nexport * from './config-helpers';\nexport * from './font-loader';\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport { BadgeVariant, BadgeSize, BadgeColor, BadgeRadius, BadgeIconPosition } from './badge.types';\n\n@Component({\n selector: 'studio-badge',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[style.display]': 'isVisible() ? null : \"none\"',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-badge__content\">\n @if (dot()) {\n <span\n class=\"studio-badge__dot\"\n [class]=\"'studio-badge__dot--' + (dotColor() || color())\"\n ></span>\n }\n @if (icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"studio-badge__text\">\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (removable()) {\n <button\n type=\"button\"\n class=\"studio-badge__remove\"\n (click)=\"handleRemove($event)\"\n aria-label=\"Remove\"\n >\n <studio-icon name=\"x\" [size]=\"iconSize()\" />\n </button>\n }\n </span>\n `,\n styleUrl: './badge.component.scss'\n})\nexport class BadgeComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly badgeDefaults = computed(() => this.configService.config().components?.badge);\n\n variantInput = input<BadgeVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<BadgeSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<BadgeColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<BadgeRadius | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.badgeDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.badgeDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.badgeDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.badgeDefaults()?.radius), 'full');\n\n icon = input<string>();\n iconPosition = input<BadgeIconPosition>('left');\n\n dot = input<boolean>(false);\n dotColor = input<BadgeColor>();\n\n removable = input<boolean>(false);\n removed = output<void>();\n\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n disabled = input<boolean>(false);\n clicked = output<MouseEvent>();\n\n value = input<string | number>();\n max = input<number>();\n showZero = input<boolean>(true);\n\n uppercase = input<boolean>(false);\n bold = input<boolean>(false);\n\n pulse = input<boolean>(false);\n autoColor = input<boolean>(false);\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 12, md: 14, lg: 16 };\n return sizeMap[this.size()];\n });\n\n protected displayValue = computed(() => {\n const val = this.value();\n if (val === undefined || val === null) return '';\n\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n\n if (!isNaN(numVal)) {\n if (numVal === 0 && !this.showZero()) return '';\n\n const maxVal = this.max();\n if (maxVal !== undefined && numVal > maxVal) {\n return `${maxVal}+`;\n }\n\n return numVal.toString();\n }\n\n return val.toString();\n });\n\n protected isVisible = computed(() => {\n const val = this.value();\n if (val !== undefined && val !== null) {\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n if (!isNaN(numVal) && numVal === 0 && !this.showZero()) {\n return false;\n }\n }\n return true;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-badge',\n `studio-badge--${this.variant()}`,\n `studio-badge--${this.size()}`,\n `studio-badge--${this.color()}`,\n `studio-badge--radius-${this.radius()}`,\n this.disabled() && 'studio-badge--disabled',\n this.uppercase() && 'studio-badge--uppercase',\n this.bold() && 'studio-badge--bold',\n this.pulse() && 'studio-badge--pulse',\n this.href() && 'studio-badge--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n\n protected handleRemove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled()) return;\n\n this.removed.emit();\n }\n}\n","/**\n * Badge component types\n */\n\nexport type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\nexport type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';\nexport type BadgeIconPosition = 'left' | 'right';\n","/**\n * Badge component\n */\n\nexport * from './badge.component';\nexport * from './badge.types';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeComponent, BadgeColor, BadgeVariant } from '../badge';\nimport { BadgeWrapperPosition, BadgeWrapperSize } from './badge-wrapper.types';\n\n/**\n * BadgeWrapper component - Wraps content with a positioned badge\n *\n * @example\n * <studio-badge-wrapper [count]=\"5\" color=\"error\">\n * <studio-button variant=\"ghost\">\n * <studio-icon name=\"bell\" />\n * </studio-button>\n * </studio-badge-wrapper>\n */\n@Component({\n selector: 'studio-badge-wrapper',\n standalone: true,\n imports: [CommonModule, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './badge-wrapper.component.html',\n styleUrl: './badge-wrapper.component.scss'\n})\nexport class BadgeWrapperComponent {\n // ========== Content ==========\n count = input<number | string>();\n content = input<string>();\n\n // ========== Badge style ==========\n variant = input<BadgeVariant>('solid');\n color = input<BadgeColor>('error');\n size = input<BadgeWrapperSize>('sm');\n\n // ========== Position ==========\n position = input<BadgeWrapperPosition>('top-right');\n\n // ========== Behavior ==========\n showZero = input<boolean>(false);\n max = input<number>(99);\n dot = input<boolean>(false);\n overlap = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-badge-wrapper'];\n\n classes.push(`studio-badge-wrapper--${this.position()}`);\n classes.push(`studio-badge-wrapper--${this.size()}`);\n\n if (this.overlap()) classes.push('studio-badge-wrapper--overlap');\n if (this.dot()) classes.push('studio-badge-wrapper--dot');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected badgeContent = computed(() => {\n if (this.content()) return this.content();\n\n const count = this.count();\n if (count === undefined || count === null) return undefined;\n\n const numCount = typeof count === 'number' ? count : parseInt(count, 10);\n\n if (numCount === 0 && !this.showZero()) return undefined;\n\n const max = this.max();\n if (numCount > max) return `${max}+`;\n\n return count.toString();\n });\n\n protected shouldShowBadge = computed(() => {\n if (this.dot()) return true;\n return this.badgeContent() !== undefined;\n });\n}\n","<div class=\"studio-badge-wrapper__content\">\n <ng-content />\n</div>\n\n@if (shouldShowBadge()) {\n <studio-badge\n class=\"studio-badge-wrapper__badge\"\n [variant]=\"dot() ? 'dot' : variant()\"\n [color]=\"color()\"\n [size]=\"size()\"\n >\n {{ badgeContent() }}\n </studio-badge>\n}\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\n\n/**\n * Button component with multiple variants, sizes, colors and states\n *\n * @example\n * <studio-button variant=\"solid\" color=\"primary\" (clicked)=\"onClick()\">\n * Click me\n * </studio-button>\n */\n@Component({\n selector: 'studio-button',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() || loading() ? \"\" : null',\n '[attr.type]': 'href() ? null : type()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-button__content\">\n @if (loading()) {\n <studio-icon\n name=\"loader-2\"\n [size]=\"iconSize()\"\n class=\"studio-button__spinner\"\n />\n }\n @if (!loading() && icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (iconPosition() !== 'only' && !loading()) {\n <ng-content />\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (!loading() && icon() && iconPosition() === 'only') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (loading() && iconPosition() === 'only') {\n } @else if (loading()) {\n <span>{{ loadingText() }}</span>\n }\n @if (badge() !== undefined && badge() !== null && badge() !== '') {\n <span class=\"studio-button__badge studio-button__badge--{{ badgeColor() }}\">\n {{ badge() }}\n </span>\n }\n </span>\n `,\n styleUrl: './button.component.scss'\n})\nexport class ButtonComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly buttonDefaults = computed(() => this.configService.config().components?.button);\n\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n compactInput = input<boolean | undefined>(undefined, { alias: 'compact' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.buttonDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.buttonDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.buttonDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.buttonDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.buttonDefaults()?.shadow), 'none');\n compact = withConfigDefault(this.compactInput, computed(() => this.buttonDefaults()?.compact), false);\n\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n loadingText = input<string>('Loading...');\n fullWidth = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n icon = input<string>();\n iconPosition = input<'left' | 'right' | 'only'>('left');\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n badge = input<string | number>();\n badgeColor = input<'primary' | 'error' | 'warning'>('error');\n ariaLabel = input<string>();\n\n clicked = output<MouseEvent>();\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 18, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-button',\n `studio-button--${this.variant()}`,\n `studio-button--${this.size()}`,\n `studio-button--${this.color()}`,\n `studio-button--radius-${this.radius()}`,\n `studio-button--shadow-${this.shadow()}`,\n this.compact() && 'studio-button--compact',\n this.fullWidth() && 'studio-button--full',\n this.loading() && 'studio-button--loading',\n this.iconPosition() === 'only' && 'studio-button--icon-only'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') return;\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Button component\n */\n\nexport * from './button.component';\n","import { Component, ChangeDetectionStrategy, input, computed, inject, contentChildren, effect, ElementRef } from '@angular/core';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n@Component({\n selector: 'studio-button-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()'\n },\n template: `<ng-content select=\"studio-button\" />`,\n styleUrl: './button-group.component.scss'\n})\nexport class ButtonGroupComponent {\n private readonly elementRef = inject(ElementRef);\n private readonly configService = inject(StudioConfigService);\n private readonly groupDefaults = computed(() => this.configService.config().components?.buttonGroup);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.groupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.groupDefaults()?.size), undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.groupDefaults()?.variant), undefined);\n color = withConfigDefault(this.colorInput, computed(() => this.groupDefaults()?.color), undefined);\n radius = withConfigDefault(this.radiusInput, computed(() => this.groupDefaults()?.radius), undefined);\n\n attached = input<boolean>(false);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n ariaLabel = input<string>();\n role = input<string>('group');\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-group',\n `studio-button-group--${this.orientation()}`,\n `studio-button-group--spacing-${this.spacing()}`,\n `studio-button-group--align-${this.align()}`,\n this.attached() && 'studio-button-group--attached',\n this.fullWidth() && 'studio-button-group--full',\n this.disabled() && 'studio-button-group--disabled'\n ));\n\n constructor() {\n effect(() => {\n const isAttached = this.attached();\n const hostElement = this.elementRef.nativeElement as HTMLElement;\n const buttonElements = hostElement.querySelectorAll('studio-button');\n\n buttonElements.forEach((buttonEl, index) => {\n const isFirst = index === 0;\n const isLast = index === buttonElements.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n if (isAttached) {\n buttonEl.classList.add('studio-button-group__item--attached');\n if (isFirst) buttonEl.classList.add('studio-button-group__item--first');\n if (isLast) buttonEl.classList.add('studio-button-group__item--last');\n if (isMiddle) buttonEl.classList.add('studio-button-group__item--middle');\n } else {\n buttonEl.classList.remove('studio-button-group__item--attached');\n buttonEl.classList.remove('studio-button-group__item--first');\n buttonEl.classList.remove('studio-button-group__item--last');\n buttonEl.classList.remove('studio-button-group__item--middle');\n }\n });\n });\n }\n}\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\n/**\n * Checkbox component for selecting boolean values\n *\n * @example\n * <studio-checkbox\n * [(ngModel)]=\"accepted\"\n * label=\"I accept terms and conditions\"\n * (changed)=\"onAccept($event)\"\n * />\n */\n@Component({\n selector: 'studio-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly checkboxDefaults = computed(() => this.configService.config().components?.checkbox);\n\n // ==========================================\n // INPUTS - Appearance\n // ==========================================\n\n /**\n * Size of the checkbox\n */\n size = input<CheckboxSize>(\n this.checkboxDefaults()?.size ?? 'md'\n );\n\n /**\n * Color scheme\n */\n color = input<CheckboxColor>(\n this.checkboxDefaults()?.color ?? 'primary'\n );\n\n /**\n * Visual variant\n */\n variant = input<CheckboxVariant>(\n this.checkboxDefaults()?.variant ?? 'default'\n );\n\n /**\n * Border radius\n */\n radius = input<CheckboxRadius>(\n this.checkboxDefaults()?.radius ?? 'sm'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Label position relative to checkbox\n */\n labelPosition = input<'left' | 'right'>(\n this.checkboxDefaults()?.labelPosition ?? 'right'\n );\n\n /**\n * Additional description text\n */\n description = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Indeterminate state (for \"select all\" checkboxes)\n */\n indeterminate = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Tab index\n */\n tabIndex = input<number>(0);\n\n /**\n * Value for checkbox groups\n */\n value = input<any>();\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when checkbox state changes\n */\n changed = output<boolean>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal checked state\n */\n protected internalChecked = signal(false);\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected checkboxId = signal(`studio-checkbox-${Math.random().toString(36).substr(2, 9)}`);\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n /**\n * Host CSS classes\n */\n protected hostClasses = computed(() => ({\n 'studio-checkbox-wrapper': true,\n [`studio-checkbox-wrapper--${this.size()}`]: true,\n 'studio-checkbox-wrapper--disabled': this.disabled(),\n 'studio-checkbox-wrapper--error': this.error(),\n 'studio-checkbox-wrapper--focused': this.isFocused(),\n 'studio-checkbox-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n /**\n * Checkbox element CSS classes\n */\n protected checkboxClasses = computed(() => ({\n 'studio-checkbox': true,\n [`studio-checkbox--${this.size()}`]: true,\n [`studio-checkbox--${this.color()}`]: true,\n [`studio-checkbox--${this.variant()}`]: true,\n [`studio-checkbox--radius-${this.radius()}`]: true,\n 'studio-checkbox--checked': this.internalChecked(),\n 'studio-checkbox--indeterminate': this.indeterminate(),\n 'studio-checkbox--disabled': this.disabled(),\n 'studio-checkbox--error': this.error()\n }));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * ARIA checked state\n */\n protected ariaChecked = computed(() => {\n if (this.indeterminate()) return 'mixed';\n return this.internalChecked() ? 'true' : 'false';\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle checkbox toggle\n */\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const newValue = (event.target as HTMLInputElement).checked;\n this.internalChecked.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n /**\n * Handle label click\n */\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\nexport type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type CheckboxVariant = 'default' | 'outlined' | 'filled';\nexport type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<label\n [for]=\"checkboxId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <!-- Checkbox input -->\n <input\n type=\"checkbox\"\n [id]=\"checkboxId()\"\n [name]=\"name()\"\n [checked]=\"internalChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? checkboxId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-checkbox__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Custom checkbox -->\n <span [ngClass]=\"checkboxClasses()\">\n <!-- Checkmark icon -->\n @if (internalChecked() && !indeterminate()) {\n <svg\n class=\"studio-checkbox__icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66666 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Indeterminate icon -->\n @if (indeterminate()) {\n <svg\n class=\"studio-checkbox__icon studio-checkbox__icon--indeterminate\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n }\n </span>\n\n <!-- Label content -->\n @if (label() || description()) {\n <span class=\"studio-checkbox__label-wrapper\">\n @if (label()) {\n <span class=\"studio-checkbox__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-checkbox__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-checkbox__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n<!-- Helper text / Error message -->\n@if (showHint() || showError()) {\n <div\n [id]=\"checkboxId() + '-description'\"\n class=\"studio-checkbox__info\"\n >\n @if (showError()) {\n <span class=\"studio-checkbox__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-checkbox__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import { RGB, HSL, ColorValue, ColorFormat } from '../primitives/color-picker/color-picker.types';\n\nexport class ColorConverter {\n static hexToRgb(hex: string): RGB | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n static rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + [r, g, b]\n .map(x => {\n const hex = Math.round(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\");\n }\n\n static rgbToHsl(r: number, g: number, b: number): HSL {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100)\n };\n }\n\n static hslToRgb(h: number, s: number, l: number): RGB {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n }\n\n static format(color: ColorValue, format: ColorFormat): string {\n switch (format) {\n case 'hex':\n return color.hex;\n case 'rgb':\n if (color.alpha < 1) {\n return `rgba(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b}, ${color.alpha})`;\n }\n return `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})`;\n case 'hsl':\n if (color.alpha < 1) {\n return `hsla(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%, ${color.alpha})`;\n }\n return `hsl(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%)`;\n default:\n return color.hex;\n }\n }\n\n static parse(colorString: string): ColorValue | null {\n const trimmed = colorString.trim();\n\n const hexMatch = /^#?([a-f\\d]{6})$/i.exec(trimmed);\n if (hexMatch) {\n const hex = '#' + hexMatch[1];\n const rgb = this.hexToRgb(hex);\n if (!rgb) return null;\n\n return {\n hex,\n rgb,\n hsl: this.rgbToHsl(rgb.r, rgb.g, rgb.b),\n alpha: 1\n };\n }\n\n const rgbMatch = /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (rgbMatch) {\n const r = parseInt(rgbMatch[1]);\n const g = parseInt(rgbMatch[2]);\n const b = parseInt(rgbMatch[3]);\n const alpha = rgbMatch[4] ? parseFloat(rgbMatch[4]) : 1;\n\n return {\n hex: this.rgbToHex(r, g, b),\n rgb: { r, g, b },\n hsl: this.rgbToHsl(r, g, b),\n alpha\n };\n }\n\n const hslMatch = /^hsla?\\((\\d+),\\s*(\\d+)%?,\\s*(\\d+)%?(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (hslMatch) {\n const h = parseInt(hslMatch[1]);\n const s = parseInt(hslMatch[2]);\n const l = parseInt(hslMatch[3]);\n const alpha = hslMatch[4] ? parseFloat(hslMatch[4]) : 1;\n\n const rgb = this.hslToRgb(h, s, l);\n\n return {\n hex: this.rgbToHex(rgb.r, rgb.g, rgb.b),\n rgb,\n hsl: { h, s, l },\n alpha\n };\n }\n\n return null;\n }\n\n static isValid(colorString: string): boolean {\n return this.parse(colorString) !== null;\n }\n}\n","import { ColorSwatchGroup } from './color-picker.types';\n\nexport const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[] = [\n {\n label: 'Brand Colors',\n colors: [\n { label: 'Primary', value: '#7c3aed' },\n { label: 'Secondary', value: '#6366f1' },\n { label: 'Success', value: '#10b981' },\n { label: 'Error', value: '#ef4444' },\n { label: 'Warning', value: '#f59e0b' },\n { label: 'Info', value: '#3b82f6' }\n ]\n },\n {\n label: 'Grays',\n colors: [\n { value: '#ffffff' },\n { value: '#f3f4f6' },\n { value: '#d1d5db' },\n { value: '#9ca3af' },\n { value: '#6b7280' },\n { value: '#374151' },\n { value: '#1f2937' },\n { value: '#000000' }\n ]\n },\n {\n label: 'Common',\n colors: [\n { value: '#ff0000' },\n { value: '#ff7f00' },\n { value: '#ffff00' },\n { value: '#00ff00' },\n { value: '#0000ff' },\n { value: '#4b0082' },\n { value: '#9400d3' },\n { value: '#ff1493' }\n ]\n }\n];\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ColorConverter } from '../../utils/color-converter';\nimport {\n ColorFormat,\n ColorValue,\n ColorPreset,\n ColorSwatchGroup,\n ColorPickerVariant,\n ColorPickerSize\n} from './color-picker.types';\nimport { DEFAULT_COLOR_PRESETS } from './default-presets';\n\n@Component({\n selector: 'studio-color-picker',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss'\n})\nexport class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {\n private readonly configService = inject(StudioConfigService);\n private readonly pickerDefaults = computed(() => this.configService.config().components?.colorPicker);\n\n protected readonly colorAreaCanvas = viewChild<ElementRef<HTMLCanvasElement>>('colorArea');\n\n variantInput = input<ColorPickerVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<ColorPickerSize | undefined>(undefined, { alias: 'size' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.pickerDefaults()?.variant), 'inline');\n size = withConfigDefault(this.sizeInput, computed(() => this.pickerDefaults()?.size), 'md');\n\n format = input<ColorFormat>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(true);\n showCopyButton = input<boolean>(true);\n\n presets = input<ColorPreset[] | ColorSwatchGroup[]>();\n\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n\n colorChange = output<string>();\n colorValueChange = output<ColorValue>();\n copied = output<string>();\n\n protected currentColor = signal<ColorValue>(this.createColorValue('#000000'));\n protected hue = signal(0);\n protected saturation = signal(100);\n protected lightness = signal(50);\n protected alpha = signal(1);\n protected currentFormat = signal<ColorFormat>('hex');\n\n protected generatedId = `studio-color-picker-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private isDragging = false;\n\n constructor() {\n effect(() => {\n this.currentFormat.set(this.format());\n });\n\n effect(() => {\n this.renderColorArea();\n });\n }\n\n ngAfterViewInit(): void {\n this.renderColorArea();\n }\n\n protected displayColor = computed(() => {\n const color = this.currentColor();\n return ColorConverter.format(color, this.currentFormat());\n });\n\n protected effectivePresets = computed(() => {\n const custom = this.presets();\n return custom && custom.length > 0 ? custom : DEFAULT_COLOR_PRESETS;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-color-picker',\n `studio-color-picker--${this.variant()}`,\n `studio-color-picker--${this.size()}`,\n this.error() && 'studio-color-picker--error',\n this.disabled() && 'studio-color-picker--disabled'\n ));\n\n writeValue(value: string): void {\n if (!value) return;\n\n const colorValue = ColorConverter.parse(value);\n if (colorValue) {\n this.currentColor.set(colorValue);\n this.hue.set(colorValue.hsl.h);\n this.saturation.set(colorValue.hsl.s);\n this.lightness.set(colorValue.hsl.l);\n this.alpha.set(colorValue.alpha);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected onHueChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.hue.set(value);\n this.updateColor();\n }\n\n protected onAlphaChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.alpha.set(value / 100);\n this.updateColor();\n }\n\n protected onColorAreaMouseDown(event: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.isDragging = true;\n this.updateColorArea(event);\n\n const onMouseMove = (e: MouseEvent) => {\n if (this.isDragging) {\n this.updateColorArea(e);\n }\n };\n\n const onMouseUp = () => {\n this.isDragging = false;\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n private updateColorArea(event: MouseEvent): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\n\n this.saturation.set((x / rect.width) * 100);\n this.lightness.set(100 - (y / rect.height) * 100);\n this.updateColor();\n }\n\n private updateColor(): void {\n const h = this.hue();\n const s = this.saturation();\n const l = this.lightness();\n\n const rgb = ColorConverter.hslToRgb(h, s, l);\n const hex = ColorConverter.rgbToHex(rgb.r, rgb.g, rgb.b);\n\n const colorValue: ColorValue = {\n hex,\n rgb,\n hsl: { h, s, l },\n alpha: this.alpha()\n };\n\n this.currentColor.set(colorValue);\n\n const formatted = ColorConverter.format(colorValue, this.currentFormat());\n this.onChange(formatted);\n this.colorChange.emit(formatted);\n this.colorValueChange.emit(colorValue);\n }\n\n private renderColorArea(): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const width = canvas.width;\n const height = canvas.height;\n const hue = this.hue();\n\n const horizGradient = ctx.createLinearGradient(0, 0, width, 0);\n horizGradient.addColorStop(0, 'white');\n horizGradient.addColorStop(1, `hsl(${hue}, 100%, 50%)`);\n ctx.fillStyle = horizGradient;\n ctx.fillRect(0, 0, width, height);\n\n const vertGradient = ctx.createLinearGradient(0, 0, 0, height);\n vertGradient.addColorStop(0, 'transparent');\n vertGradient.addColorStop(1, 'black');\n ctx.fillStyle = vertGradient;\n ctx.fillRect(0, 0, width, height);\n }\n\n protected toggleFormat(): void {\n const formats: ColorFormat[] = ['hex', 'rgb', 'hsl'];\n const current = this.currentFormat();\n const index = formats.indexOf(current);\n const next = formats[(index + 1) % formats.length];\n this.currentFormat.set(next);\n }\n\n protected async copyColor(): Promise<void> {\n const color = this.displayColor();\n\n try {\n await navigator.clipboard.writeText(color);\n this.copied.emit(color);\n } catch (error) {\n console.error('Copy failed:', error);\n }\n }\n\n protected selectPreset(preset: ColorPreset): void {\n this.writeValue(preset.value);\n this.updateColor();\n }\n\n protected isPresetGroup(item: any): item is ColorSwatchGroup {\n return item && 'colors' in item && Array.isArray(item.colors);\n }\n\n private createColorValue(hex: string): ColorValue {\n const rgb = ColorConverter.hexToRgb(hex) || { r: 0, g: 0, b: 0 };\n const hsl = ColorConverter.rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb,\n hsl,\n alpha: 1\n };\n }\n}\n","@if (label()) {\n <label [for]=\"generatedId\" class=\"studio-color-picker__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-color-picker__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-color-picker__picker\">\n <div class=\"studio-color-picker__preview\">\n <div\n class=\"studio-color-picker__preview-color\"\n [style.background-color]=\"displayColor()\"\n ></div>\n <div class=\"studio-color-picker__preview-info\">\n <span class=\"studio-color-picker__preview-value\">{{ displayColor() }}</span>\n @if (showFormatToggle()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__format-btn\"\n (click)=\"toggleFormat()\"\n [disabled]=\"disabled() || readonly()\"\n >\n {{ currentFormat().toUpperCase() }}\n </button>\n }\n </div>\n @if (showCopyButton()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__copy-btn\"\n (click)=\"copyColor()\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Copy color\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>\n </button>\n }\n </div>\n\n <div class=\"studio-color-picker__area\">\n <canvas\n #colorArea\n class=\"studio-color-picker__canvas\"\n width=\"280\"\n height=\"180\"\n (mousedown)=\"onColorAreaMouseDown($event)\"\n ></canvas>\n <div\n class=\"studio-color-picker__cursor\"\n [style.left.%]=\"saturation()\"\n [style.top.%]=\"100 - lightness()\"\n ></div>\n </div>\n\n <div class=\"studio-color-picker__sliders\">\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Hue</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__hue-slider\"\n min=\"0\"\n max=\"360\"\n [value]=\"hue()\"\n (input)=\"onHueChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Hue\"\n />\n </div>\n\n @if (showAlpha()) {\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Opacity</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__alpha-slider\"\n min=\"0\"\n max=\"100\"\n [value]=\"alpha() * 100\"\n (input)=\"onAlphaChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Opacity\"\n />\n <span class=\"studio-color-picker__alpha-value\">{{ (alpha() * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n\n @if (showPresets() && effectivePresets().length > 0) {\n <div class=\"studio-color-picker__presets\">\n @for (preset of effectivePresets(); track $index) {\n @if (isPresetGroup(preset)) {\n <div class=\"studio-color-picker__preset-group\">\n <div class=\"studio-color-picker__preset-group-label\">{{ preset.label }}</div>\n <div class=\"studio-color-picker__preset-swatches\">\n @for (color of preset.colors; track color.value) {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"color.value\"\n [title]=\"color.label || color.value\"\n (click)=\"selectPreset(color)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n </div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"preset.value\"\n [title]=\"preset.label || preset.value\"\n (click)=\"selectPreset(preset)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n }\n </div>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-color-picker__hint\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-color-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </span>\n}\n","import { Injectable, WritableSignal } from '@angular/core';\n\n/**\n * Service for programmatic control of Drawer components\n *\n * @example\n * ```typescript\n * // In component\n * private drawerService = inject(DrawerService);\n *\n * openSettings() {\n * this.drawerService.open('settings-drawer');\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DrawerService {\n private drawers = new Map<string, WritableSignal<boolean>>();\n\n /**\n * Register a drawer with the service\n * Called automatically by DrawerComponent\n */\n register(id: string, signal: WritableSignal<boolean>): void {\n this.drawers.set(id, signal);\n }\n\n /**\n * Unregister a drawer from the service\n * Called automatically on component destroy\n */\n unregister(id: string): void {\n this.drawers.delete(id);\n }\n\n /**\n * Open a drawer by ID\n */\n open(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(true);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close a drawer by ID\n */\n close(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(false);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Toggle a drawer by ID\n */\n toggle(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.update(v => !v);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close all registered drawers\n */\n closeAll(): void {\n this.drawers.forEach(signal => signal.set(false));\n }\n\n /**\n * Check if a drawer is open\n */\n isOpen(id: string): boolean {\n const drawer = this.drawers.get(id);\n return drawer ? drawer() : false;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { DrawerService } from './drawer.service';\nimport {\n DrawerPosition,\n DrawerSize,\n DrawerRadius,\n DrawerShadowSize,\n DrawerRole,\n DrawerAnimationEasing,\n DrawerCloseButtonPosition\n} from './drawer.types';\n\n@Component({\n selector: 'studio-drawer',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss'\n})\nexport class DrawerComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly configService = inject(StudioConfigService);\n private readonly drawerService = inject(DrawerService);\n private readonly drawerDefaults = computed(() => this.configService.config().components?.drawer);\n\n // Template references\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('headerTemplate');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('drawerPanel');\n\n // Core\n id = input<string>(`studio-drawer-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<DrawerPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<DrawerSize | undefined>(undefined, { alias: 'size' });\n customWidth = input<string | undefined>(undefined);\n customHeight = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.drawerDefaults()?.position), 'right');\n size = withConfigDefault(this.sizeInput, computed(() => this.drawerDefaults()?.size), 'md');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.drawerDefaults()?.modal), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.drawerDefaults()?.closeOnEscape), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.drawerDefaults()?.closeOnBackdropClick), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.drawerDefaults()?.blockScroll), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n closeButtonPositionInput = input<DrawerCloseButtonPosition | undefined>(undefined, { alias: 'closeButtonPosition' });\n showFooter = input<boolean>(true);\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.drawerDefaults()?.showHeader ?? true), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.drawerDefaults()?.showCloseButton), true);\n closeButtonPosition = withConfigDefault(this.closeButtonPositionInput, computed(() => this.drawerDefaults()?.closeButtonPosition), 'right');\n\n // Swipe Gestures\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n swipeThresholdInput = input<number | undefined>(undefined, { alias: 'swipeThreshold' });\n\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.drawerDefaults()?.swipeToClose), true);\n swipeThreshold = withConfigDefault(this.swipeThresholdInput, computed(() => this.drawerDefaults()?.swipeThreshold), 50);\n\n // Animation\n animationDurationInput = input<number | undefined>(undefined, { alias: 'animationDuration' });\n animationEasingInput = input<DrawerAnimationEasing | undefined>(undefined, { alias: 'animationEasing' });\n disableAnimationInput = input<boolean | undefined>(undefined, { alias: 'disableAnimation' });\n\n animationDuration = withConfigDefault(this.animationDurationInput, computed(() => this.drawerDefaults()?.animationDuration), 300);\n animationEasing = withConfigDefault(this.animationEasingInput, computed(() => this.drawerDefaults()?.animationEasing), 'ease-out');\n disableAnimation = withConfigDefault(this.disableAnimationInput, computed(() => this.drawerDefaults()?.disableAnimation), false);\n\n // Styling\n radiusInput = input<DrawerRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<boolean | undefined>(undefined, { alias: 'shadow' });\n shadowSizeInput = input<DrawerShadowSize | undefined>(undefined, { alias: 'shadowSize' });\n\n radius = withConfigDefault(this.radiusInput, computed(() => this.drawerDefaults()?.radius), 'none');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.drawerDefaults()?.shadow), true);\n shadowSize = withConfigDefault(this.shadowSizeInput, computed(() => this.drawerDefaults()?.shadowSize), 'lg');\n\n // Accessibility\n ariaLabel = input<string | undefined>(undefined);\n ariaLabelledBy = input<string | undefined>(undefined);\n ariaDescribedBy = input<string | undefined>(undefined);\n autoFocusInput = input<boolean | undefined>(undefined, { alias: 'autoFocus' });\n restoreFocusInput = input<boolean | undefined>(undefined, { alias: 'restoreFocus' });\n roleInput = input<DrawerRole | undefined>(undefined, { alias: 'role' });\n\n autoFocus = withConfigDefault(this.autoFocusInput, computed(() => this.drawerDefaults()?.autoFocus), true);\n restoreFocus = withConfigDefault(this.restoreFocusInput, computed(() => this.drawerDefaults()?.restoreFocus), true);\n role = withConfigDefault(this.roleInput, computed(() => this.drawerDefaults()?.role), 'dialog');\n\n // Outputs\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n backdropClick = output<void>();\n\n // Internal state\n private previousActiveElement?: HTMLElement;\n private touchStartX = 0;\n private touchStartY = 0;\n private isDragging = signal(false);\n private scrollbarWidth = 0;\n\n protected hostClasses = computed(() => classNames(\n 'studio-drawer',\n `studio-drawer--${this.position()}`,\n `studio-drawer--${this.size()}`,\n this.visible() && 'studio-drawer--visible',\n this.modal() && 'studio-drawer--modal',\n this.shadow() && `studio-drawer--shadow-${this.shadowSize()}`,\n this.isDragging() && 'studio-drawer--dragging',\n (this.position() === 'left' || this.position() === 'right') && `studio-drawer--radius-${this.radius()}`\n ));\n\n constructor() {\n // Register with DrawerService\n effect(() => {\n this.drawerService.register(this.id(), this.visible);\n });\n\n // Handle visibility changes\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n // Cleanup on destroy\n this.destroyRef.onDestroy(() => {\n this.drawerService.unregister(this.id());\n this.unlockBodyScroll();\n });\n }\n\n protected handleOpen(): void {\n if (this.blockScroll() && this.modal()) {\n this.lockBodyScroll();\n }\n\n if (this.autoFocus()) {\n this.setupFocusTrap();\n }\n\n this.opened.emit();\n }\n\n protected handleClose(): void {\n if (this.blockScroll() && this.modal()) {\n this.unlockBodyScroll();\n }\n\n if (this.restoreFocus()) {\n this.restorePreviousFocus();\n }\n\n this.closed.emit();\n }\n\n public open(): void {\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n this.visible.update(v => !v);\n this.visibleChange.emit(this.visible());\n }\n\n protected handleBackdropClick(): void {\n this.backdropClick.emit();\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n // Touch gesture handling\n @HostListener('touchstart', ['$event'])\n protected onTouchStart(event: TouchEvent): void {\n if (!this.swipeToClose() || !this.visible()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n\n // Only start drag if touching the panel\n if (!panel?.contains(target)) return;\n\n this.touchStartX = event.touches[0].clientX;\n this.touchStartY = event.touches[0].clientY;\n this.isDragging.set(true);\n }\n\n @HostListener('touchmove', ['$event'])\n protected onTouchMove(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.touches[0].clientX - this.touchStartX;\n const deltaY = event.touches[0].clientY - this.touchStartY;\n const pos = this.position();\n\n // Apply drag transform based on position\n let shouldAllowDrag = false;\n\n if (pos === 'right' && deltaX > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'left' && deltaX < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'bottom' && deltaY > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n } else if (pos === 'top' && deltaY < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n }\n\n // Prevent scroll while dragging\n if (shouldAllowDrag && (Math.abs(deltaX) > 10 || Math.abs(deltaY) > 10)) {\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.changedTouches[0].clientX - this.touchStartX;\n const deltaY = event.changedTouches[0].clientY - this.touchStartY;\n const threshold = this.swipeThreshold();\n const pos = this.position();\n\n let shouldClose = false;\n\n if (pos === 'right' && deltaX > threshold) shouldClose = true;\n if (pos === 'left' && deltaX < -threshold) shouldClose = true;\n if (pos === 'bottom' && deltaY > threshold) shouldClose = true;\n if (pos === 'top' && deltaY < -threshold) shouldClose = true;\n\n if (shouldClose) {\n this.close();\n } else {\n this.resetTransform();\n }\n\n this.isDragging.set(false);\n }\n\n private applyDragTransform(deltaX: number, deltaY: number): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const pos = this.position();\n\n if (pos === 'right') {\n const translateX = Math.max(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'left') {\n const translateX = Math.min(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'bottom') {\n const translateY = Math.max(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'top') {\n const translateY = Math.min(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n }\n }\n\n private resetTransform(): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n panel.style.transition = '';\n panel.style.transform = '';\n }\n\n // Body scroll lock\n private lockBodyScroll(): void {\n this.scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth;\n this.document.body.style.overflow = 'hidden';\n this.document.body.style.paddingRight = `${this.scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n this.document.body.style.overflow = '';\n this.document.body.style.paddingRight = '';\n }\n\n // Focus management\n private setupFocusTrap(): void {\n this.previousActiveElement = this.document.activeElement as HTMLElement;\n\n // Move focus to drawer after render\n setTimeout(() => {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const firstFocusable = this.getFirstFocusableElement(panel);\n if (firstFocusable) {\n firstFocusable.focus();\n } else {\n panel.focus();\n }\n }, 0);\n }\n\n private restorePreviousFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = undefined;\n }\n }\n\n private getFirstFocusableElement(container: HTMLElement): HTMLElement | null {\n const focusableSelectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', ');\n\n return container.querySelector<HTMLElement>(focusableSelectors);\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n if (!this.visible()) return;\n\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>([\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', '));\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (this.document.activeElement === firstElement) {\n event.preventDefault();\n lastElement?.focus();\n }\n } else {\n if (this.document.activeElement === lastElement) {\n event.preventDefault();\n firstElement?.focus();\n }\n }\n }\n}\n","@if (visible()) {\n <!-- Backdrop -->\n @if (modal()) {\n <div\n class=\"studio-drawer__backdrop\"\n (click)=\"handleBackdropClick()\">\n </div>\n }\n\n <!-- Drawer Panel -->\n <div\n #drawerPanel\n class=\"studio-drawer__panel\"\n [attr.role]=\"role()\"\n [attr.aria-modal]=\"modal()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.tabindex]=\"-1\"\n [style.width]=\"customWidth()\"\n [style.height]=\"customHeight()\"\n [style.--drawer-animation-duration]=\"animationDuration() + 'ms'\"\n [style.--drawer-animation-timing]=\"animationEasing()\">\n\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || header() || showCloseButton())) {\n <div class=\"studio-drawer__header\">\n @if (headerTemplate(); as tmpl) {\n <!-- Custom template -->\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (header()) {\n <!-- Simple string header -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <h2 class=\"studio-drawer__title\">{{ header() }}</h2>\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n } @else {\n <!-- Named slot fallback -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <ng-content select=\"[drawerHeader]\" />\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-drawer__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n } @else if (showFooter()) {\n <div class=\"studio-drawer__footer\">\n <ng-content select=\"[drawerFooter]\" />\n </div>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'number' | 'search' | 'date' | 'time';\nexport type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';\n\n/**\n * Input component with form control support, variants, and accessibility\n *\n * @example\n * <studio-input [(ngModel)]=\"email\" label=\"Email\" type=\"email\" />\n * <studio-input [formControl]=\"passwordControl\" type=\"password\" [showPasswordToggle]=\"true\" />\n */\n@Component({\n selector: 'studio-input',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss'\n})\nexport class InputComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n type = input<InputType>('text');\n inputmode = input<InputMode | undefined>(undefined);\n autocomplete = input<string | undefined>(undefined);\n placeholder = input<string | undefined>(undefined);\n maxLength = input<number | undefined>(undefined);\n minLength = input<number | undefined>(undefined);\n min = input<number | string | undefined>(undefined);\n max = input<number | string | undefined>(undefined);\n step = input<number | undefined>(undefined);\n pattern = input<string | undefined>(undefined);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string | undefined>(undefined);\n clearable = input<boolean>(false);\n showPasswordToggle = input<boolean>(false);\n\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n valueChange = output<string | number>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n cleared = output<void>();\n entered = output<KeyboardEvent>();\n\n protected value = signal<string | number>('');\n protected isPasswordVisible = signal(false);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected generatedId = `studio-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n }\n\n writeValue(value: string | number): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n\n protected computedType = computed(() => {\n if (this.type() === 'password' && this.isPasswordVisible()) {\n return 'text';\n }\n return this.type();\n });\n\n protected computedPlaceholder = computed(() => {\n // Don't show placeholder when using floating label\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-input',\n `studio-input--${this.variant()}`,\n `studio-input--${this.size()}`,\n `studio-input--radius-${this.radius()}`,\n this.error() && 'studio-input--error',\n this.disabled() && 'studio-input--disabled',\n this.readonly() && 'studio-input--readonly',\n this.loading() && 'studio-input--loading',\n this.fullWidth() && 'studio-input--full-width',\n this.isFocused() && 'studio-input--focused',\n this.isTouched() && 'studio-input--touched',\n this.hasValue() && 'studio-input--has-value'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = this.type() === 'number' ? +target.value : target.value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleClear(): void {\n this.value.set('');\n this.onChange('');\n this.valueChange.emit('');\n this.cleared.emit();\n this.inputEl()?.nativeElement.focus();\n }\n\n protected handleEnter(event: Event): void {\n this.entered.emit(event as KeyboardEvent);\n }\n\n protected togglePasswordVisibility(): void {\n this.isPasswordVisible.update(v => !v);\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-input__container\">\n @if (prefixIcon()) {\n <span class=\"studio-input__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label--floating\">\n {{ label() }}\n @if (required()) {\n <span>*</span>\n }\n </label>\n }\n\n <input\n #inputElement\n class=\"studio-input__field\"\n [type]=\"computedType()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"computedPlaceholder()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [pattern]=\"pattern()\"\n [attr.inputmode]=\"inputmode()\"\n [attr.autocomplete]=\"autocomplete()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || (!label() ? placeholder() : null)\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown.enter)=\"handleEnter($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n\n @if (clearable() && value() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__clear\"\n (click)=\"handleClear()\"\n [attr.aria-label]=\"'Clear input'\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__toggle-password\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"isPasswordVisible() ? 'Hide password' : 'Show password'\"\n tabindex=\"-1\"\n >\n <studio-icon [name]=\"isPasswordVisible() ? 'eye-off' : 'eye'\" [size]=\"16\" />\n </button>\n }\n\n @if (suffixIcon() && !loading() && !clearable() && !(type() === 'password' && showPasswordToggle())) {\n <span class=\"studio-input__suffix\">\n <studio-icon [name]=\"suffixIcon()!\" [size]=\"16\" />\n </span>\n }\n </div>\n\n@if (hint() && !error()) {\n <span class=\"studio-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n HostListener,\n inject,\n PLATFORM_ID,\n OnInit\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Router, RouterLink, RouterLinkActive, IsActiveMatchOptions } from '@angular/router';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { IconComponent } from '../icon/icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n MenuItem,\n MenuItemClickEvent,\n MenuItemCommandEvent,\n MenuExpandEvent\n} from './menu.types';\n\nexport type MenuOrientation = 'vertical' | 'horizontal';\nexport type MenuMode = 'static' | 'accordion' | 'overlay';\nexport type MenuSize = 'sm' | 'md' | 'lg';\nexport type MenuVariant = 'default' | 'filled' | 'outlined' | 'ghost';\nexport type MenuColor = 'primary' | 'secondary' | 'inherit';\nexport type MenuRadius = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuSpacing = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuExpandIconPosition = 'left' | 'right';\n\n/**\n * Menu component - Primitive component for navigation menus\n *\n * @example\n * <studio-menu\n * [items]=\"menuItems\"\n * size=\"md\"\n * variant=\"default\"\n * (itemClick)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-menu',\n standalone: true,\n imports: [\n CommonModule,\n RouterLink,\n RouterLinkActive,\n IconComponent,\n BadgeComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': 'orientation()'\n },\n animations: [\n trigger('expandCollapse', [\n state('collapsed', style({\n height: '0',\n opacity: '0',\n overflow: 'hidden'\n })),\n state('expanded', style({\n height: '*',\n opacity: '1',\n overflow: 'visible'\n })),\n transition('collapsed <=> expanded', [\n animate('200ms ease-in-out')\n ])\n ])\n ],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss'\n})\nexport class MenuComponent implements OnInit {\n private router = inject(Router, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n // ========== Основные параметры ==========\n items = input.required<MenuItem[]>();\n orientation = input<MenuOrientation>('vertical');\n\n // ========== Поведение ==========\n mode = input<MenuMode>('static');\n collapsible = input<boolean>(true);\n defaultExpanded = input<string[]>([]);\n expandOnHover = input<boolean>(false);\n\n // ========== Навигация ==========\n activeItem = input<string>();\n routerLinkActive = input<boolean>(true);\n selectOnNavigate = input<boolean>(true);\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Клавиатурная навигация ==========\n keyboardNavigation = input<boolean>(true);\n arrowNavigation = input<boolean>(true);\n homeEndNavigation = input<boolean>(true);\n\n // ========== Анимации ==========\n animated = input<boolean>(true);\n animationDuration = input<number>(200);\n\n // ========== Доступность ==========\n ariaLabel = input<string>();\n role = input<'navigation' | 'menu'>('navigation');\n\n // ========== Стилевые параметры ==========\n size = input<MenuSize>('md');\n compact = input<boolean>(false);\n fullWidth = input<boolean>(false);\n variant = input<MenuVariant>('default');\n color = input<MenuColor>('inherit');\n radius = input<MenuRadius>('md');\n spacing = input<MenuSpacing>('sm');\n showDividers = input<boolean>(false);\n\n // ========== Иконки ==========\n iconSize = input<number>(20);\n iconOnly = input<boolean>(false);\n\n // ========== Подменю ==========\n indentLevel = input<number>(16);\n showExpandIcon = input<boolean>(true);\n expandIconPosition = input<MenuExpandIconPosition>('right');\n expandIcon = input<string>('chevron-down');\n\n // ========== Кастомизация ==========\n class = input<string>('');\n itemClass = input<string>('');\n\n // ========== Internal state (for nested menus) ==========\n level = input<number>(0);\n parentExpanded = input<boolean>(true);\n\n // ========== Outputs ==========\n itemClick = output<MenuItemClickEvent>();\n itemSelect = output<MenuItem>();\n expandChange = output<MenuExpandEvent>();\n activeChange = output<string>();\n\n // ========== Signals for state management ==========\n private expandedItems = signal<Set<string>>(new Set());\n private activeItemId = signal<string | undefined>(undefined);\n private focusedIndex = signal<number>(-1);\n private flattenedItems = computed(() => this.flattenMenuItems(this.items()));\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-menu'];\n\n classes.push(`studio-menu--${this.orientation()}`);\n classes.push(`studio-menu--${this.size()}`);\n classes.push(`studio-menu--${this.variant()}`);\n classes.push(`studio-menu--${this.mode()}`);\n\n if (this.compact()) classes.push('studio-menu--compact');\n if (this.fullWidth()) classes.push('studio-menu--full-width');\n if (this.iconOnly()) classes.push('studio-menu--icon-only');\n if (this.color() !== 'inherit') classes.push(`studio-menu--${this.color()}`);\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n constructor() {\n // Initialize expanded items from defaultExpanded\n effect(() => {\n const defaultExp = this.defaultExpanded();\n if (defaultExp.length > 0) {\n this.expandedItems.set(new Set(defaultExp));\n }\n });\n\n // Track active item\n effect(() => {\n const active = this.activeItem();\n if (active) {\n this.activeItemId.set(active);\n }\n });\n }\n\n ngOnInit() {\n if (this.routerLinkActive() && this.router && isPlatformBrowser(this.platformId)) {\n this.updateActiveFromRouter();\n }\n }\n\n // ========== Item state methods ==========\n\n isExpanded(item: MenuItem): boolean {\n if (!item.id) return false;\n return this.expandedItems().has(item.id);\n }\n\n isActive(item: MenuItem): boolean {\n // Check explicit active item\n if (item.id && item.id === this.activeItemId()) {\n return true;\n }\n\n // Router-based active state is handled by RouterLinkActive directive\n return false;\n }\n\n isDisabled(item: MenuItem): boolean {\n return item.disabled === true;\n }\n\n isVisible(item: MenuItem): boolean {\n return item.visible !== false;\n }\n\n hasChildren(item: MenuItem): boolean {\n return !!(item.items && item.items.length > 0);\n }\n\n getItemId(item: MenuItem, index: number): string {\n return item.id || `menu-item-${this.level()}-${index}`;\n }\n\n // ========== Interaction methods ==========\n\n handleItemClick(event: Event, item: MenuItem) {\n if (this.isDisabled(item) || item.separator) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n // Emit click event\n this.itemClick.emit({ originalEvent: event, item });\n\n // Execute command if provided\n if (item.command) {\n item.command({ originalEvent: event, item });\n }\n\n // Handle expansion for items with children\n if (this.hasChildren(item) && this.collapsible()) {\n event.preventDefault();\n this.toggleExpand(item);\n }\n\n // Handle selection\n if (this.selectOnNavigate() && item.id) {\n this.activeItemId.set(item.id);\n this.itemSelect.emit(item);\n this.activeChange.emit(item.id);\n }\n\n // Navigation is handled by RouterLink directive if routerLink is set\n }\n\n handleItemMouseEnter(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item) && !this.isDisabled(item)) {\n this.expand(item);\n }\n }\n\n handleItemMouseLeave(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item)) {\n this.collapse(item);\n }\n }\n\n toggleExpand(item: MenuItem) {\n if (!item.id) return;\n\n const expanded = this.expandedItems();\n const newExpanded = new Set(expanded);\n\n if (newExpanded.has(item.id)) {\n newExpanded.delete(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n } else {\n // In accordion mode, collapse others at the same level\n if (this.mode() === 'accordion') {\n this.items().forEach(i => {\n if (i.id && i.id !== item.id) {\n newExpanded.delete(i.id);\n }\n });\n }\n newExpanded.add(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n this.expandedItems.set(newExpanded);\n }\n\n expand(item: MenuItem) {\n if (!item.id || this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.add(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n collapse(item: MenuItem) {\n if (!item.id || !this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.delete(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n }\n\n // ========== Keyboard navigation ==========\n\n @HostListener('keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.keyboardNavigation()) return;\n\n const items = this.flattenedItems();\n const currentIndex = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusNextItem(items, currentIndex);\n }\n break;\n\n case 'ArrowUp':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusPreviousItem(items, currentIndex);\n }\n break;\n\n case 'ArrowRight':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusNextItem(items, currentIndex);\n } else {\n this.expandFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'ArrowLeft':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusPreviousItem(items, currentIndex);\n } else {\n this.collapseFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'Home':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(0);\n }\n break;\n\n case 'End':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(items.length - 1);\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.activateFocusedItem(items, currentIndex);\n break;\n\n case 'Escape':\n event.preventDefault();\n this.collapseAll();\n break;\n }\n }\n\n private focusNextItem(items: MenuItem[], currentIndex: number) {\n const nextIndex = (currentIndex + 1) % items.length;\n this.focusedIndex.set(nextIndex);\n }\n\n private focusPreviousItem(items: MenuItem[], currentIndex: number) {\n const prevIndex = currentIndex <= 0 ? items.length - 1 : currentIndex - 1;\n this.focusedIndex.set(prevIndex);\n }\n\n private expandFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item)) {\n this.expand(item);\n }\n }\n }\n\n private collapseFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item) && this.isExpanded(item)) {\n this.collapse(item);\n }\n }\n }\n\n private activateFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n const fakeEvent = new Event('click');\n this.handleItemClick(fakeEvent, item);\n }\n }\n\n private collapseAll() {\n this.expandedItems.set(new Set());\n }\n\n // ========== Helper methods ==========\n\n private flattenMenuItems(items: MenuItem[]): MenuItem[] {\n const result: MenuItem[] = [];\n\n const flatten = (itemList: MenuItem[]) => {\n itemList.forEach(item => {\n if (this.isVisible(item) && !item.separator) {\n result.push(item);\n if (item.items && this.isExpanded(item)) {\n flatten(item.items);\n }\n }\n });\n };\n\n flatten(items);\n return result;\n }\n\n private updateActiveFromRouter() {\n if (!this.router) return;\n\n // This would require checking current route against menu items\n // Implementation depends on routing setup\n // For now, RouterLinkActive directive handles this\n }\n\n getIndentStyle(itemLevel: number = 0): Record<string, string> {\n const indent = this.level() + itemLevel;\n if (indent === 0) return {};\n\n return {\n 'padding-left': `calc(var(--menu-padding) + ${indent * this.indentLevel()}px)`\n };\n }\n}\n","<div class=\"studio-menu__list\">\n @for (item of items(); track getItemId(item, $index)) {\n @if (isVisible(item)) {\n @if (item.separator) {\n <!-- Separator -->\n <div class=\"studio-menu__separator\"></div>\n } @else {\n <!-- Menu Item -->\n <div\n class=\"studio-menu-item\"\n [class.studio-menu-item--disabled]=\"isDisabled(item)\"\n [class.studio-menu-item--active]=\"isActive(item)\"\n [class.studio-menu-item--has-children]=\"hasChildren(item)\"\n [class.studio-menu-item--expanded]=\"isExpanded(item)\"\n [class]=\"itemClass() + ' ' + (item.class || '')\"\n [style]=\"getIndentStyle()\"\n [attr.role]=\"role() === 'menu' ? 'menuitem' : undefined\"\n [attr.aria-disabled]=\"isDisabled(item)\"\n [attr.aria-expanded]=\"hasChildren(item) ? isExpanded(item) : undefined\"\n [attr.title]=\"item.tooltip\"\n (click)=\"handleItemClick($event, item)\"\n (mouseenter)=\"handleItemMouseEnter(item)\"\n (mouseleave)=\"handleItemMouseLeave(item)\"\n >\n <!-- Router Link -->\n @if (item.routerLink && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [target]=\"item.target\"\n routerLinkActive=\"studio-menu-item__link--active\"\n [attr.aria-current]=\"isActive(item) ? 'page' : undefined\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- External Link -->\n @else if (item.href && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- Button (no navigation) -->\n @else {\n <div class=\"studio-menu-item__content\">\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </div>\n }\n </div>\n\n <!-- Submenu (recursive) -->\n @if (hasChildren(item) && isExpanded(item)) {\n <div\n class=\"studio-menu__submenu\"\n [@expandCollapse]=\"animated() ? 'expanded' : undefined\"\n >\n <studio-menu\n [items]=\"item.items!\"\n [orientation]=\"orientation()\"\n [mode]=\"mode()\"\n [collapsible]=\"collapsible()\"\n [expandOnHover]=\"expandOnHover()\"\n [selectOnNavigate]=\"selectOnNavigate()\"\n [keyboardNavigation]=\"keyboardNavigation()\"\n [arrowNavigation]=\"arrowNavigation()\"\n [homeEndNavigation]=\"homeEndNavigation()\"\n [animated]=\"animated()\"\n [animationDuration]=\"animationDuration()\"\n [size]=\"size()\"\n [compact]=\"compact()\"\n [fullWidth]=\"fullWidth()\"\n [variant]=\"variant()\"\n [color]=\"color()\"\n [radius]=\"radius()\"\n [spacing]=\"spacing()\"\n [showDividers]=\"showDividers()\"\n [iconSize]=\"iconSize()\"\n [iconOnly]=\"iconOnly()\"\n [indentLevel]=\"indentLevel()\"\n [showExpandIcon]=\"showExpandIcon()\"\n [expandIconPosition]=\"expandIconPosition()\"\n [expandIcon]=\"expandIcon()\"\n [itemClass]=\"itemClass()\"\n [level]=\"level() + 1\"\n [parentExpanded]=\"isExpanded(item)\"\n (itemClick)=\"itemClick.emit($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n (activeChange)=\"activeChange.emit($event)\"\n />\n </div>\n }\n\n <!-- Divider (if enabled) -->\n @if (showDividers() && $index < items().length - 1) {\n <div class=\"studio-menu__divider\"></div>\n }\n }\n }\n }\n</div>\n\n<!-- Item Content Template -->\n<ng-template #itemContent let-item>\n <div class=\"studio-menu-item__inner\">\n <!-- Left Icon -->\n @if (item.icon && (!item.iconPosition || item.iconPosition === 'left')) {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--left\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Label -->\n @if (!iconOnly()) {\n <span class=\"studio-menu-item__label\">{{ item.label }}</span>\n }\n\n <!-- Badge -->\n @if (item.badge && !iconOnly()) {\n <studio-badge\n class=\"studio-menu-item__badge\"\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n />\n }\n\n <!-- Right Icon -->\n @if (item.icon && item.iconPosition === 'right') {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--right\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Expand Icon -->\n @if (hasChildren(item) && showExpandIcon() && !iconOnly()) {\n <studio-icon\n class=\"studio-menu-item__expand-icon\"\n [class.studio-menu-item__expand-icon--expanded]=\"isExpanded(item)\"\n [name]=\"expandIcon()\"\n [size]=\"16\"\n />\n }\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n NavbarVariant,\n NavbarColor,\n NavbarSize,\n NavbarShadow\n} from './navbar.types';\n\n/**\n * Navbar component - Primitive component for navigation headers\n *\n * @example\n * <studio-navbar variant=\"filled\" [sticky]=\"true\">\n * <div navbarLeft>Logo</div>\n * <div navbarCenter>Search</div>\n * <div navbarRight>User menu</div>\n * </studio-navbar>\n */\n@Component({\n selector: 'studio-navbar',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"banner\"',\n '[style.height]': 'customHeight() ? customHeight() + \"px\" : null'\n },\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss'\n})\nexport class NavbarComponent {\n // ========== Visual variants ==========\n variant = input<NavbarVariant>('default');\n color = input<NavbarColor>('inherit');\n shadow = input<NavbarShadow>('sm');\n\n // ========== Size ==========\n size = input<NavbarSize>('md');\n customHeight = input<number | null>(null);\n\n // ========== Behavior ==========\n sticky = input<boolean>(false);\n blurBg = input<boolean>(false);\n\n // ========== Borders ==========\n bordered = input<boolean>(true);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n navbarClick = output<MouseEvent>();\n\n // ========== Computed classes ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-navbar'];\n\n classes.push(`studio-navbar--${this.variant()}`);\n classes.push(`studio-navbar--${this.size()}`);\n classes.push(`studio-navbar--shadow-${this.shadow()}`);\n\n if (this.color() !== 'inherit') classes.push(`studio-navbar--${this.color()}`);\n if (this.sticky()) classes.push('studio-navbar--sticky');\n if (this.blurBg()) classes.push('studio-navbar--blur');\n if (this.bordered()) classes.push('studio-navbar--bordered');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent) {\n this.navbarClick.emit(event);\n }\n}\n","<div class=\"studio-navbar__left\">\n <ng-content select=\"[navbarLeft]\" />\n</div>\n\n<div class=\"studio-navbar__center\">\n <ng-content select=\"[navbarCenter]\" />\n</div>\n\n<div class=\"studio-navbar__right\">\n <ng-content select=\"[navbarRight]\" />\n</div>\n\n<ng-content />\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\nexport type RadioButtonSize = 'sm' | 'md' | 'lg';\nexport type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type RadioButtonVariant = 'default' | 'outlined' | 'filled';\nexport type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * RadioButton component for selecting a single option from a group\n *\n * @example\n * <studio-radio-button\n * [(ngModel)]=\"selectedValue\"\n * [value]=\"'option1'\"\n * label=\"Option 1\"\n * name=\"options\"\n * />\n */\n@Component({\n selector: 'studio-radio-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly radioDefaults = computed(() => this.configService.config().components?.radioButton);\n\n size = input<RadioButtonSize>(this.radioDefaults()?.size ?? 'md');\n color = input<RadioButtonColor>(this.radioDefaults()?.color ?? 'primary');\n variant = input<RadioButtonVariant>(this.radioDefaults()?.variant ?? 'default');\n radius = input<RadioButtonRadius>(this.radioDefaults()?.radius ?? 'full');\n\n label = input<string>();\n labelPosition = input<'left' | 'right'>(this.radioDefaults()?.labelPosition ?? 'right');\n description = input<string>();\n hint = input<string>();\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string>();\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n name = input<string>();\n tabIndex = input<number>(0);\n value = input<any>();\n\n changed = output<any>();\n\n protected internalValue = signal<any>(null);\n protected isFocused = signal(false);\n protected radioId = signal(`studio-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n protected hostClasses = computed(() => ({\n 'studio-radio-wrapper': true,\n [`studio-radio-wrapper--${this.size()}`]: true,\n 'studio-radio-wrapper--disabled': this.disabled(),\n 'studio-radio-wrapper--error': this.error(),\n 'studio-radio-wrapper--focused': this.isFocused(),\n 'studio-radio-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n protected radioClasses = computed(() => ({\n 'studio-radio': true,\n [`studio-radio--${this.size()}`]: true,\n [`studio-radio--${this.color()}`]: true,\n [`studio-radio--${this.variant()}`]: true,\n [`studio-radio--radius-${this.radius()}`]: true,\n 'studio-radio--checked': this.isChecked(),\n 'studio-radio--disabled': this.disabled(),\n 'studio-radio--error': this.error()\n }));\n\n protected showError = computed(() => this.error() && this.errorMessage());\n protected showHint = computed(() => !this.error() && this.hint());\n protected isChecked = computed(() => this.internalValue() === this.value());\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.internalValue.set(value);\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const inputValue = this.value();\n this.internalValue.set(inputValue);\n this.onChange(inputValue);\n this.changed.emit(inputValue);\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n","<label\n [for]=\"radioId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"isChecked() ? 'true' : 'false'\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? radioId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-radio__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span [ngClass]=\"radioClasses()\">\n @if (isChecked()) {\n <span class=\"studio-radio__dot\"></span>\n }\n </span>\n\n @if (label() || description()) {\n <span class=\"studio-radio__label-wrapper\">\n @if (label()) {\n <span class=\"studio-radio__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-radio__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-radio__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n@if (showHint() || showError()) {\n <div\n [id]=\"radioId() + '-description'\"\n class=\"studio-radio__info\"\n >\n @if (showError()) {\n <span class=\"studio-radio__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-radio__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n HostListener\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { SelectOption, SelectOptionGroup, SelectVariant, SelectSize, SelectPosition } from './select.types';\n\n@Component({\n selector: 'studio-select',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-open]': 'isOpen()',\n },\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss'\n})\nexport class SelectComponent<T = any> implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly selectDefaults = computed(() => this.configService.config().components?.select);\n\n protected readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerButton');\n protected readonly dropdownEl = viewChild<ElementRef<HTMLDivElement>>('dropdownPanel');\n\n variantInput = input<SelectVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<SelectSize | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.selectDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.selectDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.selectDefaults()?.radius), 'md');\n\n options = input.required<SelectOption<T>[] | SelectOptionGroup<T>[]>();\n placeholder = input<string>('Select option...');\n\n multiple = input<boolean>(false);\n searchable = input<boolean>(false);\n clearable = input<boolean>(true);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n required = input<boolean>(false);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string>('chevron-down');\n\n fullWidth = input<boolean>(false);\n maxHeight = input<string>('300px');\n position = input<SelectPosition>('bottom');\n\n searchPlaceholder = input<string>('Search...');\n\n valueChange = output<T | T[] | null>();\n searchChange = output<string>();\n opened = output<void>();\n closed = output<void>();\n optionSelected = output<SelectOption<T>>();\n\n protected isOpen = signal(false);\n protected searchQuery = signal('');\n protected selectedValue = signal<T | T[] | null>(null);\n protected highlightedIndex = signal(0);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n\n protected generatedId = `studio-select-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.setupClickOutside();\n } else {\n this.cleanupClickOutside();\n }\n });\n }\n\n protected flattenedOptions = computed(() => {\n const opts = this.options();\n if (!opts || opts.length === 0) return [];\n\n if (this.isOptionGroup(opts[0])) {\n return (opts as SelectOptionGroup<T>[]).flatMap(g => g.options);\n }\n return opts as SelectOption<T>[];\n });\n\n protected filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this.flattenedOptions();\n\n if (!query) return opts;\n\n return opts.filter(opt =>\n opt.label.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query)\n );\n });\n\n protected selectedOptions = computed(() => {\n const value = this.selectedValue();\n const opts = this.flattenedOptions();\n\n if (this.multiple()) {\n const values = (value as T[]) || [];\n return opts.filter(opt => values.includes(opt.value));\n }\n\n return opts.find(opt => this.compareValues(opt.value, value as T)) || null;\n });\n\n protected displayValue = computed(() => {\n const selected = this.selectedOptions();\n\n if (this.multiple() && Array.isArray(selected)) {\n return selected.map(opt => opt.label).join(', ');\n }\n\n if (selected && !Array.isArray(selected)) {\n return selected.label;\n }\n\n return '';\n });\n\n protected hasValue = computed(() => {\n const val = this.selectedValue();\n return this.multiple()\n ? Array.isArray(val) && val.length > 0\n : val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-select',\n `studio-select--${this.variant()}`,\n `studio-select--${this.size()}`,\n `studio-select--radius-${this.radius()}`,\n this.isOpen() && 'studio-select--open',\n this.disabled() && 'studio-select--disabled',\n this.loading() && 'studio-select--loading',\n this.error() && 'studio-select--error',\n this.isFocused() && 'studio-select--focused',\n this.hasValue() && 'studio-select--has-value',\n this.fullWidth() && 'studio-select--full-width'\n ));\n\n protected toggle(): void {\n if (!this.disabled() && !this.loading()) {\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.opened.emit();\n setTimeout(() => this.focusSearchInput(), 0);\n } else {\n this.closed.emit();\n this.searchQuery.set('');\n }\n }\n }\n\n protected close(): void {\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.closed.emit();\n this.searchQuery.set('');\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected selectOption(option: SelectOption<T>): void {\n if (option.disabled) return;\n\n if (this.multiple()) {\n const current = ((this.selectedValue() as T[]) || []);\n const isSelected = current.includes(option.value);\n\n if (isSelected) {\n this.selectedValue.set(current.filter(v => v !== option.value));\n } else {\n this.selectedValue.set([...current, option.value]);\n }\n } else {\n this.selectedValue.set(option.value);\n this.close();\n }\n\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n this.optionSelected.emit(option);\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.selectedValue.set(this.multiple() ? [] : null);\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n if (this.multiple()) {\n const values = (this.selectedValue() as T[]) || [];\n return values.includes(option.value);\n }\n return this.compareValues(option.value, this.selectedValue() as T);\n }\n\n protected handleSearch(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searchChange.emit(query);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggle();\n } else {\n this.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.isOpen()) {\n this.highlightPrevious();\n }\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.isOpen()) {\n this.selectHighlighted();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n private highlightNext(): void {\n const opts = this.filteredOptions();\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.min(current + 1, opts.length - 1));\n }\n\n private highlightPrevious(): void {\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.max(current - 1, 0));\n }\n\n private selectHighlighted(): void {\n const opts = this.filteredOptions();\n const index = this.highlightedIndex();\n if (opts[index]) {\n this.selectOption(opts[index]);\n }\n }\n\n private compareValues(a: T, b: T): boolean {\n return a === b;\n }\n\n private isOptionGroup(item: any): item is SelectOptionGroup<T> {\n return item && 'options' in item && Array.isArray(item.options);\n }\n\n private focusSearchInput(): void {\n if (this.searchable()) {\n const searchInput = this.dropdownEl()?.nativeElement.querySelector('input');\n searchInput?.focus();\n }\n }\n\n private clickOutsideListener?: (event: Event) => void;\n\n private setupClickOutside(): void {\n this.clickOutsideListener = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.triggerEl()?.nativeElement;\n const dropdown = this.dropdownEl()?.nativeElement;\n\n if (trigger && !trigger.contains(target) && dropdown && !dropdown.contains(target)) {\n this.close();\n }\n };\n\n setTimeout(() => {\n document.addEventListener('click', this.clickOutsideListener!);\n }, 0);\n }\n\n private cleanupClickOutside(): void {\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n this.clickOutsideListener = undefined;\n }\n }\n\n writeValue(value: T | T[]): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-select__control\">\n @if (prefixIcon()) {\n <span class=\"studio-select__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label--floating\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n }\n\n <button\n #triggerButton\n type=\"button\"\n [id]=\"generatedId\"\n class=\"studio-select__trigger\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n >\n @if (hasValue()) {\n <span class=\"studio-select__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"studio-select__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n @if (clearable() && hasValue() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-select__clear\"\n (click)=\"clear($event)\"\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (loading()) {\n <span class=\"studio-select__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n } @else {\n <span class=\"studio-select__suffix\">\n <studio-icon\n [name]=\"suffixIcon()\"\n [size]=\"16\"\n />\n </span>\n }\n</div>\n\n@if (isOpen()) {\n <div\n #dropdownPanel\n class=\"studio-select__dropdown\"\n [attr.data-position]=\"position()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (searchable()) {\n <div class=\"studio-select__search\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"handleSearch($event)\"\n />\n </div>\n }\n\n <div class=\"studio-select__options\" role=\"listbox\">\n @if (filteredOptions().length === 0) {\n <div class=\"studio-select__empty\">\n No options found\n </div>\n }\n\n @for (option of filteredOptions(); track option.value; let idx = $index) {\n <div\n class=\"studio-select__option\"\n [class.studio-select__option--selected]=\"isSelected(option)\"\n [class.studio-select__option--disabled]=\"option.disabled\"\n [class.studio-select__option--highlighted]=\"highlightedIndex() === idx\"\n (click)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n >\n @if (multiple()) {\n <input\n type=\"checkbox\"\n class=\"studio-select__checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"option.disabled\"\n tabindex=\"-1\"\n />\n }\n\n @if (option.icon) {\n <studio-icon [name]=\"option.icon\" [size]=\"18\" class=\"studio-select__option-icon\" />\n }\n\n <div class=\"studio-select__option-content\">\n <div class=\"studio-select__option-label\">\n {{ option.label }}\n </div>\n @if (option.description) {\n <div class=\"studio-select__option-description\">\n {{ option.description }}\n </div>\n }\n </div>\n\n @if (!multiple() && isSelected(option)) {\n <studio-icon name=\"check\" [size]=\"16\" class=\"studio-select__check-icon\" />\n }\n </div>\n }\n </div>\n </div>\n}\n\n@if (hint() && !error()) {\n <div class=\"studio-select__hint\">{{ hint() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"studio-select__error\">{{ errorMessage() }}</div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n computed,\n inject,\n effect\n} from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { DrawerComponent } from '../drawer';\nimport { StudioConfigService } from '../../config';\nimport { withConfigDefault } from '../../utils';\nimport { SidebarPosition, SidebarSize, SidebarVariant } from './sidebar.types';\n\n/**\n * Sidebar component - Navigation sidebar built on top of Drawer\n *\n * @example\n * <studio-sidebar [(visible)]=\"sidebarOpen\">\n * <nav sidebarHeader>\n * <h2>Navigation</h2>\n * </nav>\n *\n * <studio-menu>\n * <studio-menu-item>Home</studio-menu-item>\n * <studio-menu-item>About</studio-menu-item>\n * </studio-menu>\n *\n * <div sidebarFooter>\n * <studio-button>Logout</studio-button>\n * </div>\n * </studio-sidebar>\n */\n@Component({\n selector: 'studio-sidebar',\n standalone: true,\n imports: [DrawerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss'\n})\nexport class SidebarComponent {\n private readonly router = inject(Router, { optional: true });\n private readonly configService = inject(StudioConfigService);\n private readonly sidebarDefaults = computed(() => this.configService.config().components?.sidebar);\n\n // Core\n id = input<string>(`studio-sidebar-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<SidebarPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<SidebarSize | undefined>(undefined, { alias: 'size' });\n variantInput = input<SidebarVariant | undefined>(undefined, { alias: 'variant' });\n customWidth = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.sidebarDefaults()?.position), 'left');\n size = withConfigDefault(this.sizeInput, computed(() => this.sidebarDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.sidebarDefaults()?.variant), 'default');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n collapsibleInput = input<boolean | undefined>(undefined, { alias: 'collapsible' });\n defaultCollapsedInput = input<boolean | undefined>(undefined, { alias: 'defaultCollapsed' });\n closeOnNavigateInput = input<boolean | undefined>(undefined, { alias: 'closeOnNavigate' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.sidebarDefaults()?.modal), true);\n collapsible = withConfigDefault(this.collapsibleInput, computed(() => this.sidebarDefaults()?.collapsible), false);\n defaultCollapsed = withConfigDefault(this.defaultCollapsedInput, computed(() => this.sidebarDefaults()?.defaultCollapsed), false);\n closeOnNavigate = withConfigDefault(this.closeOnNavigateInput, computed(() => this.sidebarDefaults()?.closeOnNavigate), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.sidebarDefaults()?.closeOnBackdropClick), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.sidebarDefaults()?.closeOnEscape), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.sidebarDefaults()?.blockScroll), true);\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.sidebarDefaults()?.swipeToClose), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showFooterInput = input<boolean | undefined>(undefined, { alias: 'showFooter' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.sidebarDefaults()?.showHeader), true);\n showFooter = withConfigDefault(this.showFooterInput, computed(() => this.sidebarDefaults()?.showFooter), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.sidebarDefaults()?.showCloseButton), true);\n\n // Content Customization\n contentPadding = input<string | undefined>(undefined);\n contentGap = input<string | undefined>(undefined);\n background = input<string | undefined>(undefined);\n\n // Customization\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-sidebar'];\n classes.push(`studio-sidebar--${this.position()}`);\n classes.push(`studio-sidebar--${this.size()}`);\n classes.push(`studio-sidebar--${this.variant()}`);\n if (this.collapsible()) classes.push('studio-sidebar--collapsible');\n if (this.class()) classes.push(this.class());\n return classes.join(' ');\n });\n\n protected drawerSize = computed<'sm' | 'md' | 'lg' | 'xl' | 'full'>(() => {\n const currentSize = this.size();\n const sizeMap: Record<SidebarSize, 'sm' | 'md' | 'lg' | 'xl' | 'full'> = {\n 'sm': 'sm',\n 'md': 'md',\n 'lg': 'lg',\n 'full': 'full'\n };\n return sizeMap[currentSize];\n });\n\n constructor() {\n // Close sidebar on navigation if enabled\n if (this.router && this.closeOnNavigate()) {\n effect(() => {\n const subscription = this.router!.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n if (this.closeOnNavigate() && this.visible()) {\n this.visible.set(false);\n }\n });\n\n return () => subscription.unsubscribe();\n });\n }\n }\n}\n","<studio-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"visible.set($event)\"\n [position]=\"position()\"\n [size]=\"drawerSize()\"\n [modal]=\"modal()\"\n [closeOnBackdropClick]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnEscape()\"\n [blockScroll]=\"blockScroll()\"\n [showHeader]=\"showHeader()\"\n [header]=\"header()\"\n [showCloseButton]=\"showCloseButton()\"\n [showFooter]=\"showFooter()\"\n [swipeToClose]=\"swipeToClose()\"\n [customWidth]=\"customWidth()\"\n>\n <ng-content select=\"[sidebarHeader]\" drawerHeader />\n\n <div\n class=\"studio-sidebar__content\"\n [class]=\"'studio-sidebar__content--' + variant()\"\n [style.padding]=\"contentPadding()\"\n [style.gap]=\"contentGap()\"\n [style.background]=\"background()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[sidebarFooter]\" drawerFooter />\n</studio-drawer>\n","/**\n * Sidebar component types\n */\n\nexport type SidebarPosition = 'left' | 'right';\nexport type SidebarSize = 'sm' | 'md' | 'lg' | 'full';\nexport type SidebarVariant = 'default' | 'minimal' | 'compact';\n\nexport interface SidebarConfig {\n position?: SidebarPosition;\n size?: SidebarSize;\n variant?: SidebarVariant;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n modal?: boolean;\n closeOnNavigate?: boolean;\n showOverlay?: boolean;\n}\n","/**\n * Sidebar component\n */\n\nexport * from './sidebar.component';\nexport * from './sidebar.types';\n","import { Component, ChangeDetectionStrategy, input, output, computed, model, inject, signal, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n/**\n * Toggle switch component with customizable size and color\n *\n * @example\n * <studio-switch [(checked)]=\"isEnabled\" label=\"Enable feature\" />\n * <studio-switch [(ngModel)]=\"isEnabled\" label=\"Enable feature\" />\n */\n@Component({\n selector: 'studio-switch',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'internalChecked()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-label]': 'ariaLabel() || label()',\n '(click)': 'handleClick()',\n '(keydown.space)': 'handleKeydown($event)',\n '(keydown.enter)': 'handleKeydown($event)',\n '[tabindex]': 'disabled() ? -1 : 0'\n },\n template: `\n <span class=\"studio-switch__container\">\n @if (label() && labelPosition() === 'left') {\n <span class=\"studio-switch__label studio-switch__label--left\">\n {{ label() }}\n </span>\n }\n\n <span class=\"studio-switch__track\">\n <span class=\"studio-switch__thumb\">\n @if (showIcons()) {\n @if (internalChecked()) {\n <studio-icon name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"x\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n }\n </span>\n </span>\n\n @if (label() && labelPosition() === 'right') {\n <span class=\"studio-switch__label studio-switch__label--right\">\n {{ label() }}\n </span>\n }\n </span>\n `,\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly switchDefaults = computed(() => this.configService.config().components?.switch);\n\n checked = model<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n labelPosition = input<'left' | 'right'>('right');\n showIcons = input<boolean>(false);\n ariaLabel = input<string>();\n\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | undefined>(undefined, { alias: 'color' });\n\n size = withConfigDefault(this.sizeInput, computed(() => this.switchDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.switchDefaults()?.color), 'primary');\n\n checkedChange = output<boolean>();\n\n protected internalChecked = signal<boolean>(false);\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 10, md: 12, lg: 14 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-switch',\n `studio-switch--${this.size()}`,\n `studio-switch--${this.color()}`,\n this.internalChecked() && 'studio-switch--checked',\n this.disabled() && 'studio-switch--disabled'\n ));\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleClick(): void {\n if (this.disabled()) return;\n this.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.toggle();\n }\n\n private toggle(): void {\n const newValue = !this.internalChecked();\n this.internalChecked.set(newValue);\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.checkedChange.emit(newValue);\n }\n}\n","/**\n * Switch component\n */\n\nexport * from './switch.component';\n","import { Component, input, output, computed, signal, forwardRef, inject, effect, ElementRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\nimport { classNames } from '../../utils';\n\n/**\n * Textarea component for multi-line text input\n *\n * @example\n * <studio-textarea\n * [(ngModel)]=\"message\"\n * label=\"Your message\"\n * placeholder=\"Enter your message...\"\n * [rows]=\"4\"\n * />\n */\n@Component({\n selector: 'studio-textarea',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()',\n '[attr.data-full-width]': 'fullWidth()'\n }\n})\nexport class TextareaComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly textareaDefaults = computed(() => this.configService.config().components?.textarea);\n\n variant = input<TextareaVariant>(\n this.textareaDefaults()?.variant ?? 'outline'\n );\n\n size = input<TextareaSize>(\n this.textareaDefaults()?.size ?? 'md'\n );\n\n color = input<TextareaColor>(\n this.textareaDefaults()?.color ?? 'primary'\n );\n\n radius = input<TextareaRadius>(\n this.textareaDefaults()?.radius ?? 'md'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Floating label (moves up when focused/filled)\n */\n floatingLabel = input<boolean>(false);\n\n /**\n * Placeholder text\n */\n placeholder = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Textarea Specific\n // ==========================================\n\n /**\n * Number of visible text rows\n */\n rows = input<number>(\n this.textareaDefaults()?.rows ?? 3\n );\n\n /**\n * Minimum rows for auto-resize\n */\n minRows = input<number>();\n\n /**\n * Maximum rows for auto-resize\n */\n maxRows = input<number>();\n\n /**\n * Enable auto-resize based on content\n */\n autoResize = input<boolean>(\n this.textareaDefaults()?.autoResize ?? false\n );\n\n /**\n * Resize behavior\n */\n resize = input<'none' | 'vertical' | 'horizontal' | 'both'>(\n this.textareaDefaults()?.resize ?? 'vertical'\n );\n\n // ==========================================\n // INPUTS - Character Count\n // ==========================================\n\n /**\n * Maximum character length\n */\n maxLength = input<number>();\n\n /**\n * Show character counter\n */\n showCharCount = input<boolean>(\n this.textareaDefaults()?.showCharCount ?? false\n );\n\n /**\n * Character counter position\n */\n charCountPosition = input<'bottom-right' | 'bottom-left'>('bottom-right');\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Minimum character length\n */\n minLength = input<number>();\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Full width (100% of parent)\n */\n fullWidth = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Autocomplete attribute\n */\n autocomplete = input<string>();\n\n /**\n * Spellcheck attribute\n */\n spellcheck = input<boolean>(true);\n\n /**\n * Show clear button\n */\n clearable = input<boolean>(\n this.textareaDefaults()?.clearable ?? false\n );\n\n /**\n * Loading state\n */\n loading = input<boolean>(false);\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when value changes\n */\n changed = output<string>();\n\n /**\n * Emitted on focus\n */\n focused = output<FocusEvent>();\n\n /**\n * Emitted on blur\n */\n blurred = output<FocusEvent>();\n\n /**\n * Emitted on key press\n */\n keyPressed = output<KeyboardEvent>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal value\n */\n protected internalValue = signal('');\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected textareaId = signal(`studio-textarea-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Textarea element reference\n */\n protected textareaEl = viewChild<ElementRef<HTMLTextAreaElement>>('textarea');\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n protected hostClasses = computed(() => classNames(\n 'studio-textarea-wrapper',\n `studio-textarea-wrapper--${this.size()}`,\n `studio-textarea-wrapper--${this.variant()}`,\n this.disabled() && 'studio-textarea-wrapper--disabled',\n this.error() && 'studio-textarea-wrapper--error',\n this.isFocused() && 'studio-textarea-wrapper--focused',\n this.fullWidth() && 'studio-textarea-wrapper--full-width',\n this.floatingLabel() && 'studio-textarea-wrapper--floating-label'\n ));\n\n /**\n * Textarea element CSS classes\n */\n protected textareaClasses = computed(() => classNames(\n 'studio-textarea',\n `studio-textarea--${this.size()}`,\n `studio-textarea--${this.variant()}`,\n `studio-textarea--${this.color()}`,\n `studio-textarea--radius-${this.radius()}`,\n `studio-textarea--resize-${this.resize()}`,\n this.disabled() && 'studio-textarea--disabled',\n this.readonly() && 'studio-textarea--readonly',\n this.error() && 'studio-textarea--error',\n this.internalValue().length > 0 && 'studio-textarea--has-value',\n this.autoResize() && 'studio-textarea--auto-resize'\n ));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * Character count text\n */\n protected charCountText = computed(() => {\n const length = this.internalValue().length;\n const max = this.maxLength();\n return max ? `${length}/${max}` : `${length}`;\n });\n\n /**\n * Is character limit exceeded\n */\n protected isCharLimitExceeded = computed(() => {\n const max = this.maxLength();\n return max ? this.internalValue().length > max : false;\n });\n\n /**\n * Computed placeholder (empty if floating label)\n */\n protected computedPlaceholder = computed(() => {\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n /**\n * Show floating label in \"up\" position\n */\n protected showFloatingLabelUp = computed(() => {\n return this.floatingLabel() && (this.isFocused() || this.internalValue().length > 0);\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.internalValue.set(value ?? '');\n this.adjustHeightIfNeeded();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // CONSTRUCTOR & EFFECTS\n // ==========================================\n\n constructor() {\n // Auto-resize effect\n effect(() => {\n if (this.autoResize()) {\n this.adjustHeightIfNeeded();\n }\n });\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle textarea input\n */\n protected handleInput(event: Event): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.internalValue.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n\n if (this.autoResize()) {\n this.adjustHeight(event.target as HTMLTextAreaElement);\n }\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n /**\n * Handle key press\n */\n protected handleKeyPress(event: KeyboardEvent): void {\n this.keyPressed.emit(event);\n }\n\n /**\n * Clear textarea value\n */\n protected handleClear(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.internalValue.set('');\n this.onChange('');\n this.changed.emit('');\n\n // Focus textarea after clearing\n this.textareaEl()?.nativeElement.focus();\n }\n\n /**\n * Adjust textarea height for auto-resize\n */\n private adjustHeightIfNeeded(): void {\n if (this.autoResize()) {\n setTimeout(() => {\n const textarea = this.textareaEl()?.nativeElement;\n if (textarea) {\n this.adjustHeight(textarea);\n }\n });\n }\n }\n\n /**\n * Adjust textarea height based on content\n */\n private adjustHeight(textarea: HTMLTextAreaElement): void {\n // Reset height to auto to get proper scrollHeight\n textarea.style.height = 'auto';\n\n const minRows = this.minRows() ?? this.rows();\n const maxRows = this.maxRows();\n\n // Calculate line height\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight);\n const padding = parseInt(getComputedStyle(textarea).paddingTop) +\n parseInt(getComputedStyle(textarea).paddingBottom);\n\n // Calculate min and max heights\n const minHeight = minRows * lineHeight + padding;\n const maxHeight = maxRows ? maxRows * lineHeight + padding : Infinity;\n\n // Set new height within bounds\n const newHeight = Math.max(minHeight, Math.min(textarea.scrollHeight, maxHeight));\n textarea.style.height = `${newHeight}px`;\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type TextareaVariant = 'outline' | 'filled' | 'underline';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\nexport type TextareaColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type TextareaRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<div class=\"studio-textarea-container\">\n <!-- Label (static or floating) -->\n @if (label() && !floatingLabel()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea wrapper -->\n <div class=\"studio-textarea-input-wrapper\">\n <!-- Floating label -->\n @if (floatingLabel() && label()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label studio-textarea-label--floating\"\n [class.studio-textarea-label--floating-up]=\"showFloatingLabelUp()\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea element -->\n <textarea\n #textarea\n [id]=\"textareaId()\"\n [class]=\"textareaClasses()\"\n [value]=\"internalValue()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [autocomplete]=\"autocomplete()\"\n [spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-describedby]=\"showHint() || showError() ? textareaId() + '-description' : undefined\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n ></textarea>\n\n <!-- Clear button -->\n @if (clearable() && internalValue().length > 0 && !disabled() && !readonly()) {\n <button\n type=\"button\"\n class=\"studio-textarea-clear\"\n [attr.aria-label]=\"'Clear textarea'\"\n (click)=\"handleClear()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Loading indicator -->\n @if (loading()) {\n <div class=\"studio-textarea-loading\">\n <svg\n class=\"studio-textarea-spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n </div>\n }\n\n <!-- Character counter -->\n @if (showCharCount()) {\n <div\n class=\"studio-textarea-char-count\"\n [class.studio-textarea-char-count--exceeded]=\"isCharLimitExceeded()\"\n [attr.data-position]=\"charCountPosition()\"\n >\n {{ charCountText() }}\n </div>\n }\n </div>\n\n <!-- Helper text / Error message -->\n @if (showError()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--error\"\n [id]=\"textareaId() + '-description'\"\n role=\"alert\"\n >\n {{ errorMessage() }}\n </div>\n } @else if (showHint()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--hint\"\n [id]=\"textareaId() + '-description'\"\n >\n {{ hint() }}\n </div>\n }\n</div>\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './badge-wrapper';\nexport * from './button';\nexport * from './button-group';\nexport * from './checkbox';\nexport * from './color-picker';\nexport * from './drawer';\nexport * from './icon';\nexport * from './input';\nexport * from './menu';\nexport * from './navbar';\nexport * from './radio-button';\nexport * from './select';\nexport * from './sidebar';\nexport * from './switch';\nexport * from './textarea';\n","import { Component, ChangeDetectionStrategy, input, output, computed, inject, forwardRef, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonComponent } from '../../primitives/button';\nimport { ButtonGroupComponent } from '../../primitives/button-group';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ButtonToggleGroupOption, ButtonToggleGroupValue } from './button-toggle-group.types';\n\n@Component({\n selector: 'studio-button-toggle-group',\n standalone: true,\n imports: [ButtonComponent, ButtonGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonToggleGroupComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <studio-button-group\n [orientation]=\"orientation()\"\n [attached]=\"attached()\"\n [fullWidth]=\"fullWidth()\"\n [spacing]=\"spacing()\"\n [align]=\"align()\"\n [ariaLabel]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <studio-button\n [variant]=\"isSelected(option.value) ? 'solid' : variant()\"\n [size]=\"size()\"\n [color]=\"isSelected(option.value) ? color() : 'secondary'\"\n [radius]=\"radius()\"\n [shadow]=\"shadow()\"\n [disabled]=\"disabled() || option.disabled || false\"\n [icon]=\"showIcons() ? option.icon : undefined\"\n [iconPosition]=\"iconPosition()\"\n [ariaLabel]=\"option.ariaLabel\"\n (clicked)=\"handleToggle(option.value)\">\n @if (iconPosition() !== 'only') {\n {{ option.label }}\n }\n </studio-button>\n }\n </studio-button-group>\n `,\n styleUrl: './button-toggle-group.component.scss'\n})\nexport class ButtonToggleGroupComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly toggleGroupDefaults = computed(() => this.configService.config().components?.buttonToggleGroup);\n\n private onChange: (value: ButtonToggleGroupValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n value = model<ButtonToggleGroupValue>('' as ButtonToggleGroupValue);\n\n options = input.required<ButtonToggleGroupOption[]>();\n multiple = input<boolean>(false);\n allowEmpty = input<boolean>(true);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.toggleGroupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.toggleGroupDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.toggleGroupDefaults()?.variant), 'outline');\n color = withConfigDefault(this.colorInput, computed(() => this.toggleGroupDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.toggleGroupDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.toggleGroupDefaults()?.shadow), 'none');\n\n attached = input<boolean>(true);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n showIcons = input<boolean>(true);\n iconPosition = input<'left' | 'right' | 'only'>('left');\n ariaLabel = input<string>();\n\n valueChange = output<ButtonToggleGroupValue>();\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-toggle-group',\n this.disabled() && 'studio-button-toggle-group--disabled'\n ));\n\n protected isSelected(optionValue: string | number): boolean {\n const currentValue = this.value();\n if (this.multiple()) {\n return Array.isArray(currentValue) && currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n\n protected handleToggle(optionValue: string | number): void {\n if (this.disabled()) return;\n\n let newValue: ButtonToggleGroupValue;\n\n if (this.multiple()) {\n const currentArray = Array.isArray(this.value()) ? this.value() as (string | number)[] : [];\n const index = currentArray.indexOf(optionValue);\n\n if (index > -1) {\n if (!this.allowEmpty() && currentArray.length === 1) {\n return;\n }\n newValue = currentArray.filter(v => v !== optionValue);\n } else {\n newValue = [...currentArray, optionValue];\n }\n } else {\n const currentValue = this.value();\n if (currentValue === optionValue && !this.allowEmpty()) {\n return;\n }\n newValue = currentValue === optionValue ? (this.allowEmpty() ? '' : optionValue) : optionValue;\n }\n\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.valueChange.emit(newValue);\n }\n\n writeValue(val: ButtonToggleGroupValue): void {\n if (val !== undefined && val !== null) {\n this.value.set(val);\n } else {\n this.value.set(this.multiple() ? [] : '');\n }\n }\n\n registerOnChange(fn: (value: ButtonToggleGroupValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // disabled handled via input signal\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n forwardRef,\n TemplateRef,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\nimport { ButtonComponent } from '../../primitives/button';\nimport { IconComponent } from '../../primitives/icon';\nimport { InputComponent } from '../../primitives/input';\nimport { CheckboxComponent } from '../../primitives/checkbox';\nimport { RadioButtonComponent } from '../../primitives/radio-button';\nimport { ColorPickerComponent } from '../../primitives/color-picker';\nimport { SelectComponent } from '../../primitives/select';\nimport { TextareaComponent } from '../../primitives/textarea';\nimport { SwitchComponent } from '../../primitives/switch';\nimport {\n InspectorData,\n InspectorSection,\n InspectorParameter,\n InspectorOption,\n InspectorGroupDivider,\n InspectorSpacing,\n InspectorComponentSize,\n InspectorComponentVariant\n} from './inspector.types';\n\n@Component({\n selector: 'studio-inspector',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n IconComponent,\n InputComponent,\n CheckboxComponent,\n RadioButtonComponent,\n ColorPickerComponent,\n SelectComponent,\n TextareaComponent,\n SwitchComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InspectorComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './inspector.component.html',\n styleUrl: './inspector.component.scss'\n})\nexport class InspectorComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n componentSize = input<InspectorComponentSize>('sm');\n componentVariant = input<InspectorComponentVariant>('outline');\n compact = input<boolean>(false);\n showIcons = input<boolean>(true);\n showDefaultIndicator = input<boolean>(true);\n\n collapsible = input<boolean>(true);\n expandedByDefault = input<boolean>(true);\n expandedSectionsInput = input<string[]>([], { alias: 'expandedSections' });\n\n showGroupLabels = input<boolean>(true);\n groupDivider = input<InspectorGroupDivider>('line');\n groupDividerSpacing = input<InspectorSpacing>('md');\n\n labelWidth = input<string>('auto');\n fullWidth = input<boolean>(true);\n spacing = input<InspectorSpacing>('md');\n\n sectionTemplate = input<TemplateRef<any> | undefined>(undefined);\n parameterTemplates = input<Record<string, TemplateRef<any>> | undefined>(undefined);\n\n ariaLabel = input<string>('Inspector panel');\n ariaDescribedBy = input<string | undefined>(undefined);\n\n sectionToggled = output<{ id: string; expanded: boolean }>();\n parameterFocused = output<{ componentId: string; parameterId: string }>();\n parameterBlurred = output<{ componentId: string; parameterId: string }>();\n\n protected values = signal<InspectorData | null>(null);\n protected expandedSections = signal<Set<string>>(new Set());\n\n private onChange: (value: InspectorData | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n this.expandedSections.set(new Set(inputSections));\n }\n });\n }\n\n protected hostClasses = computed(() => classNames(\n 'studio-inspector',\n this.compact() && 'studio-inspector--compact',\n `studio-inspector--spacing-${this.spacing()}`\n ));\n\n protected isSectionExpanded(componentId: string): boolean {\n return this.expandedSections().has(componentId);\n }\n\n protected toggleSection(componentId: string): void {\n if (!this.collapsible()) return;\n\n const expanded = new Set(this.expandedSections());\n\n if (expanded.has(componentId)) {\n expanded.delete(componentId);\n } else {\n expanded.add(componentId);\n }\n\n this.expandedSections.set(expanded);\n\n this.sectionToggled.emit({\n id: componentId,\n expanded: expanded.has(componentId)\n });\n }\n\n protected onParameterChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter) {\n parameter.value = newValue;\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onCheckboxChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n optionValue: any,\n checked: boolean\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter && parameter.type === 'checkbox') {\n const currentValues = Array.isArray(parameter.value) ? parameter.value : [];\n\n if (checked) {\n if (!currentValues.includes(optionValue)) {\n parameter.value = [...currentValues, optionValue];\n }\n } else {\n parameter.value = currentValues.filter(v => v !== optionValue);\n }\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onRadioChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n this.onParameterChange(componentId, groupId, parameterId, newValue);\n }\n\n protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string {\n return `${componentId}-${groupId || 'root'}-${parameterId}`;\n }\n\n protected isChecked(parameter: InspectorParameter, optionValue: any): boolean {\n if (parameter.type === 'checkbox') {\n return Array.isArray(parameter.value) && parameter.value.includes(optionValue);\n } else if (parameter.type === 'radio') {\n return parameter.value === optionValue;\n }\n return false;\n }\n\n protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.value === optionValue;\n }\n\n protected isDefault(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.default !== undefined && parameter.default === optionValue;\n }\n\n protected trackBySectionId(_: number, section: InspectorSection): string {\n return section.id;\n }\n\n protected trackByGroupId(_: number, group: { id: string }): string {\n return group.id;\n }\n\n protected trackByParameterId(_: number, param: InspectorParameter): string {\n return param.id;\n }\n\n protected trackByOptionValue(_: number, option: InspectorOption): any {\n return option.value;\n }\n\n writeValue(value: InspectorData | null): void {\n this.values.set(value);\n this.initializeExpandedSections();\n }\n\n registerOnChange(fn: (value: InspectorData | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_: boolean): void {}\n\n private initializeExpandedSections(): void {\n const expanded = new Set<string>();\n\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n inputSections.forEach(id => expanded.add(id));\n } else if (this.expandedByDefault()) {\n this.values()?.sections.forEach(c => {\n if (c.expanded !== false) {\n expanded.add(c.id);\n }\n });\n } else {\n this.values()?.sections.forEach(c => {\n if (c.expanded === true) {\n expanded.add(c.id);\n }\n });\n }\n\n this.expandedSections.set(expanded);\n }\n}\n","@if (values()) {\n <div class=\"studio-inspector__container\">\n @for (section of values()!.sections; track trackBySectionId($index, section)) {\n <div class=\"studio-inspector__section\"\n [class.studio-inspector__section--expanded]=\"isSectionExpanded(section.id)\"\n [class.studio-inspector__section--collapsed]=\"!isSectionExpanded(section.id)\">\n\n <studio-button\n variant=\"ghost\"\n [fullWidth]=\"true\"\n class=\"studio-inspector__section-header\"\n [class.studio-inspector__section-header--collapsible]=\"collapsible()\"\n [disabled]=\"!collapsible()\"\n [attr.aria-expanded]=\"isSectionExpanded(section.id)\"\n [attr.aria-controls]=\"'section-content-' + section.id\"\n (click)=\"toggleSection(section.id)\">\n\n @if (showIcons() && section.icon) {\n <studio-icon\n [name]=\"section.icon\"\n [size]=\"16\"\n class=\"studio-inspector__section-icon\"\n />\n }\n\n <span class=\"studio-inspector__section-title\">{{ section.title }}</span>\n\n @if (collapsible()) {\n <studio-icon\n [name]=\"'chevron-down'\"\n [size]=\"16\"\n class=\"studio-inspector__section-toggle\"\n />\n }\n </studio-button>\n\n @if (isSectionExpanded(section.id)) {\n <div\n class=\"studio-inspector__section-content\"\n [id]=\"'section-content-' + section.id\">\n\n @if (section.groups) {\n @for (group of section.groups; track trackByGroupId($index, group); let isLast = $last) {\n <div class=\"studio-inspector__group\">\n\n @if (showGroupLabels() && group.label) {\n <div class=\"studio-inspector__group-label\">{{ group.label }}</div>\n }\n\n @for (param of group.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + group.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, group.id, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, group.id, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, group.id, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n\n @if (!isLast && groupDivider() !== 'none') {\n <div class=\"studio-inspector__group-divider\"\n [class.studio-inspector__group-divider--line]=\"groupDivider() === 'line'\"\n [class.studio-inspector__group-divider--space]=\"groupDivider() === 'space'\">\n </div>\n }\n </div>\n }\n }\n\n @if (section.parameters) {\n @for (param of section.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, null, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, null, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, null, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, computed, inject } from '@angular/core';\nimport { SwitchComponent } from '../../primitives/switch';\nimport { IconComponent } from '../../primitives/icon';\nimport { StudioConfigService } from '../../config';\n\n/**\n * Theme toggle switch with sun/moon icons\n *\n * @example\n * <studio-theme-switch />\n * <studio-theme-switch [showLabel]=\"true\" />\n */\n@Component({\n selector: 'studio-theme-switch',\n standalone: true,\n imports: [SwitchComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"studio-theme-switch\">\n @if (iconOnly()) {\n <button\n type=\"button\"\n class=\"studio-theme-switch__button studio-theme-switch__button--{{ size() }}\"\n [attr.aria-label]=\"isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleTheme()\">\n @if (isDark()) {\n <studio-icon name=\"moon\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"sun\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n </button>\n } @else {\n <studio-switch\n [checked]=\"isDark()\"\n (checkedChange)=\"toggleTheme()\"\n [size]=\"size()\"\n [label]=\"showLabel() ? (isDark() ? 'Dark' : 'Light') : undefined\"\n labelPosition=\"left\">\n </studio-switch>\n }\n </div>\n `,\n styles: [`\n .studio-theme-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .studio-theme-switch__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: var(--studio-text-secondary);\n cursor: pointer;\n border-radius: var(--studio-radius-md);\n transition: background-color var(--studio-transition-fast),\n color var(--studio-transition-fast);\n padding: var(--studio-spacing-xs);\n }\n\n .studio-theme-switch__button:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n .studio-theme-switch__button:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n .studio-theme-switch__button--sm {\n width: 2rem;\n height: 2rem;\n }\n\n .studio-theme-switch__button--md {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n .studio-theme-switch__button--lg {\n width: 3rem;\n height: 3rem;\n }\n `]\n})\nexport class ThemeSwitchComponent {\n private readonly configService = inject(StudioConfigService);\n\n size = input<'sm' | 'md' | 'lg'>('md');\n showLabel = input<boolean>(false);\n iconOnly = input<boolean>(true);\n\n protected isDark = computed(() => this.configService.themeMode() === 'dark');\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected toggleTheme(): void {\n this.configService.toggleTheme();\n }\n}\n","/**\n * Theme switch component\n */\n\nexport * from './theme-switch.component';\n","/**\n * Composites (Molecules + Organisms)\n * Complex components built from primitives\n */\n\nexport * from './button-toggle-group';\nexport * from './inspector';\nexport * from './theme-switch';\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\nexport {};\n","import { MaskConfig, MaskToken, MaskResult } from './mask.types';\n\nexport class MaskEngine {\n private readonly tokens: MaskToken[];\n private readonly patterns = {\n '9': /\\d/,\n 'A': /[a-zA-Zа-яА-Я]/,\n '*': /[a-zA-Z0-9]/,\n '#': /./,\n 'X': /[a-zA-Z0-9а-яА-Я]/,\n } as const;\n\n constructor(private readonly config: MaskConfig) {\n this.tokens = this.parsePattern(config.pattern);\n }\n\n process(value: string, cursorPos?: number): MaskResult {\n if (!value) {\n return {\n value: '',\n raw: '',\n cursor: 0,\n isComplete: false\n };\n }\n\n const cleaned = this.extractRaw(value);\n const formatted = this.applyMask(cleaned);\n const newCursor = cursorPos !== undefined\n ? this.calculateCursor(cursorPos, value, formatted)\n : formatted.length;\n\n const displayValue = this.config.guide && this.config.showOnFocus\n ? this.applyGuide(formatted)\n : formatted;\n\n return {\n value: displayValue,\n raw: cleaned,\n cursor: newCursor,\n isComplete: this.checkComplete(cleaned)\n };\n }\n\n getPlaceholder(): string {\n if (!this.tokens || this.tokens.length === 0) return '';\n\n return this.tokens\n .map(token => {\n if (token.type === 'static' && token.char) return token.char;\n return this.config.placeholder || '_';\n })\n .join('');\n }\n\n private parsePattern(pattern: string): MaskToken[] {\n const tokens: MaskToken[] = [];\n let i = 0;\n\n while (i < pattern.length) {\n const char = pattern[i];\n\n if (char === '\\\\' && i + 1 < pattern.length) {\n tokens.push({\n type: 'static',\n char: pattern[i + 1]\n });\n i += 2;\n continue;\n }\n\n if (char === '?' && tokens.length > 0) {\n tokens[tokens.length - 1].optional = true;\n i++;\n continue;\n }\n\n if (char in this.patterns) {\n tokens.push({\n type: this.getTokenType(char),\n pattern: this.patterns[char as keyof typeof this.patterns]\n });\n i++;\n } else {\n tokens.push({\n type: 'static',\n char\n });\n i++;\n }\n }\n\n return tokens;\n }\n\n private getTokenType(char: string): MaskToken['type'] {\n const typeMap: Record<string, MaskToken['type']> = {\n '9': 'digit',\n 'A': 'letter',\n '*': 'alphanumeric',\n '#': 'any',\n 'X': 'mixed'\n };\n return typeMap[char] || 'any';\n }\n\n private applyMask(raw: string): string {\n if (!raw || !this.tokens) return '';\n\n let result = '';\n let rawIndex = 0;\n\n for (const token of this.tokens) {\n if (rawIndex >= raw.length) {\n break;\n }\n\n if (token.type === 'static' && token.char) {\n result += token.char;\n if (raw[rawIndex] === token.char) {\n rawIndex++;\n }\n } else {\n const char = raw[rawIndex];\n if (token.pattern?.test(char)) {\n result += char;\n rawIndex++;\n } else if (!token.optional) {\n break;\n }\n }\n }\n\n return result;\n }\n\n private extractRaw(value: string): string {\n if (!value || !this.tokens) return '';\n\n const staticChars = this.tokens\n .filter(t => t.type === 'static' && t.char)\n .map(t => t.char!)\n .filter(Boolean);\n\n return value\n .split('')\n .filter(char => !staticChars.includes(char))\n .join('');\n }\n\n private applyGuide(value: string): string {\n if (!this.tokens || this.tokens.length === 0) return value;\n\n const placeholder = this.config.placeholder || '_';\n let result = value;\n const currentLength = value.replace(/[^a-zA-Z0-9а-яА-Я]/g, '').length;\n\n let addedCount = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const token = this.tokens[i];\n\n if (addedCount >= currentLength) {\n if (token.type === 'static' && token.char) {\n result += token.char;\n } else {\n result += placeholder;\n addedCount++;\n }\n }\n }\n\n return result;\n }\n\n private calculateCursor(\n oldCursor: number,\n oldValue: string,\n newValue: string\n ): number {\n const diff = newValue.length - oldValue.length;\n let newCursor = oldCursor + diff;\n\n while (newCursor < newValue.length) {\n const charAtCursor = newValue[newCursor];\n const isStatic = this.tokens.some(\n (t, i) => t.type === 'static' && t.char === charAtCursor && i === newCursor\n );\n\n if (!isStatic) break;\n newCursor++;\n }\n\n return Math.max(0, Math.min(newValue.length, newCursor));\n }\n\n private checkComplete(raw: string): boolean {\n const requiredTokens = this.tokens.filter(\n t => t.type !== 'static' && !t.optional\n );\n return raw.length >= requiredTokens.length;\n }\n}\n","import { MaskConfig, MaskPreset } from './mask.types';\n\nexport const MASK_PRESETS: Record<MaskPreset, MaskConfig> = {\n 'phone': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-ru': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-kz': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'date': {\n pattern: '99.99.9999',\n placeholder: '_',\n guide: true\n },\n 'datetime': {\n pattern: '99.99.9999 99:99',\n placeholder: '_',\n guide: true\n },\n 'time': {\n pattern: '99:99',\n placeholder: '_',\n guide: true\n },\n 'card': {\n pattern: '9999 9999 9999 9999',\n placeholder: 'X',\n guide: true\n },\n 'inn': {\n pattern: '999999999999',\n placeholder: '_',\n guide: false\n },\n 'snils': {\n pattern: '999-999-999 99',\n placeholder: '_',\n guide: true\n },\n 'passport-ru': {\n pattern: '99 99 999999',\n placeholder: '_',\n guide: true\n }\n};\n","import {\n Directive,\n input,\n effect,\n inject,\n DestroyRef,\n ElementRef,\n Renderer2,\n HostListener,\n forwardRef,\n computed,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MaskEngine } from './mask-engine';\nimport { MaskConfig, MaskPreset } from './mask.types';\nimport { MASK_PRESETS } from './mask-presets';\n\n@Directive({\n selector: 'input[studioMask]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n }\n ],\n host: {\n '[attr.data-mask-complete]': 'isComplete()',\n '[attr.data-mask-active]': 'isActive()'\n }\n})\nexport class MaskDirective implements Validator {\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly mask = input<string | MaskPreset, string>('', {\n alias: 'studioMask',\n transform: (value: string | MaskPreset) => {\n if (!value) return '';\n if (value in MASK_PRESETS) {\n return MASK_PRESETS[value as MaskPreset].pattern;\n }\n return value;\n }\n });\n\n readonly maskPlaceholder = input<string>('_');\n readonly maskGuide = input<boolean>(true);\n readonly maskShowOnHover = input<boolean>(false);\n readonly maskShowOnFocus = input<boolean>(true);\n readonly maskClearIncomplete = input<boolean>(false);\n readonly maskAutoUnmask = input<boolean>(false);\n\n private readonly config = computed<MaskConfig>(() => ({\n pattern: this.mask(),\n placeholder: this.maskPlaceholder(),\n guide: this.maskGuide(),\n showOnHover: this.maskShowOnHover(),\n showOnFocus: this.maskShowOnFocus(),\n clearIncomplete: this.maskClearIncomplete(),\n autoUnmask: this.maskAutoUnmask()\n }));\n\n private readonly engine = signal<MaskEngine | null>(null);\n\n readonly isComplete = signal(false);\n readonly isActive = signal(false);\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const maskPattern = this.mask();\n if (!maskPattern) return;\n\n const cfg = this.config();\n const newEngine = new MaskEngine(cfg);\n this.engine.set(newEngine);\n this.updatePlaceholder();\n });\n }\n\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const result = eng.process(element.value, cursorPos);\n\n if (element.value !== result.value) {\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n }\n\n this.isComplete.set(result.isComplete);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isActive.set(true);\n\n if (this.maskShowOnFocus() && this.maskGuide()) {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n if (!element.value) {\n const result = eng.process('', 0);\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(0, 0);\n }\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isActive.set(false);\n this.onTouched();\n\n if (this.maskClearIncomplete() && !this.isComplete()) {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.onChange('');\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const eng = this.engine();\n if (!eng) return;\n\n const pastedText = event.clipboardData?.getData('text') || '';\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const currentValue = element.value;\n const before = currentValue.slice(0, cursorPos);\n const after = currentValue.slice(element.selectionEnd ?? cursorPos);\n const newValue = before + pastedText + after;\n\n const result = eng.process(newValue, cursorPos + pastedText.length);\n\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n writeValue(value: string): void {\n const eng = this.engine();\n if (!eng) return;\n\n if (value) {\n const result = eng.process(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', result.value);\n this.isComplete.set(result.isComplete);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.isComplete.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const complete = this.isComplete();\n return complete ? null : { maskIncomplete: { value: control.value } };\n }\n\n private updatePlaceholder(): void {\n if (!this.maskShowOnFocus()) return;\n\n const eng = this.engine();\n if (!eng) return;\n\n try {\n const placeholderText = eng.getPlaceholder();\n if (placeholderText) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'placeholder',\n placeholderText\n );\n }\n } catch (e) {\n console.warn('Failed to update placeholder:', e);\n }\n }\n}\n","/**\n * Public API Surface of @eduboxpro/studio\n */\n\n/* ========================================\n * Configuration\n * ======================================== */\nexport * from './lib/config';\n\n/* ========================================\n * Components\n * ======================================== */\nexport * from './lib/primitives';\nexport * from './lib/composites';\nexport * from './lib/education';\n\n/* ========================================\n * Directives\n * ======================================== */\nexport * from './lib/directives';\n\n/* ========================================\n * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","DOCUMENT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eduboxpro-studio.mjs","sources":["../../../projects/studio/src/lib/config/studio.config.ts","../../../projects/studio/src/lib/utils/font-loader.ts","../../../projects/studio/src/lib/config/studio.service.ts","../../../projects/studio/src/lib/config/provide-studio.ts","../../../projects/studio/src/lib/config/index.ts","../../../projects/studio/src/lib/primitives/icon/icon.component.ts","../../../projects/studio/src/lib/primitives/icon/icon.provider.ts","../../../projects/studio/src/lib/utils/url-validator.ts","../../../projects/studio/src/lib/utils/class-names.ts","../../../projects/studio/src/lib/utils/config-helpers.ts","../../../projects/studio/src/lib/utils/index.ts","../../../projects/studio/src/lib/primitives/badge/badge.component.ts","../../../projects/studio/src/lib/primitives/badge/badge.types.ts","../../../projects/studio/src/lib/primitives/badge/index.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.html","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/button-group/button-group.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.html","../../../projects/studio/src/lib/utils/color-converter.ts","../../../projects/studio/src/lib/primitives/color-picker/default-presets.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.html","../../../projects/studio/src/lib/primitives/popover/popover.component.ts","../../../projects/studio/src/lib/primitives/popover/popover.component.html","../../../projects/studio/src/lib/primitives/color-picker-compact/color-picker-compact.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.service.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.html","../../../projects/studio/src/lib/primitives/dropdown/dropdown.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.html","../../../projects/studio/src/lib/primitives/menu/menu.component.ts","../../../projects/studio/src/lib/primitives/menu/menu.component.html","../../../projects/studio/src/lib/primitives/modal/modal.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.html","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.ts","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.html","../../../projects/studio/src/lib/primitives/select/select.component.ts","../../../projects/studio/src/lib/primitives/select/select.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.ts","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.types.ts","../../../projects/studio/src/lib/primitives/sidebar/index.ts","../../../projects/studio/src/lib/primitives/switch/switch.component.ts","../../../projects/studio/src/lib/primitives/switch/index.ts","../../../projects/studio/src/lib/primitives/tabs/tabs.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.html","../../../projects/studio/src/lib/primitives/tooltip/tooltip.component.ts","../../../projects/studio/src/lib/primitives/index.ts","../../../projects/studio/src/lib/composites/button-toggle-group/button-toggle-group.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.html","../../../projects/studio/src/lib/composites/theme-switch/theme-switch.component.ts","../../../projects/studio/src/lib/composites/theme-switch/index.ts","../../../projects/studio/src/lib/composites/index.ts","../../../projects/studio/src/lib/education/index.ts","../../../projects/studio/src/lib/directives/mask/mask-engine.ts","../../../projects/studio/src/lib/directives/mask/mask-presets.ts","../../../projects/studio/src/lib/directives/mask/mask.directive.ts","../../../projects/studio/src/public-api.ts","../../../projects/studio/src/eduboxpro-studio.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Theme mode: light or dark\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Color configuration with hover and active states\n */\nexport interface ColorConfig {\n base?: string;\n hover?: string;\n active?: string;\n bg?: string;\n}\n\n/**\n * Theme configuration interface\n */\nexport interface StudioThemeConfig {\n /**\n * Theme mode (default: 'light')\n */\n mode?: ThemeMode;\n\n /**\n * Color tokens override with hover/active states\n */\n colors?: {\n primary?: ColorConfig | string;\n secondary?: ColorConfig | string;\n success?: ColorConfig | string;\n error?: ColorConfig | string;\n warning?: ColorConfig | string;\n info?: ColorConfig | string;\n bg?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n };\n text?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n inverse?: string;\n };\n border?: {\n primary?: string;\n secondary?: string;\n };\n };\n\n /**\n * Typography tokens override\n */\n typography?: {\n fontFamily?: string;\n fontMono?: string;\n /**\n * Google Fonts configuration\n * Automatically loads fonts from Google Fonts\n */\n googleFonts?: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n }>;\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n };\n };\n\n /**\n * Spacing tokens override\n */\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n\n /**\n * Border radius tokens override\n */\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n full?: string;\n };\n\n /**\n * Shadow tokens override\n */\n shadows?: {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n\n /**\n * Transition tokens override\n */\n transitions?: {\n fast?: string;\n base?: string;\n slow?: string;\n };\n\n /**\n * Z-index tokens override\n */\n zIndex?: {\n dropdown?: number;\n sticky?: number;\n fixed?: number;\n modalBackdrop?: number;\n modal?: number;\n popover?: number;\n tooltip?: number;\n };\n}\n\n/**\n * Button component defaults configuration\n */\nexport interface ButtonDefaultsConfig {\n variant?: 'solid' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n compact?: boolean;\n}\n\n/**\n * Badge component defaults configuration\n */\nexport interface BadgeDefaultsConfig {\n variant?: 'solid' | 'outline' | 'soft' | 'dot';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\n radius?: 'sm' | 'md' | 'lg' | 'full';\n}\n\n/**\n * Switch component defaults configuration\n */\nexport interface SwitchDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success';\n}\n\n/**\n * Input component defaults configuration\n */\nexport interface InputDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n floatingLabel?: boolean;\n clearable?: boolean;\n}\n\n/**\n * Checkbox component defaults configuration\n */\nexport interface CheckboxDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * RadioButton component defaults configuration\n */\nexport interface RadioButtonDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * Textarea component defaults configuration\n */\nexport interface TextareaDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n rows?: number;\n autoResize?: boolean;\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n showCharCount?: boolean;\n clearable?: boolean;\n}\n\n/**\n * ButtonGroup component defaults configuration\n */\nexport interface ButtonGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * ButtonToggleGroup component defaults configuration\n */\nexport interface ButtonToggleGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Select component defaults configuration\n */\nexport interface SelectDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n searchable?: boolean;\n clearable?: boolean;\n maxHeight?: string;\n position?: 'auto' | 'top' | 'bottom';\n}\n\n/**\n * Drawer component defaults configuration\n */\nexport interface DrawerDefaultsConfig {\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n modal?: boolean;\n closeOnEscape?: boolean;\n closeOnBackdropClick?: boolean;\n showHeader?: boolean;\n showCloseButton?: boolean;\n closeButtonPosition?: 'left' | 'right';\n swipeToClose?: boolean;\n swipeThreshold?: number;\n animationDuration?: number;\n animationEasing?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';\n disableAnimation?: boolean;\n shadow?: boolean;\n shadowSize?: 'sm' | 'md' | 'lg' | 'xl';\n radius?: 'none' | 'sm' | 'md' | 'lg';\n autoFocus?: boolean;\n restoreFocus?: boolean;\n blockScroll?: boolean;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Sidebar component defaults configuration\n */\nexport interface SidebarDefaultsConfig {\n position?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'full';\n variant?: 'default' | 'minimal' | 'compact';\n modal?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n closeOnNavigate?: boolean;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n blockScroll?: boolean;\n swipeToClose?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * ColorPicker component defaults configuration\n */\nexport interface ColorPickerDefaultsConfig {\n variant?: 'inline' | 'popover' | 'input';\n size?: 'sm' | 'md' | 'lg';\n format?: 'hex' | 'rgb' | 'hsl';\n showAlpha?: boolean;\n showPresets?: boolean;\n showFormatToggle?: boolean;\n showCopyButton?: boolean;\n}\n\n/**\n * Popover component defaults configuration\n */\nexport interface PopoverDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';\n trigger?: 'click' | 'hover' | 'focus' | 'manual';\n variant?: 'default' | 'bordered' | 'shadow' | 'minimal';\n size?: 'sm' | 'md' | 'lg';\n animation?: 'fade' | 'scale' | 'slide' | 'none';\n}\n\n/**\n * Tooltip component defaults configuration\n */\nexport interface TooltipDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right';\n trigger?: 'hover' | 'focus' | 'click';\n hoverDelay?: number;\n}\n\n/**\n * Dropdown component defaults configuration\n */\nexport interface DropdownDefaultsConfig {\n trigger?: 'click' | 'hover';\n position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start';\n width?: string;\n minWidth?: string;\n}\n\n/**\n * Tabs component defaults configuration\n */\nexport interface TabsDefaultsConfig {\n variant?: 'line' | 'pills' | 'enclosed';\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Modal component defaults configuration\n */\nexport interface ModalDefaultsConfig {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n variant?: 'default' | 'bordered' | 'minimal';\n animation?: 'fade' | 'scale' | 'slide-down' | 'none';\n position?: 'center' | 'top' | 'bottom';\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * Components defaults configuration\n */\nexport interface ComponentsConfig {\n button?: ButtonDefaultsConfig;\n badge?: BadgeDefaultsConfig;\n switch?: SwitchDefaultsConfig;\n input?: InputDefaultsConfig;\n checkbox?: CheckboxDefaultsConfig;\n radioButton?: RadioButtonDefaultsConfig;\n textarea?: TextareaDefaultsConfig;\n buttonGroup?: ButtonGroupDefaultsConfig;\n buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;\n select?: SelectDefaultsConfig;\n drawer?: DrawerDefaultsConfig;\n sidebar?: SidebarDefaultsConfig;\n colorPicker?: ColorPickerDefaultsConfig;\n popover?: PopoverDefaultsConfig;\n tooltip?: TooltipDefaultsConfig;\n dropdown?: DropdownDefaultsConfig;\n tabs?: TabsDefaultsConfig;\n modal?: ModalDefaultsConfig;\n}\n\n/**\n * Main Studio configuration interface\n */\nexport interface StudioConfig {\n /**\n * Theme configuration\n */\n theme?: StudioThemeConfig;\n\n /**\n * Components default values configuration\n */\n components?: ComponentsConfig;\n}\n\n/**\n * Injection token for Studio configuration\n */\nexport const STUDIO_CONFIG = new InjectionToken<StudioConfig>('STUDIO_CONFIG', {\n providedIn: 'root',\n factory: () => ({})\n});\n","/**\n * Utility for loading Google Fonts dynamically\n */\n\n/**\n * Load a Google Font dynamically\n * @param fontFamily - Font family name (e.g., 'Inter', 'Poppins')\n * @param weights - Array of font weights to load (default: [400, 500, 600, 700])\n * @param display - Font display strategy (default: 'swap')\n *\n * @example\n * loadGoogleFont('Inter', [400, 500, 600, 700]);\n * loadGoogleFont('Poppins', [300, 400, 600]);\n */\nexport function loadGoogleFont(\n fontFamily: string,\n weights: number[] = [400, 500, 600, 700],\n display: 'auto' | 'block' | 'swap' | 'fallback' | 'optional' = 'swap'\n): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const fontId = `google-font-${fontFamily.toLowerCase().replace(/\\s+/g, '-')}`;\n if (document.getElementById(fontId)) {\n return;\n }\n\n const preconnect1 = document.createElement('link');\n preconnect1.rel = 'preconnect';\n preconnect1.href = 'https://fonts.googleapis.com';\n\n const preconnect2 = document.createElement('link');\n preconnect2.rel = 'preconnect';\n preconnect2.href = 'https://fonts.gstatic.com';\n preconnect2.crossOrigin = 'anonymous';\n\n const fontLink = document.createElement('link');\n fontLink.id = fontId;\n fontLink.rel = 'stylesheet';\n\n const weightsParam = weights.join(';');\n fontLink.href = `https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g, '+')}:wght@${weightsParam}&display=${display}`;\n\n const head = document.head || document.getElementsByTagName('head')[0];\n if (!head.querySelector('link[href*=\"fonts.googleapis.com\"]')) {\n head.appendChild(preconnect1);\n head.appendChild(preconnect2);\n }\n head.appendChild(fontLink);\n}\n\n/**\n * Load multiple Google Fonts at once\n * @param fonts - Array of font configurations\n *\n * @example\n * loadGoogleFonts([\n * { family: 'Inter', weights: [400, 500, 600, 700] },\n * { family: 'Roboto Mono', weights: [400, 500] }\n * ]);\n */\nexport function loadGoogleFonts(fonts: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n}>): void {\n fonts.forEach(font => {\n loadGoogleFont(font.family, font.weights, font.display);\n });\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\nimport { loadGoogleFonts } from '../utils/font-loader';\n\n@Injectable({ providedIn: 'root' })\nexport class StudioConfigService {\n private readonly document = inject(DOCUMENT);\n\n readonly config = signal<StudioConfig>({});\n readonly themeMode = signal<ThemeMode>('light');\n\n constructor() {\n effect(() => {\n this.applyTheme(this.config().theme);\n });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n if (config.theme?.mode) {\n this.setThemeMode(config.theme.mode);\n }\n }\n\n setThemeMode(mode: ThemeMode): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\n }\n\n updateTheme(theme: Partial<StudioThemeConfig>): void {\n this.config.update(cfg => ({\n ...cfg,\n theme: { ...cfg.theme, ...theme }\n }));\n }\n\n reset(): void {\n this.config.set({});\n this.setThemeMode('light');\n }\n\n private applyTheme(theme?: StudioThemeConfig): void {\n if (!theme) return;\n\n const root = this.document.documentElement;\n\n if (theme.colors) {\n this.applyColorTokens(root, theme.colors);\n }\n\n if (theme.typography) {\n // Load Google Fonts if configured\n if (theme.typography.googleFonts) {\n loadGoogleFonts(theme.typography.googleFonts);\n }\n\n if (theme.typography.fontFamily) {\n root.style.setProperty('--studio-font-family', theme.typography.fontFamily);\n }\n if (theme.typography.fontMono) {\n root.style.setProperty('--studio-font-mono', theme.typography.fontMono);\n }\n if (theme.typography.fontSize) {\n this.applyTokens(root, 'studio-font-size', theme.typography.fontSize);\n }\n if (theme.typography.fontWeight) {\n this.applyTokens(root, 'studio-font-weight', theme.typography.fontWeight);\n }\n if (theme.typography.lineHeight) {\n this.applyTokens(root, 'studio-line-height', theme.typography.lineHeight);\n }\n }\n\n if (theme.spacing) {\n this.applyTokens(root, 'studio-spacing', theme.spacing);\n }\n\n if (theme.borderRadius) {\n this.applyTokens(root, 'studio-radius', theme.borderRadius);\n }\n\n if (theme.shadows) {\n this.applyTokens(root, 'studio-shadow', theme.shadows);\n }\n\n if (theme.transitions) {\n this.applyTokens(root, 'studio-transition', theme.transitions);\n }\n\n if (theme.zIndex) {\n this.applyZIndexTokens(root, theme.zIndex);\n }\n }\n\n private applyColorTokens(\n root: HTMLElement,\n colors: NonNullable<StudioThemeConfig['colors']>\n ): void {\n const brandColors = ['primary', 'secondary', 'success', 'error', 'warning', 'info'] as const;\n\n brandColors.forEach(colorName => {\n const colorValue = colors[colorName];\n if (!colorValue) return;\n\n if (typeof colorValue === 'string') {\n root.style.setProperty(`--studio-${colorName}`, colorValue);\n } else {\n const config = colorValue as ColorConfig;\n if (config.base) {\n root.style.setProperty(`--studio-${colorName}`, config.base);\n }\n if (config.hover) {\n root.style.setProperty(`--studio-${colorName}-hover`, config.hover);\n }\n if (config.active) {\n root.style.setProperty(`--studio-${colorName}-active`, config.active);\n }\n if (config.bg) {\n root.style.setProperty(`--studio-${colorName}-bg`, config.bg);\n }\n }\n });\n\n if (colors.bg) {\n this.applyTokens(root, 'studio-bg', colors.bg);\n }\n\n if (colors.text) {\n this.applyTokens(root, 'studio-text', colors.text);\n }\n\n if (colors.border) {\n this.applyTokens(root, 'studio-border', colors.border);\n }\n }\n\n private applyZIndexTokens(\n root: HTMLElement,\n zIndex: NonNullable<StudioThemeConfig['zIndex']>\n ): void {\n const zIndexMap: Record<string, string> = {\n dropdown: 'dropdown',\n sticky: 'sticky',\n fixed: 'fixed',\n modalBackdrop: 'modal-backdrop',\n modal: 'modal',\n popover: 'popover',\n tooltip: 'tooltip'\n };\n\n Object.entries(zIndex).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const cssKey = zIndexMap[key] || key;\n root.style.setProperty(`--studio-z-${cssKey}`, String(value));\n }\n });\n }\n\n private applyTokens(\n root: HTMLElement,\n prefix: string,\n tokens: Record<string, string | number>\n ): void {\n Object.entries(tokens).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n root.style.setProperty(`--${prefix}-${key}`, String(value));\n }\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, inject } from '@angular/core';\nimport { STUDIO_CONFIG, StudioConfig } from './studio.config';\nimport { StudioConfigService } from './studio.service';\n\n/**\n * Provide Studio configuration for the application\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioConfig } from '@eduboxpro/studio/config';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioConfig({\n * theme: {\n * mode: 'light',\n * colors: {\n * primary: '#3b82f6'\n * }\n * }\n * })\n * ]\n * };\n * ```\n */\nexport function provideStudioConfig(config: StudioConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: STUDIO_CONFIG,\n useValue: config\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const studioConfig = inject(StudioConfigService);\n const initialConfig = inject(STUDIO_CONFIG);\n studioConfig.configure(initialConfig);\n }\n }\n ]);\n}\n","/**\n * Configuration module\n * @module config\n */\n\nexport * from './studio.config';\nexport * from './studio.service';\nexport * from './provide-studio';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { LucideAngularModule, icons } from 'lucide-angular';\n\n/**\n * Icon component with Lucide icons support\n *\n * @example\n * <studio-icon name=\"check\" size=\"24\" color=\"primary\" />\n */\n@Component({\n selector: 'studio-icon',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n },\n template: `\n @if (lucideIcon(); as iconName) {\n <lucide-icon\n [name]=\"iconName\"\n [size]=\"size()\"\n [color]=\"computedColor()\"\n [strokeWidth]=\"strokeWidth()\"\n [absoluteStrokeWidth]=\"absoluteStrokeWidth()\"\n />\n }\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n `]\n})\nexport class IconComponent {\n name = input.required<string>();\n size = input<number>(24);\n color = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'inherit' | string>('inherit');\n strokeWidth = input<number>(2);\n absoluteStrokeWidth = input<boolean>(false);\n showFallback = input<boolean>(true);\n fallbackIcon = input<string>('help-circle');\n\n protected readonly icons = icons;\n\n protected lucideIcon = computed(() => {\n const iconName = this.name();\n\n if (iconName && (icons as any)[iconName]) {\n return iconName;\n }\n\n const pascalCaseName = this.kebabToPascalCase(iconName);\n if (pascalCaseName && (icons as any)[pascalCaseName]) {\n return pascalCaseName;\n }\n\n if (this.showFallback()) {\n const fallback = this.fallbackIcon();\n if ((icons as any)[fallback]) {\n return fallback;\n }\n const pascalCaseFallback = this.kebabToPascalCase(fallback);\n if (pascalCaseFallback && (icons as any)[pascalCaseFallback]) {\n return pascalCaseFallback;\n }\n }\n\n return null;\n });\n\n private kebabToPascalCase(str: string): string {\n return str\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n }\n\n protected computedColor = computed(() => {\n const colorValue = this.color();\n\n const colorMap: Record<string, string> = {\n 'primary': 'var(--studio-primary)',\n 'secondary': 'var(--studio-secondary)',\n 'success': 'var(--studio-success)',\n 'error': 'var(--studio-error)',\n 'warning': 'var(--studio-warning)',\n 'inherit': 'currentColor'\n };\n\n return colorMap[colorValue] || colorValue;\n });\n\n protected hostClasses = computed(() => {\n return ['studio-icon'];\n });\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\nimport * as LucideIcons from 'lucide-angular';\n\nexport type IconPreset = 'minimal' | 'common' | 'full';\n\nexport interface StudioIconConfig {\n preset?: IconPreset;\n customIcons?: Record<string, any>;\n}\n\n// Минимальный набор - только для внутренних компонентов библиотеки\nconst MINIMAL_ICONS = {\n X: LucideIcons.X,\n ChevronDown: LucideIcons.ChevronDown,\n ChevronUp: LucideIcons.ChevronUp,\n ChevronLeft: LucideIcons.ChevronLeft,\n ChevronRight: LucideIcons.ChevronRight,\n Check: LucideIcons.Check,\n Loader2: LucideIcons.Loader2,\n Search: LucideIcons.Search,\n};\n\n// Расширенный набор - частоиспользуемые иконки для UI\nconst COMMON_ICONS = {\n ...MINIMAL_ICONS,\n ArrowRight: LucideIcons.ArrowRight,\n ArrowLeft: LucideIcons.ArrowLeft,\n Download: LucideIcons.Download,\n Upload: LucideIcons.Upload,\n Mail: LucideIcons.Mail,\n Phone: LucideIcons.Phone,\n Heart: LucideIcons.Heart,\n Star: LucideIcons.Star,\n Settings: LucideIcons.Settings,\n User: LucideIcons.User,\n Users: LucideIcons.Users,\n Trash2: LucideIcons.Trash2,\n Pen: LucideIcons.Pen,\n Edit2: LucideIcons.Edit2,\n Plus: LucideIcons.Plus,\n Minus: LucideIcons.Minus,\n Filter: LucideIcons.Filter,\n ExternalLink: LucideIcons.ExternalLink,\n Link: LucideIcons.Link,\n Copy: LucideIcons.Copy,\n Share2: LucideIcons.Share2,\n House: LucideIcons.House,\n Menu: LucideIcons.Menu,\n MoreVertical: LucideIcons.MoreVertical,\n MoreHorizontal: LucideIcons.MoreHorizontal,\n Bell: LucideIcons.Bell,\n Calendar: LucideIcons.Calendar,\n Clock: LucideIcons.Clock,\n Eye: LucideIcons.Eye,\n EyeOff: LucideIcons.EyeOff,\n Lock: LucideIcons.Lock,\n LockOpen: LucideIcons.LockOpen,\n LogIn: LucideIcons.LogIn,\n LogOut: LucideIcons.LogOut,\n CircleAlert: LucideIcons.CircleAlert,\n TriangleAlert: LucideIcons.TriangleAlert,\n Info: LucideIcons.Info,\n CircleCheck: LucideIcons.CircleCheck,\n CircleX: LucideIcons.CircleX,\n CircleQuestionMark: LucideIcons.CircleQuestionMark,\n File: LucideIcons.File,\n FileText: LucideIcons.FileText,\n Folder: LucideIcons.Folder,\n FolderOpen: LucideIcons.FolderOpen,\n Image: LucideIcons.Image,\n Save: LucideIcons.Save,\n Printer: LucideIcons.Printer,\n RefreshCw: LucideIcons.RefreshCw,\n RotateCw: LucideIcons.RotateCw,\n Loader: LucideIcons.Loader,\n ShoppingCart: LucideIcons.ShoppingCart,\n Sun: LucideIcons.Sun,\n Moon: LucideIcons.Moon,\n TextAlignStart: LucideIcons.TextAlignStart,\n TextAlignCenter: LucideIcons.TextAlignCenter,\n TextAlignEnd: LucideIcons.TextAlignEnd,\n TextAlignJustify: LucideIcons.TextAlignJustify,\n Bold: LucideIcons.Bold,\n Italic: LucideIcons.Italic,\n Underline: LucideIcons.Underline,\n Strikethrough: LucideIcons.Strikethrough,\n Grid3x3: LucideIcons.Grid3x3,\n List: LucideIcons.List,\n MessageSquare: LucideIcons.MessageSquare,\n Laptop: LucideIcons.Laptop,\n Globe: LucideIcons.Globe,\n Apple: LucideIcons.Apple,\n Circle: LucideIcons.Circle,\n};\n\n/**\n * Studio icon provider с поддержкой preset'ов\n *\n * @example\n * ```typescript\n * // Минимальный набор (только для компонентов библиотеки)\n * provideStudioIcons({ preset: 'minimal' });\n *\n * // Расширенный набор (рекомендуется)\n * provideStudioIcons({ preset: 'common' });\n *\n * // Все иконки Lucide (~1400 штук)\n * provideStudioIcons({ preset: 'full' });\n *\n * // С кастомными иконками\n * import { Zap, Wifi } from 'lucide-angular';\n * provideStudioIcons({\n * preset: 'common',\n * customIcons: { Zap, Wifi }\n * });\n * ```\n */\nexport function provideStudioIcons(config: StudioIconConfig = { preset: 'common' }): EnvironmentProviders {\n let icons: Record<string, any>;\n\n switch (config.preset) {\n case 'minimal':\n icons = MINIMAL_ICONS;\n break;\n case 'full':\n // Все иконки из lucide-angular (кроме служебных)\n icons = Object.keys(LucideIcons)\n .filter(key => !key.startsWith('Lucide') && !key.startsWith('LUCIDE'))\n .reduce((acc, key) => {\n acc[key] = (LucideIcons as any)[key];\n return acc;\n }, {} as Record<string, any>);\n break;\n case 'common':\n default:\n icons = COMMON_ICONS;\n break;\n }\n\n // Добавляем кастомные иконки\n if (config.customIcons) {\n icons = { ...icons, ...config.customIcons };\n }\n\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider(icons)\n }\n ]);\n}\n","/**\n * Checks if URL is safe for navigation\n *\n * @param url - URL to check\n * @returns true if URL is safe (http/https or relative)\n *\n * @example\n * ```typescript\n * isSafeUrl('https://example.com') // true\n * isSafeUrl('javascript:alert(1)') // false\n * isSafeUrl('/relative/path') // true\n * ```\n */\nexport function isSafeUrl(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n try {\n const parsed = new URL(url, window.location.origin);\n return ['http:', 'https:', ''].includes(parsed.protocol);\n } catch {\n return false;\n }\n}\n\n/**\n * Sanitize URL before using in navigation\n *\n * @param url - URL to sanitize\n * @returns Safe URL or '#' if URL is unsafe\n *\n * @example\n * ```typescript\n * sanitizeUrl('https://example.com') // 'https://example.com'\n * sanitizeUrl('javascript:alert(1)') // '#' (with console warning)\n * ```\n */\nexport function sanitizeUrl(url: string): string {\n if (!isSafeUrl(url)) {\n console.warn(`[Studio] Unsafe URL blocked: ${url}`);\n return '#';\n }\n return url;\n}\n","/**\n * Combines CSS classes, ignoring falsy values\n *\n * @param classes - Array of classes (strings, undefined, null, false)\n * @returns String with combined classes\n *\n * @example\n * ```typescript\n * classNames('btn', 'btn-primary') // 'btn btn-primary'\n * classNames('btn', isActive && 'active') // 'btn active' if isActive=true, else 'btn'\n * classNames('btn', undefined, null, false, 'large') // 'btn large'\n * ```\n */\nexport function classNames(...classes: (string | false | undefined | null)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n","import { computed, Signal } from '@angular/core';\n\n/**\n * Creates computed signal with fallback chain: input → config → default\n *\n * @param inputSignal - User input signal\n * @param configSignal - Config value (can be undefined)\n * @param defaultValue - Fallback value\n * @returns Computed signal with resolved value\n *\n * @example\n * ```typescript\n * export class ButtonComponent {\n * private defaults = computed(() => this.configService.config().components?.button);\n *\n * variantInput = input<Variant | undefined>(undefined, { alias: 'variant' });\n *\n * variant = withConfigDefault(\n * this.variantInput,\n * computed(() => this.defaults()?.variant),\n * 'solid'\n * );\n * }\n * ```\n */\nexport function withConfigDefault<T>(\n inputSignal: Signal<T | undefined>,\n configSignal: Signal<T | undefined>,\n defaultValue: T\n): Signal<T> {\n return computed(() => {\n const inputValue = inputSignal();\n if (inputValue !== undefined) return inputValue;\n\n const configValue = configSignal();\n if (configValue !== undefined) return configValue;\n\n return defaultValue;\n });\n}\n","/**\n * @eduboxpro/studio - Utilities\n *\n * Helper functions and utilities for the Studio library\n */\n\nexport * from './url-validator';\nexport * from './class-names';\nexport * from './config-helpers';\nexport * from './font-loader';\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport { BadgeVariant, BadgeSize, BadgeColor, BadgeRadius, BadgeIconPosition } from './badge.types';\n\n@Component({\n selector: 'studio-badge',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[style.display]': 'isVisible() ? null : \"none\"',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-badge__content\">\n @if (dot()) {\n <span\n class=\"studio-badge__dot\"\n [class]=\"'studio-badge__dot--' + (dotColor() || color())\"\n ></span>\n }\n @if (icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"studio-badge__text\">\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (removable()) {\n <button\n type=\"button\"\n class=\"studio-badge__remove\"\n (click)=\"handleRemove($event)\"\n aria-label=\"Remove\"\n >\n <studio-icon name=\"x\" [size]=\"iconSize()\" />\n </button>\n }\n </span>\n `,\n styleUrl: './badge.component.scss'\n})\nexport class BadgeComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly badgeDefaults = computed(() => this.configService.config().components?.badge);\n\n variantInput = input<BadgeVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<BadgeSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<BadgeColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<BadgeRadius | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.badgeDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.badgeDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.badgeDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.badgeDefaults()?.radius), 'full');\n\n icon = input<string>();\n iconPosition = input<BadgeIconPosition>('left');\n\n dot = input<boolean>(false);\n dotColor = input<BadgeColor>();\n\n removable = input<boolean>(false);\n removed = output<void>();\n\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n disabled = input<boolean>(false);\n clicked = output<MouseEvent>();\n\n value = input<string | number>();\n max = input<number>();\n showZero = input<boolean>(true);\n\n uppercase = input<boolean>(false);\n bold = input<boolean>(false);\n\n pulse = input<boolean>(false);\n autoColor = input<boolean>(false);\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 12, md: 14, lg: 16 };\n return sizeMap[this.size()];\n });\n\n protected displayValue = computed(() => {\n const val = this.value();\n if (val === undefined || val === null) return '';\n\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n\n if (!isNaN(numVal)) {\n if (numVal === 0 && !this.showZero()) return '';\n\n const maxVal = this.max();\n if (maxVal !== undefined && numVal > maxVal) {\n return `${maxVal}+`;\n }\n\n return numVal.toString();\n }\n\n return val.toString();\n });\n\n protected isVisible = computed(() => {\n const val = this.value();\n if (val !== undefined && val !== null) {\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n if (!isNaN(numVal) && numVal === 0 && !this.showZero()) {\n return false;\n }\n }\n return true;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-badge',\n `studio-badge--${this.variant()}`,\n `studio-badge--${this.size()}`,\n `studio-badge--${this.color()}`,\n `studio-badge--radius-${this.radius()}`,\n this.disabled() && 'studio-badge--disabled',\n this.uppercase() && 'studio-badge--uppercase',\n this.bold() && 'studio-badge--bold',\n this.pulse() && 'studio-badge--pulse',\n this.href() && 'studio-badge--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n\n protected handleRemove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled()) return;\n\n this.removed.emit();\n }\n}\n","/**\n * Badge component types\n */\n\nexport type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\nexport type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';\nexport type BadgeIconPosition = 'left' | 'right';\n","/**\n * Badge component\n */\n\nexport * from './badge.component';\nexport * from './badge.types';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeComponent, BadgeColor, BadgeVariant } from '../badge';\nimport { BadgeWrapperPosition, BadgeWrapperSize } from './badge-wrapper.types';\n\n/**\n * BadgeWrapper component - Wraps content with a positioned badge\n *\n * @example\n * <studio-badge-wrapper [count]=\"5\" color=\"error\">\n * <studio-button variant=\"ghost\">\n * <studio-icon name=\"bell\" />\n * </studio-button>\n * </studio-badge-wrapper>\n */\n@Component({\n selector: 'studio-badge-wrapper',\n standalone: true,\n imports: [CommonModule, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './badge-wrapper.component.html',\n styleUrl: './badge-wrapper.component.scss'\n})\nexport class BadgeWrapperComponent {\n // ========== Content ==========\n count = input<number | string>();\n content = input<string>();\n\n // ========== Badge style ==========\n variant = input<BadgeVariant>('solid');\n color = input<BadgeColor>('error');\n size = input<BadgeWrapperSize>('sm');\n\n // ========== Position ==========\n position = input<BadgeWrapperPosition>('top-right');\n\n // ========== Behavior ==========\n showZero = input<boolean>(false);\n max = input<number>(99);\n dot = input<boolean>(false);\n overlap = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-badge-wrapper'];\n\n classes.push(`studio-badge-wrapper--${this.position()}`);\n classes.push(`studio-badge-wrapper--${this.size()}`);\n\n if (this.overlap()) classes.push('studio-badge-wrapper--overlap');\n if (this.dot()) classes.push('studio-badge-wrapper--dot');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected badgeContent = computed(() => {\n if (this.content()) return this.content();\n\n const count = this.count();\n if (count === undefined || count === null) return undefined;\n\n const numCount = typeof count === 'number' ? count : parseInt(count, 10);\n\n if (numCount === 0 && !this.showZero()) return undefined;\n\n const max = this.max();\n if (numCount > max) return `${max}+`;\n\n return count.toString();\n });\n\n protected shouldShowBadge = computed(() => {\n if (this.dot()) return true;\n return this.badgeContent() !== undefined;\n });\n}\n","<div class=\"studio-badge-wrapper__content\">\n <ng-content />\n</div>\n\n@if (shouldShowBadge()) {\n <studio-badge\n class=\"studio-badge-wrapper__badge\"\n [variant]=\"dot() ? 'dot' : variant()\"\n [color]=\"color()\"\n [size]=\"size()\"\n >\n {{ badgeContent() }}\n </studio-badge>\n}\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\n\n/**\n * Button component with multiple variants, sizes, colors and states\n *\n * @example\n * <studio-button variant=\"solid\" color=\"primary\" (clicked)=\"onClick()\">\n * Click me\n * </studio-button>\n */\n@Component({\n selector: 'studio-button',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() || loading() ? \"\" : null',\n '[attr.type]': 'href() ? null : type()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-button__content\">\n @if (loading()) {\n <studio-icon\n name=\"loader-2\"\n [size]=\"iconSize()\"\n class=\"studio-button__spinner\"\n />\n }\n @if (!loading() && icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (iconPosition() !== 'only' && !loading()) {\n <ng-content />\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (!loading() && icon() && iconPosition() === 'only') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (loading() && iconPosition() === 'only') {\n } @else if (loading()) {\n <span>{{ loadingText() }}</span>\n }\n @if (badge() !== undefined && badge() !== null && badge() !== '') {\n <span class=\"studio-button__badge studio-button__badge--{{ badgeColor() }}\">\n {{ badge() }}\n </span>\n }\n </span>\n `,\n styleUrl: './button.component.scss'\n})\nexport class ButtonComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly buttonDefaults = computed(() => this.configService.config().components?.button);\n\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n compactInput = input<boolean | undefined>(undefined, { alias: 'compact' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.buttonDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.buttonDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.buttonDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.buttonDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.buttonDefaults()?.shadow), 'none');\n compact = withConfigDefault(this.compactInput, computed(() => this.buttonDefaults()?.compact), false);\n\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n loadingText = input<string>('Loading...');\n fullWidth = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n icon = input<string>();\n iconPosition = input<'left' | 'right' | 'only'>('left');\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n badge = input<string | number>();\n badgeColor = input<'primary' | 'error' | 'warning'>('error');\n ariaLabel = input<string>();\n\n clicked = output<MouseEvent>();\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 18, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-button',\n `studio-button--${this.variant()}`,\n `studio-button--${this.size()}`,\n `studio-button--${this.color()}`,\n `studio-button--radius-${this.radius()}`,\n `studio-button--shadow-${this.shadow()}`,\n this.compact() && 'studio-button--compact',\n this.fullWidth() && 'studio-button--full',\n this.loading() && 'studio-button--loading',\n this.iconPosition() === 'only' && 'studio-button--icon-only'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') return;\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Button component\n */\n\nexport * from './button.component';\n","import { Component, ChangeDetectionStrategy, input, computed, inject, contentChildren, effect, ElementRef } from '@angular/core';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n@Component({\n selector: 'studio-button-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()'\n },\n template: `<ng-content select=\"studio-button\" />`,\n styleUrl: './button-group.component.scss'\n})\nexport class ButtonGroupComponent {\n private readonly elementRef = inject(ElementRef);\n private readonly configService = inject(StudioConfigService);\n private readonly groupDefaults = computed(() => this.configService.config().components?.buttonGroup);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.groupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.groupDefaults()?.size), undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.groupDefaults()?.variant), undefined);\n color = withConfigDefault(this.colorInput, computed(() => this.groupDefaults()?.color), undefined);\n radius = withConfigDefault(this.radiusInput, computed(() => this.groupDefaults()?.radius), undefined);\n\n attached = input<boolean>(false);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n ariaLabel = input<string>();\n role = input<string>('group');\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-group',\n `studio-button-group--${this.orientation()}`,\n `studio-button-group--spacing-${this.spacing()}`,\n `studio-button-group--align-${this.align()}`,\n this.attached() && 'studio-button-group--attached',\n this.fullWidth() && 'studio-button-group--full',\n this.disabled() && 'studio-button-group--disabled'\n ));\n\n constructor() {\n effect(() => {\n const isAttached = this.attached();\n const hostElement = this.elementRef.nativeElement as HTMLElement;\n const buttonElements = hostElement.querySelectorAll('studio-button');\n\n buttonElements.forEach((buttonEl, index) => {\n const isFirst = index === 0;\n const isLast = index === buttonElements.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n if (isAttached) {\n buttonEl.classList.add('studio-button-group__item--attached');\n if (isFirst) buttonEl.classList.add('studio-button-group__item--first');\n if (isLast) buttonEl.classList.add('studio-button-group__item--last');\n if (isMiddle) buttonEl.classList.add('studio-button-group__item--middle');\n } else {\n buttonEl.classList.remove('studio-button-group__item--attached');\n buttonEl.classList.remove('studio-button-group__item--first');\n buttonEl.classList.remove('studio-button-group__item--last');\n buttonEl.classList.remove('studio-button-group__item--middle');\n }\n });\n });\n }\n}\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\n/**\n * Checkbox component for selecting boolean values\n *\n * @example\n * <studio-checkbox\n * [(ngModel)]=\"accepted\"\n * label=\"I accept terms and conditions\"\n * (changed)=\"onAccept($event)\"\n * />\n */\n@Component({\n selector: 'studio-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly checkboxDefaults = computed(() => this.configService.config().components?.checkbox);\n\n // ==========================================\n // INPUTS - Appearance\n // ==========================================\n\n /**\n * Size of the checkbox\n */\n size = input<CheckboxSize>(\n this.checkboxDefaults()?.size ?? 'md'\n );\n\n /**\n * Color scheme\n */\n color = input<CheckboxColor>(\n this.checkboxDefaults()?.color ?? 'primary'\n );\n\n /**\n * Visual variant\n */\n variant = input<CheckboxVariant>(\n this.checkboxDefaults()?.variant ?? 'default'\n );\n\n /**\n * Border radius\n */\n radius = input<CheckboxRadius>(\n this.checkboxDefaults()?.radius ?? 'sm'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Label position relative to checkbox\n */\n labelPosition = input<'left' | 'right'>(\n this.checkboxDefaults()?.labelPosition ?? 'right'\n );\n\n /**\n * Additional description text\n */\n description = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Indeterminate state (for \"select all\" checkboxes)\n */\n indeterminate = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Tab index\n */\n tabIndex = input<number>(0);\n\n /**\n * Value for checkbox groups\n */\n value = input<any>();\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when checkbox state changes\n */\n changed = output<boolean>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal checked state\n */\n protected internalChecked = signal(false);\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected checkboxId = signal(`studio-checkbox-${Math.random().toString(36).substr(2, 9)}`);\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n /**\n * Host CSS classes\n */\n protected hostClasses = computed(() => ({\n 'studio-checkbox-wrapper': true,\n [`studio-checkbox-wrapper--${this.size()}`]: true,\n 'studio-checkbox-wrapper--disabled': this.disabled(),\n 'studio-checkbox-wrapper--error': this.error(),\n 'studio-checkbox-wrapper--focused': this.isFocused(),\n 'studio-checkbox-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n /**\n * Checkbox element CSS classes\n */\n protected checkboxClasses = computed(() => ({\n 'studio-checkbox': true,\n [`studio-checkbox--${this.size()}`]: true,\n [`studio-checkbox--${this.color()}`]: true,\n [`studio-checkbox--${this.variant()}`]: true,\n [`studio-checkbox--radius-${this.radius()}`]: true,\n 'studio-checkbox--checked': this.internalChecked(),\n 'studio-checkbox--indeterminate': this.indeterminate(),\n 'studio-checkbox--disabled': this.disabled(),\n 'studio-checkbox--error': this.error()\n }));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * ARIA checked state\n */\n protected ariaChecked = computed(() => {\n if (this.indeterminate()) return 'mixed';\n return this.internalChecked() ? 'true' : 'false';\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle checkbox toggle\n */\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const newValue = (event.target as HTMLInputElement).checked;\n this.internalChecked.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n /**\n * Handle label click\n */\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\nexport type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type CheckboxVariant = 'default' | 'outlined' | 'filled';\nexport type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<label\n [for]=\"checkboxId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <!-- Checkbox input -->\n <input\n type=\"checkbox\"\n [id]=\"checkboxId()\"\n [name]=\"name()\"\n [checked]=\"internalChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? checkboxId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-checkbox__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Custom checkbox -->\n <span [ngClass]=\"checkboxClasses()\">\n <!-- Checkmark icon -->\n @if (internalChecked() && !indeterminate()) {\n <svg\n class=\"studio-checkbox__icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66666 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Indeterminate icon -->\n @if (indeterminate()) {\n <svg\n class=\"studio-checkbox__icon studio-checkbox__icon--indeterminate\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n }\n </span>\n\n <!-- Label content -->\n @if (label() || description()) {\n <span class=\"studio-checkbox__label-wrapper\">\n @if (label()) {\n <span class=\"studio-checkbox__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-checkbox__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-checkbox__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n<!-- Helper text / Error message -->\n@if (showHint() || showError()) {\n <div\n [id]=\"checkboxId() + '-description'\"\n class=\"studio-checkbox__info\"\n >\n @if (showError()) {\n <span class=\"studio-checkbox__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-checkbox__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import { RGB, HSL, ColorValue, ColorFormat } from '../primitives/color-picker/color-picker.types';\n\nexport class ColorConverter {\n static hexToRgb(hex: string): RGB | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n static rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + [r, g, b]\n .map(x => {\n const hex = Math.round(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\");\n }\n\n static rgbToHsl(r: number, g: number, b: number): HSL {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100)\n };\n }\n\n static hslToRgb(h: number, s: number, l: number): RGB {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n }\n\n static format(color: ColorValue, format: ColorFormat): string {\n switch (format) {\n case 'hex':\n return color.hex;\n case 'rgb':\n if (color.alpha < 1) {\n return `rgba(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b}, ${color.alpha})`;\n }\n return `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})`;\n case 'hsl':\n if (color.alpha < 1) {\n return `hsla(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%, ${color.alpha})`;\n }\n return `hsl(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%)`;\n default:\n return color.hex;\n }\n }\n\n static parse(colorString: string): ColorValue | null {\n const trimmed = colorString.trim();\n\n const hexMatch = /^#?([a-f\\d]{6})$/i.exec(trimmed);\n if (hexMatch) {\n const hex = '#' + hexMatch[1];\n const rgb = this.hexToRgb(hex);\n if (!rgb) return null;\n\n return {\n hex,\n rgb,\n hsl: this.rgbToHsl(rgb.r, rgb.g, rgb.b),\n alpha: 1\n };\n }\n\n const rgbMatch = /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (rgbMatch) {\n const r = parseInt(rgbMatch[1]);\n const g = parseInt(rgbMatch[2]);\n const b = parseInt(rgbMatch[3]);\n const alpha = rgbMatch[4] ? parseFloat(rgbMatch[4]) : 1;\n\n return {\n hex: this.rgbToHex(r, g, b),\n rgb: { r, g, b },\n hsl: this.rgbToHsl(r, g, b),\n alpha\n };\n }\n\n const hslMatch = /^hsla?\\((\\d+),\\s*(\\d+)%?,\\s*(\\d+)%?(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (hslMatch) {\n const h = parseInt(hslMatch[1]);\n const s = parseInt(hslMatch[2]);\n const l = parseInt(hslMatch[3]);\n const alpha = hslMatch[4] ? parseFloat(hslMatch[4]) : 1;\n\n const rgb = this.hslToRgb(h, s, l);\n\n return {\n hex: this.rgbToHex(rgb.r, rgb.g, rgb.b),\n rgb,\n hsl: { h, s, l },\n alpha\n };\n }\n\n return null;\n }\n\n static isValid(colorString: string): boolean {\n return this.parse(colorString) !== null;\n }\n}\n","import { ColorSwatchGroup } from './color-picker.types';\n\nexport const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[] = [\n {\n label: 'Brand Colors',\n colors: [\n { label: 'Primary', value: '#7c3aed' },\n { label: 'Secondary', value: '#6366f1' },\n { label: 'Success', value: '#10b981' },\n { label: 'Error', value: '#ef4444' },\n { label: 'Warning', value: '#f59e0b' },\n { label: 'Info', value: '#3b82f6' }\n ]\n },\n {\n label: 'Grays',\n colors: [\n { value: '#ffffff' },\n { value: '#f3f4f6' },\n { value: '#d1d5db' },\n { value: '#9ca3af' },\n { value: '#6b7280' },\n { value: '#374151' },\n { value: '#1f2937' },\n { value: '#000000' }\n ]\n },\n {\n label: 'Common',\n colors: [\n { value: '#ff0000' },\n { value: '#ff7f00' },\n { value: '#ffff00' },\n { value: '#00ff00' },\n { value: '#0000ff' },\n { value: '#4b0082' },\n { value: '#9400d3' },\n { value: '#ff1493' }\n ]\n }\n];\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ColorConverter } from '../../utils/color-converter';\nimport {\n ColorFormat,\n ColorValue,\n ColorPreset,\n ColorSwatchGroup,\n ColorPickerVariant,\n ColorPickerSize\n} from './color-picker.types';\nimport { DEFAULT_COLOR_PRESETS } from './default-presets';\n\n@Component({\n selector: 'studio-color-picker',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss'\n})\nexport class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {\n private readonly configService = inject(StudioConfigService);\n private readonly pickerDefaults = computed(() => this.configService.config().components?.colorPicker);\n\n protected readonly colorAreaCanvas = viewChild<ElementRef<HTMLCanvasElement>>('colorArea');\n\n variantInput = input<ColorPickerVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<ColorPickerSize | undefined>(undefined, { alias: 'size' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.pickerDefaults()?.variant), 'inline');\n size = withConfigDefault(this.sizeInput, computed(() => this.pickerDefaults()?.size), 'md');\n\n format = input<ColorFormat>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(true);\n showCopyButton = input<boolean>(true);\n\n presets = input<ColorPreset[] | ColorSwatchGroup[]>();\n\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n\n colorChange = output<string>();\n colorValueChange = output<ColorValue>();\n copied = output<string>();\n\n protected currentColor = signal<ColorValue>(this.createColorValue('#000000'));\n protected hue = signal(0);\n protected saturation = signal(100);\n protected lightness = signal(50);\n protected alpha = signal(1);\n protected currentFormat = signal<ColorFormat>('hex');\n\n protected generatedId = `studio-color-picker-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private isDragging = false;\n\n constructor() {\n effect(() => {\n this.currentFormat.set(this.format());\n });\n\n effect(() => {\n this.renderColorArea();\n });\n }\n\n ngAfterViewInit(): void {\n this.renderColorArea();\n }\n\n protected displayColor = computed(() => {\n const color = this.currentColor();\n return ColorConverter.format(color, this.currentFormat());\n });\n\n protected effectivePresets = computed(() => {\n const custom = this.presets();\n return custom && custom.length > 0 ? custom : DEFAULT_COLOR_PRESETS;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-color-picker',\n `studio-color-picker--${this.variant()}`,\n `studio-color-picker--${this.size()}`,\n this.error() && 'studio-color-picker--error',\n this.disabled() && 'studio-color-picker--disabled'\n ));\n\n writeValue(value: string): void {\n if (!value) return;\n\n const colorValue = ColorConverter.parse(value);\n if (colorValue) {\n this.currentColor.set(colorValue);\n this.hue.set(colorValue.hsl.h);\n this.saturation.set(colorValue.hsl.s);\n this.lightness.set(colorValue.hsl.l);\n this.alpha.set(colorValue.alpha);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected onHueChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.hue.set(value);\n this.updateColor();\n }\n\n protected onAlphaChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.alpha.set(value / 100);\n this.updateColor();\n }\n\n protected onColorAreaMouseDown(event: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.isDragging = true;\n this.updateColorArea(event);\n\n const onMouseMove = (e: MouseEvent) => {\n if (this.isDragging) {\n this.updateColorArea(e);\n }\n };\n\n const onMouseUp = () => {\n this.isDragging = false;\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n private updateColorArea(event: MouseEvent): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\n\n this.saturation.set((x / rect.width) * 100);\n this.lightness.set(100 - (y / rect.height) * 100);\n this.updateColor();\n }\n\n private updateColor(): void {\n const h = this.hue();\n const s = this.saturation();\n const l = this.lightness();\n\n const rgb = ColorConverter.hslToRgb(h, s, l);\n const hex = ColorConverter.rgbToHex(rgb.r, rgb.g, rgb.b);\n\n const colorValue: ColorValue = {\n hex,\n rgb,\n hsl: { h, s, l },\n alpha: this.alpha()\n };\n\n this.currentColor.set(colorValue);\n\n const formatted = ColorConverter.format(colorValue, this.currentFormat());\n this.onChange(formatted);\n this.colorChange.emit(formatted);\n this.colorValueChange.emit(colorValue);\n }\n\n private renderColorArea(): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const width = canvas.width;\n const height = canvas.height;\n const hue = this.hue();\n\n const horizGradient = ctx.createLinearGradient(0, 0, width, 0);\n horizGradient.addColorStop(0, 'white');\n horizGradient.addColorStop(1, `hsl(${hue}, 100%, 50%)`);\n ctx.fillStyle = horizGradient;\n ctx.fillRect(0, 0, width, height);\n\n const vertGradient = ctx.createLinearGradient(0, 0, 0, height);\n vertGradient.addColorStop(0, 'transparent');\n vertGradient.addColorStop(1, 'black');\n ctx.fillStyle = vertGradient;\n ctx.fillRect(0, 0, width, height);\n }\n\n protected toggleFormat(): void {\n const formats: ColorFormat[] = ['hex', 'rgb', 'hsl'];\n const current = this.currentFormat();\n const index = formats.indexOf(current);\n const next = formats[(index + 1) % formats.length];\n this.currentFormat.set(next);\n }\n\n protected async copyColor(): Promise<void> {\n const color = this.displayColor();\n\n try {\n await navigator.clipboard.writeText(color);\n this.copied.emit(color);\n } catch (error) {\n console.error('Copy failed:', error);\n }\n }\n\n protected selectPreset(preset: ColorPreset): void {\n this.writeValue(preset.value);\n this.updateColor();\n }\n\n protected isPresetGroup(item: any): item is ColorSwatchGroup {\n return item && 'colors' in item && Array.isArray(item.colors);\n }\n\n private createColorValue(hex: string): ColorValue {\n const rgb = ColorConverter.hexToRgb(hex) || { r: 0, g: 0, b: 0 };\n const hsl = ColorConverter.rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb,\n hsl,\n alpha: 1\n };\n }\n}\n","@if (label()) {\n <label [for]=\"generatedId\" class=\"studio-color-picker__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-color-picker__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-color-picker__picker\">\n <div class=\"studio-color-picker__preview\">\n <div\n class=\"studio-color-picker__preview-color\"\n [style.background-color]=\"displayColor()\"\n ></div>\n <div class=\"studio-color-picker__preview-info\">\n <span class=\"studio-color-picker__preview-value\">{{ displayColor() }}</span>\n @if (showFormatToggle()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__format-btn\"\n (click)=\"toggleFormat()\"\n [disabled]=\"disabled() || readonly()\"\n >\n {{ currentFormat().toUpperCase() }}\n </button>\n }\n </div>\n @if (showCopyButton()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__copy-btn\"\n (click)=\"copyColor()\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Copy color\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>\n </button>\n }\n </div>\n\n <div class=\"studio-color-picker__area\">\n <canvas\n #colorArea\n class=\"studio-color-picker__canvas\"\n width=\"280\"\n height=\"180\"\n (mousedown)=\"onColorAreaMouseDown($event)\"\n ></canvas>\n <div\n class=\"studio-color-picker__cursor\"\n [style.left.%]=\"saturation()\"\n [style.top.%]=\"100 - lightness()\"\n ></div>\n </div>\n\n <div class=\"studio-color-picker__sliders\">\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Hue</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__hue-slider\"\n min=\"0\"\n max=\"360\"\n [value]=\"hue()\"\n (input)=\"onHueChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Hue\"\n />\n </div>\n\n @if (showAlpha()) {\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Opacity</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__alpha-slider\"\n min=\"0\"\n max=\"100\"\n [value]=\"alpha() * 100\"\n (input)=\"onAlphaChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Opacity\"\n />\n <span class=\"studio-color-picker__alpha-value\">{{ (alpha() * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n\n @if (showPresets() && effectivePresets().length > 0) {\n <div class=\"studio-color-picker__presets\">\n @for (preset of effectivePresets(); track $index) {\n @if (isPresetGroup(preset)) {\n <div class=\"studio-color-picker__preset-group\">\n <div class=\"studio-color-picker__preset-group-label\">{{ preset.label }}</div>\n <div class=\"studio-color-picker__preset-swatches\">\n @for (color of preset.colors; track color.value) {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"color.value\"\n [title]=\"color.label || color.value\"\n (click)=\"selectPreset(color)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n </div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"preset.value\"\n [title]=\"preset.label || preset.value\"\n (click)=\"selectPreset(preset)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n }\n </div>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-color-picker__hint\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-color-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n afterNextRender,\n Injector\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n computePosition,\n flip,\n shift,\n offset as floatingOffset,\n arrow as floatingArrow,\n autoUpdate,\n Placement\n} from '@floating-ui/dom';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport {\n PopoverPosition,\n PopoverTrigger,\n PopoverVariant,\n PopoverSize,\n PopoverAnimation,\n PopoverWidth\n} from './popover.types';\n\n@Component({\n selector: 'studio-popover',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss'\n})\nexport class PopoverComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly configService = inject(StudioConfigService);\n private readonly popoverDefaults = computed(() => this.configService.config().components?.popover);\n\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('popoverHeader');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('popoverFooter');\n protected readonly contentTemplate = contentChild<TemplateRef<any>>('popoverContent');\n protected readonly triggerEl = viewChild<ElementRef<HTMLElement>>('popoverTrigger');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('popoverPanel');\n protected readonly arrowEl = viewChild<ElementRef<HTMLDivElement>>('popoverArrow');\n\n id = input<string>('studio-popover-' + Math.random().toString(36).substring(2, 11));\n visible = model<boolean>(false);\n disabled = input<boolean>(false);\n\n triggerInput = input<PopoverTrigger | undefined>(undefined, { alias: 'trigger' });\n openDelay = input<number>(0);\n closeDelay = input<number>(200);\n trigger = withConfigDefault(this.triggerInput, computed(() => this.popoverDefaults()?.trigger), 'click');\n\n positionInput = input<PopoverPosition | undefined>(undefined, { alias: 'position' });\n offset = input<number>(8);\n preventOverflow = input<boolean>(true);\n flipValue = input<boolean>(true);\n position = withConfigDefault(this.positionInput, computed(() => this.popoverDefaults()?.position), 'bottom');\n\n variantInput = input<PopoverVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<PopoverSize | undefined>(undefined, { alias: 'size' });\n width = input<PopoverWidth>('auto');\n minWidth = input<string | number | undefined>(undefined);\n maxWidth = input<string | number | undefined>(undefined);\n maxHeight = input<string | number | undefined>(undefined);\n padding = input<string | undefined>(undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.popoverDefaults()?.variant), 'default');\n size = withConfigDefault(this.sizeInput, computed(() => this.popoverDefaults()?.size), 'md');\n\n arrow = input<boolean>(true);\n arrowSize = input<number>(8);\n\n closeOnClickOutside = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n closeOnScroll = input<boolean>(false);\n\n showOverlay = input<boolean>(false);\n overlayOpacity = input<number>(0.5);\n\n animationInput = input<PopoverAnimation | undefined>(undefined, { alias: 'animation' });\n animationDuration = input<number>(200);\n animation = withConfigDefault(this.animationInput, computed(() => this.popoverDefaults()?.animation), 'fade');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(false);\n content = input<string | undefined>(undefined);\n\n zIndex = input<number>(1000);\n\n ariaLabel = input<string | undefined>(undefined);\n role = input<string>('dialog');\n\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n positionChanged = output<Placement>();\n\n private cleanup?: () => void;\n private openTimeout?: number;\n private closeTimeout?: number;\n private isHovered = signal(false);\n private isFocused = signal(false);\n\n protected hostClasses = computed(() => classNames(\n 'studio-popover',\n 'studio-popover--' + this.variant(),\n 'studio-popover--' + this.size(),\n 'studio-popover--' + this.animation(),\n this.visible() && 'studio-popover--visible',\n this.showOverlay() && 'studio-popover--with-overlay'\n ));\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n afterNextRender(() => {\n this.setupPositioning();\n }, { injector: this.injector });\n\n this.destroyRef.onDestroy(() => {\n this.cleanup?.();\n this.clearTimeouts();\n });\n }\n\n private setupPositioning(): void {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n\n if (!triggerElement || !panelElement) return;\n\n this.cleanup?.();\n this.cleanup = autoUpdate(triggerElement, panelElement, () => {\n this.updatePosition();\n });\n }\n\n private async updatePosition(): Promise<void> {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n const arrowElement = this.arrowEl()?.nativeElement;\n\n if (!triggerElement || !panelElement || !this.visible()) return;\n\n const middleware = [\n floatingOffset(this.offset()),\n this.flipValue() && flip(),\n this.preventOverflow() && shift({ padding: 8 }),\n arrowElement && this.arrow() && floatingArrow({ element: arrowElement })\n ].filter(Boolean) as any[];\n\n const { x, y, placement, middlewareData } = await computePosition(\n triggerElement,\n panelElement,\n {\n placement: this.position() as Placement,\n middleware\n }\n );\n\n Object.assign(panelElement.style, {\n left: x + 'px',\n top: y + 'px',\n });\n\n if (arrowElement && middlewareData.arrow && this.arrow()) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]];\n\n Object.assign(arrowElement.style, {\n left: arrowX != null ? arrowX + 'px' : '',\n top: arrowY != null ? arrowY + 'px' : '',\n right: '',\n bottom: '',\n [staticSide as string]: '-' + (this.arrowSize() / 2) + 'px',\n });\n }\n\n this.positionChanged.emit(placement);\n }\n\n protected handleOpen(): void {\n if (this.closeOnScroll()) {\n this.document.addEventListener('scroll', this.handleScrollBind, true);\n }\n this.opened.emit();\n setTimeout(() => this.updatePosition(), 0);\n }\n\n protected handleClose(): void {\n if (this.closeOnScroll()) {\n this.document.removeEventListener('scroll', this.handleScrollBind, true);\n }\n this.closed.emit();\n }\n\n private handleScrollBind = this.handleScroll.bind(this);\n\n private handleScroll(): void {\n if (this.visible()) {\n this.close();\n }\n }\n\n public open(): void {\n if (this.disabled()) return;\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n if (this.visible()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected handleTriggerClick(): void {\n if (this.trigger() === 'click' || this.trigger() === 'manual') {\n this.toggle();\n }\n }\n\n protected handleTriggerMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n this.openTimeout = window.setTimeout(() => {\n this.open();\n }, this.openDelay());\n }\n }\n\n protected handleTriggerMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handlePanelMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n }\n }\n\n protected handlePanelMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handleTriggerFocus(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(true);\n this.open();\n }\n }\n\n protected handleTriggerBlur(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(false);\n setTimeout(() => {\n if (!this.isFocused()) {\n this.close();\n }\n }, 100);\n }\n }\n\n protected handleBackdropClick(): void {\n if (this.closeOnClickOutside()) {\n this.close();\n }\n }\n\n @HostListener('document:click', ['$event'])\n protected handleDocumentClick(event: MouseEvent): void {\n if (!this.visible() || !this.closeOnClickOutside()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n const trigger = this.triggerEl()?.nativeElement;\n\n if (panel && !panel.contains(target) && trigger && !trigger.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n private clearTimeouts(): void {\n if (this.openTimeout) {\n window.clearTimeout(this.openTimeout);\n this.openTimeout = undefined;\n }\n if (this.closeTimeout) {\n window.clearTimeout(this.closeTimeout);\n this.closeTimeout = undefined;\n }\n }\n}\n","@if (showOverlay() && visible()) {\n <div\n class=\"studio-popover__overlay\"\n [style.opacity]=\"overlayOpacity()\"\n [style.z-index]=\"zIndex()\"\n (click)=\"handleBackdropClick()\"\n ></div>\n}\n\n<div\n #popoverTrigger\n class=\"studio-popover__trigger\"\n (click)=\"handleTriggerClick()\"\n (mouseenter)=\"handleTriggerMouseEnter()\"\n (mouseleave)=\"handleTriggerMouseLeave()\"\n (focus)=\"handleTriggerFocus()\"\n (blur)=\"handleTriggerBlur()\"\n>\n <ng-content />\n</div>\n\n@if (visible()) {\n <div\n #popoverPanel\n class=\"studio-popover__panel\"\n [style.z-index]=\"zIndex() + 1\"\n [style.width]=\"width() === 'auto' ? 'auto' : width() === 'trigger' && triggerEl()?.nativeElement ? triggerEl()!.nativeElement.offsetWidth + 'px' : width()\"\n [style.min-width]=\"minWidth() ? (typeof minWidth() === 'number' ? minWidth() + 'px' : minWidth()) : undefined\"\n [style.max-width]=\"maxWidth() ? (typeof maxWidth() === 'number' ? maxWidth() + 'px' : maxWidth()) : undefined\"\n [style.max-height]=\"maxHeight() ? (typeof maxHeight() === 'number' ? maxHeight() + 'px' : maxHeight()) : undefined\"\n [style.padding]=\"padding()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel()\"\n (mouseenter)=\"handlePanelMouseEnter()\"\n (mouseleave)=\"handlePanelMouseLeave()\"\n >\n @if (arrow()) {\n <div #popoverArrow class=\"studio-popover__arrow\" [style.width.px]=\"arrowSize()\" [style.height.px]=\"arrowSize()\"></div>\n }\n\n @if (showHeader() && (headerTemplate() || showCloseButton())) {\n <div class=\"studio-popover__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n }\n \n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-popover__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"18\" />\n </button>\n }\n </div>\n }\n\n <div class=\"studio-popover__content\">\n @if (contentTemplate()) {\n <ng-container *ngTemplateOutlet=\"contentTemplate()!\" />\n } @else if (content()) {\n {{ content() }}\n } @else {\n <ng-content select=\"[popoverContent]\" />\n }\n </div>\n\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-popover__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, inject, forwardRef, effect } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { PopoverComponent } from '../popover';\nimport { ColorPickerComponent } from '../color-picker';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-color-picker-compact',\n standalone: true,\n imports: [FormsModule, PopoverComponent, ColorPickerComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerCompactComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"popoverWidth()\"\n [arrow]=\"showArrow()\"\n [closeOnClickOutside]=\"false\"\n [(visible)]=\"isOpen\"\n [showFooter]=\"showFooter()\"\n >\n <div\n class=\"color-picker-compact__trigger\"\n [class.color-picker-compact__trigger--disabled]=\"disabled()\"\n [style.width]=\"triggerSize()\"\n [style.height]=\"triggerSize()\"\n [style.border-radius]=\"triggerRadius()\"\n [style.background]=\"currentValue()\"\n [attr.aria-label]=\"ariaLabel() || 'Select color'\"\n [attr.role]=\"'button'\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n >\n @if (showCurrentColor()) {\n <span class=\"color-picker-compact__color-text\">{{ currentValue() }}</span>\n }\n </div>\n\n <div popoverContent>\n <studio-color-picker\n [(ngModel)]=\"tempValue\"\n [format]=\"format()\"\n [showAlpha]=\"showAlpha()\"\n [showPresets]=\"showPresets()\"\n [showFormatToggle]=\"showFormatToggle()\"\n [showCopyButton]=\"showCopyButton()\"\n [presets]=\"presets()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n @if (showFooter()) {\n <ng-template #popoverFooter>\n <div class=\"color-picker-compact__footer\">\n <studio-button\n variant=\"outline\"\n size=\"sm\"\n (click)=\"handleCancel()\"\n [fullWidth]=\"true\"\n >\n {{ cancelLabel() }}\n </studio-button>\n <studio-button\n size=\"sm\"\n (click)=\"handleApply()\"\n [fullWidth]=\"true\"\n >\n {{ applyLabel() }}\n </studio-button>\n </div>\n </ng-template>\n }\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .color-picker-compact__trigger {\n position: relative;\n cursor: pointer;\n border: 2px solid var(--studio-border-primary);\n transition: all var(--studio-transition-fast);\n overflow: hidden;\n\n &:hover:not(.color-picker-compact__trigger--disabled) {\n border-color: var(--studio-border-secondary);\n transform: scale(1.05);\n }\n\n &:active:not(.color-picker-compact__trigger--disabled) {\n transform: scale(0.95);\n }\n\n &:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n .color-picker-compact__color-text {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 0.125rem 0.25rem;\n background: rgba(0, 0, 0, 0.6);\n color: white;\n font-size: 0.625rem;\n text-align: center;\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .color-picker-compact__footer {\n display: flex;\n gap: 0.75rem;\n padding: 1rem;\n }\n `\n})\nexport class ColorPickerCompactComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n trigger = input<'click' | 'hover'>('click');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('bottom-start');\n popoverWidth = input<string>('280px');\n showArrow = input<boolean>(false);\n closeOnClickOutside = input<boolean>(true);\n\n triggerSize = input<string>('32px');\n triggerRadius = input<string>('var(--studio-radius-sm)');\n showCurrentColor = input<boolean>(false);\n\n format = input<'hex' | 'rgb' | 'hsl'>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(false);\n showCopyButton = input<boolean>(false);\n presets = input<any[] | undefined>(undefined);\n\n showFooter = input<boolean>(true);\n applyLabel = input<string>('OK');\n cancelLabel = input<string>('Отмена');\n\n disabled = input<boolean>(false);\n ariaLabel = input<string | undefined>(undefined);\n\n colorChange = output<string>();\n\n protected currentValue = signal<string>('#000000');\n protected tempValue = signal<string>('#000000');\n protected isOpen = signal<boolean>(false);\n\n protected hostClasses = computed(() => classNames(\n 'color-picker-compact',\n this.disabled() && 'color-picker-compact--disabled'\n ));\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n // Sync temp value when popover opens\n if (this.isOpen()) {\n this.tempValue.set(this.currentValue());\n }\n });\n }\n\n protected handleApply(): void {\n this.currentValue.set(this.tempValue());\n this.onChange(this.tempValue());\n this.colorChange.emit(this.tempValue());\n this.onTouched();\n this.isOpen.set(false);\n }\n\n protected handleCancel(): void {\n this.tempValue.set(this.currentValue());\n this.isOpen.set(false);\n }\n\n writeValue(value: string): void {\n if (value) {\n this.currentValue.set(value);\n this.tempValue.set(value);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n}\n","import { Injectable, WritableSignal } from '@angular/core';\n\n/**\n * Service for programmatic control of Drawer components\n *\n * @example\n * ```typescript\n * // In component\n * private drawerService = inject(DrawerService);\n *\n * openSettings() {\n * this.drawerService.open('settings-drawer');\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DrawerService {\n private drawers = new Map<string, WritableSignal<boolean>>();\n\n /**\n * Register a drawer with the service\n * Called automatically by DrawerComponent\n */\n register(id: string, signal: WritableSignal<boolean>): void {\n this.drawers.set(id, signal);\n }\n\n /**\n * Unregister a drawer from the service\n * Called automatically on component destroy\n */\n unregister(id: string): void {\n this.drawers.delete(id);\n }\n\n /**\n * Open a drawer by ID\n */\n open(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(true);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close a drawer by ID\n */\n close(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(false);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Toggle a drawer by ID\n */\n toggle(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.update(v => !v);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close all registered drawers\n */\n closeAll(): void {\n this.drawers.forEach(signal => signal.set(false));\n }\n\n /**\n * Check if a drawer is open\n */\n isOpen(id: string): boolean {\n const drawer = this.drawers.get(id);\n return drawer ? drawer() : false;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { DrawerService } from './drawer.service';\nimport {\n DrawerPosition,\n DrawerSize,\n DrawerRadius,\n DrawerShadowSize,\n DrawerRole,\n DrawerAnimationEasing,\n DrawerCloseButtonPosition\n} from './drawer.types';\n\n@Component({\n selector: 'studio-drawer',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss'\n})\nexport class DrawerComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly configService = inject(StudioConfigService);\n private readonly drawerService = inject(DrawerService);\n private readonly drawerDefaults = computed(() => this.configService.config().components?.drawer);\n\n // Template references\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('headerTemplate');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('drawerPanel');\n\n // Core\n id = input<string>(`studio-drawer-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<DrawerPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<DrawerSize | undefined>(undefined, { alias: 'size' });\n customWidth = input<string | undefined>(undefined);\n customHeight = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.drawerDefaults()?.position), 'right');\n size = withConfigDefault(this.sizeInput, computed(() => this.drawerDefaults()?.size), 'md');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.drawerDefaults()?.modal), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.drawerDefaults()?.closeOnEscape), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.drawerDefaults()?.closeOnBackdropClick), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.drawerDefaults()?.blockScroll), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n closeButtonPositionInput = input<DrawerCloseButtonPosition | undefined>(undefined, { alias: 'closeButtonPosition' });\n showFooter = input<boolean>(true);\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.drawerDefaults()?.showHeader ?? true), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.drawerDefaults()?.showCloseButton), true);\n closeButtonPosition = withConfigDefault(this.closeButtonPositionInput, computed(() => this.drawerDefaults()?.closeButtonPosition), 'right');\n\n // Swipe Gestures\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n swipeThresholdInput = input<number | undefined>(undefined, { alias: 'swipeThreshold' });\n\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.drawerDefaults()?.swipeToClose), true);\n swipeThreshold = withConfigDefault(this.swipeThresholdInput, computed(() => this.drawerDefaults()?.swipeThreshold), 50);\n\n // Animation\n animationDurationInput = input<number | undefined>(undefined, { alias: 'animationDuration' });\n animationEasingInput = input<DrawerAnimationEasing | undefined>(undefined, { alias: 'animationEasing' });\n disableAnimationInput = input<boolean | undefined>(undefined, { alias: 'disableAnimation' });\n\n animationDuration = withConfigDefault(this.animationDurationInput, computed(() => this.drawerDefaults()?.animationDuration), 300);\n animationEasing = withConfigDefault(this.animationEasingInput, computed(() => this.drawerDefaults()?.animationEasing), 'ease-out');\n disableAnimation = withConfigDefault(this.disableAnimationInput, computed(() => this.drawerDefaults()?.disableAnimation), false);\n\n // Styling\n radiusInput = input<DrawerRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<boolean | undefined>(undefined, { alias: 'shadow' });\n shadowSizeInput = input<DrawerShadowSize | undefined>(undefined, { alias: 'shadowSize' });\n\n radius = withConfigDefault(this.radiusInput, computed(() => this.drawerDefaults()?.radius), 'none');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.drawerDefaults()?.shadow), true);\n shadowSize = withConfigDefault(this.shadowSizeInput, computed(() => this.drawerDefaults()?.shadowSize), 'lg');\n\n // Accessibility\n ariaLabel = input<string | undefined>(undefined);\n ariaLabelledBy = input<string | undefined>(undefined);\n ariaDescribedBy = input<string | undefined>(undefined);\n autoFocusInput = input<boolean | undefined>(undefined, { alias: 'autoFocus' });\n restoreFocusInput = input<boolean | undefined>(undefined, { alias: 'restoreFocus' });\n roleInput = input<DrawerRole | undefined>(undefined, { alias: 'role' });\n\n autoFocus = withConfigDefault(this.autoFocusInput, computed(() => this.drawerDefaults()?.autoFocus), true);\n restoreFocus = withConfigDefault(this.restoreFocusInput, computed(() => this.drawerDefaults()?.restoreFocus), true);\n role = withConfigDefault(this.roleInput, computed(() => this.drawerDefaults()?.role), 'dialog');\n\n // Outputs\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n backdropClick = output<void>();\n\n // Internal state\n private previousActiveElement?: HTMLElement;\n private touchStartX = 0;\n private touchStartY = 0;\n private isDragging = signal(false);\n private scrollbarWidth = 0;\n\n protected hostClasses = computed(() => classNames(\n 'studio-drawer',\n `studio-drawer--${this.position()}`,\n `studio-drawer--${this.size()}`,\n this.visible() && 'studio-drawer--visible',\n this.modal() && 'studio-drawer--modal',\n this.shadow() && `studio-drawer--shadow-${this.shadowSize()}`,\n this.isDragging() && 'studio-drawer--dragging',\n (this.position() === 'left' || this.position() === 'right') && `studio-drawer--radius-${this.radius()}`\n ));\n\n constructor() {\n // Register with DrawerService\n effect(() => {\n this.drawerService.register(this.id(), this.visible);\n });\n\n // Handle visibility changes\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n // Cleanup on destroy\n this.destroyRef.onDestroy(() => {\n this.drawerService.unregister(this.id());\n this.unlockBodyScroll();\n });\n }\n\n protected handleOpen(): void {\n if (this.blockScroll() && this.modal()) {\n this.lockBodyScroll();\n }\n\n if (this.autoFocus()) {\n this.setupFocusTrap();\n }\n\n this.opened.emit();\n }\n\n protected handleClose(): void {\n if (this.blockScroll() && this.modal()) {\n this.unlockBodyScroll();\n }\n\n if (this.restoreFocus()) {\n this.restorePreviousFocus();\n }\n\n this.closed.emit();\n }\n\n public open(): void {\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n this.visible.update(v => !v);\n this.visibleChange.emit(this.visible());\n }\n\n protected handleBackdropClick(): void {\n this.backdropClick.emit();\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n // Touch gesture handling\n @HostListener('touchstart', ['$event'])\n protected onTouchStart(event: TouchEvent): void {\n if (!this.swipeToClose() || !this.visible()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n\n // Only start drag if touching the panel\n if (!panel?.contains(target)) return;\n\n this.touchStartX = event.touches[0].clientX;\n this.touchStartY = event.touches[0].clientY;\n this.isDragging.set(true);\n }\n\n @HostListener('touchmove', ['$event'])\n protected onTouchMove(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.touches[0].clientX - this.touchStartX;\n const deltaY = event.touches[0].clientY - this.touchStartY;\n const pos = this.position();\n\n // Apply drag transform based on position\n let shouldAllowDrag = false;\n\n if (pos === 'right' && deltaX > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'left' && deltaX < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'bottom' && deltaY > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n } else if (pos === 'top' && deltaY < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n }\n\n // Prevent scroll while dragging\n if (shouldAllowDrag && (Math.abs(deltaX) > 10 || Math.abs(deltaY) > 10)) {\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.changedTouches[0].clientX - this.touchStartX;\n const deltaY = event.changedTouches[0].clientY - this.touchStartY;\n const threshold = this.swipeThreshold();\n const pos = this.position();\n\n let shouldClose = false;\n\n if (pos === 'right' && deltaX > threshold) shouldClose = true;\n if (pos === 'left' && deltaX < -threshold) shouldClose = true;\n if (pos === 'bottom' && deltaY > threshold) shouldClose = true;\n if (pos === 'top' && deltaY < -threshold) shouldClose = true;\n\n if (shouldClose) {\n this.close();\n } else {\n this.resetTransform();\n }\n\n this.isDragging.set(false);\n }\n\n private applyDragTransform(deltaX: number, deltaY: number): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const pos = this.position();\n\n if (pos === 'right') {\n const translateX = Math.max(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'left') {\n const translateX = Math.min(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'bottom') {\n const translateY = Math.max(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'top') {\n const translateY = Math.min(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n }\n }\n\n private resetTransform(): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n panel.style.transition = '';\n panel.style.transform = '';\n }\n\n // Body scroll lock\n private lockBodyScroll(): void {\n this.scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth;\n this.document.body.style.overflow = 'hidden';\n this.document.body.style.paddingRight = `${this.scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n this.document.body.style.overflow = '';\n this.document.body.style.paddingRight = '';\n }\n\n // Focus management\n private setupFocusTrap(): void {\n this.previousActiveElement = this.document.activeElement as HTMLElement;\n\n // Move focus to drawer after render\n setTimeout(() => {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const firstFocusable = this.getFirstFocusableElement(panel);\n if (firstFocusable) {\n firstFocusable.focus();\n } else {\n panel.focus();\n }\n }, 0);\n }\n\n private restorePreviousFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = undefined;\n }\n }\n\n private getFirstFocusableElement(container: HTMLElement): HTMLElement | null {\n const focusableSelectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', ');\n\n return container.querySelector<HTMLElement>(focusableSelectors);\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n if (!this.visible()) return;\n\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>([\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', '));\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (this.document.activeElement === firstElement) {\n event.preventDefault();\n lastElement?.focus();\n }\n } else {\n if (this.document.activeElement === lastElement) {\n event.preventDefault();\n firstElement?.focus();\n }\n }\n }\n}\n","@if (visible()) {\n <!-- Backdrop -->\n @if (modal()) {\n <div\n class=\"studio-drawer__backdrop\"\n (click)=\"handleBackdropClick()\">\n </div>\n }\n\n <!-- Drawer Panel -->\n <div\n #drawerPanel\n class=\"studio-drawer__panel\"\n [attr.role]=\"role()\"\n [attr.aria-modal]=\"modal()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.tabindex]=\"-1\"\n [style.width]=\"customWidth()\"\n [style.height]=\"customHeight()\"\n [style.--drawer-animation-duration]=\"animationDuration() + 'ms'\"\n [style.--drawer-animation-timing]=\"animationEasing()\">\n\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || header() || showCloseButton())) {\n <div class=\"studio-drawer__header\">\n @if (headerTemplate(); as tmpl) {\n <!-- Custom template -->\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (header()) {\n <!-- Simple string header -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <h2 class=\"studio-drawer__title\">{{ header() }}</h2>\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n } @else {\n <!-- Named slot fallback -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <ng-content select=\"[drawerHeader]\" />\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-drawer__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n } @else if (showFooter()) {\n <div class=\"studio-drawer__footer\">\n <ng-content select=\"[drawerFooter]\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { DropdownItem, DropdownPosition } from './dropdown.types';\n\n@Component({\n selector: 'studio-dropdown',\n standalone: true,\n imports: [PopoverComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"width()\"\n [minWidth]=\"minWidth()\"\n [arrow]=\"false\"\n [closeOnClickOutside]=\"true\"\n [(visible)]=\"isOpen\"\n >\n <ng-content />\n \n <div popoverContent style=\"padding: 0.25rem;\">\n @for (item of items(); track item.id) {\n @if (item.divider) {\n <div class=\"dropdown__divider\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"dropdown__item\"\n [class.dropdown__item--disabled]=\"item.disabled\"\n [class.dropdown__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"handleItemClick(item)\"\n >\n @if (item.icon) {\n <studio-icon [name]=\"item.icon\" [size]=\"16\" class=\"dropdown__icon\" />\n }\n <span class=\"dropdown__label\">{{ item.label }}</span>\n @if (item.shortcut) {\n <span class=\"dropdown__shortcut\">{{ item.shortcut }}</span>\n }\n </button>\n }\n }\n </div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .dropdown__item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-primary);\n font-size: 0.875rem;\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n text-align: left;\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n }\n\n &:active:not(:disabled) {\n transform: scale(0.98);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &--danger {\n color: var(--studio-error);\n }\n }\n\n .dropdown__icon {\n flex-shrink: 0;\n color: var(--studio-text-secondary);\n }\n\n .dropdown__label {\n flex: 1;\n }\n\n .dropdown__shortcut {\n font-size: 0.75rem;\n color: var(--studio-text-tertiary);\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .dropdown__divider {\n height: 1px;\n background: var(--studio-border-primary);\n margin: 0.25rem 0;\n }\n `\n})\nexport class DropdownComponent {\n items = input.required<DropdownItem[]>();\n trigger = input<'click' | 'hover'>('click');\n position = input<DropdownPosition>('bottom-start');\n width = input<string>('auto');\n minWidth = input<string>('200px');\n\n itemClick = output<DropdownItem>();\n\n protected isOpen = signal<boolean>(false);\n protected hostClasses = computed(() => classNames('studio-dropdown'));\n\n protected handleItemClick(item: DropdownItem): void {\n if (item.disabled) return;\n \n item.onClick?.();\n this.itemClick.emit(item);\n this.isOpen.set(false);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'number' | 'search' | 'date' | 'time';\nexport type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';\n\n/**\n * Input component with form control support, variants, and accessibility\n *\n * @example\n * <studio-input [(ngModel)]=\"email\" label=\"Email\" type=\"email\" />\n * <studio-input [formControl]=\"passwordControl\" type=\"password\" [showPasswordToggle]=\"true\" />\n */\n@Component({\n selector: 'studio-input',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss'\n})\nexport class InputComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n type = input<InputType>('text');\n inputmode = input<InputMode | undefined>(undefined);\n autocomplete = input<string | undefined>(undefined);\n placeholder = input<string | undefined>(undefined);\n maxLength = input<number | undefined>(undefined);\n minLength = input<number | undefined>(undefined);\n min = input<number | string | undefined>(undefined);\n max = input<number | string | undefined>(undefined);\n step = input<number | undefined>(undefined);\n pattern = input<string | undefined>(undefined);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string | undefined>(undefined);\n clearable = input<boolean>(false);\n showPasswordToggle = input<boolean>(false);\n\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n valueChange = output<string | number>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n cleared = output<void>();\n entered = output<KeyboardEvent>();\n\n protected value = signal<string | number>('');\n protected isPasswordVisible = signal(false);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected generatedId = `studio-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n }\n\n writeValue(value: string | number): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n\n protected computedType = computed(() => {\n if (this.type() === 'password' && this.isPasswordVisible()) {\n return 'text';\n }\n return this.type();\n });\n\n protected computedPlaceholder = computed(() => {\n // Don't show placeholder when using floating label\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-input',\n `studio-input--${this.variant()}`,\n `studio-input--${this.size()}`,\n `studio-input--radius-${this.radius()}`,\n this.error() && 'studio-input--error',\n this.disabled() && 'studio-input--disabled',\n this.readonly() && 'studio-input--readonly',\n this.loading() && 'studio-input--loading',\n this.fullWidth() && 'studio-input--full-width',\n this.isFocused() && 'studio-input--focused',\n this.isTouched() && 'studio-input--touched',\n this.hasValue() && 'studio-input--has-value'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = this.type() === 'number' ? +target.value : target.value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleClear(): void {\n this.value.set('');\n this.onChange('');\n this.valueChange.emit('');\n this.cleared.emit();\n this.inputEl()?.nativeElement.focus();\n }\n\n protected handleEnter(event: Event): void {\n this.entered.emit(event as KeyboardEvent);\n }\n\n protected togglePasswordVisibility(): void {\n this.isPasswordVisible.update(v => !v);\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-input__container\">\n @if (prefixIcon()) {\n <span class=\"studio-input__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label--floating\">\n {{ label() }}\n @if (required()) {\n <span>*</span>\n }\n </label>\n }\n\n <input\n #inputElement\n class=\"studio-input__field\"\n [type]=\"computedType()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"computedPlaceholder()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [pattern]=\"pattern()\"\n [attr.inputmode]=\"inputmode()\"\n [attr.autocomplete]=\"autocomplete()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || (!label() ? placeholder() : null)\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown.enter)=\"handleEnter($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n\n @if (clearable() && value() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__clear\"\n (click)=\"handleClear()\"\n [attr.aria-label]=\"'Clear input'\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__toggle-password\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"isPasswordVisible() ? 'Hide password' : 'Show password'\"\n tabindex=\"-1\"\n >\n <studio-icon [name]=\"isPasswordVisible() ? 'eye-off' : 'eye'\" [size]=\"16\" />\n </button>\n }\n\n @if (suffixIcon() && !loading() && !clearable() && !(type() === 'password' && showPasswordToggle())) {\n <span class=\"studio-input__suffix\">\n <studio-icon [name]=\"suffixIcon()!\" [size]=\"16\" />\n </span>\n }\n </div>\n\n@if (hint() && !error()) {\n <span class=\"studio-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n HostListener,\n inject,\n PLATFORM_ID,\n OnInit\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Router, RouterLink, RouterLinkActive, IsActiveMatchOptions } from '@angular/router';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { IconComponent } from '../icon/icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n MenuItem,\n MenuItemClickEvent,\n MenuItemCommandEvent,\n MenuExpandEvent\n} from './menu.types';\n\nexport type MenuOrientation = 'vertical' | 'horizontal';\nexport type MenuMode = 'static' | 'accordion' | 'overlay';\nexport type MenuSize = 'sm' | 'md' | 'lg';\nexport type MenuVariant = 'default' | 'filled' | 'outlined' | 'ghost';\nexport type MenuColor = 'primary' | 'secondary' | 'inherit';\nexport type MenuRadius = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuSpacing = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuExpandIconPosition = 'left' | 'right';\n\n/**\n * Menu component - Primitive component for navigation menus\n *\n * @example\n * <studio-menu\n * [items]=\"menuItems\"\n * size=\"md\"\n * variant=\"default\"\n * (itemClick)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-menu',\n standalone: true,\n imports: [\n CommonModule,\n RouterLink,\n RouterLinkActive,\n IconComponent,\n BadgeComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': 'orientation()'\n },\n animations: [\n trigger('expandCollapse', [\n state('collapsed', style({\n height: '0',\n opacity: '0',\n overflow: 'hidden'\n })),\n state('expanded', style({\n height: '*',\n opacity: '1',\n overflow: 'visible'\n })),\n transition('collapsed <=> expanded', [\n animate('200ms ease-in-out')\n ])\n ])\n ],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss'\n})\nexport class MenuComponent implements OnInit {\n private router = inject(Router, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n // ========== Основные параметры ==========\n items = input.required<MenuItem[]>();\n orientation = input<MenuOrientation>('vertical');\n\n // ========== Поведение ==========\n mode = input<MenuMode>('static');\n collapsible = input<boolean>(true);\n defaultExpanded = input<string[]>([]);\n expandOnHover = input<boolean>(false);\n\n // ========== Навигация ==========\n activeItem = input<string>();\n routerLinkActive = input<boolean>(true);\n selectOnNavigate = input<boolean>(true);\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Клавиатурная навигация ==========\n keyboardNavigation = input<boolean>(true);\n arrowNavigation = input<boolean>(true);\n homeEndNavigation = input<boolean>(true);\n\n // ========== Анимации ==========\n animated = input<boolean>(true);\n animationDuration = input<number>(200);\n\n // ========== Доступность ==========\n ariaLabel = input<string>();\n role = input<'navigation' | 'menu'>('navigation');\n\n // ========== Стилевые параметры ==========\n size = input<MenuSize>('md');\n compact = input<boolean>(false);\n fullWidth = input<boolean>(false);\n variant = input<MenuVariant>('default');\n color = input<MenuColor>('inherit');\n radius = input<MenuRadius>('md');\n spacing = input<MenuSpacing>('sm');\n showDividers = input<boolean>(false);\n\n // ========== Иконки ==========\n iconSize = input<number>(20);\n iconOnly = input<boolean>(false);\n\n // ========== Подменю ==========\n indentLevel = input<number>(16);\n showExpandIcon = input<boolean>(true);\n expandIconPosition = input<MenuExpandIconPosition>('right');\n expandIcon = input<string>('chevron-down');\n\n // ========== Кастомизация ==========\n class = input<string>('');\n itemClass = input<string>('');\n\n // ========== Internal state (for nested menus) ==========\n level = input<number>(0);\n parentExpanded = input<boolean>(true);\n\n // ========== Outputs ==========\n itemClick = output<MenuItemClickEvent>();\n itemSelect = output<MenuItem>();\n expandChange = output<MenuExpandEvent>();\n activeChange = output<string>();\n\n // ========== Signals for state management ==========\n private expandedItems = signal<Set<string>>(new Set());\n private activeItemId = signal<string | undefined>(undefined);\n private focusedIndex = signal<number>(-1);\n private flattenedItems = computed(() => this.flattenMenuItems(this.items()));\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-menu'];\n\n classes.push(`studio-menu--${this.orientation()}`);\n classes.push(`studio-menu--${this.size()}`);\n classes.push(`studio-menu--${this.variant()}`);\n classes.push(`studio-menu--${this.mode()}`);\n\n if (this.compact()) classes.push('studio-menu--compact');\n if (this.fullWidth()) classes.push('studio-menu--full-width');\n if (this.iconOnly()) classes.push('studio-menu--icon-only');\n if (this.color() !== 'inherit') classes.push(`studio-menu--${this.color()}`);\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n constructor() {\n // Initialize expanded items from defaultExpanded\n effect(() => {\n const defaultExp = this.defaultExpanded();\n if (defaultExp.length > 0) {\n this.expandedItems.set(new Set(defaultExp));\n }\n });\n\n // Track active item\n effect(() => {\n const active = this.activeItem();\n if (active) {\n this.activeItemId.set(active);\n }\n });\n }\n\n ngOnInit() {\n if (this.routerLinkActive() && this.router && isPlatformBrowser(this.platformId)) {\n this.updateActiveFromRouter();\n }\n }\n\n // ========== Item state methods ==========\n\n isExpanded(item: MenuItem): boolean {\n if (!item.id) return false;\n return this.expandedItems().has(item.id);\n }\n\n isActive(item: MenuItem): boolean {\n // Check explicit active item\n if (item.id && item.id === this.activeItemId()) {\n return true;\n }\n\n // Router-based active state is handled by RouterLinkActive directive\n return false;\n }\n\n isDisabled(item: MenuItem): boolean {\n return item.disabled === true;\n }\n\n isVisible(item: MenuItem): boolean {\n return item.visible !== false;\n }\n\n hasChildren(item: MenuItem): boolean {\n return !!(item.items && item.items.length > 0);\n }\n\n getItemId(item: MenuItem, index: number): string {\n return item.id || `menu-item-${this.level()}-${index}`;\n }\n\n // ========== Interaction methods ==========\n\n handleItemClick(event: Event, item: MenuItem) {\n if (this.isDisabled(item) || item.separator) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n // Emit click event\n this.itemClick.emit({ originalEvent: event, item });\n\n // Execute command if provided\n if (item.command) {\n item.command({ originalEvent: event, item });\n }\n\n // Handle expansion for items with children\n if (this.hasChildren(item) && this.collapsible()) {\n event.preventDefault();\n this.toggleExpand(item);\n }\n\n // Handle selection\n if (this.selectOnNavigate() && item.id) {\n this.activeItemId.set(item.id);\n this.itemSelect.emit(item);\n this.activeChange.emit(item.id);\n }\n\n // Navigation is handled by RouterLink directive if routerLink is set\n }\n\n handleItemMouseEnter(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item) && !this.isDisabled(item)) {\n this.expand(item);\n }\n }\n\n handleItemMouseLeave(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item)) {\n this.collapse(item);\n }\n }\n\n toggleExpand(item: MenuItem) {\n if (!item.id) return;\n\n const expanded = this.expandedItems();\n const newExpanded = new Set(expanded);\n\n if (newExpanded.has(item.id)) {\n newExpanded.delete(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n } else {\n // In accordion mode, collapse others at the same level\n if (this.mode() === 'accordion') {\n this.items().forEach(i => {\n if (i.id && i.id !== item.id) {\n newExpanded.delete(i.id);\n }\n });\n }\n newExpanded.add(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n this.expandedItems.set(newExpanded);\n }\n\n expand(item: MenuItem) {\n if (!item.id || this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.add(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n collapse(item: MenuItem) {\n if (!item.id || !this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.delete(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n }\n\n // ========== Keyboard navigation ==========\n\n @HostListener('keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.keyboardNavigation()) return;\n\n const items = this.flattenedItems();\n const currentIndex = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusNextItem(items, currentIndex);\n }\n break;\n\n case 'ArrowUp':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusPreviousItem(items, currentIndex);\n }\n break;\n\n case 'ArrowRight':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusNextItem(items, currentIndex);\n } else {\n this.expandFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'ArrowLeft':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusPreviousItem(items, currentIndex);\n } else {\n this.collapseFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'Home':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(0);\n }\n break;\n\n case 'End':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(items.length - 1);\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.activateFocusedItem(items, currentIndex);\n break;\n\n case 'Escape':\n event.preventDefault();\n this.collapseAll();\n break;\n }\n }\n\n private focusNextItem(items: MenuItem[], currentIndex: number) {\n const nextIndex = (currentIndex + 1) % items.length;\n this.focusedIndex.set(nextIndex);\n }\n\n private focusPreviousItem(items: MenuItem[], currentIndex: number) {\n const prevIndex = currentIndex <= 0 ? items.length - 1 : currentIndex - 1;\n this.focusedIndex.set(prevIndex);\n }\n\n private expandFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item)) {\n this.expand(item);\n }\n }\n }\n\n private collapseFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item) && this.isExpanded(item)) {\n this.collapse(item);\n }\n }\n }\n\n private activateFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n const fakeEvent = new Event('click');\n this.handleItemClick(fakeEvent, item);\n }\n }\n\n private collapseAll() {\n this.expandedItems.set(new Set());\n }\n\n // ========== Helper methods ==========\n\n private flattenMenuItems(items: MenuItem[]): MenuItem[] {\n const result: MenuItem[] = [];\n\n const flatten = (itemList: MenuItem[]) => {\n itemList.forEach(item => {\n if (this.isVisible(item) && !item.separator) {\n result.push(item);\n if (item.items && this.isExpanded(item)) {\n flatten(item.items);\n }\n }\n });\n };\n\n flatten(items);\n return result;\n }\n\n private updateActiveFromRouter() {\n if (!this.router) return;\n\n // This would require checking current route against menu items\n // Implementation depends on routing setup\n // For now, RouterLinkActive directive handles this\n }\n\n getIndentStyle(itemLevel: number = 0): Record<string, string> {\n const indent = this.level() + itemLevel;\n if (indent === 0) return {};\n\n return {\n 'padding-left': `calc(var(--menu-padding) + ${indent * this.indentLevel()}px)`\n };\n }\n}\n","<div class=\"studio-menu__list\">\n @for (item of items(); track getItemId(item, $index)) {\n @if (isVisible(item)) {\n @if (item.separator) {\n <!-- Separator -->\n <div class=\"studio-menu__separator\"></div>\n } @else {\n <!-- Menu Item -->\n <div\n class=\"studio-menu-item\"\n [class.studio-menu-item--disabled]=\"isDisabled(item)\"\n [class.studio-menu-item--active]=\"isActive(item)\"\n [class.studio-menu-item--has-children]=\"hasChildren(item)\"\n [class.studio-menu-item--expanded]=\"isExpanded(item)\"\n [class]=\"itemClass() + ' ' + (item.class || '')\"\n [style]=\"getIndentStyle()\"\n [attr.role]=\"role() === 'menu' ? 'menuitem' : undefined\"\n [attr.aria-disabled]=\"isDisabled(item)\"\n [attr.aria-expanded]=\"hasChildren(item) ? isExpanded(item) : undefined\"\n [attr.title]=\"item.tooltip\"\n (click)=\"handleItemClick($event, item)\"\n (mouseenter)=\"handleItemMouseEnter(item)\"\n (mouseleave)=\"handleItemMouseLeave(item)\"\n >\n <!-- Router Link -->\n @if (item.routerLink && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [target]=\"item.target\"\n routerLinkActive=\"studio-menu-item__link--active\"\n [attr.aria-current]=\"isActive(item) ? 'page' : undefined\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- External Link -->\n @else if (item.href && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- Button (no navigation) -->\n @else {\n <div class=\"studio-menu-item__content\">\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </div>\n }\n </div>\n\n <!-- Submenu (recursive) -->\n @if (hasChildren(item) && isExpanded(item)) {\n <div\n class=\"studio-menu__submenu\"\n [@expandCollapse]=\"animated() ? 'expanded' : undefined\"\n >\n <studio-menu\n [items]=\"item.items!\"\n [orientation]=\"orientation()\"\n [mode]=\"mode()\"\n [collapsible]=\"collapsible()\"\n [expandOnHover]=\"expandOnHover()\"\n [selectOnNavigate]=\"selectOnNavigate()\"\n [keyboardNavigation]=\"keyboardNavigation()\"\n [arrowNavigation]=\"arrowNavigation()\"\n [homeEndNavigation]=\"homeEndNavigation()\"\n [animated]=\"animated()\"\n [animationDuration]=\"animationDuration()\"\n [size]=\"size()\"\n [compact]=\"compact()\"\n [fullWidth]=\"fullWidth()\"\n [variant]=\"variant()\"\n [color]=\"color()\"\n [radius]=\"radius()\"\n [spacing]=\"spacing()\"\n [showDividers]=\"showDividers()\"\n [iconSize]=\"iconSize()\"\n [iconOnly]=\"iconOnly()\"\n [indentLevel]=\"indentLevel()\"\n [showExpandIcon]=\"showExpandIcon()\"\n [expandIconPosition]=\"expandIconPosition()\"\n [expandIcon]=\"expandIcon()\"\n [itemClass]=\"itemClass()\"\n [level]=\"level() + 1\"\n [parentExpanded]=\"isExpanded(item)\"\n (itemClick)=\"itemClick.emit($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n (activeChange)=\"activeChange.emit($event)\"\n />\n </div>\n }\n\n <!-- Divider (if enabled) -->\n @if (showDividers() && $index < items().length - 1) {\n <div class=\"studio-menu__divider\"></div>\n }\n }\n }\n }\n</div>\n\n<!-- Item Content Template -->\n<ng-template #itemContent let-item>\n <div class=\"studio-menu-item__inner\">\n <!-- Left Icon -->\n @if (item.icon && (!item.iconPosition || item.iconPosition === 'left')) {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--left\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Label -->\n @if (!iconOnly()) {\n <span class=\"studio-menu-item__label\">{{ item.label }}</span>\n }\n\n <!-- Badge -->\n @if (item.badge && !iconOnly()) {\n <studio-badge\n class=\"studio-menu-item__badge\"\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n />\n }\n\n <!-- Right Icon -->\n @if (item.icon && item.iconPosition === 'right') {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--right\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Expand Icon -->\n @if (hasChildren(item) && showExpandIcon() && !iconOnly()) {\n <studio-icon\n class=\"studio-menu-item__expand-icon\"\n [class.studio-menu-item__expand-icon--expanded]=\"isExpanded(item)\"\n [name]=\"expandIcon()\"\n [size]=\"16\"\n />\n }\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n model,\n contentChild,\n TemplateRef,\n HostListener,\n afterNextRender,\n viewChild,\n ElementRef,\n DestroyRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { ModalSize, ModalVariant, ModalAnimation, ModalPosition } from './modal.types';\n\n@Component({\n selector: 'studio-modal',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (visible()) {\n <!-- Overlay -->\n <div\n class=\"studio-modal__overlay\"\n [class.studio-modal__overlay--visible]=\"visible()\"\n (click)=\"handleOverlayClick()\"\n ></div>\n\n <!-- Modal -->\n <div\n #modalPanel\n class=\"studio-modal__panel\"\n [class.studio-modal__panel--visible]=\"visible()\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"showHeader() ? 'modal-title' : null\"\n >\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"studio-modal__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n } @else {\n <h3 id=\"modal-title\" class=\"studio-modal__title\">{{ title() }}</h3>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-modal__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-modal__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n font-family: var(--studio-font-family);\n }\n\n .studio-modal__overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n opacity: 0;\n transition: opacity var(--studio-transition-normal);\n\n &--visible {\n opacity: 1;\n }\n }\n\n .studio-modal__panel {\n position: fixed;\n z-index: 1001;\n background: var(--studio-bg-primary);\n border-radius: var(--studio-radius-lg);\n box-shadow: var(--studio-shadow-xl);\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity var(--studio-transition-normal),\n transform var(--studio-transition-normal);\n\n &--visible {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n /* Position variants */\n :host(.modal--center) .studio-modal__panel {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n\n &--visible {\n transform: translate(-50%, -50%) scale(1);\n }\n }\n\n :host(.modal--top) .studio-modal__panel {\n top: 5vh;\n left: 50%;\n transform: translate(-50%, -20px) scale(0.95);\n\n &--visible {\n transform: translate(-50%, 0) scale(1);\n }\n }\n\n :host(.modal--bottom) .studio-modal__panel {\n bottom: 5vh;\n left: 50%;\n transform: translate(-50%, 20px) scale(0.95);\n\n &--visible {\n transform: translate(-50%, 0) scale(1);\n }\n }\n\n /* Size variants */\n :host(.modal--sm) .studio-modal__panel {\n width: 90%;\n max-width: 400px;\n }\n\n :host(.modal--md) .studio-modal__panel {\n width: 90%;\n max-width: 600px;\n }\n\n :host(.modal--lg) .studio-modal__panel {\n width: 90%;\n max-width: 800px;\n }\n\n :host(.modal--xl) .studio-modal__panel {\n width: 90%;\n max-width: 1200px;\n }\n\n :host(.modal--full) .studio-modal__panel {\n width: 95vw;\n height: 95vh;\n max-width: none;\n max-height: none;\n }\n\n /* Variant styles */\n :host(.modal--bordered) .studio-modal__panel {\n border: 1px solid var(--studio-border-primary);\n }\n\n :host(.modal--minimal) .studio-modal__panel {\n box-shadow: var(--studio-shadow-md);\n }\n\n /* Animation variants */\n :host(.modal--fade) .studio-modal__panel {\n transform: translate(-50%, -50%);\n\n &--visible {\n transform: translate(-50%, -50%);\n }\n }\n\n :host(.modal--slide-down) .studio-modal__panel {\n transform: translate(-50%, -60%);\n\n &--visible {\n transform: translate(-50%, -50%);\n }\n }\n\n :host(.modal--none) .studio-modal__panel {\n transition: none;\n }\n\n :host(.modal--none) .studio-modal__overlay {\n transition: none;\n }\n\n /* Header */\n .studio-modal__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem;\n border-bottom: 1px solid var(--studio-border-primary);\n flex-shrink: 0;\n }\n\n .studio-modal__title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: var(--studio-font-weight-semibold);\n color: var(--studio-text-primary);\n }\n\n .studio-modal__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-secondary);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n\n &:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n &:active {\n transform: scale(0.95);\n }\n }\n\n /* Content */\n .studio-modal__content {\n padding: 1.5rem;\n overflow-y: auto;\n flex: 1;\n }\n\n /* Footer */\n .studio-modal__footer {\n padding: 1.5rem;\n border-top: 1px solid var(--studio-border-primary);\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n flex-shrink: 0;\n }\n `\n})\nexport class ModalComponent {\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n visible = model<boolean>(false);\n title = input<string>('');\n size = input<ModalSize>('md');\n variant = input<ModalVariant>('default');\n animation = input<ModalAnimation>('scale');\n position = input<ModalPosition>('center');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(true);\n closeOnOverlayClick = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n\n // Outputs\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n\n // Template refs\n protected headerTemplate = contentChild<TemplateRef<any>>('modalHeader');\n protected footerTemplate = contentChild<TemplateRef<any>>('modalFooter');\n protected modalPanel = viewChild<ElementRef<HTMLDivElement>>('modalPanel');\n\n // Computed\n protected hostClasses = computed(() => classNames(\n 'studio-modal',\n 'modal--' + this.size(),\n 'modal--' + this.variant(),\n 'modal--' + this.animation(),\n 'modal--' + this.position()\n ));\n\n constructor() {\n afterNextRender(() => {\n this.setupFocusTrap();\n });\n\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscape(event: KeyboardEvent): void {\n if (this.closeOnEscape() && this.visible()) {\n event.preventDefault();\n this.close();\n }\n }\n\n protected handleOverlayClick(): void {\n if (this.closeOnOverlayClick()) {\n this.close();\n }\n }\n\n close(): void {\n this.visible.set(false);\n }\n\n open(): void {\n this.visible.set(true);\n }\n\n private handleOpen(): void {\n // Prevent body scroll\n document.body.style.overflow = 'hidden';\n this.opened.emit();\n\n // Focus first focusable element\n setTimeout(() => {\n const panel = this.modalPanel()?.nativeElement;\n if (panel) {\n const focusable = panel.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n }\n }, 100);\n }\n\n private handleClose(): void {\n // Restore body scroll\n document.body.style.overflow = '';\n this.closed.emit();\n }\n\n private setupFocusTrap(): void {\n // Simple focus trap: keep focus within modal when it's open\n const handleTab = (e: KeyboardEvent) => {\n if (!this.visible() || e.key !== 'Tab') return;\n\n const panel = this.modalPanel()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement?.focus();\n e.preventDefault();\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement?.focus();\n e.preventDefault();\n }\n };\n\n document.addEventListener('keydown', handleTab);\n this.destroyRef.onDestroy(() => {\n document.removeEventListener('keydown', handleTab);\n document.body.style.overflow = ''; // Cleanup on destroy\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n NavbarVariant,\n NavbarColor,\n NavbarSize,\n NavbarShadow\n} from './navbar.types';\n\n/**\n * Navbar component - Primitive component for navigation headers\n *\n * @example\n * <studio-navbar variant=\"filled\" [sticky]=\"true\">\n * <div navbarLeft>Logo</div>\n * <div navbarCenter>Search</div>\n * <div navbarRight>User menu</div>\n * </studio-navbar>\n */\n@Component({\n selector: 'studio-navbar',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"banner\"',\n '[style.height]': 'customHeight() ? customHeight() + \"px\" : null'\n },\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss'\n})\nexport class NavbarComponent {\n // ========== Visual variants ==========\n variant = input<NavbarVariant>('default');\n color = input<NavbarColor>('inherit');\n shadow = input<NavbarShadow>('sm');\n\n // ========== Size ==========\n size = input<NavbarSize>('md');\n customHeight = input<number | null>(null);\n\n // ========== Behavior ==========\n sticky = input<boolean>(false);\n blurBg = input<boolean>(false);\n\n // ========== Borders ==========\n bordered = input<boolean>(true);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n navbarClick = output<MouseEvent>();\n\n // ========== Computed classes ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-navbar'];\n\n classes.push(`studio-navbar--${this.variant()}`);\n classes.push(`studio-navbar--${this.size()}`);\n classes.push(`studio-navbar--shadow-${this.shadow()}`);\n\n if (this.color() !== 'inherit') classes.push(`studio-navbar--${this.color()}`);\n if (this.sticky()) classes.push('studio-navbar--sticky');\n if (this.blurBg()) classes.push('studio-navbar--blur');\n if (this.bordered()) classes.push('studio-navbar--bordered');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent) {\n this.navbarClick.emit(event);\n }\n}\n","<div class=\"studio-navbar__left\">\n <ng-content select=\"[navbarLeft]\" />\n</div>\n\n<div class=\"studio-navbar__center\">\n <ng-content select=\"[navbarCenter]\" />\n</div>\n\n<div class=\"studio-navbar__right\">\n <ng-content select=\"[navbarRight]\" />\n</div>\n\n<ng-content />\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\nexport type RadioButtonSize = 'sm' | 'md' | 'lg';\nexport type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type RadioButtonVariant = 'default' | 'outlined' | 'filled';\nexport type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * RadioButton component for selecting a single option from a group\n *\n * @example\n * <studio-radio-button\n * [(ngModel)]=\"selectedValue\"\n * [value]=\"'option1'\"\n * label=\"Option 1\"\n * name=\"options\"\n * />\n */\n@Component({\n selector: 'studio-radio-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly radioDefaults = computed(() => this.configService.config().components?.radioButton);\n\n size = input<RadioButtonSize>(this.radioDefaults()?.size ?? 'md');\n color = input<RadioButtonColor>(this.radioDefaults()?.color ?? 'primary');\n variant = input<RadioButtonVariant>(this.radioDefaults()?.variant ?? 'default');\n radius = input<RadioButtonRadius>(this.radioDefaults()?.radius ?? 'full');\n\n label = input<string>();\n labelPosition = input<'left' | 'right'>(this.radioDefaults()?.labelPosition ?? 'right');\n description = input<string>();\n hint = input<string>();\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string>();\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n name = input<string>();\n tabIndex = input<number>(0);\n value = input<any>();\n\n changed = output<any>();\n\n protected internalValue = signal<any>(null);\n protected isFocused = signal(false);\n protected radioId = signal(`studio-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n protected hostClasses = computed(() => ({\n 'studio-radio-wrapper': true,\n [`studio-radio-wrapper--${this.size()}`]: true,\n 'studio-radio-wrapper--disabled': this.disabled(),\n 'studio-radio-wrapper--error': this.error(),\n 'studio-radio-wrapper--focused': this.isFocused(),\n 'studio-radio-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n protected radioClasses = computed(() => ({\n 'studio-radio': true,\n [`studio-radio--${this.size()}`]: true,\n [`studio-radio--${this.color()}`]: true,\n [`studio-radio--${this.variant()}`]: true,\n [`studio-radio--radius-${this.radius()}`]: true,\n 'studio-radio--checked': this.isChecked(),\n 'studio-radio--disabled': this.disabled(),\n 'studio-radio--error': this.error()\n }));\n\n protected showError = computed(() => this.error() && this.errorMessage());\n protected showHint = computed(() => !this.error() && this.hint());\n protected isChecked = computed(() => this.internalValue() === this.value());\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.internalValue.set(value);\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const inputValue = this.value();\n this.internalValue.set(inputValue);\n this.onChange(inputValue);\n this.changed.emit(inputValue);\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n","<label\n [for]=\"radioId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"isChecked() ? 'true' : 'false'\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? radioId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-radio__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span [ngClass]=\"radioClasses()\">\n @if (isChecked()) {\n <span class=\"studio-radio__dot\"></span>\n }\n </span>\n\n @if (label() || description()) {\n <span class=\"studio-radio__label-wrapper\">\n @if (label()) {\n <span class=\"studio-radio__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-radio__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-radio__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n@if (showHint() || showError()) {\n <div\n [id]=\"radioId() + '-description'\"\n class=\"studio-radio__info\"\n >\n @if (showError()) {\n <span class=\"studio-radio__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-radio__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n HostListener\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { SelectOption, SelectOptionGroup, SelectVariant, SelectSize, SelectPosition } from './select.types';\n\n@Component({\n selector: 'studio-select',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-open]': 'isOpen()',\n },\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss'\n})\nexport class SelectComponent<T = any> implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly selectDefaults = computed(() => this.configService.config().components?.select);\n\n protected readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerButton');\n protected readonly dropdownEl = viewChild<ElementRef<HTMLDivElement>>('dropdownPanel');\n\n variantInput = input<SelectVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<SelectSize | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.selectDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.selectDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.selectDefaults()?.radius), 'md');\n\n options = input.required<SelectOption<T>[] | SelectOptionGroup<T>[]>();\n placeholder = input<string>('Select option...');\n\n multiple = input<boolean>(false);\n searchable = input<boolean>(false);\n clearable = input<boolean>(true);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n required = input<boolean>(false);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string>('chevron-down');\n\n fullWidth = input<boolean>(false);\n maxHeight = input<string>('300px');\n position = input<SelectPosition>('bottom');\n\n searchPlaceholder = input<string>('Search...');\n\n valueChange = output<T | T[] | null>();\n searchChange = output<string>();\n opened = output<void>();\n closed = output<void>();\n optionSelected = output<SelectOption<T>>();\n\n protected isOpen = signal(false);\n protected searchQuery = signal('');\n protected selectedValue = signal<T | T[] | null>(null);\n protected highlightedIndex = signal(0);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n\n protected generatedId = `studio-select-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.setupClickOutside();\n } else {\n this.cleanupClickOutside();\n }\n });\n }\n\n protected flattenedOptions = computed(() => {\n const opts = this.options();\n if (!opts || opts.length === 0) return [];\n\n if (this.isOptionGroup(opts[0])) {\n return (opts as SelectOptionGroup<T>[]).flatMap(g => g.options);\n }\n return opts as SelectOption<T>[];\n });\n\n protected filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this.flattenedOptions();\n\n if (!query) return opts;\n\n return opts.filter(opt =>\n opt.label.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query)\n );\n });\n\n protected selectedOptions = computed(() => {\n const value = this.selectedValue();\n const opts = this.flattenedOptions();\n\n if (this.multiple()) {\n const values = (value as T[]) || [];\n return opts.filter(opt => values.includes(opt.value));\n }\n\n return opts.find(opt => this.compareValues(opt.value, value as T)) || null;\n });\n\n protected displayValue = computed(() => {\n const selected = this.selectedOptions();\n\n if (this.multiple() && Array.isArray(selected)) {\n return selected.map(opt => opt.label).join(', ');\n }\n\n if (selected && !Array.isArray(selected)) {\n return selected.label;\n }\n\n return '';\n });\n\n protected hasValue = computed(() => {\n const val = this.selectedValue();\n return this.multiple()\n ? Array.isArray(val) && val.length > 0\n : val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-select',\n `studio-select--${this.variant()}`,\n `studio-select--${this.size()}`,\n `studio-select--radius-${this.radius()}`,\n this.isOpen() && 'studio-select--open',\n this.disabled() && 'studio-select--disabled',\n this.loading() && 'studio-select--loading',\n this.error() && 'studio-select--error',\n this.isFocused() && 'studio-select--focused',\n this.hasValue() && 'studio-select--has-value',\n this.fullWidth() && 'studio-select--full-width'\n ));\n\n protected toggle(): void {\n if (!this.disabled() && !this.loading()) {\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.opened.emit();\n setTimeout(() => this.focusSearchInput(), 0);\n } else {\n this.closed.emit();\n this.searchQuery.set('');\n }\n }\n }\n\n protected close(): void {\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.closed.emit();\n this.searchQuery.set('');\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected selectOption(option: SelectOption<T>): void {\n if (option.disabled) return;\n\n if (this.multiple()) {\n const current = ((this.selectedValue() as T[]) || []);\n const isSelected = current.includes(option.value);\n\n if (isSelected) {\n this.selectedValue.set(current.filter(v => v !== option.value));\n } else {\n this.selectedValue.set([...current, option.value]);\n }\n } else {\n this.selectedValue.set(option.value);\n this.close();\n }\n\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n this.optionSelected.emit(option);\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.selectedValue.set(this.multiple() ? [] : null);\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n if (this.multiple()) {\n const values = (this.selectedValue() as T[]) || [];\n return values.includes(option.value);\n }\n return this.compareValues(option.value, this.selectedValue() as T);\n }\n\n protected handleSearch(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searchChange.emit(query);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggle();\n } else {\n this.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.isOpen()) {\n this.highlightPrevious();\n }\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.isOpen()) {\n this.selectHighlighted();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n private highlightNext(): void {\n const opts = this.filteredOptions();\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.min(current + 1, opts.length - 1));\n }\n\n private highlightPrevious(): void {\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.max(current - 1, 0));\n }\n\n private selectHighlighted(): void {\n const opts = this.filteredOptions();\n const index = this.highlightedIndex();\n if (opts[index]) {\n this.selectOption(opts[index]);\n }\n }\n\n private compareValues(a: T, b: T): boolean {\n return a === b;\n }\n\n private isOptionGroup(item: any): item is SelectOptionGroup<T> {\n return item && 'options' in item && Array.isArray(item.options);\n }\n\n private focusSearchInput(): void {\n if (this.searchable()) {\n const searchInput = this.dropdownEl()?.nativeElement.querySelector('input');\n searchInput?.focus();\n }\n }\n\n private clickOutsideListener?: (event: Event) => void;\n\n private setupClickOutside(): void {\n this.clickOutsideListener = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.triggerEl()?.nativeElement;\n const dropdown = this.dropdownEl()?.nativeElement;\n\n if (trigger && !trigger.contains(target) && dropdown && !dropdown.contains(target)) {\n this.close();\n }\n };\n\n setTimeout(() => {\n document.addEventListener('click', this.clickOutsideListener!);\n }, 0);\n }\n\n private cleanupClickOutside(): void {\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n this.clickOutsideListener = undefined;\n }\n }\n\n writeValue(value: T | T[]): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-select__control\">\n @if (prefixIcon()) {\n <span class=\"studio-select__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label--floating\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n }\n\n <button\n #triggerButton\n type=\"button\"\n [id]=\"generatedId\"\n class=\"studio-select__trigger\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n >\n @if (hasValue()) {\n <span class=\"studio-select__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"studio-select__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n @if (clearable() && hasValue() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-select__clear\"\n (click)=\"clear($event)\"\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (loading()) {\n <span class=\"studio-select__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n } @else {\n <span class=\"studio-select__suffix\">\n <studio-icon\n [name]=\"suffixIcon()\"\n [size]=\"16\"\n />\n </span>\n }\n</div>\n\n@if (isOpen()) {\n <div\n #dropdownPanel\n class=\"studio-select__dropdown\"\n [attr.data-position]=\"position()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (searchable()) {\n <div class=\"studio-select__search\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"handleSearch($event)\"\n />\n </div>\n }\n\n <div class=\"studio-select__options\" role=\"listbox\">\n @if (filteredOptions().length === 0) {\n <div class=\"studio-select__empty\">\n No options found\n </div>\n }\n\n @for (option of filteredOptions(); track option.value; let idx = $index) {\n <div\n class=\"studio-select__option\"\n [class.studio-select__option--selected]=\"isSelected(option)\"\n [class.studio-select__option--disabled]=\"option.disabled\"\n [class.studio-select__option--highlighted]=\"highlightedIndex() === idx\"\n (click)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n >\n @if (multiple()) {\n <input\n type=\"checkbox\"\n class=\"studio-select__checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"option.disabled\"\n tabindex=\"-1\"\n />\n }\n\n @if (option.icon) {\n <studio-icon [name]=\"option.icon\" [size]=\"18\" class=\"studio-select__option-icon\" />\n }\n\n <div class=\"studio-select__option-content\">\n <div class=\"studio-select__option-label\">\n {{ option.label }}\n </div>\n @if (option.description) {\n <div class=\"studio-select__option-description\">\n {{ option.description }}\n </div>\n }\n </div>\n\n @if (!multiple() && isSelected(option)) {\n <studio-icon name=\"check\" [size]=\"16\" class=\"studio-select__check-icon\" />\n }\n </div>\n }\n </div>\n </div>\n}\n\n@if (hint() && !error()) {\n <div class=\"studio-select__hint\">{{ hint() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"studio-select__error\">{{ errorMessage() }}</div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n computed,\n inject,\n effect\n} from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { DrawerComponent } from '../drawer';\nimport { StudioConfigService } from '../../config';\nimport { withConfigDefault } from '../../utils';\nimport { SidebarPosition, SidebarSize, SidebarVariant } from './sidebar.types';\n\n/**\n * Sidebar component - Navigation sidebar built on top of Drawer\n *\n * @example\n * <studio-sidebar [(visible)]=\"sidebarOpen\">\n * <nav sidebarHeader>\n * <h2>Navigation</h2>\n * </nav>\n *\n * <studio-menu>\n * <studio-menu-item>Home</studio-menu-item>\n * <studio-menu-item>About</studio-menu-item>\n * </studio-menu>\n *\n * <div sidebarFooter>\n * <studio-button>Logout</studio-button>\n * </div>\n * </studio-sidebar>\n */\n@Component({\n selector: 'studio-sidebar',\n standalone: true,\n imports: [DrawerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss'\n})\nexport class SidebarComponent {\n private readonly router = inject(Router, { optional: true });\n private readonly configService = inject(StudioConfigService);\n private readonly sidebarDefaults = computed(() => this.configService.config().components?.sidebar);\n\n // Core\n id = input<string>(`studio-sidebar-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<SidebarPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<SidebarSize | undefined>(undefined, { alias: 'size' });\n variantInput = input<SidebarVariant | undefined>(undefined, { alias: 'variant' });\n customWidth = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.sidebarDefaults()?.position), 'left');\n size = withConfigDefault(this.sizeInput, computed(() => this.sidebarDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.sidebarDefaults()?.variant), 'default');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n collapsibleInput = input<boolean | undefined>(undefined, { alias: 'collapsible' });\n defaultCollapsedInput = input<boolean | undefined>(undefined, { alias: 'defaultCollapsed' });\n closeOnNavigateInput = input<boolean | undefined>(undefined, { alias: 'closeOnNavigate' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.sidebarDefaults()?.modal), true);\n collapsible = withConfigDefault(this.collapsibleInput, computed(() => this.sidebarDefaults()?.collapsible), false);\n defaultCollapsed = withConfigDefault(this.defaultCollapsedInput, computed(() => this.sidebarDefaults()?.defaultCollapsed), false);\n closeOnNavigate = withConfigDefault(this.closeOnNavigateInput, computed(() => this.sidebarDefaults()?.closeOnNavigate), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.sidebarDefaults()?.closeOnBackdropClick), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.sidebarDefaults()?.closeOnEscape), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.sidebarDefaults()?.blockScroll), true);\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.sidebarDefaults()?.swipeToClose), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showFooterInput = input<boolean | undefined>(undefined, { alias: 'showFooter' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.sidebarDefaults()?.showHeader), true);\n showFooter = withConfigDefault(this.showFooterInput, computed(() => this.sidebarDefaults()?.showFooter), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.sidebarDefaults()?.showCloseButton), true);\n\n // Content Customization\n contentPadding = input<string | undefined>(undefined);\n contentGap = input<string | undefined>(undefined);\n background = input<string | undefined>(undefined);\n\n // Customization\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-sidebar'];\n classes.push(`studio-sidebar--${this.position()}`);\n classes.push(`studio-sidebar--${this.size()}`);\n classes.push(`studio-sidebar--${this.variant()}`);\n if (this.collapsible()) classes.push('studio-sidebar--collapsible');\n if (this.class()) classes.push(this.class());\n return classes.join(' ');\n });\n\n protected drawerSize = computed<'sm' | 'md' | 'lg' | 'xl' | 'full'>(() => {\n const currentSize = this.size();\n const sizeMap: Record<SidebarSize, 'sm' | 'md' | 'lg' | 'xl' | 'full'> = {\n 'sm': 'sm',\n 'md': 'md',\n 'lg': 'lg',\n 'full': 'full'\n };\n return sizeMap[currentSize];\n });\n\n constructor() {\n // Close sidebar on navigation if enabled\n if (this.router && this.closeOnNavigate()) {\n effect(() => {\n const subscription = this.router!.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n if (this.closeOnNavigate() && this.visible()) {\n this.visible.set(false);\n }\n });\n\n return () => subscription.unsubscribe();\n });\n }\n }\n}\n","<studio-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"visible.set($event)\"\n [position]=\"position()\"\n [size]=\"drawerSize()\"\n [modal]=\"modal()\"\n [closeOnBackdropClick]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnEscape()\"\n [blockScroll]=\"blockScroll()\"\n [showHeader]=\"showHeader()\"\n [header]=\"header()\"\n [showCloseButton]=\"showCloseButton()\"\n [showFooter]=\"showFooter()\"\n [swipeToClose]=\"swipeToClose()\"\n [customWidth]=\"customWidth()\"\n>\n <ng-content select=\"[sidebarHeader]\" drawerHeader />\n\n <div\n class=\"studio-sidebar__content\"\n [class]=\"'studio-sidebar__content--' + variant()\"\n [style.padding]=\"contentPadding()\"\n [style.gap]=\"contentGap()\"\n [style.background]=\"background()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[sidebarFooter]\" drawerFooter />\n</studio-drawer>\n","/**\n * Sidebar component types\n */\n\nexport type SidebarPosition = 'left' | 'right';\nexport type SidebarSize = 'sm' | 'md' | 'lg' | 'full';\nexport type SidebarVariant = 'default' | 'minimal' | 'compact';\n\nexport interface SidebarConfig {\n position?: SidebarPosition;\n size?: SidebarSize;\n variant?: SidebarVariant;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n modal?: boolean;\n closeOnNavigate?: boolean;\n showOverlay?: boolean;\n}\n","/**\n * Sidebar component\n */\n\nexport * from './sidebar.component';\nexport * from './sidebar.types';\n","import { Component, ChangeDetectionStrategy, input, output, computed, model, inject, signal, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n/**\n * Toggle switch component with customizable size and color\n *\n * @example\n * <studio-switch [(checked)]=\"isEnabled\" label=\"Enable feature\" />\n * <studio-switch [(ngModel)]=\"isEnabled\" label=\"Enable feature\" />\n */\n@Component({\n selector: 'studio-switch',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'internalChecked()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-label]': 'ariaLabel() || label()',\n '(click)': 'handleClick()',\n '(keydown.space)': 'handleKeydown($event)',\n '(keydown.enter)': 'handleKeydown($event)',\n '[tabindex]': 'disabled() ? -1 : 0'\n },\n template: `\n <span class=\"studio-switch__container\">\n @if (label() && labelPosition() === 'left') {\n <span class=\"studio-switch__label studio-switch__label--left\">\n {{ label() }}\n </span>\n }\n\n <span class=\"studio-switch__track\">\n <span class=\"studio-switch__thumb\">\n @if (showIcons()) {\n @if (internalChecked()) {\n <studio-icon name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"x\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n }\n </span>\n </span>\n\n @if (label() && labelPosition() === 'right') {\n <span class=\"studio-switch__label studio-switch__label--right\">\n {{ label() }}\n </span>\n }\n </span>\n `,\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly switchDefaults = computed(() => this.configService.config().components?.switch);\n\n checked = model<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n labelPosition = input<'left' | 'right'>('right');\n showIcons = input<boolean>(false);\n ariaLabel = input<string>();\n\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | undefined>(undefined, { alias: 'color' });\n\n size = withConfigDefault(this.sizeInput, computed(() => this.switchDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.switchDefaults()?.color), 'primary');\n\n checkedChange = output<boolean>();\n\n protected internalChecked = signal<boolean>(false);\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 10, md: 12, lg: 14 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-switch',\n `studio-switch--${this.size()}`,\n `studio-switch--${this.color()}`,\n this.internalChecked() && 'studio-switch--checked',\n this.disabled() && 'studio-switch--disabled'\n ));\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleClick(): void {\n if (this.disabled()) return;\n this.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.toggle();\n }\n\n private toggle(): void {\n const newValue = !this.internalChecked();\n this.internalChecked.set(newValue);\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.checkedChange.emit(newValue);\n }\n}\n","/**\n * Switch component\n */\n\nexport * from './switch.component';\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, effect, TemplateRef, contentChildren } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { TabsVariant, TabsSize, TabsOrientation } from './tabs.types';\n\nexport interface TabItem {\n id: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n content?: TemplateRef<any>;\n}\n\n@Component({\n selector: 'studio-tabs',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"tabs__header\" [class.tabs__header--vertical]=\"orientation() === 'vertical'\">\n @for (tab of tabs(); track tab.id) {\n <button\n type=\"button\"\n class=\"tabs__tab\"\n [class.tabs__tab--active]=\"activeTab() === tab.id\"\n [class.tabs__tab--disabled]=\"tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab.id)\"\n >\n @if (tab.icon) {\n <studio-icon [name]=\"tab.icon\" [size]=\"iconSize()\" />\n }\n <span>{{ tab.label }}</span>\n </button>\n }\n </div>\n \n <div class=\"tabs__content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: flex;\n flex-direction: column;\n font-family: var(--studio-font-family);\n }\n\n :host(.tabs--vertical) {\n flex-direction: row;\n }\n\n .tabs__header {\n display: flex;\n gap: 0.25rem;\n border-bottom: 2px solid var(--studio-border-primary);\n\n &--vertical {\n flex-direction: column;\n border-bottom: none;\n border-right: 2px solid var(--studio-border-primary);\n padding-right: 1rem;\n }\n }\n\n .tabs__tab {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n color: var(--studio-text-secondary);\n font-size: 0.875rem;\n font-weight: var(--studio-font-weight-medium);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n position: relative;\n margin-bottom: -2px;\n\n &:hover:not(:disabled) {\n color: var(--studio-text-primary);\n background: var(--studio-bg-secondary);\n }\n\n &--active {\n color: var(--studio-primary);\n border-bottom-color: var(--studio-primary);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n :host(.tabs--pills) {\n .tabs__header {\n border-bottom: none;\n }\n\n .tabs__tab {\n border-radius: var(--studio-radius-md);\n border-bottom: none;\n margin-bottom: 0;\n\n &--active {\n background: var(--studio-primary);\n color: white;\n }\n }\n }\n\n :host(.tabs--enclosed) {\n .tabs__tab {\n border: 1px solid transparent;\n border-radius: var(--studio-radius-md) var(--studio-radius-md) 0 0;\n margin-bottom: -1px;\n\n &--active {\n border-color: var(--studio-border-primary);\n border-bottom-color: var(--studio-bg-primary);\n background: var(--studio-bg-primary);\n }\n }\n }\n\n :host(.tabs--sm) .tabs__tab {\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n }\n\n :host(.tabs--lg) .tabs__tab {\n padding: 1rem 1.25rem;\n font-size: 1rem;\n }\n\n .tabs__content {\n padding: 1.5rem 0;\n }\n `\n})\nexport class TabsComponent {\n tabs = input.required<TabItem[]>();\n activeTab = signal<string>('');\n variant = input<TabsVariant>('line');\n size = input<TabsSize>('md');\n orientation = input<TabsOrientation>('horizontal');\n\n tabChange = output<string>();\n\n protected hostClasses = computed(() => classNames(\n 'tabs',\n 'tabs--' + this.variant(),\n 'tabs--' + this.size(),\n this.orientation() === 'vertical' && 'tabs--vertical'\n ));\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 14, md: 16, lg: 18 };\n return sizeMap[this.size()];\n });\n\n constructor() {\n effect(() => {\n // Set first tab as active by default when tabs change\n const tabsList = this.tabs();\n const firstTab = tabsList[0];\n if (firstTab && !this.activeTab()) {\n this.activeTab.set(firstTab.id);\n }\n });\n }\n\n protected selectTab(tabId: string): void {\n this.activeTab.set(tabId);\n this.tabChange.emit(tabId);\n }\n}\n","import { Component, input, output, computed, signal, forwardRef, inject, effect, ElementRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\nimport { classNames } from '../../utils';\n\n/**\n * Textarea component for multi-line text input\n *\n * @example\n * <studio-textarea\n * [(ngModel)]=\"message\"\n * label=\"Your message\"\n * placeholder=\"Enter your message...\"\n * [rows]=\"4\"\n * />\n */\n@Component({\n selector: 'studio-textarea',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()',\n '[attr.data-full-width]': 'fullWidth()'\n }\n})\nexport class TextareaComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly textareaDefaults = computed(() => this.configService.config().components?.textarea);\n\n variant = input<TextareaVariant>(\n this.textareaDefaults()?.variant ?? 'outline'\n );\n\n size = input<TextareaSize>(\n this.textareaDefaults()?.size ?? 'md'\n );\n\n color = input<TextareaColor>(\n this.textareaDefaults()?.color ?? 'primary'\n );\n\n radius = input<TextareaRadius>(\n this.textareaDefaults()?.radius ?? 'md'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Floating label (moves up when focused/filled)\n */\n floatingLabel = input<boolean>(false);\n\n /**\n * Placeholder text\n */\n placeholder = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Textarea Specific\n // ==========================================\n\n /**\n * Number of visible text rows\n */\n rows = input<number>(\n this.textareaDefaults()?.rows ?? 3\n );\n\n /**\n * Minimum rows for auto-resize\n */\n minRows = input<number>();\n\n /**\n * Maximum rows for auto-resize\n */\n maxRows = input<number>();\n\n /**\n * Enable auto-resize based on content\n */\n autoResize = input<boolean>(\n this.textareaDefaults()?.autoResize ?? false\n );\n\n /**\n * Resize behavior\n */\n resize = input<'none' | 'vertical' | 'horizontal' | 'both'>(\n this.textareaDefaults()?.resize ?? 'vertical'\n );\n\n // ==========================================\n // INPUTS - Character Count\n // ==========================================\n\n /**\n * Maximum character length\n */\n maxLength = input<number>();\n\n /**\n * Show character counter\n */\n showCharCount = input<boolean>(\n this.textareaDefaults()?.showCharCount ?? false\n );\n\n /**\n * Character counter position\n */\n charCountPosition = input<'bottom-right' | 'bottom-left'>('bottom-right');\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Minimum character length\n */\n minLength = input<number>();\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Full width (100% of parent)\n */\n fullWidth = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Autocomplete attribute\n */\n autocomplete = input<string>();\n\n /**\n * Spellcheck attribute\n */\n spellcheck = input<boolean>(true);\n\n /**\n * Show clear button\n */\n clearable = input<boolean>(\n this.textareaDefaults()?.clearable ?? false\n );\n\n /**\n * Loading state\n */\n loading = input<boolean>(false);\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when value changes\n */\n changed = output<string>();\n\n /**\n * Emitted on focus\n */\n focused = output<FocusEvent>();\n\n /**\n * Emitted on blur\n */\n blurred = output<FocusEvent>();\n\n /**\n * Emitted on key press\n */\n keyPressed = output<KeyboardEvent>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal value\n */\n protected internalValue = signal('');\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected textareaId = signal(`studio-textarea-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Textarea element reference\n */\n protected textareaEl = viewChild<ElementRef<HTMLTextAreaElement>>('textarea');\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n protected hostClasses = computed(() => classNames(\n 'studio-textarea-wrapper',\n `studio-textarea-wrapper--${this.size()}`,\n `studio-textarea-wrapper--${this.variant()}`,\n this.disabled() && 'studio-textarea-wrapper--disabled',\n this.error() && 'studio-textarea-wrapper--error',\n this.isFocused() && 'studio-textarea-wrapper--focused',\n this.fullWidth() && 'studio-textarea-wrapper--full-width',\n this.floatingLabel() && 'studio-textarea-wrapper--floating-label'\n ));\n\n /**\n * Textarea element CSS classes\n */\n protected textareaClasses = computed(() => classNames(\n 'studio-textarea',\n `studio-textarea--${this.size()}`,\n `studio-textarea--${this.variant()}`,\n `studio-textarea--${this.color()}`,\n `studio-textarea--radius-${this.radius()}`,\n `studio-textarea--resize-${this.resize()}`,\n this.disabled() && 'studio-textarea--disabled',\n this.readonly() && 'studio-textarea--readonly',\n this.error() && 'studio-textarea--error',\n this.internalValue().length > 0 && 'studio-textarea--has-value',\n this.autoResize() && 'studio-textarea--auto-resize'\n ));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * Character count text\n */\n protected charCountText = computed(() => {\n const length = this.internalValue().length;\n const max = this.maxLength();\n return max ? `${length}/${max}` : `${length}`;\n });\n\n /**\n * Is character limit exceeded\n */\n protected isCharLimitExceeded = computed(() => {\n const max = this.maxLength();\n return max ? this.internalValue().length > max : false;\n });\n\n /**\n * Computed placeholder (empty if floating label)\n */\n protected computedPlaceholder = computed(() => {\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n /**\n * Show floating label in \"up\" position\n */\n protected showFloatingLabelUp = computed(() => {\n return this.floatingLabel() && (this.isFocused() || this.internalValue().length > 0);\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.internalValue.set(value ?? '');\n this.adjustHeightIfNeeded();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // CONSTRUCTOR & EFFECTS\n // ==========================================\n\n constructor() {\n // Auto-resize effect\n effect(() => {\n if (this.autoResize()) {\n this.adjustHeightIfNeeded();\n }\n });\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle textarea input\n */\n protected handleInput(event: Event): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.internalValue.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n\n if (this.autoResize()) {\n this.adjustHeight(event.target as HTMLTextAreaElement);\n }\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n /**\n * Handle key press\n */\n protected handleKeyPress(event: KeyboardEvent): void {\n this.keyPressed.emit(event);\n }\n\n /**\n * Clear textarea value\n */\n protected handleClear(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.internalValue.set('');\n this.onChange('');\n this.changed.emit('');\n\n // Focus textarea after clearing\n this.textareaEl()?.nativeElement.focus();\n }\n\n /**\n * Adjust textarea height for auto-resize\n */\n private adjustHeightIfNeeded(): void {\n if (this.autoResize()) {\n setTimeout(() => {\n const textarea = this.textareaEl()?.nativeElement;\n if (textarea) {\n this.adjustHeight(textarea);\n }\n });\n }\n }\n\n /**\n * Adjust textarea height based on content\n */\n private adjustHeight(textarea: HTMLTextAreaElement): void {\n // Reset height to auto to get proper scrollHeight\n textarea.style.height = 'auto';\n\n const minRows = this.minRows() ?? this.rows();\n const maxRows = this.maxRows();\n\n // Calculate line height\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight);\n const padding = parseInt(getComputedStyle(textarea).paddingTop) +\n parseInt(getComputedStyle(textarea).paddingBottom);\n\n // Calculate min and max heights\n const minHeight = minRows * lineHeight + padding;\n const maxHeight = maxRows ? maxRows * lineHeight + padding : Infinity;\n\n // Set new height within bounds\n const newHeight = Math.max(minHeight, Math.min(textarea.scrollHeight, maxHeight));\n textarea.style.height = `${newHeight}px`;\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type TextareaVariant = 'outline' | 'filled' | 'underline';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\nexport type TextareaColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type TextareaRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<div class=\"studio-textarea-container\">\n <!-- Label (static or floating) -->\n @if (label() && !floatingLabel()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea wrapper -->\n <div class=\"studio-textarea-input-wrapper\">\n <!-- Floating label -->\n @if (floatingLabel() && label()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label studio-textarea-label--floating\"\n [class.studio-textarea-label--floating-up]=\"showFloatingLabelUp()\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea element -->\n <textarea\n #textarea\n [id]=\"textareaId()\"\n [class]=\"textareaClasses()\"\n [value]=\"internalValue()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [autocomplete]=\"autocomplete()\"\n [spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-describedby]=\"showHint() || showError() ? textareaId() + '-description' : undefined\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n ></textarea>\n\n <!-- Clear button -->\n @if (clearable() && internalValue().length > 0 && !disabled() && !readonly()) {\n <button\n type=\"button\"\n class=\"studio-textarea-clear\"\n [attr.aria-label]=\"'Clear textarea'\"\n (click)=\"handleClear()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Loading indicator -->\n @if (loading()) {\n <div class=\"studio-textarea-loading\">\n <svg\n class=\"studio-textarea-spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n </div>\n }\n\n <!-- Character counter -->\n @if (showCharCount()) {\n <div\n class=\"studio-textarea-char-count\"\n [class.studio-textarea-char-count--exceeded]=\"isCharLimitExceeded()\"\n [attr.data-position]=\"charCountPosition()\"\n >\n {{ charCountText() }}\n </div>\n }\n </div>\n\n <!-- Helper text / Error message -->\n @if (showError()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--error\"\n [id]=\"textareaId() + '-description'\"\n role=\"alert\"\n >\n {{ errorMessage() }}\n </div>\n } @else if (showHint()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--hint\"\n [id]=\"textareaId() + '-description'\"\n >\n {{ hint() }}\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-tooltip',\n standalone: true,\n imports: [PopoverComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [openDelay]=\"openDelay()\"\n [closeDelay]=\"closeDelay()\"\n [arrow]=\"arrow()\"\n [arrowSize]=\"arrowSize()\"\n [variant]=\"'minimal'\"\n [size]=\"'sm'\"\n [animation]=\"'fade'\"\n [animationDuration]=\"150\"\n [showHeader]=\"false\"\n [showFooter]=\"false\"\n [closeOnClickOutside]=\"false\"\n [closeOnEscape]=\"false\"\n [disabled]=\"disabled()\"\n [maxWidth]=\"maxWidth()\"\n [padding]=\"'0.5rem 0.75rem'\"\n >\n <ng-content />\n <div popoverContent [innerHTML]=\"content() || ''\"></div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `\n})\nexport class TooltipComponent {\n content = input.required<string>();\n trigger = input<'hover' | 'focus' | 'click'>('hover');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('top');\n openDelay = input<number>(200);\n closeDelay = input<number>(100);\n arrow = input<boolean>(true);\n arrowSize = input<number>(6);\n maxWidth = input<string>('300px');\n disabled = input<boolean>(false);\n\n protected hostClasses = computed(() => classNames('studio-tooltip'));\n}\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './badge-wrapper';\nexport * from './button';\nexport * from './button-group';\nexport * from './checkbox';\nexport * from './color-picker';\nexport * from './color-picker-compact';\nexport * from './drawer';\nexport * from './dropdown';\nexport * from './icon';\nexport * from './input';\nexport * from './menu';\nexport * from './modal';\nexport * from './navbar';\nexport * from './popover';\nexport * from './radio-button';\nexport * from './select';\nexport * from './sidebar';\nexport * from './switch';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './tooltip';\n","import { Component, ChangeDetectionStrategy, input, output, computed, inject, forwardRef, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonComponent } from '../../primitives/button';\nimport { ButtonGroupComponent } from '../../primitives/button-group';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ButtonToggleGroupOption, ButtonToggleGroupValue } from './button-toggle-group.types';\n\n@Component({\n selector: 'studio-button-toggle-group',\n standalone: true,\n imports: [ButtonComponent, ButtonGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonToggleGroupComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <studio-button-group\n [orientation]=\"orientation()\"\n [attached]=\"attached()\"\n [fullWidth]=\"fullWidth()\"\n [spacing]=\"spacing()\"\n [align]=\"align()\"\n [ariaLabel]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <studio-button\n [variant]=\"isSelected(option.value) ? 'solid' : variant()\"\n [size]=\"size()\"\n [color]=\"isSelected(option.value) ? color() : 'secondary'\"\n [radius]=\"radius()\"\n [shadow]=\"shadow()\"\n [disabled]=\"disabled() || option.disabled || false\"\n [icon]=\"showIcons() ? option.icon : undefined\"\n [iconPosition]=\"iconPosition()\"\n [ariaLabel]=\"option.ariaLabel\"\n (clicked)=\"handleToggle(option.value)\">\n @if (iconPosition() !== 'only') {\n {{ option.label }}\n }\n </studio-button>\n }\n </studio-button-group>\n `,\n styleUrl: './button-toggle-group.component.scss'\n})\nexport class ButtonToggleGroupComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly toggleGroupDefaults = computed(() => this.configService.config().components?.buttonToggleGroup);\n\n private onChange: (value: ButtonToggleGroupValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n value = model<ButtonToggleGroupValue>('' as ButtonToggleGroupValue);\n\n options = input.required<ButtonToggleGroupOption[]>();\n multiple = input<boolean>(false);\n allowEmpty = input<boolean>(true);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.toggleGroupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.toggleGroupDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.toggleGroupDefaults()?.variant), 'outline');\n color = withConfigDefault(this.colorInput, computed(() => this.toggleGroupDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.toggleGroupDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.toggleGroupDefaults()?.shadow), 'none');\n\n attached = input<boolean>(true);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n showIcons = input<boolean>(true);\n iconPosition = input<'left' | 'right' | 'only'>('left');\n ariaLabel = input<string>();\n\n valueChange = output<ButtonToggleGroupValue>();\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-toggle-group',\n this.disabled() && 'studio-button-toggle-group--disabled'\n ));\n\n protected isSelected(optionValue: string | number): boolean {\n const currentValue = this.value();\n if (this.multiple()) {\n return Array.isArray(currentValue) && currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n\n protected handleToggle(optionValue: string | number): void {\n if (this.disabled()) return;\n\n let newValue: ButtonToggleGroupValue;\n\n if (this.multiple()) {\n const currentArray = Array.isArray(this.value()) ? this.value() as (string | number)[] : [];\n const index = currentArray.indexOf(optionValue);\n\n if (index > -1) {\n if (!this.allowEmpty() && currentArray.length === 1) {\n return;\n }\n newValue = currentArray.filter(v => v !== optionValue);\n } else {\n newValue = [...currentArray, optionValue];\n }\n } else {\n const currentValue = this.value();\n if (currentValue === optionValue && !this.allowEmpty()) {\n return;\n }\n newValue = currentValue === optionValue ? (this.allowEmpty() ? '' : optionValue) : optionValue;\n }\n\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.valueChange.emit(newValue);\n }\n\n writeValue(val: ButtonToggleGroupValue): void {\n if (val !== undefined && val !== null) {\n this.value.set(val);\n } else {\n this.value.set(this.multiple() ? [] : '');\n }\n }\n\n registerOnChange(fn: (value: ButtonToggleGroupValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // disabled handled via input signal\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n forwardRef,\n TemplateRef,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\nimport { ButtonComponent } from '../../primitives/button';\nimport { IconComponent } from '../../primitives/icon';\nimport { InputComponent } from '../../primitives/input';\nimport { CheckboxComponent } from '../../primitives/checkbox';\nimport { RadioButtonComponent } from '../../primitives/radio-button';\nimport { ColorPickerCompactComponent } from '../../primitives/color-picker-compact';\nimport { SelectComponent } from '../../primitives/select';\nimport { TextareaComponent } from '../../primitives/textarea';\nimport { SwitchComponent } from '../../primitives/switch';\nimport {\n InspectorData,\n InspectorSection,\n InspectorParameter,\n InspectorOption,\n InspectorGroupDivider,\n InspectorSpacing,\n InspectorComponentSize,\n InspectorComponentVariant\n} from './inspector.types';\n\n@Component({\n selector: 'studio-inspector',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n IconComponent,\n InputComponent,\n CheckboxComponent,\n RadioButtonComponent,\n ColorPickerCompactComponent,\n SelectComponent,\n TextareaComponent,\n SwitchComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InspectorComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './inspector.component.html',\n styleUrl: './inspector.component.scss'\n})\nexport class InspectorComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n componentSize = input<InspectorComponentSize>('sm');\n componentVariant = input<InspectorComponentVariant>('outline');\n compact = input<boolean>(false);\n showIcons = input<boolean>(true);\n showDefaultIndicator = input<boolean>(true);\n\n collapsible = input<boolean>(true);\n expandedByDefault = input<boolean>(true);\n expandedSectionsInput = input<string[]>([], { alias: 'expandedSections' });\n\n showGroupLabels = input<boolean>(true);\n groupDivider = input<InspectorGroupDivider>('line');\n groupDividerSpacing = input<InspectorSpacing>('md');\n\n labelWidth = input<string>('auto');\n fullWidth = input<boolean>(true);\n spacing = input<InspectorSpacing>('md');\n\n sectionTemplate = input<TemplateRef<any> | undefined>(undefined);\n parameterTemplates = input<Record<string, TemplateRef<any>> | undefined>(undefined);\n\n ariaLabel = input<string>('Inspector panel');\n ariaDescribedBy = input<string | undefined>(undefined);\n\n sectionToggled = output<{ id: string; expanded: boolean }>();\n parameterFocused = output<{ componentId: string; parameterId: string }>();\n parameterBlurred = output<{ componentId: string; parameterId: string }>();\n\n protected values = signal<InspectorData | null>(null);\n protected expandedSections = signal<Set<string>>(new Set());\n\n private onChange: (value: InspectorData | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n this.expandedSections.set(new Set(inputSections));\n }\n });\n }\n\n protected hostClasses = computed(() => classNames(\n 'studio-inspector',\n this.compact() && 'studio-inspector--compact',\n `studio-inspector--spacing-${this.spacing()}`\n ));\n\n protected isSectionExpanded(componentId: string): boolean {\n return this.expandedSections().has(componentId);\n }\n\n protected toggleSection(componentId: string): void {\n if (!this.collapsible()) return;\n\n const expanded = new Set(this.expandedSections());\n\n if (expanded.has(componentId)) {\n expanded.delete(componentId);\n } else {\n expanded.add(componentId);\n }\n\n this.expandedSections.set(expanded);\n\n this.sectionToggled.emit({\n id: componentId,\n expanded: expanded.has(componentId)\n });\n }\n\n protected onParameterChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter) {\n parameter.value = newValue;\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onCheckboxChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n optionValue: any,\n checked: boolean\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter && parameter.type === 'checkbox') {\n const currentValues = Array.isArray(parameter.value) ? parameter.value : [];\n\n if (checked) {\n if (!currentValues.includes(optionValue)) {\n parameter.value = [...currentValues, optionValue];\n }\n } else {\n parameter.value = currentValues.filter(v => v !== optionValue);\n }\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onRadioChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n this.onParameterChange(componentId, groupId, parameterId, newValue);\n }\n\n protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string {\n return `${componentId}-${groupId || 'root'}-${parameterId}`;\n }\n\n protected isChecked(parameter: InspectorParameter, optionValue: any): boolean {\n if (parameter.type === 'checkbox') {\n return Array.isArray(parameter.value) && parameter.value.includes(optionValue);\n } else if (parameter.type === 'radio') {\n return parameter.value === optionValue;\n }\n return false;\n }\n\n protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.value === optionValue;\n }\n\n protected isDefault(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.default !== undefined && parameter.default === optionValue;\n }\n\n protected trackBySectionId(_: number, section: InspectorSection): string {\n return section.id;\n }\n\n protected trackByGroupId(_: number, group: { id: string }): string {\n return group.id;\n }\n\n protected trackByParameterId(_: number, param: InspectorParameter): string {\n return param.id;\n }\n\n protected trackByOptionValue(_: number, option: InspectorOption): any {\n return option.value;\n }\n\n writeValue(value: InspectorData | null): void {\n this.values.set(value);\n this.initializeExpandedSections();\n }\n\n registerOnChange(fn: (value: InspectorData | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_: boolean): void {}\n\n private initializeExpandedSections(): void {\n const expanded = new Set<string>();\n\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n inputSections.forEach(id => expanded.add(id));\n } else if (this.expandedByDefault()) {\n this.values()?.sections.forEach(c => {\n if (c.expanded !== false) {\n expanded.add(c.id);\n }\n });\n } else {\n this.values()?.sections.forEach(c => {\n if (c.expanded === true) {\n expanded.add(c.id);\n }\n });\n }\n\n this.expandedSections.set(expanded);\n }\n}\n","@if (values()) {\n <div class=\"studio-inspector__container\">\n @for (section of values()!.sections; track trackBySectionId($index, section)) {\n <div class=\"studio-inspector__section\"\n [class.studio-inspector__section--expanded]=\"isSectionExpanded(section.id)\"\n [class.studio-inspector__section--collapsed]=\"!isSectionExpanded(section.id)\">\n\n <studio-button\n variant=\"ghost\"\n [fullWidth]=\"true\"\n class=\"studio-inspector__section-header\"\n [class.studio-inspector__section-header--collapsible]=\"collapsible()\"\n [disabled]=\"!collapsible()\"\n [attr.aria-expanded]=\"isSectionExpanded(section.id)\"\n [attr.aria-controls]=\"'section-content-' + section.id\"\n (click)=\"toggleSection(section.id)\">\n\n @if (showIcons() && section.icon) {\n <studio-icon\n [name]=\"section.icon\"\n [size]=\"16\"\n class=\"studio-inspector__section-icon\"\n />\n }\n\n <span class=\"studio-inspector__section-title\">{{ section.title }}</span>\n\n @if (collapsible()) {\n <studio-icon\n [name]=\"'chevron-down'\"\n [size]=\"16\"\n class=\"studio-inspector__section-toggle\"\n />\n }\n </studio-button>\n\n @if (isSectionExpanded(section.id)) {\n <div\n class=\"studio-inspector__section-content\"\n [id]=\"'section-content-' + section.id\">\n\n @if (section.groups) {\n @for (group of section.groups; track trackByGroupId($index, group); let isLast = $last) {\n <div class=\"studio-inspector__group\">\n\n @if (showGroupLabels() && group.label) {\n <div class=\"studio-inspector__group-label\">{{ group.label }}</div>\n }\n\n @for (param of group.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + group.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, group.id, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, group.id, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, group.id, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n\n @if (!isLast && groupDivider() !== 'none') {\n <div class=\"studio-inspector__group-divider\"\n [class.studio-inspector__group-divider--line]=\"groupDivider() === 'line'\"\n [class.studio-inspector__group-divider--space]=\"groupDivider() === 'space'\">\n </div>\n }\n </div>\n }\n }\n\n @if (section.parameters) {\n @for (param of section.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, null, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, null, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, null, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, computed, inject } from '@angular/core';\nimport { SwitchComponent } from '../../primitives/switch';\nimport { IconComponent } from '../../primitives/icon';\nimport { StudioConfigService } from '../../config';\n\n/**\n * Theme toggle switch with sun/moon icons\n *\n * @example\n * <studio-theme-switch />\n * <studio-theme-switch [showLabel]=\"true\" />\n */\n@Component({\n selector: 'studio-theme-switch',\n standalone: true,\n imports: [SwitchComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"studio-theme-switch\">\n @if (iconOnly()) {\n <button\n type=\"button\"\n class=\"studio-theme-switch__button studio-theme-switch__button--{{ size() }}\"\n [attr.aria-label]=\"isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleTheme()\">\n @if (isDark()) {\n <studio-icon name=\"moon\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"sun\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n </button>\n } @else {\n <studio-switch\n [checked]=\"isDark()\"\n (checkedChange)=\"toggleTheme()\"\n [size]=\"size()\"\n [label]=\"showLabel() ? (isDark() ? 'Dark' : 'Light') : undefined\"\n labelPosition=\"left\">\n </studio-switch>\n }\n </div>\n `,\n styles: [`\n .studio-theme-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .studio-theme-switch__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: var(--studio-text-secondary);\n cursor: pointer;\n border-radius: var(--studio-radius-md);\n transition: background-color var(--studio-transition-fast),\n color var(--studio-transition-fast);\n padding: var(--studio-spacing-xs);\n }\n\n .studio-theme-switch__button:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n .studio-theme-switch__button:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n .studio-theme-switch__button--sm {\n width: 2rem;\n height: 2rem;\n }\n\n .studio-theme-switch__button--md {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n .studio-theme-switch__button--lg {\n width: 3rem;\n height: 3rem;\n }\n `]\n})\nexport class ThemeSwitchComponent {\n private readonly configService = inject(StudioConfigService);\n\n size = input<'sm' | 'md' | 'lg'>('md');\n showLabel = input<boolean>(false);\n iconOnly = input<boolean>(true);\n\n protected isDark = computed(() => this.configService.themeMode() === 'dark');\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected toggleTheme(): void {\n this.configService.toggleTheme();\n }\n}\n","/**\n * Theme switch component\n */\n\nexport * from './theme-switch.component';\n","/**\n * Composites (Molecules + Organisms)\n * Complex components built from primitives\n */\n\nexport * from './button-toggle-group';\nexport * from './inspector';\nexport * from './theme-switch';\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\nexport {};\n","import { MaskConfig, MaskToken, MaskResult } from './mask.types';\n\nexport class MaskEngine {\n private readonly tokens: MaskToken[];\n private readonly patterns = {\n '9': /\\d/,\n 'A': /[a-zA-Zа-яА-Я]/,\n '*': /[a-zA-Z0-9]/,\n '#': /./,\n 'X': /[a-zA-Z0-9а-яА-Я]/,\n } as const;\n\n constructor(private readonly config: MaskConfig) {\n this.tokens = this.parsePattern(config.pattern);\n }\n\n process(value: string, cursorPos?: number): MaskResult {\n if (!value) {\n return {\n value: '',\n raw: '',\n cursor: 0,\n isComplete: false\n };\n }\n\n const cleaned = this.extractRaw(value);\n const formatted = this.applyMask(cleaned);\n const newCursor = cursorPos !== undefined\n ? this.calculateCursor(cursorPos, value, formatted)\n : formatted.length;\n\n const displayValue = this.config.guide && this.config.showOnFocus\n ? this.applyGuide(formatted)\n : formatted;\n\n return {\n value: displayValue,\n raw: cleaned,\n cursor: newCursor,\n isComplete: this.checkComplete(cleaned)\n };\n }\n\n getPlaceholder(): string {\n if (!this.tokens || this.tokens.length === 0) return '';\n\n return this.tokens\n .map(token => {\n if (token.type === 'static' && token.char) return token.char;\n return this.config.placeholder || '_';\n })\n .join('');\n }\n\n private parsePattern(pattern: string): MaskToken[] {\n const tokens: MaskToken[] = [];\n let i = 0;\n\n while (i < pattern.length) {\n const char = pattern[i];\n\n if (char === '\\\\' && i + 1 < pattern.length) {\n tokens.push({\n type: 'static',\n char: pattern[i + 1]\n });\n i += 2;\n continue;\n }\n\n if (char === '?' && tokens.length > 0) {\n tokens[tokens.length - 1].optional = true;\n i++;\n continue;\n }\n\n if (char in this.patterns) {\n tokens.push({\n type: this.getTokenType(char),\n pattern: this.patterns[char as keyof typeof this.patterns]\n });\n i++;\n } else {\n tokens.push({\n type: 'static',\n char\n });\n i++;\n }\n }\n\n return tokens;\n }\n\n private getTokenType(char: string): MaskToken['type'] {\n const typeMap: Record<string, MaskToken['type']> = {\n '9': 'digit',\n 'A': 'letter',\n '*': 'alphanumeric',\n '#': 'any',\n 'X': 'mixed'\n };\n return typeMap[char] || 'any';\n }\n\n private applyMask(raw: string): string {\n if (!raw || !this.tokens) return '';\n\n let result = '';\n let rawIndex = 0;\n\n for (const token of this.tokens) {\n if (rawIndex >= raw.length) {\n break;\n }\n\n if (token.type === 'static' && token.char) {\n result += token.char;\n if (raw[rawIndex] === token.char) {\n rawIndex++;\n }\n } else {\n const char = raw[rawIndex];\n if (token.pattern?.test(char)) {\n result += char;\n rawIndex++;\n } else if (!token.optional) {\n break;\n }\n }\n }\n\n return result;\n }\n\n private extractRaw(value: string): string {\n if (!value || !this.tokens) return '';\n\n const staticChars = this.tokens\n .filter(t => t.type === 'static' && t.char)\n .map(t => t.char!)\n .filter(Boolean);\n\n return value\n .split('')\n .filter(char => !staticChars.includes(char))\n .join('');\n }\n\n private applyGuide(value: string): string {\n if (!this.tokens || this.tokens.length === 0) return value;\n\n const placeholder = this.config.placeholder || '_';\n let result = value;\n const currentLength = value.replace(/[^a-zA-Z0-9а-яА-Я]/g, '').length;\n\n let addedCount = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const token = this.tokens[i];\n\n if (addedCount >= currentLength) {\n if (token.type === 'static' && token.char) {\n result += token.char;\n } else {\n result += placeholder;\n addedCount++;\n }\n }\n }\n\n return result;\n }\n\n private calculateCursor(\n oldCursor: number,\n oldValue: string,\n newValue: string\n ): number {\n const diff = newValue.length - oldValue.length;\n let newCursor = oldCursor + diff;\n\n while (newCursor < newValue.length) {\n const charAtCursor = newValue[newCursor];\n const isStatic = this.tokens.some(\n (t, i) => t.type === 'static' && t.char === charAtCursor && i === newCursor\n );\n\n if (!isStatic) break;\n newCursor++;\n }\n\n return Math.max(0, Math.min(newValue.length, newCursor));\n }\n\n private checkComplete(raw: string): boolean {\n const requiredTokens = this.tokens.filter(\n t => t.type !== 'static' && !t.optional\n );\n return raw.length >= requiredTokens.length;\n }\n}\n","import { MaskConfig, MaskPreset } from './mask.types';\n\nexport const MASK_PRESETS: Record<MaskPreset, MaskConfig> = {\n 'phone': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-ru': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-kz': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'date': {\n pattern: '99.99.9999',\n placeholder: '_',\n guide: true\n },\n 'datetime': {\n pattern: '99.99.9999 99:99',\n placeholder: '_',\n guide: true\n },\n 'time': {\n pattern: '99:99',\n placeholder: '_',\n guide: true\n },\n 'card': {\n pattern: '9999 9999 9999 9999',\n placeholder: 'X',\n guide: true\n },\n 'inn': {\n pattern: '999999999999',\n placeholder: '_',\n guide: false\n },\n 'snils': {\n pattern: '999-999-999 99',\n placeholder: '_',\n guide: true\n },\n 'passport-ru': {\n pattern: '99 99 999999',\n placeholder: '_',\n guide: true\n }\n};\n","import {\n Directive,\n input,\n effect,\n inject,\n DestroyRef,\n ElementRef,\n Renderer2,\n HostListener,\n forwardRef,\n computed,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MaskEngine } from './mask-engine';\nimport { MaskConfig, MaskPreset } from './mask.types';\nimport { MASK_PRESETS } from './mask-presets';\n\n@Directive({\n selector: 'input[studioMask]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n }\n ],\n host: {\n '[attr.data-mask-complete]': 'isComplete()',\n '[attr.data-mask-active]': 'isActive()'\n }\n})\nexport class MaskDirective implements Validator {\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly mask = input<string | MaskPreset, string>('', {\n alias: 'studioMask',\n transform: (value: string | MaskPreset) => {\n if (!value) return '';\n if (value in MASK_PRESETS) {\n return MASK_PRESETS[value as MaskPreset].pattern;\n }\n return value;\n }\n });\n\n readonly maskPlaceholder = input<string>('_');\n readonly maskGuide = input<boolean>(true);\n readonly maskShowOnHover = input<boolean>(false);\n readonly maskShowOnFocus = input<boolean>(true);\n readonly maskClearIncomplete = input<boolean>(false);\n readonly maskAutoUnmask = input<boolean>(false);\n\n private readonly config = computed<MaskConfig>(() => ({\n pattern: this.mask(),\n placeholder: this.maskPlaceholder(),\n guide: this.maskGuide(),\n showOnHover: this.maskShowOnHover(),\n showOnFocus: this.maskShowOnFocus(),\n clearIncomplete: this.maskClearIncomplete(),\n autoUnmask: this.maskAutoUnmask()\n }));\n\n private readonly engine = signal<MaskEngine | null>(null);\n\n readonly isComplete = signal(false);\n readonly isActive = signal(false);\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const maskPattern = this.mask();\n if (!maskPattern) return;\n\n const cfg = this.config();\n const newEngine = new MaskEngine(cfg);\n this.engine.set(newEngine);\n this.updatePlaceholder();\n });\n }\n\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const result = eng.process(element.value, cursorPos);\n\n if (element.value !== result.value) {\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n }\n\n this.isComplete.set(result.isComplete);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isActive.set(true);\n\n if (this.maskShowOnFocus() && this.maskGuide()) {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n if (!element.value) {\n const result = eng.process('', 0);\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(0, 0);\n }\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isActive.set(false);\n this.onTouched();\n\n if (this.maskClearIncomplete() && !this.isComplete()) {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.onChange('');\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const eng = this.engine();\n if (!eng) return;\n\n const pastedText = event.clipboardData?.getData('text') || '';\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const currentValue = element.value;\n const before = currentValue.slice(0, cursorPos);\n const after = currentValue.slice(element.selectionEnd ?? cursorPos);\n const newValue = before + pastedText + after;\n\n const result = eng.process(newValue, cursorPos + pastedText.length);\n\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n writeValue(value: string): void {\n const eng = this.engine();\n if (!eng) return;\n\n if (value) {\n const result = eng.process(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', result.value);\n this.isComplete.set(result.isComplete);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.isComplete.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const complete = this.isComplete();\n return complete ? null : { maskIncomplete: { value: control.value } };\n }\n\n private updatePlaceholder(): void {\n if (!this.maskShowOnFocus()) return;\n\n const eng = this.engine();\n if (!eng) return;\n\n try {\n const placeholderText = eng.getPlaceholder();\n if (placeholderText) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'placeholder',\n placeholderText\n );\n }\n } catch (e) {\n console.warn('Failed to update placeholder:', e);\n }\n }\n}\n","/**\n * Public API Surface of @eduboxpro/studio\n */\n\n/* ========================================\n * Configuration\n * ======================================== */\nexport * from './lib/config';\n\n/* ========================================\n * Components\n * ======================================== */\nexport * from './lib/primitives';\nexport * from './lib/composites';\nexport * from './lib/education';\n\n/* ========================================\n * Directives\n * ======================================== */\nexport * from './lib/directives';\n\n/* ========================================\n * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","DOCUMENT","floatingOffset","floatingArrow"],"mappings":";;;;;;;;;;;;;AA4ZA;;AAEG;MACU,aAAa,GAAG,IAAI,cAAc,CAAe,eAAe,EAAE;AAC7E,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO,EAAE;AACnB,CAAA;;AClaD;;AAEG;AAEH;;;;;;;;;AASG;SACa,cAAc,CAC5B,UAAkB,EAClB,UAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACxC,UAA+D,MAAM,EAAA;AAErE,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;AAEA,IAAA,MAAM,MAAM,GAAG,CAAA,YAAA,EAAe,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AAC7E,IAAA,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACnC;IACF;IAEA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAClD,IAAA,WAAW,CAAC,GAAG,GAAG,YAAY;AAC9B,IAAA,WAAW,CAAC,IAAI,GAAG,8BAA8B;IAEjD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAClD,IAAA,WAAW,CAAC,GAAG,GAAG,YAAY;AAC9B,IAAA,WAAW,CAAC,IAAI,GAAG,2BAA2B;AAC9C,IAAA,WAAW,CAAC,WAAW,GAAG,WAAW;IAErC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,IAAA,QAAQ,CAAC,EAAE,GAAG,MAAM;AACpB,IAAA,QAAQ,CAAC,GAAG,GAAG,YAAY;IAE3B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,IAAA,QAAQ,CAAC,IAAI,GAAG,CAAA,yCAAA,EAA4C,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,MAAA,EAAS,YAAY,CAAA,SAAA,EAAY,OAAO,EAAE;AAErI,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oCAAoC,CAAC,EAAE;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;IAC/B;AACA,IAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC5B;AAEA;;;;;;;;;AASG;AACG,SAAU,eAAe,CAAC,KAI9B,EAAA;AACA,IAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,QAAA,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AACzD,IAAA,CAAC,CAAC;AACJ;;MChEa,mBAAmB,CAAA;AACb,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEnC,IAAA,MAAM,GAAG,MAAM,CAAe,EAAE,kDAAC;AACjC,IAAA,SAAS,GAAG,MAAM,CAAY,OAAO,qDAAC;AAE/C,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,MAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACtC;IACF;AAEA,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;IAChE;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AAC/D,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAC5B;AAEA,IAAA,WAAW,CAAC,KAAiC,EAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK;AACzB,YAAA,GAAG,GAAG;YACN,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK;AAChC,SAAA,CAAC,CAAC;IACL;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAC5B;AAEQ,IAAA,UAAU,CAAC,KAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAE1C,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QAC3C;AAEA,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;;AAEpB,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE;AAChC,gBAAA,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;YAC/C;AAEA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;YAC7E;AACA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzE;AACA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;YACvE;AACA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;YAC3E;AACA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;YAC3E;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;QACzD;AAEA,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;QAC7D;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC;QACxD;AAEA,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,WAAW,CAAC;QAChE;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QAC5C;IACF;IAEQ,gBAAgB,CACtB,IAAiB,EACjB,MAAgD,EAAA;AAEhD,QAAA,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU;AAE5F,QAAA,WAAW,CAAC,OAAO,CAAC,SAAS,IAAG;AAC9B,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,UAAU;gBAAE;AAEjB,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,EAAE,UAAU,CAAC;YAC7D;iBAAO;gBACL,MAAM,MAAM,GAAG,UAAyB;AACxC,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC9D;AACA,gBAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,MAAA,CAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;gBACrE;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,OAAA,CAAS,EAAE,MAAM,CAAC,MAAM,CAAC;gBACvE;AACA,gBAAA,IAAI,MAAM,CAAC,EAAE,EAAE;AACb,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,GAAA,CAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC/D;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,MAAM,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;QAChD;AAEA,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC;QACpD;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;QACxD;IACF;IAEQ,iBAAiB,CACvB,IAAiB,EACjB,MAAgD,EAAA;AAEhD,QAAA,MAAM,SAAS,GAA2B;AACxC,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,aAAa,EAAE,gBAAgB;AAC/B,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE;SACV;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG;AACpC,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,WAAA,EAAc,MAAM,CAAA,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,WAAW,CACjB,IAAiB,EACjB,MAAc,EACd,MAAuC,EAAA;AAEvC,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D;AACF,QAAA,CAAC,CAAC;IACJ;wGAxKW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACDlC;;;;;;;;;;;;;;;;;;;;;AAqBG;AACG,SAAU,mBAAmB,CAAC,MAAA,GAAuB,EAAE,EAAA;AAC3D,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAK;AACb,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChD,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,gBAAA,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC;YACvC;AACD;AACF,KAAA,CAAC;AACJ;;AC1CA;;;AAGG;;ACAH;;;;;AAKG;MA+BU,aAAa,CAAA;AACxB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAU;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,IAAA,KAAK,GAAG,KAAK,CAAiF,SAAS,iDAAC;AACxG,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,uDAAC;AAC9B,IAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,+DAAC;AAC3C,IAAA,YAAY,GAAG,KAAK,CAAU,IAAI,wDAAC;AACnC,IAAA,YAAY,GAAG,KAAK,CAAS,aAAa,wDAAC;IAExB,KAAK,GAAG,KAAK;AAEtB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;AAE5B,QAAA,IAAI,QAAQ,IAAK,KAAa,CAAC,QAAQ,CAAC,EAAE;AACxC,YAAA,OAAO,QAAQ;QACjB;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACvD,QAAA,IAAI,cAAc,IAAK,KAAa,CAAC,cAAc,CAAC,EAAE;AACpD,YAAA,OAAO,cAAc;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,IAAK,KAAa,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,OAAO,QAAQ;YACjB;YACA,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC3D,YAAA,IAAI,kBAAkB,IAAK,KAAa,CAAC,kBAAkB,CAAC,EAAE;AAC5D,gBAAA,OAAO,kBAAkB;YAC3B;QACF;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,sDAAC;AAEM,IAAA,iBAAiB,CAAC,GAAW,EAAA;AACnC,QAAA,OAAO;aACJ,KAAK,CAAC,GAAG;aACT,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACxD,IAAI,CAAC,EAAE,CAAC;IACb;AAEU,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAE/B,QAAA,MAAM,QAAQ,GAA2B;AACvC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,SAAS,EAAE;SACZ;AAED,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU;AAC3C,IAAA,CAAC,yDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,OAAO,CAAC,aAAa,CAAC;AACxB,IAAA,CAAC,uDAAC;wGA7DS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBd;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,WAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA2BlB,aAAa,EAAA,UAAA,EAAA,CAAA;kBA9BzB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,CAAC,EAAA,eAAA,EACb,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,mBAAmB,EAAE,QAAQ;qBAC9B,EAAA,QAAA,EACS;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA;;;AClBH;AACA,MAAM,aAAa,GAAG;IACpB,CAAC,EAAE,WAAW,CAAC,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;CAC3B;AAED;AACA,MAAM,YAAY,GAAG;AACnB,IAAA,GAAG,aAAa;IAChB,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,GAAG,EAAE,WAAW,CAAC,GAAG;IACpB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,GAAG,EAAE,WAAW,CAAC,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,aAAa,EAAE,WAAW,CAAC,aAAa;IACxC,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;IAClD,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,GAAG,EAAE,WAAW,CAAC,GAAG;IACpB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,eAAe,EAAE,WAAW,CAAC,eAAe;IAC5C,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;IAC9C,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,aAAa,EAAE,WAAW,CAAC,aAAa;IACxC,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,aAAa,EAAE,WAAW,CAAC,aAAa;IACxC,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,MAAM,EAAE,WAAW,CAAC,MAAM;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;AACG,SAAU,kBAAkB,CAAC,MAAA,GAA2B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAA;AAChF,IAAA,IAAI,KAA0B;AAE9B,IAAA,QAAQ,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,SAAS;YACZ,KAAK,GAAG,aAAa;YACrB;AACF,QAAA,KAAK,MAAM;;AAET,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW;iBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpE,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;gBACnB,GAAG,CAAC,GAAG,CAAC,GAAI,WAAmB,CAAC,GAAG,CAAC;AACpC,gBAAA,OAAO,GAAG;YACZ,CAAC,EAAE,EAAyB,CAAC;YAC/B;AACF,QAAA,KAAK,QAAQ;AACb,QAAA;YACE,KAAK,GAAG,YAAY;YACpB;;;AAIJ,IAAA,IAAI,MAAM,CAAC,WAAW,EAAE;QACtB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE;IAC7C;AAEA,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,IAAI,kBAAkB,CAAC,KAAK;AACvC;AACF,KAAA,CAAC;AACJ;;ACxJA;;;;;;;;;;;;AAYG;AACG,SAAU,SAAS,CAAC,GAAW,EAAA;IACnC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD,QAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC1D;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF;AAEA;;;;;;;;;;;AAWG;AACG,SAAU,WAAW,CAAC,GAAW,EAAA;AACrC,IAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,GAAG,CAAA,CAAE,CAAC;AACnD,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,OAAO,GAAG;AACZ;;AC5CA;;;;;;;;;;;;AAYG;AACG,SAAU,UAAU,CAAC,GAAG,OAA8C,EAAA;IAC1E,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C;;ACbA;;;;;;;;;;;;;;;;;;;;;;AAsBG;SACa,iBAAiB,CAC/B,WAAkC,EAClC,YAAmC,EACnC,YAAe,EAAA;IAEf,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,UAAU,GAAG,WAAW,EAAE;QAChC,IAAI,UAAU,KAAK,SAAS;AAAE,YAAA,OAAO,UAAU;AAE/C,QAAA,MAAM,WAAW,GAAG,YAAY,EAAE;QAClC,IAAI,WAAW,KAAK,SAAS;AAAE,YAAA,OAAO,WAAW;AAEjD,QAAA,OAAO,YAAY;AACrB,IAAA,CAAC,CAAC;AACJ;;ACvCA;;;;AAIG;;MCmDU,cAAc,CAAA;AACR,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,yDAAC;AAE9F,IAAA,YAAY,GAAG,KAAK,CAA2B,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AAC/E,IAAA,SAAS,GAAG,KAAK,CAAwB,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACtE,IAAA,UAAU,GAAG,KAAK,CAAyB,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACzE,IAAA,WAAW,GAAG,KAAK,CAA0B,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;IAE5E,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACtG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC1F,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAElG,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,YAAY,GAAG,KAAK,CAAoB,MAAM,wDAAC;AAE/C,IAAA,GAAG,GAAG,KAAK,CAAU,KAAK,+CAAC;IAC3B,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAc;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IACjC,OAAO,GAAG,MAAM,EAAQ;IAExB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,MAAM,GAAG,KAAK,CAA0C,OAAO,kDAAC;AAChE,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,OAAO,GAAG,MAAM,EAAc;IAE9B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IAChC,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACrB,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,oDAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;AAE5B,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAC7B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AAEvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oDAAC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,EAAE;AAEhD,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;AAEhE,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,EAAE;AAE/C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;YACzB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,MAAM,EAAE;gBAC3C,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG;YACrB;AAEA,YAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;QAC1B;AAEA,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;AACvB,IAAA,CAAC,wDAAC;AAEQ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AACrC,YAAA,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACtD,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,qDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,cAAc,EACd,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EACjC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC9B,iBAAiB,IAAI,CAAC,KAAK,EAAE,EAAE,EAC/B,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,EACvC,IAAI,CAAC,QAAQ,EAAE,IAAI,wBAAwB,EAC3C,IAAI,CAAC,SAAS,EAAE,IAAI,yBAAyB,EAC7C,IAAI,CAAC,IAAI,EAAE,IAAI,oBAAoB,EACnC,IAAI,CAAC,KAAK,EAAE,IAAI,qBAAqB,EACrC,IAAI,CAAC,IAAI,EAAE,IAAI,yBAAyB,CACzC,uDAAC;AAEQ,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;QACvB,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,OAAO,KAAK,GAAG,EAAE;gBACnB;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC;YACvD;iBAAO;AACL,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEU,IAAA,YAAY,CAAC,KAAiB,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QAEvB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;wGAvHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,oEAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ygMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3CS,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8CZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjD1B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,eAAe,EAAE,0BAA0B;AAC3C,wBAAA,YAAY,EAAE,gEAAgE;AAC9E,wBAAA,iBAAiB,EAAE,6BAA6B;AAChD,wBAAA,SAAS,EAAE;qBACZ,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ygMAAA,CAAA,EAAA;;;ACpDH;;AAEG;;ACFH;;AAEG;;ACQH;;;;;;;;;AASG;MAYU,qBAAqB,CAAA;;IAEhC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;IAChC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAGzB,IAAA,OAAO,GAAG,KAAK,CAAe,OAAO,mDAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAAa,OAAO,iDAAC;AAClC,IAAA,IAAI,GAAG,KAAK,CAAmB,IAAI,gDAAC;;AAGpC,IAAA,QAAQ,GAAG,KAAK,CAAuB,WAAW,oDAAC;;AAGnD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,+CAAC;AACvB,IAAA,GAAG,GAAG,KAAK,CAAU,KAAK,+CAAC;AAC3B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGf,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,CAAC,sBAAsB,CAAC;QAExC,OAAO,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QAEpD,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC;QACjE,IAAI,IAAI,CAAC,GAAG,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAE5C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,uDAAC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;AAEzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,SAAS;AAE3D,QAAA,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAExE,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,SAAS;AAExD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,IAAI,QAAQ,GAAG,GAAG;YAAE,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;AAEpC,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;AACzB,IAAA,CAAC,wDAAC;AAEQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACxC,IAAI,IAAI,CAAC,GAAG,EAAE;AAAE,YAAA,OAAO,IAAI;AAC3B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS;AAC1C,IAAA,CAAC,2DAAC;wGAvDS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BlC,sTAcA,EAAA,MAAA,EAAA,CAAA,gwCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSY,YAAY,+BAAE,cAAc,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQ3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,eAAA,EACtB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,QAAA,EAAA,sTAAA,EAAA,MAAA,EAAA,CAAA,gwCAAA,CAAA,EAAA;;;AEtBH;;;;;;;AAOG;MAkDU,eAAe,CAAA;AACT,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,0DAAC;AAEhG,IAAA,YAAY,GAAG,KAAK,CAA4C,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AAChG,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC/E,IAAA,UAAU,GAAG,KAAK,CAAwE,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACxH,IAAA,WAAW,GAAG,KAAK,CAA0D,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;AAC5G,IAAA,WAAW,GAAG,KAAK,CAA0C,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;AAC5F,IAAA,YAAY,GAAG,KAAK,CAAsB,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;IAE1E,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACvG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC3F,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IACnG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;IACjG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IACnG,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;AAErG,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,WAAW,GAAG,KAAK,CAAS,YAAY,uDAAC;AACzC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,gDAAC;IACrD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,YAAY,GAAG,KAAK,CAA4B,MAAM,wDAAC;IACvD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,MAAM,GAAG,KAAK,CAA0C,OAAO,kDAAC;IAChE,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;AAChC,IAAA,UAAU,GAAG,KAAK,CAAkC,OAAO,sDAAC;IAC5D,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAE3B,OAAO,GAAG,MAAM,EAAc;AAEpB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,eAAe,EACf,kBAAkB,IAAI,CAAC,OAAO,EAAE,EAAE,EAClC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC/B,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAChC,CAAA,sBAAA,EAAyB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,EACxC,CAAA,sBAAA,EAAyB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,EACxC,IAAI,CAAC,OAAO,EAAE,IAAI,wBAAwB,EAC1C,IAAI,CAAC,SAAS,EAAE,IAAI,qBAAqB,EACzC,IAAI,CAAC,OAAO,EAAE,IAAI,wBAAwB,EAC1C,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,IAAI,0BAA0B,CAC7D,uDAAC;AAEQ,IAAA,WAAW,CAAC,KAAiB,EAAA;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACrC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;QACvB,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;YAChC,IAAI,OAAO,KAAK,GAAG;gBAAE;AAErB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC;YACvD;iBAAO;AACL,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;wGAxEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,oEAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,26OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3CS,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8CZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjD3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,qCAAqC;AACxD,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,eAAe,EAAE,0BAA0B;AAC3C,wBAAA,YAAY,EAAE,gEAAgE;AAC9E,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,SAAS,EAAE;qBACZ,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,26OAAA,CAAA,EAAA;;;AC3DH;;AAEG;;MCeU,oBAAoB,CAAA;AACd,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,yDAAC;AAEpG,IAAA,gBAAgB,GAAG,KAAK,CAAwC,SAAS,oDAAI,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CAAtB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAC;AACpG,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC/E,IAAA,YAAY,GAAG,KAAK,CAA4C,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AAChG,IAAA,UAAU,GAAG,KAAK,CAAwE,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACxH,IAAA,WAAW,GAAG,KAAK,CAA0D,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;IAE5G,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC;IACvH,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAC/F,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IACxG,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC;AAErG,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAqC,IAAI,mDAAC;AACzD,IAAA,KAAK,GAAG,KAAK,CAAyC,OAAO,iDAAC;IAC9D,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAS,OAAO,gDAAC;IAEnB,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,qBAAqB,EACrB,CAAA,qBAAA,EAAwB,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,EAC5C,CAAA,6BAAA,EAAgC,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAChD,CAAA,2BAAA,EAA8B,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAC5C,IAAI,CAAC,QAAQ,EAAE,IAAI,+BAA+B,EAClD,IAAI,CAAC,SAAS,EAAE,IAAI,2BAA2B,EAC/C,IAAI,CAAC,QAAQ,EAAE,IAAI,+BAA+B,CACnD,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;YAChE,MAAM,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAEpE,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;AACzC,gBAAA,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC;AAClD,gBAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM;gBAEpC,IAAI,UAAU,EAAE;AACd,oBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,qCAAqC,CAAC;AAC7D,oBAAA,IAAI,OAAO;AAAE,wBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kCAAkC,CAAC;AACvE,oBAAA,IAAI,MAAM;AAAE,wBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC;AACrE,oBAAA,IAAI,QAAQ;AAAE,wBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,mCAAmC,CAAC;gBAC3E;qBAAO;AACL,oBAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC;AAChE,oBAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC;AAC7D,oBAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,CAAC;AAC5D,oBAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC;gBAChE;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;wGA3DW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+tDAHrB,CAAA,qCAAA,CAAuC,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mpGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGtC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EACS,CAAA,qCAAA,CAAuC,EAAA,MAAA,EAAA,CAAA,mpGAAA,CAAA,EAAA;;;ACTnD;;;;;;;;;AASG;MAoBU,iBAAiB,CAAA;AACX,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,4DAAC;;;;AAMpG;;AAEG;AACH,IAAA,IAAI,GAAG,KAAK,CACV,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AAED;;AAEG;AACH,IAAA,KAAK,GAAG,KAAK,CACX,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5C;AAED;;AAEG;AACH,IAAA,OAAO,GAAG,KAAK,CACb,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC9C;AAED;;AAEG;AACH,IAAA,MAAM,GAAG,KAAK,CACZ,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxC;;;;AAMD;;AAEG;IACH,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEvB;;AAEG;AACH,IAAA,aAAa,GAAG,KAAK,CACnB,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAClD;AAED;;AAEG;IACH,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE7B;;AAEG;IACH,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;;AAMtB;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;AACH,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAE7B;;AAEG;IACH,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;;AAM9B;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;AACH,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AAErC;;AAEG;IACH,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEtB;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;AAE3B;;AAEG;IACH,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;;;;AAMpB;;AAEG;IACH,OAAO,GAAG,MAAM,EAAW;;;;AAM3B;;AAEG;AACO,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAEzC;;AAEG;AACO,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEnC;;AAEG;IACO,UAAU,GAAG,MAAM,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;;AAM3F;;AAEG;AACO,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACtC,QAAA,yBAAyB,EAAE,IAAI;QAC/B,CAAC,CAAA,yBAAA,EAA4B,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;AACjD,QAAA,mCAAmC,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpD,QAAA,gCAAgC,EAAE,IAAI,CAAC,KAAK,EAAE;AAC9C,QAAA,kCAAkC,EAAE,IAAI,CAAC,SAAS,EAAE;AACpD,QAAA,qCAAqC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;AACjE,KAAA,CAAC,uDAAC;AAEH;;AAEG;AACO,IAAA,eAAe,GAAG,QAAQ,CAAC,OAAO;AAC1C,QAAA,iBAAiB,EAAE,IAAI;QACvB,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;QACzC,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,GAAG,IAAI;QAC1C,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,GAAG,IAAI;QAC5C,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,GAAG,IAAI;AAClD,QAAA,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE;AAClD,QAAA,gCAAgC,EAAE,IAAI,CAAC,aAAa,EAAE;AACtD,QAAA,2BAA2B,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5C,QAAA,wBAAwB,EAAE,IAAI,CAAC,KAAK;AACrC,KAAA,CAAC,2DAAC;AAEH;;AAEG;AACO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,qDAAC;AAEzE;;AAEG;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,oDAAC;AAEjE;;AAEG;AACO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,OAAO;AACxC,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,GAAG,OAAO;AAClD,IAAA,CAAC,uDAAC;;;;AAMM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IAC1C;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;IAEpC;;;;AAMA;;AAEG;AACO,IAAA,YAAY,CAAC,KAAY,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AAC3D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7B;AAEA;;AAEG;IACO,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;AAEA;;AAEG;IACO,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;AAEG;AACO,IAAA,gBAAgB,CAAC,KAAY,EAAA;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;wGAhQW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,84EAbjB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;aACR,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBJ,kqFAuGA,EAAA,MAAA,EAAA,CAAA,ijOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrFY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,aAGZ,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,kqFAAA,EAAA,MAAA,EAAA,CAAA,ijOAAA,CAAA,EAAA;;;ME9BU,cAAc,CAAA;IACzB,OAAO,QAAQ,CAAC,GAAW,EAAA;QACzB,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC;QACpE,OAAO,MAAM,GAAG;YACd,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;SAC1B,GAAG,IAAI;IACV;AAEA,IAAA,OAAO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;QAC7C,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;aAClB,GAAG,CAAC,CAAC,IAAG;AACP,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACtC,YAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3C,QAAA,CAAC;aACA,IAAI,CAAC,EAAE,CAAC;IACb;AAEA,IAAA,OAAO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;QAC7C,CAAC,IAAI,GAAG;QACR,CAAC,IAAI,GAAG;QACR,CAAC,IAAI,GAAG;AAER,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAEzB,QAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,YAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG;YACnB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;YAEnD,QAAQ,GAAG;AACT,gBAAA,KAAK,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAAE;AACjD,gBAAA,KAAK,CAAC;AAAE,oBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE;AACnC,gBAAA,KAAK,CAAC;AAAE,oBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE;;QAEvC;QAEA,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG;SACtB;IACH;AAEA,IAAA,OAAO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAC7C,QAAA,CAAC,GAAG,CAAC,GAAG,GAAG;AACX,QAAA,CAAC,GAAG,CAAC,GAAG,GAAG;AACX,QAAA,CAAC,GAAG,CAAC,GAAG,GAAG;AAEX,QAAA,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAEX,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACf;aAAO;YACL,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAI;gBAClD,IAAI,CAAC,GAAG,CAAC;oBAAE,CAAC,IAAI,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC;oBAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAC,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAC,CAAC;AAAE,oBAAA,OAAO,CAAC;AACrB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAC,CAAC;AAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC/C,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAEnB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;YAC1B,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QAC5B;QAEA,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG;SACtB;IACH;AAEA,IAAA,OAAO,MAAM,CAAC,KAAiB,EAAE,MAAmB,EAAA;QAClD,QAAQ,MAAM;AACZ,YAAA,KAAK,KAAK;gBACR,OAAO,KAAK,CAAC,GAAG;AAClB,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;oBACnB,OAAO,CAAA,KAAA,EAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAA,CAAA,CAAG;gBAC/E;AACA,gBAAA,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG;AAC9D,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;oBACnB,OAAO,CAAA,KAAA,EAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,GAAA,EAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAA,CAAA,CAAG;gBACjF;AACA,gBAAA,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;AAChE,YAAA;gBACE,OAAO,KAAK,CAAC,GAAG;;IAEtB;IAEA,OAAO,KAAK,CAAC,WAAmB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE;QAElC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,IAAI;YAErB,OAAO;gBACL,GAAG;gBACH,GAAG;AACH,gBAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC,gBAAA,KAAK,EAAE;aACR;QACH;QAEA,MAAM,QAAQ,GAAG,sDAAsD,CAAC,IAAI,CAAC,OAAO,CAAC;QACrF,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAEvD,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,gBAAA,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBAChB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3B;aACD;QACH;QAEA,MAAM,QAAQ,GAAG,0DAA0D,CAAC,IAAI,CAAC,OAAO,CAAC;QACzF,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAEvD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAElC,OAAO;AACL,gBAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvC,GAAG;AACH,gBAAA,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBAChB;aACD;QACH;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,OAAO,CAAC,WAAmB,EAAA;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI;IACzC;AACD;;AC3JM,MAAM,qBAAqB,GAAuB;AACvD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,MAAM,EAAE;AACN,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;AACxC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;AAClC;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,MAAM,EAAE;YACN,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS;AACnB;AACF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,MAAM,EAAE;YACN,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS,EAAE;YACpB,EAAE,KAAK,EAAE,SAAS;AACnB;AACF;;;MCMU,oBAAoB,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,0DAAC;AAElF,IAAA,eAAe,GAAG,SAAS,CAAgC,WAAW,2DAAC;AAE1F,IAAA,YAAY,GAAG,KAAK,CAAiC,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AACrF,IAAA,SAAS,GAAG,KAAK,CAA8B,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;IAE5E,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;IACxG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAE3F,IAAA,MAAM,GAAG,KAAK,CAAc,KAAK,kDAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;AAClC,IAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,4DAAC;AACvC,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;IAErC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsC;AAErD,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAC7B,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACnD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAEhC,WAAW,GAAG,MAAM,EAAU;IAC9B,gBAAgB,GAAG,MAAM,EAAc;IACvC,MAAM,GAAG,MAAM,EAAU;IAEf,YAAY,GAAG,MAAM,CAAa,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACnE,IAAA,GAAG,GAAG,MAAM,CAAC,CAAC,+CAAC;AACf,IAAA,UAAU,GAAG,MAAM,CAAC,GAAG,sDAAC;AACxB,IAAA,SAAS,GAAG,MAAM,CAAC,EAAE,qDAAC;AACtB,IAAA,KAAK,GAAG,MAAM,CAAC,CAAC,iDAAC;AACjB,IAAA,aAAa,GAAG,MAAM,CAAc,KAAK,yDAAC;AAE1C,IAAA,WAAW,GAAG,CAAA,oBAAA,EAAuB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAEhF,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAChC,UAAU,GAAG,KAAK;AAE1B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACvC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;IACxB;AAEU,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3D,IAAA,CAAC,wDAAC;AAEQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7B,QAAA,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,qBAAqB;AACrE,IAAA,CAAC,4DAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,qBAAqB,EACrB,wBAAwB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EACxC,CAAA,qBAAA,EAAwB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EACrC,IAAI,CAAC,KAAK,EAAE,IAAI,4BAA4B,EAC5C,IAAI,CAAC,QAAQ,EAAE,IAAI,+BAA+B,CACnD,uDAAC;AAEF,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9C,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QAClC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,gBAAgB,CAAC,UAAmB,EAAA,EAAS;AAEnC,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,MAAM,KAAK,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE;IACpB;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,MAAM,KAAK,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK;QACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE;IACpB;AAEU,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAE3B,QAAA,MAAM,WAAW,GAAG,CAAC,CAAa,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB;AACF,QAAA,CAAC;QAED,MAAM,SAAS,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AACtD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACpD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;IACjD;AAEQ,IAAA,eAAe,CAAC,KAAiB,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;AACpD,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;AAC3B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAE1B,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5C,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAExD,QAAA,MAAM,UAAU,GAAe;YAC7B,GAAG;YACH,GAAG;AACH,YAAA,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;AAEjC,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC;IAEQ,eAAe,GAAA;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;AACpD,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,QAAA,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;QACtC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAA,IAAA,EAAO,GAAG,CAAA,YAAA,CAAc,CAAC;AACvD,QAAA,GAAG,CAAC,SAAS,GAAG,aAAa;QAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAEjC,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AAC9D,QAAA,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC;AAC3C,QAAA,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;AACrC,QAAA,GAAG,CAAC,SAAS,GAAG,YAAY;QAC5B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;IACnC;IAEU,YAAY,GAAA;QACpB,MAAM,OAAO,GAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;AAEU,IAAA,MAAM,SAAS,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAEjC,QAAA,IAAI;YACF,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;QACtC;IACF;AAEU,IAAA,YAAY,CAAC,MAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE;IACpB;AAEU,IAAA,aAAa,CAAC,IAAS,EAAA;AAC/B,QAAA,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/D;AAEQ,IAAA,gBAAgB,CAAC,GAAW,EAAA;QAClC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChE,QAAA,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAExD,OAAO;YACL,GAAG;YACH,GAAG;YACH,GAAG;AACH,YAAA,KAAK,EAAE;SACR;IACH;wGAvOW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,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,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAbpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCH,o6IAyIA,EAAA,MAAA,EAAA,CAAA,oyMAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FD5Fa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,QAAA,EAAA,o6IAAA,EAAA,MAAA,EAAA,CAAA,oyMAAA,CAAA,EAAA;uGAQ6E,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,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,SAAA,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,MAAA,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,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,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,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,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,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,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,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,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,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,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,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEK9E,gBAAgB,CAAA;AACV,IAAA,QAAQ,GAAG,MAAM,CAACC,UAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,2DAAC;AAE/E,IAAA,cAAc,GAAG,YAAY,CAAmB,eAAe,0DAAC;AAChE,IAAA,cAAc,GAAG,YAAY,CAAmB,eAAe,0DAAC;AAChE,IAAA,eAAe,GAAG,YAAY,CAAmB,gBAAgB,2DAAC;AAClE,IAAA,SAAS,GAAG,SAAS,CAA0B,gBAAgB,qDAAC;AAChE,IAAA,OAAO,GAAG,SAAS,CAA6B,cAAc,mDAAC;AAC/D,IAAA,OAAO,GAAG,SAAS,CAA6B,cAAc,mDAAC;IAElF,EAAE,GAAG,KAAK,CAAS,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACnF,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC,IAAA,YAAY,GAAG,KAAK,CAA6B,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AACjF,IAAA,SAAS,GAAG,KAAK,CAAS,CAAC,qDAAC;AAC5B,IAAA,UAAU,GAAG,KAAK,CAAS,GAAG,sDAAC;IAC/B,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;AAExG,IAAA,aAAa,GAAG,KAAK,CAA8B,SAAS,iDAAI,KAAK,EAAE,UAAU,EAAA,CAAA,GAAA,CAAnB,EAAE,KAAK,EAAE,UAAU,EAAE,GAAC;AACpF,IAAA,MAAM,GAAG,KAAK,CAAS,CAAC,kDAAC;AACzB,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AACtC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;IAChC,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAE5G,IAAA,YAAY,GAAG,KAAK,CAA6B,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AACjF,IAAA,SAAS,GAAG,KAAK,CAA0B,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACxE,IAAA,KAAK,GAAG,KAAK,CAAe,MAAM,iDAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAA8B,SAAS,oDAAC;AACxD,IAAA,QAAQ,GAAG,KAAK,CAA8B,SAAS,oDAAC;AACxD,IAAA,SAAS,GAAG,KAAK,CAA8B,SAAS,qDAAC;AACzD,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;IAC9C,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAC1G,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAE5F,IAAA,KAAK,GAAG,KAAK,CAAU,IAAI,iDAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,CAAC,qDAAC;AAE5B,IAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,yDAAC;AACpC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AAErC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;AACnC,IAAA,cAAc,GAAG,KAAK,CAAS,GAAG,0DAAC;AAEnC,IAAA,cAAc,GAAG,KAAK,CAA+B,SAAS,kDAAI,KAAK,EAAE,WAAW,EAAA,CAAA,GAAA,CAApB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAC;AACvF,IAAA,iBAAiB,GAAG,KAAK,CAAS,GAAG,6DAAC;IACtC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;AAE7G,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,eAAe,GAAG,KAAK,CAAU,KAAK,2DAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAE9C,IAAA,MAAM,GAAG,KAAK,CAAS,IAAI,kDAAC;AAE5B,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,IAAI,GAAG,KAAK,CAAS,QAAQ,gDAAC;IAE9B,aAAa,GAAG,MAAM,EAAW;IACjC,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;IACvB,eAAe,GAAG,MAAM,EAAa;AAE7B,IAAA,OAAO;AACP,IAAA,WAAW;AACX,IAAA,YAAY;AACZ,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;IAEvB,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,gBAAgB,EAChB,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EACnC,kBAAkB,GAAG,IAAI,CAAC,IAAI,EAAE,EAChC,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,EACrC,IAAI,CAAC,OAAO,EAAE,IAAI,yBAAyB,EAC3C,IAAI,CAAC,WAAW,EAAE,IAAI,8BAA8B,CACrD,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,gBAAgB,EAAE;QACzB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,OAAO,IAAI;YAChB,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAElD,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY;YAAE;AAEtC,QAAA,IAAI,CAAC,OAAO,IAAI;QAChB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,cAAc,EAAE,YAAY,EAAE,MAAK;YAC3D,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,cAAc,GAAA;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAElD,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAEzD,QAAA,MAAM,UAAU,GAAG;AACjB,YAAAC,MAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/C,YAAA,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,IAAIC,KAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE;AACxE,SAAA,CAAC,MAAM,CAAC,OAAO,CAAU;AAE1B,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,eAAe,CAC/D,cAAc,EACd,YAAY,EACZ;AACE,YAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAe;YACvC;AACD,SAAA,CACF;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE;YAChC,IAAI,EAAE,CAAC,GAAG,IAAI;YACd,GAAG,EAAE,CAAC,GAAG,IAAI;AACd,SAAA,CAAC;QAEF,IAAI,YAAY,IAAI,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AACxD,YAAA,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK;AACrD,YAAA,MAAM,UAAU,GAAG;AACjB,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,IAAI,EAAE,OAAO;aACd,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1B,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE;AAChC,gBAAA,IAAI,EAAE,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,EAAE;AACzC,gBAAA,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,EAAE;AACxC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,CAAC,UAAoB,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;AAC5D,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;IACtC;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACvE;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC5C;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAC1E;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEQ,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAE/C,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEO,IAAI,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC7D,IAAI,CAAC,MAAM,EAAE;QACf;IACF;IAEU,uBAAuB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;gBACxC,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB;IACF;IAEU,uBAAuB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBACrB,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB;IACF;IAEU,qBAAqB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B;IACF;IAEU,qBAAqB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBACrB,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB;IACF;IAEU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBACrB,IAAI,CAAC,KAAK,EAAE;gBACd;YACF,CAAC,EAAE,GAAG,CAAC;QACT;IACF;IAEU,mBAAmB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAGU,IAAA,mBAAmB,CAAC,KAAiB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAAE;AAEpD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QAE/C,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC5E,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAGU,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC/B;IACF;wGAjTW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtD7B,w/EA4EA,EAAA,MAAA,EAAA,CAAA,w3HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BY,gBAAgB,oJAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAS9B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,qBAAqB,EAAE,WAAW;AACnC,qBAAA,EAAA,QAAA,EAAA,w/EAAA,EAAA,MAAA,EAAA,CAAA,w3HAAA,CAAA,EAAA;yGAWkE,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CACf,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CACd,gBAAgB,mEAClB,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACf,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACd,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,YAAA,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,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,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,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,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,YAAA,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,SAAA,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,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,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,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,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,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,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,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,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,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,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,cAAA,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,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,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,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,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,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,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA;sBAuQhF,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAazC,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;;ME7MxC,2BAA2B,CAAA;AACrB,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE5D,IAAA,OAAO,GAAG,KAAK,CAAoB,OAAO,mDAAC;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAgG,cAAc,oDAAC;AAC/H,IAAA,YAAY,GAAG,KAAK,CAAS,OAAO,wDAAC;AACrC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAE1C,IAAA,WAAW,GAAG,KAAK,CAAS,MAAM,uDAAC;AACnC,IAAA,aAAa,GAAG,KAAK,CAAS,yBAAyB,yDAAC;AACxD,IAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;AAExC,IAAA,MAAM,GAAG,KAAK,CAAwB,KAAK,kDAAC;AAC5C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;AAClC,IAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;AACxC,IAAA,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC;AACtC,IAAA,OAAO,GAAG,KAAK,CAAoB,SAAS,mDAAC;AAE7C,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,UAAU,GAAG,KAAK,CAAS,IAAI,sDAAC;AAChC,IAAA,WAAW,GAAG,KAAK,CAAS,QAAQ,uDAAC;AAErC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;IAEhD,WAAW,GAAG,MAAM,EAAU;AAEpB,IAAA,YAAY,GAAG,MAAM,CAAS,SAAS,wDAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAAS,SAAS,qDAAC;AACrC,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,kDAAC;AAE/B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,sBAAsB,EACtB,IAAI,CAAC,QAAQ,EAAE,IAAI,gCAAgC,CACpD,uDAAC;AAEM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;;AAEV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,WAAW,GAAA;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,gBAAgB,CAAC,UAAmB,EAAA,EAAS;wGA9ElC,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EA5H3B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAIS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,u3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzES,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,0TAAE,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8HnE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAjIvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAC3B,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,CAAC,EAAA,eAAA,EAC9D,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,u3BAAA,CAAA,EAAA;;;AClFH;;;;;;;;;;;;AAYG;MAEU,aAAa,CAAA;AAChB,IAAA,OAAO,GAAG,IAAI,GAAG,EAAmC;AAE5D;;;AAGG;IACH,QAAQ,CAAC,EAAU,EAAE,MAA+B,EAAA;QAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;IAC9B;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB;AAEA;;AAEG;AACH,IAAA,IAAI,CAAC,EAAU,EAAA;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAClB;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAA,WAAA,CAAa,CAAC;QAClE;IACF;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,EAAU,EAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACnB;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAA,WAAA,CAAa,CAAC;QAClE;IACF;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,EAAU,EAAA;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxB;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAA,WAAA,CAAa,CAAC;QAClE;IACF;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,EAAU,EAAA;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK;IAClC;wGApEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC8BrB,eAAe,CAAA;AACT,IAAA,QAAQ,GAAG,MAAM,CAACC,UAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,0DAAC;;AAG7E,IAAA,cAAc,GAAG,YAAY,CAAmB,gBAAgB,0DAAC;AACjE,IAAA,cAAc,GAAG,YAAY,CAAmB,gBAAgB,0DAAC;AACjE,IAAA,OAAO,GAAG,SAAS,CAA6B,aAAa,mDAAC;;IAGjF,EAAE,GAAG,KAAK,CAAS,CAAA,cAAA,EAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9E,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,IAAA,aAAa,GAAG,KAAK,CAA6B,SAAS,iDAAI,KAAK,EAAE,UAAU,EAAA,CAAA,GAAA,CAAnB,EAAE,KAAK,EAAE,UAAU,EAAE,GAAC;AACnF,IAAA,SAAS,GAAG,KAAK,CAAyB,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACvE,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,uDAAC;AAClD,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;IAEnD,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC1G,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;;AAG3F,IAAA,UAAU,GAAG,KAAK,CAAsB,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACtE,IAAA,kBAAkB,GAAG,KAAK,CAAsB,SAAS,sDAAI,KAAK,EAAE,eAAe,EAAA,CAAA,GAAA,CAAxB,EAAE,KAAK,EAAE,eAAe,EAAE,GAAC;AACtF,IAAA,yBAAyB,GAAG,KAAK,CAAsB,SAAS,6DAAI,KAAK,EAAE,sBAAsB,EAAA,CAAA,GAAA,CAA/B,EAAE,KAAK,EAAE,sBAAsB,EAAE,GAAC;AACpG,IAAA,gBAAgB,GAAG,KAAK,CAAsB,SAAS,oDAAI,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CAAtB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAC;IAElF,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;IAC9F,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC;IACtH,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC3I,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;;AAGhH,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAC7C,IAAA,eAAe,GAAG,KAAK,CAAsB,SAAS,mDAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AAChF,IAAA,oBAAoB,GAAG,KAAK,CAAsB,SAAS,wDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA1B,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAC;AAC1F,IAAA,wBAAwB,GAAG,KAAK,CAAwC,SAAS,4DAAI,KAAK,EAAE,qBAAqB,EAAA,CAAA,GAAA,CAA9B,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAC;AACpH,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;IAEjC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC;IACrH,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC;IAC5H,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC;;AAG3I,IAAA,iBAAiB,GAAG,KAAK,CAAsB,SAAS,qDAAI,KAAK,EAAE,cAAc,EAAA,CAAA,GAAA,CAAvB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAC;AACpF,IAAA,mBAAmB,GAAG,KAAK,CAAqB,SAAS,uDAAI,KAAK,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAAzB,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAC;IAEvF,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC;IACnH,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;;AAGvH,IAAA,sBAAsB,GAAG,KAAK,CAAqB,SAAS,0DAAI,KAAK,EAAE,mBAAmB,EAAA,CAAA,GAAA,CAA5B,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAC;AAC7F,IAAA,oBAAoB,GAAG,KAAK,CAAoC,SAAS,wDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA1B,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAC;AACxG,IAAA,qBAAqB,GAAG,KAAK,CAAsB,SAAS,yDAAI,KAAK,EAAE,kBAAkB,EAAA,CAAA,GAAA,CAA3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAC;IAE5F,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACjI,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC;IAClI,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC;;AAGhI,IAAA,WAAW,GAAG,KAAK,CAA2B,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;AAC7E,IAAA,WAAW,GAAG,KAAK,CAAsB,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;AACxE,IAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,mDAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;IAEzF,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IACnG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;IACjG,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC;;AAG7G,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,0DAAC;AACrD,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;AACtD,IAAA,cAAc,GAAG,KAAK,CAAsB,SAAS,kDAAI,KAAK,EAAE,WAAW,EAAA,CAAA,GAAA,CAApB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAC;AAC9E,IAAA,iBAAiB,GAAG,KAAK,CAAsB,SAAS,qDAAI,KAAK,EAAE,cAAc,EAAA,CAAA,GAAA,CAAvB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAC;AACpF,IAAA,SAAS,GAAG,KAAK,CAAyB,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;IAEvE,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1G,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC;IACnH,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;;IAG/F,aAAa,GAAG,MAAM,EAAW;IACjC,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;IACvB,aAAa,GAAG,MAAM,EAAQ;;AAGtB,IAAA,qBAAqB;IACrB,WAAW,GAAG,CAAC;IACf,WAAW,GAAG,CAAC;AACf,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;IAC1B,cAAc,GAAG,CAAC;AAEhB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,eAAe,EACf,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,EACnC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC/B,IAAI,CAAC,OAAO,EAAE,IAAI,wBAAwB,EAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,sBAAsB,EACtC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAA,sBAAA,EAAyB,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,EAC7D,IAAI,CAAC,UAAU,EAAE,IAAI,yBAAyB,EAC9C,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,KAAK,CAAA,sBAAA,EAAyB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CACxG,uDAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;AACtD,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IAEU,UAAU,GAAA;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,cAAc,EAAE;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,cAAc,EAAE;QACvB;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEU,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,gBAAgB,EAAE;QACzB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,IAAI,CAAC,oBAAoB,EAAE;QAC7B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC;IAEU,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAGU,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;AAIU,IAAA,YAAY,CAAC,KAAiB,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAE7C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;;AAG3C,QAAA,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;YAAE;QAE9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAGU,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAExB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AAC1D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;;QAG3B,IAAI,eAAe,GAAG,KAAK;QAE3B,IAAI,GAAG,KAAK,OAAO,IAAI,MAAM,GAAG,CAAC,EAAE;YACjC,eAAe,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;QACpC;aAAO,IAAI,GAAG,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACvC,eAAe,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;QACpC;aAAO,IAAI,GAAG,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;YACzC,eAAe,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC;QACpC;aAAO,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE;YACtC,eAAe,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC;QACpC;;QAGA,IAAI,eAAe,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;YACvE,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAGU,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAExB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AACjE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AACjE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE3B,IAAI,WAAW,GAAG,KAAK;AAEvB,QAAA,IAAI,GAAG,KAAK,OAAO,IAAI,MAAM,GAAG,SAAS;YAAE,WAAW,GAAG,IAAI;AAC7D,QAAA,IAAI,GAAG,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,SAAS;YAAE,WAAW,GAAG,IAAI;AAC7D,QAAA,IAAI,GAAG,KAAK,QAAQ,IAAI,MAAM,GAAG,SAAS;YAAE,WAAW,GAAG,IAAI;AAC9D,QAAA,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,SAAS;YAAE,WAAW,GAAG,IAAI;QAE5D,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;QACvB;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;IAEQ,kBAAkB,CAAC,MAAc,EAAE,MAAc,EAAA;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,GAAG,KAAK,OAAO,EAAE;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YACtC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,UAAU,KAAK;AACrD,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;QACjC;AAAO,aAAA,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YACtC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,UAAU,KAAK;AACrD,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;QACjC;AAAO,aAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YACtC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,UAAU,KAAK;AACrD,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;QACjC;AAAO,aAAA,IAAI,GAAG,KAAK,KAAK,EAAE;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YACtC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,UAAU,KAAK;AACrD,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;QACjC;IACF;IAEQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;AAC3B,QAAA,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;IAC5B;;IAGQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;QACnF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,IAAI;IACpE;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE;IAC5C;;IAGQ,cAAc,GAAA;QACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B;;QAGvE,UAAU,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC3C,YAAA,IAAI,CAAC,KAAK;gBAAE;YAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAC3D,IAAI,cAAc,EAAE;gBAClB,cAAc,CAAC,KAAK,EAAE;YACxB;iBAAO;gBACL,KAAK,CAAC,KAAK,EAAE;YACf;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS;QACxC;IACF;AAEQ,IAAA,wBAAwB,CAAC,SAAsB,EAAA;AACrD,QAAA,MAAM,kBAAkB,GAAG;YACzB,SAAS;YACT,wBAAwB;YACxB,0BAA0B;YAC1B,uBAAuB;YACvB,wBAAwB;YACxB;AACD,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC;AAEZ,QAAA,OAAO,SAAS,CAAC,aAAa,CAAc,kBAAkB,CAAC;IACjE;AAGU,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AAErB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACvB;IACF;AAEQ,IAAA,SAAS,CAAC,KAAoB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAc;YAC5D,SAAS;YACT,wBAAwB;YACxB,0BAA0B;YAC1B,uBAAuB;YACvB,wBAAwB;YACxB;AACD,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,QAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnE,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;gBAChD,KAAK,CAAC,cAAc,EAAE;gBACtB,WAAW,EAAE,KAAK,EAAE;YACtB;QACF;aAAO;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE;gBAC/C,KAAK,CAAC,cAAc,EAAE;gBACtB,YAAY,EAAE,KAAK,EAAE;YACvB;QACF;IACF;wGAvXW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,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,MAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,qBAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7C5B,gwGAqGA,EAAA,MAAA,EAAA,CAAA,g9RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEY,gBAAgB,oJAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAS9B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,qBAAqB,EAAE,WAAW;AACnC,qBAAA,EAAA,QAAA,EAAA,gwGAAA,EAAA,MAAA,EAAA,CAAA,g9RAAA,CAAA,EAAA;yGAYkE,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAChB,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAChB,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,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,UAAA,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,MAAA,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,UAAA,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,kBAAA,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,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,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,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,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,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,sBAAA,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,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,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,QAAA,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,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,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,WAAA,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,cAAA,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,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA;sBAsK/E,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;sBASlD,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;;sBAerC,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBA+BpC,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBA4GnC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MEhRxB,iBAAiB,CAAA;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAkB;AACxC,IAAA,OAAO,GAAG,KAAK,CAAoB,OAAO,mDAAC;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAmB,cAAc,oDAAC;AAClD,IAAA,KAAK,GAAG,KAAK,CAAS,MAAM,iDAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,OAAO,oDAAC;IAEjC,SAAS,GAAG,MAAM,EAAgB;AAExB,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,kDAAC;IAC/B,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3D,IAAA,eAAe,CAAC,IAAkB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,CAAC,OAAO,IAAI;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;wGAlBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlGlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2zBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1CS,gBAAgB,wjBAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAuG9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1G7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2zBAAA,CAAA,EAAA;;;AC9BH;;;;;;AAMG;MAmBU,cAAc,CAAA;AACR,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,yDAAC;AAE3E,IAAA,OAAO,GAAG,SAAS,CAA+B,cAAc,mDAAC;AAEpF,IAAA,YAAY,GAAG,KAAK,CAAiD,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AACrG,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC/E,IAAA,WAAW,GAAG,KAAK,CAAmD,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;IAErG,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IACxG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC1F,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;AAEhG,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAY,MAAM,gDAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAwB,SAAS,qDAAC;AACnD,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACnD,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,uDAAC;AAClD,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,GAAG,GAAG,KAAK,CAA8B,SAAS,+CAAC;AACnD,IAAA,GAAG,GAAG,KAAK,CAA8B,SAAS,+CAAC;AACnD,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAE9C,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC5C,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AACrC,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAE3C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAC7B,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AAEnD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AACjD,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,8DAAC;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,IAAA,EAAE,GAAG,KAAK,CAAqB,SAAS,8CAAC;AACzC,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;IAEhD,WAAW,GAAG,MAAM,EAAmB;IACvC,OAAO,GAAG,MAAM,EAAc;IAC9B,OAAO,GAAG,MAAM,EAAc;IAC9B,OAAO,GAAG,MAAM,EAAQ;IACxB,OAAO,GAAG,MAAM,EAAiB;AAEvB,IAAA,KAAK,GAAG,MAAM,CAAkB,EAAE,iDAAC;AACnC,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,6DAAC;AACjC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,WAAW,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAEzE,IAAA,QAAQ,GAAqC,MAAK,EAAE,CAAC;AACrD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACtC,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5D;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAsB,EAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;IACpC;AAEU,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC1D,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,IAAA,CAAC,wDAAC;AAEQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;;AAE5C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,IAAA,CAAC,+DAAC;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACxB,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;AACxD,IAAA,CAAC,oDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,cAAc,EACd,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,EAAE,EAAE,EACjC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC9B,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,EAAE,EAAE,EACvC,IAAI,CAAC,KAAK,EAAE,IAAI,qBAAqB,EACrC,IAAI,CAAC,QAAQ,EAAE,IAAI,wBAAwB,EAC3C,IAAI,CAAC,QAAQ,EAAE,IAAI,wBAAwB,EAC3C,IAAI,CAAC,OAAO,EAAE,IAAI,uBAAuB,EACzC,IAAI,CAAC,SAAS,EAAE,IAAI,0BAA0B,EAC9C,IAAI,CAAC,SAAS,EAAE,IAAI,uBAAuB,EAC3C,IAAI,CAAC,SAAS,EAAE,IAAI,uBAAuB,EAC3C,IAAI,CAAC,QAAQ,EAAE,IAAI,yBAAyB,CAC7C,uDAAC;AAEQ,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,GAAG,GAAa,EAAE;QACxB,IAAI,IAAI,CAAC,IAAI,EAAE;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/D,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC9C,IAAA,CAAC,gEAAC;AAEQ,IAAA,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,OAAO;AACnC,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,QAAQ;AAErC,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACxE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;AAEU,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEU,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACnB,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IACvC;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAsB,CAAC;IAC3C;IAEU,wBAAwB,GAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC;wGArKW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAbd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCH,4pGAuGA,mmODxEY,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAeZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,QAAA,EAAA,4pGAAA,EAAA,MAAA,EAAA,CAAA,2iOAAA,CAAA,EAAA;+FAQoE,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,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,SAAA,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,MAAA,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,QAAA,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,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,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,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,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,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,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,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,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,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,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,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,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,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,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,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,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,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,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,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,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,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,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,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,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEhBrF;;;;;;;;;;AAUG;MAsCU,aAAa,CAAA;IAChB,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3C,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAGxC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAc;AACpC,IAAA,WAAW,GAAG,KAAK,CAAkB,UAAU,uDAAC;;AAGhD,IAAA,IAAI,GAAG,KAAK,CAAW,QAAQ,gDAAC;AAChC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;AAClC,IAAA,eAAe,GAAG,KAAK,CAAW,EAAE,2DAAC;AACrC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;;IAGrC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC5B,IAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,4DAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,4DAAC;IACvC,uBAAuB,GAAG,KAAK,CAAuB;AACpD,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,YAAY,EAAE;AACf,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGF,IAAA,kBAAkB,GAAG,KAAK,CAAU,IAAI,8DAAC;AACzC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AACtC,IAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;;AAGxC,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,oDAAC;AAC/B,IAAA,iBAAiB,GAAG,KAAK,CAAS,GAAG,6DAAC;;IAGtC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAwB,YAAY,gDAAC;;AAGjD,IAAA,IAAI,GAAG,KAAK,CAAW,IAAI,gDAAC;AAC5B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;AACvC,IAAA,KAAK,GAAG,KAAK,CAAY,SAAS,iDAAC;AACnC,IAAA,MAAM,GAAG,KAAK,CAAa,IAAI,kDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAc,IAAI,mDAAC;AAClC,IAAA,YAAY,GAAG,KAAK,CAAU,KAAK,wDAAC;;AAGpC,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;AAC5B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;AAGhC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,IAAA,kBAAkB,GAAG,KAAK,CAAyB,OAAO,8DAAC;AAC3D,IAAA,UAAU,GAAG,KAAK,CAAS,cAAc,sDAAC;;AAG1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;;AAG7B,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,iDAAC;AACxB,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;;IAGrC,SAAS,GAAG,MAAM,EAAsB;IACxC,UAAU,GAAG,MAAM,EAAY;IAC/B,YAAY,GAAG,MAAM,EAAmB;IACxC,YAAY,GAAG,MAAM,EAAU;;AAGvB,IAAA,aAAa,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,yDAAC;AAC9C,IAAA,YAAY,GAAG,MAAM,CAAqB,SAAS,wDAAC;AACpD,IAAA,YAAY,GAAG,MAAM,CAAS,CAAC,CAAC,wDAAC;AACjC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,0DAAC;;AAGlE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACxD,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC3D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;QAC5E,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAE5C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,uDAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;YAChC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAChF,IAAI,CAAC,sBAAsB,EAAE;QAC/B;IACF;;AAIA,IAAA,UAAU,CAAC,IAAc,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE;AAAE,YAAA,OAAO,KAAK;QAC1B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C;AAEA,IAAA,QAAQ,CAAC,IAAc,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,UAAU,CAAC,IAAc,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI;IAC/B;AAEA,IAAA,SAAS,CAAC,IAAc,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK;IAC/B;AAEA,IAAA,WAAW,CAAC,IAAc,EAAA;AACxB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChD;IAEA,SAAS,CAAC,IAAc,EAAE,KAAa,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;IACxD;;IAIA,eAAe,CAAC,KAAY,EAAE,IAAc,EAAA;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3C,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB;QACF;;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAGnD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9C;;AAGA,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzB;;QAGA,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC;;IAGF;AAEA,IAAA,oBAAoB,CAAC,IAAc,EAAA;QACjC,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC5E,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnB;IACF;AAEA,IAAA,oBAAoB,CAAC,IAAc,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB;IACF;AAEA,IAAA,YAAY,CAAC,IAAc,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE;AAEd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;QAErC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC5B,YAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC9D;aAAO;;AAEL,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE;gBAC/B,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,oBAAA,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAC5B,wBAAA,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1B;AACF,gBAAA,CAAC,CAAC;YACJ;AACA,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7D;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;IACrC;AAEA,IAAA,MAAM,CAAC,IAAc,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE;QAEvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D;AAEA,IAAA,QAAQ,CAAC,IAAc,EAAA;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE;QAExC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC9D;;AAKA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE;AAEhC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AAExC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;oBAC/D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC;gBACzC;gBACA;AAEF,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;oBAC/D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC;gBAC7C;gBACA;AAEF,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE;AACvC,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC;oBACzC;yBAAO;AACL,wBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC;oBAC7C;gBACF;gBACA;AAEF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE;AACvC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC;oBAC7C;yBAAO;AACL,wBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC;oBAC/C;gBACF;gBACA;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;oBAC5B,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B;gBACA;AAEF,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;oBAC5B,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACzC;gBACA;AAEF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC;gBAC7C;AAEF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,WAAW,EAAE;gBAClB;;IAEN;IAEQ,aAAa,CAAC,KAAiB,EAAE,YAAoB,EAAA;QAC3D,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC;IAEQ,iBAAiB,CAAC,KAAiB,EAAE,YAAoB,EAAA;AAC/D,QAAA,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC;IAEQ,iBAAiB,CAAC,KAAiB,EAAE,YAAoB,EAAA;QAC/D,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE;AACpD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB;QACF;IACF;IAEQ,mBAAmB,CAAC,KAAiB,EAAE,YAAoB,EAAA;QACjE,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE;AACpD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB;QACF;IACF;IAEQ,mBAAmB,CAAC,KAAiB,EAAE,YAAoB,EAAA;QACjE,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE;AACpD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AAChC,YAAA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;QACvC;IACF;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACnC;;AAIQ,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QACxC,MAAM,MAAM,GAAe,EAAE;AAE7B,QAAA,MAAM,OAAO,GAAG,CAAC,QAAoB,KAAI;AACvC,YAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC3C,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACvC,wBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrB;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,OAAO,CAAC,KAAK,CAAC;AACd,QAAA,OAAO,MAAM;IACf;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;;;;IAKpB;IAEA,cAAc,CAAC,YAAoB,CAAC,EAAA;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,SAAS;QACvC,IAAI,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAE3B,OAAO;YACL,cAAc,EAAE,8BAA8B,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA,GAAA;SAC1E;IACH;wGArYW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClF1B,wnLA2JA,EAAA,MAAA,EAAA,CAAA,ilPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzEa,aAAa,soBAjCtB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EASJ;YACV,OAAO,CAAC,gBAAgB,EAAE;AACxB,gBAAA,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACvB,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,OAAO,EAAE,GAAG;AACZ,oBAAA,QAAQ,EAAE;AACX,iBAAA,CAAC,CAAC;AACH,gBAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AACtB,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,OAAO,EAAE,GAAG;AACZ,oBAAA,QAAQ,EAAE;AACX,iBAAA,CAAC,CAAC;gBACH,UAAU,CAAC,wBAAwB,EAAE;oBACnC,OAAO,CAAC,mBAAmB;iBAC5B;aACF;AACF,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIU,aAAa,EAAA,UAAA,EAAA,CAAA;kBArCzB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,UAAU;wBACV,gBAAgB;wBAChB,aAAa;wBACb;qBACD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,UAAA,EACW;wBACV,OAAO,CAAC,gBAAgB,EAAE;AACxB,4BAAA,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACvB,gCAAA,MAAM,EAAE,GAAG;AACX,gCAAA,OAAO,EAAE,GAAG;AACZ,gCAAA,QAAQ,EAAE;AACX,6BAAA,CAAC,CAAC;AACH,4BAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AACtB,gCAAA,MAAM,EAAE,GAAG;AACX,gCAAA,OAAO,EAAE,GAAG;AACZ,gCAAA,QAAQ,EAAE;AACX,6BAAA,CAAC,CAAC;4BACH,UAAU,CAAC,wBAAwB,EAAE;gCACnC,OAAO,CAAC,mBAAmB;6BAC5B;yBACF;AACF,qBAAA,EAAA,QAAA,EAAA,wnLAAA,EAAA,MAAA,EAAA,CAAA,ilPAAA,CAAA,EAAA;;sBAuPA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MEhDxB,cAAc,CAAA;AACjB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGvC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,IAAI,GAAG,KAAK,CAAY,IAAI,gDAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,mDAAC;AACxC,IAAA,SAAS,GAAG,KAAK,CAAiB,OAAO,qDAAC;AAC1C,IAAA,QAAQ,GAAG,KAAK,CAAgB,QAAQ,oDAAC;AAEzC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AACtC,IAAA,mBAAmB,GAAG,KAAK,CAAU,IAAI,+DAAC;AAC1C,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,yDAAC;;IAGpC,aAAa,GAAG,MAAM,EAAW;IACjC,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;;AAGb,IAAA,cAAc,GAAG,YAAY,CAAmB,aAAa,0DAAC;AAC9D,IAAA,cAAc,GAAG,YAAY,CAAmB,aAAa,0DAAC;AAC9D,IAAA,UAAU,GAAG,SAAS,CAA6B,YAAY,sDAAC;;AAGhE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,cAAc,EACd,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,EACvB,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAC1B,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,EAC5B,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAC5B,uDAAC;AAEF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;IACJ;AAGU,IAAA,YAAY,CAAC,KAAoB,EAAA;QACzC,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEQ,UAAU,GAAA;;QAEhB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;QAGlB,UAAU,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;YAC9C,IAAI,KAAK,EAAE;gBACT,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CACnC,0EAA0E,CAC3E;gBACD,SAAS,EAAE,KAAK,EAAE;YACpB;QACF,CAAC,EAAE,GAAG,CAAC;IACT;IAEQ,WAAW,GAAA;;QAEjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEQ,cAAc,GAAA;;AAEpB,QAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;gBAAE;YAExC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AAC9C,YAAA,IAAI,CAAC,KAAK;gBAAE;YAEZ,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAC9C,0EAA0E,CAC3E;AAED,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnE,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;gBACzD,WAAW,EAAE,KAAK,EAAE;gBACpB,CAAC,CAAC,cAAc,EAAE;YACpB;iBAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE;gBAChE,YAAY,EAAE,KAAK,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE;YACpB;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;wGA5HW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtPf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uyFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1DS,YAAY,sMAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA2P1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBA9P1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uyFAAA,CAAA,EAAA;83CAwNyD,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CACb,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACV,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;sBAyBxE,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;;ACxTrD;;;;;;;;;AASG;MAcU,eAAe,CAAA;;AAE1B,IAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAAc,SAAS,iDAAC;AACrC,IAAA,MAAM,GAAG,KAAK,CAAe,IAAI,kDAAC;;AAGlC,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;AAC9B,IAAA,YAAY,GAAG,KAAK,CAAgB,IAAI,wDAAC;;AAGzC,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAC9B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;;AAG9B,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,oDAAC;;AAG/B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;IAGzB,WAAW,GAAG,MAAM,EAAc;;AAGxB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,CAAC,eAAe,CAAC;QAEjC,OAAO,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AAEtD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;QAC9E,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACtD,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC5D,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAE5C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,uDAAC;AAEF,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;wGA1CW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC5B,mSAaA,EAAA,MAAA,EAAA,CAAA,mgFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDeY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,gBAAgB,EAAE;AACnB,qBAAA,EAAA,QAAA,EAAA,mSAAA,EAAA,MAAA,EAAA,CAAA,mgFAAA,CAAA,EAAA;;;AExBH;;;;;;;;;;AAUG;MAoBU,oBAAoB,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,yDAAC;AAEpG,IAAA,IAAI,GAAG,KAAK,CAAkB,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACjE,IAAA,KAAK,GAAG,KAAK,CAAmB,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzE,IAAA,OAAO,GAAG,KAAK,CAAqB,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/E,IAAA,MAAM,GAAG,KAAK,CAAoB,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEzE,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACvB,IAAA,aAAa,GAAG,KAAK,CAAmB,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACvF,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC7B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEtB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;IAC7B,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE9B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;IAC3B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;IAEpB,OAAO,GAAG,MAAM,EAAO;AAEb,IAAA,aAAa,GAAG,MAAM,CAAM,IAAI,yDAAC;AACjC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;IACzB,OAAO,GAAG,MAAM,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3E,IAAA,WAAW,GAAG,QAAQ,CAAC,OAAO;AACtC,QAAA,sBAAsB,EAAE,IAAI;QAC5B,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;AAC9C,QAAA,gCAAgC,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjD,QAAA,6BAA6B,EAAE,IAAI,CAAC,KAAK,EAAE;AAC3C,QAAA,+BAA+B,EAAE,IAAI,CAAC,SAAS,EAAE;AACjD,QAAA,kCAAkC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;AAC9D,KAAA,CAAC,uDAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO;AACvC,QAAA,cAAc,EAAE,IAAI;QACpB,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;QACtC,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,GAAG,IAAI;QACvC,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,GAAG,IAAI;QACzC,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,GAAG,IAAI;AAC/C,QAAA,uBAAuB,EAAE,IAAI,CAAC,SAAS,EAAE;AACzC,QAAA,wBAAwB,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzC,QAAA,qBAAqB,EAAE,IAAI,CAAC,KAAK;AAClC,KAAA,CAAC,wDAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,qDAAC;AAC/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,oDAAC;AACvD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,qDAAC;AAEnE,IAAA,QAAQ,GAAyB,MAAK,EAAE,CAAC;AACzC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,gBAAgB,CAAC,UAAmB,EAAA,EAAS;AAEnC,IAAA,YAAY,CAAC,KAAY,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/B;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEU,IAAA,gBAAgB,CAAC,KAAY,EAAA;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;wGAhGW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kwEAbpB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;aACR,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BJ,quDAqEA,EAAA,MAAA,EAAA,CAAA,2hMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,aAGZ,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,quDAAA,EAAA,MAAA,EAAA,CAAA,2hMAAA,CAAA,EAAA;;;MECU,eAAe,CAAA;AACT,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,0DAAC;AAE7E,IAAA,SAAS,GAAG,SAAS,CAAgC,eAAe,qDAAC;AACrE,IAAA,UAAU,GAAG,SAAS,CAA6B,eAAe,sDAAC;AAEtF,IAAA,YAAY,GAAG,KAAK,CAA4B,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AAChF,IAAA,SAAS,GAAG,KAAK,CAAyB,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACvE,IAAA,WAAW,GAAG,KAAK,CAAmD,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;IAErG,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IACzG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC3F,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;AAEjG,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA8C;AACtE,IAAA,WAAW,GAAG,KAAK,CAAS,kBAAkB,uDAAC;AAE/C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC5C,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AACrC,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAC7B,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,wDAAC;AACnD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAS,cAAc,sDAAC;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,qDAAC;AAClC,IAAA,QAAQ,GAAG,KAAK,CAAiB,QAAQ,oDAAC;AAE1C,IAAA,iBAAiB,GAAG,KAAK,CAAS,WAAW,6DAAC;IAE9C,WAAW,GAAG,MAAM,EAAkB;IACtC,YAAY,GAAG,MAAM,EAAU;IAC/B,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;IACvB,cAAc,GAAG,MAAM,EAAmB;AAEhC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACtB,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,uDAAC;AACxB,IAAA,aAAa,GAAG,MAAM,CAAiB,IAAI,yDAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC,4DAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEzB,IAAA,WAAW,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAE1E,IAAA,QAAQ,GAAyB,MAAK,EAAE,CAAC;AACzC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;iBAAO;gBACL,IAAI,CAAC,mBAAmB,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAEzC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/B,YAAA,OAAQ,IAA+B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACjE;AACA,QAAA,OAAO,IAAyB;AAClC,IAAA,CAAC,4DAAC;AAEQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEpC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AAEvB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IACpB,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC/C;AACH,IAAA,CAAC,2DAAC;AAEQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,MAAM,GAAI,KAAa,IAAI,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvD;QAEA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAU,CAAC,CAAC,IAAI,IAAI;AAC5E,IAAA,CAAC,2DAAC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AAEvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9C,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAClD;QAEA,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACxC,OAAO,QAAQ,CAAC,KAAK;QACvB;AAEA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,wDAAC;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;QAChC,OAAO,IAAI,CAAC,QAAQ;AAClB,cAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG;cACnC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;AACvC,IAAA,CAAC,oDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,eAAe,EACf,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAClC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC/B,CAAA,sBAAA,EAAyB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,EACxC,IAAI,CAAC,MAAM,EAAE,IAAI,qBAAqB,EACtC,IAAI,CAAC,QAAQ,EAAE,IAAI,yBAAyB,EAC5C,IAAI,CAAC,OAAO,EAAE,IAAI,wBAAwB,EAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,sBAAsB,EACtC,IAAI,CAAC,SAAS,EAAE,IAAI,wBAAwB,EAC5C,IAAI,CAAC,QAAQ,EAAE,IAAI,0BAA0B,EAC7C,IAAI,CAAC,SAAS,EAAE,IAAI,2BAA2B,CAChD,uDAAC;IAEQ,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAClB,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC9C;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B;QACF;IACF;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEU,IAAA,YAAY,CAAC,MAAuB,EAAA;QAC5C,IAAI,MAAM,CAAC,QAAQ;YAAE;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,OAAO,IAAK,IAAI,CAAC,aAAa,EAAU,IAAI,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAEjD,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD;QACF;aAAO;YACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE;QACd;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC;AAEU,IAAA,KAAK,CAAC,KAAY,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7C;AAEU,IAAA,UAAU,CAAC,MAAuB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,MAAM,GAAI,IAAI,CAAC,aAAa,EAAU,IAAI,EAAE;YAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAO,CAAC;IACpE;AAEU,IAAA,YAAY,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC1C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,MAAM,EAAE;gBACf;qBAAO;oBACL,IAAI,CAAC,aAAa,EAAE;gBACtB;gBACA;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACjB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;gBACA;AACF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACjB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;qBAAO;oBACL,IAAI,CAAC,MAAM,EAAE;gBACf;gBACA;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;oBACjB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,KAAK,EAAE;gBACd;gBACA;;IAEN;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC;IACF;IAEQ,aAAa,CAAC,CAAI,EAAE,CAAI,EAAA;QAC9B,OAAO,CAAC,KAAK,CAAC;IAChB;AAEQ,IAAA,aAAa,CAAC,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACjE;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3E,WAAW,EAAE,KAAK,EAAE;QACtB;IACF;AAEQ,IAAA,oBAAoB;IAEpB,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,KAAY,KAAI;AAC3C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;YAEjD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAClF,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC;QAED,UAAU,CAAC,MAAK;YACd,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAqB,CAAC;QAChE,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAChE,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;QACvC;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;IACpC;wGArTW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,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,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EAdf;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BH,yrIAmJA,ggSD5HY,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAgBZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAnB3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA,EAAA,QAAA,EAAA,yrIAAA,EAAA,MAAA,EAAA,CAAA,w8RAAA,CAAA,EAAA;AAQuE,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,eAAe,oEACjB,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,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,SAAA,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,MAAA,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,QAAA,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,IAAA,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,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,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,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,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,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,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,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,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,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,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,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,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,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,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE5BvF;;;;;;;;;;;;;;;;;;AAkBG;MAYU,gBAAgB,CAAA;IACV,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3C,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,2DAAC;;IAGlG,EAAE,GAAG,KAAK,CAAS,CAAA,eAAA,EAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/E,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,IAAA,aAAa,GAAG,KAAK,CAA8B,SAAS,iDAAI,KAAK,EAAE,UAAU,EAAA,CAAA,GAAA,CAAnB,EAAE,KAAK,EAAE,UAAU,EAAE,GAAC;AACpF,IAAA,SAAS,GAAG,KAAK,CAA0B,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACxE,IAAA,YAAY,GAAG,KAAK,CAA6B,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AACjF,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,uDAAC;IAElD,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC1G,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC5F,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;;AAG1G,IAAA,UAAU,GAAG,KAAK,CAAsB,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACtE,IAAA,gBAAgB,GAAG,KAAK,CAAsB,SAAS,oDAAI,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CAAtB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAC;AAClF,IAAA,qBAAqB,GAAG,KAAK,CAAsB,SAAS,yDAAI,KAAK,EAAE,kBAAkB,EAAA,CAAA,GAAA,CAA3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAC;AAC5F,IAAA,oBAAoB,GAAG,KAAK,CAAsB,SAAS,wDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA1B,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAC;AAC1F,IAAA,yBAAyB,GAAG,KAAK,CAAsB,SAAS,6DAAI,KAAK,EAAE,sBAAsB,EAAA,CAAA,GAAA,CAA/B,EAAE,KAAK,EAAE,sBAAsB,EAAE,GAAC;AACpG,IAAA,kBAAkB,GAAG,KAAK,CAAsB,SAAS,sDAAI,KAAK,EAAE,eAAe,EAAA,CAAA,GAAA,CAAxB,EAAE,KAAK,EAAE,eAAe,EAAE,GAAC;AACtF,IAAA,gBAAgB,GAAG,KAAK,CAAsB,SAAS,oDAAI,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CAAtB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAC;AAClF,IAAA,iBAAiB,GAAG,KAAK,CAAsB,SAAS,qDAAI,KAAK,EAAE,cAAc,EAAA,CAAA,GAAA,CAAvB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAC;IAEpF,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;IAC/F,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC;IAClH,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACjI,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC;IAC7H,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5I,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC;IACvH,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;IACjH,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC;;AAGpH,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAC7C,IAAA,eAAe,GAAG,KAAK,CAAsB,SAAS,mDAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AAChF,IAAA,eAAe,GAAG,KAAK,CAAsB,SAAS,mDAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AAChF,IAAA,oBAAoB,GAAG,KAAK,CAAsB,SAAS,wDAAI,KAAK,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA1B,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAC;IAE1F,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAC9G,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAC9G,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC;;AAG7H,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,0DAAC;AACrD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;;AAGjD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGf,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC;QACjD,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,uDAAC;AAEQ,IAAA,UAAU,GAAG,QAAQ,CAAqC,MAAK;AACvE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAA,MAAM,OAAO,GAA4D;AACvE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;SACT;AACD,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,IAAA,CAAC,sDAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YACzC,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAO,CAAC;qBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC;qBACpD,SAAS,CAAC,MAAK;oBACd,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;oBACzB;AACF,gBAAA,CAAC,CAAC;AAEJ,gBAAA,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE;AACzC,YAAA,CAAC,CAAC;QACJ;IACF;wGA7FW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,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,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,iBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C7B,63BA6BA,EAAA,MAAA,EAAA,CAAA,2fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDSY,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQd,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,CAAC,EAAA,eAAA,EACT,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,QAAA,EAAA,63BAAA,EAAA,MAAA,EAAA,CAAA,2fAAA,CAAA,EAAA;;;AE1CH;;AAEG;;ACFH;;AAEG;;ACIH;;;;;;AAMG;MAqDU,eAAe,CAAA;AACT,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,0DAAC;AAEhG,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACvB,IAAA,aAAa,GAAG,KAAK,CAAmB,OAAO,yDAAC;AAChD,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;IACjC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC/E,IAAA,UAAU,GAAG,KAAK,CAAkD,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;IAElG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAC3F,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAEnG,aAAa,GAAG,MAAM,EAAW;AAEvB,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;AAE1C,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAE9B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,eAAe,EACf,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EAC/B,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAChC,IAAI,CAAC,eAAe,EAAE,IAAI,wBAAwB,EAClD,IAAI,CAAC,QAAQ,EAAE,IAAI,yBAAyB,CAC7C,uDAAC;AAEF,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IAClC;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,gBAAgB,CAAC,UAAmB,EAAA,EAAS;IAEnC,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,CAAC,MAAM,EAAE;IACf;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,MAAM,EAAE;IACf;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC;wGAtEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EA/Cf;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAYS;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+jHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA9CS,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAiDZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBApD3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,mBAAmB,EAAE,wBAAwB;AAC7C,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,iBAAiB,EAAE,uBAAuB;AAC1C,wBAAA,YAAY,EAAE;qBACf,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+jHAAA,CAAA,EAAA;;;AC9DH;;AAEG;;MCgJU,aAAa,CAAA;AACxB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,SAAS,GAAG,MAAM,CAAS,EAAE,qDAAC;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAc,MAAM,mDAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAW,IAAI,gDAAC;AAC5B,IAAA,WAAW,GAAG,KAAK,CAAkB,YAAY,uDAAC;IAElD,SAAS,GAAG,MAAM,EAAU;AAElB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,MAAM,EACN,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EACzB,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,EACtB,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,gBAAgB,CACtD,uDAAC;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oDAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;YAC5B,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;gBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,SAAS,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;wGAnCW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Hd;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qhDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3BS,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAkIZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBArIzB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qhDAAA,CAAA,EAAA;;;ACrCH;;;;;;;;;;AAUG;MAqBU,iBAAiB,CAAA;AACX,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,4DAAC;AAEpG,IAAA,OAAO,GAAG,KAAK,CACb,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC9C;AAED,IAAA,IAAI,GAAG,KAAK,CACV,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AAED,IAAA,KAAK,GAAG,KAAK,CACX,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5C;AAED,IAAA,MAAM,GAAG,KAAK,CACZ,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxC;;;;AAMD;;AAEG;IACH,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEvB;;AAEG;AACH,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;AAErC;;AAEG;IACH,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE7B;;AAEG;IACH,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;;AAMtB;;AAEG;AACH,IAAA,IAAI,GAAG,KAAK,CACV,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnC;AAED;;AAEG;IACH,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzB;;AAEG;IACH,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzB;;AAEG;AACH,IAAA,UAAU,GAAG,KAAK,CAChB,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC7C;AAED;;AAEG;AACH,IAAA,MAAM,GAAG,KAAK,CACZ,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,IAAI,UAAU,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC9C;;;;AAMD;;AAEG;IACH,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B;;AAEG;AACH,IAAA,aAAa,GAAG,KAAK,CACnB,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChD;AAED;;AAEG;AACH,IAAA,iBAAiB,GAAG,KAAK,CAAiC,cAAc,6DAAC;;;;AAMzE;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;IACH,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B;;AAEG;AACH,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAE7B;;AAEG;IACH,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;;;AAM9B;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;AACH,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC;;AAEG;AACH,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AAEjC;;AAEG;IACH,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEtB;;AAEG;IACH,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE9B;;AAEG;AACH,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AAEjC;;AAEG;AACH,IAAA,SAAS,GAAG,KAAK,CACf,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5C;AAED;;AAEG;AACH,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;;;AAM/B;;AAEG;IACH,OAAO,GAAG,MAAM,EAAU;AAE1B;;AAEG;IACH,OAAO,GAAG,MAAM,EAAc;AAE9B;;AAEG;IACH,OAAO,GAAG,MAAM,EAAc;AAE9B;;AAEG;IACH,UAAU,GAAG,MAAM,EAAiB;;;;AAMpC;;AAEG;AACO,IAAA,aAAa,GAAG,MAAM,CAAC,EAAE,yDAAC;AAEpC;;AAEG;AACO,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEnC;;AAEG;IACO,UAAU,GAAG,MAAM,CAAC,CAAA,gBAAA,EAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3F;;AAEG;AACO,IAAA,UAAU,GAAG,SAAS,CAAkC,UAAU,sDAAC;;;;AAMnE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,yBAAyB,EACzB,CAAA,yBAAA,EAA4B,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EACzC,CAAA,yBAAA,EAA4B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAC5C,IAAI,CAAC,QAAQ,EAAE,IAAI,mCAAmC,EACtD,IAAI,CAAC,KAAK,EAAE,IAAI,gCAAgC,EAChD,IAAI,CAAC,SAAS,EAAE,IAAI,kCAAkC,EACtD,IAAI,CAAC,SAAS,EAAE,IAAI,qCAAqC,EACzD,IAAI,CAAC,aAAa,EAAE,IAAI,yCAAyC,CAClE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF;;AAEG;AACO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,UAAU,CACnD,iBAAiB,EACjB,CAAA,iBAAA,EAAoB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,EACjC,oBAAoB,IAAI,CAAC,OAAO,EAAE,EAAE,EACpC,CAAA,iBAAA,EAAoB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAClC,CAAA,wBAAA,EAA2B,IAAI,CAAC,MAAM,EAAE,EAAE,EAC1C,CAAA,wBAAA,EAA2B,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,EAC1C,IAAI,CAAC,QAAQ,EAAE,IAAI,2BAA2B,EAC9C,IAAI,CAAC,QAAQ,EAAE,IAAI,2BAA2B,EAC9C,IAAI,CAAC,KAAK,EAAE,IAAI,wBAAwB,EACxC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,4BAA4B,EAC/D,IAAI,CAAC,UAAU,EAAE,IAAI,8BAA8B,CACpD,2DAAC;AAEF;;AAEG;AACO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,qDAAC;AAEzE;;AAEG;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,oDAAC;AAEjE;;AAEG;AACO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,OAAO,GAAG,GAAG,GAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,CAAA,EAAG,MAAM,EAAE;AAC/C,IAAA,CAAC,yDAAC;AAEF;;AAEG;AACO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK;AACxD,IAAA,CAAC,+DAAC;AAEF;;AAEG;AACO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,IAAA,CAAC,+DAAC;AAEF;;AAEG;AACO,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;QAC5C,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtF,IAAA,CAAC,+DAAC;;;;AAMM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;IAEpC;;;;AAMA,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,CAAC,oBAAoB,EAAE;YAC7B;AACF,QAAA,CAAC,CAAC;IACJ;;;;AAMA;;AAEG;AACO,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AAEA,QAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAA6B,CAAC;QACxD;IACF;AAEA;;AAEG;AACO,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEA;;AAEG;AACO,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEA;;AAEG;AACO,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAEA;;AAEG;IACO,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;;QAGrB,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC1C;AAEA;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,UAAU,CAAC,MAAK;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;gBACjD,IAAI,QAAQ,EAAE;AACZ,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC7B;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEA;;AAEG;AACK,IAAA,YAAY,CAAC,QAA6B,EAAA;;AAEhD,QAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;QAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;;QAG9B,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC/C,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;;AAGlE,QAAA,MAAM,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO;AAChD,QAAA,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ;;AAGrE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACjF,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,SAAS,IAAI;IAC1C;wGA7aW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,m7HAdjB,CAAC;AACV,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;aACR,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BJ,ipIA2IA,EAAA,MAAA,EAAA,CAAA,snKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvHY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAiBX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,aAGZ,CAAC;AACV,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR,yBAAA,CAAC,EAAA,IAAA,EACI;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,wBAAwB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EAAA,ipIAAA,EAAA,MAAA,EAAA,CAAA,snKAAA,CAAA,EAAA;87FA0NiE,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEnNjE,gBAAgB,CAAA;AAC3B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAU;AAClC,IAAA,OAAO,GAAG,KAAK,CAA8B,OAAO,mDAAC;AACrD,IAAA,QAAQ,GAAG,KAAK,CAAgG,KAAK,oDAAC;AACtH,IAAA,SAAS,GAAG,KAAK,CAAS,GAAG,qDAAC;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAS,GAAG,sDAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAU,IAAI,iDAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,CAAC,qDAAC;AAC5B,IAAA,QAAQ,GAAG,KAAK,CAAS,OAAO,oDAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAEtB,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,gBAAgB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;wGAXzD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BjB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5BS,gBAAgB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmCf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtC5B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;ACnCH;;;AAGG;;MCiDU,0BAA0B,CAAA;AACpB,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,iBAAiB,+DAAC;AAExG,IAAA,QAAQ,GAA4C,MAAK,EAAE,CAAC;AAC5D,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,KAAK,GAAG,KAAK,CAAyB,EAA4B,iDAAC;AAEnE,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA6B;AACrD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AAEjC,IAAA,gBAAgB,GAAG,KAAK,CAAwC,SAAS,oDAAI,KAAK,EAAE,aAAa,EAAA,CAAA,GAAA,CAAtB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAC;AACpG,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,6CAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC/E,IAAA,YAAY,GAAG,KAAK,CAA4C,SAAS,gDAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;AAChG,IAAA,UAAU,GAAG,KAAK,CAAwE,SAAS,8CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AACxH,IAAA,WAAW,GAAG,KAAK,CAA0D,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;AAC5G,IAAA,WAAW,GAAG,KAAK,CAA0C,SAAS,+CAAI,KAAK,EAAE,QAAQ,EAAA,CAAA,GAAA,CAAjB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAC;IAE5F,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC;IAC7H,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAChG,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAC9G,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IACxG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;IACtG,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;AAExG,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,oDAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAqC,IAAI,mDAAC;AACzD,IAAA,KAAK,GAAG,KAAK,CAAyC,OAAO,iDAAC;AAC9D,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,YAAY,GAAG,KAAK,CAA4B,MAAM,wDAAC;IACvD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAE3B,WAAW,GAAG,MAAM,EAA0B;AAEpC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,4BAA4B,EAC5B,IAAI,CAAC,QAAQ,EAAE,IAAI,sCAAsC,CAC1D,uDAAC;AAEQ,IAAA,UAAU,CAAC,WAA4B,EAAA;AAC/C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1E;QACA,OAAO,YAAY,KAAK,WAAW;IACrC;AAEU,IAAA,YAAY,CAAC,WAA4B,EAAA;QACjD,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,QAAgC;AAEpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAyB,GAAG,EAAE;YAC3F,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AAE/C,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;oBACnD;gBACF;AACA,gBAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;YACxD;iBAAO;AACL,gBAAA,QAAQ,GAAG,CAAC,GAAG,YAAY,EAAE,WAAW,CAAC;YAC3C;QACF;aAAO;AACL,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,YAAY,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBACtD;YACF;YACA,QAAQ,GAAG,YAAY,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,WAAW;QAChG;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;AAEA,IAAA,UAAU,CAAC,GAA2B,EAAA;QACpC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACrB;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC3C;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2C,EAAA;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;IAEpC;wGApGW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAvC1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAIS;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtCS,eAAe,8RAAE,oBAAoB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAyCpC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA5CtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAA,eAAA,EAC/B,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE;qBACZ,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA;;;MCmBU,kBAAkB,CAAA;AACZ,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE5D,IAAA,aAAa,GAAG,KAAK,CAAyB,IAAI,yDAAC;AACnD,IAAA,gBAAgB,GAAG,KAAK,CAA4B,SAAS,4DAAC;AAC9D,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,oBAAoB,GAAG,KAAK,CAAU,IAAI,gEAAC;AAE3C,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;AAClC,IAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,6DAAC;AACxC,IAAA,qBAAqB,GAAG,KAAK,CAAW,EAAE,yDAAI,KAAK,EAAE,kBAAkB,EAAA,CAAA,GAAA,CAA3B,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAC;AAE1E,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AACtC,IAAA,YAAY,GAAG,KAAK,CAAwB,MAAM,wDAAC;AACnD,IAAA,mBAAmB,GAAG,KAAK,CAAmB,IAAI,+DAAC;AAEnD,IAAA,UAAU,GAAG,KAAK,CAAS,MAAM,sDAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,mDAAC;AAEvC,IAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,2DAAC;AAChE,IAAA,kBAAkB,GAAG,KAAK,CAA+C,SAAS,8DAAC;AAEnF,IAAA,SAAS,GAAG,KAAK,CAAS,iBAAiB,qDAAC;AAC5C,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,2DAAC;IAEtD,cAAc,GAAG,MAAM,EAAqC;IAC5D,gBAAgB,GAAG,MAAM,EAAgD;IACzE,gBAAgB,GAAG,MAAM,EAAgD;AAE/D,IAAA,MAAM,GAAG,MAAM,CAAuB,IAAI,kDAAC;AAC3C,IAAA,gBAAgB,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,4DAAC;AAEnD,IAAA,QAAQ,GAA0C,MAAK,EAAE,CAAC;AAC1D,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAClD,YAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACnD;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,WAAW,GAAG,QAAQ,CAAC,MAAM,UAAU,CAC/C,kBAAkB,EAClB,IAAI,CAAC,OAAO,EAAE,IAAI,2BAA2B,EAC7C,CAAA,0BAAA,EAA6B,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAC9C,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEQ,IAAA,iBAAiB,CAAC,WAAmB,EAAA;QAC7C,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;IACjD;AAEU,IAAA,aAAa,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;QAEzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEjD,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC7B,YAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9B;aAAO;AACL,YAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3B;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW;AACnC,SAAA,CAAC;IACJ;AAEU,IAAA,iBAAiB,CACzB,WAAmB,EACnB,OAAsB,EACtB,WAAmB,EACnB,QAAa,EAAA;QAEb,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;AAChE,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,SAAyC;QAE7C,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;AACzD,YAAA,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;QAC/D;aAAO;AACL,YAAA,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;QACjE;QAEA,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,KAAK,GAAG,QAAQ;QAC5B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEU,gBAAgB,CACxB,WAAmB,EACnB,OAAsB,EACtB,WAAmB,EACnB,WAAgB,EAChB,OAAgB,EAAA;QAEhB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;AAChE,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,SAAyC;QAE7C,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;AACzD,YAAA,SAAS,GAAG,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;QAC/D;aAAO;AACL,YAAA,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC;QACjE;QAEA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;YAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,EAAE;YAE3E,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;oBACxC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,EAAE,WAAW,CAAC;gBACnD;YACF;iBAAO;AACL,gBAAA,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;YAChE;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEU,IAAA,aAAa,CACrB,WAAmB,EACnB,OAAsB,EACtB,WAAmB,EACnB,QAAa,EAAA;QAEb,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;IACrE;AAEU,IAAA,YAAY,CAAC,WAAmB,EAAE,OAAsB,EAAE,WAAmB,EAAA;QACrF,OAAO,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,OAAO,IAAI,MAAM,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;IAC7D;IAEU,SAAS,CAAC,SAA6B,EAAE,WAAgB,EAAA;AACjE,QAAA,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;AACjC,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAChF;AAAO,aAAA,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;AACrC,YAAA,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;QACxC;AACA,QAAA,OAAO,KAAK;IACd;IAEU,cAAc,CAAC,SAA6B,EAAE,WAAgB,EAAA;AACtE,QAAA,OAAO,SAAS,CAAC,KAAK,KAAK,WAAW;IACxC;IAEU,SAAS,CAAC,SAA6B,EAAE,WAAgB,EAAA;QACjE,OAAO,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,WAAW;IAC7E;IAEU,gBAAgB,CAAC,CAAS,EAAE,OAAyB,EAAA;QAC7D,OAAO,OAAO,CAAC,EAAE;IACnB;IAEU,cAAc,CAAC,CAAS,EAAE,KAAqB,EAAA;QACvD,OAAO,KAAK,CAAC,EAAE;IACjB;IAEU,kBAAkB,CAAC,CAAS,EAAE,KAAyB,EAAA;QAC/D,OAAO,KAAK,CAAC,EAAE;IACjB;IAEU,kBAAkB,CAAC,CAAS,EAAE,MAAuB,EAAA;QAC7D,OAAO,MAAM,CAAC,KAAK;IACrB;AAEA,IAAA,UAAU,CAAC,KAA2B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,0BAA0B,EAAE;IACnC;AAEA,IAAA,gBAAgB,CAAC,EAAyC,EAAA;AACxD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,gBAAgB,CAAC,CAAU,EAAA,EAAS;IAE5B,0BAA0B,GAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU;AAElC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAClD,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C;AAAO,aAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AAClC,gBAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;AACxB,oBAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB;AACF,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AAClC,gBAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;AACvB,oBAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;wGAlOW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAflB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DH,uugBA8UA,8gHDtSI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,mfACd,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,2BAA2B,sYAC3B,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAkBN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhC9B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,iBAAiB;wBACjB,oBAAoB;wBACpB,2BAA2B;wBAC3B,eAAe;wBACf,iBAAiB;wBACjB;qBACD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,QAAA,EAAA,uugBAAA,EAAA,MAAA,EAAA,CAAA,u9GAAA,CAAA,EAAA;;;AE3DH;;;;;;AAMG;MA6EU,oBAAoB,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE5D,IAAA,IAAI,GAAG,KAAK,CAAqB,IAAI,gDAAC;AACtC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,oDAAC;AAErB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,MAAM,kDAAC;AAElE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,oDAAC;IAEQ,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IAClC;wGAhBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvErB;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ixBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1BS,eAAe,4LAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAyE7B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5EhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,aAAa,CAAC,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ixBAAA,CAAA,EAAA;;;ACzCH;;AAEG;;ACFH;;;AAGG;;ACHH;;;AAGG;;MCDU,UAAU,CAAA;AAUQ,IAAA,MAAA;AATZ,IAAA,MAAM;AACN,IAAA,QAAQ,GAAG;AAC1B,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,GAAG,EAAE,aAAa;AAClB,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,GAAG,EAAE,mBAAmB;KAChB;AAEV,IAAA,WAAA,CAA6B,MAAkB,EAAA;QAAlB,IAAA,CAAA,MAAM,GAAN,MAAM;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA,OAAO,CAAC,KAAa,EAAE,SAAkB,EAAA;QACvC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACL,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,UAAU,EAAE;aACb;QACH;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACzC,QAAA,MAAM,SAAS,GAAG,SAAS,KAAK;cAC5B,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS;AAClD,cAAE,SAAS,CAAC,MAAM;AAEpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACpD,cAAE,IAAI,CAAC,UAAU,CAAC,SAAS;cACzB,SAAS;QAEb,OAAO;AACL,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;SACvC;IACH;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAEvD,OAAO,IAAI,CAAC;aACT,GAAG,CAAC,KAAK,IAAG;YACX,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC,IAAI;AAC5D,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;AACvC,QAAA,CAAC;aACA,IAAI,CAAC,EAAE,CAAC;IACb;AAEQ,IAAA,YAAY,CAAC,OAAe,EAAA;QAClC,MAAM,MAAM,GAAgB,EAAE;QAC9B,IAAI,CAAC,GAAG,CAAC;AAET,QAAA,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;AAEvB,YAAA,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;gBAC3C,MAAM,CAAC,IAAI,CAAC;AACV,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC;AACpB,iBAAA,CAAC;gBACF,CAAC,IAAI,CAAC;gBACN;YACF;YAEA,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;AACzC,gBAAA,CAAC,EAAE;gBACH;YACF;AAEA,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACzB,MAAM,CAAC,IAAI,CAAC;AACV,oBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7B,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAkC;AAC1D,iBAAA,CAAC;AACF,gBAAA,CAAC,EAAE;YACL;iBAAO;gBACL,MAAM,CAAC,IAAI,CAAC;AACV,oBAAA,IAAI,EAAE,QAAQ;oBACd;AACD,iBAAA,CAAC;AACF,gBAAA,CAAC,EAAE;YACL;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,YAAY,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAsC;AACjD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,GAAG,EAAE,cAAc;AACnB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE;SACN;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK;IAC/B;AAEQ,IAAA,SAAS,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QAEnC,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC1B;YACF;YAEA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,MAAM,IAAI,KAAK,CAAC,IAAI;gBACpB,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE;AAChC,oBAAA,QAAQ,EAAE;gBACZ;YACF;iBAAO;AACL,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;gBAC1B,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC7B,MAAM,IAAI,IAAI;AACd,oBAAA,QAAQ,EAAE;gBACZ;AAAO,qBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC1B;gBACF;YACF;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAErC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC;AACtB,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI;aACzC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAK;aAChB,MAAM,CAAC,OAAO,CAAC;AAElB,QAAA,OAAO;aACJ,KAAK,CAAC,EAAE;AACR,aAAA,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;aAC1C,IAAI,CAAC,EAAE,CAAC;IACb;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;QAClD,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,MAAM;QAErE,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,YAAA,IAAI,UAAU,IAAI,aAAa,EAAE;gBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CAAC,IAAI;gBACtB;qBAAO;oBACL,MAAM,IAAI,WAAW;AACrB,oBAAA,UAAU,EAAE;gBACd;YACF;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,eAAe,CACrB,SAAiB,EACjB,QAAgB,EAChB,QAAgB,EAAA;QAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC9C,QAAA,IAAI,SAAS,GAAG,SAAS,GAAG,IAAI;AAEhC,QAAA,OAAO,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;AACxC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,KAAK,SAAS,CAC5E;AAED,YAAA,IAAI,CAAC,QAAQ;gBAAE;AACf,YAAA,SAAS,EAAE;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D;AAEQ,IAAA,aAAa,CAAC,GAAW,EAAA;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CACxC;AACD,QAAA,OAAO,GAAG,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;IAC5C;AACD;;ACvMM,MAAM,YAAY,GAAmC;AAC1D,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,KAAK,EAAE;AACR;;;MCdU,aAAa,CAAA;AACP,IAAA,EAAE,GAAG,MAAM,EAAC,UAAkD,EAAC;AAC/D,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,IAAI,GAAG,KAAK,CAA8B,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EACnD,KAAK,EAAE,YAAY;AACnB,YAAA,SAAS,EAAE,CAAC,KAA0B,KAAI;AACxC,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,EAAE;AACrB,gBAAA,IAAI,KAAK,IAAI,YAAY,EAAE;AACzB,oBAAA,OAAO,YAAY,CAAC,KAAmB,CAAC,CAAC,OAAO;gBAClD;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,EAAA,CAAA,GAAA,CARoD;AACrD,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,SAAS,EAAE,CAAC,KAA0B,KAAI;AACxC,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,EAAE;AACrB,gBAAA,IAAI,KAAK,IAAI,YAAY,EAAE;AACzB,oBAAA,OAAO,YAAY,CAAC,KAAmB,CAAC,CAAC,OAAO;gBAClD;AACA,gBAAA,OAAO,KAAK;YACd;AACD,SAAA,CAAA,CAAA,CAAC;AAEO,IAAA,eAAe,GAAG,KAAK,CAAS,GAAG,2DAAC;AACpC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;AAChC,IAAA,eAAe,GAAG,KAAK,CAAU,KAAK,2DAAC;AACvC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,2DAAC;AACtC,IAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,+DAAC;AAC3C,IAAA,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC;AAE9B,IAAA,MAAM,GAAG,QAAQ,CAAa,OAAO;AACpD,QAAA,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;AACvB,QAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC3C,QAAA,UAAU,EAAE,IAAI,CAAC,cAAc;AAChC,KAAA,CAAC,kDAAC;AAEc,IAAA,MAAM,GAAG,MAAM,CAAoB,IAAI,kDAAC;AAEhD,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAEzB,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW;gBAAE;AAElB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACrC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC;AAE7C,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;QAEpD,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;YACzD,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACzD;QAEA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC5B;IAGA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC9C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG;gBAAE;AAEV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAClB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACzD,gBAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC;QACF;IACF;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;QAEhB,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnB;IACF;AAGA,IAAA,OAAO,CAAC,KAAqB,EAAA;QAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACrC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC;AAE7C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;QAClC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;AAC/C,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK;AAE5C,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AAEnE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACzD,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,IAAI,KAAK,EAAE;YACT,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QACxC;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AAE/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,OAAO,QAAQ,GAAG,IAAI,GAAG,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;IACvE;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAAE;AAE7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,IAAI;AACF,YAAA,MAAM,eAAe,GAAG,GAAG,CAAC,cAAc,EAAE;YAC5C,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,aAAa,EACb,eAAe,CAChB;YACH;QACF;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC;QAClD;IACF;wGA7KW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,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,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAjBb;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAMU,aAAa,EAAA,UAAA,EAAA,CAAA;kBApBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE;AACR,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,2BAA2B,EAAE,cAAc;AAC3C,wBAAA,yBAAyB,EAAE;AAC5B;AACF,iBAAA;;sBAsDE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAqBhC,YAAY;uBAAC,OAAO;;sBAiBpB,YAAY;uBAAC,MAAM;;sBAWnB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AC5InC;;AAEG;AAEH;;AAE8C;;ACN9C;;AAEG;;;;"}
|