shadcn-glass-ui 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/components.cjs +4 -4
- package/dist/components.js +1 -1
- package/dist/hooks.cjs +2 -2
- package/dist/index.cjs +5 -5
- package/dist/index.js +1 -1
- package/dist/r/alert-glass.json +1 -1
- package/dist/r/badge-glass.json +1 -1
- package/dist/r/button-glass.json +1 -1
- package/dist/r/checkbox-glass.json +1 -1
- package/dist/r/dropdown-glass.json +1 -1
- package/dist/r/glass-card.json +1 -1
- package/dist/r/input-glass.json +1 -1
- package/dist/r/language-bar-glass.json +1 -1
- package/dist/r/modal-glass.json +1 -1
- package/dist/r/progress-glass.json +1 -1
- package/dist/r/registry.json +0 -2
- package/dist/r/segmented-control-glass.json +1 -1
- package/dist/r/tabs-glass.json +1 -1
- package/dist/r/tooltip-glass.json +1 -1
- package/dist/shadcn-glass-ui.css +1 -1
- package/dist/{theme-context-BcTQdqsj.cjs → theme-context-XtasSxRT.cjs} +2 -2
- package/dist/{theme-context-BcTQdqsj.cjs.map → theme-context-XtasSxRT.cjs.map} +1 -1
- package/dist/themes.cjs +1 -1
- package/dist/{trust-score-card-glass-Dq28n8en.cjs → trust-score-card-glass-CNcQveNY.cjs} +19 -15
- package/dist/{trust-score-card-glass-Dq28n8en.cjs.map → trust-score-card-glass-CNcQveNY.cjs.map} +1 -1
- package/dist/{trust-score-card-glass-CHzWGuko.js → trust-score-card-glass-CowcDyxH.js} +16 -12
- package/dist/{trust-score-card-glass-CHzWGuko.js.map → trust-score-card-glass-CowcDyxH.js.map} +1 -1
- package/dist/{use-focus-CH8KNgcY.cjs → use-focus-BbpE2qGq.cjs} +2 -2
- package/dist/{use-focus-CH8KNgcY.cjs.map → use-focus-BbpE2qGq.cjs.map} +1 -1
- package/dist/{use-wallpaper-tint-DNecAf46.cjs → use-wallpaper-tint-CIqtoETa.cjs} +2 -2
- package/dist/{use-wallpaper-tint-DNecAf46.cjs.map → use-wallpaper-tint-CIqtoETa.cjs.map} +1 -1
- package/dist/{utils-3cDWhVvH.cjs → utils-CriE74ig.cjs} +2 -2
- package/dist/{utils-3cDWhVvH.cjs.map → utils-CriE74ig.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/package.json +1 -1
package/dist/{trust-score-card-glass-Dq28n8en.cjs.map → trust-score-card-glass-CNcQveNY.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust-score-card-glass-Dq28n8en.cjs","names":["transforms: string[]","cardStyles: CSSProperties","iconMap: Record<AlertVariant, typeof Info>","variantStyles: Record<AlertVariant, AlertStyleVars>","effectiveVariant: AlertVariant","statusVars: Record<AvatarStatus, { bg: string; glow: string }>","avatarStyles: CSSProperties","variantStyles: Record<BadgeVariant, BadgeStyleVars>","baseStyles: Record<ButtonGlassVariant, CSSProperties>","checkboxStyles: CSSProperties","gradients: Record<CircularProgressGradient, { from: string; to: string; glowVar: string }>","React","React","index","composeContextScopes","Primitive","Slot","Node","React","useCallbackRef","React","useCallbackRef","React","index","Primitive","useCallbackRef","count","Primitive","Slot","Node","React","React","useCallbackRef","Primitive","index","React","React","useId","computePosition","platform","detectOverflow","options","arrow","max","offset","flip","placements","sides","side","placement","overflow","hide","shift","min","limitShift","size","getComputedStyle","_e","$","options","_e","offset","offset$1","shift","shift$1","flip","flip$1","size","size$1","hide","hide$1","arrow","arrow$1","limitShift","limitShift$1","useLayoutEffect","React","options","platform","data","arrow$1","arrow$2","Primitive","Slot","Node","React","Arrow","React","Primitive","createContextScope","React","index","Primitive","Slot","Node","React","size","React","createContextScope","React","ANCHOR_NAME","Primitive","CONTENT_NAME","arrow","floatingUIarrow","useCallbackRef","ARROW_NAME","ArrowPrimitive.Root","options","Root2","Primitive","Slot","Node","React","PORTAL_NAME","React","ReactDOM","Primitive","React","React2","Primitive","Slot","Node","React","React","useLayoutEffect","__assign","p","React","cbs","options","Target","React","React","SideCar","React","React","Style","React","SideCar","Popover","React","PopperPrimitive.Root","useId","PopperPrimitive.Anchor","PopoverTrigger","Primitive","PortalPrimitive","PopoverContent","Slot","RemoveScroll","PopperPrimitive.Content","PopperPrimitive.Arrow","Portal","Y","k","B","K","X","T","L","P","N","Slot","Node","React","ae","t","u","p","m","$","H","W","U","J","X","D","G","w","variants: Record<GlassVariant, string>","blurMap: Record<IntensityType, string>","bgVarMap: Record<IntensityType, string>","borderVarMap: Record<IntensityType, string>","glowVarMap: Record<string, string>","cardStyles: CSSProperties","ModalRoot: FC<ModalRootProps>","ModalOverlay: FC<ModalOverlayProps>","overlayStyles: CSSProperties","modalStyles: CSSProperties","ModalHeader: FC<ModalHeaderProps>","ModalBody: FC<ModalBodyProps>","ModalFooter: FC<ModalFooterProps>","ModalTitle: FC<ModalTitleProps>","ModalDescription: FC<ModalDescriptionProps>","ModalClose: FC<ModalCloseProps>","closeButtonStyles: CSSProperties","configs: Record<NotificationType, { color: string; glow: string; iconBg: string }>","variantToType: Record<string, NotificationType>","effectiveType: NotificationType","containerStyles: CSSProperties","iconContainerStyles: CSSProperties","popoverStyles: React.CSSProperties","arrowStyles: React.CSSProperties","skeletonStyles: CSSProperties","trackStyles: CSSProperties","fillStyles: CSSProperties","thumbStyles: CSSProperties","TabsRoot: FC<TabsRootProps>","containerStyles: CSSProperties","tabStyles: CSSProperties","TabsContent: FC<TabsContentProps>","trackStyles: CSSProperties","knobStyles: CSSProperties","tooltipStyles: CSSProperties","textStyles: CSSProperties","chevronStyles: CSSProperties","iconStyles: CSSProperties","gradientStyles: CSSProperties | undefined","subtleStyles: CSSProperties | undefined","iconStyles: CSSProperties","containerStyles: CSSProperties","inputStyles: CSSProperties","buttonStyles: CSSProperties","fieldLabels: Record<SortField, string>","buttonStyles: CSSProperties","dropdownStyles: CSSProperties","textStyles: CSSProperties","iconStyles: CSSProperties","themes: ThemeName[]","themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }>","buttonStyles: CSSProperties","iconStyles: CSSProperties","sizeClasses: Record<StatusSize, string>","statusSymbols: Record<StatusType, string>","statusVarMap: Record<StatusType, { bg: string; glow: string }>","indicatorStyles: CSSProperties","flagVarMap: Record<FlagType, { bg: string; border: string; text: string; statusType: StatusType }>","alertStyles: CSSProperties","defaultLangColors: Record<string, string>","barStyles: CSSProperties","segmentStyles: CSSProperties","sizeClasses: Record<ProfileAvatarSize, string>","statusSizeClasses: Record<ProfileAvatarSize, string>","statusPositionClasses: Record<ProfileAvatarSize, string>","statusVarMap: Record<ProfileAvatarStatus, string>","avatarStyles: CSSProperties","gradients: Record<ProgressGradient, { from: string; to: string; glowVar: string }>","trackStyles: CSSProperties","fillStyles: CSSProperties","sizeClasses: Record<RainbowProgressSize, string>","trackStyles: CSSProperties","fillStyles: CSSProperties","containerStyles: CSSProperties","buttonStyles: CSSProperties","defaultFeatures: readonly string[]","titleStyles: CSSProperties","accentStyles: CSSProperties","statsStyles: CSSProperties","colorMap: Record<\n CircularMetricColor,\n { gradient: CircularProgressGradient; textVar: string }\n>","cardStyles: CSSProperties","mutedStyles: CSSProperties","primaryStyles: CSSProperties","colorToGradient: Record<MetricColor, ProgressGradient>","metricVarMap: Record<MetricColor, { bg: string; text: string; border: string; glow: string }>","valueStyles: CSSProperties","expandedStyles: CSSProperties","metricCardStyles: CSSProperties","titleStyles: CSSProperties","starStyles: CSSProperties","mutedStyles: CSSProperties","mutedStyles: CSSProperties","secondaryStyles: CSSProperties","titleStyles: CSSProperties","accentStyles: CSSProperties","mutedStyles: CSSProperties","titleStyles: CSSProperties","metaStyles: CSSProperties","linkStyles: CSSProperties","expandedStyles: CSSProperties","metricCardStyles: CSSProperties","titleStyles: CSSProperties","themes: ThemeName[]","themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }>","headerStyles: CSSProperties","iconBtnStyles: CSSProperties","themeBtnStyles: CSSProperties","emptyContainerStyles: CSSProperties"],"sources":["../src/lib/variants/alert-glass-variants.ts","../src/components/glass/primitives/style-utils.ts","../src/components/glass/primitives/touch-target.tsx","../src/components/glass/primitives/form-field-wrapper.tsx","../src/components/glass/primitives/interactive-card.tsx","../src/components/glass/ui/alert-glass.tsx","../src/lib/variants/avatar-glass-variants.ts","../src/components/glass/ui/avatar-glass.tsx","../src/lib/variants/badge-glass-variants.ts","../src/components/glass/ui/badge-glass.tsx","../src/lib/variants/button-glass-variants.ts","../src/components/glass/ui/button-glass.tsx","../src/components/glass/ui/checkbox-glass.tsx","../src/components/glass/ui/circular-progress-glass.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/ui/popover.tsx","../node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/cmdk/dist/index.mjs","../src/components/ui/command.tsx","../src/lib/variants/input-glass-variants.ts","../src/lib/variants/dropdown-content-styles.ts","../src/components/glass/ui/combobox-glass.tsx","../src/components/glass/ui/dropdown-glass.tsx","../src/lib/variants/glass-card-variants.ts","../src/components/glass/ui/glass-card.tsx","../src/components/glass/ui/input-glass.tsx","../src/lib/variants/modal-glass-variants.ts","../src/components/glass/ui/modal-glass.tsx","../src/lib/variants/notification-glass-variants.ts","../src/components/glass/ui/notification-glass.tsx","../src/components/glass/ui/popover-glass.tsx","../src/lib/variants/skeleton-glass-variants.ts","../src/components/glass/ui/skeleton-glass.tsx","../src/components/glass/ui/slider-glass.tsx","../src/components/glass/ui/tabs-glass.tsx","../src/lib/variants/toggle-glass-variants.ts","../src/components/glass/ui/toggle-glass.tsx","../src/lib/variants/tooltip-glass-variants.ts","../src/components/glass/ui/tooltip-glass.tsx","../src/components/glass/atomic/expandable-header-glass.tsx","../src/components/glass/atomic/icon-button-glass.tsx","../src/components/glass/atomic/search-box-glass.tsx","../src/components/glass/atomic/sort-dropdown-glass.tsx","../src/components/glass/atomic/stat-item-glass.tsx","../src/components/glass/atomic/theme-toggle-glass.tsx","../src/components/glass/specialized/base-progress-glass.tsx","../src/components/glass/specialized/status-indicator-glass.tsx","../src/components/glass/specialized/flag-alert-glass.tsx","../src/components/glass/specialized/language-bar-glass.tsx","../src/components/glass/specialized/profile-avatar-glass.tsx","../src/lib/variants/progress-glass-variants.ts","../src/components/glass/specialized/progress-glass.tsx","../src/components/glass/specialized/rainbow-progress-glass.tsx","../src/components/glass/specialized/segmented-control-glass.tsx","../src/components/glass/composite/ai-card-glass.tsx","../src/components/glass/composite/career-stats-header-glass.tsx","../src/components/glass/composite/circular-metric-glass.tsx","../src/components/glass/composite/contribution-metrics-glass.tsx","../src/components/glass/composite/metric-card-glass.tsx","../src/components/glass/composite/metrics-grid-glass.tsx","../src/components/glass/composite/repository-card-glass.tsx","../src/components/glass/composite/repository-header-glass.tsx","../src/components/glass/composite/repository-metadata-glass.tsx","../src/components/glass/composite/trust-score-display-glass.tsx","../src/components/glass/composite/user-info-glass.tsx","../src/components/glass/composite/user-stats-line-glass.tsx","../src/components/glass/composite/year-card-glass.tsx","../src/components/glass/sections/career-stats-glass.tsx","../src/components/glass/sections/flags-section-glass.tsx","../src/components/glass/sections/header-branding-glass.tsx","../src/components/glass/sections/header-nav-glass.tsx","../src/components/glass/sections/profile-header-glass.tsx","../src/components/glass/sections/projects-list-glass.tsx","../src/components/glass/sections/trust-score-card-glass.tsx"],"sourcesContent":["/**\n * AlertGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\n// shadcn/ui compatible\nexport type AlertVariant =\n // shadcn/ui compatible variants\n | 'default'\n | 'destructive'\n // Glass UI extended variants\n | 'success'\n | 'warning'\n // Backward compatibility aliases\n | 'info' // alias for 'default'\n | 'error'; // alias for 'destructive'\n\n// Deprecated: use AlertVariant instead\nexport type AlertType = AlertVariant;\n\nexport const alertVariants = cva(\n 'flex items-start gap-2 md:gap-3 p-3 md:p-4 rounded-xl transition-all duration-300 backdrop-blur-sm min-w-96 max-w-2xl',\n {\n variants: {\n variant: {\n default: '',\n destructive: '',\n success: '',\n warning: '',\n info: '', // alias for default\n error: '', // alias for destructive\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n","/**\n * Style Utilities for Glass Components\n *\n * Centralized style constants and helper functions to reduce code duplication\n * and ensure consistency across all glass components.\n */\n\nimport type { CSSProperties } from 'react';\n\n// ============================================\n// ICON SIZES\n// ============================================\n\n/**\n * Standard icon size constants used across all glass components.\n * Provides consistent sizing with responsive variants.\n *\n * @example\n * ```tsx\n * <Icon className={ICON_SIZES.md} />\n * ```\n */\nexport const ICON_SIZES = {\n xs: 'w-2.5 h-2.5 md:w-3 md:h-3',\n sm: 'w-3 h-3 md:w-3.5 md:h-3.5',\n md: 'w-3.5 h-3.5 md:w-4 md:h-4', // Most common - default\n lg: 'w-4 h-4 md:w-5 md:h-5',\n xl: 'w-5 h-5 md:w-6 md:h-6',\n} as const;\n\n/**\n * Type representing available icon sizes\n */\nexport type IconSize = keyof typeof ICON_SIZES;\n\n// ============================================\n// GLASS SURFACE STYLES\n// ============================================\n\n/**\n * Options for generating glass surface styles\n */\nexport interface GlassSurfaceOptions {\n /** CSS variable for background, e.g. 'var(--card-bg)' */\n bg: string;\n /** CSS variable for border color */\n border: string;\n /** Blur intensity level */\n blur?: 'sm' | 'md' | 'lg' | 'xl';\n /** CSS variable for glow/shadow effect */\n shadow?: string;\n}\n\n/**\n * Generate consistent glass surface styles with backdrop blur.\n *\n * Applies glassmorphism effect with configurable blur, background,\n * border, and optional glow shadow.\n *\n * @param options - Surface styling options\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * const styles = getGlassSurfaceStyles({\n * bg: 'var(--card-bg)',\n * border: 'var(--card-border)',\n * blur: 'md',\n * shadow: 'var(--glow-primary)'\n * });\n * ```\n */\nexport function getGlassSurfaceStyles(\n options: GlassSurfaceOptions\n): CSSProperties {\n const blurValue = options.blur ?? 'md';\n return {\n background: options.bg,\n border: `1px solid ${options.border}`,\n backdropFilter: `blur(var(--blur-${blurValue}))`,\n WebkitBackdropFilter: `blur(var(--blur-${blurValue}))`,\n boxShadow: options.shadow ?? 'none',\n };\n}\n\n// ============================================\n// HOVER TRANSFORM STYLES\n// ============================================\n\n/**\n * Options for hover transform effects\n */\nexport interface HoverTransformOptions {\n /** Enable vertical lift effect (translateY) */\n lift?: boolean;\n /** Scale factor on hover (e.g., 1.02) */\n scale?: number;\n}\n\n/**\n * Generate hover transform styles with smooth transitions.\n *\n * Provides consistent hover animations across interactive elements.\n * Supports lift (translateY) and scale effects.\n *\n * @param isHovered - Current hover state\n * @param options - Transform options\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * const styles = getHoverTransformStyles(isHovered, {\n * lift: true,\n * scale: 1.02\n * });\n * ```\n */\nexport function getHoverTransformStyles(\n isHovered: boolean,\n options?: HoverTransformOptions\n): CSSProperties {\n const { lift = true, scale } = options ?? {};\n\n const transforms: string[] = [];\n\n if (lift) {\n transforms.push(isHovered ? 'translateY(-2px)' : 'translateY(0)');\n }\n\n if (scale && isHovered) {\n transforms.push(`scale(${scale})`);\n }\n\n return {\n transform: transforms.join(' ') || 'none',\n transition: 'transform var(--transition-base)',\n };\n}\n\n// ============================================\n// FORM FIELD BORDER COLOR\n// ============================================\n\n/**\n * Options for determining form field border color\n */\nexport interface StateBorderColorOptions {\n /** Error message (highest priority) */\n error?: string;\n /** Success message */\n success?: string;\n /** Focus state */\n isFocused?: boolean;\n /** Default border color when no state is active */\n defaultColor?: string;\n}\n\n/**\n * Determine border color based on form field state.\n *\n * Priority order: error > success > focus > default\n *\n * @param options - State and color options\n * @returns CSS variable string for border color\n *\n * @example\n * ```tsx\n * const borderColor = getStateBorderColor({\n * error: 'Username is required',\n * isFocused: true,\n * defaultColor: 'var(--input-border)'\n * });\n * // Returns: 'var(--alert-danger-text)' due to error priority\n * ```\n */\nexport function getStateBorderColor(\n options: StateBorderColorOptions\n): string {\n if (options.error) return 'var(--alert-danger-text)';\n if (options.success) return 'var(--alert-success-text)';\n if (options.isFocused) return 'var(--input-focus-border)';\n return options.defaultColor ?? 'var(--input-border)';\n}\n\n// ============================================\n// BLUR VALUES\n// ============================================\n\n/**\n * Standard blur values from design system (UI_DESIGN.md)\n *\n * - sm: 8px (subtle effects, close to surface)\n * - md: 16px (standard glassmorphism)\n * - lg: 24px (prominent glass layers)\n * - xl: 32px (heavy blur for modals/overlays)\n */\nexport const BLUR_VALUES = {\n sm: 'var(--blur-sm)', // 8px\n md: 'var(--blur-md)', // 16px\n lg: 'var(--blur-lg)', // 24px\n xl: 'var(--blur-xl)', // 32px\n} as const;\n\n/**\n * Type representing available blur levels\n */\nexport type BlurLevel = keyof typeof BLUR_VALUES;\n\n// ============================================\n// TRANSITION DURATIONS\n// ============================================\n\n/**\n * Standard transition duration constants\n *\n * Matches design system animation tokens\n */\nexport const TRANSITIONS = {\n fast: 'var(--transition-fast)', // 150ms\n base: 'var(--transition-base)', // 200ms\n slow: 'var(--transition-slow)', // 300ms\n} as const;\n\n/**\n * Type representing available transition speeds\n */\nexport type TransitionSpeed = keyof typeof TRANSITIONS;\n","/**\n * TouchTarget Component\n *\n * Ensures minimum touch target size compliance with Apple Human Interface Guidelines.\n * Wraps interactive elements to guarantee accessibility on touch devices.\n *\n * Apple HIG recommends minimum 44×44pt (44×44px) touch targets.\n * Material Design recommends 48×48dp for better accessibility.\n *\n * @see https://developer.apple.com/design/human-interface-guidelines/layout\n */\n\nimport { forwardRef, type ReactNode, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * Props for the TouchTarget component\n */\nexport interface TouchTargetProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Child element(s) to wrap with touch target\n */\n children: ReactNode;\n\n /**\n * Minimum touch target size in pixels\n * @default 44 - Apple HIG minimum\n */\n minSize?: 44 | 48;\n\n /**\n * Center content within touch target\n * @default true\n */\n center?: boolean;\n}\n\n/**\n * TouchTarget wrapper component\n *\n * Ensures interactive elements meet accessibility standards for touch devices.\n * Automatically applies minimum dimensions and optional centering.\n *\n * @example\n * ```tsx\n * // Basic usage with default 44px minimum\n * <TouchTarget>\n * <button className=\"w-8 h-8\">×</button>\n * </TouchTarget>\n *\n * // Material Design 48px minimum\n * <TouchTarget minSize={48}>\n * <Checkbox />\n * </TouchTarget>\n *\n * // Custom alignment\n * <TouchTarget center={false} className=\"justify-start\">\n * <IconButton />\n * </TouchTarget>\n * ```\n */\nexport const TouchTarget = forwardRef<HTMLDivElement, TouchTargetProps>(\n ({ children, minSize = 44, center = true, className, ...props }, ref) => {\n // Map minSize to Tailwind classes\n // 44px = 11 × 4px (min-h-11, min-w-11)\n // 48px = 12 × 4px (min-h-12, min-w-12)\n const sizeClass = minSize === 44 ? 'min-h-11 min-w-11' : 'min-h-12 min-w-12';\n\n return (\n <div\n ref={ref}\n className={cn(\n sizeClass,\n center && 'flex items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTouchTarget.displayName = 'TouchTarget';\n","/**\n * FormFieldWrapper Component\n *\n * Unified wrapper for form controls with label, validation states, and messages.\n * Eliminates code duplication across InputGlass, SliderGlass, ComboBoxGlass, etc.\n *\n * Handles:\n * - Label with optional required indicator\n * - Error messages (highest priority, red)\n * - Success messages (green, shown if no error)\n * - Consistent spacing and typography\n */\n\nimport { forwardRef, type ReactNode, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * Props for the FormFieldWrapper component\n */\nexport interface FormFieldWrapperProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Label text displayed above the field\n */\n label?: string;\n\n /**\n * Error message - takes priority over success\n * Displays in red below the field\n */\n error?: string;\n\n /**\n * Success message - displays in green if no error\n * Displays below the field\n */\n success?: string;\n\n /**\n * ID to link label with input via htmlFor\n * Should match the input's id attribute\n */\n htmlFor?: string;\n\n /**\n * Shows red asterisk (*) next to label\n * @default false\n */\n required?: boolean;\n\n /**\n * The form control element(s) to wrap\n */\n children: ReactNode;\n}\n\n/**\n * FormFieldWrapper component\n *\n * Provides consistent structure for form fields with labels and validation messages.\n * Used by InputGlass, SliderGlass, and other form components.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <FormFieldWrapper label=\"Email\" htmlFor=\"email-input\">\n * <input id=\"email-input\" type=\"email\" />\n * </FormFieldWrapper>\n *\n * // With validation\n * <FormFieldWrapper\n * label=\"Username\"\n * error=\"Username is required\"\n * required\n * htmlFor=\"username\"\n * >\n * <input id=\"username\" />\n * </FormFieldWrapper>\n *\n * // Success state\n * <FormFieldWrapper\n * label=\"Password\"\n * success=\"Strong password\"\n * htmlFor=\"password\"\n * >\n * <input id=\"password\" type=\"password\" />\n * </FormFieldWrapper>\n * ```\n */\nexport const FormFieldWrapper = forwardRef<HTMLDivElement, FormFieldWrapperProps>(\n (\n {\n label,\n error,\n success,\n htmlFor,\n required,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1 md:gap-1.5', className)}\n {...props}\n >\n {label && (\n <label\n htmlFor={htmlFor}\n className=\"text-xs md:text-sm font-medium\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {label}\n {required && (\n <span className=\"text-[var(--alert-danger-text)] ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </label>\n )}\n\n {children}\n\n {error && (\n <p\n className=\"text-xs\"\n style={{ color: 'var(--alert-danger-text)' }}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {error}\n </p>\n )}\n\n {success && !error && (\n <p\n className=\"text-xs\"\n style={{ color: 'var(--alert-success-text)' }}\n aria-live=\"polite\"\n >\n {success}\n </p>\n )}\n </div>\n );\n }\n);\n\nFormFieldWrapper.displayName = 'FormFieldWrapper';\n","/**\n * InteractiveCard Component\n *\n * Unified wrapper for card components with hover animations and glass effects.\n * Eliminates hover state duplication in MetricCardGlass, YearCardGlass,\n * AICardGlass, RepositoryCardGlass, and other card components.\n *\n * Features:\n * - Hover lift animation (translateY -2px)\n * - Optional glow effects\n * - Glass surface with backdrop blur\n * - Configurable backgrounds and borders\n */\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\n\n/**\n * Props for the InteractiveCard component\n */\nexport interface InteractiveCardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Enable hover lift effect (translateY -2px)\n * @default true\n */\n hoverLift?: boolean;\n\n /**\n * CSS variable for hover glow effect\n * @example 'var(--glow-primary)'\n */\n hoverGlow?: string;\n\n /**\n * CSS variable for hover background\n * @example 'var(--card-hover-bg)'\n */\n hoverBg?: string;\n\n /**\n * CSS variable for base background\n * @default 'var(--card-bg)'\n */\n baseBg?: string;\n\n /**\n * CSS variable for border color\n * @default 'var(--card-border)'\n */\n borderColor?: string;\n\n /**\n * CSS variable for hover border color\n */\n hoverBorderColor?: string;\n\n /**\n * Blur level for glass effect\n * @default 'sm'\n */\n blur?: 'sm' | 'md' | 'lg' | 'xl';\n\n /**\n * Disable all hover interactions\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Border radius class\n * @default 'rounded-2xl'\n */\n rounded?: 'rounded-xl' | 'rounded-2xl' | 'rounded-3xl';\n\n /**\n * Transition speed\n * @default 'var(--transition-slow)'\n */\n transition?: string;\n}\n\n/**\n * InteractiveCard component\n *\n * Provides consistent hover animations and glass effects for card components.\n * Replaces ~80 lines of duplicated hover state management across 4+ components.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <InteractiveCard>\n * <h3>Card Title</h3>\n * <p>Card content</p>\n * </InteractiveCard>\n *\n * // With hover effects\n * <InteractiveCard\n * hoverLift\n * hoverGlow=\"var(--glow-primary)\"\n * hoverBg=\"var(--card-hover-bg)\"\n * hoverBorderColor=\"var(--card-hover-border)\"\n * >\n * <MetricContent />\n * </InteractiveCard>\n *\n * // Custom blur and rounding\n * <InteractiveCard\n * blur=\"md\"\n * rounded=\"rounded-3xl\"\n * baseBg=\"var(--metric-emerald-bg)\"\n * >\n * <StatusCard />\n * </InteractiveCard>\n * ```\n */\nexport const InteractiveCard = forwardRef<HTMLDivElement, InteractiveCardProps>(\n (\n {\n hoverLift = true,\n hoverGlow,\n hoverBg,\n baseBg = 'var(--card-bg)',\n borderColor = 'var(--card-border)',\n hoverBorderColor,\n blur = 'sm',\n disabled = false,\n rounded = 'rounded-2xl',\n transition = 'var(--transition-slow)',\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover({ includeFocus: !disabled });\n\n const cardStyles: CSSProperties = {\n // Background\n background: isHovered && hoverBg ? hoverBg : baseBg,\n\n // Border\n border: `1px solid ${\n isHovered && hoverBorderColor ? hoverBorderColor : borderColor\n }`,\n\n // Glassmorphism\n backdropFilter: `blur(var(--blur-${blur}))`,\n WebkitBackdropFilter: `blur(var(--blur-${blur}))`,\n\n // Hover transform\n transform: hoverLift && isHovered && !disabled ? 'translateY(-2px)' : 'translateY(0)',\n\n // Glow effect\n boxShadow: isHovered && hoverGlow && !disabled ? hoverGlow : 'none',\n\n // Transition\n transition: `all ${transition}`,\n\n // User styles override\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(rounded, className)}\n style={cardStyles}\n {...(disabled ? {} : hoverProps)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nInteractiveCard.displayName = 'InteractiveCard';\n","/**\n * AlertGlass Component\n *\n * Glass-themed alert with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - shadcn/ui compatible variants (default, destructive)\n * - Extended Glass UI variants (success, warning)\n * - Optional title\n * - Dismissible option\n * - Backdrop blur effect\n */\n\nimport { forwardRef, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport {\n Info,\n CheckCircle,\n AlertTriangle,\n AlertCircle,\n X,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { alertVariants } from '@/lib/variants/alert-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\nimport type { AlertVariant } from '@/lib/variants/alert-glass-variants';\n\n// ========================================\n// ICON MAP\n// ========================================\n\nconst iconMap: Record<AlertVariant, typeof Info> = {\n default: Info,\n destructive: AlertCircle,\n success: CheckCircle,\n warning: AlertTriangle,\n // Aliases\n info: Info,\n error: AlertCircle,\n};\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\ntype AlertStyleVars = { bg: string; border: string; text: string };\n\nconst variantStyles: Record<AlertVariant, AlertStyleVars> = {\n // shadcn/ui compatible variants\n default: {\n bg: 'var(--alert-default-bg)',\n border: 'var(--alert-default-border)',\n text: 'var(--alert-default-text)',\n },\n destructive: {\n bg: 'var(--alert-destructive-bg)',\n border: 'var(--alert-destructive-border)',\n text: 'var(--alert-destructive-text)',\n },\n // Glass UI extended variants\n success: {\n bg: 'var(--alert-success-bg)',\n border: 'var(--alert-success-border)',\n text: 'var(--alert-success-text)',\n },\n warning: {\n bg: 'var(--alert-warning-bg)',\n border: 'var(--alert-warning-border)',\n text: 'var(--alert-warning-text)',\n },\n // Backward compatibility aliases\n info: {\n bg: 'var(--alert-default-bg)',\n border: 'var(--alert-default-border)',\n text: 'var(--alert-default-text)',\n },\n error: {\n bg: 'var(--alert-destructive-bg)',\n border: 'var(--alert-destructive-border)',\n text: 'var(--alert-destructive-text)',\n },\n};\n\nconst getAlertStyles = (variant: AlertVariant): CSSProperties => {\n const config = variantStyles[variant];\n return {\n background: config.bg,\n border: `1px solid ${config.border}`,\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the AlertGlass component\n *\n * A glass-themed alert with semantic variants, dismissible option, and automatic icon selection.\n * Features theme-aware styling and WCAG-compliant role attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Dismissible alerts include a keyboard-accessible close button (Tab + Enter/Space)\n * - **Focus Management:** Close button receives visible focus ring (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"alert\"` for immediate announcement to screen readers (WCAG 4.1.3)\n * - **Icon Semantics:** Icons are decorative and hidden from screen readers with `aria-hidden=\"true\"`\n * - **Variant Semantics:** Each variant uses distinct colors and icons for multi-modal communication (color + icon)\n * - **Touch Targets:** Dismiss button meets minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** All variant text and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic alert (info/default variant)\n * <AlertGlass title=\"Information\" variant=\"default\">\n * This is an informational message\n * </AlertGlass>\n *\n * // Error alert with aria-live for dynamic updates\n * <AlertGlass variant=\"destructive\" title=\"Error\" aria-live=\"assertive\">\n * Your session has expired. Please log in again.\n * </AlertGlass>\n *\n * // Success alert\n * <AlertGlass variant=\"success\" title=\"Success\">\n * Your changes have been saved successfully.\n * </AlertGlass>\n *\n * // Warning alert\n * <AlertGlass variant=\"warning\" title=\"Warning\">\n * Your subscription expires in 3 days.\n * </AlertGlass>\n *\n * // Dismissible alert with accessible close button\n * <AlertGlass\n * variant=\"default\"\n * title=\"Welcome\"\n * dismissible\n * onDismiss={() => setShowAlert(false)}\n * >\n * Check out our new features!\n * </AlertGlass>\n *\n * // Alert without title\n * <AlertGlass variant=\"destructive\">\n * Quick error message without title\n * </AlertGlass>\n *\n * // Form validation alert\n * <form onSubmit={handleSubmit}>\n * {formError && (\n * <AlertGlass variant=\"destructive\" title=\"Validation Error\" role=\"alert\">\n * {formError}\n * </AlertGlass>\n * )}\n * <InputGlass label=\"Email\" />\n * <ButtonGlass type=\"submit\">Submit</ButtonGlass>\n * </form>\n * ```\n */\nexport interface AlertGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'title'>,\n VariantProps<typeof alertVariants> {\n readonly title?: string;\n readonly children: ReactNode;\n readonly dismissible?: boolean;\n readonly onDismiss?: () => void;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const AlertGlass = forwardRef<HTMLDivElement, AlertGlassProps>(\n (\n {\n className,\n variant = 'default',\n title,\n children,\n dismissible,\n onDismiss,\n ...props\n },\n ref\n ) => {\n // Ensure variant is never null/undefined for type safety\n const effectiveVariant: AlertVariant = variant ?? 'default';\n\n const config = variantStyles[effectiveVariant];\n const Icon = iconMap[effectiveVariant];\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ variant: effectiveVariant }), className)}\n style={getAlertStyles(effectiveVariant)}\n role=\"alert\"\n {...props}\n >\n <Icon\n className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 mt-0.5\"\n style={{ color: config.text }}\n />\n <div className=\"flex-1\">\n {title && (\n <p\n className=\"font-medium text-xs md:text-sm mb-0.5 md:mb-1\"\n style={{ color: config.text }}\n >\n {title}\n </p>\n )}\n <p className=\"text-xs md:text-sm opacity-80\" style={{ color: config.text }}>\n {children}\n </p>\n </div>\n {dismissible && (\n <button\n onClick={onDismiss}\n className=\"p-0.5 md:p-1 rounded transition-colors duration-200 hover:bg-black/5 flex-shrink-0\"\n aria-label=\"Dismiss alert\"\n >\n <X className={ICON_SIZES.md} style={{ color: config.text }} />\n </button>\n )}\n </div>\n );\n }\n);\n\nAlertGlass.displayName = 'AlertGlass';\n","/**\n * AvatarGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport const avatarSizes = cva(\n 'rounded-full flex items-center justify-center font-semibold transition-all duration-300',\n {\n variants: {\n size: {\n sm: 'w-7 h-7 md:w-8 md:h-8 text-[10px] md:text-xs',\n md: 'w-9 h-9 md:w-10 md:h-10 text-xs md:text-sm',\n lg: 'w-10 h-10 md:w-12 md:h-12 text-sm md:text-base',\n xl: 'w-14 h-14 md:w-16 md:h-16 text-base md:text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const statusSizes = cva('absolute -bottom-0.5 -right-0.5 rounded-full', {\n variants: {\n size: {\n sm: 'w-2 h-2 md:w-2.5 md:h-2.5',\n md: 'w-2.5 h-2.5 md:w-3 md:h-3',\n lg: 'w-3 h-3 md:w-3.5 md:h-3.5',\n xl: 'w-3.5 h-3.5 md:w-4 md:h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * AvatarGlass Component\n *\n * Glass-themed avatar with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover\n * - Status indicator with glow\n * - Size variants\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { avatarSizes, statusSizes } from '@/lib/variants/avatar-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\n/**\n * Avatar status indicator type\n */\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the AvatarGlass component\n *\n * A glass-themed avatar component with status indicators and size variants.\n * Displays user initials with theme-aware styling and optional status badge.\n *\n * @example\n * ```tsx\n * // Basic avatar\n * <AvatarGlass name=\"John Doe\" />\n *\n * // With status indicator\n * <AvatarGlass name=\"Jane Smith\" status=\"online\" size=\"lg\" />\n *\n * // Different sizes\n * <AvatarGlass name=\"Alex\" size=\"sm\" />\n * <AvatarGlass name=\"Sam\" size=\"xl\" />\n *\n * // As a link (asChild pattern)\n * <AvatarGlass asChild name=\"Sarah Connor\" status=\"online\">\n * <a href=\"/profile/sarah\">View Profile</a>\n * </AvatarGlass>\n * ```\n */\nexport interface AvatarGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof avatarSizes> {\n /**\n * Render as child element instead of div (polymorphic rendering).\n * Useful for making avatars clickable links.\n * @default false\n * @example\n * ```tsx\n * <AvatarGlass asChild name=\"John\">\n * <a href=\"/profile\">View Profile</a>\n * </AvatarGlass>\n * ```\n */\n readonly asChild?: boolean;\n\n /**\n * Full name of the user. Automatically generates initials (first 2 letters).\n * @example \"John Doe\" → \"JD\"\n */\n readonly name: string;\n\n /**\n * Optional status indicator with glow effect\n * @default undefined\n */\n readonly status?: AvatarStatus;\n\n /**\n * Size variant of the avatar\n * @default \"md\"\n */\n readonly size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst getInitials = (name: string): string => {\n if (!name || name.trim().length === 0) return '?';\n return name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Status colors mapping to CSS variables\nconst getStatusVars = (statusType: AvatarStatus): { bg: string; glow: string } => {\n const statusVars: Record<AvatarStatus, { bg: string; glow: string }> = {\n online: { bg: 'var(--status-online)', glow: 'var(--status-online-glow)' },\n offline: { bg: 'var(--status-offline)', glow: 'none' },\n busy: { bg: 'var(--status-busy)', glow: 'var(--status-busy-glow)' },\n away: { bg: 'var(--status-away)', glow: 'var(--status-away-glow)' },\n };\n return statusVars[statusType];\n};\n\nexport const AvatarGlass = forwardRef<HTMLDivElement, AvatarGlassProps>(\n ({ asChild = false, name, size = 'md', status, className, ...props }, ref) => {\n const { isHovered, hoverProps } = useHover();\n\n const avatarStyles: CSSProperties = {\n background: 'var(--avatar-bg)',\n border: '2px solid var(--avatar-border)',\n boxShadow: isHovered ? 'var(--avatar-hover-glow)' : 'var(--avatar-shadow)',\n color: '#ffffff',\n };\n\n const initials = getInitials(name);\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n className={cn('relative inline-flex', className)}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {/* Avatar circle */}\n <div\n className={cn(avatarSizes({ size }))}\n style={avatarStyles}\n role=\"img\"\n aria-label={`Avatar for ${name}`}\n >\n {initials}\n </div>\n\n {/* Status indicator */}\n {status && (\n <span\n className={cn(statusSizes({ size }))}\n style={{\n background: getStatusVars(status).bg,\n boxShadow: getStatusVars(status).glow,\n }}\n role=\"status\"\n aria-label={`Status: ${status}`}\n />\n )}\n </Comp>\n );\n }\n);\n\nAvatarGlass.displayName = 'AvatarGlass';\n","/**\n * BadgeGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type BadgeVariant =\n // shadcn/ui compatible variants\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n // Glass UI extended variants\n | 'success'\n | 'warning'\n | 'info';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center gap-1 md:gap-1.5 rounded-full font-medium',\n {\n variants: {\n size: {\n sm: 'px-1 py-0.5 md:px-1.5 text-[9px] md:text-[10px]',\n md: 'px-2 py-0.5 md:px-2.5 text-[10px] md:text-xs',\n lg: 'px-2.5 py-0.5 md:px-3 md:py-1 text-xs md:text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n","/**\n * BadgeGlass Component\n *\n * Glass-themed badge with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - shadcn/ui compatible variants (default, secondary, destructive, outline)\n * - Extended Glass UI variants (success, warning, info)\n * - Size options\n * - Optional animated dot\n */\n\nimport { forwardRef, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { badgeVariants, type BadgeVariant } from '@/lib/variants/badge-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\ntype BadgeStyleVars = { bg: string; text: string; border: string };\n\nconst variantStyles: Record<BadgeVariant, BadgeStyleVars> = {\n // shadcn/ui compatible variants\n default: {\n bg: 'var(--badge-default-bg)',\n text: 'var(--badge-default-text)',\n border: 'var(--badge-default-border)',\n },\n secondary: {\n bg: 'var(--badge-secondary-bg)',\n text: 'var(--badge-secondary-text)',\n border: 'var(--badge-secondary-border)',\n },\n destructive: {\n bg: 'var(--badge-destructive-bg)',\n text: 'var(--badge-destructive-text)',\n border: 'var(--badge-destructive-border)',\n },\n outline: {\n bg: 'var(--badge-outline-bg)',\n text: 'var(--badge-outline-text)',\n border: 'var(--badge-outline-border)',\n },\n // Glass UI extended variants\n success: {\n bg: 'var(--badge-success-bg)',\n text: 'var(--badge-success-text)',\n border: 'var(--badge-success-border)',\n },\n warning: {\n bg: 'var(--badge-warning-bg)',\n text: 'var(--badge-warning-text)',\n border: 'var(--badge-warning-border)',\n },\n info: {\n bg: 'var(--badge-info-bg)',\n text: 'var(--badge-info-text)',\n border: 'var(--badge-info-border)',\n },\n};\n\nconst getBadgeStyles = (variant: BadgeVariant): CSSProperties => {\n const v = variantStyles[variant] || variantStyles.default;\n return {\n background: v.bg,\n color: v.text,\n border: `1px solid ${v.border}`,\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the BadgeGlass component\n *\n * A glass-themed badge with semantic variants and optional animated status dot.\n * Features shadcn/ui compatible variants plus extended Glass UI variants.\n *\n * @accessibility\n * - **Keyboard Navigation:** Badges are non-interactive by default (display-only)\n * - **Focus Management:** N/A - badges do not receive focus unless wrapped in interactive elements\n * - **Screen Readers:** Semantic `<span>` element, content announced naturally\n * - **Status Indicators:** Use `aria-label` to provide context for status badges (e.g., \"Status: Active\")\n * - **Animated Dot:** Pulse animation respects `prefers-reduced-motion` settings\n * - **Touch Targets:** N/A for display badges, ensure 44x44px if wrapping in button/link (WCAG 2.5.5)\n * - **Color Contrast:** All variant text meets WCAG AA contrast ratio 4.5:1 against badge background\n * - **Motion:** Dot pulse animation can be disabled for users with motion sensitivity\n *\n * @example\n * ```tsx\n * // Basic badge with variant\n * <BadgeGlass variant=\"default\">New</BadgeGlass>\n *\n * // Status badge with aria-label for screen readers\n * <BadgeGlass variant=\"success\" aria-label=\"Status: Active\">\n * Active\n * </BadgeGlass>\n *\n * // Different variants (shadcn/ui compatible)\n * <BadgeGlass variant=\"default\">Default</BadgeGlass>\n * <BadgeGlass variant=\"secondary\">Secondary</BadgeGlass>\n * <BadgeGlass variant=\"destructive\">Error</BadgeGlass>\n * <BadgeGlass variant=\"outline\">Outline</BadgeGlass>\n *\n * // Extended Glass UI variants\n * <BadgeGlass variant=\"success\">Success</BadgeGlass>\n * <BadgeGlass variant=\"warning\">Warning</BadgeGlass>\n * <BadgeGlass variant=\"info\">Info</BadgeGlass>\n *\n * // With animated status dot\n * <BadgeGlass variant=\"success\" dot aria-label=\"Status: Online\">\n * Online\n * </BadgeGlass>\n * <BadgeGlass variant=\"destructive\" dot aria-label=\"Status: Offline\">\n * Offline\n * </BadgeGlass>\n *\n * // Size variants\n * <BadgeGlass size=\"sm\">Small</BadgeGlass>\n * <BadgeGlass size=\"md\">Medium</BadgeGlass>\n * <BadgeGlass size=\"lg\">Large</BadgeGlass>\n *\n * // Inside interactive elements (ensure accessible labels)\n * <button aria-label=\"Filter by active status\">\n * Filter: <BadgeGlass variant=\"success\">Active</BadgeGlass>\n * </button>\n *\n * // Count badge with semantic meaning\n * <div>\n * <span>Notifications</span>\n * <BadgeGlass variant=\"destructive\" aria-label=\"3 unread notifications\">\n * 3\n * </BadgeGlass>\n * </div>\n * ```\n */\nexport interface BadgeGlassProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'style'>,\n VariantProps<typeof badgeVariants> {\n readonly children: ReactNode;\n readonly variant?: BadgeVariant;\n readonly dot?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const BadgeGlass = forwardRef<HTMLSpanElement, BadgeGlassProps>(\n (\n { children, className, variant = 'default', size = 'md', dot, ...props },\n ref\n ) => {\n const v = variantStyles[variant];\n\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ size }), className)}\n style={getBadgeStyles(variant)}\n {...props}\n >\n {dot && (\n <span\n className=\"w-1 h-1 md:w-1.5 md:h-1.5 rounded-full animate-pulse\"\n style={{ background: v.text }}\n />\n )}\n {children}\n </span>\n );\n }\n);\n\nBadgeGlass.displayName = 'BadgeGlass';\n","/**\n * ButtonGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ButtonGlassVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'destructive'\n | 'success'\n | 'text';\n\nexport type ButtonGlassSize = 'sm' | 'md' | 'lg' | 'xl' | 'icon';\n\nexport const buttonGlassVariants = cva(\n 'relative overflow-hidden font-medium inline-flex items-center justify-center transition-all duration-300 ease-out cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n primary: '',\n secondary: '',\n ghost: '',\n destructive: '',\n success: '',\n text: '',\n },\n size: {\n // All sizes include min-h for touch target compliance (Apple HIG: 44px minimum)\n // Border radius per UI_DESIGN.md: sm/md=8px, lg=12px\n sm: 'px-3 py-1.5 text-sm gap-1.5 min-h-[44px] rounded-xl', // 8px radius\n md: 'px-4 py-2.5 text-sm gap-2 min-h-[44px] rounded-xl', // 8px radius\n lg: 'px-6 py-3 text-base gap-2.5 min-h-[48px] rounded-xl', // 12px radius\n xl: 'px-8 py-4 text-lg gap-3 min-h-[56px] rounded-xl', // 16px radius (beyond spec)\n icon: 'p-2.5 min-h-[44px] min-w-[44px] rounded-xl', // 8px radius\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n);\n","/**\n * ButtonGlass Component\n *\n * Glass-themed button with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - Glow effects on hover\n * - Ripple effect on click (JS)\n * - Shine animation for primary variant (JS)\n * - Loading state with spinner\n * - Icon support (left/right position)\n */\n\nimport {\n forwardRef,\n useState,\n useCallback,\n useEffect,\n useRef,\n type MouseEvent,\n type CSSProperties,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { RefreshCw, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { buttonGlassVariants, type ButtonGlassVariant } from '@/lib/variants/button-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE STYLE MAPS\n// ========================================\n\nconst getVariantStyles = (\n variant: ButtonGlassVariant,\n isHovered: boolean,\n isFocusVisible: boolean\n): CSSProperties => {\n const baseStyles: Record<ButtonGlassVariant, CSSProperties> = {\n primary: {\n background: isHovered\n ? 'var(--btn-primary-hover-bg)'\n : 'var(--btn-primary-bg)',\n color: 'var(--btn-primary-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-primary-glow)'\n : '0 4px 15px oklch(48.5% 0.26 283 / 0.25)',\n },\n secondary: {\n background: isHovered\n ? 'var(--btn-secondary-hover-bg)'\n : 'var(--btn-secondary-bg)',\n color: 'var(--btn-secondary-text)',\n border: '1px solid var(--btn-secondary-border)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-secondary-glow)'\n : 'none',\n },\n ghost: {\n background: isHovered\n ? 'var(--btn-ghost-hover-bg)'\n : 'var(--btn-ghost-bg)',\n color: 'var(--btn-ghost-text)',\n border: 'none',\n boxShadow: isFocusVisible ? 'var(--focus-glow)' : 'none',\n },\n destructive: {\n background: 'var(--btn-destructive-bg)',\n color: 'var(--btn-destructive-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-destructive-glow)'\n : '0 4px 15px oklch(62.8% 0.225 29 / 0.25)',\n },\n success: {\n background: 'var(--btn-success-bg)',\n color: 'var(--btn-success-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-success-glow)'\n : '0 4px 15px oklch(70.7% 0.143 167 / 0.25)',\n },\n text: {\n background: 'transparent',\n color: 'var(--text-secondary)',\n border: 'none',\n boxShadow: isFocusVisible ? 'var(--focus-glow)' : 'none',\n },\n };\n\n return baseStyles[variant];\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the ButtonGlass component\n *\n * A glass-themed button with ripple effects, loading states, and icon support.\n * Features theme-aware styling and hover animations.\n *\n * @accessibility\n * - **Keyboard Navigation:** Fully keyboard accessible with native `<button>` element\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Semantic `<button>` element, disabled state announced automatically\n * - **Loading State:** When loading=true, button is disabled and loading spinner is visible\n * - **Touch Targets:** Minimum 44x44px touch target (WCAG 2.5.5) via size variants\n * - **Color Contrast:** All variants meet WCAG AA contrast ratio 4.5:1 minimum\n * - **Motion:** Respects `prefers-reduced-motion` for ripple/shine animations\n *\n * @example\n * ```tsx\n * // Basic button\n * <ButtonGlass variant=\"primary\">Click me</ButtonGlass>\n *\n * // With icon and aria-label for icon-only buttons\n * <ButtonGlass icon={Check} iconPosition=\"left\">Save</ButtonGlass>\n * <ButtonGlass icon={X} size=\"icon\" aria-label=\"Close dialog\" />\n *\n * // Loading state (automatically disables and shows spinner)\n * <ButtonGlass loading aria-live=\"polite\">Processing...</ButtonGlass>\n *\n * // Different variants\n * <ButtonGlass variant=\"ghost\">Cancel</ButtonGlass>\n * <ButtonGlass variant=\"success\">Confirm</ButtonGlass>\n * <ButtonGlass variant=\"destructive\">Delete</ButtonGlass>\n *\n * // As a link (asChild pattern) - maintains semantic HTML\n * <ButtonGlass asChild variant=\"primary\">\n * <a href=\"/dashboard\">Go to Dashboard</a>\n * </ButtonGlass>\n *\n * // With Next.js Link\n * <ButtonGlass asChild variant=\"ghost\">\n * <Link href=\"/settings\">Settings</Link>\n * </ButtonGlass>\n *\n * // Form submit button\n * <ButtonGlass type=\"submit\" variant=\"primary\">\n * Submit Form\n * </ButtonGlass>\n * ```\n */\nexport interface ButtonGlassProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style'>,\n VariantProps<typeof buttonGlassVariants> {\n /**\n * Render as child element instead of button (polymorphic rendering).\n * Useful for rendering buttons as links or other interactive elements.\n *\n * **Note:** When using `asChild`, decorative effects (ripple, shine, glow)\n * are disabled to maintain compatibility with Radix UI Slot.\n * Only styles and event handlers are passed to the child element.\n *\n * @default false\n * @example\n * ```tsx\n * <ButtonGlass asChild>\n * <a href=\"/about\">About Us</a>\n * </ButtonGlass>\n * ```\n */\n readonly asChild?: boolean;\n\n /**\n * Visual style variant of the button\n * @default \"primary\"\n */\n readonly variant?: ButtonGlassVariant;\n\n /**\n * Show loading spinner and disable interactions\n * @default false\n */\n readonly loading?: boolean;\n\n /**\n * Icon component from lucide-react to display\n * @example icon={Check}\n */\n readonly icon?: LucideIcon;\n\n /**\n * Position of the icon relative to button text\n * @default \"left\"\n */\n readonly iconPosition?: 'left' | 'right';\n\n /**\n * Size variant of the button\n * @default \"md\"\n */\n readonly size?: 'sm' | 'md' | 'lg' | 'icon';\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ButtonGlass = forwardRef<HTMLButtonElement, ButtonGlassProps>(\n (\n {\n asChild = false,\n className,\n variant = 'primary',\n size = 'md',\n children,\n loading = false,\n disabled,\n icon: Icon,\n iconPosition = 'left',\n onClick,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const [ripple, setRipple] = useState<{ x: number; y: number } | null>(null);\n\n const isDisabled = disabled || loading;\n const rippleTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n // Cleanup ripple timeout on unmount\n useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n // Ripple effect handler\n const handleClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n\n // Create ripple effect\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setRipple({ x, y });\n\n // Clear previous timeout if exists\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n rippleTimeoutRef.current = setTimeout(() => {\n setRipple(null);\n rippleTimeoutRef.current = null;\n }, 600);\n\n onClick?.(e);\n },\n [isDisabled, onClick]\n );\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n className={cn(\n buttonGlassVariants({ variant, size }),\n isHovered && !isDisabled && 'scale-[1.02]',\n className\n )}\n style={{\n ...getVariantStyles(variant, isHovered && !isDisabled, isFocusVisible && !isDisabled),\n outline: 'none',\n }}\n type={asChild ? undefined : 'button'}\n disabled={isDisabled}\n onClick={handleClick}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n {...props}\n >\n {/* When asChild is true, only render children (Slot expects a single child) */}\n {asChild ? (\n children\n ) : (\n <>\n {/* Shine effect on hover for primary */}\n {isHovered && variant === 'primary' && !isDisabled && (\n <div\n className=\"absolute inset-0 overflow-hidden pointer-events-none\"\n style={{ borderRadius: 'inherit' }}\n >\n <div\n className=\"absolute top-0 h-full w-1/3 bg-linear-to-r from-transparent via-white/20 to-transparent\"\n style={{ animation: 'btn-shine 1.5s ease-in-out infinite' }}\n />\n </div>\n )}\n\n {/* Ripple effect */}\n {ripple && (\n <span\n className=\"absolute rounded-full bg-white/30 pointer-events-none\"\n style={{\n left: ripple.x,\n top: ripple.y,\n width: 10,\n height: 10,\n transform: 'translate(-50%, -50%)',\n animation: 'ripple 0.6s ease-out',\n }}\n />\n )}\n\n {/* Pulsing glow on hover */}\n {isHovered && variant === 'primary' && !isDisabled && (\n <div\n className=\"absolute inset-0 rounded-xl animate-glow-pulse pointer-events-none\"\n style={{\n background:\n 'radial-gradient(circle, oklch(100% 0 0 / 0.1) 0%, transparent 70%)',\n }}\n />\n )}\n\n {/* Loading spinner */}\n {loading && <RefreshCw className={cn(ICON_SIZES.md, 'animate-spin')} />}\n\n {/* Icon left */}\n {!loading && Icon && iconPosition === 'left' && (\n <Icon className={ICON_SIZES.md} />\n )}\n\n {/* Content */}\n {!loading && children}\n\n {/* Icon right */}\n {!loading && Icon && iconPosition === 'right' && (\n <Icon className={ICON_SIZES.md} />\n )}\n </>\n )}\n </Comp>\n );\n }\n);\n\nButtonGlass.displayName = 'ButtonGlass';\n","/**\n * CheckboxGlass Component\n *\n * Glass-themed checkbox with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the CheckboxGlass component\n *\n * A glass-themed checkbox with accessible keyboard navigation, focus management,\n * and touch-friendly targets. Features glow effects and theme-aware styling.\n *\n * @accessibility\n * - **Keyboard Navigation:** Full keyboard support with Enter/Space to toggle, Tab to focus (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Dual implementation with native `<input type=\"checkbox\">` (hidden) + visual `<div role=\"checkbox\">`\n * - **ARIA Attributes:** Uses `role=\"checkbox\"` and `aria-checked` for proper state announcement\n * - **Label Association:** Visual label automatically associated with checkbox via `<label>` wrapper\n * - **Touch Targets:** 44x44px minimum touch area per Apple HIG (WCAG 2.5.5 compliance)\n * - **Color Contrast:** Check mark and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic checkbox with label\n * <CheckboxGlass checked={agreed} onChange={setAgreed} label=\"I agree to terms\" />\n *\n * // Checkbox with accessible name (no visual label)\n * <CheckboxGlass\n * checked={checked}\n * onChange={setChecked}\n * aria-label=\"Select all items\"\n * />\n *\n * // Form integration with validation\n * <form onSubmit={handleSubmit}>\n * <CheckboxGlass\n * checked={newsletter}\n * onChange={setNewsletter}\n * label=\"Subscribe to newsletter\"\n * aria-describedby=\"newsletter-help\"\n * />\n * <p id=\"newsletter-help\">Receive weekly updates</p>\n * <CheckboxGlass\n * checked={terms}\n * onChange={setTerms}\n * label=\"Accept terms and conditions\"\n * required\n * aria-invalid={submitted && !terms}\n * />\n * {submitted && !terms && (\n * <span role=\"alert\">You must accept the terms</span>\n * )}\n * </form>\n *\n * // Disabled checkbox (state announced to screen readers)\n * <CheckboxGlass\n * checked={true}\n * onChange={() => {}}\n * label=\"This option is locked\"\n * disabled\n * />\n *\n * // Checkbox group with fieldset\n * <fieldset>\n * <legend>Select your interests</legend>\n * <CheckboxGlass\n * checked={interests.tech}\n * onChange={(checked) => setInterests({ ...interests, tech: checked })}\n * label=\"Technology\"\n * />\n * <CheckboxGlass\n * checked={interests.design}\n * onChange={(checked) => setInterests({ ...interests, design: checked })}\n * label=\"Design\"\n * />\n * </fieldset>\n * ```\n */\nexport interface CheckboxGlassProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n readonly checked: boolean;\n readonly onChange?: (checked: boolean) => void;\n readonly label?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const CheckboxGlass = forwardRef<HTMLInputElement, CheckboxGlassProps>(\n (\n {\n className,\n checked,\n onChange,\n label,\n disabled,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n const checkboxStyles: CSSProperties = {\n background: checked ? 'var(--checkbox-checked-bg)' : 'var(--checkbox-bg)',\n border: `2px solid ${checked ? 'var(--checkbox-checked-bg)' : 'var(--checkbox-border)'}`,\n boxShadow: isFocusVisible && !disabled\n ? 'var(--focus-glow)'\n : isHovered && !disabled\n ? 'var(--checkbox-glow)'\n : 'none',\n };\n\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 md:gap-2.5',\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n onChange={(e) => !disabled && onChange?.(e.target.checked)}\n disabled={disabled}\n className=\"sr-only\"\n {...props}\n />\n {/* Touch area wrapper - 44px minimum for Apple HIG compliance */}\n <span className=\"inline-flex items-center justify-center min-w-11 min-h-11\">\n {/* Visual checkbox - smaller but within 44px touch area */}\n <div\n onClick={() => !disabled && onChange?.(!checked)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n className=\"relative w-6 h-6 md:w-5 md:h-5 rounded-md flex items-center justify-center transition-all duration-300\"\n style={checkboxStyles}\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={label || 'Checkbox'}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onChange?.(!checked);\n }\n }}\n >\n {checked && (\n <Check className=\"w-3.5 h-3.5 md:w-3 md:h-3\" style={{ color: 'var(--text-inverse)' }} />\n )}\n </div>\n </span>\n {label && (\n <span className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckboxGlass.displayName = 'CheckboxGlass';\n","/**\n * CircularProgressGlass Component\n *\n * SVG-based circular progress indicator with:\n * - Determinate and indeterminate variants\n * - Configurable size and thickness\n * - Glow effect with SVG filters\n * - Theme-aware styling\n * - Optional label in center\n * - Gradient colors support\n */\n\nimport { forwardRef, useMemo, useId } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// VARIANTS\n// ========================================\n\nconst circularProgressVariants = cva('relative inline-flex items-center justify-center', {\n variants: {\n size: {\n sm: 'w-16 h-16',\n md: 'w-24 h-24',\n lg: 'w-32 h-32',\n xl: 'w-40 h-40',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type CircularProgressGradient = 'violet' | 'blue' | 'cyan' | 'amber' | 'emerald' | 'rose';\n\nexport interface CircularProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof circularProgressVariants> {\n /** Progress value (0-100) for determinate variant */\n readonly value?: number;\n /** Variant type */\n readonly variant?: 'determinate' | 'indeterminate';\n /** Stroke width in pixels */\n readonly thickness?: number;\n /** Background track width in pixels */\n readonly trackWidth?: number;\n /** Progress color gradient */\n readonly color?: CircularProgressGradient;\n /** Track color (background circle) */\n readonly trackColor?: string;\n /** Show percentage label in center */\n readonly showLabel?: boolean;\n /** Custom label text (overrides percentage) */\n readonly label?: string;\n /** Custom color for the center label text */\n readonly labelColor?: string;\n /** Show glow effect */\n readonly showGlow?: boolean;\n /** Glow intensity */\n readonly glowIntensity?: 'low' | 'medium' | 'high';\n /** Stroke linecap style */\n readonly strokeLinecap?: 'round' | 'butt' | 'square';\n /** Animation duration in seconds */\n readonly animationDuration?: number;\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst getGradientColors = (gradient: CircularProgressGradient) => {\n const gradients: Record<CircularProgressGradient, { from: string; to: string; glowVar: string }> = {\n violet: { from: '#8b5cf6', to: '#a855f7', glowVar: '--progress-glow-violet' },\n blue: { from: '#3b82f6', to: '#60a5fa', glowVar: '--progress-glow-blue' },\n cyan: { from: '#06b6d4', to: '#22d3ee', glowVar: '--progress-glow-cyan' },\n amber: { from: '#f59e0b', to: '#fbbf24', glowVar: '--progress-glow-amber' },\n emerald: { from: '#10b981', to: '#34d399', glowVar: '--progress-glow-emerald' },\n rose: { from: '#f43f5e', to: '#fb7185', glowVar: '--progress-glow-rose' },\n };\n return gradients[gradient];\n};\n\nconst getGlowStdDeviation = (intensity: 'low' | 'medium' | 'high'): number => {\n const intensities = { low: 2, medium: 4, high: 6 };\n return intensities[intensity];\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const CircularProgressGlass = forwardRef<HTMLDivElement, CircularProgressGlassProps>(\n (\n {\n className,\n size = 'md',\n value = 0,\n variant = 'determinate',\n thickness = 8,\n trackWidth = 8,\n color = 'violet',\n trackColor = 'oklch(100% 0 0 / 0.1)',\n showLabel = true,\n label,\n labelColor,\n showGlow = true,\n glowIntensity = 'medium',\n strokeLinecap = 'round',\n animationDuration = 1,\n ...props\n },\n ref\n ) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const gradientColors = getGradientColors(color);\n\n // SVG dimensions\n const sizeMap = { sm: 64, md: 96, lg: 128, xl: 160 };\n const svgSize = sizeMap[size || 'md'];\n const radius = (svgSize - Math.max(thickness, trackWidth)) / 2;\n const circumference = 2 * Math.PI * radius;\n const center = svgSize / 2;\n\n // Calculate stroke dash offset for determinate progress\n const dashOffset = useMemo(() => {\n if (variant === 'indeterminate') return circumference * 0.75;\n return circumference * ((100 - clampedValue) / 100);\n }, [variant, clampedValue, circumference]);\n\n // Generate unique IDs for SVG elements (using useId for stable IDs)\n const uniqueId = useId();\n const gradientId = `circular-gradient-${uniqueId}`;\n const glowId = `circular-glow-${uniqueId}`;\n\n return (\n <div ref={ref} className={cn(circularProgressVariants({ size }), className)} {...props}>\n <svg\n width={svgSize}\n height={svgSize}\n className=\"transform -rotate-90\"\n aria-hidden=\"true\"\n >\n <defs>\n {/* Gradient definition */}\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={gradientColors.from} />\n <stop offset=\"100%\" stopColor={gradientColors.to} />\n </linearGradient>\n\n {/* Glow filter */}\n {showGlow && (\n <filter id={glowId}>\n <feGaussianBlur stdDeviation={getGlowStdDeviation(glowIntensity)} result=\"coloredBlur\" />\n <feMerge>\n <feMergeNode in=\"coloredBlur\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n )}\n </defs>\n\n {/* Background track */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={trackWidth}\n />\n\n {/* Progress circle */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={`url(#${gradientId})`}\n strokeWidth={thickness}\n strokeLinecap={strokeLinecap}\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n filter={showGlow ? `url(#${glowId})` : undefined}\n className={cn(\n 'transition-all',\n variant === 'indeterminate' && 'animate-circular-progress-spin'\n )}\n style={{\n transitionDuration: `${animationDuration}s`,\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span\n className=\"text-sm font-semibold tabular-nums\"\n style={{ color: labelColor || 'var(--text-primary)' }}\n >\n {label || (variant === 'determinate' ? `${clampedValue}%` : '')}\n </span>\n </div>\n )}\n\n {/* Accessibility */}\n <div\n role=\"progressbar\"\n aria-valuenow={variant === 'determinate' ? clampedValue : undefined}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label || (variant === 'determinate' ? `Progress: ${clampedValue}%` : 'Loading progress')}\n aria-valuetext={label || (variant === 'determinate' ? `${clampedValue}%` : 'Loading...')}\n className=\"sr-only\"\n >\n {label || (variant === 'determinate' ? `${clampedValue}%` : 'Loading...')}\n </div>\n </div>\n );\n }\n);\n\nCircularProgressGlass.displayName = 'CircularProgressGlass';\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b border-border px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-60 text-muted-foreground\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm font-medium outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","/**\n * InputGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type InputGlassSize = 'sm' | 'md' | 'lg';\n\nexport const inputVariants = cva(\n 'w-full transition-all duration-300 outline-none backdrop-blur-sm disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n size: {\n // All sizes use text-base (16px) minimum to prevent iOS auto-zoom on focus\n // Border radius: 8px per UI_DESIGN.md (rounded-md)\n // Touch targets: 44-48px minimum (Apple HIG)\n sm: 'px-3 py-2 text-base rounded-md min-h-[44px]', // UI_DESIGN: 8px radius, 44px mobile\n md: 'px-4 py-2.5 text-base rounded-md min-h-[44px]', // UI_DESIGN: 8px radius\n lg: 'px-5 py-3 text-base md:text-lg rounded-md min-h-[48px]', // UI_DESIGN: 8px radius\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n","/**\n * Dropdown Content Styles\n *\n * Unified styling utilities for all dropdown-style components:\n * - DropdownGlass\n * - ComboBoxGlass\n * - SelectGlass\n * - SortDropdownGlass\n *\n * Eliminates ~50 lines of duplicated dropdown styling code.\n */\n\nimport type { CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ICON_SIZES } from '@/components/glass/primitives/style-utils';\n\n// ============================================\n// DROPDOWN CONTENT STYLES\n// ============================================\n\n/**\n * Generate consistent dropdown content styles with glassmorphism.\n *\n * Provides standard glass surface with backdrop blur for all dropdown menus.\n *\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * <div style={getDropdownContentStyles()}>\n * <DropdownItem />\n * </div>\n * ```\n */\nexport function getDropdownContentStyles(): CSSProperties {\n return {\n background: 'var(--dropdown-bg)',\n border: '1px solid var(--dropdown-border)',\n boxShadow: 'var(--dropdown-glow)',\n backdropFilter: 'blur(var(--blur-md))',\n WebkitBackdropFilter: 'blur(var(--blur-md))',\n };\n}\n\n// ============================================\n// DROPDOWN CONTENT CLASSES\n// ============================================\n\n/**\n * Standard Tailwind classes for dropdown content containers.\n *\n * Includes sizing, border radius, z-index, and Radix UI animations.\n *\n * @example\n * ```tsx\n * <DropdownMenuContent className={dropdownContentClasses}>\n * ...\n * </DropdownMenuContent>\n * ```\n */\nexport const dropdownContentClasses = cn(\n // Sizing\n 'min-w-40 md:min-w-[200px]',\n\n // Shape\n 'rounded-2xl overflow-hidden',\n\n // Layering\n 'z-[50002]',\n\n // Animations (Radix UI data attributes)\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2'\n);\n\n// ============================================\n// DROPDOWN ITEM CLASSES\n// ============================================\n\n/**\n * Options for dropdown item styling\n */\nexport interface DropdownItemClassesOptions {\n /** Apply danger/destructive styling */\n danger?: boolean;\n /** Item is currently selected */\n selected?: boolean;\n /** Item is highlighted (keyboard navigation) */\n highlighted?: boolean;\n}\n\n/**\n * Generate classes for dropdown menu items.\n *\n * Supports different states: normal, highlighted, selected, danger.\n *\n * @param options - Styling options\n * @returns className string\n *\n * @example\n * ```tsx\n * // Normal item\n * <div className={getDropdownItemClasses()}>Edit</div>\n *\n * // Danger item\n * <div className={getDropdownItemClasses({ danger: true })}>Delete</div>\n *\n * // Selected item\n * <div className={getDropdownItemClasses({ selected: true })}>Active</div>\n * ```\n */\nexport function getDropdownItemClasses(\n options?: DropdownItemClassesOptions\n): string {\n const { danger, selected, highlighted } = options ?? {};\n\n return cn(\n // Base layout\n 'w-full px-3 py-2 md:px-4 md:py-2.5',\n 'text-xs md:text-sm text-left',\n 'flex items-center gap-2 md:gap-3',\n\n // Interaction\n 'outline-none cursor-default select-none',\n 'transition-colors duration-200 ease-out',\n\n // Hover/highlight state\n highlighted && 'bg-[var(--dropdown-item-hover)]',\n 'data-[highlighted]:bg-[var(--dropdown-item-hover)]',\n\n // Selected state\n selected &&\n 'bg-[var(--select-item-selected-bg)] text-[var(--select-item-selected-text)]',\n\n // Danger state\n danger\n ? 'text-[var(--alert-danger-text)] data-[highlighted]:text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-item-text)]'\n );\n}\n\n// ============================================\n// DROPDOWN ICON CLASSES\n// ============================================\n\n/**\n * Options for dropdown icon styling\n */\nexport interface DropdownIconClassesOptions {\n /** Apply danger/destructive styling */\n danger?: boolean;\n}\n\n/**\n * Generate classes for icons within dropdown items.\n *\n * @param options - Styling options\n * @returns className string\n *\n * @example\n * ```tsx\n * <Edit className={getDropdownIconClasses()} />\n * <Trash className={getDropdownIconClasses({ danger: true })} />\n * ```\n */\nexport function getDropdownIconClasses(\n options?: DropdownIconClassesOptions\n): string {\n return cn(\n // Size\n ICON_SIZES.md,\n\n // Behavior\n 'transition-colors duration-200 ease-out shrink-0',\n\n // Color\n options?.danger\n ? 'text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-icon)] group-data-[highlighted]:text-[var(--dropdown-icon-hover)]'\n );\n}\n\n// ============================================\n// DROPDOWN SEPARATOR CLASSES\n// ============================================\n\n/**\n * Standard classes for dropdown separators.\n *\n * @example\n * ```tsx\n * <DropdownMenuSeparator className={dropdownSeparatorClasses} />\n * ```\n */\nexport const dropdownSeparatorClasses = cn(\n 'h-px my-1',\n 'bg-[var(--dropdown-border)]'\n);\n\n// ============================================\n// DROPDOWN LABEL CLASSES\n// ============================================\n\n/**\n * Standard classes for dropdown section labels.\n *\n * @example\n * ```tsx\n * <DropdownMenuLabel className={dropdownLabelClasses}>\n * Actions\n * </DropdownMenuLabel>\n * ```\n */\nexport const dropdownLabelClasses = cn(\n 'px-3 py-1.5 md:px-4 md:py-2',\n 'text-xs font-medium',\n 'text-[var(--text-muted)]'\n);\n","/**\n * ComboBoxGlass Component\n *\n * Glass-themed combobox (searchable select) with:\n * - Keyboard navigation support\n * - Search/filter functionality\n * - Custom rendering options\n * - Async data loading support\n * - Glass styling with theme support\n * - Accessibility features\n * - Form field wrapper support (label, error, success)\n * - Size variants (sm, md, lg, xl)\n * - Optional searchable mode\n * - Icon support for trigger and options\n */\n\n'use client';\n\nimport { useState, useMemo, useCallback, forwardRef, useId } from 'react';\nimport { CheckIcon, ChevronsUpDownIcon, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ButtonGlass } from './button-glass';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { FormFieldWrapper } from '../primitives/form-field-wrapper';\nimport { inputVariants, type InputGlassSize } from '@/lib/variants/input-glass-variants';\nimport { getDropdownContentStyles } from '@/lib/variants/dropdown-content-styles';\nimport { ICON_SIZES } from '../primitives/style-utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type GlassVariant = 'glass' | 'frosted' | 'fluted' | 'crystal';\n\nexport interface ComboBoxOption<T = string> {\n readonly value: T;\n readonly label: string;\n readonly disabled?: boolean;\n /** Optional icon component for the option */\n readonly icon?: LucideIcon;\n}\n\nexport interface ComboBoxGlassProps<T = string> {\n /** Available options */\n readonly options: readonly ComboBoxOption<T>[];\n /** Currently selected value */\n readonly value?: T;\n /** Callback when value changes */\n readonly onChange?: (value: T | undefined) => void;\n /** Placeholder text for trigger button */\n readonly placeholder?: string;\n /** Text shown when no results found */\n readonly emptyText?: string;\n /** Placeholder for search input */\n readonly searchPlaceholder?: string;\n /** Glass variant style */\n readonly glassVariant?: GlassVariant;\n /** Disabled state */\n readonly disabled?: boolean;\n /** Custom className for container */\n readonly className?: string;\n /** Custom className for popover content */\n readonly popoverClassName?: string;\n /** Allow clearing selection */\n readonly clearable?: boolean;\n /** Popover side */\n readonly side?: 'top' | 'right' | 'bottom' | 'left';\n /** Popover alignment */\n readonly align?: 'start' | 'center' | 'end';\n\n // ========================================\n // NEW PROPS (Week 3 Enhancement)\n // ========================================\n\n /** Label text displayed above the field */\n readonly label?: string;\n /** Error message - displays in red below the field */\n readonly error?: string;\n /** Success message - displays in green if no error */\n readonly success?: string;\n /** Shows required asterisk (*) next to label */\n readonly required?: boolean;\n /** Size variant (affects trigger button height and padding) */\n readonly size?: InputGlassSize;\n /** Enable/disable search functionality */\n readonly searchable?: boolean;\n /** Optional icon for trigger button (displayed before text) */\n readonly icon?: LucideIcon;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nfunction ComboBoxGlassInner<T = string>(\n {\n options,\n value,\n onChange,\n placeholder = 'Select option...',\n emptyText = 'No results found.',\n searchPlaceholder = 'Search...',\n glassVariant = 'glass',\n disabled = false,\n className,\n popoverClassName,\n clearable = false,\n side = 'bottom',\n align = 'start',\n // NEW PROPS\n label,\n error,\n success,\n required = false,\n size = 'md',\n searchable = true,\n icon: TriggerIcon,\n }: ComboBoxGlassProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const fieldId = useId();\n\n // Find selected option\n const selectedOption = useMemo(\n () => options.find((opt) => opt.value === value),\n [options, value]\n );\n\n // Filter options based on search\n const filteredOptions = useMemo(() => {\n if (!search) return options;\n const searchLower = search.toLowerCase();\n return options.filter((opt) =>\n opt.label.toLowerCase().includes(searchLower)\n );\n }, [options, search]);\n\n // Handle option selection\n const handleSelect = useCallback(\n (optionValue: T) => {\n if (clearable && value === optionValue) {\n onChange?.(undefined);\n } else {\n onChange?.(optionValue);\n }\n setOpen(false);\n setSearch('');\n },\n [value, onChange, clearable]\n );\n\n // Get glass variant class\n const getGlassClass = () => {\n const variants: Record<GlassVariant, string> = {\n glass: 'glass',\n frosted: 'frosted',\n fluted: 'fluted',\n crystal: 'crystal',\n };\n return variants[glassVariant];\n };\n\n // Render content\n const comboboxContent = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <ButtonGlass\n ref={ref}\n variant=\"secondary\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={selectedOption?.label || placeholder}\n aria-describedby={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n disabled={disabled}\n className={cn(\n 'w-full justify-between',\n // Apply size variant via inputVariants\n inputVariants({ size }),\n !selectedOption && 'text-muted-foreground',\n className\n )}\n >\n <span className=\"flex items-center gap-2 truncate\">\n {TriggerIcon && <TriggerIcon className={ICON_SIZES.md} />}\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <ChevronsUpDownIcon className={cn(ICON_SIZES.md, 'shrink-0 opacity-50')} />\n </ButtonGlass>\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n className={cn(\n 'w-[--radix-popover-trigger-width] p-0 rounded-2xl overflow-hidden border-0',\n getGlassClass(),\n popoverClassName\n )}\n style={getDropdownContentStyles()}\n >\n <Command\n shouldFilter={false}\n className={cn(\n 'bg-transparent',\n // Hide default border, use subtle divider instead\n '[&_[data-slot=command-input-wrapper]]:border-b-0',\n // Fix search icon - use glass theme color with better visibility\n '[&_[data-slot=command-input-wrapper]_svg]:text-[var(--text-muted)]',\n '[&_[data-slot=command-input-wrapper]_svg]:opacity-80'\n )}\n >\n {searchable && (\n <CommandInput\n placeholder={searchPlaceholder}\n value={search}\n onValueChange={setSearch}\n className=\"text-[var(--text-primary)] placeholder:text-[var(--text-muted)] h-10 font-medium\"\n />\n )}\n <CommandList className=\"p-1.5\">\n <CommandEmpty className=\"text-[var(--text-muted)] py-4\">{emptyText}</CommandEmpty>\n <CommandGroup className=\"text-[var(--text-primary)] p-0\">\n {filteredOptions.map((option) => {\n const OptionIcon = option.icon;\n const isSelected = value === option.value;\n\n return (\n <CommandItem\n key={String(option.value)}\n value={String(option.value)}\n disabled={option.disabled}\n onSelect={() => handleSelect(option.value)}\n className={cn(\n 'w-full px-3 py-2.5 text-sm flex items-center gap-2 rounded-none',\n 'cursor-pointer transition-colors duration-150',\n 'text-[var(--dropdown-item-text)]',\n 'data-[selected=true]:bg-[var(--dropdown-item-hover)]',\n isSelected && 'bg-[var(--select-item-selected-bg)] text-[var(--select-item-selected-text)]',\n option.disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n <CheckIcon\n className={cn(\n ICON_SIZES.md,\n 'shrink-0',\n isSelected ? 'opacity-100 text-[var(--text-accent)]' : 'opacity-0'\n )}\n />\n {OptionIcon && <OptionIcon className={cn(ICON_SIZES.md, 'shrink-0 text-[var(--dropdown-icon)]')} />}\n <span className=\"truncate\">{option.label}</span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n\n // Wrap with FormFieldWrapper if label/error/success provided\n if (label || error || success) {\n return (\n <FormFieldWrapper\n label={label}\n error={error}\n success={success}\n required={required}\n htmlFor={fieldId}\n >\n {comboboxContent}\n </FormFieldWrapper>\n );\n }\n\n return comboboxContent;\n}\n\n// Export with generic type support\nexport const ComboBoxGlass = forwardRef(ComboBoxGlassInner) as <T = string>(\n props: ComboBoxGlassProps<T> & { ref?: React.ForwardedRef<HTMLButtonElement> }\n) => ReturnType<typeof ComboBoxGlassInner>;\n\n// Add display name for debugging\nComboBoxGlassInner.displayName = 'ComboBoxGlass';\n","/**\n * DropdownGlass Component\n *\n * Glass-themed dropdown menu based on Radix UI with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth animations\n * - Proper positioning and accessibility\n * - Optional item icons and dividers\n *\n * @example\n * Simple API (recommended for basic dropdowns):\n * ```tsx\n * import { DropdownGlass } from '@/components/glass/ui/dropdown-glass';\n * import { MoreVertical, Edit, Trash } from 'lucide-react';\n *\n * <DropdownGlass\n * trigger={\n * <button>\n * <MoreVertical />\n * </button>\n * }\n * items={[\n * { label: 'Edit', icon: Edit, onClick: () => handleEdit() },\n * { divider: true },\n * { label: 'Delete', icon: Trash, onClick: () => handleDelete(), danger: true }\n * ]}\n * />\n * ```\n *\n * @example\n * Advanced: Using Radix UI primitives directly (for complex dropdowns):\n * ```tsx\n * import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n * import { getDropdownContentStyles, dropdownContentClasses } from '@/lib/variants/dropdown-content-styles';\n *\n * <DropdownMenuPrimitive.Root>\n * <DropdownMenuPrimitive.Trigger asChild>\n * <button>Open Menu</button>\n * </DropdownMenuPrimitive.Trigger>\n *\n * <DropdownMenuPrimitive.Portal>\n * <DropdownMenuPrimitive.Content\n * className={dropdownContentClasses}\n * style={getDropdownContentStyles()}\n * align=\"start\"\n * sideOffset={8}\n * >\n * <DropdownMenuPrimitive.Label className=\"px-3 py-1.5 text-xs font-medium\">\n * Actions\n * </DropdownMenuPrimitive.Label>\n *\n * <DropdownMenuPrimitive.Item\n * className=\"px-3 py-2 cursor-pointer hover:bg-[var(--dropdown-item-hover)]\"\n * onSelect={() => handleAction()}\n * >\n * Action Item\n * </DropdownMenuPrimitive.Item>\n *\n * <DropdownMenuPrimitive.Separator className=\"h-px my-1 bg-[var(--dropdown-border)]\" />\n *\n * <DropdownMenuPrimitive.CheckboxItem\n * checked={isChecked}\n * onCheckedChange={setIsChecked}\n * >\n * <DropdownMenuPrimitive.ItemIndicator>\n * <Check className=\"w-4 h-4\" />\n * </DropdownMenuPrimitive.ItemIndicator>\n * Checkbox Item\n * </DropdownMenuPrimitive.CheckboxItem>\n *\n * <DropdownMenuPrimitive.Sub>\n * <DropdownMenuPrimitive.SubTrigger>\n * More Options\n * </DropdownMenuPrimitive.SubTrigger>\n * <DropdownMenuPrimitive.SubContent>\n * <DropdownMenuPrimitive.Item>Sub Item 1</DropdownMenuPrimitive.Item>\n * <DropdownMenuPrimitive.Item>Sub Item 2</DropdownMenuPrimitive.Item>\n * </DropdownMenuPrimitive.SubContent>\n * </DropdownMenuPrimitive.Sub>\n * </DropdownMenuPrimitive.Content>\n * </DropdownMenuPrimitive.Portal>\n * </DropdownMenuPrimitive.Root>\n * ```\n *\n * @see {@link https://www.radix-ui.com/primitives/docs/components/dropdown-menu Radix UI Dropdown Menu Documentation}\n *\n * Available Radix primitives:\n * - `DropdownMenuPrimitive.Root` - Root component\n * - `DropdownMenuPrimitive.Trigger` - Trigger button (use `asChild` for custom triggers)\n * - `DropdownMenuPrimitive.Content` - Dropdown content container\n * - `DropdownMenuPrimitive.Item` - Menu item\n * - `DropdownMenuPrimitive.CheckboxItem` - Checkbox menu item\n * - `DropdownMenuPrimitive.RadioGroup` + `RadioItem` - Radio group\n * - `DropdownMenuPrimitive.Label` - Section label\n * - `DropdownMenuPrimitive.Separator` - Visual separator\n * - `DropdownMenuPrimitive.Sub` + `SubTrigger` + `SubContent` - Nested menus\n * - `DropdownMenuPrimitive.Portal` - Portal for dropdown content\n *\n * Use `getDropdownContentStyles()` and `dropdownContentClasses` from\n * `@/lib/variants/dropdown-content-styles` for consistent glass styling.\n */\n\nimport * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport { getDropdownContentStyles, dropdownContentClasses } from '@/lib/variants/dropdown-content-styles';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport interface DropdownItem {\n readonly label?: string;\n readonly icon?: LucideIcon;\n readonly onClick?: () => void;\n readonly danger?: boolean;\n readonly divider?: boolean;\n}\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the DropdownGlass component\n *\n * A glass-themed dropdown menu with accessible keyboard navigation, based on Radix UI primitives.\n * Features theme-aware styling, smooth animations, and WCAG-compliant interactions.\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate menu items, Enter/Space activates, Escape closes (WCAG 2.1.1)\n * - **Focus Management:** Focus trapped within menu when open, returned to trigger on close (WCAG 2.4.3)\n * - **Screen Readers:** Uses `role=\"menu\"` and `role=\"menuitem\"` for proper menu semantics (WCAG 4.1.3)\n * - **ARIA Attributes:** Items marked with `data-highlighted` state for screen reader announcement\n * - **Trigger Association:** Menu automatically associated with trigger button via Radix UI primitives\n * - **Touch Targets:** All menu items meet minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Menu text and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Open/close animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic dropdown with icon items\n * <DropdownGlass\n * trigger={\n * <button aria-label=\"Open menu\">\n * <MoreVertical className=\"w-5 h-5\" />\n * </button>\n * }\n * items={[\n * { label: 'Edit', icon: Edit, onClick: handleEdit },\n * { label: 'Delete', icon: Trash, onClick: handleDelete, danger: true }\n * ]}\n * />\n *\n * // Dropdown with dividers and alignment\n * <DropdownGlass\n * trigger={<ButtonGlass>Actions</ButtonGlass>}\n * align=\"right\"\n * items={[\n * { label: 'View', icon: Eye, onClick: () => navigate('/view') },\n * { label: 'Edit', icon: Edit, onClick: () => setEditMode(true) },\n * { divider: true },\n * { label: 'Archive', icon: Archive, onClick: handleArchive },\n * { divider: true },\n * { label: 'Delete', icon: Trash, onClick: handleDelete, danger: true }\n * ]}\n * />\n *\n * // Dropdown in table row (ensure trigger has accessible label)\n * <DropdownGlass\n * trigger={\n * <button aria-label={`Actions for ${user.name}`}>\n * <MoreHorizontal />\n * </button>\n * }\n * items={[\n * { label: 'View Profile', onClick: () => viewProfile(user.id) },\n * { label: 'Send Message', onClick: () => sendMessage(user.id) }\n * ]}\n * />\n *\n * // Dropdown with keyboard-friendly trigger\n * <DropdownGlass\n * trigger={\n * <ButtonGlass\n * icon={Settings}\n * variant=\"ghost\"\n * aria-haspopup=\"menu\"\n * aria-label=\"Settings menu\"\n * >\n * Settings\n * </ButtonGlass>\n * }\n * items={[\n * { label: 'Preferences', icon: Sliders, onClick: () => navigate('/settings/preferences') },\n * { label: 'Security', icon: Lock, onClick: () => navigate('/settings/security') },\n * { divider: true },\n * { label: 'Log Out', icon: LogOut, onClick: handleLogout }\n * ]}\n * />\n *\n * // Advanced: Using Radix primitives directly (see component JSDoc for examples)\n * ```\n */\nexport interface DropdownGlassProps {\n readonly trigger: React.ReactNode;\n readonly items: readonly DropdownItem[];\n readonly align?: 'left' | 'right';\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const DropdownGlass = React.forwardRef<\n HTMLDivElement,\n DropdownGlassProps\n>(({ trigger, items, align = 'left', className }, ref) => {\n return (\n <div ref={ref} className={cn('relative inline-block', className)}>\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>\n {trigger}\n </DropdownMenuPrimitive.Trigger>\n\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align={align === 'left' ? 'start' : 'end'}\n sideOffset={8}\n className={dropdownContentClasses}\n style={getDropdownContentStyles()}\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n {items.map((item, idx) =>\n item.divider ? (\n <DropdownMenuPrimitive.Separator\n key={`divider-${idx}`}\n className=\"my-2 mx-3 h-px\"\n style={{\n borderTop: '1px solid var(--dropdown-divider)',\n }}\n role=\"separator\"\n />\n ) : (\n <DropdownMenuPrimitive.Item\n key={`item-${idx}`}\n onClick={item.onClick}\n className={cn(\n 'group w-full px-3 py-2 md:px-4 md:py-2.5 text-xs md:text-sm text-left flex items-center gap-2 md:gap-3',\n 'cursor-default select-none',\n 'transition-colors duration-200 ease-out',\n 'focus-visible:outline-none focus-visible:shadow-(--focus-glow)',\n 'data-[highlighted]:bg-[var(--dropdown-item-hover)]',\n item.danger\n ? 'text-[var(--alert-danger-text)] data-[highlighted]:text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-item-text)]'\n )}\n role=\"menuitem\"\n >\n {item.icon && (\n <item.icon\n className={cn(\n ICON_SIZES.md,\n 'transition-colors duration-200 ease-out shrink-0',\n item.danger\n ? 'text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-icon)] group-data-[highlighted]:text-[var(--dropdown-icon-hover)]'\n )}\n />\n )}\n <span className=\"font-medium\">{item.label}</span>\n </DropdownMenuPrimitive.Item>\n )\n )}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n </div>\n );\n});\n\nDropdownGlass.displayName = 'DropdownGlass';\n","/**\n * GlassCard CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type GlowType = 'blue' | 'violet' | 'cyan' | null;\nexport type IntensityType = 'subtle' | 'medium' | 'strong';\n\nexport type PaddingType = 'none' | 'compact' | 'default' | 'featured';\n\nexport const cardIntensity = cva('border transition-all duration-300', {\n variants: {\n intensity: {\n subtle: '',\n medium: '',\n strong: '',\n },\n hover: {\n true: 'hover-glow cursor-pointer',\n false: '',\n },\n // Padding variants per UI_DESIGN.md (24-32px for glass cards)\n // Border radius per UI_DESIGN.md: compact=12px, default=16px, featured=20px\n padding: {\n none: '',\n compact: 'p-4 md:p-5 rounded-lg', // 16px → 20px padding, 12px radius\n default: 'p-6 rounded-xl', // 24px padding, 16px radius\n featured: 'p-8 rounded-[20px]', // 32px padding, 20px radius (custom)\n },\n },\n defaultVariants: {\n intensity: 'medium',\n hover: true,\n padding: 'default',\n },\n});\n","/**\n * GlassCard Component\n *\n * Glass-themed container with:\n * - Theme-aware styling (glass/light/aurora)\n * - Configurable blur intensity\n * - Optional glow effects\n * - Hover animations\n */\n\nimport {\n forwardRef,\n type ReactNode,\n type CSSProperties,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { cardIntensity } from '@/lib/variants/glass-card-variants';\nimport '@/glass-theme.css';\n\nimport type { GlowType, IntensityType, PaddingType } from '@/lib/variants/glass-card-variants';\n\n// ========================================\n// BLUR MAP\n// ========================================\n// Per UI_DESIGN.md design tokens:\n// - subtle: 8px (--glass-blur-sm) - light glass effect\n// - medium: 16px (--glass-blur-md) - standard cards (was 12px - breaking change)\n// - strong: 24px (--glass-blur-lg) - featured cards (was 16px - breaking change)\n\nconst blurMap: Record<IntensityType, string> = {\n subtle: 'var(--blur-sm)', // 8px\n medium: 'var(--blur-md)', // 16px (BREAKING: was 12px)\n strong: 'var(--blur-lg)', // 24px (BREAKING: was 16px)\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the GlassCard component\n *\n * A glass-themed container with configurable blur, glow effects, and hover animations.\n * Features polymorphic rendering via `asChild` for semantic HTML flexibility.\n *\n * @accessibility\n * - **Keyboard Navigation:** When used with `asChild` as a link/button, inherits native keyboard support (Enter/Space activation)\n * - **Focus Management:** Focus ring applied to child element when using `asChild` pattern with interactive elements\n * - **Screen Readers:** Semantic HTML preserved via `asChild` - use appropriate elements (`<a>`, `<button>`, `<article>`)\n * - **Hover State:** Hover effects are purely visual and do not affect functionality (progressive enhancement)\n * - **Touch Targets:** When interactive, ensure child element meets minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Card border and background meet WCAG AA contrast requirements, content contrast is consumer's responsibility\n * - **Motion:** Hover scale animation respects `prefers-reduced-motion` settings via CSS transitions\n *\n * @example\n * ```tsx\n * // Basic card\n * <GlassCard intensity=\"medium\">Content</GlassCard>\n *\n * // As a clickable link with accessible name\n * <GlassCard asChild intensity=\"medium\">\n * <a href=\"/details\" aria-label=\"View product details\">\n * <h3>Product Title</h3>\n * <p>Description</p>\n * </a>\n * </GlassCard>\n *\n * // Different intensity levels\n * <GlassCard intensity=\"subtle\">Subtle blur</GlassCard>\n * <GlassCard intensity=\"medium\">Standard blur</GlassCard>\n * <GlassCard intensity=\"strong\">Heavy blur</GlassCard>\n *\n * // With glow effects\n * <GlassCard glow=\"blue\">Blue glow card</GlassCard>\n * <GlassCard glow=\"violet\">Violet glow card</GlassCard>\n * <GlassCard glow=\"cyan\">Cyan glow card</GlassCard>\n *\n * // As a button (interactive) with role\n * <GlassCard asChild hover intensity=\"medium\">\n * <button onClick={handleClick} aria-label=\"Open settings\">\n * <Settings className=\"w-6 h-6\" />\n * <span>Settings</span>\n * </button>\n * </GlassCard>\n *\n * // Article card with semantic HTML\n * <GlassCard asChild intensity=\"medium\" padding=\"lg\">\n * <article>\n * <header><h2>Article Title</h2></header>\n * <p>Article content...</p>\n * <footer>Published: Jan 1, 2025</footer>\n * </article>\n * </GlassCard>\n * ```\n */\nexport interface GlassCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof cardIntensity> {\n /**\n * Render as child element instead of div (polymorphic rendering).\n * Useful for making cards clickable links or custom interactive elements.\n * @default false\n * @example\n * ```tsx\n * <GlassCard asChild>\n * <a href=\"/article\">Article Content</a>\n * </GlassCard>\n * ```\n */\n readonly asChild?: boolean;\n\n readonly children: ReactNode;\n readonly glow?: GlowType;\n readonly padding?: PaddingType;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// CSS variable maps for intensity\nconst bgVarMap: Record<IntensityType, string> = {\n subtle: 'var(--card-subtle-bg)',\n medium: 'var(--card-medium-bg)',\n strong: 'var(--card-strong-bg)',\n};\n\nconst borderVarMap: Record<IntensityType, string> = {\n subtle: 'var(--card-subtle-border)',\n medium: 'var(--card-medium-border)',\n strong: 'var(--card-strong-border)',\n};\n\nconst glowVarMap: Record<string, string> = {\n blue: 'var(--glow-blue)',\n violet: 'var(--glow-violet)',\n purple: 'var(--glow-violet)',\n cyan: 'var(--glow-cyan)',\n};\n\nexport const GlassCard = forwardRef<HTMLDivElement, GlassCardProps>(\n (\n {\n asChild = false,\n children,\n className,\n intensity = 'medium',\n glow = null,\n hover = true,\n padding = 'default',\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const intensityVal = intensity ?? 'medium';\n\n const cardStyles: CSSProperties = {\n background: isHovered && hover ? 'var(--card-hover-bg)' : bgVarMap[intensityVal],\n borderColor: isHovered && hover ? 'var(--card-hover-border)' : borderVarMap[intensityVal],\n backdropFilter: `blur(${blurMap[intensityVal]})`,\n WebkitBackdropFilter: `blur(${blurMap[intensityVal]})`,\n boxShadow: glow\n ? glowVarMap[glow]\n : isHovered && hover\n ? 'var(--card-hover-glow)'\n : 'var(--glow-neutral)',\n };\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n className={cn(cardIntensity({ intensity, hover, padding }), className)}\n style={cardStyles}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nGlassCard.displayName = 'GlassCard';\n","/**\n * InputGlass Component\n *\n * Glass-themed input with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - Focus glow effects\n * - Error/success states\n * - Icon support (left/right position)\n * - Backdrop blur effect\n */\n\nimport {\n forwardRef,\n useCallback,\n type InputHTMLAttributes,\n type CSSProperties,\n type FocusEvent,\n} from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { inputVariants } from '@/lib/variants/input-glass-variants';\nimport { ICON_SIZES, FormFieldWrapper } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\nconst getInputStyles = (\n isFocused: boolean,\n error?: string,\n success?: string\n): CSSProperties => {\n // Determine border color based on state\n let borderColor = 'var(--input-border)';\n if (error) {\n borderColor = 'var(--alert-danger-text)';\n } else if (success) {\n borderColor = 'var(--alert-success-text)';\n } else if (isFocused) {\n borderColor = 'var(--input-focus-border)';\n }\n\n return {\n background: 'var(--input-bg)',\n border: `1px solid ${borderColor}`,\n color: 'var(--input-text)',\n boxShadow: isFocused ? 'var(--focus-glow)' : 'none',\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the InputGlass component\n *\n * A glass-themed input field with labels, validation states, and icon support.\n * Features focus glow effects and theme-aware styling.\n *\n * @accessibility\n * - **Keyboard Navigation:** Full keyboard support with native `<input>` element, standard tab navigation\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Semantic `<label>` elements properly associated via `htmlFor`, error/success messages announced with `aria-describedby`\n * - **Error State:** Red border and error message displayed below input, programmatically associated for screen readers\n * - **Success State:** Green border and success message displayed below input, programmatically associated for screen readers\n * - **Touch Targets:** Minimum 44x44px touch target on mobile devices (WCAG 2.5.5)\n * - **Color Contrast:** All text meets WCAG AA contrast ratio 4.5:1 minimum against backgrounds\n * - **Motion:** Icon color transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic input with label\n * <InputGlass label=\"Email\" placeholder=\"you@example.com\" />\n *\n * // With aria-describedby for additional context\n * <InputGlass\n * label=\"Username\"\n * placeholder=\"Enter username\"\n * aria-describedby=\"username-help\"\n * />\n * <span id=\"username-help\">Must be 3-20 characters</span>\n *\n * // With validation states (automatically announced to screen readers)\n * <InputGlass label=\"Username\" error=\"Username is required\" />\n * <InputGlass label=\"Password\" success=\"Strong password\" type=\"password\" />\n *\n * // With icon and accessible label\n * <InputGlass\n * icon={Search}\n * placeholder=\"Search...\"\n * aria-label=\"Search products\"\n * />\n * <InputGlass icon={Mail} iconPosition=\"right\" type=\"email\" />\n *\n * // Disabled state (automatically announced)\n * <InputGlass label=\"Email\" disabled value=\"locked@example.com\" />\n *\n * // Form integration with accessible error handling\n * <form onSubmit={handleSubmit}>\n * <InputGlass\n * label=\"Email\"\n * type=\"email\"\n * required\n * error={errors.email}\n * aria-invalid={!!errors.email}\n * />\n * <InputGlass\n * label=\"Password\"\n * type=\"password\"\n * icon={Lock}\n * error={errors.password}\n * />\n * <ButtonGlass type=\"submit\">Sign In</ButtonGlass>\n * </form>\n * ```\n */\nexport interface InputGlassProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n /**\n * Label text displayed above the input field\n */\n readonly label?: string;\n\n /**\n * Error message to display below the input (red styling)\n */\n readonly error?: string;\n\n /**\n * Success message to display below the input (green styling)\n */\n readonly success?: string;\n\n /**\n * Icon component from lucide-react to display\n * @example icon={Search}\n */\n readonly icon?: LucideIcon;\n\n /**\n * Position of the icon relative to input text\n * @default \"left\"\n */\n readonly iconPosition?: 'left' | 'right';\n\n /**\n * @deprecated Use `size` prop instead. Will be removed in v4.0\n * @default \"md\"\n */\n readonly inputSize?: 'sm' | 'md' | 'lg';\n\n // Note: size prop comes from VariantProps<typeof inputVariants>\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const InputGlass = forwardRef<HTMLInputElement, InputGlassProps>(\n (\n {\n className,\n size,\n inputSize,\n label,\n error,\n success,\n icon: Icon,\n iconPosition = 'left',\n disabled,\n onFocus,\n onBlur,\n ...props\n },\n ref\n ) => {\n // Determine size value with fallback to deprecated inputSize prop\n const sizeValue = size ?? inputSize ?? 'md';\n\n // Deprecation warning in development mode\n if (process.env.NODE_ENV !== 'production' && inputSize !== undefined) {\n console.warn(\n '[InputGlass] The `inputSize` prop is deprecated and will be removed in v4.0. Use `size` instead.'\n );\n }\n\n const { isFocused, focusProps } = useFocus();\n\n // Wrap focus handlers to call both internal and external callbacks\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n focusProps.onFocus(e);\n onFocus?.(e);\n },\n [focusProps, onFocus]\n );\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n focusProps.onBlur(e);\n onBlur?.(e);\n },\n [focusProps, onBlur]\n );\n\n const hasIcon = Boolean(Icon);\n const paddingLeft = hasIcon && iconPosition === 'left' ? 'pl-10' : '';\n const paddingRight = hasIcon && iconPosition === 'right' ? 'pr-10' : '';\n\n return (\n <FormFieldWrapper\n label={label}\n error={error}\n success={success}\n htmlFor={props.id}\n className={className}\n >\n <div className=\"relative\">\n {Icon && iconPosition === 'left' && (\n <Icon\n className={cn(\n 'absolute left-2.5 md:left-3 top-1/2 -translate-y-1/2 transition-colors duration-300 z-10',\n ICON_SIZES.md\n )}\n style={{\n color: isFocused ? 'var(--text-accent)' : 'var(--text-muted)',\n }}\n />\n )}\n <input\n ref={ref}\n className={cn(\n inputVariants({ size: sizeValue }),\n paddingLeft,\n paddingRight\n )}\n style={getInputStyles(isFocused, error, success)}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n />\n {Icon && iconPosition === 'right' && (\n <Icon\n className={cn(\n 'absolute right-2.5 md:right-3 top-1/2 -translate-y-1/2 transition-colors duration-300 z-10',\n ICON_SIZES.md\n )}\n style={{\n color: isFocused ? 'var(--text-accent)' : 'var(--text-muted)',\n }}\n />\n )}\n </div>\n </FormFieldWrapper>\n );\n }\n);\n\nInputGlass.displayName = 'InputGlass';\n","/**\n * ModalGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n// Modal body padding: 24px per UI_DESIGN.md\n// Border radius: 20px per UI_DESIGN.md (using rounded-2xl/24px as closest token)\n// Max widths: 480/640/800px per UI_DESIGN.md\nexport const modalSizes = cva('relative w-full rounded-2xl p-6 transition-all duration-300', {\n variants: {\n size: {\n sm: 'max-w-[480px]', // UI_DESIGN.md: 480px (was 384px)\n md: 'max-w-[640px]', // UI_DESIGN.md: 640px (was 448px)\n lg: 'max-w-[800px]', // UI_DESIGN.md: 800px (was 512px)\n xl: 'max-w-xl',\n full: 'max-w-4xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * ModalGlass Component (Compound API only)\n *\n * Glass-themed modal with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth open/close animations\n * - Escape key to close\n * - Click outside to close\n * - Body scroll lock\n * - Size variants\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm</ModalGlass.Title>\n * <ModalGlass.Description>Are you sure?</ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Body content</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass onClick={() => setOpen(false)}>Cancel</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (isOpen/onClose/title props)\n */\n\nimport {\n useState,\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { modalSizes, type ModalSize } from '@/lib/variants/modal-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES & CONSTANTS\n// ========================================\n\nconst MODAL_ANIMATION_DURATION = 200;\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst lockBodyScroll = (): void => {\n if (typeof document === 'undefined') return;\n document.body.style.overflow = 'hidden';\n};\n\nconst unlockBodyScroll = (): void => {\n if (typeof document === 'undefined') return;\n document.body.style.overflow = '';\n};\n\nconst delay = (ms: number): Promise<void> => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n// ========================================\n// CONTEXT FOR COMPOUND COMPONENTS\n// ========================================\n\ninterface ModalContextValue {\n isOpen: boolean;\n onClose: () => void;\n size: ModalSize;\n isClosing: boolean;\n}\n\nconst ModalContext = createContext<ModalContextValue | null>(null);\n\nconst useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('Modal compound components must be used within ModalGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// COMPOUND COMPONENT: ROOT\n// ========================================\n\n/**\n * Props for ModalGlass.Root component\n *\n * Root component that provides context and manages open/close state for the modal.\n * Handles keyboard events, body scroll lock, and accessibility attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Escape key closes modal, Tab key traps focus within modal content\n * - **Focus Management:** Focus automatically moved to modal on open, returned to trigger on close (WCAG 2.4.3)\n * - **Screen Readers:** Uses `role=\"dialog\"` and `aria-modal=\"true\"` for proper modal semantics (WCAG 4.1.3)\n * - **Title Association:** Modal title automatically linked via `aria-labelledby=\"modal-title\"`\n * - **Description Association:** Optional description linked via `aria-describedby=\"modal-description\"`\n * - **Body Scroll Lock:** Prevents background scrolling when modal is open (improves UX and focus management)\n * - **Touch Targets:** All interactive elements (close button, action buttons) meet 44x44px minimum (WCAG 2.5.5)\n * - **Color Contrast:** Modal content and overlay meet WCAG AA contrast requirements\n * - **Motion:** Open/close animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic modal with title and description\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm Action</ModalGlass.Title>\n * <ModalGlass.Description>\n * This action cannot be undone.\n * </ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Are you sure you want to proceed?</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass variant=\"ghost\" onClick={() => setOpen(false)}>\n * Cancel\n * </ButtonGlass>\n * <ButtonGlass variant=\"destructive\" onClick={handleConfirm}>\n * Confirm\n * </ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n *\n * // Different sizes\n * <ModalGlass.Root open={open} onOpenChange={setOpen} size=\"sm\">\n * {// Small modal content}\n * </ModalGlass.Root>\n * <ModalGlass.Root open={open} onOpenChange={setOpen} size=\"lg\">\n * {// Large modal content}\n * </ModalGlass.Root>\n *\n * // Form modal with proper focus management\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Create Account</ModalGlass.Title>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <form id=\"signup-form\" onSubmit={handleSubmit}>\n * <InputGlass label=\"Email\" type=\"email\" required />\n * <InputGlass label=\"Password\" type=\"password\" required />\n * </form>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass variant=\"ghost\" onClick={() => setOpen(false)}>\n * Cancel\n * </ButtonGlass>\n * <ButtonGlass type=\"submit\" form=\"signup-form\">\n * Sign Up\n * </ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n *\n * // Alert modal (no close button)\n * <ModalGlass.Root open={showAlert} onOpenChange={setShowAlert}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Session Expired</ModalGlass.Title>\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * Your session has expired. Please log in again.\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass onClick={handleLogin}>Log In</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n */\ninterface ModalRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Open state */\n open: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Size variant */\n size?: ModalSize;\n /** Child components */\n children: ReactNode;\n}\n\nconst ModalRoot: FC<ModalRootProps> = ({\n open,\n onOpenChange,\n size = 'md',\n children,\n ...props\n}) => {\n const [isClosing, setIsClosing] = useState(false);\n\n const handleClose = useCallback(async () => {\n setIsClosing(true);\n await delay(MODAL_ANIMATION_DURATION);\n setIsClosing(false);\n onOpenChange?.(false);\n }, [onOpenChange]);\n\n useEffect(() => {\n if (open) {\n lockBodyScroll();\n } else {\n unlockBodyScroll();\n }\n return () => {\n unlockBodyScroll();\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return;\n\n const handleEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, handleClose]);\n\n if (!open) return null;\n\n return (\n <ModalContext.Provider value={{ isOpen: open, onClose: handleClose, size, isClosing }}>\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-2 sm:p-4\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n {...props}\n >\n {children}\n </div>\n </ModalContext.Provider>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: OVERLAY\n// ========================================\n\ninterface ModalOverlayProps {\n className?: string;\n}\n\nconst ModalOverlay: FC<ModalOverlayProps> = ({ className }) => {\n const { onClose, isClosing } = useModalContext();\n\n const overlayStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-overlay)',\n backdropFilter: 'blur(var(--blur-sm))',\n WebkitBackdropFilter: 'blur(var(--blur-sm))',\n opacity: isClosing ? 0 : 1,\n transition: 'all 0.3s',\n }),\n [isClosing]\n );\n\n return (\n <div\n className={cn('absolute inset-0 transition-all duration-300', className)}\n style={overlayStyles}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: CONTENT\n// ========================================\n\ninterface ModalContentProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n ({ children, className }, ref) => {\n const { size, isClosing } = useModalContext();\n\n const modalStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-bg)',\n border: '1px solid var(--modal-border)',\n boxShadow: 'var(--modal-glow)',\n backdropFilter: 'blur(var(--blur-lg))',\n WebkitBackdropFilter: 'blur(var(--blur-lg))',\n transform: isClosing ? 'scale(0.95) translateY(10px)' : 'scale(1) translateY(0)',\n opacity: isClosing ? 0 : 1,\n animation: !isClosing ? 'modalFadeIn 0.3s ease-out' : 'none',\n }),\n [isClosing]\n );\n\n return (\n <div ref={ref} className={cn(modalSizes({ size }), className)} style={modalStyles}>\n {/* Glow effect */}\n <div\n className=\"absolute inset-0 rounded-3xl pointer-events-none\"\n style={{\n background: 'var(--modal-glow-effect)',\n }}\n />\n {children}\n </div>\n );\n }\n);\n\nModalContent.displayName = 'ModalContent';\n\n// ========================================\n// COMPOUND COMPONENT: HEADER\n// ========================================\n\ninterface ModalHeaderProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalHeader: FC<ModalHeaderProps> = ({ children, className }) => {\n return (\n <div className={cn('relative flex items-start justify-between mb-4 md:mb-5', className)}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: BODY\n// ========================================\n\ninterface ModalBodyProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalBody: FC<ModalBodyProps> = ({ children, className }) => {\n return (\n <div className={cn('relative', className)} style={{ color: 'var(--text-secondary)' }}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: FOOTER\n// ========================================\n\ninterface ModalFooterProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalFooter: FC<ModalFooterProps> = ({ children, className }) => {\n return (\n <div className={cn('relative flex gap-3 mt-4 md:mt-5 justify-end', className)}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: TITLE\n// ========================================\n\ninterface ModalTitleProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalTitle: FC<ModalTitleProps> = ({ children, className }) => {\n return (\n <h3\n id=\"modal-title\"\n className={cn('text-lg md:text-xl font-semibold', className)}\n style={{ color: 'var(--text-primary)' }}\n >\n {children}\n </h3>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: DESCRIPTION\n// ========================================\n\ninterface ModalDescriptionProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalDescription: FC<ModalDescriptionProps> = ({ children, className }) => {\n return (\n <p\n id=\"modal-description\"\n className={cn('text-sm md:text-base mt-1', className)}\n style={{ color: 'var(--text-muted)' }}\n >\n {children}\n </p>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: CLOSE\n// ========================================\n\ninterface ModalCloseProps {\n className?: string;\n}\n\nconst ModalClose: FC<ModalCloseProps> = ({ className }) => {\n const { onClose } = useModalContext();\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n const closeButtonStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-close-btn-bg)',\n border: 'var(--modal-close-btn-border)',\n color: 'var(--text-muted)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--modal-close-btn-hover-glow)'\n : 'none',\n outline: 'none',\n }),\n [isHovered, isFocusVisible]\n );\n\n return (\n <button\n onClick={onClose}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n className={cn(\n 'p-1.5 md:p-2 rounded-xl transition-all duration-300',\n className\n )}\n style={closeButtonStyles}\n type=\"button\"\n aria-label=\"Close modal\"\n >\n <X className={ICON_SIZES.md} />\n </button>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT (v1.0.0+)\n// ========================================\n\n/**\n * ModalGlass - Compound Component API\n *\n * @example\n * ```tsx\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm</ModalGlass.Title>\n * <ModalGlass.Description>Are you sure?</ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Body content</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass>Cancel</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n */\nexport const ModalGlass = {\n Root: ModalRoot,\n Overlay: ModalOverlay,\n Content: ModalContent,\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n Title: ModalTitle,\n Description: ModalDescription,\n Close: ModalClose,\n};\n","/**\n * NotificationGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error';\n\nexport const notificationVariants = cva(\n 'flex items-start gap-3 md:gap-4 p-4 md:p-5 rounded-2xl min-w-[280px] md:min-w-[320px] max-w-[360px] md:max-w-[420px] transition-all duration-300',\n {\n variants: {\n type: {\n info: '',\n success: '',\n warning: '',\n error: '',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n }\n);\n","/**\n * NotificationGlass Component\n *\n * Glass-themed toast notification with:\n * - Theme-aware styling (glass/light/aurora)\n * - Type variants (info/success/warning/error)\n * - Glow effect on hover\n * - Dismissible\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { Info, CheckCircle, AlertTriangle, AlertCircle, X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { notificationVariants } from '@/lib/variants/notification-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\nimport type { NotificationType } from '@/lib/variants/notification-glass-variants';\n\n// ========================================\n// CONSTANTS\n// ========================================\n\nconst NOTIFICATION_ICONS = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n} as const;\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface NotificationGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'style'>,\n VariantProps<typeof notificationVariants> {\n readonly title: string;\n readonly message: string;\n /** Notification variant (shadcn/ui compatible) */\n readonly variant?: 'default' | 'destructive' | 'success' | 'warning';\n /** @deprecated Use variant prop instead. Will be removed in next major version. */\n readonly type?: NotificationType;\n readonly onClose: () => void;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Type-specific CSS variable mapping\nconst getTypeVars = (notifType: NotificationType): { color: string; glow: string; iconBg: string } => {\n const configs: Record<NotificationType, { color: string; glow: string; iconBg: string }> = {\n info: { color: 'var(--notification-info-color)', glow: 'var(--notification-info-glow)', iconBg: 'var(--notification-info-icon-bg)' },\n success: { color: 'var(--notification-success-color)', glow: 'var(--notification-success-glow)', iconBg: 'var(--notification-success-icon-bg)' },\n warning: { color: 'var(--notification-warning-color)', glow: 'var(--notification-warning-glow)', iconBg: 'var(--notification-warning-icon-bg)' },\n error: { color: 'var(--notification-error-color)', glow: 'var(--notification-error-glow)', iconBg: 'var(--notification-error-icon-bg)' },\n };\n return configs[notifType];\n};\n\nexport const NotificationGlass = forwardRef<HTMLDivElement, NotificationGlassProps>(\n ({ variant: variantProp, type: typeProp, title, message, onClose, className, ...props }, ref) => {\n // Backward compatibility: support deprecated 'type' prop\n const variant = variantProp ?? typeProp ?? 'default';\n\n // Show deprecation warning in development\n if (process.env.NODE_ENV === 'development' && typeProp) {\n console.warn(\n 'NotificationGlass: The \"type\" prop is deprecated. Use \"variant\" instead. Example: <NotificationGlass variant=\"destructive\" />'\n );\n }\n\n // Map variant to internal notification type\n const variantToType: Record<string, NotificationType> = {\n default: 'info',\n destructive: 'error',\n success: 'success',\n warning: 'warning',\n // Backward compatibility aliases\n info: 'info',\n error: 'error',\n };\n\n const effectiveType: NotificationType = variantToType[variant] || 'info';\n\n const { isHovered, hoverProps } = useHover();\n const Icon = NOTIFICATION_ICONS[effectiveType];\n const config = getTypeVars(effectiveType);\n\n const containerStyles: CSSProperties = {\n background: 'var(--notification-bg)',\n border: '1px solid var(--notification-border)',\n boxShadow: isHovered ? config.glow : 'var(--notification-shadow)',\n transform: isHovered ? 'translateY(-2px)' : 'translateY(0)',\n };\n\n const iconContainerStyles: CSSProperties = {\n background: config.iconBg,\n boxShadow: isHovered ? config.glow : 'none',\n };\n\n return (\n <div\n ref={ref}\n className={cn(notificationVariants({ type: effectiveType }), className)}\n style={containerStyles}\n role=\"alert\"\n aria-live=\"polite\"\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {/* Icon with glow */}\n <div\n className=\"w-8 h-8 md:w-10 md:h-10 rounded-xl flex items-center justify-center shrink-0\"\n style={iconContainerStyles}\n >\n <Icon className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: config.color }} />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-semibold text-xs md:text-sm mb-0.5 md:mb-1\" style={{ color: 'var(--text-primary)' }}>\n {title}\n </p>\n <p className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {message}\n </p>\n </div>\n\n {/* Close button */}\n <button\n onClick={onClose}\n className=\"p-1 md:p-1.5 rounded-lg shrink-0\"\n style={{ color: 'var(--text-muted)' }}\n type=\"button\"\n aria-label=\"Close notification\"\n >\n <X className={ICON_SIZES.md} />\n </button>\n </div>\n );\n }\n);\n\nNotificationGlass.displayName = 'NotificationGlass';\n","/**\n * PopoverGlass Component\n *\n * Floating glass-themed container for tooltips, dropdowns, and overlays with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth animations with fade-in effect\n * - Arrow pointer with glass styling\n * - ESC key and click-outside to close\n * - Focus trap for accessibility\n * - All position/alignment options (top/right/bottom/left × start/center/end)\n *\n * @example\n * ```tsx\n * <PopoverGlass\n * trigger={<ButtonGlass>Open</ButtonGlass>}\n * side=\"top\"\n * align=\"center\"\n * >\n * <div className=\"p-4\">Popover content</div>\n * </PopoverGlass>\n * ```\n */\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface PopoverGlassProps {\n /** The trigger element that opens the popover */\n readonly trigger: React.ReactNode;\n /** The content to display inside the popover */\n readonly children: React.ReactNode;\n /** The preferred side of the trigger to render against */\n readonly side?: 'top' | 'right' | 'bottom' | 'left';\n /** The preferred alignment against the trigger */\n readonly align?: 'start' | 'center' | 'end';\n /** The distance in pixels from the trigger */\n readonly sideOffset?: number;\n /** Controlled open state */\n readonly open?: boolean;\n /** Callback when open state changes */\n readonly onOpenChange?: (open: boolean) => void;\n /** Whether to show the arrow pointer */\n readonly showArrow?: boolean;\n /** Additional class name for the content wrapper */\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const PopoverGlass = React.forwardRef<\n HTMLDivElement,\n PopoverGlassProps\n>(\n (\n {\n trigger,\n children,\n side = 'bottom',\n align = 'center',\n sideOffset = 8,\n open,\n onOpenChange,\n showArrow = true,\n className,\n },\n ref\n ) => {\n // Popover content styles with CSS variables\n const popoverStyles: React.CSSProperties = {\n background: 'var(--popover-bg)',\n border: '1px solid var(--popover-border)',\n boxShadow: 'var(--popover-shadow)',\n backdropFilter: 'blur(var(--blur-md))', // 16px - standard popover blur\n WebkitBackdropFilter: 'blur(var(--blur-md))',\n };\n\n // Arrow styles\n const arrowStyles: React.CSSProperties = {\n fill: 'var(--popover-arrow-bg)',\n };\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <PopoverPrimitive.Trigger asChild>{trigger}</PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-[50003] rounded-2xl p-4',\n 'animate-in fade-in-0 zoom-in-95 duration-200',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'outline-none',\n className\n )}\n style={popoverStyles}\n role=\"dialog\"\n aria-modal=\"false\"\n >\n {children}\n\n {showArrow && (\n <PopoverPrimitive.Arrow\n className=\"fill-current\"\n style={arrowStyles}\n width={16}\n height={8}\n />\n )}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n }\n);\n\nPopoverGlass.displayName = 'PopoverGlass';\n","/**\n * SkeletonGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type SkeletonVariant = 'text' | 'title' | 'avatar' | 'thumbnail' | 'card';\n\nexport const skeletonVariants = cva('overflow-hidden', {\n variants: {\n variant: {\n text: 'h-3 md:h-4 rounded',\n title: 'h-5 md:h-6 rounded',\n avatar: 'w-10 h-10 md:w-12 md:h-12 rounded-full',\n thumbnail: 'w-full h-24 md:h-32 rounded-xl',\n card: 'w-full h-36 md:h-48 rounded-2xl',\n },\n },\n defaultVariants: {\n variant: 'text',\n },\n});\n","/**\n * SkeletonGlass Component\n *\n * Glass-themed loading skeleton with:\n * - Theme-aware styling (glass/light/aurora)\n * - Shimmer animation\n * - Variant presets (text, title, avatar, thumbnail, card)\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { skeletonVariants } from '@/lib/variants/skeleton-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SkeletonGlassProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n readonly width?: string | number;\n readonly height?: string | number;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SkeletonGlass = forwardRef<HTMLDivElement, SkeletonGlassProps>(\n (\n {\n className,\n variant = 'text',\n width,\n height,\n style,\n ...props\n },\n ref\n ) => {\n const skeletonStyles: CSSProperties = {\n width,\n height,\n background: 'linear-gradient(90deg, var(--skeleton-bg) 25%, var(--skeleton-shine) 50%, var(--skeleton-bg) 75%)',\n backgroundSize: '200% 100%',\n animation: 'skeleton-loading 1.5s infinite',\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n style={skeletonStyles}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeletonGlass.displayName = 'SkeletonGlass';\n","/**\n * SliderGlass Component\n *\n * Glass-themed range slider with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover/drag\n * - Gradient fill (glass theme)\n * - Optional label and value display\n */\n\nimport { forwardRef, useState, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { FormFieldWrapper } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SliderGlassProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> {\n readonly value: number;\n readonly onChange: (value: number) => void;\n readonly min?: number;\n readonly max?: number;\n readonly step?: number;\n readonly showValue?: boolean;\n readonly label?: string;\n readonly error?: string;\n readonly success?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SliderGlass = forwardRef<HTMLInputElement, SliderGlassProps>(\n (\n {\n className,\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n showValue,\n label,\n error,\n success,\n disabled,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const [isDragging, setIsDragging] = useState(false);\n\n const percentage = ((value - min) / (max - min)) * 100;\n\n const trackStyles: CSSProperties = {\n background: 'var(--slider-track)',\n };\n\n const fillStyles: CSSProperties = {\n width: `${percentage}%`,\n background: 'var(--slider-fill)',\n boxShadow:\n isHovered || isDragging\n ? 'var(--slider-fill-glow)'\n : undefined,\n };\n\n const thumbStyles: CSSProperties = {\n left: `calc(${percentage}% - 10px)`,\n background: 'var(--slider-thumb)',\n border: '2px solid var(--slider-thumb-border)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered || isDragging\n ? 'var(--slider-thumb-glow)'\n : 'var(--slider-thumb-shadow)',\n transform: isDragging\n ? 'scale(1.15)'\n : isHovered\n ? 'scale(1.05)'\n : 'scale(1)',\n };\n\n // Custom label with value display - only used when showValue is true\n // Otherwise, let FormFieldWrapper handle the label\n const customLabel = (label && showValue) || (!label && showValue) ? (\n <div className=\"flex justify-between mb-1.5 md:mb-2\">\n {label && (\n <label\n className=\"text-xs md:text-sm font-medium\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {label}\n </label>\n )}\n <span\n className=\"text-xs md:text-sm font-medium tabular-nums\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {value}\n </span>\n </div>\n ) : undefined;\n\n return (\n <FormFieldWrapper\n label={showValue ? undefined : label}\n error={error}\n success={success}\n className={cn('w-full', className)}\n >\n {customLabel}\n <div\n className=\"relative w-full h-8 md:h-6 flex items-center\"\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n >\n {/* Track */}\n <div\n className=\"absolute w-full h-2.5 md:h-2 rounded-full\"\n style={trackStyles}\n />\n {/* Fill */}\n <div\n className=\"absolute h-2.5 md:h-2 rounded-full transition-all duration-150\"\n style={fillStyles}\n />\n {/* Hidden input for accessibility */}\n <input\n ref={ref}\n type=\"range\"\n value={value}\n onChange={(e) => onChange(Number(e.target.value))}\n onMouseDown={() => setIsDragging(true)}\n onMouseUp={() => setIsDragging(false)}\n onTouchStart={() => setIsDragging(true)}\n onTouchEnd={() => setIsDragging(false)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n aria-label={label || `Slider: ${value} (${min}-${max})`}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${value}`}\n className=\"absolute w-full h-8 md:h-6 opacity-0 cursor-pointer disabled:cursor-not-allowed z-10\"\n style={{ outline: 'none' }}\n {...props}\n />\n {/* Thumb - larger on mobile for touch */}\n <div\n className=\"absolute w-6 h-6 md:w-5 md:h-5 rounded-full transition-all duration-150 pointer-events-none\"\n style={thumbStyles}\n />\n </div>\n </FormFieldWrapper>\n );\n }\n);\n\nSliderGlass.displayName = 'SliderGlass';\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * TabsGlass Component (Compound API only)\n *\n * Glass-themed tab navigation with:\n * - Theme-aware styling (glass/light/aurora)\n * - Active tab indicator\n * - Smooth transitions\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"overview\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"analytics\">Analytics</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"settings\">Settings</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"overview\">\n * Overview content\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"analytics\">\n * Analytics content\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"settings\">\n * Settings content\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (tabs/activeTab/onChange props)\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport interface TabItem {\n readonly id: string;\n readonly label: string;\n}\n\n// ========================================\n// CONTEXT FOR COMPOUND COMPONENTS\n// ========================================\n\ninterface TabsContextValue {\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = () => {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('Tabs compound components must be used within TabsGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// COMPOUND COMPONENT: ROOT\n// ========================================\n\n/**\n * Props for TabsGlass.Root component\n *\n * Root component that manages tab state and provides context for child components.\n * Features accessible keyboard navigation and ARIA attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate between tabs, Tab moves to tab panel content (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring on active tab using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"tablist\"`, `role=\"tab\"`, `role=\"tabpanel\"` for proper tab semantics (WCAG 4.1.3)\n * - **ARIA Attributes:** Tabs marked with `aria-selected`, panels with `aria-hidden` for state announcement\n * - **Active State:** Visual indicator (underline) plus color change for multi-modal feedback\n * - **Touch Targets:** Tab triggers meet minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Active and inactive tab text meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions and indicator animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic tabs\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"overview\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"analytics\">Analytics</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"settings\">Settings</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"overview\">\n * <h2>Overview</h2>\n * <p>Overview content here</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"analytics\">\n * <h2>Analytics</h2>\n * <p>Analytics content here</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"settings\">\n * <h2>Settings</h2>\n * <p>Settings content here</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Tabs with icons (ensure accessible labels)\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"home\" aria-label=\"Home dashboard\">\n * <Home className=\"w-4 h-4\" />\n * </TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"search\" aria-label=\"Search\">\n * <Search className=\"w-4 h-4\" />\n * </TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"home\">Dashboard content</TabsGlass.Content>\n * <TabsGlass.Content value=\"search\">Search content</TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Disabled tab (announced to screen readers)\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"tab1\">Available Tab</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"tab2\" disabled>\n * Locked Tab\n * </TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"tab1\">Content 1</TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Form tabs with proper focus management\n * <TabsGlass.Root value={currentStep} onValueChange={setCurrentStep}>\n * <TabsGlass.List aria-label=\"Registration steps\">\n * <TabsGlass.Trigger value=\"account\">Account Info</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"profile\">Profile Details</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"confirm\">Confirmation</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"account\">\n * <InputGlass label=\"Email\" type=\"email\" />\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"profile\">\n * <InputGlass label=\"Name\" />\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"confirm\">\n * <p>Review your information</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n */\ninterface TabsRootProps {\n /** Current active tab value */\n value: string;\n /** Callback when tab value changes */\n onValueChange?: (value: string) => void;\n /** Child components */\n children: ReactNode;\n /** Optional className for container */\n className?: string;\n}\n\nconst TabsRoot: FC<TabsRootProps> = ({ value, onValueChange, children, className }) => {\n return (\n <TabsContext.Provider value={{ value, onValueChange }}>\n <div className={cn('tabs-glass-root', className)}>{children}</div>\n </TabsContext.Provider>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: LIST\n// ========================================\n\ninterface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n className?: string;\n}\n\nconst TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ children, className, ...props }, ref) => {\n const containerStyles: CSSProperties = {\n background: 'var(--tab-container-bg)',\n border: '1px solid var(--tab-container-border)',\n };\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex gap-0.5 md:gap-1 p-0.5 md:p-1 rounded-xl', className)}\n style={containerStyles}\n role=\"tablist\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTabsList.displayName = 'TabsList';\n\n// ========================================\n// COMPOUND COMPONENT: TRIGGER\n// ========================================\n\ninterface TabsTriggerProps {\n /** Value of this tab */\n value: string;\n /** Tab label/content */\n children: ReactNode;\n /** Optional className */\n className?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ value, children, className, disabled }, ref) => {\n const { value: activeValue, onValueChange } = useTabsContext();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const isActive = activeValue === value;\n\n const tabStyles: CSSProperties = {\n background: isActive ? 'var(--tab-active-bg)' : 'var(--tab-bg)',\n color: isActive ? 'var(--tab-active-text)' : 'var(--text-secondary)',\n boxShadow: isFocusVisible && !disabled ? 'var(--focus-glow)' : 'none',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n disabled={disabled}\n className={cn(\n 'relative px-2.5 py-1.5 md:px-4 md:py-2 rounded-lg text-xs md:text-sm font-medium transition-[background-color,color,opacity] duration-300',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n style={tabStyles}\n onClick={() => !disabled && onValueChange?.(value)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n >\n {children}\n {isActive && (\n <div\n className=\"absolute bottom-0 left-1/2 -translate-x-1/2 w-6 md:w-8 h-0.5 rounded-full\"\n style={{ background: 'var(--tab-indicator)' }}\n />\n )}\n </button>\n );\n }\n);\n\nTabsTrigger.displayName = 'TabsTrigger';\n\n// ========================================\n// COMPOUND COMPONENT: CONTENT\n// ========================================\n\ninterface TabsContentProps {\n /** Value of the tab this content belongs to */\n value: string;\n /** Content to display when tab is active */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst TabsContent: FC<TabsContentProps> = ({ value, children, className }) => {\n const { value: activeValue } = useTabsContext();\n const isActive = activeValue === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n aria-hidden={!isActive}\n className={cn('animate-in fade-in-0 duration-200', className)}\n >\n {children}\n </div>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT (v1.0.0+)\n// ========================================\n\n/**\n * TabsGlass - Compound Component API\n *\n * @example\n * ```tsx\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"tab1\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"tab2\">Analytics</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"tab1\">\n * <p>Overview content</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"tab2\">\n * <p>Analytics content</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (tabs/activeTab/onChange props)\n */\nexport const TabsGlass = {\n Root: TabsRoot,\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n};\n","/**\n * ToggleGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ToggleGlassSize = 'sm' | 'md' | 'lg';\n\nexport const toggleSizes = cva('relative rounded-full transition-all duration-300', {\n variants: {\n size: {\n sm: 'w-8 h-4',\n md: 'w-11 h-6',\n lg: 'w-14 h-7',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * ToggleGlass Component\n *\n * Glass-themed toggle switch with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect when active\n * - Size variants\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { toggleSizes } from '@/lib/variants/toggle-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// SIZE CONFIG\n// ========================================\n\nconst sizesConfig = {\n sm: { track: 'w-8 h-4', knob: 'w-3 h-3', translate: 'translate-x-4' },\n md: { track: 'w-11 h-6', knob: 'w-5 h-5', translate: 'translate-x-5' },\n lg: { track: 'w-14 h-7', knob: 'w-6 h-6', translate: 'translate-x-7' },\n} as const;\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface ToggleGlassProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof toggleSizes> {\n readonly checked: boolean;\n readonly onChange?: (checked: boolean) => void;\n readonly label?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ToggleGlass = forwardRef<HTMLButtonElement, ToggleGlassProps>(\n (\n {\n className,\n size = 'md',\n checked,\n onChange,\n disabled,\n label,\n ...props\n },\n ref\n ) => {\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const s = sizesConfig[size ?? 'md'];\n\n const trackStyles: CSSProperties = {\n background: checked ? 'var(--toggle-active-bg)' : 'var(--toggle-bg)',\n boxShadow: isFocusVisible && !disabled\n ? 'var(--focus-glow)'\n : checked\n ? 'var(--toggle-glow)'\n : 'none',\n };\n\n const knobStyles: CSSProperties = {\n background: 'var(--toggle-knob)',\n };\n\n // Touch area wrapper ensures 44px minimum touch target (Apple HIG)\n const toggle = (\n <span className=\"inline-flex items-center justify-center min-h-11\">\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label || 'Toggle switch'}\n disabled={disabled}\n className={cn(\n toggleSizes({ size }),\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n !label && className\n )}\n style={trackStyles}\n onClick={() => !disabled && onChange?.(!checked)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n {...props}\n >\n <div\n className={cn(\n 'absolute top-0.5 left-0.5 rounded-full shadow-md transition-all duration-300',\n s.knob,\n checked && s.translate\n )}\n style={knobStyles}\n />\n </button>\n </span>\n );\n\n if (label) {\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 md:gap-2.5',\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n >\n {toggle}\n <span className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {label}\n </span>\n </label>\n );\n }\n\n return toggle;\n }\n);\n\nToggleGlass.displayName = 'ToggleGlass';\n","/**\n * TooltipGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const tooltipPositions = cva(\n 'absolute z-50 px-2 py-1 md:px-3 md:py-1.5 rounded-lg text-[10px] md:text-xs font-medium whitespace-nowrap transition-opacity duration-200',\n {\n variants: {\n position: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n }\n);\n","/**\n * TooltipGlass Component\n *\n * Glass-themed tooltip with:\n * - Unified dark design (consistent UX across themes)\n * - Position variants (top/bottom/left/right)\n * - Smooth animation\n */\n\nimport { forwardRef, useId, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { tooltipPositions, type TooltipPosition } from '@/lib/variants/tooltip-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the TooltipGlass component\n *\n * A glass-themed tooltip with configurable positioning and unified dark design.\n * Features smooth animations and WCAG-compliant accessibility attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Tooltip appears on focus for keyboard users (same as hover)\n * - **Focus Management:** Tooltip does not trap focus, allows normal navigation flow\n * - **Screen Readers:** Uses `aria-describedby` to associate tooltip with trigger element (WCAG 4.1.3)\n * - **ARIA Attributes:** Tooltip marked with `role=\"tooltip\"` and unique ID for proper association\n * - **Dismissible:** Tooltip dismisses on mouse leave, focus blur, or Escape key\n * - **Touch Targets:** N/A - tooltips appear on hover/focus, do not require direct interaction\n * - **Color Contrast:** Tooltip text meets WCAG AA contrast ratio 4.5:1 against dark background\n * - **Motion:** Fade-in animation respects `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic tooltip\n * <TooltipGlass content=\"Click to edit\">\n * <button><Edit className=\"w-4 h-4\" /></button>\n * </TooltipGlass>\n *\n * // Different positions\n * <TooltipGlass content=\"Top tooltip\" position=\"top\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Bottom tooltip\" position=\"bottom\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Left tooltip\" position=\"left\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Right tooltip\" position=\"right\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n *\n * // Icon button with accessible tooltip (provides label)\n * <TooltipGlass content=\"Delete item\">\n * <ButtonGlass\n * icon={Trash}\n * size=\"icon\"\n * variant=\"ghost\"\n * aria-label=\"Delete item\"\n * />\n * </TooltipGlass>\n *\n * // Informational tooltip on text\n * <TooltipGlass content=\"This feature requires a Pro subscription\">\n * <span className=\"underline decoration-dotted\">Pro Feature</span>\n * </TooltipGlass>\n *\n * // Badge with tooltip for additional context\n * <TooltipGlass content=\"Last updated 2 hours ago\" position=\"top\">\n * <BadgeGlass variant=\"success\" dot>\n * Active\n * </BadgeGlass>\n * </TooltipGlass>\n *\n * // Disabled button with explanation tooltip\n * <TooltipGlass content=\"Save your changes first to enable this action\">\n * <span>\n * <ButtonGlass disabled aria-describedby=\"tooltip-id\">\n * Export\n * </ButtonGlass>\n * </span>\n * </TooltipGlass>\n * ```\n */\nexport interface TooltipGlassProps extends VariantProps<typeof tooltipPositions> {\n readonly children: ReactNode;\n readonly content: string;\n readonly position?: TooltipPosition;\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const TooltipGlass = forwardRef<HTMLDivElement, TooltipGlassProps>(\n ({ children, content, position = 'top', className }, ref) => {\n const { isHovered, hoverProps } = useHover();\n const tooltipId = useId();\n\n // Glass tooltip with same background as modal (oklch(100% 0 0 / 0.06))\n const tooltipStyles: CSSProperties = {\n background: 'var(--tooltip-bg)',\n color: 'var(--tooltip-text)',\n border: '1px solid var(--tooltip-border)',\n boxShadow: 'var(--tooltip-shadow)',\n backdropFilter: 'blur(var(--blur-xl))',\n WebkitBackdropFilter: 'blur(var(--blur-xl))',\n };\n\n return (\n <div\n ref={ref}\n className={cn('relative inline-flex', className)}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n aria-describedby={isHovered ? tooltipId : undefined}\n >\n {children}\n {isHovered && (\n <div\n id={tooltipId}\n className={cn(tooltipPositions({ position }))}\n style={tooltipStyles}\n role=\"tooltip\"\n >\n {content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTooltipGlass.displayName = 'TooltipGlass';\n","// ========================================\n// EXPANDABLE HEADER GLASS - ATOMIC COMPONENT\n// Collapsible section header with icon and chevron\n// Level 2: Atomic (extracted from FlagsSectionGlass)\n// ========================================\n\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from 'react';\nimport { ChevronUp, ChevronDown, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface ExpandableHeaderGlassProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title'> {\n /** Header title */\n readonly title: ReactNode;\n /** Leading icon component */\n readonly icon?: LucideIcon;\n /** Icon color (CSS variable or color value) */\n readonly iconColor?: string;\n /** Expanded state */\n readonly expanded: boolean;\n /** Toggle callback */\n readonly onToggle?: () => void;\n}\n\nexport const ExpandableHeaderGlass = forwardRef<\n HTMLButtonElement,\n ExpandableHeaderGlassProps\n>(\n (\n {\n title,\n icon: Icon,\n iconColor = 'var(--text-accent)',\n expanded,\n onToggle,\n className,\n ...props\n },\n ref\n ) => {\n const textStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const chevronStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const iconStyles: CSSProperties = {\n color: iconColor,\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onToggle}\n aria-expanded={expanded}\n className={cn(\n 'w-full p-4 flex items-center justify-between rounded-2xl transition-colors hover:bg-white/5',\n className\n )}\n style={textStyles}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n {Icon && <Icon className=\"w-5 h-5\" style={iconStyles} />}\n <span className=\"font-medium\">{title}</span>\n </div>\n {expanded ? (\n <ChevronUp className=\"w-5 h-5\" style={chevronStyles} />\n ) : (\n <ChevronDown className=\"w-5 h-5\" style={chevronStyles} />\n )}\n </button>\n );\n }\n);\n\nExpandableHeaderGlass.displayName = 'ExpandableHeaderGlass';\n","// ========================================\n// ICON BUTTON GLASS - ATOMIC COMPONENT\n// Glassmorphism icon button with responsive touch targets\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type ButtonHTMLAttributes, type CSSProperties } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nconst iconButtonVariants = cva(\n 'rounded-xl flex items-center justify-center transition-all duration-300 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2',\n {\n variants: {\n size: {\n sm: 'w-8 h-8',\n md: 'w-10 h-10',\n lg: 'w-12 h-12',\n // Touch target: 44px minimum for mobile (WCAG 2.1 AA)\n touch: 'w-11 h-11 md:w-10 md:h-10',\n },\n variant: {\n gradient: '',\n subtle: '',\n ghost: 'bg-transparent hover:bg-white/10',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'gradient',\n },\n }\n);\n\nexport interface IconButtonGlassProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n /** Lucide icon component */\n readonly icon: LucideIcon;\n /** Icon size in pixels (default: 20) */\n readonly iconSize?: number;\n /** Accessible label for screen readers */\n readonly 'aria-label': string;\n}\n\nexport const IconButtonGlass = forwardRef<HTMLButtonElement, IconButtonGlassProps>(\n (\n {\n icon: Icon,\n iconSize = 20,\n size,\n variant,\n className,\n 'aria-label': ariaLabel,\n ...props\n },\n ref\n ) => {\n const gradientStyles: CSSProperties | undefined =\n variant === 'gradient'\n ? {\n background:\n 'linear-gradient(135deg, var(--icon-btn-from), var(--icon-btn-to))',\n boxShadow: 'var(--icon-btn-shadow)',\n }\n : undefined;\n\n const subtleStyles: CSSProperties | undefined =\n variant === 'subtle'\n ? {\n background: 'var(--card-subtle-bg)',\n border: '1px solid var(--card-subtle-border)',\n }\n : undefined;\n\n const iconStyles: CSSProperties = {\n color: 'var(--icon-btn-text)',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n className={cn(iconButtonVariants({ size, variant }), className)}\n style={gradientStyles ?? subtleStyles}\n {...props}\n >\n <Icon size={iconSize} style={iconStyles} />\n </button>\n );\n }\n);\n\nIconButtonGlass.displayName = 'IconButtonGlass';\n","// ========================================\n// SEARCH BOX GLASS - ATOMIC COMPONENT\n// Search input with submit button\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport {\n forwardRef,\n useState,\n type InputHTMLAttributes,\n type CSSProperties,\n} from 'react';\nimport { Search } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface SearchBoxGlassProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onSubmit' | 'onChange'> {\n /** Callback when search is submitted (Enter key or button click) */\n readonly onSubmit?: (value: string) => void;\n /** Initial search value */\n readonly defaultValue?: string;\n /** Controlled value */\n readonly value?: string;\n /** Controlled change handler */\n readonly onChange?: (value: string) => void;\n /** Compact variant for mobile (icon only button) */\n readonly variant?: 'default' | 'compact';\n /** Input width class (default: w-48) */\n readonly inputWidth?: string;\n}\n\nexport const SearchBoxGlass = forwardRef<HTMLInputElement, SearchBoxGlassProps>(\n (\n {\n onSubmit,\n defaultValue = '',\n value: controlledValue,\n onChange: controlledOnChange,\n variant = 'default',\n inputWidth = 'w-32 sm:w-40 md:w-48',\n placeholder = 'Search username...',\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [isFocused, setIsFocused] = useState(false);\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (isControlled) {\n controlledOnChange?.(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handleSubmit = () => {\n onSubmit?.(value);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n };\n\n const containerStyles: CSSProperties = {\n boxShadow: isFocused ? 'var(--focus-glow)' : 'none',\n };\n\n const inputStyles: CSSProperties = {\n background: 'var(--search-bg)',\n color: 'var(--text-primary)',\n border: '1px solid var(--search-border)',\n borderRight: 'none',\n borderTopLeftRadius: '0.75rem',\n borderBottomLeftRadius: '0.75rem',\n };\n\n const buttonStyles: CSSProperties = {\n background: 'var(--search-btn-bg)',\n color: 'var(--search-btn-text)',\n borderTopRightRadius: '0.75rem',\n borderBottomRightRadius: '0.75rem',\n };\n\n return (\n <div\n className={cn('flex w-fit rounded-xl overflow-hidden', className)}\n style={containerStyles}\n >\n <input\n ref={ref}\n type=\"text\"\n value={value}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n className={cn('px-4 py-2 text-sm outline-none transition-all', inputWidth)}\n style={inputStyles}\n {...props}\n />\n <button\n onClick={handleSubmit}\n type=\"button\"\n className={cn(\n 'px-5 py-2 text-sm font-medium flex items-center gap-2 hover:scale-[1.02] transition-transform',\n variant === 'compact' && 'px-3'\n )}\n style={buttonStyles}\n aria-label=\"Search\"\n >\n <Search className=\"w-4 h-4\" />\n {variant === 'default' && <span className=\"hidden sm:inline\">Search</span>}\n </button>\n </div>\n );\n }\n);\n\nSearchBoxGlass.displayName = 'SearchBoxGlass';\n","/**\n * SortDropdownGlass Component\n *\n * Atomic component for sorting controls with:\n * - Theme-aware glass styling\n * - Responsive design (compact/full mode)\n * - Sort field selection (commits, stars, name, contribution)\n * - Sort order toggle (asc/desc)\n */\n\nimport { forwardRef, useState, useRef, useEffect, useCallback, useMemo, type CSSProperties } from 'react';\nimport { ChevronDown, ArrowUp, ArrowDown, Check } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { getDropdownContentStyles } from '@/lib/variants/dropdown-content-styles';\nimport { ICON_SIZES } from '../primitives/style-utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type SortField = 'commits' | 'stars' | 'name' | 'contribution';\nexport type SortOrder = 'asc' | 'desc';\n\n// ========================================\n// FIELD LABELS\n// ========================================\n\nconst fieldLabels: Record<SortField, string> = {\n commits: 'Commits',\n stars: 'Stars',\n name: 'Name',\n contribution: 'Contribution',\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SortDropdownGlassProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current sort field */\n readonly sortBy: SortField;\n /** Current sort order */\n readonly sortOrder: SortOrder;\n /** Callback when sort changes */\n readonly onSortChange: (field: SortField, order: SortOrder) => void;\n /** Available sort options (default: all) */\n readonly options?: readonly SortField[];\n /** Compact mode for mobile */\n readonly compact?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SortDropdownGlass = forwardRef<HTMLDivElement, SortDropdownGlassProps>(\n (\n {\n sortBy,\n sortOrder,\n onSortChange,\n options = ['commits', 'stars', 'name', 'contribution'],\n compact = false,\n className,\n ...props\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const internalRef = useRef<HTMLDivElement>(null);\n\n // Close on click outside or escape\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent): void => {\n if (internalRef.current && !internalRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen]);\n\n const handleToggle = useCallback(() => {\n setIsOpen((prev) => !prev);\n }, []);\n\n const handleFieldSelect = useCallback((field: SortField) => {\n if (field === sortBy) {\n // Toggle order if same field\n onSortChange(field, sortOrder === 'asc' ? 'desc' : 'asc');\n } else {\n // New field, default to desc\n onSortChange(field, 'desc');\n }\n setIsOpen(false);\n }, [sortBy, sortOrder, onSortChange]);\n\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n };\n\n // Styles\n const buttonStyles: CSSProperties = useMemo(() => ({\n background: 'var(--segmented-container-bg)',\n border: '1px solid var(--segmented-container-border)',\n color: 'var(--text-primary)',\n }), []);\n\n const dropdownStyles: CSSProperties = useMemo(() => ({\n ...getDropdownContentStyles(),\n animation: 'dropdownFadeIn 0.2s ease-out',\n }), []);\n\n const SortIcon = sortOrder === 'asc' ? ArrowUp : ArrowDown;\n\n return (\n <div\n ref={(node) => {\n // Handle both refs\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n }}\n className={cn('relative inline-block', className)}\n style={{ zIndex: isOpen ? 50000 : 'auto' }}\n {...props}\n >\n {/* Trigger Button */}\n <button\n type=\"button\"\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-xs font-medium transition-all duration-200',\n 'hover:opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'sm:gap-2 sm:px-4 sm:py-2 sm:text-sm'\n )}\n style={buttonStyles}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n >\n {compact ? (\n <>\n <span>Sort</span>\n <SortIcon className={ICON_SIZES.sm} style={{ color: 'var(--text-accent)' }} />\n </>\n ) : (\n <>\n <span className=\"hidden sm:inline\" style={{ color: 'var(--text-muted)' }}>Sort:</span>\n <span>{fieldLabels[sortBy]}</span>\n <SortIcon className={ICON_SIZES.sm} style={{ color: 'var(--text-accent)' }} />\n <ChevronDown\n className={cn(\n ICON_SIZES.sm,\n 'transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n style={{ color: 'var(--text-muted)' }}\n />\n </>\n )}\n </button>\n\n {/* Dropdown Menu */}\n {isOpen && (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0\"\n style={{ zIndex: 50001 }}\n onClick={() => setIsOpen(false)}\n />\n {/* Menu */}\n <div\n className=\"absolute left-0 mt-2 min-w-[140px] py-1.5 rounded-xl overflow-hidden\"\n style={{ ...dropdownStyles, zIndex: 50002 }}\n role=\"listbox\"\n aria-label=\"Sort options\"\n >\n {options.map((field) => {\n const isSelected = field === sortBy;\n return (\n <button\n key={field}\n type=\"button\"\n onClick={() => handleFieldSelect(field)}\n className={cn(\n 'w-full px-3 py-2 text-xs sm:text-sm text-left flex items-center justify-between gap-2',\n 'transition-colors duration-150 hover:bg-white/5'\n )}\n style={{\n color: isSelected ? 'var(--text-accent)' : 'var(--text-primary)',\n background: isSelected ? 'var(--dropdown-item-hover)' : 'transparent',\n }}\n role=\"option\"\n aria-selected={isSelected}\n >\n <span className=\"font-medium\">{fieldLabels[field]}</span>\n {isSelected && (\n <div className=\"flex items-center gap-1\">\n {sortOrder === 'asc' ? (\n <ArrowUp className={ICON_SIZES.sm} />\n ) : (\n <ArrowDown className={ICON_SIZES.sm} />\n )}\n <Check className={ICON_SIZES.sm} />\n </div>\n )}\n </button>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n }\n);\n\nSortDropdownGlass.displayName = 'SortDropdownGlass';\n","// ========================================\n// STAT ITEM GLASS - ATOMIC COMPONENT\n// Compact stat display with icon and label\n// Level 2: Atomic (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nconst statItemVariants = cva('flex items-center gap-1', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n layout: {\n horizontal: 'flex-row',\n vertical: 'flex-col items-start gap-0.5',\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'horizontal',\n },\n});\n\nexport interface StatItemGlassProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof statItemVariants> {\n /** Lucide icon component */\n readonly icon: LucideIcon;\n /** Stat value (number or formatted string) */\n readonly value: number | string;\n /** Stat label */\n readonly label: string;\n /** Icon size in pixels */\n readonly iconSize?: number;\n /** Abbreviated format for mobile (1.2k instead of 1234) */\n readonly abbreviated?: boolean;\n}\n\nexport const StatItemGlass = forwardRef<HTMLSpanElement, StatItemGlassProps>(\n (\n {\n icon: Icon,\n value,\n label,\n iconSize = 16,\n abbreviated = false,\n size,\n layout,\n className,\n ...props\n },\n ref\n ) => {\n const textStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n const iconStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const formatValue = (val: number | string): string => {\n if (!abbreviated || typeof val !== 'number') return String(val);\n\n if (val >= 1000000) return `${(val / 1000000).toFixed(1)}M`;\n if (val >= 1000) return `${(val / 1000).toFixed(1)}k`;\n return String(val);\n };\n\n return (\n <span\n ref={ref}\n className={cn(statItemVariants({ size, layout }), className)}\n style={textStyles}\n {...props}\n >\n <Icon size={iconSize} style={iconStyles} />\n <span className=\"font-medium\">\n {formatValue(value)} {label}\n </span>\n </span>\n );\n }\n);\n\nStatItemGlass.displayName = 'StatItemGlass';\n","// ========================================\n// THEME TOGGLE GLASS - ATOMIC COMPONENT\n// Theme switcher button with cycle animation\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type ButtonHTMLAttributes, type CSSProperties } from 'react';\nimport { Sun, Moon, Palette } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useTheme, type ThemeName } from '@/lib/theme-context';\nimport '@/glass-theme.css';\n\nconst themes: ThemeName[] = ['light', 'aurora', 'glass'];\n\nconst themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }> = {\n light: { label: 'Light', icon: Sun },\n aurora: { label: 'Aurora', icon: Moon },\n glass: { label: 'Glass', icon: Palette },\n};\n\nexport interface ThemeToggleGlassProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Custom theme toggle handler (overrides default cycleTheme) */\n readonly onToggle?: () => void;\n /** Icon size in pixels (default: 20) */\n readonly iconSize?: number;\n /** Show icon only (hide label on mobile) */\n readonly iconOnly?: boolean;\n}\n\nexport const ThemeToggleGlass = forwardRef<HTMLButtonElement, ThemeToggleGlassProps>(\n ({ onToggle, iconSize = 20, iconOnly = false, className, ...props }, ref) => {\n const { theme, cycleTheme } = useTheme();\n\n const nextTheme = themes[(themes.indexOf(theme) + 1) % themes.length];\n const NextIcon = themeConfig[nextTheme].icon;\n const nextLabel = themeConfig[nextTheme].label;\n\n const buttonStyles: CSSProperties = {\n background: 'var(--card-subtle-bg)',\n border: '1px solid var(--card-subtle-border)',\n };\n\n const iconStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onToggle ?? cycleTheme}\n aria-label={`Switch to ${nextLabel} theme`}\n className={cn(\n 'p-2.5 rounded-xl transition-all duration-300 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2',\n iconOnly && 'md:px-4 md:gap-2',\n className\n )}\n style={buttonStyles}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <NextIcon size={iconSize} style={iconStyles} />\n {!iconOnly && (\n <span className=\"hidden md:inline text-sm font-medium\" style={iconStyles}>\n {nextLabel}\n </span>\n )}\n </div>\n </button>\n );\n }\n);\n\nThemeToggleGlass.displayName = 'ThemeToggleGlass';\n","/**\n * BaseProgressGlass Component\n *\n * Base progress bar component used as foundation for:\n * - ProgressGlass (standard progress bar)\n * - RainbowProgressGlass (gradient progress bar)\n *\n * Features:\n * - Theme-aware styling\n * - Percentage calculation\n * - Accessible (ARIA progressbar)\n * - Customizable through children render prop\n */\n\nimport { forwardRef, type ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface BaseProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n readonly value?: number;\n readonly max?: number;\n readonly children?: ReactNode | ((percentage: number) => ReactNode);\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const BaseProgressGlass = forwardRef<HTMLDivElement, BaseProgressGlassProps>(\n ({ value = 0, max = 100, className, children, ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative h-2 w-full overflow-hidden rounded-full',\n 'bg-white/5 backdrop-blur-sm',\n className\n )}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuetext={`${Math.round(percentage)}%`}\n {...props}\n >\n {typeof children === 'function'\n ? children(percentage)\n : children || (\n <div\n className=\"h-full transition-all duration-300 ease-out\"\n style={{\n width: `${percentage}%`,\n background: 'var(--progress-bar-bg, linear-gradient(90deg, #a855f7, #ec4899))',\n }}\n />\n )}\n </div>\n );\n }\n);\n\nBaseProgressGlass.displayName = 'BaseProgressGlass';\n","// ========================================\n// STATUS INDICATOR GLASS COMPONENT\n// Status dots with glow effect\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type StatusType = \"green\" | \"yellow\" | \"red\";\nexport type StatusSize = \"normal\" | \"large\";\n\nexport interface StatusIndicatorGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly type?: StatusType;\n readonly size?: StatusSize;\n}\n\nconst sizeClasses: Record<StatusSize, string> = {\n normal: \"w-2 h-2 md:w-2.5 md:h-2.5\",\n large: \"w-3.5 h-3.5 md:w-4 md:h-4\",\n};\n\nconst statusSymbols: Record<StatusType, string> = {\n green: \"✓\",\n yellow: \"!\",\n red: \"✕\",\n};\n\n// CSS variable maps for status colors (using semantic naming)\nconst statusVarMap: Record<StatusType, { bg: string; glow: string }> = {\n green: { bg: \"var(--status-online)\", glow: \"var(--status-online-glow)\" },\n yellow: { bg: \"var(--status-away)\", glow: \"var(--status-away-glow)\" },\n red: { bg: \"var(--status-busy)\", glow: \"var(--status-busy-glow)\" },\n};\n\nexport const StatusIndicatorGlass = forwardRef<HTMLDivElement, StatusIndicatorGlassProps>(\n ({ type = \"green\", size = \"normal\", className, ...props }, ref) => {\n const colors = statusVarMap[type];\n\n const indicatorStyles: CSSProperties = {\n backgroundColor: colors.bg,\n boxShadow: colors.glow,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-full flex items-center justify-center\",\n sizeClasses[size],\n className\n )}\n style={indicatorStyles}\n role=\"status\"\n aria-label={`Status: ${type}`}\n {...props}\n >\n {size === \"large\" && (\n <span className=\"text-white text-[8px] md:text-[10px] font-bold\">\n {statusSymbols[type]}\n </span>\n )}\n </div>\n );\n }\n);\n\nStatusIndicatorGlass.displayName = \"StatusIndicatorGlass\";\n","// ========================================\n// FLAG ALERT GLASS COMPONENT\n// Individual warning/danger flag alert\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { StatusIndicatorGlass, type StatusType } from \"./status-indicator-glass\";\nimport \"@/glass-theme.css\";\n\nexport type FlagType = \"warning\" | \"danger\";\n\nexport interface FlagAlertGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly type?: FlagType;\n readonly title: string;\n readonly description?: string;\n}\n\n// CSS variable maps for flag types\nconst flagVarMap: Record<FlagType, { bg: string; border: string; text: string; statusType: StatusType }> = {\n danger: {\n bg: \"var(--alert-danger-bg)\",\n border: \"var(--alert-danger-border)\",\n text: \"var(--alert-danger-text)\",\n statusType: \"red\",\n },\n warning: {\n bg: \"var(--alert-warning-bg)\",\n border: \"var(--alert-warning-border)\",\n text: \"var(--alert-warning-text)\",\n statusType: \"yellow\",\n },\n};\n\nexport const FlagAlertGlass = forwardRef<HTMLDivElement, FlagAlertGlassProps>(\n ({ type = \"warning\", title, description, className, ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n const config = flagVarMap[type];\n\n const alertStyles: CSSProperties = {\n background: config.bg,\n borderColor: config.border,\n transform: isHovered ? \"translateX(4px)\" : \"translateX(0)\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"p-2.5 md:p-3 rounded-xl border transition-all duration-300\",\n className\n )}\n style={alertStyles}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n role=\"alert\"\n {...props}\n >\n <div\n className=\"flex items-center gap-1.5 md:gap-2 font-medium text-xs md:text-sm\"\n style={{ color: config.text }}\n >\n <StatusIndicatorGlass type={config.statusType} />\n {title}\n </div>\n {description && (\n <p\n className=\"text-[10px] md:text-xs mt-0.5 md:mt-1 ml-4 md:ml-5\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {description}\n </p>\n )}\n </div>\n );\n }\n);\n\nFlagAlertGlass.displayName = \"FlagAlertGlass\";\n","// ========================================\n// LANGUAGE BAR GLASS COMPONENT\n// Language/skill proficiency bar with legend\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport interface LanguageData {\n readonly name: string;\n readonly percent: number;\n readonly color?: string;\n}\n\nexport interface LanguageBarGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly languages: readonly LanguageData[];\n readonly showLegend?: boolean;\n}\n\nconst defaultLangColors: Record<string, string> = {\n TypeScript: \"bg-blue-500\",\n JavaScript: \"bg-yellow-400\",\n Python: \"bg-emerald-500\",\n HTML: \"bg-orange-500\",\n CSS: \"bg-purple-500\",\n Java: \"bg-red-500\",\n Go: \"bg-cyan-500\",\n Rust: \"bg-orange-600\",\n Ruby: \"bg-red-600\",\n PHP: \"bg-indigo-500\",\n};\n\nexport const LanguageBarGlass = forwardRef<HTMLDivElement, LanguageBarGlassProps>(\n ({ languages, showLegend = true, className, ...props }, ref) => {\n const [hoveredLang, setHoveredLang] = useState<number | null>(null);\n\n const barStyles: CSSProperties = {\n boxShadow: \"var(--rainbow-glow)\",\n };\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Progress bar */}\n <div\n className=\"flex h-2 md:h-2.5 rounded-full overflow-hidden\"\n style={barStyles}\n role=\"group\"\n aria-label=\"Language distribution\"\n >\n {languages.map((lang, i) => {\n const colorClass = lang.color ?? defaultLangColors[lang.name] ?? \"bg-slate-400\";\n const segmentStyles: CSSProperties = {\n width: `${lang.percent}%`,\n opacity: hoveredLang !== null && hoveredLang !== i ? 0.5 : 1,\n transition: \"all 0.3s\",\n };\n\n return (\n <div\n key={`bar-${lang.name}-${i}`}\n className={cn(colorClass)}\n style={segmentStyles}\n role=\"progressbar\"\n aria-label={`${lang.name}: ${lang.percent}%`}\n aria-valuenow={lang.percent}\n aria-valuemin={0}\n aria-valuemax={100}\n onMouseEnter={() => setHoveredLang(i)}\n onMouseLeave={() => setHoveredLang(null)}\n />\n );\n })}\n </div>\n\n {/* Legend */}\n {showLegend && (\n <div\n className=\"flex items-center gap-3 md:gap-4 mt-1.5 md:mt-2 text-[10px] md:text-xs flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {languages.map((lang, i) => {\n const colorClass = lang.color ?? defaultLangColors[lang.name] ?? \"bg-slate-400\";\n\n return (\n <span\n key={`legend-${lang.name}-${i}`}\n className=\"flex items-center gap-1 md:gap-1.5 cursor-pointer\"\n onMouseEnter={() => setHoveredLang(i)}\n onMouseLeave={() => setHoveredLang(null)}\n >\n <span className={cn(\"w-2 h-2 md:w-2.5 md:h-2.5 rounded-full\", colorClass)} />\n {lang.name} {lang.percent}%\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n\nLanguageBarGlass.displayName = \"LanguageBarGlass\";\n","// ========================================\n// PROFILE AVATAR GLASS COMPONENT\n// Large avatar with glow animation for profiles\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type ProfileAvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ProfileAvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nconst sizeClasses: Record<ProfileAvatarSize, string> = {\n sm: \"w-9 h-9 md:w-10 md:h-10 text-xs md:text-sm\",\n md: \"w-12 h-12 md:w-14 md:h-14 text-base md:text-lg\",\n lg: \"w-14 h-14 md:w-16 md:h-16 text-lg md:text-xl\",\n xl: \"w-18 h-18 md:w-20 md:h-20 text-xl md:text-2xl\",\n};\n\nconst statusSizeClasses: Record<ProfileAvatarSize, string> = {\n sm: \"w-2.5 h-2.5 md:w-3 md:h-3\",\n md: \"w-3 h-3 md:w-3.5 md:h-3.5\",\n lg: \"w-3.5 h-3.5 md:w-4 md:h-4\",\n xl: \"w-4 h-4 md:w-5 md:h-5\",\n};\n\nconst statusPositionClasses: Record<ProfileAvatarSize, string> = {\n sm: \"bottom-0 right-0\",\n md: \"bottom-0 right-0\",\n lg: \"-bottom-0.5 -right-0.5\",\n xl: \"-bottom-1 -right-1\",\n};\n\n// CSS variable maps for status colors (using semantic naming)\nconst statusVarMap: Record<ProfileAvatarStatus, string> = {\n online: \"var(--status-online)\",\n offline: \"var(--text-muted)\",\n busy: \"var(--status-busy)\",\n away: \"var(--status-away)\",\n};\n\nexport interface ProfileAvatarGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly initials: string;\n readonly size?: ProfileAvatarSize;\n readonly status?: ProfileAvatarStatus;\n readonly glowing?: boolean;\n}\n\nexport const ProfileAvatarGlass = forwardRef<HTMLDivElement, ProfileAvatarGlassProps>(\n ({ initials, size = \"lg\", status, glowing = true, className, ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const avatarStyles: CSSProperties = {\n boxShadow: isHovered ? \"var(--profile-avatar-glow)\" : \"none\",\n border: \"3px solid var(--profile-avatar-border)\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"relative inline-flex\", className)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n <div\n className={cn(\n \"rounded-full bg-gradient-to-br from-blue-400 via-violet-500 to-indigo-500\",\n \"flex items-center justify-center text-white font-bold transition-all duration-300\",\n sizeClasses[size],\n glowing && \"animate-[glow-pulse_2s_ease-in-out_infinite]\"\n )}\n style={avatarStyles}\n role=\"img\"\n aria-label={`Profile avatar with initials ${initials}`}\n >\n {initials}\n </div>\n {status && (\n <span\n className={cn(\n \"absolute rounded-full\",\n statusPositionClasses[size],\n statusSizeClasses[size]\n )}\n style={{\n background: statusVarMap[status],\n border: \"none\",\n boxShadow: \"none\",\n }}\n role=\"status\"\n aria-label={`Status: ${status}`}\n />\n )}\n </div>\n );\n }\n);\n\nProfileAvatarGlass.displayName = \"ProfileAvatarGlass\";\n","/**\n * ProgressGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ProgressSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type ProgressGradient = 'violet' | 'blue' | 'cyan' | 'amber' | 'emerald' | 'rose';\n\nexport const progressSizes = cva('rounded-full overflow-hidden', {\n variants: {\n size: {\n sm: 'h-1.5 md:h-1',\n md: 'h-2.5 md:h-2',\n lg: 'h-3.5 md:h-3',\n xl: 'h-5 md:h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * ProgressGlass Component\n *\n * Glass-themed progress bar with:\n * - Theme-aware styling (glass/light/aurora)\n * - Gradient fill with glow\n * - Size variants\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { progressSizes, type ProgressGradient } from '@/lib/variants/progress-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface ProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof progressSizes> {\n readonly value: number;\n readonly gradient?: ProgressGradient;\n readonly showLabel?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Gradient colors for the fill - CSS variable based\nconst getGradientColors = (gradient: ProgressGradient): { from: string; to: string; glowVar: string } => {\n const gradients: Record<ProgressGradient, { from: string; to: string; glowVar: string }> = {\n violet: { from: '#8b5cf6', to: '#a855f7', glowVar: '--progress-glow-violet' },\n blue: { from: '#3b82f6', to: '#60a5fa', glowVar: '--progress-glow-blue' },\n cyan: { from: '#06b6d4', to: '#22d3ee', glowVar: '--progress-glow-cyan' },\n amber: { from: '#f59e0b', to: '#fbbf24', glowVar: '--progress-glow-amber' },\n emerald: { from: '#10b981', to: '#34d399', glowVar: '--progress-glow-emerald' },\n rose: { from: '#f43f5e', to: '#fb7185', glowVar: '--progress-glow-rose' },\n };\n return gradients[gradient];\n};\n\nexport const ProgressGlass = forwardRef<HTMLDivElement, ProgressGlassProps>(\n (\n {\n className,\n size = 'md',\n value,\n gradient = 'violet',\n showLabel,\n ...props\n },\n ref\n ) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const gradientColors = getGradientColors(gradient);\n\n const trackStyles: CSSProperties = {\n background: 'var(--progress-bg)',\n };\n\n const fillStyles: CSSProperties = {\n width: `${clampedValue}%`,\n background: `linear-gradient(90deg, ${gradientColors.from}, ${gradientColors.to})`,\n boxShadow: `var(${gradientColors.glowVar})`,\n };\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {showLabel && (\n <div className=\"flex justify-between mb-1 md:mb-1.5\">\n <span className=\"text-[10px] md:text-xs\" style={{ color: 'var(--text-muted)' }}>\n Progress\n </span>\n <span className=\"text-[10px] md:text-xs font-medium\" style={{ color: 'var(--text-secondary)' }}>\n {clampedValue}%\n </span>\n </div>\n )}\n <div className={cn(progressSizes({ size }))} style={trackStyles}>\n <div\n className=\"h-full rounded-full transition-all duration-700 ease-out\"\n style={fillStyles}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`Progress: ${clampedValue}%`}\n />\n </div>\n </div>\n );\n }\n);\n\nProgressGlass.displayName = 'ProgressGlass';\n","// ========================================\n// RAINBOW PROGRESS GLASS COMPONENT\n// Animated rainbow gradient progress bar\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type RainbowProgressSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface RainbowProgressGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly value: number;\n readonly size?: RainbowProgressSize;\n readonly showGlow?: boolean;\n}\n\nconst sizeClasses: Record<RainbowProgressSize, string> = {\n sm: \"h-2.5 md:h-2\",\n md: \"h-3.5 md:h-3\",\n lg: \"h-[1.125rem] md:h-4\",\n xl: \"h-6 md:h-5\",\n};\n\nexport const RainbowProgressGlass = forwardRef<HTMLDivElement, RainbowProgressGlassProps>(\n ({ value, size = \"lg\", showGlow = true, className, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n\n const trackStyles: CSSProperties = {\n background: \"var(--progress-bg)\",\n };\n\n const fillStyles: CSSProperties = {\n width: `${clampedValue}%`,\n background:\n \"linear-gradient(90deg, #f59e0b, #fbbf24, #84cc16, #22c55e, #14b8a6, #06b6d4, #3b82f6)\",\n boxShadow: showGlow ? \"var(--rainbow-glow)\" : \"none\",\n animation: showGlow ? \"var(--rainbow-animation)\" : \"none\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"rounded-full overflow-hidden\", sizeClasses[size], className)}\n style={trackStyles}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`Rainbow progress: ${clampedValue}%`}\n {...props}\n >\n <div\n className=\"h-full rounded-full transition-all duration-1000\"\n style={fillStyles}\n />\n </div>\n );\n }\n);\n\nRainbowProgressGlass.displayName = \"RainbowProgressGlass\";\n","// ========================================\n// SEGMENTED CONTROL GLASS COMPONENT\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport interface SegmentOption {\n readonly value: string;\n readonly label: string;\n}\n\nexport interface SegmentedControlGlassProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n readonly options: readonly SegmentOption[];\n readonly value: string;\n readonly onChange?: (value: string) => void;\n}\n\nexport const SegmentedControlGlass = forwardRef<HTMLDivElement, SegmentedControlGlassProps>(\n ({ options, value, onChange, className, ...props }, ref) => {\n const containerStyles: CSSProperties = {\n border: \"1px solid var(--segmented-container-border)\",\n background: \"var(--segmented-container-bg)\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex rounded-xl overflow-hidden\", className)}\n style={containerStyles}\n role=\"tablist\"\n {...props}\n >\n {options.map((opt) => {\n const isActive = value === opt.value;\n const buttonStyles: CSSProperties = {\n background: isActive ? \"var(--segmented-active-bg)\" : \"transparent\",\n color: isActive ? \"var(--segmented-active-text)\" : \"var(--segmented-inactive-text)\",\n };\n\n return (\n <button\n key={opt.value}\n onClick={() => onChange?.(opt.value)}\n className=\"px-3 py-1.5 md:px-4 md:py-2 text-xs md:text-sm font-medium transition-all duration-300\"\n style={buttonStyles}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nSegmentedControlGlass.displayName = \"SegmentedControlGlass\";\n","// ========================================\n// AI CARD GLASS COMPONENT\n// AI summary card with feature list\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Sparkles, Check, Zap, Clock } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nexport interface AICardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly onGenerate?: () => void;\n readonly features?: readonly string[];\n readonly estimatedTime?: string;\n}\n\nconst defaultFeatures: readonly string[] = [\n \"Code quality assessment\",\n \"Architecture patterns\",\n \"Best practices\",\n];\n\nexport const AICardGlass = forwardRef<HTMLDivElement, AICardGlassProps>(\n (\n {\n onGenerate,\n features = defaultFeatures,\n estimatedTime = \"~30 seconds\",\n className,\n ...props\n },\n ref\n ) => {\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--ai-card-bg)\"\n borderColor=\"var(--ai-card-border)\"\n hoverGlow=\"var(--ai-card-hover-glow)\"\n hoverLift\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"w-full sm:w-56 md:w-64 p-3 md:p-4\", className)}\n {...props}\n >\n <div\n className=\"flex items-center gap-1.5 md:gap-2 font-semibold text-xs md:text-sm mb-1.5 md:mb-2\"\n style={{ color: \"var(--text-accent)\" }}\n >\n <Sparkles className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n AI Summary\n </div>\n <p\n className=\"text-[10px] md:text-xs mb-1.5 md:mb-2\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n Get comprehensive analysis:\n </p>\n <ul className=\"text-[10px] md:text-xs space-y-0.5 md:space-y-1 mb-2 md:mb-3\">\n {features.map((feature, i) => (\n <li\n key={`feature-${i}`}\n className=\"flex items-center gap-1\"\n style={{ color: \"var(--text-muted)\" }}\n >\n <Check\n className=\"w-2.5 h-2.5 md:w-3 md:h-3\"\n style={{ color: \"var(--status-online)\" }}\n />\n {feature}\n </li>\n ))}\n </ul>\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n icon={Zap}\n onClick={onGenerate}\n className=\"w-full\"\n >\n Generate Report\n </ButtonGlass>\n <p\n className=\"text-[10px] md:text-xs mt-1.5 md:mt-2 text-center flex items-center justify-center gap-1\"\n style={{ color: \"var(--text-muted)\" }}\n >\n <Clock className=\"w-2.5 h-2.5 md:w-3 md:h-3\" />\n {estimatedTime}\n </p>\n </InteractiveCard>\n );\n }\n);\n\nAICardGlass.displayName = \"AICardGlass\";\n","// ========================================\n// CAREER STATS HEADER GLASS - COMPOSITE COMPONENT\n// Career statistics header with total counts\n// Level 3: Composite (extracted from CareerStatsGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { TrendingUp, Code, GitPullRequest, FolderGit2 } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface CareerStatsHeaderGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Total commits count */\n readonly totalCommits: number;\n /** Total pull requests count */\n readonly totalPRs: number;\n /** Total repositories count */\n readonly totalRepos: number;\n /** Header title */\n readonly title?: string;\n /** Stats wrap on mobile */\n readonly wrapStats?: boolean;\n}\n\nexport const CareerStatsHeaderGlass = forwardRef<\n HTMLDivElement,\n CareerStatsHeaderGlassProps\n>(\n (\n {\n totalCommits,\n totalPRs,\n totalRepos,\n title = 'Career Stats',\n wrapStats = true,\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const accentStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const statsStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <div ref={ref} className={cn('mb-4', className)} {...props}>\n <h3\n className=\"font-semibold flex items-center gap-2 mb-1\"\n style={titleStyles}\n >\n <TrendingUp className=\"w-5 h-5\" style={accentStyles} />\n {title}\n </h3>\n <p\n className={cn(\n 'text-sm flex items-center gap-2',\n wrapStats && 'flex-wrap'\n )}\n style={statsStyles}\n >\n <span className=\"flex items-center gap-1\">\n <Code className=\"w-4 h-4\" />\n {totalCommits.toLocaleString()} commits\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <GitPullRequest className=\"w-4 h-4\" />\n {totalPRs} PRs\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <FolderGit2 className=\"w-4 h-4\" />\n {totalRepos} repos\n </span>\n </p>\n </div>\n );\n }\n);\n\nCareerStatsHeaderGlass.displayName = 'CareerStatsHeaderGlass';\n","// ========================================\n// CIRCULAR METRIC GLASS COMPONENT\n// Compact circular metric display for mobile\n// ========================================\n\nimport { forwardRef } from 'react';\nimport { cn } from '@/lib/utils';\nimport {\n CircularProgressGlass,\n type CircularProgressGradient,\n} from '../ui/circular-progress-glass';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type CircularMetricColor = 'emerald' | 'amber' | 'blue' | 'red';\n\nexport interface CircularMetricGlassProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g., \"Reg\", \"Imp\") */\n readonly label: string;\n /** Metric value (0-100) */\n readonly value: number;\n /** Metric color */\n readonly color?: CircularMetricColor;\n /** Size variant */\n readonly size?: 'sm' | 'md';\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\n// Map CircularMetricColor to CircularProgressGlass gradient and CSS variable\nconst colorMap: Record<\n CircularMetricColor,\n { gradient: CircularProgressGradient; textVar: string }\n> = {\n emerald: { gradient: 'emerald', textVar: 'var(--metric-emerald-text)' },\n amber: { gradient: 'amber', textVar: 'var(--metric-amber-text)' },\n blue: { gradient: 'blue', textVar: 'var(--metric-blue-text)' },\n red: { gradient: 'rose', textVar: 'var(--metric-red-text)' },\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\n/**\n * CircularMetricGlass - Compact circular progress metric display\n *\n * Designed for mobile layouts where rectangular MetricCardGlass is too wide.\n * Shows a circular progress indicator with percentage inside and label below.\n *\n * @example\n * ```tsx\n * <CircularMetricGlass label=\"Reg\" value={84} color=\"emerald\" />\n * ```\n */\nexport const CircularMetricGlass = forwardRef<\n HTMLDivElement,\n CircularMetricGlassProps\n>(({ label, value, color = 'blue', size = 'sm', className, ...props }, ref) => {\n const { gradient, textVar } = colorMap[color];\n\n return (\n <div\n ref={ref}\n className={cn('flex flex-col items-center gap-1', className)}\n {...props}\n >\n <CircularProgressGlass\n value={value}\n size={size}\n color={gradient}\n labelColor={textVar}\n thickness={size === 'sm' ? 6 : 8}\n showGlow\n glowIntensity=\"medium\"\n />\n <span\n className=\"text-xs font-medium\"\n style={{ color: textVar }}\n >\n {label}\n </span>\n </div>\n );\n});\n\nCircularMetricGlass.displayName = 'CircularMetricGlass';\n","// ========================================\n// CONTRIBUTION METRICS GLASS - COMPOSITE COMPONENT\n// Repository contribution metrics grid\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface ContributionMetricsGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** User's commit count */\n readonly userCommits: number;\n /** User's contribution percentage */\n readonly userContribution: number;\n /** Total project commits (calculated if not provided) */\n readonly totalProjectCommits?: number;\n /** Estimated lines of code */\n readonly estimatedLines?: number;\n /** Grid layout (1 or 2 columns) */\n readonly columns?: 1 | 2;\n}\n\nexport const ContributionMetricsGlass = forwardRef<\n HTMLDivElement,\n ContributionMetricsGlassProps\n>(\n (\n {\n userCommits,\n userContribution,\n totalProjectCommits: providedTotal,\n estimatedLines: providedLines,\n columns = 2,\n className,\n ...props\n },\n ref\n ) => {\n // Calculate total project commits from contribution percentage\n const totalProjectCommits =\n providedTotal ??\n (userContribution > 0\n ? Math.round(userCommits / (userContribution / 100))\n : userCommits);\n\n const estimatedLines = providedLines ?? Math.round(userCommits * 12);\n\n const cardStyles: CSSProperties = {\n background: 'var(--card-bg)',\n borderColor: 'var(--card-border)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const primaryStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const columnClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n };\n\n return (\n <div\n ref={ref}\n className={cn('grid gap-2', columnClasses[columns], className)}\n {...props}\n >\n <div className=\"p-2.5 rounded-lg border\" style={cardStyles}>\n <div className=\"text-xs\" style={mutedStyles}>\n Your Contribution\n </div>\n <div className=\"font-semibold\" style={primaryStyles}>\n {userCommits.toLocaleString()} commits\n </div>\n <div className=\"text-xs\" style={mutedStyles}>\n {userContribution}%\n </div>\n </div>\n <div className=\"p-2.5 rounded-lg border\" style={cardStyles}>\n <div className=\"text-xs\" style={mutedStyles}>\n Full Project\n </div>\n <div className=\"font-semibold\" style={primaryStyles}>\n {totalProjectCommits.toLocaleString()} commits\n </div>\n <div className=\"text-xs\" style={mutedStyles}>\n ~{estimatedLines.toLocaleString()} lines\n </div>\n </div>\n </div>\n );\n }\n);\n\nContributionMetricsGlass.displayName = 'ContributionMetricsGlass';\n","// ========================================\n// METRIC CARD GLASS COMPONENT\n// Metric display card with progress\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { ProgressGlass } from \"../specialized/progress-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nimport type { ProgressGradient } from \"@/lib/variants/progress-glass-variants\";\n\nexport type MetricColor = \"emerald\" | \"amber\" | \"blue\" | \"red\";\n\nexport interface MetricCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly label: string;\n readonly value: number;\n readonly color?: MetricColor;\n}\n\n// Map MetricColor to ProgressGradient\nconst colorToGradient: Record<MetricColor, ProgressGradient> = {\n emerald: \"emerald\",\n amber: \"amber\",\n blue: \"blue\",\n red: \"rose\",\n};\n\n// CSS variable maps for metric colors\nconst metricVarMap: Record<MetricColor, { bg: string; text: string; border: string; glow: string }> = {\n emerald: {\n bg: \"var(--metric-emerald-bg)\",\n text: \"var(--metric-emerald-text)\",\n border: \"var(--metric-emerald-border)\",\n glow: \"var(--metric-emerald-glow)\",\n },\n amber: {\n bg: \"var(--metric-amber-bg)\",\n text: \"var(--metric-amber-text)\",\n border: \"var(--metric-amber-border)\",\n glow: \"var(--metric-amber-glow)\",\n },\n blue: {\n bg: \"var(--metric-blue-bg)\",\n text: \"var(--metric-blue-text)\",\n border: \"var(--metric-blue-border)\",\n glow: \"var(--metric-blue-glow)\",\n },\n red: {\n bg: \"var(--metric-red-bg)\",\n text: \"var(--metric-red-text)\",\n border: \"var(--metric-red-border)\",\n glow: \"var(--metric-red-glow)\",\n },\n};\n\nexport const MetricCardGlass = forwardRef<HTMLDivElement, MetricCardGlassProps>(\n ({ label, value, color = \"blue\", className, ...props }, ref) => {\n const colorVars = metricVarMap[color];\n\n const valueStyles: CSSProperties = {\n color: colorVars.text,\n textShadow: colorVars.glow,\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg={colorVars.bg}\n borderColor={colorVars.border}\n hoverGlow={colorVars.glow}\n hoverLift\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"p-3 md:p-4\", className)}\n {...props}\n >\n <div className=\"flex flex-col items-center mb-2 md:mb-3 gap-1\">\n <span className=\"font-bold text-sm sm:text-base md:text-lg whitespace-nowrap\" style={valueStyles}>\n {value}%\n </span>\n <span\n className=\"text-[10px] sm:text-xs md:text-sm font-medium truncate\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {label}\n </span>\n </div>\n <ProgressGlass\n value={value}\n gradient={colorToGradient[color]}\n size=\"sm\"\n />\n </InteractiveCard>\n );\n }\n);\n\nMetricCardGlass.displayName = \"MetricCardGlass\";\n","// ========================================\n// METRICS GRID GLASS - COMPOSITE COMPONENT\n// Responsive grid of metric cards\n// Level 3: Composite (extracted from TrustScoreCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\nimport { MetricCardGlass, type MetricColor } from './metric-card-glass';\nimport '@/glass-theme.css';\n\nexport interface MetricData {\n readonly label: string;\n readonly value: number;\n readonly color: MetricColor;\n}\n\nexport interface MetricsGridGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Array of metrics to display */\n readonly metrics: readonly MetricData[];\n /** Number of columns on desktop (1-6) */\n readonly columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Gap size */\n readonly gap?: 'sm' | 'md' | 'lg';\n}\n\nexport const MetricsGridGlass = forwardRef<HTMLDivElement, MetricsGridGlassProps>(\n ({ metrics, columns = 4, gap = 'md', className, ...props }, ref) => {\n const gapClasses = {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n };\n\n const columnClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-5',\n 6: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-6',\n };\n\n if (metrics.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn('grid', columnClasses[columns], gapClasses[gap], className)}\n {...props}\n >\n {metrics.map((metric) => (\n <MetricCardGlass\n key={metric.label}\n label={metric.label}\n value={metric.value}\n color={metric.color}\n />\n ))}\n </div>\n );\n }\n);\n\nMetricsGridGlass.displayName = 'MetricsGridGlass';\n","// ========================================\n// REPOSITORY CARD GLASS COMPONENT\n// Expandable repository card with metrics\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport {\n ChevronDown,\n ChevronUp,\n Star,\n ExternalLink,\n Sparkles,\n AlertTriangle,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { StatusIndicatorGlass } from \"../specialized/status-indicator-glass\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nexport type RepositoryFlagType = \"green\" | \"yellow\" | \"red\";\n\nexport interface RepositoryCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly name: string;\n readonly languages: string;\n readonly commits: number;\n readonly contribution: number;\n readonly stars?: number;\n readonly flagType?: RepositoryFlagType;\n readonly issues?: readonly string[];\n readonly expanded?: boolean;\n readonly onToggle?: () => void;\n readonly onGitHubClick?: () => void;\n readonly onAIAnalysisClick?: () => void;\n}\n\nexport const RepositoryCardGlass = forwardRef<HTMLDivElement, RepositoryCardGlassProps>(\n (\n {\n name,\n languages,\n commits,\n contribution,\n stars = 0,\n flagType = \"green\",\n issues = [],\n expanded = false,\n onToggle,\n onGitHubClick,\n onAIAnalysisClick,\n className,\n ...props\n },\n ref\n ) => {\n // Calculate total project commits from contribution percentage\n const totalProjectCommits = contribution > 0\n ? Math.round(commits / (contribution / 100))\n : commits;\n const estimatedLines = Math.round(commits * 12);\n\n const expandedStyles: CSSProperties = {\n background: \"var(--expanded-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n const metricCardStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--card-bg)\"\n hoverBg=\"var(--card-hover-bg)\"\n borderColor=\"var(--card-border)\"\n hoverLift={false}\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"overflow-hidden\", className)}\n {...props}\n >\n {/* Main Card Content */}\n <div\n className=\"p-3 md:p-3.5 cursor-pointer\"\n onClick={onToggle}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle?.();\n }\n }}\n aria-expanded={expanded}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"font-medium text-sm\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {name}\n </span>\n <StatusIndicatorGlass type={flagType} />\n </div>\n <div className=\"flex items-center gap-2\">\n {stars > 0 && (\n <span\n className=\"flex items-center gap-1 text-xs\"\n style={{ color: \"var(--status-away)\" }}\n >\n <Star className=\"w-3 h-3\" />\n {stars}\n </span>\n )}\n {expanded ? (\n <ChevronUp className=\"w-4 h-4\" style={{ color: \"var(--text-muted)\" }} />\n ) : (\n <ChevronDown className=\"w-4 h-4\" style={{ color: \"var(--text-muted)\" }} />\n )}\n </div>\n </div>\n <div\n className=\"text-xs mt-1.5\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {languages}\n </div>\n <div\n className=\"text-xs mt-0.5\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {commits} commits · {contribution}%\n </div>\n </div>\n\n {/* Expanded Section */}\n {expanded && (\n <div\n className=\"border-t p-3.5 space-y-3\"\n style={expandedStyles}\n >\n {/* Issues Alert */}\n {issues.length > 0 && (\n <div\n className=\"p-3 rounded-xl border\"\n style={{\n background: \"var(--alert-danger-bg)\",\n borderColor: \"var(--alert-danger-border)\",\n }}\n >\n <div\n className=\"text-xs font-semibold flex items-center gap-1.5 mb-1.5\"\n style={{ color: \"var(--alert-danger-text)\" }}\n >\n <AlertTriangle className=\"w-3.5 h-3.5\" />\n Issues\n </div>\n {issues.map((issue, index) => (\n <div\n key={index}\n className=\"text-xs opacity-70\"\n style={{ color: \"var(--alert-danger-text)\" }}\n >\n • {issue}\n </div>\n ))}\n </div>\n )}\n\n {/* Contribution Metrics */}\n <div className=\"grid grid-cols-2 gap-2\">\n <div\n className=\"p-2.5 rounded-lg border\"\n style={metricCardStyles}\n >\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Your Contribution\n </div>\n <div\n className=\"font-semibold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {commits} commits\n </div>\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {contribution}%\n </div>\n </div>\n <div\n className=\"p-2.5 rounded-lg border\"\n style={metricCardStyles}\n >\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Full Project\n </div>\n <div\n className=\"font-semibold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {totalProjectCommits} commits\n </div>\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n ~{estimatedLines} lines\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <ButtonGlass\n variant=\"secondary\"\n size=\"sm\"\n icon={ExternalLink}\n onClick={(e) => {\n e.stopPropagation();\n onGitHubClick?.();\n }}\n className=\"flex-1\"\n >\n GitHub\n </ButtonGlass>\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n icon={Sparkles}\n onClick={(e) => {\n e.stopPropagation();\n onAIAnalysisClick?.();\n }}\n className=\"flex-1\"\n >\n AI Analysis\n </ButtonGlass>\n </div>\n </div>\n )}\n </InteractiveCard>\n );\n }\n);\n\nRepositoryCardGlass.displayName = \"RepositoryCardGlass\";\n","// ========================================\n// REPOSITORY HEADER GLASS - COMPOSITE COMPONENT\n// Repository name with status indicator and stars\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Star, ChevronDown, ChevronUp } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { StatusIndicatorGlass } from '../specialized/status-indicator-glass';\nimport '@/glass-theme.css';\n\nexport type RepositoryFlagType = 'green' | 'yellow' | 'red';\n\nexport interface RepositoryHeaderGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Repository name */\n readonly name: string;\n /** Flag/status type */\n readonly flagType?: RepositoryFlagType;\n /** Star count */\n readonly stars?: number;\n /** Is expanded state */\n readonly expanded?: boolean;\n /** Abbreviated star count for mobile (1.2k instead of 1234) */\n readonly abbreviatedStars?: boolean;\n}\n\nexport const RepositoryHeaderGlass = forwardRef<\n HTMLDivElement,\n RepositoryHeaderGlassProps\n>(\n (\n {\n name,\n flagType = 'green',\n stars = 0,\n expanded = false,\n abbreviatedStars = false,\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const starStyles: CSSProperties = {\n color: 'var(--status-away)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const formatStars = (count: number): string => {\n if (!abbreviatedStars) return String(count);\n if (count >= 1000000) return `${(count / 1000000).toFixed(1)}M`;\n if (count >= 1000) return `${(count / 1000).toFixed(1)}k`;\n return String(count);\n };\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-between', className)}\n {...props}\n >\n <div className=\"flex items-center gap-2.5\">\n <span className=\"font-medium text-sm\" style={titleStyles}>\n {name}\n </span>\n <StatusIndicatorGlass type={flagType} />\n </div>\n <div className=\"flex items-center gap-2\">\n {stars > 0 && (\n <span className=\"flex items-center gap-1 text-xs\" style={starStyles}>\n <Star className=\"w-3 h-3\" />\n {formatStars(stars)}\n </span>\n )}\n {expanded ? (\n <ChevronUp className=\"w-4 h-4\" style={mutedStyles} />\n ) : (\n <ChevronDown className=\"w-4 h-4\" style={mutedStyles} />\n )}\n </div>\n </div>\n );\n }\n);\n\nRepositoryHeaderGlass.displayName = 'RepositoryHeaderGlass';\n","// ========================================\n// REPOSITORY METADATA GLASS - COMPOSITE COMPONENT\n// Repository languages, commits, and contribution info\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface RepositoryMetadataGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Programming languages used */\n readonly languages: string;\n /** Number of commits */\n readonly commits: number;\n /** Contribution percentage */\n readonly contribution: number;\n /** Stacked layout for mobile */\n readonly stacked?: boolean;\n}\n\nexport const RepositoryMetadataGlass = forwardRef<\n HTMLDivElement,\n RepositoryMetadataGlassProps\n>(\n (\n {\n languages,\n commits,\n contribution,\n stacked = false,\n className,\n ...props\n },\n ref\n ) => {\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const secondaryStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(stacked ? 'space-y-0.5' : 'space-y-1', className)}\n {...props}\n >\n <div className=\"text-xs\" style={mutedStyles}>\n {languages}\n </div>\n <div className=\"text-xs\" style={secondaryStyles}>\n {commits.toLocaleString()} commits · {contribution}%\n </div>\n </div>\n );\n }\n);\n\nRepositoryMetadataGlass.displayName = 'RepositoryMetadataGlass';\n","// ========================================\n// TRUST SCORE DISPLAY GLASS - COMPOSITE COMPONENT\n// Large animated trust score number with title\n// Level 3: Composite (extracted from TrustScoreCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Target } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface TrustScoreDisplayGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Score value (0-100) */\n readonly score: number;\n /** Maximum score (default: 100) */\n readonly maxScore?: number;\n /** Title text */\n readonly title?: string;\n /** Show icon */\n readonly showIcon?: boolean;\n /** Size variant */\n readonly size?: 'sm' | 'md' | 'lg';\n}\n\nexport const TrustScoreDisplayGlass = forwardRef<\n HTMLDivElement,\n TrustScoreDisplayGlassProps\n>(\n (\n {\n score,\n maxScore = 100,\n title = 'Overall Trust Score',\n showIcon = true,\n size = 'md',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const accentStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const sizeClasses = {\n sm: { title: 'text-base', score: 'text-2xl', max: 'text-lg', icon: 'w-4 h-4' },\n md: { title: 'text-lg', score: 'text-4xl', max: 'text-xl', icon: 'w-5 h-5' },\n lg: { title: 'text-xl', score: 'text-5xl', max: 'text-2xl', icon: 'w-6 h-6' },\n };\n\n const sizes = sizeClasses[size];\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-between', className)}\n {...props}\n >\n <h2\n className={cn('font-semibold flex items-center gap-2', sizes.title)}\n style={titleStyles}\n >\n {showIcon && <Target className={sizes.icon} style={accentStyles} />}\n {title}\n </h2>\n <div className=\"flex items-center gap-2 animate-[score-pulse_2s_ease-in-out_infinite]\">\n <span\n className={cn(\n sizes.score,\n 'font-bold bg-linear-to-r from-amber-400 via-emerald-400 to-cyan-400 bg-clip-text text-transparent'\n )}\n >\n {score}\n </span>\n <span className={sizes.max} style={mutedStyles}>\n / {maxScore}\n </span>\n </div>\n </div>\n );\n }\n);\n\nTrustScoreDisplayGlass.displayName = 'TrustScoreDisplayGlass';\n","// ========================================\n// USER INFO GLASS - COMPOSITE COMPONENT\n// User name, username, and join date display\n// Level 3: Composite (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Calendar, ExternalLink } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface UserInfoGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Full name */\n readonly name: string;\n /** Username (without @) */\n readonly username: string;\n /** Join date string (e.g., \"Jan 2023\") */\n readonly joinDate: string;\n /** Username link URL (default: #) */\n readonly profileUrl?: string;\n /** Layout orientation */\n readonly layout?: 'vertical' | 'horizontal';\n}\n\nexport const UserInfoGlass = forwardRef<HTMLDivElement, UserInfoGlassProps>(\n (\n {\n name,\n username,\n joinDate,\n profileUrl = '#',\n layout = 'vertical',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const metaStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n const linkStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n layout === 'vertical' ? 'space-y-1' : 'flex items-center gap-4',\n className\n )}\n {...props}\n >\n <h1\n className={cn(\n 'font-bold',\n layout === 'vertical' ? 'text-lg md:text-xl' : 'text-xl'\n )}\n style={titleStyles}\n >\n {name}\n </h1>\n <div\n className={cn(\n 'flex items-center gap-2 text-sm flex-wrap',\n layout === 'vertical' && 'mt-0.5'\n )}\n style={metaStyles}\n >\n <a\n href={profileUrl}\n className=\"flex items-center gap-1 hover:underline\"\n style={linkStyles}\n aria-label={`View ${username}'s profile`}\n >\n @{username} <ExternalLink className=\"w-3 h-3\" />\n </a>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"w-3 h-3\" /> Joined {joinDate}\n </span>\n </div>\n </div>\n );\n }\n);\n\nUserInfoGlass.displayName = 'UserInfoGlass';\n","// ========================================\n// USER STATS LINE GLASS - COMPOSITE COMPONENT\n// User statistics line (repos, followers, following)\n// Level 3: Composite (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { FolderGit2, Users, User } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { StatItemGlass } from '../atomic/stat-item-glass';\nimport '@/glass-theme.css';\n\nexport interface UserStatsLineGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of repositories */\n readonly repos: number;\n /** Number of followers */\n readonly followers: number;\n /** Number of following */\n readonly following: number;\n /** Wrap stats on mobile */\n readonly wrap?: boolean;\n /** Abbreviated numbers for mobile (1.2k instead of 1234) */\n readonly abbreviated?: boolean;\n}\n\nexport const UserStatsLineGlass = forwardRef<HTMLDivElement, UserStatsLineGlassProps>(\n (\n {\n repos,\n followers,\n following,\n wrap = true,\n abbreviated = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-4 text-sm',\n wrap && 'flex-wrap',\n className\n )}\n {...props}\n >\n <StatItemGlass\n icon={FolderGit2}\n value={repos}\n label=\"repos\"\n abbreviated={abbreviated}\n />\n <StatItemGlass\n icon={Users}\n value={followers}\n label=\"followers\"\n abbreviated={abbreviated}\n />\n <StatItemGlass\n icon={User}\n value={following}\n label=\"following\"\n abbreviated={abbreviated}\n />\n </div>\n );\n }\n);\n\nUserStatsLineGlass.displayName = 'UserStatsLineGlass';\n","// ========================================\n// YEAR CARD GLASS COMPONENT\n// Year card for career timeline\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { BadgeGlass } from \"../ui/badge-glass\";\nimport { ProgressGlass } from \"../specialized/progress-glass\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport type { ProgressGradient } from \"@/lib/variants/progress-glass-variants\";\nimport \"@/glass-theme.css\";\n\nexport interface YearCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly year: string | number;\n readonly emoji: string;\n readonly label: string;\n readonly commits: string;\n readonly progress: number;\n readonly isExpanded?: boolean;\n readonly gradient?: ProgressGradient;\n readonly prs?: number;\n readonly repos?: number;\n readonly onShowYear?: () => void;\n}\n\nexport const YearCardGlass = forwardRef<HTMLDivElement, YearCardGlassProps>(\n (\n { year, emoji, label, commits, progress, isExpanded = false, gradient = \"blue\", prs = 0, repos = 0, onShowYear, className, onClick, ...props },\n ref\n ) => {\n const expandedStyles: CSSProperties = {\n background: \"var(--expanded-bg)\",\n borderColor: \"var(--expanded-border)\",\n };\n\n const metricCardStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--year-card-bg)\"\n hoverBg=\"var(--card-hover-bg)\"\n borderColor=\"var(--year-card-border)\"\n hoverGlow=\"var(--year-card-hover-glow)\"\n hoverLift\n rounded=\"rounded-xl\"\n className={cn(\"p-2.5 md:p-3 cursor-pointer\", className)}\n onClick={onClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${year} year: ${label}, ${commits} commits. ${isExpanded ? 'Collapse' : 'Expand'} details`}\n {...props}\n >\n <div className=\"flex items-center justify-between mb-1.5 md:mb-2\">\n <div className=\"flex items-center gap-1.5 md:gap-2\">\n <span className=\"font-semibold text-sm md:text-base\" style={{ color: \"var(--text-primary)\" }}>\n {year}\n </span>\n <BadgeGlass>\n {emoji} {label}\n </BadgeGlass>\n </div>\n <span\n className=\"text-xs md:text-sm flex items-center gap-0.5 md:gap-1\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {commits}\n {isExpanded ? (\n <ChevronUp className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n ) : (\n <ChevronDown className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n )}\n </span>\n </div>\n <ProgressGlass\n value={progress}\n gradient={gradient}\n size=\"sm\"\n />\n\n {/* Expanded Section */}\n {isExpanded && (\n <div\n className=\"mt-3 pt-3 border-t space-y-3\"\n style={expandedStyles}\n >\n {/* Stats Grid */}\n <div className=\"grid grid-cols-3 gap-2 md:gap-3\">\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {commits}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Commits\n </div>\n </div>\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {prs}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n PRs\n </div>\n </div>\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {repos}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Repos\n </div>\n </div>\n </div>\n\n {/* Show Year Button */}\n {onShowYear && (\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n onShowYear();\n }}\n className=\"w-full\"\n >\n Show repos from {year}\n </ButtonGlass>\n )}\n </div>\n )}\n </InteractiveCard>\n );\n }\n);\n\nYearCardGlass.displayName = \"YearCardGlass\";\n","// ========================================\n// CAREER STATS GLASS COMPONENT\n// Career statistics with expandable year cards\n// ========================================\n\nimport { forwardRef, useState } from \"react\";\nimport { TrendingUp, Code, GitPullRequest, FolderGit2 } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { YearCardGlass } from \"../composite/year-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface YearData {\n readonly year: string | number;\n readonly emoji: string;\n readonly label: string;\n readonly commits: string;\n readonly progress: number;\n readonly prs?: number;\n readonly repos?: number;\n}\n\nexport interface CareerStatsGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly totalCommits?: number;\n readonly totalPRs?: number;\n readonly totalRepos?: number;\n readonly years?: readonly YearData[];\n}\n\nexport const CareerStatsGlass = forwardRef<HTMLDivElement, CareerStatsGlassProps>(\n (\n {\n totalCommits = 2242,\n totalPRs = 47,\n totalRepos = 11,\n years = [],\n className,\n ...props\n },\n ref\n ) => {\n const [expandedYear, setExpandedYear] = useState<string | number | null>(null);\n\n const handleYearClick = (year: string | number): void => {\n setExpandedYear(expandedYear === year ? null : year);\n };\n\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-4 md:p-5 lg:p-6\", className)}\n intensity=\"medium\"\n hover={false}\n {...props}\n >\n <h3\n className=\"font-semibold flex items-center gap-2 md:gap-2.5 lg:gap-3 mb-1 text-base md:text-lg lg:text-xl\"\n style={{ color: \"var(--text-primary)\" }}\n >\n <TrendingUp className=\"w-4 h-4 md:w-5 md:h-5 lg:w-6 lg:h-6\" style={{ color: \"var(--text-accent)\" }} />\n Career Stats\n </h3>\n <p\n className=\"text-xs md:text-sm lg:text-base mb-3 md:mb-4 flex items-center gap-2 md:gap-2.5 lg:gap-3 flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <Code className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalCommits.toLocaleString()} commits\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <GitPullRequest className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalPRs} PRs\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <FolderGit2 className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalRepos} repos\n </span>\n </p>\n <div className=\"space-y-2 md:space-y-2.5 lg:space-y-3\">\n {years.map((y) => (\n <YearCardGlass\n key={y.year}\n year={y.year}\n emoji={y.emoji}\n label={y.label}\n commits={y.commits}\n progress={y.progress}\n prs={y.prs}\n repos={y.repos}\n isExpanded={expandedYear === y.year}\n onClick={() => handleYearClick(y.year)}\n onShowYear={() => {\n // This can be used to filter repos by year\n // Example: onYearFilter?.(y.year)\n }}\n />\n ))}\n </div>\n </GlassCard>\n );\n }\n);\n\nCareerStatsGlass.displayName = \"CareerStatsGlass\";\n","// ========================================\n// FLAGS SECTION GLASS COMPONENT\n// Expandable flags/warnings section\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { AlertTriangle, ChevronUp, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { FlagAlertGlass, type FlagType } from \"../specialized/flag-alert-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface FlagData {\n readonly type: FlagType;\n readonly title: string;\n readonly description?: string;\n}\n\nexport interface FlagsSectionGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly flags?: readonly FlagData[];\n readonly expanded?: boolean;\n readonly onToggle?: () => void;\n}\n\nexport const FlagsSectionGlass = forwardRef<HTMLDivElement, FlagsSectionGlassProps>(\n ({ flags = [], expanded = false, onToggle, className, ...props }, ref) => {\n return (\n <GlassCard\n ref={ref}\n className={cn(className)}\n intensity=\"medium\"\n hover={false}\n {...props}\n >\n <button\n onClick={onToggle}\n className=\"w-full p-3 md:p-4 flex items-center justify-between rounded-2xl\"\n style={{ color: \"var(--text-primary)\" }}\n type=\"button\"\n aria-expanded={expanded}\n >\n <div className=\"flex items-center gap-1.5 md:gap-2\">\n <AlertTriangle className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--status-away)\" }} />\n <span className=\"font-medium text-sm md:text-base\">{flags.length} flags detected</span>\n </div>\n {expanded ? (\n <ChevronUp className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-muted)\" }} />\n ) : (\n <ChevronDown className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-muted)\" }} />\n )}\n </button>\n {expanded && (\n <div className=\"px-3 pb-3 md:px-4 md:pb-4 space-y-1.5 md:space-y-2\">\n {flags.map((flag, i) => (\n <FlagAlertGlass\n key={`flag-${i}`}\n type={flag.type}\n title={flag.title}\n description={flag.description}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nFlagsSectionGlass.displayName = \"FlagsSectionGlass\";\n","// ========================================\n// HEADER BRANDING GLASS - SECTION COMPONENT\n// Header branding with logo and subtitle\n// Level 4: Section (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { IconButtonGlass } from '../atomic/icon-button-glass';\nimport '@/glass-theme.css';\n\nexport interface HeaderBrandingGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Logo icon component */\n readonly logoIcon: LucideIcon;\n /** Main title */\n readonly title: string;\n /** Subtitle (hidden on mobile) */\n readonly subtitle?: string;\n /** Logo click handler */\n readonly onLogoClick?: () => void;\n /** Logo aria label */\n readonly logoAriaLabel?: string;\n}\n\nexport const HeaderBrandingGlass = forwardRef<HTMLDivElement, HeaderBrandingGlassProps>(\n (\n {\n logoIcon,\n title,\n subtitle,\n onLogoClick,\n logoAriaLabel = 'Home',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center gap-4', className)}\n {...props}\n >\n <IconButtonGlass\n icon={logoIcon}\n aria-label={logoAriaLabel}\n onClick={onLogoClick}\n variant=\"gradient\"\n size=\"md\"\n />\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:gap-2\">\n <span className=\"font-semibold text-base md:text-lg\" style={titleStyles}>\n {title}\n </span>\n {subtitle && (\n <span\n className=\"hidden md:inline text-sm\"\n style={{ color: 'var(--text-secondary)' }}\n >\n · {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n }\n);\n\nHeaderBrandingGlass.displayName = 'HeaderBrandingGlass';\n","// ========================================\n// HEADER NAV GLASS COMPONENT\n// Navigation header with search and theme toggle\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { Github, Sun, Moon, Palette } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { useTheme, type ThemeName } from \"@/lib/theme-context\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { SearchBoxGlass } from \"../atomic/search-box-glass\";\nimport \"@/glass-theme.css\";\n\nconst themes: ThemeName[] = [\"light\", \"aurora\", \"glass\"];\n\nconst themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }> = {\n light: { label: \"Light\", icon: Sun },\n aurora: { label: \"Aurora\", icon: Moon },\n glass: { label: \"Glass\", icon: Palette },\n};\n\nexport interface HeaderNavGlassProps extends React.HTMLAttributes<HTMLElement> {\n readonly username?: string;\n readonly onSearch?: (value: string) => void;\n readonly onThemeToggle?: () => void;\n}\n\nexport const HeaderNavGlass = forwardRef<HTMLElement, HeaderNavGlassProps>(\n ({ username = \"Yhooi2\", onSearch, onThemeToggle, className, ...props }, ref) => {\n const { theme, cycleTheme } = useTheme();\n\n const nextTheme = themes[(themes.indexOf(theme) + 1) % themes.length];\n const NextIcon = themeConfig[nextTheme].icon;\n\n const headerStyles: CSSProperties = {\n background: \"var(--header-bg)\",\n borderColor: \"var(--header-border)\",\n backdropFilter: \"blur(var(--blur-md))\",\n WebkitBackdropFilter: \"blur(var(--blur-md))\",\n };\n\n const iconBtnStyles: CSSProperties = {\n background: \"linear-gradient(135deg, var(--icon-btn-from), var(--icon-btn-to))\",\n boxShadow: \"var(--icon-btn-shadow)\",\n };\n\n const themeBtnStyles: CSSProperties = {\n background: \"var(--card-subtle-bg)\",\n border: \"1px solid var(--card-subtle-border)\",\n };\n\n return (\n <header\n ref={ref}\n className={cn(\"border rounded-xl py-2 px-3 md:py-3 md:px-4 transition-all duration-300\", className)}\n style={headerStyles}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 md:gap-4\">\n <button\n className=\"w-8 h-8 md:w-10 md:h-10 rounded-xl flex items-center justify-center transition-all duration-300 hover:scale-105\"\n style={iconBtnStyles}\n type=\"button\"\n aria-label=\"GitHub\"\n >\n <Github className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--icon-btn-text)\" }} />\n </button>\n <span className=\"font-semibold text-base md:text-lg\" style={{ color: \"var(--text-primary)\" }}>\n User Analytics\n </span>\n <SearchBoxGlass\n className=\"ml-2 md:ml-4\"\n defaultValue={username}\n onSubmit={onSearch}\n inputWidth=\"w-28 sm:w-36 md:w-48\"\n placeholder=\"Search username...\"\n />\n </div>\n <div className=\"flex items-center gap-2 md:gap-3\">\n <button\n onClick={onThemeToggle ?? cycleTheme}\n className=\"p-2 md:p-2.5 rounded-xl transition-all duration-300 hover:scale-105\"\n style={themeBtnStyles}\n type=\"button\"\n aria-label={`Switch to ${themeConfig[nextTheme].label} theme`}\n >\n <NextIcon className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-secondary)\" }} />\n </button>\n <ButtonGlass variant=\"secondary\" icon={Github} className=\"hidden md:inline-flex\">\n Sign in with GitHub\n </ButtonGlass>\n </div>\n </div>\n </header>\n );\n }\n);\n\nHeaderNavGlass.displayName = \"HeaderNavGlass\";\n","// ========================================\n// PROFILE HEADER GLASS COMPONENT\n// User profile header with avatar, stats, languages\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Calendar, ExternalLink, FolderGit2, Users, User } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { ProfileAvatarGlass } from \"../specialized/profile-avatar-glass\";\nimport { LanguageBarGlass, type LanguageData } from \"../specialized/language-bar-glass\";\nimport { AICardGlass } from \"../composite/ai-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface ProfileStats {\n readonly repos?: number;\n readonly followers?: number;\n readonly following?: number;\n}\n\nexport interface ProfileHeaderGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly name?: string;\n readonly username?: string;\n readonly joinDate?: string;\n readonly stats?: ProfileStats;\n readonly languages?: readonly LanguageData[];\n readonly onAIGenerate?: () => void;\n}\n\nexport const ProfileHeaderGlass = forwardRef<HTMLDivElement, ProfileHeaderGlassProps>(\n (\n {\n name = \"Artem Safronov\",\n username = \"Yhooi2\",\n joinDate = \"Jan 2023\",\n stats = {},\n languages = [],\n onAIGenerate,\n className,\n ...props\n },\n ref\n ) => {\n const s = { repos: 11, followers: 1, following: 5, ...stats };\n\n const getInitials = (fullName: string): string => {\n return fullName\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-5\", className)}\n intensity=\"strong\"\n glow=\"violet\"\n hover={false}\n {...props}\n >\n <div className=\"flex flex-col md:flex-row gap-3 md:gap-6\">\n <div className=\"flex-1\">\n <div className=\"flex gap-4\">\n <ProfileAvatarGlass\n initials={getInitials(name)}\n size=\"lg\"\n status=\"online\"\n />\n <div>\n <h1 className=\"text-lg md:text-xl font-bold\" style={{ color: \"var(--text-primary)\" }}>\n {name}\n </h1>\n <div\n className=\"flex items-center gap-2 text-sm mt-0.5\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <a\n href=\"#\"\n className=\"flex items-center gap-1 hover:underline\"\n style={{ color: \"var(--text-accent)\" }}\n >\n @{username} <ExternalLink className=\"w-3 h-3\" />\n </a>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"w-3 h-3\" /> Joined {joinDate}\n </span>\n </div>\n <div\n className=\"flex items-center gap-3 md:gap-4 mt-2 text-sm flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <span className=\"flex items-center gap-1\">\n <FolderGit2\n className=\"w-4 h-4\"\n style={{ color: \"var(--text-accent)\" }}\n />\n {s.repos} repos\n </span>\n <span className=\"flex items-center gap-1\">\n <Users className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n {s.followers} followers\n </span>\n <span className=\"flex items-center gap-1\">\n <User className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n {s.following} following\n </span>\n </div>\n </div>\n </div>\n {languages.length > 0 && (\n <div className=\"mt-4\">\n <LanguageBarGlass languages={languages} />\n </div>\n )}\n </div>\n <AICardGlass onGenerate={onAIGenerate} />\n </div>\n </GlassCard>\n );\n }\n);\n\nProfileHeaderGlass.displayName = \"ProfileHeaderGlass\";\n","// ========================================\n// PROJECTS LIST GLASS COMPONENT\n// List of repository cards with filtering, sorting, and ownership controls\n// ========================================\n\nimport { forwardRef, useState, useMemo, type CSSProperties } from \"react\";\nimport { FolderGit2, AlertTriangle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { BadgeGlass } from \"../ui/badge-glass\";\nimport { RepositoryCardGlass, type RepositoryFlagType } from \"../composite/repository-card-glass\";\nimport { SegmentedControlGlass } from \"../specialized/segmented-control-glass\";\nimport { SortDropdownGlass, type SortField, type SortOrder } from \"../atomic\";\nimport \"@/glass-theme.css\";\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type OwnershipFilter = 'your' | 'contrib' | 'all';\n\n// Re-export for convenience\nexport type { SortField, SortOrder } from \"../atomic\";\n\nexport interface Repository {\n readonly name: string;\n readonly languages: string;\n readonly commits: number;\n readonly contribution: number;\n readonly stars?: number;\n readonly flagType?: RepositoryFlagType;\n readonly issues?: readonly string[];\n readonly createdYear?: number;\n /** Ownership type for Your/Contrib filtering */\n readonly ownership?: 'your' | 'contrib';\n}\n\nexport interface ProjectsListGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n /** List of repositories to display */\n readonly repositories: readonly Repository[];\n /** Show only flagged (non-green) repositories */\n readonly showFlaggedOnly?: boolean;\n /** Filter by creation year */\n readonly selectedYear?: number | null;\n /** Callback to clear all filters */\n readonly onClearFilters?: () => void;\n /** Custom title (overrides auto-generated) */\n readonly title?: string;\n\n // ======== NEW: Ownership Filter ========\n /** Current ownership filter */\n readonly ownershipFilter?: OwnershipFilter;\n /** Callback when ownership filter changes */\n readonly onOwnershipChange?: (filter: OwnershipFilter) => void;\n\n // ======== NEW: Sorting ========\n /** Current sort field */\n readonly sortBy?: SortField;\n /** Current sort order */\n readonly sortOrder?: SortOrder;\n /** Callback when sort changes */\n readonly onSortChange?: (field: SortField, order: SortOrder) => void;\n\n // ======== NEW: Controls ========\n /** Show header controls (sort dropdown, ownership filter). Default: true when callbacks provided */\n readonly showControls?: boolean;\n}\n\n// ========================================\n// OWNERSHIP FILTER OPTIONS\n// ========================================\n\nconst ownershipOptions = [\n { value: 'your' as const, label: 'Your' },\n { value: 'contrib' as const, label: 'Contrib' },\n];\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ProjectsListGlass = forwardRef<HTMLDivElement, ProjectsListGlassProps>(\n (\n {\n repositories,\n showFlaggedOnly = false,\n selectedYear = null,\n onClearFilters,\n title,\n // New props\n ownershipFilter,\n onOwnershipChange,\n sortBy = 'commits',\n sortOrder = 'desc',\n onSortChange,\n showControls,\n className,\n ...props\n },\n ref\n ) => {\n const [expandedIndex, setExpandedIndex] = useState<number | null>(null);\n\n // Determine if controls should be shown\n const shouldShowControls = showControls ?? (onOwnershipChange !== undefined || onSortChange !== undefined);\n\n // Filter repositories\n const filteredRepos = useMemo(() => {\n return repositories.filter((repo) => {\n // Flag filter\n if (showFlaggedOnly && repo.flagType === \"green\") return false;\n // Year filter\n if (selectedYear && repo.createdYear !== selectedYear) return false;\n // Ownership filter\n if (ownershipFilter && ownershipFilter !== 'all' && repo.ownership !== ownershipFilter) return false;\n return true;\n });\n }, [repositories, showFlaggedOnly, selectedYear, ownershipFilter]);\n\n // Sort repositories\n const sortedRepos = useMemo(() => {\n if (!onSortChange) return filteredRepos;\n\n return [...filteredRepos].sort((a, b) => {\n const multiplier = sortOrder === 'asc' ? 1 : -1;\n switch (sortBy) {\n case 'commits':\n return (a.commits - b.commits) * multiplier;\n case 'stars':\n return ((a.stars ?? 0) - (b.stars ?? 0)) * multiplier;\n case 'name':\n return a.name.localeCompare(b.name) * multiplier;\n case 'contribution':\n return (a.contribution - b.contribution) * multiplier;\n default:\n return 0;\n }\n });\n }, [filteredRepos, sortBy, sortOrder, onSortChange]);\n\n // Generate title based on filters\n const displayTitle = title ?? (\n showFlaggedOnly\n ? \"Flagged\"\n : selectedYear\n ? `${selectedYear}`\n : \"All\"\n ) + \" Projects\";\n\n const emptyContainerStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n };\n\n // Handle ownership change with type safety\n const handleOwnershipChange = (value: string): void => {\n if (onOwnershipChange && (value === 'your' || value === 'contrib')) {\n onOwnershipChange(value);\n }\n };\n\n return (\n <GlassCard\n ref={ref}\n intensity=\"medium\"\n className={cn(\"p-3 sm:p-4\", className)}\n {...props}\n >\n {/* Header */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4\">\n {/* Left: Title + Badge */}\n <div className=\"flex items-center gap-2\">\n {showFlaggedOnly ? (\n <AlertTriangle className=\"w-4 h-4\" style={{ color: \"var(--status-away)\" }} />\n ) : (\n <FolderGit2 className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n )}\n <h3\n className=\"font-semibold text-sm sm:text-base\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {displayTitle}\n </h3>\n <BadgeGlass variant=\"info\">{sortedRepos.length} repos</BadgeGlass>\n </div>\n\n {/* Right: Controls */}\n {shouldShowControls && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n {onSortChange && (\n <SortDropdownGlass\n sortBy={sortBy}\n sortOrder={sortOrder}\n onSortChange={onSortChange}\n />\n )}\n {onOwnershipChange && ownershipFilter && (\n <SegmentedControlGlass\n options={ownershipOptions}\n value={ownershipFilter}\n onChange={handleOwnershipChange}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {sortedRepos.length === 0 ? (\n // Empty State\n <div className=\"text-center py-10\">\n <div\n className=\"w-16 h-16 mx-auto mb-3 rounded-2xl flex items-center justify-center\"\n style={emptyContainerStyles}\n >\n <FolderGit2 className=\"w-8 h-8\" style={{ color: \"var(--text-muted)\" }} />\n </div>\n <p\n className=\"text-sm\"\n style={{ color: \"var(--text-muted)\" }}\n >\n No repositories found\n </p>\n {onClearFilters && (\n <button\n onClick={onClearFilters}\n className=\"mt-2 text-sm underline transition-colors hover:opacity-80\"\n style={{ color: \"var(--text-accent)\" }}\n >\n Clear filters\n </button>\n )}\n </div>\n ) : (\n // Repository List\n <div className=\"space-y-2\">\n {sortedRepos.map((repo, index) => (\n <RepositoryCardGlass\n key={repo.name}\n name={repo.name}\n languages={repo.languages}\n commits={repo.commits}\n contribution={repo.contribution}\n stars={repo.stars}\n flagType={repo.flagType}\n issues={repo.issues}\n expanded={expandedIndex === index}\n onToggle={() => setExpandedIndex(expandedIndex === index ? null : index)}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nProjectsListGlass.displayName = \"ProjectsListGlass\";\n","// ========================================\n// TRUST SCORE CARD GLASS COMPONENT\n// Overall trust score display with metrics\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Target } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { RainbowProgressGlass } from \"../specialized/rainbow-progress-glass\";\nimport { MetricCardGlass, type MetricColor } from \"../composite/metric-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface MetricData {\n readonly label: string;\n readonly value: number;\n readonly color: MetricColor;\n}\n\nexport interface TrustScoreCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly score?: number;\n readonly metrics?: readonly MetricData[];\n}\n\nexport const TrustScoreCardGlass = forwardRef<HTMLDivElement, TrustScoreCardGlassProps>(\n ({ score = 72, metrics = [], className, ...props }, ref) => {\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-4 md:p-5\", className)}\n intensity=\"strong\"\n glow=\"cyan\"\n hover={false}\n {...props}\n >\n <div className=\"flex items-center justify-between mb-3 md:mb-4\">\n <h2\n className=\"font-semibold flex items-center gap-1.5 md:gap-2 text-base md:text-lg\"\n style={{ color: \"var(--text-primary)\" }}\n >\n <Target className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-accent)\" }} />\n Overall Trust Score\n </h2>\n <div className=\"flex items-center gap-1.5 md:gap-2 animate-[score-pulse_2s_ease-in-out_infinite]\">\n <span className=\"text-3xl md:text-4xl font-bold bg-linear-to-r from-amber-400 via-emerald-400 to-cyan-400 bg-clip-text text-transparent\">\n {score}\n </span>\n <span className=\"text-lg md:text-xl\" style={{ color: \"var(--text-muted)\" }}>\n / 100\n </span>\n </div>\n </div>\n <RainbowProgressGlass value={score} size=\"lg\" showGlow />\n {metrics.length > 0 && (\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 md:gap-4 mt-4 md:mt-5\">\n {metrics.map((m) => (\n <MetricCardGlass\n key={m.label}\n label={m.label}\n value={m.value}\n color={m.color}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nTrustScoreCardGlass.displayName = \"TrustScoreCardGlass\";\n"],"x_google_ignoreList":[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,iBAAA,GAAA,yBAAA,KACX,yHACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aAAa;EACb,SAAS;EACT,SAAS;EACT,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACjBD,MAAa,aAAa;CACxB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;ACiCD,MAAa,eAAA,GAAA,MAAA,aACV,EAAE,UAAU,UAAU,IAAI,SAAS,MAAM,WAAW,GAAG,SAAS,QAAQ;AAMvE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GALG,YAAY,KAAK,sBAAsB,qBAOnD,UAAU,oCACV,UACD;EACD,GAAI;EAEH;GACG;EAGX;AAED,YAAY,cAAc;ACI1B,MAAa,oBAAA,GAAA,MAAA,aAET,EACE,OACA,OACA,SACA,SACA,UACA,WACA,UACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,kCAAkC,UAAU;EAC1D,GAAI;;GAEH,SACC,iBAAA,GAAA,kBAAA,MAAC,SAAA;IACU;IACT,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;eAExC,OACA,YACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;KAAuC,cAAW;eAAW;MAEtE,CAAA;KAEH;GAGT;GAEA,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,4BAA4B;IAC5C,MAAK;IACL,aAAU;cAET;KACC;GAGL,WAAW,CAAC,SACX,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,6BAA6B;IAC7C,aAAU;cAET;KACC;;GAEF;EAGX;AAED,iBAAiB,cAAc;AClC/B,MAAa,mBAAA,GAAA,MAAA,aAET,EACE,YAAY,MACZ,WACA,SACA,SAAS,kBACT,cAAc,sBACd,kBACA,OAAO,MACP,WAAW,OACX,UAAU,eACV,aAAa,0BACb,WACA,OACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;CAEvE,MAAMC,aAA4B;EAEhC,YAAY,aAAa,UAAU,UAAU;EAG7C,QAAQ,aACN,aAAa,mBAAmB,mBAAmB;EAIrD,gBAAgB,mBAAmB,KAAK;EACxC,sBAAsB,mBAAmB,KAAK;EAG9C,WAAW,aAAa,aAAa,CAAC,WAAW,qBAAqB;EAGtE,WAAW,aAAa,aAAa,CAAC,WAAW,YAAY;EAG7D,YAAY,OAAO;EAGnB,GAAG;EACJ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,SAAS,UAAU;EACjC,OAAO;EACP,GAAK,WAAW,EAAE,GAAG;EACrB,GAAI;EAEH;GACG;EAGX;AAED,gBAAgB,cAAc;AClJ9B,IAAMC,UAA6C;CACjD,SAAS,aAAA;CACT,aAAa,aAAA;CACb,SAAS,aAAA;CACT,SAAS,aAAA;CAET,MAAM,aAAA;CACN,OAAO,aAAA;CACR;AAQD,IAAMC,kBAAsD;CAE1D,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,aAAa;EACX,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CAED,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CAED,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACF;AAED,IAAM,kBAAkB,YAAyC;CAC/D,MAAM,SAAS,gBAAc;AAC7B,QAAO;EACL,YAAY,OAAO;EACnB,QAAQ,aAAa,OAAO;EAC7B;;AAqFH,MAAa,cAAA,GAAA,MAAA,aAET,EACE,WACA,UAAU,WACV,OACA,UACA,aACA,WACA,GAAG,SAEL,QACG;CAEH,MAAMC,mBAAiC,WAAW;CAElD,MAAM,SAAS,gBAAc;CAC7B,MAAM,OAAO,QAAQ;AAErB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,EAAE,SAAS,kBAAkB,CAAC,EAAE,UAAU;EACtE,OAAO,eAAe,iBAAiB;EACvC,MAAK;EACL,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,OAAO,MAAM;KAC7B;GACF,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACZ,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,OAAO,MAAM;eAE5B;MACC,EAEN,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAgC,OAAO,EAAE,OAAO,OAAO,MAAM;KACvE;MACC,CAAA;KACA;GACL,eACC,iBAAA,GAAA,kBAAA,KAAC,UAAA;IACC,SAAS;IACT,WAAU;IACV,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA;KAAE,WAAW,WAAW;KAAI,OAAO,EAAE,OAAO,OAAO,MAAM;MAAI;KACvD;;GAEP;EAGX;AAED,WAAW,cAAc;AC/NzB,MAAa,eAAA,GAAA,yBAAA,KACX,2FACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;AAED,MAAa,eAAA,GAAA,yBAAA,KAAkB,gDAAgD;CAC7E,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACwDF,IAAM,eAAe,SAAyB;AAC5C,KAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,WAAW,EAAG,QAAO;AAC9C,QAAO,KACJ,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,GAAG,CACtB,KAAK,GAAG,CACR,aAAa,CACb,MAAM,GAAG,EAAE;;AAQhB,IAAM,iBAAiB,eAA2D;AAOhF,QANuE;EACrE,QAAQ;GAAE,IAAI;GAAwB,MAAM;GAA6B;EACzE,SAAS;GAAE,IAAI;GAAyB,MAAM;GAAQ;EACtD,MAAM;GAAE,IAAI;GAAsB,MAAM;GAA2B;EACnE,MAAM;GAAE,IAAI;GAAsB,MAAM;GAA2B;EACpE,CACiB;;AAGpB,MAAa,eAAA,GAAA,MAAA,aACV,EAAE,UAAU,OAAO,MAAM,MAAA,SAAO,MAAM,QAAQ,WAAW,GAAG,SAAS,QAAQ;CAC5E,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAE5C,MAAME,eAA8B;EAClC,YAAY;EACZ,QAAQ;EACR,WAAW,YAAY,6BAA6B;EACpD,OAAO;EACR;CAED,MAAM,WAAW,YAAY,KAAK;AAKlC,QACE,iBAAA,GAAA,kBAAA,MAHW,UAAU,sBAAA,OAAO,OAG3B;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;aAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAW,cAAA,GAAG,YAAY,EAAE,MAAA,QAAM,CAAC,CAAC;GACpC,OAAO;GACP,MAAK;GACL,cAAY,cAAc;aAEzB;IACG,EAGL,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAW,cAAA,GAAG,YAAY,EAAE,MAAA,QAAM,CAAC,CAAC;GACpC,OAAO;IACL,YAAY,cAAc,OAAO,CAAC;IAClC,WAAW,cAAc,OAAO,CAAC;IAClC;GACD,MAAK;GACL,cAAY,WAAW;IACvB,CAAA;GAEC;EAGZ;AAED,YAAY,cAAc;ACvJ1B,MAAa,iBAAA,GAAA,yBAAA,KACX,sEACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;ACVD,IAAMC,gBAAsD;CAE1D,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,aAAa;EACX,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CAED,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACF;AAED,IAAM,kBAAkB,YAAyC;CAC/D,MAAM,IAAI,cAAc,YAAY,cAAc;AAClD,QAAO;EACL,YAAY,EAAE;EACd,OAAO,EAAE;EACT,QAAQ,aAAa,EAAE;EACxB;;AAmFH,MAAa,cAAA,GAAA,MAAA,aAET,EAAE,UAAU,WAAW,UAAU,WAAW,MAAA,SAAO,MAAM,KAAK,GAAG,SACjE,QACG;CACH,MAAM,IAAI,cAAc;AAExB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EACjD,OAAO,eAAe,QAAQ;EAC9B,GAAI;aAEH,OACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,YAAY,EAAE,MAAM;IAC7B,EAEH,SAAA;GACI;EAGZ;AAED,WAAW,cAAc;ACjKzB,MAAa,uBAAA,GAAA,yBAAA,KACX,oLACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WAAW;GACX,OAAO;GACP,aAAa;GACb,SAAS;GACT,MAAM;GACP;EACD,MAAM;GAGJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACP;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;ACTD,IAAM,oBACJ,SACA,WACA,mBACkB;AA8DlB,QA7D8D;EAC5D,SAAS;GACP,YAAY,YACR,gCACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,4BACA;GACL;EACD,WAAW;GACT,YAAY,YACR,kCACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,8BACA;GACL;EACD,OAAO;GACL,YAAY,YACR,8BACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBAAiB,sBAAsB;GACnD;EACD,aAAa;GACX,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,gCACA;GACL;EACD,SAAS;GACP,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,4BACA;GACL;EACD,MAAM;GACJ,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBAAiB,sBAAsB;GACnD;EACF,CAEiB;;AA+GpB,MAAa,eAAA,GAAA,MAAA,aAET,EACE,UAAU,OACV,WACA,UAAU,WACV,MAAA,SAAO,MACP,UACA,UAAU,OACV,UACA,MAAM,MACN,eAAe,QACf,SACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAuD,KAAK;CAE3E,MAAM,aAAa,YAAY;CAC/B,MAAM,oBAAA,GAAA,MAAA,QAAiD,KAAK;AAG5D,EAAA,GAAA,MAAA,iBAAgB;AACd,eAAa;AACX,OAAI,iBAAiB,QACnB,cAAa,iBAAiB,QAAQ;;IAGzC,EAAE,CAAC;CAGN,MAAM,eAAA,GAAA,MAAA,cACH,MAAqC;AACpC,MAAI,WAAY;EAGhB,MAAM,OAAO,EAAE,cAAc,uBAAuB;AAGpD,YAAU;GAAE,GAFF,EAAE,UAAU,KAAK;GAEZ,GADL,EAAE,UAAU,KAAK;GACT,CAAC;AAGnB,MAAI,iBAAiB,QACnB,cAAa,iBAAiB,QAAQ;AAGxC,mBAAiB,UAAU,iBAAiB;AAC1C,aAAU,KAAK;AACf,oBAAiB,UAAU;KAC1B,IAAI;AAEP,YAAU,EAAE;IAEd,CAAC,YAAY,QAAQ,CACtB;AAKD,QACE,iBAAA,GAAA,kBAAA,KAHW,UAAU,sBAAA,OAAO,UAG3B;EACM;EACL,WAAW,cAAA,GACT,oBAAoB;GAAE;GAAS,MAAA;GAAM,CAAC,EACtC,aAAa,CAAC,cAAc,gBAC5B,UACD;EACD,OAAO;GACL,GAAG,iBAAiB,SAAS,aAAa,CAAC,YAAY,kBAAkB,CAAC,WAAW;GACrF,SAAS;GACV;EACD,MAAM,UAAU,KAAA,IAAY;EAC5B,UAAU;EACV,SAAS;EACT,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,SAAS,WAAW;EACpB,QAAQ,WAAW;EACnB,GAAI;YAGH,UACC,WAEA,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;GAEG,aAAa,YAAY,aAAa,CAAC,cACtC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO,EAAE,cAAc,WAAW;cAElC,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,WAAW,uCAAuC;MAC3D;KACE;GAIP,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAU;IACV,OAAO;KACL,MAAM,OAAO;KACb,KAAK,OAAO;KACZ,OAAO;KACP,QAAQ;KACR,WAAW;KACX,WAAW;KACZ;KACD;GAIH,aAAa,YAAY,aAAa,CAAC,cACtC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO,EACL,YACE,sEACH;KACD;GAIH,WAAW,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAW,cAAA,GAAG,WAAW,IAAI,eAAe,EAAA,CAAI;GAGtE,CAAC,WAAW,QAAQ,iBAAiB,UACpC,iBAAA,GAAA,kBAAA,KAAC,MAAA,EAAK,WAAW,WAAW,IAAA,CAAM;GAInC,CAAC,WAAW;GAGZ,CAAC,WAAW,QAAQ,iBAAiB,WACpC,iBAAA,GAAA,kBAAA,KAAC,MAAA,EAAK,WAAW,WAAW,IAAA,CAAM;MAEnC;GAEA;EAGZ;AAED,YAAY,cAAc;ACjQ1B,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,SACA,UACA,OACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CAEvE,MAAME,iBAAgC;EACpC,YAAY,UAAU,+BAA+B;EACrD,QAAQ,aAAa,UAAU,+BAA+B;EAC9D,WAAW,kBAAkB,CAAC,WAC1B,sBACA,aAAa,CAAC,WACd,yBACA;EACL;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,SAAA;EACC,WAAW,cAAA,GACT,6CACA,WAAW,kCAAkC,kBAC7C,UACD;EACD,cAAc,WAAW;EACzB,cAAc,WAAW;;GAEzB,iBAAA,GAAA,kBAAA,KAAC,SAAA;IACM;IACL,MAAK;IACI;IACT,WAAW,MAAM,CAAC,YAAY,WAAW,EAAE,OAAO,QAAQ;IAChD;IACV,WAAU;IACV,GAAI;KACJ;GAEF,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAEd,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,eAAe,CAAC,YAAY,WAAW,CAAC,QAAQ;KAChD,SAAS,WAAW;KACpB,QAAQ,WAAW;KACnB,WAAU;KACV,OAAO;KACP,MAAK;KACL,gBAAc;KACd,cAAY,SAAS;KACrB,UAAU,WAAW,KAAK;KAC1B,YAAY,MAAM;AAChB,UAAI,CAAC,aAAa,EAAE,QAAQ,WAAW,EAAE,QAAQ,MAAM;AACrD,SAAE,gBAAgB;AAClB,kBAAW,CAAC,QAAQ;;;eAIvB,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;MAAM,WAAU;MAA4B,OAAO,EAAE,OAAO,uBAAuB;OAAI;MAEtF;KACD;GACN,SACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAqB,OAAO,EAAE,OAAO,yBAAyB;cAC3E;KACI;;GAEH;EAGb;AAED,cAAc,cAAc;AClK5B,IAAM,4BAAA,GAAA,yBAAA,KAA+B,oDAAoD;CACvF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;AA2CF,IAAM,uBAAqB,aAAuC;AAShE,QARmG;EACjG,QAAQ;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA0B;EAC7E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,OAAO;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAyB;EAC3E,SAAS;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA2B;EAC/E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EAC1E,CACgB;;AAGnB,IAAM,uBAAuB,cAAiD;AAE5E,QADoB;EAAE,KAAK;EAAG,QAAQ;EAAG,MAAM;EAAG,CAC/B;;AAOrB,MAAa,yBAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,QAAQ,GACR,UAAU,eACV,YAAY,GACZ,aAAa,GACb,QAAQ,UACR,aAAa,yBACb,YAAY,MACZ,OACA,YACA,WAAW,MACX,gBAAgB,UAChB,gBAAgB,SAChB,oBAAoB,GACpB,GAAG,SAEL,QACG;CACH,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CACtD,MAAM,iBAAiB,oBAAkB,MAAM;CAI/C,MAAM,UADU;EAAE,IAAI;EAAI,IAAI;EAAI,IAAI;EAAK,IAAI;EAAK,CAC5B,UAAQ;CAChC,MAAM,UAAU,UAAU,KAAK,IAAI,WAAW,WAAW,IAAI;CAC7D,MAAM,gBAAgB,IAAI,KAAK,KAAK;CACpC,MAAM,SAAS,UAAU;CAGzB,MAAM,cAAA,GAAA,MAAA,eAA2B;AAC/B,MAAI,YAAY,gBAAiB,QAAO,gBAAgB;AACxD,SAAO,kBAAkB,MAAM,gBAAgB;IAC9C;EAAC;EAAS;EAAc;EAAc,CAAC;CAG1C,MAAM,YAAA,GAAA,MAAA,QAAkB;CACxB,MAAM,aAAa,qBAAqB;CACxC,MAAM,SAAS,iBAAiB;AAEhC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,yBAAyB,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EAAE,GAAI;;GAC/E,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,OAAO;IACP,QAAQ;IACR,WAAU;IACV,eAAY;;KAEZ,iBAAA,GAAA,kBAAA,MAAC,QAAA,EAAA,UAAA,CAEC,iBAAA,GAAA,kBAAA,MAAC,kBAAA;MAAe,IAAI;MAAY,IAAG;MAAK,IAAG;MAAK,IAAG;MAAO,IAAG;iBAC3D,iBAAA,GAAA,kBAAA,KAAC,QAAA;OAAK,QAAO;OAAK,WAAW,eAAe;QAAQ,EACpD,iBAAA,GAAA,kBAAA,KAAC,QAAA;OAAK,QAAO;OAAO,WAAW,eAAe;QAAM,CAAA;OACrC,EAGhB,YACC,iBAAA,GAAA,kBAAA,MAAC,UAAA;MAAO,IAAI;iBACV,iBAAA,GAAA,kBAAA,KAAC,kBAAA;OAAe,cAAc,oBAAoB,cAAc;OAAE,QAAO;QAAgB,EACzF,iBAAA,GAAA,kBAAA,MAAC,WAAA,EAAA,UAAA,CACC,iBAAA,GAAA,kBAAA,KAAC,eAAA,EAAY,IAAG,eAAA,CAAgB,EAChC,iBAAA,GAAA,kBAAA,KAAC,eAAA,EAAY,IAAG,iBAAA,CAAkB,CAAA,EAAA,CAC1B,CAAA;OACH,CAAA,EAAA,CAEN;KAGP,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,MAAK;MACL,QAAQ;MACR,aAAa;OACb;KAGF,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,MAAK;MACL,QAAQ,QAAQ,WAAW;MAC3B,aAAa;MACE;MACf,iBAAiB;MACjB,kBAAkB;MAClB,QAAQ,WAAW,QAAQ,OAAO,KAAK,KAAA;MACvC,WAAW,cAAA,GACT,kBACA,YAAY,mBAAmB,iCAChC;MACD,OAAO;OACL,oBAAoB,GAAG,kBAAkB;OACzC,0BAA0B;OAC3B;OACD;;KACE;GAGL,aACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,cAAc,uBAAuB;eAEpD,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;MACvD;KACH;GAIR,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,MAAK;IACL,iBAAe,YAAY,gBAAgB,eAAe,KAAA;IAC1D,iBAAe;IACf,iBAAe;IACf,cAAY,UAAU,YAAY,gBAAgB,aAAa,aAAa,KAAK;IACjF,kBAAgB,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;IAC3E,WAAU;cAET,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;KACxD;;GACF;EAGX;AAED,sBAAsB,cAAc;ACpOpC,IAAI,YAAY,CAAC,EAAE,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,SAAS;AACvF,SAAS,qBAAqB,sBAAsB,iBAAiB,EAAE,2BAA2B,SAAS,EAAE,EAAE;AAC7G,QAAO,SAAS,YAAY,OAAO;AACjC,yBAAuB,MAAM;AAC7B,MAAI,6BAA6B,SAAS,CAAC,MAAM,iBAC/C,QAAO,kBAAkB,MAAM;;;ACJrC,SAAS,OAAO,KAAK,OAAO;AAC1B,KAAI,OAAO,QAAQ,WACjB,QAAO,IAAI,MAAM;UACR,QAAQ,QAAQ,QAAQ,KAAK,EACtC,KAAI,UAAU;;AAGlB,SAAS,YAAY,GAAG,MAAM;AAC5B,SAAQ,SAAS;EACf,IAAI,aAAa;EACjB,MAAM,WAAW,KAAK,KAAK,QAAQ;GACjC,MAAM,UAAU,OAAO,KAAK,KAAK;AACjC,OAAI,CAAC,cAAc,OAAO,WAAW,WACnC,cAAa;AAEf,UAAO;IACP;AACF,MAAI,WACF,cAAa;AACX,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;AACzB,QAAI,OAAO,WAAW,WACpB,UAAS;QAET,QAAO,KAAK,IAAI,KAAK;;;;;AAOjC,SAAS,gBAAgB,GAAG,MAAM;AAChC,QAAOE,MAAM,YAAY,YAAY,GAAG,KAAK,EAAE,KAAK;;ACftD,SAAS,mBAAmB,WAAW,yBAAyB,EAAE,EAAE;CAClE,IAAI,kBAAkB,EAAE;CACxB,SAAS,eAAe,mBAAmB,gBAAgB;EACzD,MAAM,cAAcC,MAAM,cAAc,eAAe;EACvD,MAAMC,UAAQ,gBAAgB;AAC9B,oBAAkB,CAAC,GAAG,iBAAiB,eAAe;EACtD,MAAM,YAAY,UAAU;GAC1B,MAAM,EAAE,OAAO,UAAU,GAAG,YAAY;GACxC,MAAM,UAAU,QAAQ,aAAaA,YAAU;GAC/C,MAAM,QAAQD,MAAM,cAAc,SAAS,OAAO,OAAO,QAAQ,CAAC;AAClE,UAAuB,iBAAA,GAAA,kBAAA,KAAI,QAAQ,UAAU;IAAE;IAAO;IAAU,CAAC;;AAEnE,WAAS,cAAc,oBAAoB;EAC3C,SAAS,YAAY,cAAc,OAAO;GACxC,MAAM,UAAU,QAAQ,aAAaC,YAAU;GAC/C,MAAM,UAAUD,MAAM,WAAW,QAAQ;AACzC,OAAI,QAAS,QAAO;AACpB,OAAI,mBAAmB,KAAK,EAAG,QAAO;AACtC,SAAM,IAAI,MAAM,KAAK,aAAa,2BAA2B,kBAAkB,IAAI;;AAErF,SAAO,CAAC,UAAU,YAAY;;CAEhC,MAAM,oBAAoB;EACxB,MAAM,gBAAgB,gBAAgB,KAAK,mBAAmB;AAC5D,UAAOA,MAAM,cAAc,eAAe;IAC1C;AACF,SAAO,SAAS,SAAS,OAAO;GAC9B,MAAM,WAAW,QAAQ,cAAc;AACvC,UAAOA,MAAM,eACJ,GAAG,UAAU,cAAc;IAAE,GAAG;KAAQ,YAAY;IAAU,EAAE,GACvE,CAAC,OAAO,SAAS,CAClB;;;AAGL,aAAY,YAAY;AACxB,QAAO,CAAC,gBAAgBE,uBAAqB,aAAa,GAAG,uBAAuB,CAAC;;AAEvF,SAASA,uBAAqB,GAAG,QAAQ;CACvC,MAAM,YAAY,OAAO;AACzB,KAAI,OAAO,WAAW,EAAG,QAAO;CAChC,MAAM,oBAAoB;EACxB,MAAM,aAAa,OAAO,KAAK,kBAAkB;GAC/C,UAAU,cAAc;GACxB,WAAW,aAAa;GACzB,EAAE;AACH,SAAO,SAAS,kBAAkB,gBAAgB;GAChD,MAAM,aAAa,WAAW,QAAQ,aAAa,EAAE,UAAU,gBAAgB;IAE7E,MAAM,eADa,SAAS,eAAe,CACX,UAAU;AAC1C,WAAO;KAAE,GAAG;KAAa,GAAG;KAAc;MACzC,EAAE,CAAC;AACN,UAAOF,MAAM,eAAe,GAAG,UAAU,UAAU,cAAc,YAAY,GAAG,CAAC,WAAW,CAAC;;;AAGjG,aAAY,YAAY,UAAU;AAClC,QAAO;;AClDT,IAAIG,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AACN,SAAS,4BAA4B,QAAQ,OAAO;AAClD,KAAI,OAAQ,WAAS,gBAAgB,OAAO,cAAc,MAAM,CAAC;;ACpCnE,SAASE,iBAAe,UAAU;CAChC,MAAM,cAAcC,MAAM,OAAO,SAAS;AAC1C,OAAM,gBAAgB;AACpB,cAAY,UAAU;GACtB;AACF,QAAOA,MAAM,eAAe,GAAG,SAAS,YAAY,UAAU,GAAG,KAAK,EAAE,EAAE,CAAC;;ACJ7E,SAAS,iBAAiB,qBAAqB,gBAAgB,YAAY,UAAU;CACnF,MAAM,kBAAkBC,iBAAe,oBAAoB;AAC3D,OAAM,gBAAgB;EACpB,MAAM,iBAAiB,UAAU;AAC/B,OAAI,MAAM,QAAQ,SAChB,iBAAgB,MAAM;;AAG1B,gBAAc,iBAAiB,WAAW,eAAe,EAAE,SAAS,MAAM,CAAC;AAC3E,eAAa,cAAc,oBAAoB,WAAW,eAAe,EAAE,SAAS,MAAM,CAAC;IAC1F,CAAC,iBAAiB,cAAc,CAAC;;ACHtC,IAAI,yBAAyB;AAC7B,IAAI,iBAAiB;AACrB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI;AACJ,IAAI,0BAA0BC,MAAM,cAAc;CAChD,wBAAwB,IAAI,KAAK;CACjC,wDAAwD,IAAI,KAAK;CACjE,0BAA0B,IAAI,KAAK;CACpC,CAAC;AACF,IAAI,mBAAmBA,MAAM,YAC1B,OAAO,iBAAiB;CACvB,MAAM,EACJ,8BAA8B,OAC9B,iBACA,sBACA,gBACA,mBACA,WACA,GAAG,eACD;CACJ,MAAM,UAAUA,MAAM,WAAW,wBAAwB;CACzD,MAAM,CAAC,MAAM,WAAWA,MAAM,SAAS,KAAK;CAC5C,MAAM,gBAAgB,MAAM,iBAAiB,YAAY;CACzD,MAAM,GAAG,SAASA,MAAM,SAAS,EAAE,CAAC;CACpC,MAAM,eAAe,gBAAgB,eAAe,UAAU,QAAQ,MAAM,CAAC;CAC7E,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO;CACzC,MAAM,CAAC,gDAAgD,CAAC,GAAG,QAAQ,uCAAuC,CAAC,MAAM,GAAG;CACpH,MAAM,oDAAoD,OAAO,QAAQ,6CAA6C;CACtH,MAAMC,UAAQ,OAAO,OAAO,QAAQ,KAAK,GAAG;CAC5C,MAAM,8BAA8B,QAAQ,uCAAuC,OAAO;CAC1F,MAAM,yBAAyBA,WAAS;CACxC,MAAM,qBAAqB,uBAAuB,UAAU;EAC1D,MAAM,SAAS,MAAM;EACrB,MAAM,wBAAwB,CAAC,GAAG,QAAQ,SAAS,CAAC,MAAM,WAAW,OAAO,SAAS,OAAO,CAAC;AAC7F,MAAI,CAAC,0BAA0B,sBAAuB;AACtD,yBAAuB,MAAM;AAC7B,sBAAoB,MAAM;AAC1B,MAAI,CAAC,MAAM,iBAAkB,cAAa;IACzC,cAAc;CACjB,MAAM,eAAe,iBAAiB,UAAU;EAC9C,MAAM,SAAS,MAAM;AAErB,MADwB,CAAC,GAAG,QAAQ,SAAS,CAAC,MAAM,WAAW,OAAO,SAAS,OAAO,CAAC,CAClE;AACrB,mBAAiB,MAAM;AACvB,sBAAoB,MAAM;AAC1B,MAAI,CAAC,MAAM,iBAAkB,cAAa;IACzC,cAAc;AACjB,mBAAkB,UAAU;AAE1B,MAAI,EADmBA,YAAU,QAAQ,OAAO,OAAO,GAClC;AACrB,oBAAkB,MAAM;AACxB,MAAI,CAAC,MAAM,oBAAoB,WAAW;AACxC,SAAM,gBAAgB;AACtB,cAAW;;IAEZ,cAAc;AACjB,OAAM,gBAAgB;AACpB,MAAI,CAAC,KAAM;AACX,MAAI,6BAA6B;AAC/B,OAAI,QAAQ,uCAAuC,SAAS,GAAG;AAC7D,gCAA4B,cAAc,KAAK,MAAM;AACrD,kBAAc,KAAK,MAAM,gBAAgB;;AAE3C,WAAQ,uCAAuC,IAAI,KAAK;;AAE1D,UAAQ,OAAO,IAAI,KAAK;AACxB,kBAAgB;AAChB,eAAa;AACX,OAAI,+BAA+B,QAAQ,uCAAuC,SAAS,EACzF,eAAc,KAAK,MAAM,gBAAgB;;IAG5C;EAAC;EAAM;EAAe;EAA6B;EAAQ,CAAC;AAC/D,OAAM,gBAAgB;AACpB,eAAa;AACX,OAAI,CAAC,KAAM;AACX,WAAQ,OAAO,OAAO,KAAK;AAC3B,WAAQ,uCAAuC,OAAO,KAAK;AAC3D,mBAAgB;;IAEjB,CAAC,MAAM,QAAQ,CAAC;AACnB,OAAM,gBAAgB;EACpB,MAAM,qBAAqB,MAAM,EAAE,CAAC;AACpC,WAAS,iBAAiB,gBAAgB,aAAa;AACvD,eAAa,SAAS,oBAAoB,gBAAgB,aAAa;IACtE,EAAE,CAAC;AACN,QAAuB,iBAAA,GAAA,kBAAA,KACrBC,YAAU,KACV;EACE,GAAG;EACH,KAAK;EACL,OAAO;GACL,eAAe,8BAA8B,yBAAyB,SAAS,SAAS,KAAK;GAC7F,GAAG,MAAM;GACV;EACD,gBAAgB,qBAAqB,MAAM,gBAAgB,aAAa,eAAe;EACvF,eAAe,qBAAqB,MAAM,eAAe,aAAa,cAAc;EACpF,sBAAsB,qBACpB,MAAM,sBACN,mBAAmB,qBACpB;EACF,CACF;EAEJ;AACD,iBAAiB,cAAc;AAC/B,IAAI,cAAc;AAClB,IAAI,yBAAyBF,MAAM,YAAY,OAAO,iBAAiB;CACrE,MAAM,UAAUA,MAAM,WAAW,wBAAwB;CACzD,MAAM,MAAMA,MAAM,OAAO,KAAK;CAC9B,MAAM,eAAe,gBAAgB,cAAc,IAAI;AACvD,OAAM,gBAAgB;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,MAAM;AACR,WAAQ,SAAS,IAAI,KAAK;AAC1B,gBAAa;AACX,YAAQ,SAAS,OAAO,KAAK;;;IAGhC,CAAC,QAAQ,SAAS,CAAC;AACtB,QAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,GAAG;EAAO,KAAK;EAAc,CAAC;EAC1E;AACF,uBAAuB,cAAc;AACrC,SAAS,sBAAsB,sBAAsB,gBAAgB,YAAY,UAAU;CACzF,MAAM,2BAA2BC,iBAAe,qBAAqB;CACrE,MAAM,8BAA8BH,MAAM,OAAO,MAAM;CACvD,MAAM,iBAAiBA,MAAM,aAAa,GACxC;AACF,OAAM,gBAAgB;EACpB,MAAM,qBAAqB,UAAU;AACnC,OAAI,MAAM,UAAU,CAAC,4BAA4B,SAAS;IACxD,IAAI,4CAA4C,WAAW;AACzD,kCACE,sBACA,0BACA,aACA,EAAE,UAAU,MAAM,CACnB;;IAGH,MAAM,cAAc,EAAE,eAAe,OAAO;AAC5C,QAAI,MAAM,gBAAgB,SAAS;AACjC,mBAAc,oBAAoB,SAAS,eAAe,QAAQ;AAClE,oBAAe,UAAU;AACzB,mBAAc,iBAAiB,SAAS,eAAe,SAAS,EAAE,MAAM,MAAM,CAAC;UAE/E,4CAA2C;SAG7C,eAAc,oBAAoB,SAAS,eAAe,QAAQ;AAEpE,+BAA4B,UAAU;;EAExC,MAAM,UAAU,OAAO,iBAAiB;AACtC,iBAAc,iBAAiB,eAAe,kBAAkB;KAC/D,EAAE;AACL,eAAa;AACX,UAAO,aAAa,QAAQ;AAC5B,iBAAc,oBAAoB,eAAe,kBAAkB;AACnE,iBAAc,oBAAoB,SAAS,eAAe,QAAQ;;IAEnE,CAAC,eAAe,yBAAyB,CAAC;AAC7C,QAAO,EAEL,4BAA4B,4BAA4B,UAAU,MACnE;;AAEH,SAAS,gBAAgB,gBAAgB,gBAAgB,YAAY,UAAU;CAC7E,MAAM,qBAAqBG,iBAAe,eAAe;CACzD,MAAM,4BAA4BH,MAAM,OAAO,MAAM;AACrD,OAAM,gBAAgB;EACpB,MAAM,eAAe,UAAU;AAC7B,OAAI,MAAM,UAAU,CAAC,0BAA0B,QAE7C,8BAA6B,eAAe,oBADxB,EAAE,eAAe,OAAO,EACiC,EAC3E,UAAU,OACX,CAAC;;AAGN,gBAAc,iBAAiB,WAAW,YAAY;AACtD,eAAa,cAAc,oBAAoB,WAAW,YAAY;IACrE,CAAC,eAAe,mBAAmB,CAAC;AACvC,QAAO;EACL,sBAAsB,0BAA0B,UAAU;EAC1D,qBAAqB,0BAA0B,UAAU;EAC1D;;AAEH,SAAS,iBAAiB;CACxB,MAAM,QAAQ,IAAI,YAAY,eAAe;AAC7C,UAAS,cAAc,MAAM;;AAE/B,SAAS,6BAA6B,MAAM,SAAS,QAAQ,EAAE,YAAY;CACzE,MAAM,SAAS,OAAO,cAAc;CACpC,MAAM,QAAQ,IAAI,YAAY,MAAM;EAAE,SAAS;EAAO,YAAY;EAAM;EAAQ,CAAC;AACjF,KAAI,QAAS,QAAO,iBAAiB,MAAM,SAAS,EAAE,MAAM,MAAM,CAAC;AACnE,KAAI,SACF,6BAA4B,QAAQ,MAAM;KAE1C,QAAO,cAAc,MAAM;;AC7M/B,IAAII,UAAQ;AAKZ,SAAS,iBAAiB;AACxB,OAAM,gBAAgB;EACpB,MAAM,aAAa,SAAS,iBAAiB,2BAA2B;AACxE,WAAS,KAAK,sBAAsB,cAAc,WAAW,MAAM,kBAAkB,CAAC;AACtF,WAAS,KAAK,sBAAsB,aAAa,WAAW,MAAM,kBAAkB,CAAC;AACrF;AACA,eAAa;AACX,OAAIA,YAAU,EACZ,UAAS,iBAAiB,2BAA2B,CAAC,SAAS,SAAS,KAAK,QAAQ,CAAC;AAExF;;IAED,EAAE,CAAC;;AAER,SAAS,mBAAmB;CAC1B,MAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,SAAQ,aAAa,0BAA0B,GAAG;AAClD,SAAQ,WAAW;AACnB,SAAQ,MAAM,UAAU;AACxB,SAAQ,MAAM,UAAU;AACxB,SAAQ,MAAM,WAAW;AACzB,SAAQ,MAAM,gBAAgB;AAC9B,QAAO;;ACPT,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AC5BN,IAAI,qBAAqB;AACzB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;CAAE,SAAS;CAAO,YAAY;CAAM;AACxD,IAAI,mBAAmB;AACvB,IAAI,aAAaE,MAAM,YAAY,OAAO,iBAAiB;CACzD,MAAM,EACJ,OAAO,OACP,UAAU,OACV,kBAAkB,sBAClB,oBAAoB,wBACpB,GAAG,eACD;CACJ,MAAM,CAAC,WAAW,gBAAgBA,MAAM,SAAS,KAAK;CACtD,MAAM,mBAAmBC,iBAAe,qBAAqB;CAC7D,MAAM,qBAAqBA,iBAAe,uBAAuB;CACjE,MAAM,wBAAwBD,MAAM,OAAO,KAAK;CAChD,MAAM,eAAe,gBAAgB,eAAe,SAAS,aAAa,KAAK,CAAC;CAChF,MAAM,aAAaA,MAAM,OAAO;EAC9B,QAAQ;EACR,QAAQ;AACN,QAAK,SAAS;;EAEhB,SAAS;AACP,QAAK,SAAS;;EAEjB,CAAC,CAAC;AACH,OAAM,gBAAgB;AACpB,MAAI,SAAS;GACX,IAAI,iBAAiB,SAAS,OAAO;AACnC,QAAI,WAAW,UAAU,CAAC,UAAW;IACrC,MAAM,SAAS,MAAM;AACrB,QAAI,UAAU,SAAS,OAAO,CAC5B,uBAAsB,UAAU;QAEhC,OAAM,sBAAsB,SAAS,EAAE,QAAQ,MAAM,CAAC;MAEvD,kBAAkB,SAAS,OAAO;AACnC,QAAI,WAAW,UAAU,CAAC,UAAW;IACrC,MAAM,gBAAgB,MAAM;AAC5B,QAAI,kBAAkB,KAAM;AAC5B,QAAI,CAAC,UAAU,SAAS,cAAc,CACpC,OAAM,sBAAsB,SAAS,EAAE,QAAQ,MAAM,CAAC;MAEvD,mBAAmB,SAAS,WAAW;AAExC,QADuB,SAAS,kBACT,SAAS,KAAM;AACtC,SAAK,MAAM,YAAY,UACrB,KAAI,SAAS,aAAa,SAAS,EAAG,OAAM,UAAU;;AAI1D,YAAS,iBAAiB,WAAW,eAAe;AACpD,YAAS,iBAAiB,YAAY,gBAAgB;GACtD,MAAM,mBAAmB,IAAI,iBAAiB,iBAAiB;AAC/D,OAAI,UAAW,kBAAiB,QAAQ,WAAW;IAAE,WAAW;IAAM,SAAS;IAAM,CAAC;AACtF,gBAAa;AACX,aAAS,oBAAoB,WAAW,eAAe;AACvD,aAAS,oBAAoB,YAAY,gBAAgB;AACzD,qBAAiB,YAAY;;;IAGhC;EAAC;EAAS;EAAW,WAAW;EAAO,CAAC;AAC3C,OAAM,gBAAgB;AACpB,MAAI,WAAW;AACb,oBAAiB,IAAI,WAAW;GAChC,MAAM,2BAA2B,SAAS;AAE1C,OAAI,CADwB,UAAU,SAAS,yBAAyB,EAC9C;IACxB,MAAM,aAAa,IAAI,YAAY,oBAAoB,cAAc;AACrE,cAAU,iBAAiB,oBAAoB,iBAAiB;AAChE,cAAU,cAAc,WAAW;AACnC,QAAI,CAAC,WAAW,kBAAkB;AAChC,gBAAW,YAAY,sBAAsB,UAAU,CAAC,EAAE,EAAE,QAAQ,MAAM,CAAC;AAC3E,SAAI,SAAS,kBAAkB,yBAC7B,OAAM,UAAU;;;AAItB,gBAAa;AACX,cAAU,oBAAoB,oBAAoB,iBAAiB;AACnE,qBAAiB;KACf,MAAM,eAAe,IAAI,YAAY,sBAAsB,cAAc;AACzE,eAAU,iBAAiB,sBAAsB,mBAAmB;AACpE,eAAU,cAAc,aAAa;AACrC,SAAI,CAAC,aAAa,iBAChB,OAAM,4BAA4B,SAAS,MAAM,EAAE,QAAQ,MAAM,CAAC;AAEpE,eAAU,oBAAoB,sBAAsB,mBAAmB;AACvE,sBAAiB,OAAO,WAAW;OAClC,EAAE;;;IAGR;EAAC;EAAW;EAAkB;EAAoB;EAAW,CAAC;CACjE,MAAM,gBAAgBA,MAAM,aACzB,UAAU;AACT,MAAI,CAAC,QAAQ,CAAC,QAAS;AACvB,MAAI,WAAW,OAAQ;EACvB,MAAM,WAAW,MAAM,QAAQ,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,WAAW,CAAC,MAAM;EAClF,MAAM,iBAAiB,SAAS;AAChC,MAAI,YAAY,gBAAgB;GAC9B,MAAM,aAAa,MAAM;GACzB,MAAM,CAAC,OAAO,QAAQ,iBAAiB,WAAW;AAElD,OAAI,EAD8B,SAAS;QAErC,mBAAmB,WAAY,OAAM,gBAAgB;cAErD,CAAC,MAAM,YAAY,mBAAmB,MAAM;AAC9C,UAAM,gBAAgB;AACtB,QAAI,KAAM,OAAM,OAAO,EAAE,QAAQ,MAAM,CAAC;cAC/B,MAAM,YAAY,mBAAmB,OAAO;AACrD,UAAM,gBAAgB;AACtB,QAAI,KAAM,OAAM,MAAM,EAAE,QAAQ,MAAM,CAAC;;;IAK/C;EAAC;EAAM;EAAS,WAAW;EAAO,CACnC;AACD,QAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,UAAU;EAAI,GAAG;EAAY,KAAK;EAAc,WAAW;EAAe,CAAC;EACvH;AACF,WAAW,cAAc;AACzB,SAAS,WAAW,YAAY,EAAE,SAAS,UAAU,EAAE,EAAE;CACvD,MAAM,2BAA2B,SAAS;AAC1C,MAAK,MAAM,aAAa,YAAY;AAClC,QAAM,WAAW,EAAE,QAAQ,CAAC;AAC5B,MAAI,SAAS,kBAAkB,yBAA0B;;;AAG7D,SAAS,iBAAiB,WAAW;CACnC,MAAM,aAAa,sBAAsB,UAAU;AAGnD,QAAO,CAFO,YAAY,YAAY,UAAU,EACnC,YAAY,WAAW,SAAS,EAAE,UAAU,CACrC;;AAEtB,SAAS,sBAAsB,WAAW;CACxC,MAAM,QAAQ,EAAE;CAChB,MAAM,SAAS,SAAS,iBAAiB,WAAW,WAAW,cAAc,EAC3E,aAAa,SAAS;EACpB,MAAM,gBAAgB,KAAK,YAAY,WAAW,KAAK,SAAS;AAChE,MAAI,KAAK,YAAY,KAAK,UAAU,cAAe,QAAO,WAAW;AACrE,SAAO,KAAK,YAAY,IAAI,WAAW,gBAAgB,WAAW;IAErE,CAAC;AACF,QAAO,OAAO,UAAU,CAAE,OAAM,KAAK,OAAO,YAAY;AACxD,QAAO;;AAET,SAAS,YAAY,UAAU,WAAW;AACxC,MAAK,MAAM,WAAW,SACpB,KAAI,CAAC,SAAS,SAAS,EAAE,MAAM,WAAW,CAAC,CAAE,QAAO;;AAGxD,SAAS,SAAS,MAAM,EAAE,QAAQ;AAChC,KAAI,iBAAiB,KAAK,CAAC,eAAe,SAAU,QAAO;AAC3D,QAAO,MAAM;AACX,MAAI,SAAS,KAAK,KAAK,SAAS,KAAM,QAAO;AAC7C,MAAI,iBAAiB,KAAK,CAAC,YAAY,OAAQ,QAAO;AACtD,SAAO,KAAK;;AAEd,QAAO;;AAET,SAAS,kBAAkB,SAAS;AAClC,QAAO,mBAAmB,oBAAoB,YAAY;;AAE5D,SAAS,MAAM,SAAS,EAAE,SAAS,UAAU,EAAE,EAAE;AAC/C,KAAI,WAAW,QAAQ,OAAO;EAC5B,MAAM,2BAA2B,SAAS;AAC1C,UAAQ,MAAM,EAAE,eAAe,MAAM,CAAC;AACtC,MAAI,YAAY,4BAA4B,kBAAkB,QAAQ,IAAI,OACxE,SAAQ,QAAQ;;;AAGtB,IAAI,mBAAmB,wBAAwB;AAC/C,SAAS,yBAAyB;CAChC,IAAI,QAAQ,EAAE;AACd,QAAO;EACL,IAAI,YAAY;GACd,MAAM,mBAAmB,MAAM;AAC/B,OAAI,eAAe,iBACjB,mBAAkB,OAAO;AAE3B,WAAQ,YAAY,OAAO,WAAW;AACtC,SAAM,QAAQ,WAAW;;EAE3B,OAAO,YAAY;AACjB,WAAQ,YAAY,OAAO,WAAW;AACtC,SAAM,IAAI,QAAQ;;EAErB;;AAEH,SAAS,YAAY,OAAO,MAAM;CAChC,MAAM,eAAe,CAAC,GAAG,MAAM;CAC/B,MAAMC,UAAQ,aAAa,QAAQ,KAAK;AACxC,KAAIA,YAAU,GACZ,cAAa,OAAOA,SAAO,EAAE;AAE/B,QAAO;;AAET,SAAS,YAAY,OAAO;AAC1B,QAAO,MAAM,QAAQ,SAAS,KAAK,YAAY,IAAI;;AC5MrD,IAAI,mBAAmB,YAAY,WAAWC,MAAM,wBAAwB;ACC5E,IAAI,aAAaC,MAAM,UAAU,MAAM,CAAC,UAAU,YAAY,KAAK;AACnE,IAAI,QAAQ;AACZ,SAASC,QAAM,iBAAiB;CAC9B,MAAM,CAAC,IAAI,SAASD,MAAM,SAAS,YAAY,CAAC;AAChD,wBAAsB;AACpB,MAAI,CAAC,gBAAiB,QAAO,YAAY,WAAW,OAAO,QAAQ,CAAC;IACnE,CAAC,gBAAgB,CAAC;AACrB,QAAO,oBAAoB,KAAK,SAAS,OAAO;;ACLlD,IAAM,QAAQ;CAAC;CAAO;CAAS;CAAU;CAAO;AAGhD,IAAM,MAAM,KAAK;AACjB,IAAM,MAAM,KAAK;AACjB,IAAM,QAAQ,KAAK;AACnB,IAAM,QAAQ,KAAK;AACnB,IAAM,gBAAe,OAAM;CACzB,GAAG;CACH,GAAG;CACJ;AACD,IAAM,kBAAkB;CACtB,MAAM;CACN,OAAO;CACP,QAAQ;CACR,KAAK;CACN;AACD,IAAM,uBAAuB;CAC3B,OAAO;CACP,KAAK;CACN;AACD,SAAS,MAAM,OAAO,OAAO,KAAK;AAChC,QAAO,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC;;AAEpC,SAAS,SAAS,OAAO,OAAO;AAC9B,QAAO,OAAO,UAAU,aAAa,MAAM,MAAM,GAAG;;AAEtD,SAAS,QAAQ,WAAW;AAC1B,QAAO,UAAU,MAAM,IAAI,CAAC;;AAE9B,SAAS,aAAa,WAAW;AAC/B,QAAO,UAAU,MAAM,IAAI,CAAC;;AAE9B,SAAS,gBAAgB,MAAM;AAC7B,QAAO,SAAS,MAAM,MAAM;;AAE9B,SAAS,cAAc,MAAM;AAC3B,QAAO,SAAS,MAAM,WAAW;;AAEnC,IAAM,6BAA0B,IAAI,IAAI,CAAC,OAAO,SAAS,CAAC;AAC1D,SAAS,YAAY,WAAW;AAC9B,QAAO,WAAW,IAAI,QAAQ,UAAU,CAAC,GAAG,MAAM;;AAEpD,SAAS,iBAAiB,WAAW;AACnC,QAAO,gBAAgB,YAAY,UAAU,CAAC;;AAEhD,SAAS,kBAAkB,WAAW,OAAO,KAAK;AAChD,KAAI,QAAQ,KAAK,EACf,OAAM;CAER,MAAM,YAAY,aAAa,UAAU;CACzC,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,SAAS,cAAc,cAAc;CAC3C,IAAI,oBAAoB,kBAAkB,MAAM,eAAe,MAAM,QAAQ,WAAW,UAAU,SAAS,cAAc,UAAU,WAAW;AAC9I,KAAI,MAAM,UAAU,UAAU,MAAM,SAAS,QAC3C,qBAAoB,qBAAqB,kBAAkB;AAE7D,QAAO,CAAC,mBAAmB,qBAAqB,kBAAkB,CAAC;;AAErE,SAAS,sBAAsB,WAAW;CACxC,MAAM,oBAAoB,qBAAqB,UAAU;AACzD,QAAO;EAAC,8BAA8B,UAAU;EAAE;EAAmB,8BAA8B,kBAAkB;EAAC;;AAExH,SAAS,8BAA8B,WAAW;AAChD,QAAO,UAAU,QAAQ,eAAc,cAAa,qBAAqB,WAAW;;AAEtF,IAAM,cAAc,CAAC,QAAQ,QAAQ;AACrC,IAAM,cAAc,CAAC,SAAS,OAAO;AACrC,IAAM,cAAc,CAAC,OAAO,SAAS;AACrC,IAAM,cAAc,CAAC,UAAU,MAAM;AACrC,SAAS,YAAY,MAAM,SAAS,KAAK;AACvC,SAAQ,MAAR;EACE,KAAK;EACL,KAAK;AACH,OAAI,IAAK,QAAO,UAAU,cAAc;AACxC,UAAO,UAAU,cAAc;EACjC,KAAK;EACL,KAAK,QACH,QAAO,UAAU,cAAc;EACjC,QACE,QAAO,EAAE;;;AAGf,SAAS,0BAA0B,WAAW,eAAe,WAAW,KAAK;CAC3E,MAAM,YAAY,aAAa,UAAU;CACzC,IAAI,OAAO,YAAY,QAAQ,UAAU,EAAE,cAAc,SAAS,IAAI;AACtE,KAAI,WAAW;AACb,SAAO,KAAK,KAAI,SAAQ,OAAO,MAAM,UAAU;AAC/C,MAAI,cACF,QAAO,KAAK,OAAO,KAAK,IAAI,8BAA8B,CAAC;;AAG/D,QAAO;;AAET,SAAS,qBAAqB,WAAW;AACvC,QAAO,UAAU,QAAQ,2BAA0B,SAAQ,gBAAgB,MAAM;;AAEnF,SAAS,oBAAoB,SAAS;AACpC,QAAO;EACL,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,GAAG;EACJ;;AAEH,SAAS,iBAAiB,SAAS;AACjC,QAAO,OAAO,YAAY,WAAW,oBAAoB,QAAQ,GAAG;EAClE,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACP;;AAEH,SAAS,iBAAiB,MAAM;CAC9B,MAAM,EACJ,GACA,GACA,OACA,WACE;AACJ,QAAO;EACL;EACA;EACA,KAAK;EACL,MAAM;EACN,OAAO,IAAI;EACX,QAAQ,IAAI;EACZ;EACA;EACD;;ACpIH,SAAS,2BAA2B,MAAM,WAAW,KAAK;CACxD,IAAI,EACF,WACA,aACE;CACJ,MAAM,WAAW,YAAY,UAAU;CACvC,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,cAAc,cAAc,cAAc;CAChD,MAAM,OAAO,QAAQ,UAAU;CAC/B,MAAM,aAAa,aAAa;CAChC,MAAM,UAAU,UAAU,IAAI,UAAU,QAAQ,IAAI,SAAS,QAAQ;CACrE,MAAM,UAAU,UAAU,IAAI,UAAU,SAAS,IAAI,SAAS,SAAS;CACvE,MAAM,cAAc,UAAU,eAAe,IAAI,SAAS,eAAe;CACzE,IAAI;AACJ,SAAQ,MAAR;EACE,KAAK;AACH,YAAS;IACP,GAAG;IACH,GAAG,UAAU,IAAI,SAAS;IAC3B;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG;IACH,GAAG,UAAU,IAAI,UAAU;IAC5B;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG,UAAU,IAAI,UAAU;IAC3B,GAAG;IACJ;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG,UAAU,IAAI,SAAS;IAC1B,GAAG;IACJ;AACD;EACF,QACE,UAAS;GACP,GAAG,UAAU;GACb,GAAG,UAAU;GACd;;AAEL,SAAQ,aAAa,UAAU,EAA/B;EACE,KAAK;AACH,UAAO,kBAAkB,eAAe,OAAO,aAAa,KAAK;AACjE;EACF,KAAK;AACH,UAAO,kBAAkB,eAAe,OAAO,aAAa,KAAK;AACjE;;AAEJ,QAAO;;AAUT,IAAME,oBAAkB,OAAO,WAAW,UAAU,WAAW;CAC7D,MAAM,EACJ,YAAY,UACZ,WAAW,YACX,aAAa,EAAE,EACf,UAAA,eACE;CACJ,MAAM,kBAAkB,WAAW,OAAO,QAAQ;CAClD,MAAM,MAAM,OAAOC,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS;CAC7E,IAAI,QAAQ,MAAMA,WAAS,gBAAgB;EACzC;EACA;EACA;EACD,CAAC;CACF,IAAI,EACF,GACA,MACE,2BAA2B,OAAO,WAAW,IAAI;CACrD,IAAI,oBAAoB;CACxB,IAAI,iBAAiB,EAAE;CACvB,IAAI,aAAa;AACjB,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;EAC/C,MAAM,EACJ,MACA,OACE,gBAAgB;EACpB,MAAM,EACJ,GAAG,OACH,GAAG,OACH,MACA,UACE,MAAM,GAAG;GACX;GACA;GACA,kBAAkB;GAClB,WAAW;GACX;GACA;GACA;GACA,UAAA;GACA,UAAU;IACR;IACA;IACD;GACF,CAAC;AACF,MAAI,SAAS,OAAO,QAAQ;AAC5B,MAAI,SAAS,OAAO,QAAQ;AAC5B,mBAAiB;GACf,GAAG;IACF,OAAO;IACN,GAAG,eAAe;IAClB,GAAG;IACJ;GACF;AACD,MAAI,SAAS,cAAc,IAAI;AAC7B;AACA,OAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,MAAM,UACR,qBAAoB,MAAM;AAE5B,QAAI,MAAM,MACR,SAAQ,MAAM,UAAU,OAAO,MAAMA,WAAS,gBAAgB;KAC5D;KACA;KACA;KACD,CAAC,GAAG,MAAM;AAEb,KAAC,CACC,GACA,KACE,2BAA2B,OAAO,mBAAmB,IAAI;;AAE/D,OAAI;;;AAGR,QAAO;EACL;EACA;EACA,WAAW;EACX;EACA;EACD;;AAWH,eAAeC,iBAAe,OAAO,WAAS;CAC5C,IAAI;AACJ,KAAIC,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,GACA,GACA,UAAA,YACA,OACA,UACA,aACE;CACJ,MAAM,EACJ,WAAW,qBACX,eAAe,YACf,iBAAiB,YACjB,cAAc,OACd,UAAU,MACR,SAASA,WAAS,MAAM;CAC5B,MAAM,gBAAgB,iBAAiB,QAAQ;CAE/C,MAAM,UAAU,SAAS,cADN,mBAAmB,aAAa,cAAc,aACb;CACpD,MAAM,qBAAqB,iBAAiB,MAAMF,WAAS,gBAAgB;EACzE,WAAW,wBAAwB,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,QAAQ,MAAM,OAAO,wBAAwB,QAAQ,UAAU,QAAQ,kBAAmB,OAAOA,WAAS,sBAAsB,OAAO,KAAK,IAAIA,WAAS,mBAAmB,SAAS,SAAS;EACjS;EACA;EACA;EACD,CAAC,CAAC;CACH,MAAM,OAAO,mBAAmB,aAAa;EAC3C;EACA;EACA,OAAO,MAAM,SAAS;EACtB,QAAQ,MAAM,SAAS;EACxB,GAAG,MAAM;CACV,MAAM,eAAe,OAAOA,WAAS,mBAAmB,OAAO,KAAK,IAAIA,WAAS,gBAAgB,SAAS,SAAS;CACnH,MAAM,cAAe,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,aAAa,IAAM,OAAOA,WAAS,YAAY,OAAO,KAAK,IAAIA,WAAS,SAAS,aAAa,KAAM;EACvL,GAAG;EACH,GAAG;EACJ,GAAG;EACF,GAAG;EACH,GAAG;EACJ;CACD,MAAM,oBAAoB,iBAAiBA,WAAS,wDAAwD,MAAMA,WAAS,sDAAsD;EAC/K;EACA;EACA;EACA;EACD,CAAC,GAAG,KAAK;AACV,QAAO;EACL,MAAM,mBAAmB,MAAM,kBAAkB,MAAM,cAAc,OAAO,YAAY;EACxF,SAAS,kBAAkB,SAAS,mBAAmB,SAAS,cAAc,UAAU,YAAY;EACpG,OAAO,mBAAmB,OAAO,kBAAkB,OAAO,cAAc,QAAQ,YAAY;EAC5F,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,cAAc,SAAS,YAAY;EACjG;;AAQH,IAAMG,WAAQ,eAAY;CACxB,MAAM;CACN,SAAA;CACA,MAAM,GAAG,OAAO;EACd,MAAM,EACJ,GACA,GACA,WACA,OACA,UAAA,YACA,UACA,mBACE;EAEJ,MAAM,EACJ,SACA,UAAU,MACR,SAASD,WAAS,MAAM,IAAI,EAAE;AAClC,MAAI,WAAW,KACb,QAAO,EAAE;EAEX,MAAM,gBAAgB,iBAAiB,QAAQ;EAC/C,MAAM,SAAS;GACb;GACA;GACD;EACD,MAAM,OAAO,iBAAiB,UAAU;EACxC,MAAM,SAAS,cAAc,KAAK;EAClC,MAAM,kBAAkB,MAAMF,WAAS,cAAc,QAAQ;EAC7D,MAAM,UAAU,SAAS;EACzB,MAAM,UAAU,UAAU,QAAQ;EAClC,MAAM,UAAU,UAAU,WAAW;EACrC,MAAM,aAAa,UAAU,iBAAiB;EAC9C,MAAM,UAAU,MAAM,UAAU,UAAU,MAAM,UAAU,QAAQ,OAAO,QAAQ,MAAM,SAAS;EAChG,MAAM,YAAY,OAAO,QAAQ,MAAM,UAAU;EACjD,MAAM,oBAAoB,OAAOA,WAAS,mBAAmB,OAAO,KAAK,IAAIA,WAAS,gBAAgB,QAAQ;EAC9G,IAAI,aAAa,oBAAoB,kBAAkB,cAAc;AAGrE,MAAI,CAAC,cAAc,CAAE,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,kBAAkB,EACrG,cAAa,SAAS,SAAS,eAAe,MAAM,SAAS;EAE/D,MAAM,oBAAoB,UAAU,IAAI,YAAY;EAIpD,MAAM,yBAAyB,aAAa,IAAI,gBAAgB,UAAU,IAAI;EAC9E,MAAM,aAAa,IAAI,cAAc,UAAU,uBAAuB;EACtE,MAAM,aAAa,IAAI,cAAc,UAAU,uBAAuB;EAItE,MAAM,QAAQ;EACd,MAAMI,QAAM,aAAa,gBAAgB,UAAU;EACnD,MAAM,SAAS,aAAa,IAAI,gBAAgB,UAAU,IAAI;EAC9D,MAAMC,WAAS,MAAM,OAAO,QAAQD,MAAI;EAMxC,MAAM,kBAAkB,CAAC,eAAe,SAAS,aAAa,UAAU,IAAI,QAAQ,WAAWC,YAAU,MAAM,UAAU,UAAU,KAAK,SAAS,QAAQ,aAAa,cAAc,gBAAgB,UAAU,IAAI;EAClN,MAAM,kBAAkB,kBAAkB,SAAS,QAAQ,SAAS,QAAQ,SAASD,QAAM;AAC3F,SAAO;IACJ,OAAO,OAAO,QAAQ;GACvB,MAAM;KACH,OAAOC;IACR,cAAc,SAASA,WAAS;IAChC,GAAI,mBAAmB,EACrB,iBACD;IACF;GACD,OAAO;GACR;;CAEJ;AA+GD,IAAMC,SAAO,SAAU,WAAS;AAC9B,KAAIJ,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,WACA,gBACA,OACA,kBACA,UAAA,YACA,aACE;GACJ,MAAM,EACJ,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,MAC5B,oBAAoB,6BACpB,mBAAmB,WACnB,4BAA4B,QAC5B,gBAAgB,MAChB,GAAG,0BACD,SAASA,WAAS,MAAM;AAM5B,QAAK,wBAAwB,eAAe,UAAU,QAAQ,sBAAsB,gBAClF,QAAO,EAAE;GAEX,MAAM,OAAO,QAAQ,UAAU;GAC/B,MAAM,kBAAkB,YAAY,iBAAiB;GACrD,MAAM,kBAAkB,QAAQ,iBAAiB,KAAK;GACtD,MAAM,MAAM,OAAOF,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS;GACtF,MAAM,qBAAqB,gCAAgC,mBAAmB,CAAC,gBAAgB,CAAC,qBAAqB,iBAAiB,CAAC,GAAG,sBAAsB,iBAAiB;GACjL,MAAM,+BAA+B,8BAA8B;AACnE,OAAI,CAAC,+BAA+B,6BAClC,oBAAmB,KAAK,GAAG,0BAA0B,kBAAkB,eAAe,2BAA2B,IAAI,CAAC;GAExH,MAAMO,eAAa,CAAC,kBAAkB,GAAG,mBAAmB;GAC5D,MAAM,WAAW,MAAMN,iBAAe,OAAO,sBAAsB;GACnE,MAAM,YAAY,EAAE;GACpB,IAAI,kBAAkB,uBAAuB,eAAe,SAAS,OAAO,KAAK,IAAI,qBAAqB,cAAc,EAAE;AAC1H,OAAI,cACF,WAAU,KAAK,SAAS,MAAM;AAEhC,OAAI,gBAAgB;IAClB,MAAMO,UAAQ,kBAAkB,WAAW,OAAO,IAAI;AACtD,cAAU,KAAK,SAASA,QAAM,KAAK,SAASA,QAAM,IAAI;;AAExD,mBAAgB,CAAC,GAAG,eAAe;IACjC;IACA;IACD,CAAC;AAGF,OAAI,CAAC,UAAU,OAAM,WAAQC,UAAQ,EAAE,EAAE;IACvC,IAAI,uBAAuB;IAC3B,MAAM,eAAe,wBAAwB,eAAe,SAAS,OAAO,KAAK,IAAI,sBAAsB,UAAU,KAAK;IAC1H,MAAM,gBAAgBF,aAAW;AACjC,QAAI;SAEE,EAD4B,mBAAmB,cAAc,oBAAoB,YAAY,cAAc,GAAG,UAIlH,cAAc,OAAM,MAAK,YAAY,EAAE,UAAU,KAAK,kBAAkB,EAAE,UAAU,KAAK,IAAI,KAAK,CAEhG,QAAO;MACL,MAAM;OACJ,OAAO;OACP,WAAW;OACZ;MACD,OAAO,EACL,WAAW,eACZ;MACF;;IAML,IAAI,kBAAkB,wBAAwB,cAAc,QAAO,MAAK,EAAE,UAAU,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,KAAK,EAAE,UAAU,GAAG,CAAC,OAAO,OAAO,KAAK,IAAI,sBAAsB;AAG1L,QAAI,CAAC,eACH,SAAQ,kBAAR;KACE,KAAK,WACH;MACE,IAAI;MACJ,MAAMG,eAAa,yBAAyB,cAAc,QAAO,MAAK;AACpE,WAAI,8BAA8B;QAChC,MAAM,kBAAkB,YAAY,EAAE,UAAU;AAChD,eAAO,oBAAoB,mBAG3B,oBAAoB;;AAEtB,cAAO;QACP,CAAC,KAAI,MAAK,CAAC,EAAE,WAAW,EAAE,UAAU,QAAO,eAAYC,aAAW,EAAE,CAAC,QAAQ,KAAK,eAAa,MAAMA,YAAU,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,OAAO,KAAK,IAAI,uBAAuB;AAChM,UAAID,YACF,kBAAiBA;AAEnB;;KAEJ,KAAK;AACH,uBAAiB;AACjB;;AAGN,QAAI,cAAc,eAChB,QAAO,EACL,OAAO,EACL,WAAW,gBACZ,EACF;;AAGL,UAAO,EAAE;;EAEZ;;AAGH,SAAS,eAAe,UAAU,MAAM;AACtC,QAAO;EACL,KAAK,SAAS,MAAM,KAAK;EACzB,OAAO,SAAS,QAAQ,KAAK;EAC7B,QAAQ,SAAS,SAAS,KAAK;EAC/B,MAAM,SAAS,OAAO,KAAK;EAC5B;;AAEH,SAAS,sBAAsB,UAAU;AACvC,QAAO,MAAM,MAAK,SAAQ,SAAS,SAAS,EAAE;;AAOhD,IAAME,SAAO,SAAU,WAAS;AAC9B,KAAIV,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,MAAM,EACJ,UACE;GACJ,MAAM,EACJ,WAAW,mBACX,GAAG,0BACD,SAASA,WAAS,MAAM;AAC5B,WAAQ,UAAR;IACE,KAAK,mBACH;KAKE,MAAM,UAAU,eAJC,MAAMD,iBAAe,OAAO;MAC3C,GAAG;MACH,gBAAgB;MACjB,CAAC,EACuC,MAAM,UAAU;AACzD,YAAO,EACL,MAAM;MACJ,wBAAwB;MACxB,iBAAiB,sBAAsB,QAAQ;MAChD,EACF;;IAEL,KAAK,WACH;KAKE,MAAM,UAAU,eAJC,MAAMA,iBAAe,OAAO;MAC3C,GAAG;MACH,aAAa;MACd,CAAC,EACuC,MAAM,SAAS;AACxD,YAAO,EACL,MAAM;MACJ,gBAAgB;MAChB,SAAS,sBAAsB,QAAQ;MACxC,EACF;;IAEL,QAEI,QAAO,EAAE;;;EAIlB;;AAsIH,IAAM,8BAA2B,IAAI,IAAI,CAAC,QAAQ,MAAM,CAAC;AAKzD,eAAe,qBAAqB,OAAO,WAAS;CAClD,MAAM,EACJ,WACA,UAAA,YACA,aACE;CACJ,MAAM,MAAM,OAAOD,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS;CACtF,MAAM,OAAO,QAAQ,UAAU;CAC/B,MAAM,YAAY,aAAa,UAAU;CACzC,MAAM,aAAa,YAAY,UAAU,KAAK;CAC9C,MAAM,gBAAgB,YAAY,IAAI,KAAK,GAAG,KAAK;CACnD,MAAM,iBAAiB,OAAO,aAAa,KAAK;CAChD,MAAM,WAAW,SAASE,WAAS,MAAM;CAGzC,IAAI,EACF,UACA,WACA,kBACE,OAAO,aAAa,WAAW;EACjC,UAAU;EACV,WAAW;EACX,eAAe;EAChB,GAAG;EACF,UAAU,SAAS,YAAY;EAC/B,WAAW,SAAS,aAAa;EACjC,eAAe,SAAS;EACzB;AACD,KAAI,aAAa,OAAO,kBAAkB,SACxC,aAAY,cAAc,QAAQ,gBAAgB,KAAK;AAEzD,QAAO,aAAa;EAClB,GAAG,YAAY;EACf,GAAG,WAAW;EACf,GAAG;EACF,GAAG,WAAW;EACd,GAAG,YAAY;EAChB;;AAUH,IAAMG,WAAS,SAAU,WAAS;AAChC,KAAIH,cAAY,KAAK,EACnB,aAAU;AAEZ,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,GACA,GACA,WACA,mBACE;GACJ,MAAM,aAAa,MAAM,qBAAqB,OAAOA,UAAQ;AAI7D,OAAI,gBAAgB,wBAAwB,eAAe,WAAW,OAAO,KAAK,IAAI,sBAAsB,eAAe,wBAAwB,eAAe,UAAU,QAAQ,sBAAsB,gBACxM,QAAO,EAAE;AAEX,UAAO;IACL,GAAG,IAAI,WAAW;IAClB,GAAG,IAAI,WAAW;IAClB,MAAM;KACJ,GAAG;KACH;KACD;IACF;;EAEJ;;AAQH,IAAMW,UAAQ,SAAU,WAAS;AAC/B,KAAIX,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,MAAM,EACJ,GACA,GACA,cACE;GACJ,MAAM,EACJ,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,OAC5B,UAAU,EACR,KAAI,SAAQ;IACV,IAAI,EACF,GAAA,KACA,GAAA,QACE;AACJ,WAAO;KACL,GAAA;KACA,GAAA;KACD;MAEJ,EACD,GAAG,0BACD,SAASA,WAAS,MAAM;GAC5B,MAAM,SAAS;IACb;IACA;IACD;GACD,MAAM,WAAW,MAAMD,iBAAe,OAAO,sBAAsB;GACnE,MAAM,YAAY,YAAY,QAAQ,UAAU,CAAC;GACjD,MAAM,WAAW,gBAAgB,UAAU;GAC3C,IAAI,gBAAgB,OAAO;GAC3B,IAAI,iBAAiB,OAAO;AAC5B,OAAI,eAAe;IACjB,MAAM,UAAU,aAAa,MAAM,QAAQ;IAC3C,MAAM,UAAU,aAAa,MAAM,WAAW;IAC9C,MAAMa,QAAM,gBAAgB,SAAS;IACrC,MAAMV,QAAM,gBAAgB,SAAS;AACrC,oBAAgB,MAAMU,OAAK,eAAeV,MAAI;;AAEhD,OAAI,gBAAgB;IAClB,MAAM,UAAU,cAAc,MAAM,QAAQ;IAC5C,MAAM,UAAU,cAAc,MAAM,WAAW;IAC/C,MAAMU,QAAM,iBAAiB,SAAS;IACtC,MAAMV,QAAM,iBAAiB,SAAS;AACtC,qBAAiB,MAAMU,OAAK,gBAAgBV,MAAI;;GAElD,MAAM,gBAAgB,QAAQ,GAAG;IAC/B,GAAG;KACF,WAAW;KACX,YAAY;IACd,CAAC;AACF,UAAO;IACL,GAAG;IACH,MAAM;KACJ,GAAG,cAAc,IAAI;KACrB,GAAG,cAAc,IAAI;KACrB,SAAS;OACN,WAAW;OACX,YAAY;MACd;KACF;IACF;;EAEJ;;AAKH,IAAMW,eAAa,SAAU,WAAS;AACpC,KAAIb,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,SAAA;EACA,GAAG,OAAO;GACR,MAAM,EACJ,GACA,GACA,WACA,OACA,mBACE;GACJ,MAAM,EACJ,QAAA,WAAS,GACT,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,SAC1B,SAASA,WAAS,MAAM;GAC5B,MAAM,SAAS;IACb;IACA;IACD;GACD,MAAM,YAAY,YAAY,UAAU;GACxC,MAAM,WAAW,gBAAgB,UAAU;GAC3C,IAAI,gBAAgB,OAAO;GAC3B,IAAI,iBAAiB,OAAO;GAC5B,MAAM,YAAY,SAASG,UAAQ,MAAM;GACzC,MAAM,iBAAiB,OAAO,cAAc,WAAW;IACrD,UAAU;IACV,WAAW;IACZ,GAAG;IACF,UAAU;IACV,WAAW;IACX,GAAG;IACJ;AACD,OAAI,eAAe;IACjB,MAAM,MAAM,aAAa,MAAM,WAAW;IAC1C,MAAM,WAAW,MAAM,UAAU,YAAY,MAAM,SAAS,OAAO,eAAe;IAClF,MAAM,WAAW,MAAM,UAAU,YAAY,MAAM,UAAU,OAAO,eAAe;AACnF,QAAI,gBAAgB,SAClB,iBAAgB;aACP,gBAAgB,SACzB,iBAAgB;;AAGpB,OAAI,gBAAgB;IAClB,IAAI,uBAAuB;IAC3B,MAAM,MAAM,aAAa,MAAM,UAAU;IACzC,MAAM,eAAe,YAAY,IAAI,QAAQ,UAAU,CAAC;IACxD,MAAM,WAAW,MAAM,UAAU,aAAa,MAAM,SAAS,QAAQ,iBAAiB,wBAAwB,eAAe,WAAW,OAAO,KAAK,IAAI,sBAAsB,eAAe,IAAI,MAAM,eAAe,IAAI,eAAe;IACzO,MAAM,WAAW,MAAM,UAAU,aAAa,MAAM,UAAU,QAAQ,eAAe,MAAM,yBAAyB,eAAe,WAAW,OAAO,KAAK,IAAI,uBAAuB,eAAe,MAAM,eAAe,eAAe,YAAY;AACpP,QAAI,iBAAiB,SACnB,kBAAiB;aACR,iBAAiB,SAC1B,kBAAiB;;AAGrB,UAAO;KACJ,WAAW;KACX,YAAY;IACd;;EAEJ;;AASH,IAAMW,SAAO,SAAU,WAAS;AAC9B,KAAId,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,WACA,OACA,UAAA,YACA,aACE;GACJ,MAAM,EACJ,cAAc,IACd,GAAG,0BACD,SAASA,WAAS,MAAM;GAC5B,MAAM,WAAW,MAAMD,iBAAe,OAAO,sBAAsB;GACnE,MAAM,OAAO,QAAQ,UAAU;GAC/B,MAAM,YAAY,aAAa,UAAU;GACzC,MAAM,UAAU,YAAY,UAAU,KAAK;GAC3C,MAAM,EACJ,OACA,WACE,MAAM;GACV,IAAI;GACJ,IAAI;AACJ,OAAI,SAAS,SAAS,SAAS,UAAU;AACvC,iBAAa;AACb,gBAAY,eAAgB,OAAOD,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS,IAAK,UAAU,SAAS,SAAS;UAClI;AACL,gBAAY;AACZ,iBAAa,cAAc,QAAQ,QAAQ;;GAE7C,MAAM,wBAAwB,SAAS,SAAS,MAAM,SAAS;GAC/D,MAAM,uBAAuB,QAAQ,SAAS,OAAO,SAAS;GAC9D,MAAM,0BAA0B,IAAI,SAAS,SAAS,aAAa,sBAAsB;GACzF,MAAM,yBAAyB,IAAI,QAAQ,SAAS,YAAY,qBAAqB;GACrF,MAAM,UAAU,CAAC,MAAM,eAAe;GACtC,IAAI,kBAAkB;GACtB,IAAI,iBAAiB;AACrB,QAAK,wBAAwB,MAAM,eAAe,UAAU,QAAQ,sBAAsB,QAAQ,EAChG,kBAAiB;AAEnB,QAAK,yBAAyB,MAAM,eAAe,UAAU,QAAQ,uBAAuB,QAAQ,EAClG,mBAAkB;AAEpB,OAAI,WAAW,CAAC,WAAW;IACzB,MAAM,OAAO,IAAI,SAAS,MAAM,EAAE;IAClC,MAAM,OAAO,IAAI,SAAS,OAAO,EAAE;IACnC,MAAM,OAAO,IAAI,SAAS,KAAK,EAAE;IACjC,MAAM,OAAO,IAAI,SAAS,QAAQ,EAAE;AACpC,QAAI,QACF,kBAAiB,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO,IAAI,SAAS,MAAM,SAAS,MAAM;QAEzG,mBAAkB,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO,IAAI,SAAS,KAAK,SAAS,OAAO;;AAG/G,SAAM,MAAM;IACV,GAAG;IACH;IACA;IACD,CAAC;GACF,MAAM,iBAAiB,MAAMA,WAAS,cAAc,SAAS,SAAS;AACtE,OAAI,UAAU,eAAe,SAAS,WAAW,eAAe,OAC9D,QAAO,EACL,OAAO,EACL,OAAO,MACR,EACF;AAEH,UAAO,EAAE;;EAEZ;;ACrhCH,SAAS,YAAY;AACnB,QAAO,OAAO,WAAW;;AAE3B,SAAS,YAAY,MAAM;AACzB,KAAI,OAAO,KAAK,CACd,SAAQ,KAAK,YAAY,IAAI,aAAa;AAK5C,QAAO;;AAET,SAAS,UAAU,MAAM;CACvB,IAAI;AACJ,SAAQ,QAAQ,SAAS,sBAAsB,KAAK,kBAAkB,OAAO,KAAK,IAAI,oBAAoB,gBAAgB;;AAE5H,SAAS,mBAAmB,MAAM;CAChC,IAAI;AACJ,SAAQ,QAAQ,OAAO,KAAK,GAAG,KAAK,gBAAgB,KAAK,aAAa,OAAO,aAAa,OAAO,KAAK,IAAI,KAAK;;AAEjH,SAAS,OAAO,OAAO;AACrB,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,QAAQ,iBAAiB,UAAU,MAAM,CAAC;;AAEpE,SAAS,UAAU,OAAO;AACxB,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,WAAW,iBAAiB,UAAU,MAAM,CAAC;;AAEvE,SAAS,cAAc,OAAO;AAC5B,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,eAAe,iBAAiB,UAAU,MAAM,CAAC;;AAE3E,SAAS,aAAa,OAAO;AAC3B,KAAI,CAAC,WAAW,IAAI,OAAO,eAAe,YACxC,QAAO;AAET,QAAO,iBAAiB,cAAc,iBAAiB,UAAU,MAAM,CAAC;;AAE1E,IAAM,+CAA4C,IAAI,IAAI,CAAC,UAAU,WAAW,CAAC;AACjF,SAAS,kBAAkB,SAAS;CAClC,MAAM,EACJ,UACA,WACA,WACA,YACEiB,mBAAiB,QAAQ;AAC7B,QAAO,kCAAkC,KAAK,WAAW,YAAY,UAAU,IAAI,CAAC,6BAA6B,IAAI,QAAQ;;AAE/H,IAAM,gCAA6B,IAAI,IAAI;CAAC;CAAS;CAAM;CAAK,CAAC;AACjE,SAAS,eAAe,SAAS;AAC/B,QAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;;AAEhD,IAAM,oBAAoB,CAAC,iBAAiB,SAAS;AACrD,SAAS,WAAW,SAAS;AAC3B,QAAO,kBAAkB,MAAK,aAAY;AACxC,MAAI;AACF,UAAO,QAAQ,QAAQ,SAAS;WACzBC,MAAI;AACX,UAAO;;GAET;;AAEJ,IAAM,sBAAsB;CAAC;CAAa;CAAa;CAAS;CAAU;CAAc;AACxF,IAAM,mBAAmB;CAAC;CAAa;CAAa;CAAS;CAAU;CAAe;CAAS;AAC/F,IAAM,gBAAgB;CAAC;CAAS;CAAU;CAAU;CAAU;AAC9D,SAAS,kBAAkB,cAAc;CACvC,MAAM,SAAS,UAAU;CACzB,MAAM,MAAM,UAAU,aAAa,GAAGD,mBAAiB,aAAa,GAAG;AAIvE,QAAO,oBAAoB,MAAK,UAAS,IAAI,SAAS,IAAI,WAAW,SAAS,MAAM,KAAK,IAAI,gBAAgB,IAAI,kBAAkB,WAAW,UAAU,CAAC,WAAW,IAAI,iBAAiB,IAAI,mBAAmB,SAAS,UAAU,CAAC,WAAW,IAAI,SAAS,IAAI,WAAW,SAAS,UAAU,iBAAiB,MAAK,WAAU,IAAI,cAAc,IAAI,SAAS,MAAM,CAAC,IAAI,cAAc,MAAK,WAAU,IAAI,WAAW,IAAI,SAAS,MAAM,CAAC;;AAE1a,SAAS,mBAAmB,SAAS;CACnC,IAAI,cAAc,cAAc,QAAQ;AACxC,QAAO,cAAc,YAAY,IAAI,CAAC,sBAAsB,YAAY,EAAE;AACxE,MAAI,kBAAkB,YAAY,CAChC,QAAO;WACE,WAAW,YAAY,CAChC,QAAO;AAET,gBAAc,cAAc,YAAY;;AAE1C,QAAO;;AAET,SAAS,WAAW;AAClB,KAAI,OAAO,QAAQ,eAAe,CAAC,IAAI,SAAU,QAAO;AACxD,QAAO,IAAI,SAAS,2BAA2B,OAAO;;AAExD,IAAM,2CAAwC,IAAI,IAAI;CAAC;CAAQ;CAAQ;CAAY,CAAC;AACpF,SAAS,sBAAsB,MAAM;AACnC,QAAO,yBAAyB,IAAI,YAAY,KAAK,CAAC;;AAExD,SAASA,mBAAiB,SAAS;AACjC,QAAO,UAAU,QAAQ,CAAC,iBAAiB,QAAQ;;AAErD,SAAS,cAAc,SAAS;AAC9B,KAAI,UAAU,QAAQ,CACpB,QAAO;EACL,YAAY,QAAQ;EACpB,WAAW,QAAQ;EACpB;AAEH,QAAO;EACL,YAAY,QAAQ;EACpB,WAAW,QAAQ;EACpB;;AAEH,SAAS,cAAc,MAAM;AAC3B,KAAI,YAAY,KAAK,KAAK,OACxB,QAAO;CAET,MAAM,SAEN,KAAK,gBAEL,KAAK,cAEL,aAAa,KAAK,IAAI,KAAK,QAE3B,mBAAmB,KAAK;AACxB,QAAO,aAAa,OAAO,GAAG,OAAO,OAAO;;AAE9C,SAAS,2BAA2B,MAAM;CACxC,MAAM,aAAa,cAAc,KAAK;AACtC,KAAI,sBAAsB,WAAW,CACnC,QAAO,KAAK,gBAAgB,KAAK,cAAc,OAAO,KAAK;AAE7D,KAAI,cAAc,WAAW,IAAI,kBAAkB,WAAW,CAC5D,QAAO;AAET,QAAO,2BAA2B,WAAW;;AAE/C,SAAS,qBAAqB,MAAM,MAAM,iBAAiB;CACzD,IAAI;AACJ,KAAI,SAAS,KAAK,EAChB,QAAO,EAAE;AAEX,KAAI,oBAAoB,KAAK,EAC3B,mBAAkB;CAEpB,MAAM,qBAAqB,2BAA2B,KAAK;CAC3D,MAAM,SAAS,yBAAyB,uBAAuB,KAAK,kBAAkB,OAAO,KAAK,IAAI,qBAAqB;CAC3H,MAAM,MAAM,UAAU,mBAAmB;AACzC,KAAI,QAAQ;EACV,MAAM,eAAe,gBAAgB,IAAI;AACzC,SAAO,KAAK,OAAO,KAAK,IAAI,kBAAkB,EAAE,EAAE,kBAAkB,mBAAmB,GAAG,qBAAqB,EAAE,EAAE,gBAAgB,kBAAkB,qBAAqB,aAAa,GAAG,EAAE,CAAC;;AAE/L,QAAO,KAAK,OAAO,oBAAoB,qBAAqB,oBAAoB,EAAE,EAAE,gBAAgB,CAAC;;AAEvG,SAAS,gBAAgB,KAAK;AAC5B,QAAO,IAAI,UAAU,OAAO,eAAe,IAAI,OAAO,GAAG,IAAI,eAAe;;ACxJ9E,SAAS,iBAAiB,SAAS;CACjC,MAAM,MAAM,mBAAmB,QAAQ;CAGvC,IAAI,QAAQ,WAAW,IAAI,MAAM,IAAI;CACrC,IAAI,SAAS,WAAW,IAAI,OAAO,IAAI;CACvC,MAAM,YAAY,cAAc,QAAQ;CACxC,MAAM,cAAc,YAAY,QAAQ,cAAc;CACtD,MAAM,eAAe,YAAY,QAAQ,eAAe;CACxD,MAAM,iBAAiB,MAAM,MAAM,KAAK,eAAe,MAAM,OAAO,KAAK;AACzE,KAAI,gBAAgB;AAClB,UAAQ;AACR,WAAS;;AAEX,QAAO;EACL;EACA;EACA,GAAG;EACJ;;AAGH,SAAS,cAAc,SAAS;AAC9B,QAAO,CAAC,UAAU,QAAQ,GAAG,QAAQ,iBAAiB;;AAGxD,SAAS,SAAS,SAAS;CACzB,MAAM,aAAa,cAAc,QAAQ;AACzC,KAAI,CAAC,cAAc,WAAW,CAC5B,QAAO,aAAa,EAAE;CAExB,MAAM,OAAO,WAAW,uBAAuB;CAC/C,MAAM,EACJ,OACA,QACA,GAAA,QACE,iBAAiB,WAAW;CAChC,IAAI,KAAKE,MAAI,MAAM,KAAK,MAAM,GAAG,KAAK,SAAS;CAC/C,IAAI,KAAKA,MAAI,MAAM,KAAK,OAAO,GAAG,KAAK,UAAU;AAIjD,KAAI,CAAC,KAAK,CAAC,OAAO,SAAS,EAAE,CAC3B,KAAI;AAEN,KAAI,CAAC,KAAK,CAAC,OAAO,SAAS,EAAE,CAC3B,KAAI;AAEN,QAAO;EACL;EACA;EACD;;AAGH,IAAM,YAAyB,6BAAa,EAAE;AAC9C,SAAS,iBAAiB,SAAS;CACjC,MAAM,MAAM,UAAU,QAAQ;AAC9B,KAAI,CAAC,UAAU,IAAI,CAAC,IAAI,eACtB,QAAO;AAET,QAAO;EACL,GAAG,IAAI,eAAe;EACtB,GAAG,IAAI,eAAe;EACvB;;AAEH,SAAS,uBAAuB,SAAS,SAAS,sBAAsB;AACtE,KAAI,YAAY,KAAK,EACnB,WAAU;AAEZ,KAAI,CAAC,wBAAwB,WAAW,yBAAyB,UAAU,QAAQ,CACjF,QAAO;AAET,QAAO;;AAGT,SAAS,sBAAsB,SAAS,cAAc,iBAAiB,cAAc;AACnF,KAAI,iBAAiB,KAAK,EACxB,gBAAe;AAEjB,KAAI,oBAAoB,KAAK,EAC3B,mBAAkB;CAEpB,MAAM,aAAa,QAAQ,uBAAuB;CAClD,MAAM,aAAa,cAAc,QAAQ;CACzC,IAAI,QAAQ,aAAa,EAAE;AAC3B,KAAI,aACF,KAAI;MACE,UAAU,aAAa,CACzB,SAAQ,SAAS,aAAa;OAGhC,SAAQ,SAAS,QAAQ;CAG7B,MAAM,gBAAgB,uBAAuB,YAAY,iBAAiB,aAAa,GAAG,iBAAiB,WAAW,GAAG,aAAa,EAAE;CACxI,IAAI,KAAK,WAAW,OAAO,cAAc,KAAK,MAAM;CACpD,IAAI,KAAK,WAAW,MAAM,cAAc,KAAK,MAAM;CACnD,IAAI,QAAQ,WAAW,QAAQ,MAAM;CACrC,IAAI,SAAS,WAAW,SAAS,MAAM;AACvC,KAAI,YAAY;EACd,MAAM,MAAM,UAAU,WAAW;EACjC,MAAM,YAAY,gBAAgB,UAAU,aAAa,GAAG,UAAU,aAAa,GAAG;EACtF,IAAI,aAAa;EACjB,IAAI,gBAAgB,gBAAgB,WAAW;AAC/C,SAAO,iBAAiB,gBAAgB,cAAc,YAAY;GAChE,MAAM,cAAc,SAAS,cAAc;GAC3C,MAAM,aAAa,cAAc,uBAAuB;GACxD,MAAM,MAAM,mBAAmB,cAAc;GAC7C,MAAM,OAAO,WAAW,QAAQ,cAAc,aAAa,WAAW,IAAI,YAAY,IAAI,YAAY;GACtG,MAAM,MAAM,WAAW,OAAO,cAAc,YAAY,WAAW,IAAI,WAAW,IAAI,YAAY;AAClG,QAAK,YAAY;AACjB,QAAK,YAAY;AACjB,YAAS,YAAY;AACrB,aAAU,YAAY;AACtB,QAAK;AACL,QAAK;AACL,gBAAa,UAAU,cAAc;AACrC,mBAAgB,gBAAgB,WAAW;;;AAG/C,QAAO,iBAAiB;EACtB;EACA;EACA;EACA;EACD,CAAC;;AAKJ,SAAS,oBAAoB,SAAS,MAAM;CAC1C,MAAM,aAAa,cAAc,QAAQ,CAAC;AAC1C,KAAI,CAAC,KACH,QAAO,sBAAsB,mBAAmB,QAAQ,CAAC,CAAC,OAAO;AAEnE,QAAO,KAAK,OAAO;;AAGrB,SAAS,cAAc,iBAAiB,QAAQ;CAC9C,MAAM,WAAW,gBAAgB,uBAAuB;AAGxD,QAAO;EACL,GAHQ,SAAS,OAAO,OAAO,aAAa,oBAAoB,iBAAiB,SAAS;EAI1F,GAHQ,SAAS,MAAM,OAAO;EAI/B;;AAGH,SAAS,sDAAsD,MAAM;CACnE,IAAI,EACF,UACA,MACA,cACA,aACE;CACJ,MAAM,UAAU,aAAa;CAC7B,MAAM,kBAAkB,mBAAmB,aAAa;CACxD,MAAM,WAAW,WAAW,WAAW,SAAS,SAAS,GAAG;AAC5D,KAAI,iBAAiB,mBAAmB,YAAY,QAClD,QAAO;CAET,IAAI,SAAS;EACX,YAAY;EACZ,WAAW;EACZ;CACD,IAAI,QAAQ,aAAa,EAAE;CAC3B,MAAM,UAAU,aAAa,EAAE;CAC/B,MAAM,0BAA0B,cAAc,aAAa;AAC3D,KAAI,2BAA2B,CAAC,2BAA2B,CAAC,SAAS;AACnE,MAAI,YAAY,aAAa,KAAK,UAAU,kBAAkB,gBAAgB,CAC5E,UAAS,cAAc,aAAa;AAEtC,MAAI,cAAc,aAAa,EAAE;GAC/B,MAAM,aAAa,sBAAsB,aAAa;AACtD,WAAQ,SAAS,aAAa;AAC9B,WAAQ,IAAI,WAAW,IAAI,aAAa;AACxC,WAAQ,IAAI,WAAW,IAAI,aAAa;;;CAG5C,MAAM,aAAa,mBAAmB,CAAC,2BAA2B,CAAC,UAAU,cAAc,iBAAiB,OAAO,GAAG,aAAa,EAAE;AACrI,QAAO;EACL,OAAO,KAAK,QAAQ,MAAM;EAC1B,QAAQ,KAAK,SAAS,MAAM;EAC5B,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,aAAa,MAAM,IAAI,QAAQ,IAAI,WAAW;EAC3E,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,YAAY,MAAM,IAAI,QAAQ,IAAI,WAAW;EAC3E;;AAGH,SAAS,eAAe,SAAS;AAC/B,QAAO,MAAM,KAAK,QAAQ,gBAAgB,CAAC;;AAK7C,SAAS,gBAAgB,SAAS;CAChC,MAAM,OAAO,mBAAmB,QAAQ;CACxC,MAAM,SAAS,cAAc,QAAQ;CACrC,MAAM,OAAO,QAAQ,cAAc;CACnC,MAAM,QAAQ,IAAI,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,YAAY;CACzF,MAAM,SAAS,IAAI,KAAK,cAAc,KAAK,cAAc,KAAK,cAAc,KAAK,aAAa;CAC9F,IAAI,IAAI,CAAC,OAAO,aAAa,oBAAoB,QAAQ;CACzD,MAAM,IAAI,CAAC,OAAO;AAClB,KAAI,mBAAmB,KAAK,CAAC,cAAc,MACzC,MAAK,IAAI,KAAK,aAAa,KAAK,YAAY,GAAG;AAEjD,QAAO;EACL;EACA;EACA;EACA;EACD;;AAMH,IAAM,gBAAgB;AACtB,SAAS,gBAAgB,SAAS,UAAU;CAC1C,MAAM,MAAM,UAAU,QAAQ;CAC9B,MAAM,OAAO,mBAAmB,QAAQ;CACxC,MAAM,iBAAiB,IAAI;CAC3B,IAAI,QAAQ,KAAK;CACjB,IAAI,SAAS,KAAK;CAClB,IAAI,IAAI;CACR,IAAI,IAAI;AACR,KAAI,gBAAgB;AAClB,UAAQ,eAAe;AACvB,WAAS,eAAe;EACxB,MAAM,sBAAsB,UAAU;AACtC,MAAI,CAAC,uBAAuB,uBAAuB,aAAa,SAAS;AACvE,OAAI,eAAe;AACnB,OAAI,eAAe;;;CAGvB,MAAM,mBAAmB,oBAAoB,KAAK;AAIlD,KAAI,oBAAoB,GAAG;EACzB,MAAM,MAAM,KAAK;EACjB,MAAM,OAAO,IAAI;EACjB,MAAM,aAAa,iBAAiB,KAAK;EACzC,MAAM,mBAAmB,IAAI,eAAe,eAAe,WAAW,WAAW,WAAW,GAAG,WAAW,WAAW,YAAY,IAAI,IAAI;EACzI,MAAM,+BAA+B,KAAK,IAAI,KAAK,cAAc,KAAK,cAAc,iBAAiB;AACrG,MAAI,gCAAgC,cAClC,UAAS;YAEF,oBAAoB,cAG7B,UAAS;AAEX,QAAO;EACL;EACA;EACA;EACA;EACD;;AAGH,IAAM,kCAA+B,IAAI,IAAI,CAAC,YAAY,QAAQ,CAAC;AAEnE,SAAS,2BAA2B,SAAS,UAAU;CACrD,MAAM,aAAa,sBAAsB,SAAS,MAAM,aAAa,QAAQ;CAC7E,MAAM,MAAM,WAAW,MAAM,QAAQ;CACrC,MAAM,OAAO,WAAW,OAAO,QAAQ;CACvC,MAAM,QAAQ,cAAc,QAAQ,GAAG,SAAS,QAAQ,GAAG,aAAa,EAAE;AAK1E,QAAO;EACL,OALY,QAAQ,cAAc,MAAM;EAMxC,QALa,QAAQ,eAAe,MAAM;EAM1C,GALQ,OAAO,MAAM;EAMrB,GALQ,MAAM,MAAM;EAMrB;;AAEH,SAAS,kCAAkC,SAAS,kBAAkB,UAAU;CAC9E,IAAI;AACJ,KAAI,qBAAqB,WACvB,QAAO,gBAAgB,SAAS,SAAS;UAChC,qBAAqB,WAC9B,QAAO,gBAAgB,mBAAmB,QAAQ,CAAC;UAC1C,UAAU,iBAAiB,CACpC,QAAO,2BAA2B,kBAAkB,SAAS;MACxD;EACL,MAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,SAAO;GACL,GAAG,iBAAiB,IAAI,cAAc;GACtC,GAAG,iBAAiB,IAAI,cAAc;GACtC,OAAO,iBAAiB;GACxB,QAAQ,iBAAiB;GAC1B;;AAEH,QAAO,iBAAiB,KAAK;;AAE/B,SAAS,yBAAyB,SAAS,UAAU;CACnD,MAAM,aAAa,cAAc,QAAQ;AACzC,KAAI,eAAe,YAAY,CAAC,UAAU,WAAW,IAAI,sBAAsB,WAAW,CACxF,QAAO;AAET,QAAO,mBAAmB,WAAW,CAAC,aAAa,WAAW,yBAAyB,YAAY,SAAS;;AAM9G,SAAS,4BAA4B,SAAS,OAAO;CACnD,MAAM,eAAe,MAAM,IAAI,QAAQ;AACvC,KAAI,aACF,QAAO;CAET,IAAI,SAAS,qBAAqB,SAAS,EAAE,EAAE,MAAM,CAAC,QAAO,OAAM,UAAU,GAAG,IAAI,YAAY,GAAG,KAAK,OAAO;CAC/G,IAAI,sCAAsC;CAC1C,MAAM,iBAAiB,mBAAmB,QAAQ,CAAC,aAAa;CAChE,IAAI,cAAc,iBAAiB,cAAc,QAAQ,GAAG;AAG5D,QAAO,UAAU,YAAY,IAAI,CAAC,sBAAsB,YAAY,EAAE;EACpE,MAAM,gBAAgB,mBAAmB,YAAY;EACrD,MAAM,0BAA0B,kBAAkB,YAAY;AAC9D,MAAI,CAAC,2BAA2B,cAAc,aAAa,QACzD,uCAAsC;AAGxC,MAD8B,iBAAiB,CAAC,2BAA2B,CAAC,sCAAsC,CAAC,2BAA2B,cAAc,aAAa,YAAY,CAAC,CAAC,uCAAuC,gBAAgB,IAAI,oCAAoC,SAAS,IAAI,kBAAkB,YAAY,IAAI,CAAC,2BAA2B,yBAAyB,SAAS,YAAY,CAG7Y,UAAS,OAAO,QAAO,aAAY,aAAa,YAAY;MAG5D,uCAAsC;AAExC,gBAAc,cAAc,YAAY;;AAE1C,OAAM,IAAI,SAAS,OAAO;AAC1B,QAAO;;AAKT,SAAS,gBAAgB,MAAM;CAC7B,IAAI,EACF,SACA,UACA,cACA,aACE;CAEJ,MAAM,oBAAoB,CAAC,GADM,aAAa,sBAAsB,WAAW,QAAQ,GAAG,EAAE,GAAG,4BAA4B,SAAS,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,SAAS,EAC1G,aAAa;CACrE,MAAM,wBAAwB,kBAAkB;CAChD,MAAM,eAAe,kBAAkB,QAAQ,SAAS,qBAAqB;EAC3E,MAAM,OAAO,kCAAkC,SAAS,kBAAkB,SAAS;AACnF,UAAQ,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI;AACxC,UAAQ,QAAQ,IAAI,KAAK,OAAO,QAAQ,MAAM;AAC9C,UAAQ,SAAS,IAAI,KAAK,QAAQ,QAAQ,OAAO;AACjD,UAAQ,OAAO,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC3C,SAAO;IACN,kCAAkC,SAAS,uBAAuB,SAAS,CAAC;AAC/E,QAAO;EACL,OAAO,aAAa,QAAQ,aAAa;EACzC,QAAQ,aAAa,SAAS,aAAa;EAC3C,GAAG,aAAa;EAChB,GAAG,aAAa;EACjB;;AAGH,SAAS,cAAc,SAAS;CAC9B,MAAM,EACJ,OACA,WACE,iBAAiB,QAAQ;AAC7B,QAAO;EACL;EACA;EACD;;AAGH,SAAS,8BAA8B,SAAS,cAAc,UAAU;CACtE,MAAM,0BAA0B,cAAc,aAAa;CAC3D,MAAM,kBAAkB,mBAAmB,aAAa;CACxD,MAAM,UAAU,aAAa;CAC7B,MAAM,OAAO,sBAAsB,SAAS,MAAM,SAAS,aAAa;CACxE,IAAI,SAAS;EACX,YAAY;EACZ,WAAW;EACZ;CACD,MAAM,UAAU,aAAa,EAAE;CAI/B,SAAS,4BAA4B;AACnC,UAAQ,IAAI,oBAAoB,gBAAgB;;AAElD,KAAI,2BAA2B,CAAC,2BAA2B,CAAC,SAAS;AACnE,MAAI,YAAY,aAAa,KAAK,UAAU,kBAAkB,gBAAgB,CAC5E,UAAS,cAAc,aAAa;AAEtC,MAAI,yBAAyB;GAC3B,MAAM,aAAa,sBAAsB,cAAc,MAAM,SAAS,aAAa;AACnF,WAAQ,IAAI,WAAW,IAAI,aAAa;AACxC,WAAQ,IAAI,WAAW,IAAI,aAAa;aAC/B,gBACT,4BAA2B;;AAG/B,KAAI,WAAW,CAAC,2BAA2B,gBACzC,4BAA2B;CAE7B,MAAM,aAAa,mBAAmB,CAAC,2BAA2B,CAAC,UAAU,cAAc,iBAAiB,OAAO,GAAG,aAAa,EAAE;AAGrI,QAAO;EACL,GAHQ,KAAK,OAAO,OAAO,aAAa,QAAQ,IAAI,WAAW;EAI/D,GAHQ,KAAK,MAAM,OAAO,YAAY,QAAQ,IAAI,WAAW;EAI7D,OAAO,KAAK;EACZ,QAAQ,KAAK;EACd;;AAGH,SAAS,mBAAmB,SAAS;AACnC,QAAO,mBAAmB,QAAQ,CAAC,aAAa;;AAGlD,SAAS,oBAAoB,SAAS,UAAU;AAC9C,KAAI,CAAC,cAAc,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,aAAa,QACtE,QAAO;AAET,KAAI,SACF,QAAO,SAAS,QAAQ;CAE1B,IAAI,kBAAkB,QAAQ;AAM9B,KAAI,mBAAmB,QAAQ,KAAK,gBAClC,mBAAkB,gBAAgB,cAAc;AAElD,QAAO;;AAKT,SAAS,gBAAgB,SAAS,UAAU;CAC1C,MAAM,MAAM,UAAU,QAAQ;AAC9B,KAAI,WAAW,QAAQ,CACrB,QAAO;AAET,KAAI,CAAC,cAAc,QAAQ,EAAE;EAC3B,IAAI,kBAAkB,cAAc,QAAQ;AAC5C,SAAO,mBAAmB,CAAC,sBAAsB,gBAAgB,EAAE;AACjE,OAAI,UAAU,gBAAgB,IAAI,CAAC,mBAAmB,gBAAgB,CACpE,QAAO;AAET,qBAAkB,cAAc,gBAAgB;;AAElD,SAAO;;CAET,IAAI,eAAe,oBAAoB,SAAS,SAAS;AACzD,QAAO,gBAAgB,eAAe,aAAa,IAAI,mBAAmB,aAAa,CACrF,gBAAe,oBAAoB,cAAc,SAAS;AAE5D,KAAI,gBAAgB,sBAAsB,aAAa,IAAI,mBAAmB,aAAa,IAAI,CAAC,kBAAkB,aAAa,CAC7H,QAAO;AAET,QAAO,gBAAgB,mBAAmB,QAAQ,IAAI;;AAGxD,IAAM,kBAAkB,eAAgB,MAAM;CAC5C,MAAM,oBAAoB,KAAK,mBAAmB;CAClD,MAAM,kBAAkB,KAAK;CAC7B,MAAM,qBAAqB,MAAM,gBAAgB,KAAK,SAAS;AAC/D,QAAO;EACL,WAAW,8BAA8B,KAAK,WAAW,MAAM,kBAAkB,KAAK,SAAS,EAAE,KAAK,SAAS;EAC/G,UAAU;GACR,GAAG;GACH,GAAG;GACH,OAAO,mBAAmB;GAC1B,QAAQ,mBAAmB;GAC5B;EACF;;AAGH,SAAS,MAAM,SAAS;AACtB,QAAO,mBAAmB,QAAQ,CAAC,cAAc;;AAGnD,IAAM,WAAW;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAS,cAAc,GAAG,GAAG;AAC3B,QAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;;AAI7E,SAAS,YAAY,SAAS,QAAQ;CACpC,IAAI,KAAK;CACT,IAAI;CACJ,MAAM,OAAO,mBAAmB,QAAQ;CACxC,SAAS,UAAU;EACjB,IAAI;AACJ,eAAa,UAAU;AACvB,GAAC,MAAM,OAAO,QAAQ,IAAI,YAAY;AACtC,OAAK;;CAEP,SAAS,QAAQ,MAAM,WAAW;AAChC,MAAI,SAAS,KAAK,EAChB,QAAO;AAET,MAAI,cAAc,KAAK,EACrB,aAAY;AAEd,WAAS;EACT,MAAM,2BAA2B,QAAQ,uBAAuB;EAChE,MAAM,EACJ,MACA,KACA,OACA,WACE;AACJ,MAAI,CAAC,KACH,SAAQ;AAEV,MAAI,CAAC,SAAS,CAAC,OACb;EAEF,MAAM,WAAW,MAAM,IAAI;EAC3B,MAAM,aAAa,MAAM,KAAK,eAAe,OAAO,OAAO;EAC3D,MAAM,cAAc,MAAM,KAAK,gBAAgB,MAAM,QAAQ;EAC7D,MAAM,YAAY,MAAM,KAAK;EAE7B,MAAMC,YAAU;GACd,YAFiB,CAAC,WAAW,QAAQ,CAAC,aAAa,QAAQ,CAAC,cAAc,QAAQ,CAAC,YAAY;GAG/F,WAAW,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI;GACzC;EACD,IAAI,gBAAgB;EACpB,SAAS,cAAc,SAAS;GAC9B,MAAM,QAAQ,QAAQ,GAAG;AACzB,OAAI,UAAU,WAAW;AACvB,QAAI,CAAC,cACH,QAAO,SAAS;AAElB,QAAI,CAAC,MAGH,aAAY,iBAAiB;AAC3B,aAAQ,OAAO,KAAK;OACnB,IAAK;QAER,SAAQ,OAAO,MAAM;;AAGzB,OAAI,UAAU,KAAK,CAAC,cAAc,0BAA0B,QAAQ,uBAAuB,CAAC,CAQ1F,UAAS;AAEX,mBAAgB;;AAKlB,MAAI;AACF,QAAK,IAAI,qBAAqB,eAAe;IAC3C,GAAGA;IAEH,MAAM,KAAK;IACZ,CAAC;WACKC,MAAI;AACX,QAAK,IAAI,qBAAqB,eAAeD,UAAQ;;AAEvD,KAAG,QAAQ,QAAQ;;AAErB,SAAQ,KAAK;AACb,QAAO;;AAWT,SAAS,WAAW,WAAW,UAAU,QAAQ,WAAS;AACxD,KAAIA,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,iBAAiB,MACjB,iBAAiB,MACjB,gBAAgB,OAAO,mBAAmB,YAC1C,cAAc,OAAO,yBAAyB,YAC9C,iBAAiB,UACfA;CACJ,MAAM,cAAc,cAAc,UAAU;CAC5C,MAAM,YAAY,kBAAkB,iBAAiB,CAAC,GAAI,cAAc,qBAAqB,YAAY,GAAG,EAAE,EAAG,GAAG,qBAAqB,SAAS,CAAC,GAAG,EAAE;AACxJ,WAAU,SAAQ,aAAY;AAC5B,oBAAkB,SAAS,iBAAiB,UAAU,QAAQ,EAC5D,SAAS,MACV,CAAC;AACF,oBAAkB,SAAS,iBAAiB,UAAU,OAAO;GAC7D;CACF,MAAM,YAAY,eAAe,cAAc,YAAY,aAAa,OAAO,GAAG;CAClF,IAAI,iBAAiB;CACrB,IAAI,iBAAiB;AACrB,KAAI,eAAe;AACjB,mBAAiB,IAAI,gBAAe,SAAQ;GAC1C,IAAI,CAAC,cAAc;AACnB,OAAI,cAAc,WAAW,WAAW,eAAe,gBAAgB;AAGrE,mBAAe,UAAU,SAAS;AAClC,yBAAqB,eAAe;AACpC,qBAAiB,4BAA4B;KAC3C,IAAI;AACJ,MAAC,kBAAkB,mBAAmB,QAAQ,gBAAgB,QAAQ,SAAS;MAC/E;;AAEJ,WAAQ;IACR;AACF,MAAI,eAAe,CAAC,eAClB,gBAAe,QAAQ,YAAY;AAErC,iBAAe,QAAQ,SAAS;;CAElC,IAAI;CACJ,IAAI,cAAc,iBAAiB,sBAAsB,UAAU,GAAG;AACtE,KAAI,eACF,YAAW;CAEb,SAAS,YAAY;EACnB,MAAM,cAAc,sBAAsB,UAAU;AACpD,MAAI,eAAe,CAAC,cAAc,aAAa,YAAY,CACzD,SAAQ;AAEV,gBAAc;AACd,YAAU,sBAAsB,UAAU;;AAE5C,SAAQ;AACR,cAAa;EACX,IAAI;AACJ,YAAU,SAAQ,aAAY;AAC5B,qBAAkB,SAAS,oBAAoB,UAAU,OAAO;AAChE,qBAAkB,SAAS,oBAAoB,UAAU,OAAO;IAChE;AACF,eAAgC;AAChC,GAAC,mBAAmB,mBAAmB,QAAQ,iBAAiB,YAAY;AAC5E,mBAAiB;AACjB,MAAI,eACF,sBAAqB,QAAQ;;;AAsBnC,IAAME,WAASC;AAef,IAAMC,UAAQC;AAQd,IAAMC,SAAOC;AAQb,IAAMC,SAAOC;AAOb,IAAMC,SAAOC;AAOb,IAAMC,UAAQC;AAYd,IAAMC,eAAaC;AAMnB,IAAM,mBAAmB,WAAW,UAAU,cAAY;CAIxD,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,gBAAgB;EACpB;EACA,GAAGf;EACJ;CACD,MAAM,oBAAoB;EACxB,GAAG,cAAc;EACjB,IAAI;EACL;AACD,QAAO,kBAAkB,WAAW,UAAU;EAC5C,GAAG;EACH,UAAU;EACX,CAAC;;AC5vBJ,IAAI,QAHW,OAAO,aAAa,cAGZgB,MAAAA,kBADZ,SAAS,OAAO;AAK3B,SAAS,UAAU,GAAG,GAAG;AACvB,KAAI,MAAM,EACR,QAAO;AAET,KAAI,OAAO,MAAM,OAAO,EACtB,QAAO;AAET,KAAI,OAAO,MAAM,cAAc,EAAE,UAAU,KAAK,EAAE,UAAU,CAC1D,QAAO;CAET,IAAI;CACJ,IAAI;CACJ,IAAI;AACJ,KAAI,KAAK,KAAK,OAAO,MAAM,UAAU;AACnC,MAAI,MAAM,QAAQ,EAAE,EAAE;AACpB,YAAS,EAAE;AACX,OAAI,WAAW,EAAE,OAAQ,QAAO;AAChC,QAAK,IAAI,QAAQ,QAAQ,GACvB,KAAI,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CACxB,QAAO;AAGX,UAAO;;AAET,SAAO,OAAO,KAAK,EAAE;AACrB,WAAS,KAAK;AACd,MAAI,WAAW,OAAO,KAAK,EAAE,CAAC,OAC5B,QAAO;AAET,OAAK,IAAI,QAAQ,QAAQ,GACvB,KAAI,CAAC,EAAE,CAAC,eAAe,KAAK,GAAG,KAAK,GAAG,CACrC,QAAO;AAGX,OAAK,IAAI,QAAQ,QAAQ,IAAI;GAC3B,MAAM,MAAM,KAAK;AACjB,OAAI,QAAQ,YAAY,EAAE,SACxB;AAEF,OAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAC5B,QAAO;;AAGX,SAAO;;AAET,QAAO,MAAM,KAAK,MAAM;;AAG1B,SAAS,OAAO,SAAS;AACvB,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,SADY,QAAQ,cAAc,eAAe,QACtC,oBAAoB;;AAGjC,SAAS,WAAW,SAAS,OAAO;CAClC,MAAM,MAAM,OAAO,QAAQ;AAC3B,QAAO,KAAK,MAAM,QAAQ,IAAI,GAAG;;AAGnC,SAAS,aAAa,OAAO;CAC3B,MAAM,MAAMC,MAAM,OAAO,MAAM;AAC/B,aAAY;AACV,MAAI,UAAU;GACd;AACF,QAAO;;AAOT,SAAS,YAAY,WAAS;AAC5B,KAAIC,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,YAAY,UACZ,WAAW,YACX,aAAa,EAAE,EACf,UAAA,YACA,UAAU,EACR,WAAW,mBACX,UAAU,qBACR,EAAE,EACN,YAAY,MACZ,sBACA,SACEA;CACJ,MAAM,CAAC,MAAM,WAAWD,MAAM,SAAS;EACrC,GAAG;EACH,GAAG;EACH;EACA;EACA,gBAAgB,EAAE;EAClB,cAAc;EACf,CAAC;CACF,MAAM,CAAC,kBAAkB,uBAAuBA,MAAM,SAAS,WAAW;AAC1E,KAAI,CAAC,UAAU,kBAAkB,WAAW,CAC1C,qBAAoB,WAAW;CAEjC,MAAM,CAAC,YAAY,iBAAiBA,MAAM,SAAS,KAAK;CACxD,MAAM,CAAC,WAAW,gBAAgBA,MAAM,SAAS,KAAK;CACtD,MAAM,eAAeA,MAAM,aAAY,SAAQ;AAC7C,MAAI,SAAS,aAAa,SAAS;AACjC,gBAAa,UAAU;AACvB,iBAAc,KAAK;;IAEpB,EAAE,CAAC;CACN,MAAM,cAAcA,MAAM,aAAY,SAAQ;AAC5C,MAAI,SAAS,YAAY,SAAS;AAChC,eAAY,UAAU;AACtB,gBAAa,KAAK;;IAEnB,EAAE,CAAC;CACN,MAAM,cAAc,qBAAqB;CACzC,MAAM,aAAa,oBAAoB;CACvC,MAAM,eAAeA,MAAM,OAAO,KAAK;CACvC,MAAM,cAAcA,MAAM,OAAO,KAAK;CACtC,MAAM,UAAUA,MAAM,OAAO,KAAK;CAClC,MAAM,0BAA0B,wBAAwB;CACxD,MAAM,0BAA0B,aAAa,qBAAqB;CAClE,MAAM,cAAc,aAAaE,WAAS;CAC1C,MAAM,UAAU,aAAa,KAAK;CAClC,MAAM,SAASF,MAAM,kBAAkB;AACrC,MAAI,CAAC,aAAa,WAAW,CAAC,YAAY,QACxC;EAEF,MAAM,SAAS;GACb;GACA;GACA,YAAY;GACb;AACD,MAAI,YAAY,QACd,QAAO,WAAW,YAAY;AAEhC,kBAAgB,aAAa,SAAS,YAAY,SAAS,OAAO,CAAC,MAAK,WAAQ;GAC9E,MAAM,WAAW;IACf,GAAGG;IAKH,cAAc,QAAQ,YAAY;IACnC;AACD,OAAI,aAAa,WAAW,CAAC,UAAU,QAAQ,SAAS,SAAS,EAAE;AACjE,YAAQ,UAAU;AAClB,cAAS,gBAAgB;AACvB,aAAQ,SAAS;MACjB;;IAEJ;IACD;EAAC;EAAkB;EAAW;EAAU;EAAa;EAAQ,CAAC;AACjE,aAAY;AACV,MAAI,SAAS,SAAS,QAAQ,QAAQ,cAAc;AAClD,WAAQ,QAAQ,eAAe;AAC/B,YAAQ,YAAS;IACf,GAAGA;IACH,cAAc;IACf,EAAE;;IAEJ,CAAC,KAAK,CAAC;CACV,MAAM,eAAeH,MAAM,OAAO,MAAM;AACxC,aAAY;AACV,eAAa,UAAU;AACvB,eAAa;AACX,gBAAa,UAAU;;IAExB,EAAE,CAAC;AACN,aAAY;AACV,MAAI,YAAa,cAAa,UAAU;AACxC,MAAI,WAAY,aAAY,UAAU;AACtC,MAAI,eAAe,YAAY;AAC7B,OAAI,wBAAwB,QAC1B,QAAO,wBAAwB,QAAQ,aAAa,YAAY,OAAO;AAEzE,WAAQ;;IAET;EAAC;EAAa;EAAY;EAAQ;EAAyB;EAAwB,CAAC;CACvF,MAAM,OAAOA,MAAM,eAAe;EAChC,WAAW;EACX,UAAU;EACV;EACA;EACD,GAAG,CAAC,cAAc,YAAY,CAAC;CAChC,MAAM,WAAWA,MAAM,eAAe;EACpC,WAAW;EACX,UAAU;EACX,GAAG,CAAC,aAAa,WAAW,CAAC;CAC9B,MAAM,iBAAiBA,MAAM,cAAc;EACzC,MAAM,gBAAgB;GACpB,UAAU;GACV,MAAM;GACN,KAAK;GACN;AACD,MAAI,CAAC,SAAS,SACZ,QAAO;EAET,MAAM,IAAI,WAAW,SAAS,UAAU,KAAK,EAAE;EAC/C,MAAM,IAAI,WAAW,SAAS,UAAU,KAAK,EAAE;AAC/C,MAAI,UACF,QAAO;GACL,GAAG;GACH,WAAW,eAAe,IAAI,SAAS,IAAI;GAC3C,GAAI,OAAO,SAAS,SAAS,IAAI,OAAO,EACtC,YAAY,aACb;GACF;AAEH,SAAO;GACL,UAAU;GACV,MAAM;GACN,KAAK;GACN;IACA;EAAC;EAAU;EAAW,SAAS;EAAU,KAAK;EAAG,KAAK;EAAE,CAAC;AAC5D,QAAOA,MAAM,eAAe;EAC1B,GAAG;EACH;EACA;EACA;EACA;EACD,GAAG;EAAC;EAAM;EAAQ;EAAM;EAAU;EAAe,CAAC;;AASrD,IAAMI,aAAU,cAAW;CACzB,SAAS,MAAM,OAAO;AACpB,SAAO,EAAE,CAAC,eAAe,KAAK,OAAO,UAAU;;AAEjD,QAAO;EACL,MAAM;EACN,SAAA;EACA,GAAG,OAAO;GACR,MAAM,EACJ,SACA,YACE,OAAOH,cAAY,aAAaA,UAAQ,MAAM,GAAGA;AACrD,OAAI,WAAW,MAAM,QAAQ,EAAE;AAC7B,QAAI,QAAQ,WAAW,KACrB,QAAOI,QAAQ;KACb,SAAS,QAAQ;KACjB;KACD,CAAC,CAAC,GAAG,MAAM;AAEd,WAAO,EAAE;;AAEX,OAAI,QACF,QAAOA,QAAQ;IACb;IACA;IACD,CAAC,CAAC,GAAG,MAAM;AAEd,UAAO,EAAE;;EAEZ;;AAUH,IAAM,UAAU,WAAS,UAAU;CACjC,GAAG,SAASJ,UAAQ;CACpB,SAAS,CAACA,WAAS,KAAK;CACzB;AAOD,IAAM,SAAS,WAAS,UAAU;CAChC,GAAG,QAAQA,UAAQ;CACnB,SAAS,CAACA,WAAS,KAAK;CACzB;AAKD,IAAM,cAAc,WAAS,UAAU;CACrC,GAAG,aAAaA,UAAQ;CACxB,SAAS,CAACA,WAAS,KAAK;CACzB;AAQD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAQD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAkBD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAkBD,IAAM,SAAS,WAAS,UAAU;CAChC,GAAGG,UAAQH,UAAQ;CACnB,SAAS,CAACA,WAAS,KAAK;CACzB;ACxVD,IAAIK,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AChCN,IAAI,OAAO;AACX,IAAIE,UAAQC,MAAM,YAAY,OAAO,iBAAiB;CACpD,MAAM,EAAE,UAAU,QAAQ,IAAI,SAAS,GAAG,GAAG,eAAe;AAC5D,QAAuB,iBAAA,GAAA,kBAAA,KACrBC,YAAU,KACV;EACE,GAAG;EACH,KAAK;EACL;EACA;EACA,SAAS;EACT,qBAAqB;EACrB,UAAU,MAAM,UAAU,WAA2B,iBAAA,GAAA,kBAAA,KAAI,WAAW,EAAE,QAAQ,kBAAkB,CAAC;EAClG,CACF;EACD;AACF,QAAM,cAAc;AACpB,IAAI,OAAOF;ACFX,SAASG,qBAAmB,WAAW,yBAAyB,EAAE,EAAE;CAClE,IAAI,kBAAkB,EAAE;CACxB,SAAS,eAAe,mBAAmB,gBAAgB;EACzD,MAAM,cAAcC,MAAM,cAAc,eAAe;EACvD,MAAMC,UAAQ,gBAAgB;AAC9B,oBAAkB,CAAC,GAAG,iBAAiB,eAAe;EACtD,MAAM,YAAY,UAAU;GAC1B,MAAM,EAAE,OAAO,UAAU,GAAG,YAAY;GACxC,MAAM,UAAU,QAAQ,aAAaA,YAAU;GAC/C,MAAM,QAAQD,MAAM,cAAc,SAAS,OAAO,OAAO,QAAQ,CAAC;AAClE,UAAuB,iBAAA,GAAA,kBAAA,KAAI,QAAQ,UAAU;IAAE;IAAO;IAAU,CAAC;;AAEnE,WAAS,cAAc,oBAAoB;EAC3C,SAAS,YAAY,cAAc,OAAO;GACxC,MAAM,UAAU,QAAQ,aAAaC,YAAU;GAC/C,MAAM,UAAUD,MAAM,WAAW,QAAQ;AACzC,OAAI,QAAS,QAAO;AACpB,OAAI,mBAAmB,KAAK,EAAG,QAAO;AACtC,SAAM,IAAI,MAAM,KAAK,aAAa,2BAA2B,kBAAkB,IAAI;;AAErF,SAAO,CAAC,UAAU,YAAY;;CAEhC,MAAM,oBAAoB;EACxB,MAAM,gBAAgB,gBAAgB,KAAK,mBAAmB;AAC5D,UAAOA,MAAM,cAAc,eAAe;IAC1C;AACF,SAAO,SAAS,SAAS,OAAO;GAC9B,MAAM,WAAW,QAAQ,cAAc;AACvC,UAAOA,MAAM,eACJ,GAAG,UAAU,cAAc;IAAE,GAAG;KAAQ,YAAY;IAAU,EAAE,GACvE,CAAC,OAAO,SAAS,CAClB;;;AAGL,aAAY,YAAY;AACxB,QAAO,CAAC,gBAAgB,qBAAqB,aAAa,GAAG,uBAAuB,CAAC;;AAEvF,SAAS,qBAAqB,GAAG,QAAQ;CACvC,MAAM,YAAY,OAAO;AACzB,KAAI,OAAO,WAAW,EAAG,QAAO;CAChC,MAAM,oBAAoB;EACxB,MAAM,aAAa,OAAO,KAAK,kBAAkB;GAC/C,UAAU,cAAc;GACxB,WAAW,aAAa;GACzB,EAAE;AACH,SAAO,SAAS,kBAAkB,gBAAgB;GAChD,MAAM,aAAa,WAAW,QAAQ,aAAa,EAAE,UAAU,gBAAgB;IAE7E,MAAM,eADa,SAAS,eAAe,CACX,UAAU;AAC1C,WAAO;KAAE,GAAG;KAAa,GAAG;KAAc;MACzC,EAAE,CAAC;AACN,UAAOA,MAAM,eAAe,GAAG,UAAU,UAAU,cAAc,YAAY,GAAG,CAAC,WAAW,CAAC;;;AAGjG,aAAY,YAAY,UAAU;AAClC,QAAO;;AClDT,IAAIE,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACjCN,SAAS,QAAQ,SAAS;CACxB,MAAM,CAACE,QAAM,WAAWC,MAAM,SAAS,KAAK,EAAE;AAC9C,wBAAsB;AACpB,MAAI,SAAS;AACX,WAAQ;IAAE,OAAO,QAAQ;IAAa,QAAQ,QAAQ;IAAc,CAAC;GACrE,MAAM,iBAAiB,IAAI,gBAAgB,YAAY;AACrD,QAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB;AAEF,QAAI,CAAC,QAAQ,OACX;IAEF,MAAM,QAAQ,QAAQ;IACtB,IAAI;IACJ,IAAI;AACJ,QAAI,mBAAmB,OAAO;KAC5B,MAAM,kBAAkB,MAAM;KAC9B,MAAM,aAAa,MAAM,QAAQ,gBAAgB,GAAG,gBAAgB,KAAK;AACzE,aAAQ,WAAW;AACnB,cAAS,WAAW;WACf;AACL,aAAQ,QAAQ;AAChB,cAAS,QAAQ;;AAEnB,YAAQ;KAAE;KAAO;KAAQ,CAAC;KAC1B;AACF,kBAAe,QAAQ,SAAS,EAAE,KAAK,cAAc,CAAC;AACtD,gBAAa,eAAe,UAAU,QAAQ;QAE9C,SAAQ,KAAK,EAAE;IAEhB,CAAC,QAAQ,CAAC;AACb,QAAOD;;ACVT,IAAI,cAAc;AAClB,IAAI,CAAC,qBAAqB,qBAAqBE,qBAAmB,YAAY;AAC9E,IAAI,CAAC,gBAAgB,oBAAoB,oBAAoB,YAAY;AACzE,IAAI,UAAU,UAAU;CACtB,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,CAAC,QAAQ,aAAaC,MAAM,SAAS,KAAK;AAChD,QAAuB,iBAAA,GAAA,kBAAA,KAAI,gBAAgB;EAAE,OAAO;EAAe;EAAQ,gBAAgB;EAAW;EAAU,CAAC;;AAEnH,OAAO,cAAc;AACrB,IAAIC,gBAAc;AAClB,IAAI,eAAeD,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,eAAe,YAAY,GAAG,gBAAgB;CACtD,MAAM,UAAU,iBAAiBC,eAAa,cAAc;CAC5D,MAAM,MAAMD,MAAM,OAAO,KAAK;CAC9B,MAAM,eAAe,gBAAgB,cAAc,IAAI;CACvD,MAAM,YAAYA,MAAM,OAAO,KAAK;AACpC,OAAM,gBAAgB;EACpB,MAAM,iBAAiB,UAAU;AACjC,YAAU,UAAU,YAAY,WAAW,IAAI;AAC/C,MAAI,mBAAmB,UAAU,QAC/B,SAAQ,eAAe,UAAU,QAAQ;GAE3C;AACF,QAAO,aAAa,OAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,GAAG;EAAa,KAAK;EAAc,CAAC;EAEvG;AACD,aAAa,cAAcD;AAC3B,IAAIE,iBAAe;AACnB,IAAI,CAAC,uBAAuB,qBAAqB,oBAAoBA,eAAa;AAClF,IAAI,gBAAgBH,MAAM,YACvB,OAAO,iBAAiB;CACvB,MAAM,EACJ,eACA,OAAO,UACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,eAAe,GACf,kBAAkB,MAClB,oBAAoB,EAAE,EACtB,kBAAkB,uBAAuB,GACzC,SAAS,WACT,mBAAmB,OACnB,yBAAyB,aACzB,UACA,GAAG,iBACD;CACJ,MAAM,UAAU,iBAAiBG,gBAAc,cAAc;CAC7D,MAAM,CAAC,SAAS,cAAcH,MAAM,SAAS,KAAK;CAClD,MAAM,eAAe,gBAAgB,eAAe,SAAS,WAAW,KAAK,CAAC;CAC9E,MAAM,CAACI,SAAO,YAAYJ,MAAM,SAAS,KAAK;CAC9C,MAAM,YAAY,QAAQI,QAAM;CAChC,MAAM,aAAa,WAAW,SAAS;CACvC,MAAM,cAAc,WAAW,UAAU;CACzC,MAAM,mBAAmB,QAAQ,UAAU,WAAW,MAAM,QAAQ;CACpE,MAAM,mBAAmB,OAAO,yBAAyB,WAAW,uBAAuB;EAAE,KAAK;EAAG,OAAO;EAAG,QAAQ;EAAG,MAAM;EAAG,GAAG;EAAsB;CAC5J,MAAM,WAAW,MAAM,QAAQ,kBAAkB,GAAG,oBAAoB,CAAC,kBAAkB;CAC3F,MAAM,wBAAwB,SAAS,SAAS;CAChD,MAAM,wBAAwB;EAC5B,SAAS;EACT,UAAU,SAAS,OAAO,UAAU;EAEpC,aAAa;EACd;CACD,MAAM,EAAE,MAAM,gBAAgB,WAAW,cAAc,mBAAmB,YAAY;EAEpF,UAAU;EACV,WAAW;EACX,uBAAuB,GAAG,SAAS;AAIjC,UAHgB,WAAW,GAAG,MAAM,EAClC,gBAAgB,2BAA2B,UAC5C,CAAC;;EAGJ,UAAU,EACR,WAAW,QAAQ,QACpB;EACD,YAAY;GACV,OAAO;IAAE,UAAU,aAAa;IAAa,eAAe;IAAa,CAAC;GAC1E,mBAAmB,MAAM;IACvB,UAAU;IACV,WAAW;IACX,SAAS,WAAW,YAAY,YAAY,GAAG,KAAK;IACpD,GAAG;IACJ,CAAC;GACF,mBAAmB,KAAK,EAAE,GAAG,uBAAuB,CAAC;GACrD,KAAK;IACH,GAAG;IACH,QAAQ,EAAE,UAAU,OAAO,gBAAgB,sBAAsB;KAC/D,MAAM,EAAE,OAAO,aAAa,QAAQ,iBAAiB,MAAM;KAC3D,MAAM,eAAe,SAAS,SAAS;AACvC,kBAAa,YAAY,kCAAkC,GAAG,eAAe,IAAI;AACjF,kBAAa,YAAY,mCAAmC,GAAG,gBAAgB,IAAI;AACnF,kBAAa,YAAY,+BAA+B,GAAG,YAAY,IAAI;AAC3E,kBAAa,YAAY,gCAAgC,GAAG,aAAa,IAAI;;IAEhF,CAAC;GACFA,WAASC,MAAgB;IAAE,SAASD;IAAO,SAAS;IAAc,CAAC;GACnE,gBAAgB;IAAE;IAAY;IAAa,CAAC;GAC5C,oBAAoB,KAAK;IAAE,UAAU;IAAmB,GAAG;IAAuB,CAAC;GACpF;EACF,CAAC;CACF,MAAM,CAAC,YAAY,eAAe,6BAA6B,UAAU;CACzE,MAAM,eAAeE,iBAAe,SAAS;AAC7C,wBAAsB;AACpB,MAAI,aACF,iBAAgB;IAEjB,CAAC,cAAc,aAAa,CAAC;CAChC,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,oBAAoB,eAAe,OAAO,iBAAiB;CACjE,MAAM,CAAC,eAAe,oBAAoBN,MAAM,UAAU;AAC1D,wBAAsB;AACpB,MAAI,QAAS,kBAAiB,OAAO,iBAAiB,QAAQ,CAAC,OAAO;IACrE,CAAC,QAAQ,CAAC;AACb,QAAuB,iBAAA,GAAA,kBAAA,KACrB,OACA;EACE,KAAK,KAAK;EACV,qCAAqC;EACrC,OAAO;GACL,GAAG;GACH,WAAW,eAAe,eAAe,YAAY;GAErD,UAAU;GACV,QAAQ;IACP,oCAAoC,CACnC,eAAe,iBAAiB,GAChC,eAAe,iBAAiB,EACjC,CAAC,KAAK,IAAI;GAIX,GAAG,eAAe,MAAM,mBAAmB;IACzC,YAAY;IACZ,eAAe;IAChB;GACF;EACD,KAAK,MAAM;EACX,UAA0B,iBAAA,GAAA,kBAAA,KACxB,uBACA;GACE,OAAO;GACP;GACA,eAAe;GACf;GACA;GACA,iBAAiB;GACjB,UAA0B,iBAAA,GAAA,kBAAA,KACxBE,YAAU,KACV;IACE,aAAa;IACb,cAAc;IACd,GAAG;IACH,KAAK;IACL,OAAO;KACL,GAAG,aAAa;KAGhB,WAAW,CAAC,eAAe,SAAS,KAAK;KAC1C;IACF,CACF;GACF,CACF;EACF,CACF;EAEJ;AACD,cAAc,cAAcC;AAC5B,IAAII,eAAa;AACjB,IAAI,gBAAgB;CAClB,KAAK;CACL,OAAO;CACP,QAAQ;CACR,MAAM;CACP;AACD,IAAI,cAAcP,MAAM,WAAW,SAAS,aAAa,OAAO,cAAc;CAC5E,MAAM,EAAE,eAAe,GAAG,eAAe;CACzC,MAAM,iBAAiB,kBAAkBO,cAAY,cAAc;CACnE,MAAM,WAAW,cAAc,eAAe;AAC9C,QAIkB,iBAAA,GAAA,kBAAA,KACd,QACA;EACE,KAAK,eAAe;EACpB,OAAO;GACL,UAAU;GACV,MAAM,eAAe;GACrB,KAAK,eAAe;IACnB,WAAW;GACZ,iBAAiB;IACf,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACP,CAAC,eAAe;GACjB,WAAW;IACT,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACP,CAAC,eAAe;GACjB,YAAY,eAAe,kBAAkB,WAAW,KAAK;GAC9D;EACD,UAA0B,iBAAA,GAAA,kBAAA,KACxBC,MACA;GACE,GAAG;GACH,KAAK;GACL,OAAO;IACL,GAAG,WAAW;IAEd,SAAS;IACV;GACF,CACF;EACF,CACF;EAEH;AACF,YAAY,cAAcD;AAC1B,SAAS,UAAU,OAAO;AACxB,QAAO,UAAU;;AAEnB,IAAI,mBAAmB,eAAa;CAClC,MAAM;CACN,SAAA;CACA,GAAG,MAAM;EACP,MAAM,EAAE,WAAW,OAAO,mBAAmB;EAE7C,MAAM,gBADoB,eAAe,OAAO,iBAAiB;EAEjE,MAAM,aAAa,gBAAgB,IAAIE,UAAQ;EAC/C,MAAM,cAAc,gBAAgB,IAAIA,UAAQ;EAChD,MAAM,CAAC,YAAY,eAAe,6BAA6B,UAAU;EACzE,MAAM,eAAe;GAAE,OAAO;GAAM,QAAQ;GAAO,KAAK;GAAQ,CAAC;EACjE,MAAM,gBAAgB,eAAe,OAAO,KAAK,KAAK,aAAa;EACnE,MAAM,gBAAgB,eAAe,OAAO,KAAK,KAAK,cAAc;EACpE,IAAI,IAAI;EACR,IAAI,IAAI;AACR,MAAI,eAAe,UAAU;AAC3B,OAAI,gBAAgB,eAAe,GAAG,aAAa;AACnD,OAAI,GAAG,CAAC,YAAY;aACX,eAAe,OAAO;AAC/B,OAAI,gBAAgB,eAAe,GAAG,aAAa;AACnD,OAAI,GAAG,MAAM,SAAS,SAAS,YAAY;aAClC,eAAe,SAAS;AACjC,OAAI,GAAG,CAAC,YAAY;AACpB,OAAI,gBAAgB,eAAe,GAAG,aAAa;aAC1C,eAAe,QAAQ;AAChC,OAAI,GAAG,MAAM,SAAS,QAAQ,YAAY;AAC1C,OAAI,gBAAgB,eAAe,GAAG,aAAa;;AAErD,SAAO,EAAE,MAAM;GAAE;GAAG;GAAG,EAAE;;CAE5B;AACD,SAAS,6BAA6B,WAAW;CAC/C,MAAM,CAAC,MAAM,QAAQ,YAAY,UAAU,MAAM,IAAI;AACrD,QAAO,CAAC,MAAM,MAAM;;AAEtB,IAAIC,UAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AC7QZ,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AC5BN,IAAIE,gBAAc;AAClB,IAAI,SAASC,MAAM,YAAY,OAAO,iBAAiB;CACrD,MAAM,EAAE,WAAW,eAAe,GAAG,gBAAgB;CACrD,MAAM,CAAC,SAAS,cAAcA,MAAM,SAAS,MAAM;AACnD,wBAAsB,WAAW,KAAK,EAAE,EAAE,CAAC;CAC3C,MAAM,YAAY,iBAAiB,WAAW,YAAY,UAAU;AACpE,QAAO,YAAYC,UAAAA,QAAS,aAA6B,iBAAA,GAAA,kBAAA,KAAIC,YAAU,KAAK;EAAE,GAAG;EAAa,KAAK;EAAc,CAAC,EAAE,UAAU,GAAG;EACjI;AACF,OAAO,cAAcH;ACPrB,SAAS,gBAAgB,cAAc,SAAS;AAC9C,QAAOI,MAAM,YAAY,OAAO,UAAU;AAExC,SADkB,QAAQ,OAAO,UACb;IACnB,aAAa;;AAIlB,IAAI,YAAY,UAAU;CACxB,MAAM,EAAE,SAAS,aAAa;CAC9B,MAAM,WAAW,YAAY,QAAQ;CACrC,MAAM,QAAQ,OAAO,aAAa,aAAa,SAAS,EAAE,SAAS,SAAS,WAAW,CAAC,GAAGC,MAAO,SAAS,KAAK,SAAS;CACzH,MAAM,MAAM,gBAAgB,SAAS,KAAK,cAAc,MAAM,CAAC;AAE/D,QADmB,OAAO,aAAa,cAClB,SAAS,YAAYA,MAAO,aAAa,OAAO,EAAE,KAAK,CAAC,GAAG;;AAElF,SAAS,cAAc;AACvB,SAAS,YAAY,SAAS;CAC5B,MAAM,CAAC,MAAM,WAAWA,MAAO,UAAU;CACzC,MAAM,YAAYA,MAAO,OAAO,KAAK;CACrC,MAAM,iBAAiBA,MAAO,OAAO,QAAQ;CAC7C,MAAM,uBAAuBA,MAAO,OAAO,OAAO;CAElD,MAAM,CAAC,OAAO,QAAQ,gBADD,UAAU,YAAY,aACS;EAClD,SAAS;GACP,SAAS;GACT,eAAe;GAChB;EACD,kBAAkB;GAChB,OAAO;GACP,eAAe;GAChB;EACD,WAAW,EACT,OAAO,WACR;EACF,CAAC;AACF,OAAO,gBAAgB;EACrB,MAAM,uBAAuB,iBAAiB,UAAU,QAAQ;AAChE,uBAAqB,UAAU,UAAU,YAAY,uBAAuB;IAC3E,CAAC,MAAM,CAAC;AACX,wBAAsB;EACpB,MAAM,SAAS,UAAU;EACzB,MAAM,aAAa,eAAe;AAElC,MAD0B,eAAe,SAClB;GACrB,MAAM,oBAAoB,qBAAqB;GAC/C,MAAM,uBAAuB,iBAAiB,OAAO;AACrD,OAAI,QACF,MAAK,QAAQ;YACJ,yBAAyB,UAAU,QAAQ,YAAY,OAChE,MAAK,UAAU;YAGX,cADgB,sBAAsB,qBAExC,MAAK,gBAAgB;OAErB,MAAK,UAAU;AAGnB,kBAAe,UAAU;;IAE1B,CAAC,SAAS,KAAK,CAAC;AACnB,wBAAsB;AACpB,MAAI,MAAM;GACR,IAAI;GACJ,MAAM,cAAc,KAAK,cAAc,eAAe;GACtD,MAAM,sBAAsB,UAAU;IAEpC,MAAM,qBADuB,iBAAiB,UAAU,QAAQ,CAChB,SAAS,IAAI,OAAO,MAAM,cAAc,CAAC;AACzF,QAAI,MAAM,WAAW,QAAQ,oBAAoB;AAC/C,UAAK,gBAAgB;AACrB,SAAI,CAAC,eAAe,SAAS;MAC3B,MAAM,kBAAkB,KAAK,MAAM;AACnC,WAAK,MAAM,oBAAoB;AAC/B,kBAAY,YAAY,iBAAiB;AACvC,WAAI,KAAK,MAAM,sBAAsB,WACnC,MAAK,MAAM,oBAAoB;QAEjC;;;;GAIR,MAAM,wBAAwB,UAAU;AACtC,QAAI,MAAM,WAAW,KACnB,sBAAqB,UAAU,iBAAiB,UAAU,QAAQ;;AAGtE,QAAK,iBAAiB,kBAAkB,qBAAqB;AAC7D,QAAK,iBAAiB,mBAAmB,mBAAmB;AAC5D,QAAK,iBAAiB,gBAAgB,mBAAmB;AACzD,gBAAa;AACX,gBAAY,aAAa,UAAU;AACnC,SAAK,oBAAoB,kBAAkB,qBAAqB;AAChE,SAAK,oBAAoB,mBAAmB,mBAAmB;AAC/D,SAAK,oBAAoB,gBAAgB,mBAAmB;;QAG9D,MAAK,gBAAgB;IAEtB,CAAC,MAAM,KAAK,CAAC;AAChB,QAAO;EACL,WAAW,CAAC,WAAW,mBAAmB,CAAC,SAAS,MAAM;EAC1D,KAAKA,MAAO,aAAa,UAAU;AACjC,aAAU,UAAU,QAAQ,iBAAiB,MAAM,GAAG;AACtD,WAAQ,MAAM;KACb,EAAE,CAAC;EACP;;AAEH,SAAS,iBAAiB,QAAQ;AAChC,QAAO,QAAQ,iBAAiB;;AAElC,SAAS,cAAc,SAAS;CAC9B,IAAI,SAAS,OAAO,yBAAyB,QAAQ,OAAO,MAAM,EAAE;CACpE,IAAI,UAAU,UAAU,oBAAoB,UAAU,OAAO;AAC7D,KAAI,QACF,QAAO,QAAQ;AAEjB,UAAS,OAAO,yBAAyB,SAAS,MAAM,EAAE;AAC1D,WAAU,UAAU,oBAAoB,UAAU,OAAO;AACzD,KAAI,QACF,QAAO,QAAQ,MAAM;AAEvB,QAAO,QAAQ,MAAM,OAAO,QAAQ;;AC3GtC,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACjCN,IAAI,qBAAqBE,MAAM,uBAAuB,MAAM,CAAC,UAAU,KAAKC;AAC5E,SAAS,qBAAqB,EAC5B,MACA,aACA,iBAAiB,IAEjB,UACC;CACD,MAAM,CAAC,kBAAkB,qBAAqB,eAAe,qBAAqB;EAChF;EACA;EACD,CAAC;CACF,MAAM,eAAe,SAAS,KAAK;CACnC,MAAM,QAAQ,eAAe,OAAO;CAC1B;EACR,MAAM,kBAAkBD,MAAM,OAAO,SAAS,KAAK,EAAE;AACrD,QAAM,gBAAgB;GACpB,MAAM,gBAAgB,gBAAgB;AACtC,OAAI,kBAAkB,cAAc;IAClC,MAAM,OAAO,gBAAgB,eAAe;IAC5C,MAAM,KAAK,eAAe,eAAe;AACzC,YAAQ,KACN,GAAG,OAAO,oBAAoB,KAAK,MAAM,GAAG,4KAC7C;;AAEH,mBAAgB,UAAU;KACzB,CAAC,cAAc,OAAO,CAAC;;AAe5B,QAAO,CAAC,OAbSA,MAAM,aACpB,cAAc;AACb,MAAI,cAAc;GAChB,MAAM,SAAS,WAAW,UAAU,GAAG,UAAU,KAAK,GAAG;AACzD,OAAI,WAAW,KACb,aAAY,UAAU,OAAO;QAG/B,qBAAoB,UAAU;IAGlC;EAAC;EAAc;EAAM;EAAqB;EAAY,CACvD,CACuB;;AAE1B,SAAS,qBAAqB,EAC5B,aACA,YACC;CACD,MAAM,CAAC,OAAO,YAAYA,MAAM,SAAS,YAAY;CACrD,MAAM,eAAeA,MAAM,OAAO,MAAM;CACxC,MAAM,cAAcA,MAAM,OAAO,SAAS;AAC1C,0BAAyB;AACvB,cAAY,UAAU;IACrB,CAAC,SAAS,CAAC;AACd,OAAM,gBAAgB;AACpB,MAAI,aAAa,YAAY,OAAO;AAClC,eAAY,UAAU,MAAM;AAC5B,gBAAa,UAAU;;IAExB,CAAC,OAAO,aAAa,CAAC;AACzB,QAAO;EAAC;EAAO;EAAU;EAAY;;AAEvC,SAAS,WAAW,OAAO;AACzB,QAAO,OAAO,UAAU;;ACjE1B,IAAI,mBAAmB,SAAU,gBAAgB;AAC7C,KAAI,OAAO,aAAa,YACpB,QAAO;AAGX,SADmB,MAAM,QAAQ,eAAe,GAAG,eAAe,KAAK,gBACnD,cAAc;;AAEtC,IAAI,6BAAa,IAAI,SAAS;AAC9B,IAAI,oCAAoB,IAAI,SAAS;AACrC,IAAI,YAAY,EAAE;AAClB,IAAI,YAAY;AAChB,IAAI,aAAa,SAAU,MAAM;AAC7B,QAAO,SAAS,KAAK,QAAQ,WAAW,KAAK,WAAW;;AAE5D,IAAI,iBAAiB,SAAU,QAAQ,SAAS;AAC5C,QAAO,QACF,IAAI,SAAU,QAAQ;AACvB,MAAI,OAAO,SAAS,OAAO,CACvB,QAAO;EAEX,IAAI,kBAAkB,WAAW,OAAO;AACxC,MAAI,mBAAmB,OAAO,SAAS,gBAAgB,CACnD,QAAO;AAEX,UAAQ,MAAM,eAAe,QAAQ,2BAA2B,QAAQ,kBAAkB;AAC1F,SAAO;GACT,CACG,OAAO,SAAU,GAAG;AAAE,SAAO,QAAQ,EAAE;GAAI;;AAUpD,IAAI,yBAAyB,SAAU,gBAAgB,YAAY,YAAY,kBAAkB;CAC7F,IAAI,UAAU,eAAe,YAAY,MAAM,QAAQ,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;AAC3G,KAAI,CAAC,UAAU,YACX,WAAU,8BAAc,IAAI,SAAS;CAEzC,IAAI,gBAAgB,UAAU;CAC9B,IAAI,cAAc,EAAE;CACpB,IAAI,iCAAiB,IAAI,KAAK;CAC9B,IAAI,iBAAiB,IAAI,IAAI,QAAQ;CACrC,IAAI,OAAO,SAAU,IAAI;AACrB,MAAI,CAAC,MAAM,eAAe,IAAI,GAAG,CAC7B;AAEJ,iBAAe,IAAI,GAAG;AACtB,OAAK,GAAG,WAAW;;AAEvB,SAAQ,QAAQ,KAAK;CACrB,IAAI,OAAO,SAAU,QAAQ;AACzB,MAAI,CAAC,UAAU,eAAe,IAAI,OAAO,CACrC;AAEJ,QAAM,UAAU,QAAQ,KAAK,OAAO,UAAU,SAAU,MAAM;AAC1D,OAAI,eAAe,IAAI,KAAK,CACxB,MAAK,KAAK;OAGV,KAAI;IACA,IAAI,OAAO,KAAK,aAAa,iBAAiB;IAC9C,IAAI,gBAAgB,SAAS,QAAQ,SAAS;IAC9C,IAAI,gBAAgB,WAAW,IAAI,KAAK,IAAI,KAAK;IACjD,IAAI,eAAe,cAAc,IAAI,KAAK,IAAI,KAAK;AACnD,eAAW,IAAI,MAAM,aAAa;AAClC,kBAAc,IAAI,MAAM,YAAY;AACpC,gBAAY,KAAK,KAAK;AACtB,QAAI,iBAAiB,KAAK,cACtB,mBAAkB,IAAI,MAAM,KAAK;AAErC,QAAI,gBAAgB,EAChB,MAAK,aAAa,YAAY,OAAO;AAEzC,QAAI,CAAC,cACD,MAAK,aAAa,kBAAkB,OAAO;YAG5C,GAAG;AACN,YAAQ,MAAM,mCAAmC,MAAM,EAAE;;IAGnE;;AAEN,MAAK,WAAW;AAChB,gBAAe,OAAO;AACtB;AACA,QAAO,WAAY;AACf,cAAY,QAAQ,SAAU,MAAM;GAChC,IAAI,eAAe,WAAW,IAAI,KAAK,GAAG;GAC1C,IAAI,cAAc,cAAc,IAAI,KAAK,GAAG;AAC5C,cAAW,IAAI,MAAM,aAAa;AAClC,iBAAc,IAAI,MAAM,YAAY;AACpC,OAAI,CAAC,cAAc;AACf,QAAI,CAAC,kBAAkB,IAAI,KAAK,CAC5B,MAAK,gBAAgB,iBAAiB;AAE1C,sBAAkB,OAAO,KAAK;;AAElC,OAAI,CAAC,YACD,MAAK,gBAAgB,WAAW;IAEtC;AACF;AACA,MAAI,CAAC,WAAW;AAEZ,gCAAa,IAAI,SAAS;AAC1B,gCAAa,IAAI,SAAS;AAC1B,uCAAoB,IAAI,SAAS;AACjC,eAAY,EAAE;;;;AAW1B,IAAW,aAAa,SAAU,gBAAgB,YAAY,YAAY;AACtE,KAAI,eAAe,KAAK,EAAK,cAAa;CAC1C,IAAI,UAAU,MAAM,KAAK,MAAM,QAAQ,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;CAC3F,IAAI,mBAAmB,cAAc,iBAAiB,eAAe;AACrE,KAAI,CAAC,iBACD,QAAO,WAAY;AAAE,SAAO;;AAIhC,SAAQ,KAAK,MAAM,SAAS,MAAM,KAAK,iBAAiB,iBAAiB,sBAAsB,CAAC,CAAC;AACjG,QAAO,uBAAuB,SAAS,kBAAkB,YAAY,cAAc;;ACtGvF,IAAW,WAAW,WAAW;AAC/B,YAAW,OAAO,UAAU,SAASE,WAAS,GAAG;AAC7C,OAAK,IAAI,GAAG,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AACjD,OAAI,UAAU;AACd,QAAK,IAAIC,OAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAGA,IAAE,CAAE,GAAEA,OAAK,EAAEA;;AAE9E,SAAO;;AAEX,QAAO,SAAS,MAAM,MAAM,UAAU;;AAGxC,SAAgB,OAAO,GAAG,GAAG;CAC3B,IAAI,IAAI,EAAE;AACV,MAAK,IAAIA,OAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAGA,IAAE,IAAI,EAAE,QAAQA,IAAE,GAAG,EAC9E,GAAEA,OAAK,EAAEA;AACb,KAAI,KAAK,QAAQ,OAAO,OAAO,0BAA0B;OAChD,IAAI,IAAI,GAAGA,MAAI,OAAO,sBAAsB,EAAE,EAAE,IAAIA,IAAE,QAAQ,IAC/D,KAAI,EAAE,QAAQA,IAAE,GAAG,GAAG,KAAK,OAAO,UAAU,qBAAqB,KAAK,GAAGA,IAAE,GAAG,CAC1E,GAAEA,IAAE,MAAM,EAAEA,IAAE;;AAE1B,QAAO;;AAkKT,SAAgB,cAAc,IAAI,MAAM,MAAM;AAC5C,KAAI,QAAQ,UAAU,WAAW;OAAQ,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,IAC5E,KAAI,MAAM,EAAE,KAAK,OAAO;AACpB,OAAI,CAAC,GAAI,MAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,EAAE;AACpD,MAAG,KAAK,KAAK;;;AAGrB,QAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,KAAK,CAAC;;AC5N1D,IAAW,qBAAqB;AAChC,IAAW,qBAAqB;AAChC,IAAW,wBAAwB;AAKnC,IAAW,yBAAyB;ACMpC,SAAgB,UAAU,KAAK,OAAO;AAClC,KAAI,OAAO,QAAQ,WACf,KAAI,MAAM;UAEL,IACL,KAAI,UAAU;AAElB,QAAO;;ACLX,SAAgB,eAAe,cAAc,UAAU;CACnD,IAAI,OAAA,GAAA,MAAA,UAAe,WAAY;AAAE,SAAQ;GAErC,OAAO;GAEG;GAEV,QAAQ;IACJ,IAAI,UAAU;AACV,YAAO,IAAI;;IAEf,IAAI,QAAQ,OAAO;KACf,IAAI,OAAO,IAAI;AACf,SAAI,SAAS,OAAO;AAChB,UAAI,QAAQ;AACZ,UAAI,SAAS,OAAO,KAAK;;;IAGpC;GACJ;GAAK,CAAC;AAEP,KAAI,WAAW;AACf,QAAO,IAAI;;AClCf,IAAI,4BAA4B,OAAO,WAAW,cAAcC,MAAM,kBAAkBA,MAAM;AAC9F,IAAI,gCAAgB,IAAI,SAAS;AAejC,SAAgB,aAAa,MAAM,cAAc;CAC7C,IAAI,cAAc,eAAe,gBAAgB,MAAM,SAAU,UAAU;AACvE,SAAO,KAAK,QAAQ,SAAU,KAAK;AAAE,UAAO,UAAU,KAAK,SAAS;IAAI;GAC1E;AAEF,2BAA0B,WAAY;EAClC,IAAI,WAAW,cAAc,IAAI,YAAY;AAC7C,MAAI,UAAU;GACV,IAAI,aAAa,IAAI,IAAI,SAAS;GAClC,IAAI,aAAa,IAAI,IAAI,KAAK;GAC9B,IAAI,YAAY,YAAY;AAC5B,cAAW,QAAQ,SAAU,KAAK;AAC9B,QAAI,CAAC,WAAW,IAAI,IAAI,CACpB,WAAU,KAAK,KAAK;KAE1B;AACF,cAAW,QAAQ,SAAU,KAAK;AAC9B,QAAI,CAAC,WAAW,IAAI,IAAI,CACpB,WAAU,KAAK,UAAU;KAE/B;;AAEN,gBAAc,IAAI,aAAa,KAAK;IACrC,CAAC,KAAK,CAAC;AACV,QAAO;;AC1CX,SAAS,KAAK,GAAG;AACb,QAAO;;AAEX,SAAS,kBAAkB,UAAU,YAAY;AAC7C,KAAI,eAAe,KAAK,EAAK,cAAa;CAC1C,IAAI,SAAS,EAAE;CACf,IAAI,WAAW;AA0Df,QAzDa;EACT,MAAM,WAAY;AACd,OAAI,SACA,OAAM,IAAI,MAAM,mGAAmG;AAEvH,OAAI,OAAO,OACP,QAAO,OAAO,OAAO,SAAS;AAElC,UAAO;;EAEX,WAAW,SAAU,MAAM;GACvB,IAAI,OAAO,WAAW,MAAM,SAAS;AACrC,UAAO,KAAK,KAAK;AACjB,UAAO,WAAY;AACf,aAAS,OAAO,OAAO,SAAU,GAAG;AAAE,YAAO,MAAM;MAAQ;;;EAGnE,kBAAkB,SAAU,IAAI;AAC5B,cAAW;AACX,UAAO,OAAO,QAAQ;IAClB,IAAI,MAAM;AACV,aAAS,EAAE;AACX,QAAI,QAAQ,GAAG;;AAEnB,YAAS;IACL,MAAM,SAAU,GAAG;AAAE,YAAO,GAAG,EAAE;;IACjC,QAAQ,WAAY;AAAE,YAAO;;IAChC;;EAEL,cAAc,SAAU,IAAI;AACxB,cAAW;GACX,IAAI,eAAe,EAAE;AACrB,OAAI,OAAO,QAAQ;IACf,IAAI,MAAM;AACV,aAAS,EAAE;AACX,QAAI,QAAQ,GAAG;AACf,mBAAe;;GAEnB,IAAI,eAAe,WAAY;IAC3B,IAAIC,QAAM;AACV,mBAAe,EAAE;AACjB,UAAI,QAAQ,GAAG;;GAEnB,IAAI,QAAQ,WAAY;AAAE,WAAO,QAAQ,SAAS,CAAC,KAAK,aAAa;;AACrE,UAAO;AACP,YAAS;IACL,MAAM,SAAU,GAAG;AACf,kBAAa,KAAK,EAAE;AACpB,YAAO;;IAEX,QAAQ,SAAU,QAAQ;AACtB,oBAAe,aAAa,OAAO,OAAO;AAC1C,YAAO;;IAEd;;EAER;;AAQL,SAAgB,oBAAoB,WAAS;AACzC,KAAIC,cAAY,KAAK,EAAK,aAAU,EAAE;CACtC,IAAI,SAAS,kBAAkB,KAAK;AACpC,QAAO,UAAU,SAAS;EAAE,OAAO;EAAM,KAAK;EAAO,EAAEA,UAAQ;AAC/D,QAAO;;AC1EX,IAAI,UAAU,SAAU,IAAI;CACxB,IAAI,UAAU,GAAG,SAAS,OAAO,OAAO,IAAI,CAAC,UAAU,CAAC;AACxD,KAAI,CAAC,QACD,OAAM,IAAI,MAAM,qEAAqE;CAEzF,IAAIC,WAAS,QAAQ,MAAM;AAC3B,KAAI,CAACA,SACD,OAAM,IAAI,MAAM,2BAA2B;AAE/C,QAAOC,MAAM,cAAcD,UAAQ,SAAS,EAAE,EAAE,KAAK,CAAC;;AAE1D,QAAQ,kBAAkB;AAC1B,SAAgB,cAAc,QAAQ,UAAU;AAC5C,QAAO,UAAU,SAAS;AAC1B,QAAO;;ACfX,IAAW,YAAY,qBAAqB;ACI5C,IAAI,UAAU,WAAY;AAM1B,IAAI,eAAeE,MAAM,WAAW,SAAU,OAAO,WAAW;CAC5D,IAAI,MAAMA,MAAM,OAAO,KAAK;CAC5B,IAAI,KAAKA,MAAM,SAAS;EACpB,iBAAiB;EACjB,gBAAgB;EAChB,oBAAoB;EACvB,CAAC,EAAE,YAAY,GAAG,IAAI,eAAe,GAAG;CACzC,IAAI,eAAe,MAAM,cAAc,WAAW,MAAM,UAAU,YAAY,MAAM,WAAW,kBAAkB,MAAM,iBAAiB,UAAU,MAAM,SAAS,SAAS,MAAM,QAAQ,UAAU,MAAM,SAAS,aAAa,MAAM,YAAY,cAAc,MAAM,aAAa,QAAQ,MAAM,OAAO,iBAAiB,MAAM,gBAAgB,KAAK,MAAM,IAAI,YAAY,OAAO,KAAK,IAAI,QAAQ,IAAI,UAAU,MAAM,SAAS,OAAO,OAAO,OAAO;EAAC;EAAgB;EAAY;EAAa;EAAmB;EAAW;EAAU;EAAW;EAAc;EAAe;EAAS;EAAkB;EAAM;EAAU,CAAC;CACxlB,IAAIC,YAAU;CACd,IAAI,eAAe,aAAa,CAAC,KAAK,UAAU,CAAC;CACjD,IAAI,iBAAiB,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU;AAC5D,QAAQD,MAAM,cAAcA,MAAM,UAAU,MACxC,WAAYA,MAAM,cAAcC,WAAS;EAAE,SAAS;EAA4B;EAAyB;EAAoB;EAAyB;EAAoB;EAAqB;EAAc,gBAAgB,CAAC,CAAC;EAAgB,SAAS;EAAc;EAAS,CAAC,EAChR,eAAgBD,MAAM,aAAaA,MAAM,SAAS,KAAK,SAAS,EAAE,SAAS,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,cAAc,CAAC,CAAC,GAAKA,MAAM,cAAc,WAAW,SAAS,EAAE,EAAE,gBAAgB;EAAa;EAAW,KAAK;EAAc,CAAC,EAAE,SAAS,CAAE;EAChQ;AACF,aAAa,eAAe;CACxB,SAAS;CACT,iBAAiB;CACjB,OAAO;CACV;AACD,aAAa,aAAa;CACtB,WAAW;CACX,WAAW;CACd;AClCD,IAAI;AAIJ,IAAW,WAAW,WAAY;AAC9B,KAAI,aACA,QAAO;AAEX,KAAI,OAAO,sBAAsB,YAC7B,QAAO;;ACRf,SAAS,eAAe;AACpB,KAAI,CAAC,SACD,QAAO;CACX,IAAI,MAAM,SAAS,cAAc,QAAQ;AACzC,KAAI,OAAO;CACX,IAAI,QAAQ,UAAU;AACtB,KAAI,MACA,KAAI,aAAa,SAAS,MAAM;AAEpC,QAAO;;AAEX,SAAS,aAAa,KAAK,KAAK;AAE5B,KAAI,IAAI,WAEJ,KAAI,WAAW,UAAU;KAGzB,KAAI,YAAY,SAAS,eAAe,IAAI,CAAC;;AAGrD,SAAS,eAAe,KAAK;AAEzB,EADW,SAAS,QAAQ,SAAS,qBAAqB,OAAO,CAAC,IAC7D,YAAY,IAAI;;AAEzB,IAAW,sBAAsB,WAAY;CACzC,IAAI,UAAU;CACd,IAAI,aAAa;AACjB,QAAO;EACH,KAAK,SAAU,OAAO;AAClB,OAAI,WAAW;QACN,aAAa,cAAc,EAAG;AAC/B,kBAAa,YAAY,MAAM;AAC/B,oBAAe,WAAW;;;AAGlC;;EAEJ,QAAQ,WAAY;AAChB;AACA,OAAI,CAAC,WAAW,YAAY;AACxB,eAAW,cAAc,WAAW,WAAW,YAAY,WAAW;AACtE,iBAAa;;;EAGxB;;ACnCL,IAAW,qBAAqB,WAAY;CACxC,IAAI,QAAQ,qBAAqB;AACjC,QAAO,SAAU,QAAQ,WAAW;AAChC,QAAM,UAAU,WAAY;AACxB,SAAM,IAAI,OAAO;AACjB,UAAO,WAAY;AACf,UAAM,QAAQ;;KAEnB,CAAC,UAAU,UAAU,CAAC;;;ACZjC,IAAW,iBAAiB,WAAY;CACpC,IAAI,WAAW,oBAAoB;CACnC,IAAI,QAAQ,SAAU,IAAI;EACtB,IAAI,SAAS,GAAG,QAAQ,UAAU,GAAG;AACrC,WAAS,QAAQ,QAAQ;AACzB,SAAO;;AAEX,QAAO;;ACdX,IAAW,UAAU;CACjB,MAAM;CACN,KAAK;CACL,OAAO;CACP,KAAK;CACR;AACD,IAAI,QAAQ,SAAU,GAAG;AAAE,QAAO,SAAS,KAAK,IAAI,GAAG,IAAI;;AAC3D,IAAI,YAAY,SAAU,SAAS;CAC/B,IAAI,KAAK,OAAO,iBAAiB,SAAS,KAAK;CAC/C,IAAI,OAAO,GAAG,YAAY,YAAY,gBAAgB;CACtD,IAAI,MAAM,GAAG,YAAY,YAAY,eAAe;CACpD,IAAI,QAAQ,GAAG,YAAY,YAAY,iBAAiB;AACxD,QAAO;EAAC,MAAM,KAAK;EAAE,MAAM,IAAI;EAAE,MAAM,MAAM;EAAC;;AAElD,IAAW,cAAc,SAAU,SAAS;AACxC,KAAI,YAAY,KAAK,EAAK,WAAU;AACpC,KAAI,OAAO,WAAW,YAClB,QAAO;CAEX,IAAI,UAAU,UAAU,QAAQ;CAChC,IAAI,gBAAgB,SAAS,gBAAgB;CAC7C,IAAI,cAAc,OAAO;AACzB,QAAO;EACH,MAAM,QAAQ;EACd,KAAK,QAAQ;EACb,OAAO,QAAQ;EACf,KAAK,KAAK,IAAI,GAAG,cAAc,gBAAgB,QAAQ,KAAK,QAAQ,GAAG;EAC1E;;ACvBL,IAAI,QAAQ,gBAAgB;AAC5B,IAAW,gBAAgB;AAI3B,IAAI,YAAY,SAAU,IAAI,eAAe,SAAS,WAAW;CAC7D,IAAI,OAAO,GAAG,MAAM,MAAM,GAAG,KAAK,QAAQ,GAAG,OAAO,MAAM,GAAG;AAC7D,KAAI,YAAY,KAAK,EAAK,WAAU;AACpC,QAAO,QAAQ,OAAO,uBAAuB,2BAA2B,CAAC,OAAO,WAAW,wBAAwB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,eAAe,6BAA6B,CAAC,OAAO,WAAW,6CAA6C,CAAC,OAAO;EACnS,iBAAiB,sBAAsB,OAAO,WAAW,IAAI;EAC7D,YAAY,YACR,uBAAuB,OAAO,MAAM,yBAAyB,CAAC,OAAO,KAAK,2BAA2B,CAAC,OAAO,OAAO,iEAAiE,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,UAAU;EACzO,YAAY,aAAa,kBAAkB,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,IAAI;EACvF,CACI,OAAO,QAAQ,CACf,KAAK,GAAG,EAAE,iBAAiB,CAAC,OAAO,oBAAoB,kBAAkB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,yBAAyB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,KAAK,CAAC,OAAO,oBAAoB,oBAAoB,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,KAAK,CAAC,OAAO,oBAAoB,2BAA2B,CAAC,OAAO,WAAW,sBAAsB,CAAC,OAAO,eAAe,YAAY,CAAC,OAAO,wBAAwB,KAAK,CAAC,OAAO,KAAK,aAAa;;AAEhlB,IAAI,uBAAuB,WAAY;CACnC,IAAI,UAAU,SAAS,SAAS,KAAK,aAAA,qBAA2B,IAAI,KAAK,GAAG;AAC5E,QAAO,SAAS,QAAQ,GAAG,UAAU;;AAEzC,IAAW,mBAAmB,WAAY;AACtC,OAAM,UAAU,WAAY;AACxB,WAAS,KAAK,aAAa,gBAAgB,sBAAsB,GAAG,GAAG,UAAU,CAAC;AAClF,SAAO,WAAY;GACf,IAAI,aAAa,sBAAsB,GAAG;AAC1C,OAAI,cAAc,EACd,UAAS,KAAK,gBAAgB,cAAc;OAG5C,UAAS,KAAK,aAAa,eAAe,WAAW,UAAU,CAAC;;IAGzE,EAAE,CAAC;;AAKV,IAAW,kBAAkB,SAAU,IAAI;CACvC,IAAI,aAAa,GAAG,YAAY,cAAc,GAAG,aAAa,KAAK,GAAG,SAAS,UAAU,OAAO,KAAK,IAAI,WAAW;AACpH,mBAAkB;CAMlB,IAAI,MAAME,MAAM,QAAQ,WAAY;AAAE,SAAO,YAAY,QAAQ;IAAK,CAAC,QAAQ,CAAC;AAChF,QAAOA,MAAM,cAAc,OAAO,EAAE,QAAQ,UAAU,KAAK,CAAC,YAAY,SAAS,CAAC,cAAc,eAAe,GAAG,EAAE,CAAC;;ACnDzH,IAAI,mBAAmB;AACvB,IAAI,OAAO,WAAW,YAClB,KAAI;CACA,IAAI,UAAU,OAAO,eAAe,EAAE,EAAE,WAAW,EAC/C,KAAK,WAAY;AACb,qBAAmB;AACnB,SAAO;IAEd,CAAC;AAEF,QAAO,iBAAiB,QAAQ,SAAS,QAAQ;AAEjD,QAAO,oBAAoB,QAAQ,SAAS,QAAQ;SAEjD,KAAK;AACR,oBAAmB;;AAG3B,IAAW,aAAa,mBAAmB,EAAE,SAAS,OAAO,GAAG;AClBhE,IAAI,uBAAuB,SAAU,MAAM;AAEvC,QAAO,KAAK,YAAY;;AAE5B,IAAI,uBAAuB,SAAU,MAAM,UAAU;AACjD,KAAI,EAAE,gBAAgB,SAClB,QAAO;CAEX,IAAI,SAAS,OAAO,iBAAiB,KAAK;AAC1C,QAEA,OAAO,cAAc,YAEjB,EAAE,OAAO,cAAc,OAAO,aAAa,CAAC,qBAAqB,KAAK,IAAI,OAAO,cAAc;;AAEvG,IAAI,0BAA0B,SAAU,MAAM;AAAE,QAAO,qBAAqB,MAAM,YAAY;;AAC9F,IAAI,0BAA0B,SAAU,MAAM;AAAE,QAAO,qBAAqB,MAAM,YAAY;;AAC9F,IAAW,0BAA0B,SAAU,MAAM,MAAM;CACvD,IAAI,gBAAgB,KAAK;CACzB,IAAI,UAAU;AACd,IAAG;AAEC,MAAI,OAAO,eAAe,eAAe,mBAAmB,WACxD,WAAU,QAAQ;AAGtB,MADmB,uBAAuB,MAAM,QAAQ,EACtC;GACd,IAAI,KAAK,mBAAmB,MAAM,QAAQ;AAC1C,OAD2D,GAAG,KAAmB,GAAG,GAEhF,QAAO;;AAGf,YAAU,QAAQ;UACb,WAAW,YAAY,cAAc;AAC9C,QAAO;;AAEX,IAAI,sBAAsB,SAAU,IAAI;AAEpC,QAAO;EADS,GAAG;EAA0B,GAAG;EAA6B,GAAG;EAK/E;;AAEL,IAAI,sBAAsB,SAAU,IAAI;AAEpC,QAAO;EADU,GAAG;EAA0B,GAAG;EAA2B,GAAG;EAK9E;;AAEL,IAAI,yBAAyB,SAAU,MAAM,MAAM;AAC/C,QAAO,SAAS,MAAM,wBAAwB,KAAK,GAAG,wBAAwB,KAAK;;AAEvF,IAAI,qBAAqB,SAAU,MAAM,MAAM;AAC3C,QAAO,SAAS,MAAM,oBAAoB,KAAK,GAAG,oBAAoB,KAAK;;AAE/E,IAAI,qBAAqB,SAAU,MAAM,WAAW;AAMhD,QAAO,SAAS,OAAO,cAAc,QAAQ,KAAK;;AAEtD,IAAW,eAAe,SAAU,MAAM,WAAW,OAAO,aAAa,cAAc;CACnF,IAAI,kBAAkB,mBAAmB,MAAM,OAAO,iBAAiB,UAAU,CAAC,UAAU;CAC5F,IAAI,QAAQ,kBAAkB;CAE9B,IAAI,SAAS,MAAM;CACnB,IAAI,eAAe,UAAU,SAAS,OAAO;CAC7C,IAAI,qBAAqB;CACzB,IAAI,kBAAkB,QAAQ;CAC9B,IAAI,kBAAkB;CACtB,IAAI,qBAAqB;AACzB,IAAG;AACC,MAAI,CAAC,OACD;EAEJ,IAAI,KAAK,mBAAmB,MAAM,OAAO,EAAE,WAAW,GAAG;EACzD,IAAI,gBADoE,GAAG,KAAe,GAAG,KACnD,kBAAkB;AAC5D,MAAI,YAAY;OACR,uBAAuB,MAAM,OAAO,EAAE;AACtC,uBAAmB;AACnB,0BAAsB;;;EAG9B,IAAI,WAAW,OAAO;AAGtB,WAAU,YAAY,SAAS,aAAa,KAAK,yBAAyB,SAAS,OAAO;UAG7F,CAAC,gBAAgB,WAAW,SAAS,QAEjC,iBAAiB,UAAU,SAAS,OAAO,IAAI,cAAc;AAElE,KAAI,oBACE,gBAAgB,KAAK,IAAI,gBAAgB,GAAG,KAAO,CAAC,gBAAgB,QAAQ,iBAC9E,sBAAqB;UAEhB,CAAC,oBACJ,gBAAgB,KAAK,IAAI,mBAAmB,GAAG,KAAO,CAAC,gBAAgB,CAAC,QAAQ,oBAClF,sBAAqB;AAEzB,QAAO;;ACpGX,IAAW,aAAa,SAAU,OAAO;AACrC,QAAO,oBAAoB,QAAQ,CAAC,MAAM,eAAe,GAAG,SAAS,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE;;AAElH,IAAW,aAAa,SAAU,OAAO;AAAE,QAAO,CAAC,MAAM,QAAQ,MAAM,OAAO;;AAC9E,IAAI,aAAa,SAAU,KAAK;AAC5B,QAAO,OAAO,aAAa,MAAM,IAAI,UAAU;;AAEnD,IAAI,eAAe,SAAU,GAAG,GAAG;AAAE,QAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;;AACxE,IAAI,gBAAgB,SAAU,IAAI;AAAE,QAAO,4BAA4B,OAAO,IAAI,oDAAoD,CAAC,OAAO,IAAI,4BAA4B;;AAC9K,IAAI,YAAY;AAChB,IAAI,YAAY,EAAE;AAClB,SAAgB,oBAAoB,OAAO;CACvC,IAAI,qBAAqBC,MAAM,OAAO,EAAE,CAAC;CACzC,IAAI,gBAAgBA,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;CACxC,IAAI,aAAaA,MAAM,QAAQ;CAC/B,IAAI,KAAKA,MAAM,SAAS,YAAY,CAAC;CACrC,IAAIC,UAAQD,MAAM,SAAS,eAAe,CAAC;CAC3C,IAAI,YAAYA,MAAM,OAAO,MAAM;AACnC,OAAM,UAAU,WAAY;AACxB,YAAU,UAAU;IACrB,CAAC,MAAM,CAAC;AACX,OAAM,UAAU,WAAY;AACxB,MAAI,MAAM,OAAO;AACb,YAAS,KAAK,UAAU,IAAI,uBAAuB,OAAO,GAAG,CAAC;GAC9D,IAAI,UAAU,cAAc,CAAC,MAAM,QAAQ,QAAQ,GAAG,MAAM,UAAU,EAAE,EAAE,IAAI,WAAW,EAAE,KAAK,CAAC,OAAO,QAAQ;AAChH,WAAQ,QAAQ,SAAU,IAAI;AAAE,WAAO,GAAG,UAAU,IAAI,uBAAuB,OAAO,GAAG,CAAC;KAAI;AAC9F,UAAO,WAAY;AACf,aAAS,KAAK,UAAU,OAAO,uBAAuB,OAAO,GAAG,CAAC;AACjE,YAAQ,QAAQ,SAAU,IAAI;AAAE,YAAO,GAAG,UAAU,OAAO,uBAAuB,OAAO,GAAG,CAAC;MAAI;;;IAI1G;EAAC,MAAM;EAAO,MAAM,QAAQ;EAAS,MAAM;EAAO,CAAC;CACtD,IAAI,oBAAoBA,MAAM,YAAY,SAAU,OAAO,QAAQ;AAC/D,MAAK,aAAa,SAAS,MAAM,QAAQ,WAAW,KAAO,MAAM,SAAS,WAAW,MAAM,QACvF,QAAO,CAAC,UAAU,QAAQ;EAE9B,IAAI,QAAQ,WAAW,MAAM;EAC7B,IAAI,aAAa,cAAc;EAC/B,IAAI,SAAS,YAAY,QAAQ,MAAM,SAAS,WAAW,KAAK,MAAM;EACtE,IAAI,SAAS,YAAY,QAAQ,MAAM,SAAS,WAAW,KAAK,MAAM;EACtE,IAAI;EACJ,IAAI,SAAS,MAAM;EACnB,IAAI,gBAAgB,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM;AAEhE,MAAI,aAAa,SAAS,kBAAkB,OAAO,OAAO,SAAS,QAC/D,QAAO;EAEX,IAAI,+BAA+B,wBAAwB,eAAe,OAAO;AACjF,MAAI,CAAC,6BACD,QAAO;AAEX,MAAI,6BACA,eAAc;OAEb;AACD,iBAAc,kBAAkB,MAAM,MAAM;AAC5C,kCAA+B,wBAAwB,eAAe,OAAO;;AAGjF,MAAI,CAAC,6BACD,QAAO;AAEX,MAAI,CAAC,WAAW,WAAW,oBAAoB,UAAU,UAAU,QAC/D,YAAW,UAAU;AAEzB,MAAI,CAAC,YACD,QAAO;EAEX,IAAI,gBAAgB,WAAW,WAAW;AAC1C,SAAO,aAAa,eAAe,QAAQ,OAAO,kBAAkB,MAAM,SAAS,QAAQ,KAAK;IACjG,EAAE,CAAC;CACN,IAAI,gBAAgBA,MAAM,YAAY,SAAU,QAAQ;EACpD,IAAI,QAAQ;AACZ,MAAI,CAAC,UAAU,UAAU,UAAU,UAAU,SAAS,OAAOC,QAEzD;EAEJ,IAAI,QAAQ,YAAY,QAAQ,WAAW,MAAM,GAAG,WAAW,MAAM;EACrE,IAAI,cAAc,mBAAmB,QAAQ,OAAO,SAAU,GAAG;AAAE,UAAO,EAAE,SAAS,MAAM,SAAS,EAAE,WAAW,MAAM,UAAU,MAAM,WAAW,EAAE,iBAAiB,aAAa,EAAE,OAAO,MAAM;IAAI,CAAC;AAEtM,MAAI,eAAe,YAAY,QAAQ;AACnC,OAAI,MAAM,WACN,OAAM,gBAAgB;AAE1B;;AAGJ,MAAI,CAAC,aAAa;GACd,IAAI,cAAc,UAAU,QAAQ,UAAU,EAAE,EAC3C,IAAI,WAAW,CACf,OAAO,QAAQ,CACf,OAAO,SAAU,MAAM;AAAE,WAAO,KAAK,SAAS,MAAM,OAAO;KAAI;AAEpE,OADiB,WAAW,SAAS,IAAI,kBAAkB,OAAO,WAAW,GAAG,GAAG,CAAC,UAAU,QAAQ;QAE9F,MAAM,WACN,OAAM,gBAAgB;;;IAInC,EAAE,CAAC;CACN,IAAI,eAAeD,MAAM,YAAY,SAAU,MAAM,OAAO,QAAQ,QAAQ;EACxE,IAAI,QAAQ;GAAQ;GAAa;GAAe;GAAgB;GAAQ,cAAc,yBAAyB,OAAO;GAAE;AACxH,qBAAmB,QAAQ,KAAK,MAAM;AACtC,aAAW,WAAY;AACnB,sBAAmB,UAAU,mBAAmB,QAAQ,OAAO,SAAU,GAAG;AAAE,WAAO,MAAM;KAAS;KACrG,EAAE;IACN,EAAE,CAAC;CACN,IAAI,mBAAmBA,MAAM,YAAY,SAAU,OAAO;AACtD,gBAAc,UAAU,WAAW,MAAM;AACzC,aAAW,UAAU,KAAA;IACtB,EAAE,CAAC;CACN,IAAI,cAAcA,MAAM,YAAY,SAAU,OAAO;AACjD,eAAa,MAAM,MAAM,WAAW,MAAM,EAAE,MAAM,QAAQ,kBAAkB,OAAO,MAAM,QAAQ,QAAQ,CAAC;IAC3G,EAAE,CAAC;CACN,IAAI,kBAAkBA,MAAM,YAAY,SAAU,OAAO;AACrD,eAAa,MAAM,MAAM,WAAW,MAAM,EAAE,MAAM,QAAQ,kBAAkB,OAAO,MAAM,QAAQ,QAAQ,CAAC;IAC3G,EAAE,CAAC;AACN,OAAM,UAAU,WAAY;AACxB,YAAU,KAAKC,QAAM;AACrB,QAAM,aAAa;GACf,iBAAiB;GACjB,gBAAgB;GAChB,oBAAoB;GACvB,CAAC;AACF,WAAS,iBAAiB,SAAS,eAAe,WAAW;AAC7D,WAAS,iBAAiB,aAAa,eAAe,WAAW;AACjE,WAAS,iBAAiB,cAAc,kBAAkB,WAAW;AACrE,SAAO,WAAY;AACf,eAAY,UAAU,OAAO,SAAU,MAAM;AAAE,WAAO,SAASA;KAAS;AACxE,YAAS,oBAAoB,SAAS,eAAe,WAAW;AAChE,YAAS,oBAAoB,aAAa,eAAe,WAAW;AACpE,YAAS,oBAAoB,cAAc,kBAAkB,WAAW;;IAE7E,EAAE,CAAC;CACN,IAAI,kBAAkB,MAAM,iBAAiB,QAAQ,MAAM;AAC3D,QAAQD,MAAM,cAAcA,MAAM,UAAU,MACxC,QAAQA,MAAM,cAAcC,SAAO,EAAE,QAAQ,cAAc,GAAG,EAAE,CAAC,GAAG,MACpE,kBAAkBD,MAAM,cAAc,iBAAiB;EAAE,YAAY,MAAM;EAAY,SAAS,MAAM;EAAS,CAAC,GAAG,KAAK;;AAEhI,SAAS,yBAAyB,MAAM;CACpC,IAAI,eAAe;AACnB,QAAO,SAAS,MAAM;AAClB,MAAI,gBAAgB,YAAY;AAC5B,kBAAe,KAAK;AACpB,UAAO,KAAK;;AAEhB,SAAO,KAAK;;AAEhB,QAAO;;ACxJX,IAAA,kBAAe,cAAc,WAAW,oBAAoB;ACC5D,IAAI,oBAAoBE,MAAM,WAAW,SAAU,OAAO,KAAK;AAAE,QAAQA,MAAM,cAAc,cAAc,SAAS,EAAE,EAAE,OAAO;EAAO;EAAK,SAASC;EAAS,CAAC,CAAC;EAAK;AACpK,kBAAkB,aAAa,aAAa;AAC5C,IAAA,sBAAe;ACef,IAAI,eAAe;AACnB,IAAI,CAAC,sBAAsB,sBAAsB,mBAAmB,cAAc,CAChF,kBACD,CAAC;AACF,IAAI,iBAAiB,mBAAmB;AACxC,IAAI,CAAC,iBAAiB,qBAAqB,qBAAqB,aAAa;AAC7E,IAAIC,aAAW,UAAU;CACvB,MAAM,EACJ,gBACA,UACA,MAAM,UACN,aACA,cACA,QAAQ,UACN;CACJ,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,aAAaC,MAAM,OAAO,KAAK;CACrC,MAAM,CAAC,iBAAiB,sBAAsBA,MAAM,SAAS,MAAM;CACnE,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,aAAa,eAAe;EAC5B,UAAU;EACV,QAAQ;EACT,CAAC;AACF,QAAuB,iBAAA,GAAA,kBAAA,KAAIC,SAAsB;EAAE,GAAG;EAAa,UAA0B,iBAAA,GAAA,kBAAA,KAC3F,iBACA;GACE,OAAO;GACP,WAAWC,SAAO;GAClB;GACA;GACA,cAAc;GACd,cAAcF,MAAM,kBAAkB,SAAS,aAAa,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;GAClF;GACA,mBAAmBA,MAAM,kBAAkB,mBAAmB,KAAK,EAAE,EAAE,CAAC;GACxE,sBAAsBA,MAAM,kBAAkB,mBAAmB,MAAM,EAAE,EAAE,CAAC;GAC5E;GACA;GACD,CACF;EAAE,CAAC;;AAEN,UAAQ,cAAc;AACtB,IAAI,cAAc;AAClB,IAAI,gBAAgBA,MAAM,YACvB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;CAC3C,MAAM,UAAU,kBAAkB,aAAa,eAAe;CAC9D,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,EAAE,mBAAmB,yBAAyB;AACpD,OAAM,gBAAgB;AACpB,qBAAmB;AACnB,eAAa,sBAAsB;IAClC,CAAC,mBAAmB,qBAAqB,CAAC;AAC7C,QAAuB,iBAAA,GAAA,kBAAA,KAAIG,QAAwB;EAAE,GAAG;EAAa,GAAG;EAAa,KAAK;EAAc,CAAC;EAE5G;AACD,cAAc,cAAc;AAC5B,IAAI,eAAe;AACnB,IAAIC,mBAAiBJ,MAAM,YACxB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,iBAAiB;CAC5C,MAAM,UAAU,kBAAkB,cAAc,eAAe;CAC/D,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,qBAAqB,gBAAgB,cAAc,QAAQ,WAAW;CAC5E,MAAM,UAA0B,iBAAA,GAAA,kBAAA,KAC9BK,YAAU,QACV;EACE,MAAM;EACN,iBAAiB;EACjB,iBAAiB,QAAQ;EACzB,iBAAiB,QAAQ;EACzB,cAAc,SAAS,QAAQ,KAAK;EACpC,GAAG;EACH,KAAK;EACL,SAAS,qBAAqB,MAAM,SAAS,QAAQ,aAAa;EACnE,CACF;AACD,QAAO,QAAQ,kBAAkB,UAA0B,iBAAA,GAAA,kBAAA,KAAIF,QAAwB;EAAE,SAAS;EAAM,GAAG;EAAa,UAAU;EAAS,CAAC;EAE/I;AACD,iBAAe,cAAc;AAC7B,IAAI,cAAc;AAClB,IAAI,CAAC,gBAAgB,oBAAoB,qBAAqB,aAAa,EACzE,YAAY,KAAK,GAClB,CAAC;AACF,IAAI,iBAAiB,UAAU;CAC7B,MAAM,EAAE,gBAAgB,YAAY,UAAU,cAAc;CAC5D,MAAM,UAAU,kBAAkB,aAAa,eAAe;AAC9D,QAAuB,iBAAA,GAAA,kBAAA,KAAI,gBAAgB;EAAE,OAAO;EAAgB;EAAY,UAA0B,iBAAA,GAAA,kBAAA,KAAI,UAAU;GAAE,SAAS,cAAc,QAAQ;GAAM,UAA0B,iBAAA,GAAA,kBAAA,KAAIG,QAAiB;IAAE,SAAS;IAAM;IAAW;IAAU,CAAC;GAAE,CAAC;EAAE,CAAC;;AAE7P,cAAc,cAAc;AAC5B,IAAI,eAAe;AACnB,IAAIC,mBAAiBP,MAAM,YACxB,OAAO,iBAAiB;CACvB,MAAM,gBAAgB,iBAAiB,cAAc,MAAM,eAAe;CAC1E,MAAM,EAAE,aAAa,cAAc,YAAY,GAAG,iBAAiB;CACnE,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;AACrE,QAAuB,iBAAA,GAAA,kBAAA,KAAI,UAAU;EAAE,SAAS,cAAc,QAAQ;EAAM,UAAU,QAAQ,QAAwB,iBAAA,GAAA,kBAAA,KAAI,qBAAqB;GAAE,GAAG;GAAc,KAAK;GAAc,CAAC,GAAmB,iBAAA,GAAA,kBAAA,KAAI,wBAAwB;GAAE,GAAG;GAAc,KAAK;GAAc,CAAC;EAAE,CAAC;EAElR;AACD,iBAAe,cAAc;AAC7B,IAAIQ,UAAAA,GAAAA,sBAAAA,YAAkB,8BAA8B;AACpD,IAAI,sBAAsBR,MAAM,YAC7B,OAAO,iBAAiB;CACvB,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;CACrE,MAAM,aAAaA,MAAM,OAAO,KAAK;CACrC,MAAM,eAAe,gBAAgB,cAAc,WAAW;CAC9D,MAAM,yBAAyBA,MAAM,OAAO,MAAM;AAClD,OAAM,gBAAgB;EACpB,MAAM,UAAU,WAAW;AAC3B,MAAI,QAAS,QAAO,WAAW,QAAQ;IACtC,EAAE,CAAC;AACN,QAAuB,iBAAA,GAAA,kBAAA,KAAIS,qBAAc;EAAE,IAAID;EAAM,gBAAgB;EAAM,UAA0B,iBAAA,GAAA,kBAAA,KACnG,oBACA;GACE,GAAG;GACH,KAAK;GACL,WAAW,QAAQ;GACnB,6BAA6B;GAC7B,kBAAkB,qBAAqB,MAAM,mBAAmB,UAAU;AACxE,UAAM,gBAAgB;AACtB,QAAI,CAAC,uBAAuB,QAAS,SAAQ,WAAW,SAAS,OAAO;KACxE;GACF,sBAAsB,qBACpB,MAAM,uBACL,UAAU;IACT,MAAM,gBAAgB,MAAM,OAAO;IACnC,MAAM,gBAAgB,cAAc,WAAW,KAAK,cAAc,YAAY;AAE9E,2BAAuB,UADF,cAAc,WAAW,KAAK;MAGrD,EAAE,0BAA0B,OAAO,CACpC;GACD,gBAAgB,qBACd,MAAM,iBACL,UAAU,MAAM,gBAAgB,EACjC,EAAE,0BAA0B,OAAO,CACpC;GACF,CACF;EAAE,CAAC;EAEP;AACD,IAAI,yBAAyBR,MAAM,YAChC,OAAO,iBAAiB;CACvB,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;CACrE,MAAM,0BAA0BA,MAAM,OAAO,MAAM;CACnD,MAAM,2BAA2BA,MAAM,OAAO,MAAM;AACpD,QAAuB,iBAAA,GAAA,kBAAA,KACrB,oBACA;EACE,GAAG;EACH,KAAK;EACL,WAAW;EACX,6BAA6B;EAC7B,mBAAmB,UAAU;AAC3B,SAAM,mBAAmB,MAAM;AAC/B,OAAI,CAAC,MAAM,kBAAkB;AAC3B,QAAI,CAAC,wBAAwB,QAAS,SAAQ,WAAW,SAAS,OAAO;AACzE,UAAM,gBAAgB;;AAExB,2BAAwB,UAAU;AAClC,4BAAyB,UAAU;;EAErC,oBAAoB,UAAU;AAC5B,SAAM,oBAAoB,MAAM;AAChC,OAAI,CAAC,MAAM,kBAAkB;AAC3B,4BAAwB,UAAU;AAClC,QAAI,MAAM,OAAO,cAAc,SAAS,cACtC,0BAAyB,UAAU;;GAGvC,MAAM,SAAS,MAAM;AAErB,OADwB,QAAQ,WAAW,SAAS,SAAS,OAAO,CAC/C,OAAM,gBAAgB;AAC3C,OAAI,MAAM,OAAO,cAAc,SAAS,aAAa,yBAAyB,QAC5E,OAAM,gBAAgB;;EAG3B,CACF;EAEJ;AACD,IAAI,qBAAqBA,MAAM,YAC5B,OAAO,iBAAiB;CACvB,MAAM,EACJ,gBACA,WACA,iBACA,kBACA,6BACA,iBACA,sBACA,gBACA,mBACA,GAAG,iBACD;CACJ,MAAM,UAAU,kBAAkB,cAAc,eAAe;CAC/D,MAAM,cAAc,eAAe,eAAe;AAClD,iBAAgB;AAChB,QAAuB,iBAAA,GAAA,kBAAA,KACrB,YACA;EACE,SAAS;EACT,MAAM;EACN,SAAS;EACT,kBAAkB;EAClB,oBAAoB;EACpB,UAA0B,iBAAA,GAAA,kBAAA,KACxB,kBACA;GACE,SAAS;GACT;GACA;GACA;GACA;GACA;GACA,iBAAiB,QAAQ,aAAa,MAAM;GAC5C,UAA0B,iBAAA,GAAA,kBAAA,KACxBU,SACA;IACE,cAAc,SAAS,QAAQ,KAAK;IACpC,MAAM;IACN,IAAI,QAAQ;IACZ,GAAG;IACH,GAAG;IACH,KAAK;IACL,OAAO;KACL,GAAG,aAAa;KAGd,4CAA4C;KAC5C,2CAA2C;KAC3C,4CAA4C;KAC5C,iCAAiC;KACjC,kCAAkC;KAErC;IACF,CACF;GACF,CACF;EACF,CACF;EAEJ;AACD,IAAI,aAAa;AACjB,IAAI,eAAeV,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,eAAe;CAC1C,MAAM,UAAU,kBAAkB,YAAY,eAAe;AAC7D,QAAuB,iBAAA,GAAA,kBAAA,KACrBK,YAAU,QACV;EACE,MAAM;EACN,GAAG;EACH,KAAK;EACL,SAAS,qBAAqB,MAAM,eAAe,QAAQ,aAAa,MAAM,CAAC;EAChF,CACF;EAEJ;AACD,aAAa,cAAc;AAC3B,IAAI,aAAa;AACjB,IAAI,eAAeL,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,eAAe;CAC1C,MAAM,cAAc,eAAe,eAAe;AAClD,QAAuB,iBAAA,GAAA,kBAAA,KAAIW,OAAuB;EAAE,GAAG;EAAa,GAAG;EAAY,KAAK;EAAc,CAAC;EAE1G;AACD,aAAa,cAAc;AAC3B,SAAS,SAAS,MAAM;AACtB,QAAO,OAAO,SAAS;;AAEzB,IAAI,QAAQZ;AAEZ,IAAI,UAAUK;AACd,IAAIQ,WAAS;AACb,IAAI,WAAWL;AAEf,IAAI,SAAS;ACtSb,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,iBAAA,GAAA,kBAAA,KAAC,OAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,iBAAA,GAAA,kBAAA,KAAC,SAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,GAAG,SACqD;AACxD,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAiB,EAAA,UAChB,iBAAA,GAAA,kBAAA,KAAC,UAAiB;EAChB,aAAU;EACH;EACK;EACZ,WAAW,cAAA,GACT,keACA,UACD;EACD,GAAI;GACJ,EAAA,CACsB;;ACrC9B,IAAI,IAAE,GAAEM,MAAE,IAAG,IAAE,IAAG,IAAE,KAAI,IAAE,IAAG,IAAE,MAAK,IAAE;AAAM,IAAIC,MAAE,KAAI,IAAE,uBAAsBC,MAAE,wBAAuBC,MAAE,SAAQC,MAAE;AAAS,SAAS,EAAE,GAAE,GAAE,GAAE,KAAE,GAAE,GAAE,GAAE;AAAC,KAAG,MAAI,EAAE,OAAO,QAAO,MAAI,EAAE,SAAO,IAAEH;CAAE,IAAII,MAAE,GAAG,EAAE,GAAG;AAAI,KAAG,EAAEA,SAAK,KAAK,EAAE,QAAO,EAAEA;AAAG,MAAI,IAAIC,MAAEC,IAAE,OAAO,EAAE,EAAC,IAAE,EAAE,QAAQD,KAAE,EAAE,EAAC,IAAE,GAAE,GAAEE,KAAE,GAAE,GAAE,KAAG,GAAG,KAAE,EAAE,GAAE,GAAE,GAAED,KAAE,IAAE,GAAE,IAAE,GAAE,EAAE,EAAC,IAAE,MAAI,MAAI,IAAE,KAAG,IAAE,EAAE,KAAK,EAAE,OAAO,IAAE,EAAE,CAAC,IAAE,KAAG,GAAE,IAAE,EAAE,MAAM,GAAE,IAAE,EAAE,CAAC,MAAML,IAAE,EAAC,KAAG,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,EAAE,OAAO,KAAGC,IAAE,KAAK,EAAE,OAAO,IAAE,EAAE,CAAC,IAAE,KAAGH,KAAE,IAAE,EAAE,MAAM,GAAE,IAAE,EAAE,CAAC,MAAMI,IAAE,EAAC,KAAG,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,EAAE,OAAO,MAAI,KAAG,GAAE,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,IAAE,EAAE,IAAG,EAAE,OAAO,EAAE,KAAG,EAAE,OAAO,EAAE,KAAG,KAAG,MAAK,IAAE,KAAG,EAAE,OAAO,IAAE,EAAE,KAAGG,IAAE,OAAO,IAAE,EAAE,IAAEA,IAAE,OAAO,IAAE,EAAE,KAAGA,IAAE,OAAO,EAAE,IAAE,EAAE,OAAO,IAAE,EAAE,KAAGA,IAAE,OAAO,EAAE,MAAI,MAAE,EAAE,GAAE,GAAE,GAAEA,KAAE,IAAE,GAAE,IAAE,GAAE,EAAE,EAACC,MAAE,IAAE,MAAI,IAAEA,MAAE,KAAI,IAAE,MAAI,IAAE,IAAG,IAAE,EAAE,QAAQF,KAAE,IAAE,EAAE;AAAC,QAAO,EAAED,OAAG,GAAE;;AAAE,SAAS,EAAE,GAAE;AAAC,QAAO,EAAE,aAAa,CAAC,QAAQD,KAAE,IAAI;;AAAC,SAAS,EAAE,GAAE,GAAE,GAAE;AAAC,QAAO,IAAE,KAAG,EAAE,SAAO,IAAE,GAAG,IAAE,MAAI,EAAE,KAAK,IAAI,KAAG,GAAE,EAAE,GAAE,GAAE,EAAE,EAAE,EAAC,EAAE,EAAE,EAAC,GAAE,GAAE,EAAE,CAAC;;ACwBv4B,IAAI,YAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMK,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACpC8Q,IAAI,IAAE,qBAAkB,IAAE,2BAAwB,KAAG,6BAA0B,KAAG,oBAAiB,KAAG,GAAG,GAAG,+BAA8B,IAAE,oBAAmB,IAAE,cAAa,MAAI,GAAE,GAAE,MAAIE,EAAG,GAAE,GAAE,EAAE,EAAC,KAAGC,MAAE,cAAc,KAAK,EAAE,EAAC,UAAMA,MAAE,WAAW,GAAG,EAAC,KAAGA,MAAE,cAAc,KAAK,EAAE,EAAC,WAAOA,MAAE,WAAW,GAAG,EAAC,KAAGA,MAAE,cAAc,KAAK,EAAE,EAAC,KAAGA,MAAE,YAAY,GAAE,MAAI;CAAC,IAAI,IAAE,QAAM;EAAC,IAAI,GAAE;AAAE,SAAM;GAAC,QAAO;GAAG,QAAO,KAAG,IAAE,EAAE,UAAQ,OAAK,IAAE,EAAE,iBAAe,OAAK,IAAE;GAAG,gBAAe,KAAK;GAAE,UAAS;IAAC,OAAM;IAAE,uBAAM,IAAI,KAAG;IAAC,wBAAO,IAAI,KAAG;IAAC;GAAC;GAAE,EAACC,MAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAACC,MAAE,GAAG,EAAE,EAAC,EAAC,OAAM,GAAE,UAASC,KAAE,OAAM,GAAE,eAAc,GAAE,QAAO,GAAE,cAAa,GAAE,MAAK,GAAE,yBAAwB,KAAG,CAAC,GAAE,aAAY,IAAE,CAAC,GAAE,GAAG,MAAG,GAAEC,MAAEC,SAAG,EAAC,IAAEA,SAAG,EAAC,IAAEA,SAAG,EAAC,IAAEL,MAAE,OAAO,KAAK,EAAC,IAAE,IAAI;AAAC,SAAM;AAAC,MAAG,MAAI,KAAK,GAAE;GAAC,IAAI,IAAE,EAAE,MAAM;AAAC,KAAE,QAAQ,QAAM,GAAE,EAAE,MAAM;;IAAG,CAAC,EAAE,CAAC,EAAC,QAAM;AAAC,IAAE,GAAE,GAAG;IAAE,EAAE,CAAC;CAAC,IAAI,IAAEA,MAAE,eAAa;EAAC,YAAU,OAAI,EAAE,QAAQ,IAAI,EAAE,QAAK,EAAE,QAAQ,OAAO,EAAE;EAAE,gBAAa,EAAE;EAAQ,WAAU,GAAE,GAAE,MAAI;GAAC,IAAI,GAAE,GAAE,GAAE;AAAE,OAAG,CAAC,OAAO,GAAG,EAAE,QAAQ,IAAG,EAAE,EAAC;AAAC,QAAG,EAAE,QAAQ,KAAG,GAAE,MAAI,SAAS,MAAG,EAAC,GAAG,EAAC,EAAE,GAAEM,IAAE;aAAS,MAAI,SAAQ;AAAC,SAAG,SAAS,cAAc,aAAa,aAAa,IAAE,SAAS,cAAc,aAAa,YAAY,EAAC;MAAC,IAAI,IAAE,SAAS,eAAe,EAAE;AAAC,UAAE,EAAE,OAAO,IAAE,IAAE,SAAS,eAAeF,IAAE,KAAG,QAAM,EAAE,OAAO;;AAAC,SAAG,EAAE,SAAM;MAAC,IAAI;AAAE,QAAE,QAAQ,kBAAgB,IAAE,GAAG,KAAG,OAAK,KAAK,IAAE,EAAE,IAAG,EAAE,MAAM;OAAE,EAAC,KAAG,EAAE,GAAE,GAAG,IAAG,IAAEF,IAAE,YAAU,OAAK,KAAK,IAAE,EAAE,WAAS,KAAK,GAAE;MAAC,IAAI,IAAE,KAAG,OAAK,IAAE;AAAG,OAAC,KAAG,IAAEA,IAAE,SAAS,kBAAgB,QAAM,EAAE,KAAK,GAAE,EAAE;AAAC;;;AAAQ,MAAE,MAAM;;;EAAG,YAAS;AAAC,KAAE,QAAQ,SAAQ,MAAG,GAAG,CAAC;;EAAE,GAAE,EAAE,CAAC,EAACK,MAAEP,MAAE,eAAa;EAAC,QAAO,GAAE,GAAE,MAAI;GAAC,IAAI;AAAE,WAAM,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,WAAS,EAAE,QAAQ,IAAI,GAAE;IAAC,OAAM;IAAE,UAAS;IAAE,CAAC,EAAC,EAAE,QAAQ,SAAS,MAAM,IAAI,GAAE,GAAG,GAAE,EAAE,CAAC,EAAC,EAAE,SAAM;AAAC,OAAG,EAAC,EAAE,MAAM;KAAE;;EAAG,OAAM,GAAE,OAAKC,IAAE,QAAQ,IAAI,EAAE,EAAC,MAAI,EAAE,QAAQ,IAAI,EAAE,GAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAC,EAAE,QAAQ,IAAI,GAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,GAAE,EAAE,SAAM;AAAC,QAAG,EAAC,GAAG,EAAC,EAAE,QAAQ,SAAOK,KAAG,EAAC,EAAE,MAAM;IAAE,QAAK;AAAC,KAAE,QAAQ,OAAO,EAAE,EAACL,IAAE,QAAQ,OAAO,EAAE,EAAC,EAAE,QAAQ,SAAS,MAAM,OAAO,EAAE;GAAC,IAAI,IAAE,GAAG;AAAC,KAAE,SAAM;AAAC,SAAG,GAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAa,KAAK,MAAI,KAAGK,KAAG,EAAC,EAAE,MAAM;KAAE;;EAAG,QAAM,OAAI,EAAE,QAAQ,IAAI,EAAE,IAAE,EAAE,QAAQ,IAAI,mBAAE,IAAI,KAAG,CAAC,QAAK;AAAC,KAAE,QAAQ,OAAO,EAAE,EAAC,EAAE,QAAQ,OAAO,EAAE;;EAAG,cAAWJ,IAAE,QAAQ;EAAa,OAAM,KAAG,EAAE;EAAc,kCAA+BA,IAAE,QAAQ;EAAwB,QAAOE;EAAE,SAAQ;EAAE,SAAQ;EAAE,cAAa;EAAE,GAAE,EAAE,CAAC;CAAC,SAAS,GAAG,GAAE,GAAE;EAAC,IAAI,GAAE;EAAE,IAAI,KAAG,KAAG,IAAEF,IAAE,YAAU,OAAK,KAAK,IAAE,EAAE,WAAS,OAAK,IAAE;AAAG,SAAO,IAAE,EAAE,GAAE,EAAE,QAAQ,QAAO,EAAE,GAAC;;CAAE,SAAS,IAAG;AAAC,MAAG,CAAC,EAAE,QAAQ,UAAQA,IAAE,QAAQ,iBAAe,CAAC,EAAE;EAAO,IAAI,IAAE,EAAE,QAAQ,SAAS,OAAM,IAAE,EAAE;AAAC,IAAE,QAAQ,SAAS,OAAO,SAAQ,MAAG;GAAC,IAAI,IAAE,EAAE,QAAQ,IAAI,EAAE,EAAC,IAAE;AAAE,KAAE,SAAQ,MAAG;IAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,QAAE,KAAK,IAAI,GAAE,EAAE;KAAE,EAAC,EAAE,KAAK,CAAC,GAAE,EAAE,CAAC;IAAE;EAAC,IAAI,IAAE,EAAE;AAAQ,KAAG,CAAC,MAAM,GAAE,MAAI;GAAC,IAAI,GAAE;GAAE,IAAI,IAAE,EAAE,aAAa,KAAK,EAAC,IAAE,EAAE,aAAa,KAAK;AAAC,YAAQ,IAAE,EAAE,IAAI,EAAE,KAAG,OAAK,IAAE,OAAK,IAAE,EAAE,IAAI,EAAE,KAAG,OAAK,IAAE;IAAI,CAAC,SAAQ,MAAG;GAAC,IAAI,IAAE,EAAE,QAAQ,EAAE;AAAC,OAAE,EAAE,YAAY,EAAE,kBAAgB,IAAE,IAAE,EAAE,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAC,EAAE,YAAY,EAAE,kBAAgB,IAAE,IAAE,EAAE,QAAQ,GAAG,EAAE,MAAM,CAAC;IAAE,EAAC,EAAE,MAAM,GAAE,MAAI,EAAE,KAAG,EAAE,GAAG,CAAC,SAAQ,MAAG;GAAC,IAAI;GAAE,IAAI,KAAG,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,EAAE,GAAG,EAAE,IAAI,mBAAmB,EAAE,GAAG,CAAC,IAAI;AAAC,MAAW,cAAc,YAAY,EAAE;IAAE;;CAAC,SAASI,MAAG;EAAC,IAAI,IAAE,GAAG,CAAC,MAAK,MAAG,EAAE,aAAa,gBAAgB,KAAG,OAAO,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAa,EAAE;AAAC,IAAE,SAAS,SAAQ,KAAG,KAAK,EAAE;;CAAC,SAASE,MAAG;EAAC,IAAI,GAAE,GAAE,GAAE;AAAE,MAAG,CAAC,EAAE,QAAQ,UAAQN,IAAE,QAAQ,iBAAe,CAAC,GAAE;AAAC,KAAE,QAAQ,SAAS,QAAMD,IAAE,QAAQ;AAAK;;AAAO,IAAE,QAAQ,SAAS,yBAAO,IAAI,KAAG;EAAC,IAAI,IAAE;AAAE,OAAI,IAAI,KAAKA,IAAE,SAAQ;GAAC,IAA6H,IAAE,IAAxH,KAAG,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,UAAQ,OAAK,IAAE,KAAM,KAAG,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAW,OAAK,IAAE,EAAE,CAAU;AAAC,KAAE,QAAQ,SAAS,MAAM,IAAI,GAAE,EAAE,EAAC,IAAE,KAAG;;AAAI,OAAI,IAAG,CAAC,GAAE,MAAK,EAAE,QAAQ,MAAI,IAAI,KAAK,EAAE,KAAG,EAAE,QAAQ,SAAS,MAAM,IAAI,EAAE,GAAC,GAAE;AAAC,KAAE,QAAQ,SAAS,OAAO,IAAI,EAAE;AAAC;;AAAM,IAAE,QAAQ,SAAS,QAAM;;CAAE,SAAS,KAAI;EAAC,IAAI,GAAE,GAAE;EAAE,IAAI,IAAE,GAAG;AAAC,UAAM,IAAE,EAAE,kBAAgB,OAAK,KAAK,IAAE,EAAE,gBAAc,OAAK,KAAG,IAAE,EAAE,QAAQ,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,KAAG,QAAM,EAAE,eAAe,EAAC,OAAM,WAAU,CAAC,GAAE,EAAE,eAAe,EAAC,OAAM,WAAU,CAAC;;CAAE,SAAS,IAAG;EAAC,IAAI;AAAE,UAAO,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,GAAG,wBAAwB;;CAAC,SAAS,IAAG;EAAC,IAAI;AAAE,SAAO,MAAM,OAAO,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,iBAAiB,GAAG,KAAG,EAAE,CAAC;;CAAC,SAASQ,IAAE,GAAE;EAAC,IAAI,IAAE,GAAG,CAAC;AAAG,OAAG,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC;;CAAC,SAAS,EAAE,GAAE;EAAC,IAAI;EAAE,IAAI,IAAE,GAAG,EAAC,IAAE,GAAG,EAAC,IAAE,EAAE,WAAU,MAAG,MAAI,EAAE,EAAC,IAAE,EAAE,IAAE;AAAG,GAAC,IAAEP,IAAE,YAAU,QAAM,EAAE,SAAO,IAAE,IAAE,IAAE,IAAE,EAAE,EAAE,SAAO,KAAG,IAAE,MAAI,EAAE,SAAO,EAAE,KAAG,EAAE,IAAE,KAAI,KAAG,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC;;CAAC,SAAS,GAAG,GAAE;EAAC,IAAI,IAAE,GAAG,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,QAAQ,EAAE,EAAC;AAAE,SAAK,KAAG,CAAC,GAAG,KAAE,IAAE,IAAE,GAAG,GAAE,EAAE,GAAC,GAAG,GAAE,EAAE,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG;AAAC,MAAE,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC,GAAC,EAAE,EAAE;;CAAC,IAAI,WAAOO,IAAE,GAAG,CAAC,SAAO,EAAE,EAAC,MAAG,MAAG;AAAC,IAAE,gBAAgB,EAAC,EAAE,UAAQ,IAAI,GAAC,EAAE,SAAO,GAAG,EAAE,GAAC,EAAE,EAAE;IAAE,MAAG,MAAG;AAAC,IAAE,gBAAgB,EAAC,EAAE,UAAQA,IAAE,EAAE,GAAC,EAAE,SAAO,GAAG,GAAG,GAAC,EAAE,GAAG;;AAAE,QAAOT,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAI;EAAE,UAAS;EAAG,GAAG;EAAE,aAAY;EAAG,YAAU,MAAG;GAAC,IAAI;AAAE,IAAC,IAAE,EAAE,cAAY,QAAM,EAAE,KAAK,GAAE,EAAE;GAAC,IAAI,IAAE,EAAE,YAAY,eAAa,EAAE,YAAU;AAAI,OAAG,EAAE,EAAE,oBAAkB,GAAG,SAAO,EAAE,KAAT;IAAc,KAAI;IAAI,KAAI;AAAK,UAAG,EAAE,WAAS,GAAG,EAAE;AAAC;IAAM,KAAI;AAAa,QAAG,EAAE;AAAC;IAAM,KAAI;IAAI,KAAI;AAAK,UAAG,EAAE,WAAS,GAAG,EAAE;AAAC;IAAM,KAAI;AAAW,QAAG,EAAE;AAAC;IAAM,KAAI;AAAQ,OAAE,gBAAgB,EAACD,IAAE,EAAE;AAAC;IAAM,KAAI;AAAO,OAAE,gBAAgB,EAAC,IAAI;AAAC;IAAM,KAAI,SAAQ;AAAC,OAAE,gBAAgB;KAAC,IAAI,IAAE,GAAG;AAAC,SAAG,GAAE;MAAC,IAAI,IAAE,IAAI,MAAM,EAAE;AAAC,QAAE,cAAc,EAAE;;;;;EAAK,EAACT,MAAE,cAAc,SAAQ;EAAC,cAAa;EAAG,SAAQO,IAAE;EAAQ,IAAGA,IAAE;EAAQ,OAAM;EAAG,EAAC,EAAE,EAAC,EAAE,IAAE,MAAGP,MAAE,cAAc,GAAG,UAAS,EAAC,OAAM,GAAE,EAACA,MAAE,cAAc,GAAG,UAAS,EAAC,OAAMO,KAAE,EAAC,EAAE,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGP,MAAE,YAAY,GAAE,MAAI;CAAC,IAAI,GAAE;CAAE,IAAI,IAAEK,SAAG,EAACJ,MAAED,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,WAAW,GAAG,EAAC,IAAE,GAAG,EAAC,IAAE,GAAG,EAAE,EAACE,OAAG,KAAG,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,eAAa,OAAK,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE;AAAW,SAAM;AAAC,MAAG,CAACA,IAAE,QAAO,EAAE,KAAK,GAAE,KAAG,OAAK,KAAK,IAAE,EAAE,GAAG;IAAE,CAACA,IAAE,CAAC;CAAC,IAAI,IAAE,GAAG,GAAED,KAAE;EAAC,EAAE;EAAM,EAAE;EAASA;EAAE,EAAC,EAAE,SAAS,EAACE,MAAE,IAAI,EAAC,IAAE,GAAE,MAAG,EAAE,SAAO,EAAE,UAAQ,EAAE,QAAQ,EAAC,IAAE,GAAE,MAAGD,OAAG,EAAE,QAAQ,KAAG,CAAC,IAAE,CAAC,IAAE,EAAE,SAAO,EAAE,SAAS,MAAM,IAAI,EAAE,GAAC,IAAE,CAAC,EAAE;AAAC,OAAE,gBAAc;EAAC,IAAI,IAAED,IAAE;AAAQ,MAAG,EAAE,CAAC,KAAG,EAAE,UAAU,QAAO,EAAE,iBAAiB,GAAE,EAAE,QAAK,EAAE,oBAAoB,GAAE,EAAE;IAAE;EAAC;EAAE,EAAE;EAAS,EAAE;EAAS,CAAC;CAAC,SAAS,IAAG;EAAC,IAAI,GAAE;AAAE,KAAG,GAAE,KAAG,IAAE,EAAE,SAAS,aAAW,QAAM,EAAE,KAAK,GAAE,EAAE,QAAQ;;CAAC,SAAS,IAAG;AAAC,MAAE,SAAS,SAAQ,EAAE,SAAQ,CAAC,EAAE;;AAAC,KAAG,CAAC,EAAE,QAAO;CAAK,IAAG,EAAC,UAAS,GAAE,OAAM,IAAG,UAAS,GAAE,YAAW,GAAE,UAASG,KAAE,GAAG,MAAG;AAAE,QAAOJ,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAEV,KAAE,EAAE;EAAC,GAAG;EAAE,IAAG;EAAE,aAAY;EAAG,MAAK;EAAS,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,eAAc,KAAG,EAAE,4BAA4B,GAAC,KAAK,IAAE;EAAE,SAAQ,IAAE,KAAK,IAAE;EAAE,EAAC,EAAE,SAAS;EAAE,EAAC,KAAGD,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,SAAQ,GAAE,UAASC,KAAE,YAAW,GAAE,GAAG,MAAG,GAAE,IAAEI,SAAG,EAACH,MAAEF,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,OAAO,KAAK,EAACG,MAAEE,SAAG,EAAC,IAAE,GAAG,EAAC,IAAE,GAAE,MAAG,KAAG,EAAE,QAAQ,KAAG,CAAC,IAAE,CAAC,IAAE,EAAE,SAAO,EAAE,SAAS,OAAO,IAAI,EAAE,GAAC,CAAC,EAAE;AAAC,SAAM,EAAE,MAAM,EAAE,EAAC,EAAE,CAAC,EAAC,GAAG,GAAEH,KAAE;EAAC,EAAE;EAAM,EAAE;EAAQ;EAAE,CAAC;CAAC,IAAI,IAAEF,MAAE,eAAa;EAAC,IAAG;EAAE,YAAW;EAAE,GAAE,CAAC,EAAE,CAAC;AAAC,QAAOA,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAET,KAAE,EAAE;EAAC,GAAG;EAAE,cAAa;EAAG,MAAK;EAAe,QAAO,IAAE,KAAK,IAAE,CAAC;EAAE,EAAC,KAAGF,MAAE,cAAc,OAAM;EAAC,KAAI;EAAE,sBAAqB;EAAG,eAAc,CAAC;EAAE,IAAGG;EAAE,EAAC,EAAE,EAAC,EAAE,IAAE,MAAGH,MAAE,cAAc,OAAM;EAAC,oBAAmB;EAAG,MAAK;EAAQ,mBAAkB,IAAEG,MAAE,KAAK;EAAE,EAACH,MAAE,cAAc,GAAG,UAAS,EAAC,OAAM,GAAE,EAAC,EAAE,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGA,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,cAAa,GAAE,GAAGC,QAAG,GAAE,IAAED,MAAE,OAAO,KAAK,EAAC,IAAE,GAAE,MAAG,CAAC,EAAE,OAAO;AAAC,QAAM,CAAC,KAAG,CAAC,IAAE,OAAKA,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAE,GAAE,EAAE;EAAC,GAAGV;EAAE,kBAAiB;EAAG,MAAK;EAAY,CAAC;EAAE,EAAC,KAAGD,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,eAAc,GAAE,GAAGC,QAAG,GAAE,IAAE,EAAE,SAAO,MAAK,IAAE,IAAI,EAAC,IAAE,GAAE,QAAGE,IAAE,OAAO,EAACD,MAAE,GAAE,QAAGC,IAAE,eAAe,EAAC,IAAE,GAAG;AAAC,QAAOH,MAAE,gBAAc;AAAC,IAAE,SAAO,QAAM,EAAE,SAAS,UAAS,EAAE,MAAM;IAAE,CAAC,EAAE,MAAM,CAAC,EAACA,MAAE,cAAcU,UAAE,OAAM;EAAC,KAAI;EAAE,GAAGT;EAAE,cAAa;EAAG,cAAa;EAAM,aAAY;EAAM,YAAW,CAAC;EAAE,qBAAoB;EAAO,MAAK;EAAW,iBAAgB,CAAC;EAAE,iBAAgB,EAAE;EAAO,mBAAkB,EAAE;EAAQ,yBAAwBC;EAAE,IAAG,EAAE;EAAQ,MAAK;EAAO,OAAM,IAAE,EAAE,QAAM;EAAE,WAAS,QAAG;AAAC,QAAG,EAAE,SAAS,UAASC,IAAE,OAAO,MAAM,EAAC,IAAWA,IAAE,OAAO,MAAM;;EAAE,CAAC;EAAE,EAAC,KAAGH,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,UAAS,GAAE,OAAMC,MAAE,eAAc,GAAG,MAAG,GAAE,IAAED,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,OAAO,KAAK,EAACE,MAAE,GAAE,QAAGC,IAAE,eAAe,EAAC,IAAE,GAAG;AAAC,QAAOH,MAAE,gBAAc;AAAC,MAAG,EAAE,WAAS,EAAE,SAAQ;GAAC,IAAIG,MAAE,EAAE,SAAQ,IAAE,EAAE,SAAQ,GAAE,IAAE,IAAI,qBAAmB;AAAC,QAAE,4BAA0B;KAAC,IAAI,IAAEA,IAAE;AAAa,OAAE,MAAM,YAAY,sBAAqB,EAAE,QAAQ,EAAE,GAAC,KAAK;MAAE;KAAE;AAAC,UAAO,EAAE,QAAQA,IAAE,QAAK;AAAC,yBAAqB,EAAE,EAAC,EAAE,UAAUA,IAAE;;;IAAI,EAAE,CAAC,EAACH,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAE,GAAE,EAAE;EAAC,GAAG;EAAE,aAAY;EAAG,MAAK;EAAU,UAAS;EAAG,yBAAwBT;EAAE,cAAaD;EAAE,IAAG,EAAE;EAAO,EAAC,EAAE,IAAE,QAAGD,MAAE,cAAc,OAAM;EAAC,KAAIW,YAAE,GAAE,EAAE,aAAa;EAAC,mBAAkB;EAAG,EAACR,IAAE,CAAC,CAAC;EAAE,EAAC,KAAGH,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,MAAK,GAAE,cAAaC,KAAE,kBAAiB,GAAE,kBAAiB,GAAE,WAAU,GAAE,GAAGC,QAAG;AAAE,QAAOF,MAAE,cAAcY,wBAAE,MAAK;EAAC,MAAK;EAAE,cAAaX;EAAE,EAACD,MAAE,cAAcY,wBAAE,QAAO,EAAC,WAAU,GAAE,EAACZ,MAAE,cAAcY,wBAAE,SAAQ;EAAC,gBAAe;EAAG,WAAU;EAAE,CAAC,EAACZ,MAAE,cAAcY,wBAAE,SAAQ;EAAC,cAAa,EAAE;EAAM,eAAc;EAAG,WAAU;EAAE,EAACZ,MAAE,cAAc,IAAG;EAAC,KAAI;EAAE,GAAGE;EAAE,CAAC,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGF,MAAE,YAAY,GAAE,MAAI,GAAE,QAAGC,IAAE,SAAS,UAAQ,EAAE,GAACD,MAAE,cAAcU,UAAE,KAAI;CAAC,KAAI;CAAE,GAAG;CAAE,cAAa;CAAG,MAAK;CAAe,CAAC,GAAC,KAAK,EAAC,KAAGV,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,UAAS,GAAE,UAASC,KAAE,OAAM,IAAE,cAAa,GAAG,MAAG;AAAE,QAAOD,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAI;EAAE,GAAG;EAAE,gBAAe;EAAG,MAAK;EAAc,iBAAgB;EAAE,iBAAgB;EAAE,iBAAgB;EAAI,cAAa;EAAE,EAAC,EAAE,IAAE,MAAGV,MAAE,cAAc,OAAM,EAAC,eAAc,CAAC,GAAE,EAAC,EAAE,CAAC,CAAC;EAAE,EAAC,KAAG,OAAO,OAAO,IAAG;CAAC,MAAK;CAAG,MAAK;CAAG,OAAM;CAAG,OAAM;CAAG,WAAU;CAAG,QAAO;CAAG,OAAM;CAAG,SAAQ;CAAG,CAAC;AAAC,SAAS,GAAG,GAAE,GAAE;CAAC,IAAI,IAAE,EAAE;AAAmB,QAAK,IAAG;AAAC,MAAG,EAAE,QAAQ,EAAE,CAAC,QAAO;AAAE,MAAE,EAAE;;;AAAoB,SAAS,GAAG,GAAE,GAAE;CAAC,IAAI,IAAE,EAAE;AAAuB,QAAK,IAAG;AAAC,MAAG,EAAE,QAAQ,EAAE,CAAC,QAAO;AAAE,MAAE,EAAE;;;AAAwB,SAAS,GAAG,GAAE;CAAC,IAAI,IAAEA,MAAE,OAAO,EAAE;AAAC,QAAO,QAAM;AAAC,IAAE,UAAQ;GAAG,EAAC;;AAAE,IAAI,IAAE,OAAO,UAAQ,cAAYA,MAAE,YAAUA,MAAE;AAAgB,SAAS,EAAE,GAAE;CAAC,IAAI,IAAEA,MAAE,QAAQ;AAAC,QAAO,EAAE,YAAU,KAAK,MAAI,EAAE,UAAQ,GAAG,GAAE;;AAAE,SAAS,EAAE,GAAE;CAAC,IAAI,IAAE,IAAI,EAAC,UAAM,EAAE,EAAE,UAAU,CAAC;AAAC,QAAOA,MAAE,qBAAqB,EAAE,WAAU,GAAE,EAAE;;AAAC,SAAS,GAAG,GAAE,GAAE,GAAE,MAAE,EAAE,EAAC;CAAC,IAAI,IAAEA,MAAE,QAAQ,EAAC,IAAE,GAAG;AAAC,QAAO,QAAM;EAAC,IAAI;EAAE,IAAI,WAAO;GAAC,IAAIG;AAAE,QAAI,IAAI,KAAK,GAAE;AAAC,QAAG,OAAO,KAAG,SAAS,QAAO,EAAE,MAAM;AAAC,QAAG,OAAO,KAAG,YAAU,aAAY,EAAE,QAAO,EAAE,WAAS,MAAE,EAAE,QAAQ,gBAAc,OAAK,KAAK,IAAEA,IAAE,MAAM,GAAC,EAAE;;MAAY,EAACD,MAAED,IAAE,KAAI,QAAGE,IAAE,MAAM,CAAC;AAAC,IAAE,MAAM,GAAE,GAAED,IAAE,GAAE,IAAE,EAAE,YAAU,QAAM,EAAE,aAAa,GAAE,EAAE,EAAC,EAAE,UAAQ;GAAG,EAAC;;AAAE,IAAI,WAAO;CAAC,IAAG,CAAC,GAAE,KAAGF,MAAE,UAAU,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC;AAAC,QAAO,QAAM;AAAC,IAAE,QAAQ,SAAQ,QAAGC,KAAG,CAAC,EAAC,EAAE,0BAAQ,IAAI,KAAG;IAAE,CAAC,EAAE,CAAC,GAAE,KAAE,MAAI;AAAC,IAAE,QAAQ,IAAIA,KAAE,EAAE,EAAC,EAAE,EAAE,CAAC;;;AAAG,SAAS,GAAG,GAAE;CAAC,IAAI,IAAE,EAAE;AAAK,QAAO,OAAO,KAAG,aAAW,EAAE,EAAE,MAAM,GAAC,YAAW,IAAE,EAAE,OAAO,EAAE,MAAM,GAAC;;AAAE,SAAS,EAAE,EAAC,SAAQ,GAAE,UAAS,KAAG,GAAE;AAAC,QAAO,KAAGD,MAAE,eAAe,EAAE,GAACA,MAAE,aAAa,GAAG,EAAE,EAAC,EAAC,KAAI,EAAE,KAAI,EAAC,EAAE,EAAE,MAAM,SAAS,CAAC,GAAC,EAAE,EAAE;;AAAC,IAAI,KAAG;CAAC,UAAS;CAAW,OAAM;CAAM,QAAO;CAAM,SAAQ;CAAI,QAAO;CAAO,UAAS;CAAS,MAAK;CAAmB,YAAW;CAAS,aAAY;CAAI;ACeh1V,SAAS,QAAQ,EACf,WACA,GAAG,SAC6C;AAChD,QACE,iBAAA,GAAA,kBAAA,KAAC,IAAA;EACC,aAAU;EACV,WAAW,cAAA,GACT,6FACA,UACD;EACD,GAAI;GACJ;;AAmCN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,aAAU;EACV,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,oDAAA,CAAqD,EAC3E,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;GAChB,aAAU;GACV,WAAW,cAAA,GACT,wKACA,UACD;GACD,GAAI;IACJ,CAAA;GACE;;AAIV,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,MAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,+DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;EAChB,aAAU;EACV,WAAU;EACV,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,0NACA,UACD;EACD,GAAI;GACJ;;AAiBN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,MAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,uYACA,UACD;EACD,GAAI;GACJ;;AChJN,MAAa,iBAAA,GAAA,yBAAA,KACX,oHACA;CACE,UAAU,EACR,MAAM;EAIJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;ACQD,SAAgB,2BAA0C;AACxD,QAAO;EACL,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;;AAmBH,MAAa,yBAAyB,cAAA,GAEpC,6BAGA,+BAGA,aAGA,mCACA,0CACA,yCACD;AAyHD,MAAa,2BAA2B,cAAA,GACtC,aACA,8BACD;AAgBD,MAAa,uBAAuB,cAAA,GAClC,+BACA,uBACA,2BACD;ACnHD,SAAS,mBACP,EACE,SAAA,WACA,OACA,UACA,cAAc,oBACd,YAAY,qBACZ,oBAAoB,aACpB,eAAe,SACf,WAAW,OACX,WACA,kBACA,YAAY,OACZ,OAAO,UACP,QAAQ,SAER,OACA,OACA,SACA,WAAW,OACX,MAAA,SAAO,MACP,aAAa,MACb,MAAM,eAER,KACA;CACA,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAoB,MAAM;CACvC,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,GAAG;CACxC,MAAM,WAAA,GAAA,MAAA,QAAiB;CAGvB,MAAM,kBAAA,GAAA,MAAA,eACE,UAAQ,MAAM,QAAQ,IAAI,UAAU,MAAM,EAChD,CAAC,WAAS,MAAM,CACjB;CAGD,MAAM,mBAAA,GAAA,MAAA,eAAgC;AACpC,MAAI,CAAC,OAAQ,QAAO;EACpB,MAAM,cAAc,OAAO,aAAa;AACxC,SAAO,UAAQ,QAAQ,QACrB,IAAI,MAAM,aAAa,CAAC,SAAS,YAAY,CAC9C;IACA,CAAC,WAAS,OAAO,CAAC;CAGrB,MAAM,gBAAA,GAAA,MAAA,cACH,gBAAmB;AAClB,MAAI,aAAa,UAAU,YACzB,YAAW,KAAA,EAAU;MAErB,YAAW,YAAY;AAEzB,UAAQ,MAAM;AACd,YAAU,GAAG;IAEf;EAAC;EAAO;EAAU;EAAU,CAC7B;CAGD,MAAM,sBAAsB;AAO1B,SAN+C;GAC7C,OAAO;GACP,SAAS;GACT,QAAQ;GACR,SAAS;GACV,CACe;;CAIlB,MAAM,kBACJ,iBAAA,GAAA,kBAAA,MAAC,SAAA;EAAc;EAAM,cAAc;aACjC,iBAAA,GAAA,kBAAA,KAAC,gBAAA;GAAe,SAAA;aACd,iBAAA,GAAA,kBAAA,MAAC,aAAA;IACM;IACL,SAAQ;IACR,MAAK;IACL,iBAAe;IACf,iBAAc;IACd,cAAY,gBAAgB,SAAS;IACrC,oBAAkB,QAAQ,GAAG,QAAQ,UAAU,UAAU,GAAG,QAAQ,YAAY,KAAA;IACtE;IACV,WAAW,cAAA,GACT,0BAEA,cAAc,EAAE,MAAA,QAAM,CAAC,EACvB,CAAC,kBAAkB,yBACnB,UACD;eAED,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;gBACb,eAAe,iBAAA,GAAA,kBAAA,KAAC,aAAA,EAAY,WAAW,WAAW,IAAA,CAAM,EACxD,iBAAiB,eAAe,QAAQ,YAAA;MACpC,EACP,iBAAA,GAAA,kBAAA,KAAC,aAAA,oBAAA,EAAmB,WAAW,cAAA,GAAG,WAAW,IAAI,sBAAsB,EAAA,CAAI,CAAA;KAC/D;IACC,EACjB,iBAAA,GAAA,kBAAA,KAAC,gBAAA;GACO;GACC;GACP,WAAW,cAAA,GACT,8EACA,eAAe,EACf,iBACD;GACD,OAAO,0BAA0B;aAEjC,iBAAA,GAAA,kBAAA,MAAC,SAAA;IACC,cAAc;IACd,WAAW,cAAA,GACT,kBAEA,oDAEA,sEACA,uDACD;eAEA,cACC,iBAAA,GAAA,kBAAA,KAAC,cAAA;KACC,aAAa;KACb,OAAO;KACP,eAAe;KACf,WAAU;MACV,EAEJ,iBAAA,GAAA,kBAAA,MAAC,aAAA;KAAY,WAAU;gBACrB,iBAAA,GAAA,kBAAA,KAAC,cAAA;MAAa,WAAU;gBAAiC;OAAyB,EAClF,iBAAA,GAAA,kBAAA,KAAC,cAAA;MAAa,WAAU;gBACrB,gBAAgB,KAAK,WAAW;OAC/B,MAAM,aAAa,OAAO;OAC1B,MAAM,aAAa,UAAU,OAAO;AAEpC,cACE,iBAAA,GAAA,kBAAA,MAAC,aAAA;QAEC,OAAO,OAAO,OAAO,MAAM;QAC3B,UAAU,OAAO;QACjB,gBAAgB,aAAa,OAAO,MAAM;QAC1C,WAAW,cAAA,GACT,mEACA,iDACA,oCACA,wDACA,cAAc,+EACd,OAAO,YAAY,gCACpB;;SAED,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EACC,WAAW,cAAA,GACT,WAAW,IACX,YACA,aAAa,0CAA0C,YACxD,EAAA,CACD;SACD,cAAc,iBAAA,GAAA,kBAAA,KAAC,YAAA,EAAW,WAAW,cAAA,GAAG,WAAW,IAAI,uCAAuC,EAAA,CAAI;SACnG,iBAAA,GAAA,kBAAA,KAAC,QAAA;UAAK,WAAU;oBAAY,OAAO;WAAa;;UArB3C,OAAO,OAAO,MAAM,CAsBb;QAEhB;OACW,CAAA;MACH,CAAA;KACN;IACK,CAAA;GACT;AAIZ,KAAI,SAAS,SAAS,QACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA;EACQ;EACA;EACE;EACC;EACV,SAAS;YAER;GACgB;AAIvB,QAAO;;AAIT,MAAa,iBAAA,GAAA,MAAA,YAA2B,mBAAmB;AAK3D,mBAAmB,cAAc;AC7EjC,MAAa,gBAAgB,MAAM,YAGhC,EAAE,SAAS,OAAO,QAAQ,QAAQ,aAAa,QAAQ;AACxD,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,yBAAyB,UAAU;YAC9D,iBAAA,GAAA,kBAAA,MAAC,+BAAsB,MAAA,EAAA,UAAA,CACrB,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,SAAA;GAAQ,SAAA;aAC5B;IAC6B,EAElC,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,QAAA,EAAA,UACrB,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,SAAA;GACrB,OAAO,UAAU,SAAS,UAAU;GACpC,YAAY;GACZ,WAAW;GACX,OAAO,0BAA0B;GACjC,MAAK;GACL,oBAAiB;aAEhB,MAAM,KAAK,MAAM,QAChB,KAAK,UACH,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,WAAA;IAErB,WAAU;IACV,OAAO,EACL,WAAW,qCACZ;IACD,MAAK;MALA,WAAW,MAMhB,GAEF,iBAAA,GAAA,kBAAA,MAAC,+BAAsB,MAAA;IAErB,SAAS,KAAK;IACd,WAAW,cAAA,GACT,0GACA,8BACA,2CACA,kEACA,sDACA,KAAK,SACD,uFACA,mCACL;IACD,MAAK;eAEJ,KAAK,QACJ,iBAAA,GAAA,kBAAA,KAAC,KAAK,MAAA,EACJ,WAAW,cAAA,GACT,WAAW,IACX,oDACA,KAAK,SACD,oCACA,yFACL,EAAA,CACD,EAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;eAAe,KAAK;MAAa,CAAA;MAzB5C,QAAQ,MA0Bc,CAEhC;IAC6B,EAAA,CACH,CAAA,EAAA,CACF;GACzB;EAER;AAEF,cAAc,cAAc;AClR5B,MAAa,iBAAA,GAAA,yBAAA,KAAoB,sCAAsC;CACrE,UAAU;EACR,WAAW;GACT,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,OAAO;GACL,MAAM;GACN,OAAO;GACR;EAGD,SAAS;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,UAAU;GACX;EACF;CACD,iBAAiB;EACf,WAAW;EACX,OAAO;EACP,SAAS;EACV;CACF,CAAC;ACLF,IAAMc,UAAyC;CAC7C,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAwFD,IAAMC,WAA0C;CAC9C,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAED,IAAMC,eAA8C;CAClD,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAED,IAAMC,aAAqC;CACzC,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,MAAM;CACP;AAED,MAAa,aAAA,GAAA,MAAA,aAET,EACE,UAAU,OACV,UACA,WACA,YAAY,UACZ,OAAO,MACP,QAAQ,MACR,UAAU,WACV,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,eAAe,aAAa;CAElC,MAAMC,aAA4B;EAChC,YAAY,aAAa,QAAQ,yBAAyB,SAAS;EACnE,aAAa,aAAa,QAAQ,6BAA6B,aAAa;EAC5E,gBAAgB,QAAQ,QAAQ,cAAc;EAC9C,sBAAsB,QAAQ,QAAQ,cAAc;EACpD,WAAW,OACP,WAAW,QACX,aAAa,QACX,2BACA;EACP;AAKD,QACE,iBAAA,GAAA,kBAAA,KAHW,UAAU,sBAAA,OAAO,OAG3B;EACM;EACL,WAAW,cAAA,GAAG,cAAc;GAAE;GAAW;GAAO;GAAS,CAAC,EAAE,UAAU;EACtE,OAAO;EACP,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;EAEH;GACI;EAGZ;AAED,UAAU,cAAc;AChKxB,IAAM,kBACJ,WACA,OACA,YACkB;CAElB,IAAI,cAAc;AAClB,KAAI,MACF,eAAc;UACL,QACT,eAAc;UACL,UACT,eAAc;AAGhB,QAAO;EACL,YAAY;EACZ,QAAQ,aAAa;EACrB,OAAO;EACP,WAAW,YAAY,sBAAsB;EAC9C;;AAiHH,MAAa,cAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,QACA,WACA,OACA,OACA,SACA,MAAM,MACN,eAAe,QACf,UACA,SACA,QACA,GAAG,SAEL,QACG;CAEH,MAAM,YAAY,UAAQ,aAAa;AAGvC,KAAA,QAAA,IAAA,aAA6B,gBAAgB,cAAc,KAAA,EACzD,SAAQ,KACN,mGACD;CAGH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAG5C,MAAM,eAAA,GAAA,MAAA,cACH,MAAoC;AACnC,aAAW,QAAQ,EAAE;AACrB,YAAU,EAAE;IAEd,CAAC,YAAY,QAAQ,CACtB;CAED,MAAM,cAAA,GAAA,MAAA,cACH,MAAoC;AACnC,aAAW,OAAO,EAAE;AACpB,WAAS,EAAE;IAEb,CAAC,YAAY,OAAO,CACrB;CAED,MAAM,UAAU,QAAQ,KAAK;CAC7B,MAAM,cAAc,WAAW,iBAAiB,SAAS,UAAU;CACnE,MAAM,eAAe,WAAW,iBAAiB,UAAU,UAAU;AAErE,QACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA;EACQ;EACA;EACE;EACT,SAAS,MAAM;EACJ;YAEX,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;;IACZ,QAAQ,iBAAiB,UACxB,iBAAA,GAAA,kBAAA,KAAC,MAAA;KACC,WAAW,cAAA,GACT,4FACA,WAAW,GACZ;KACD,OAAO,EACL,OAAO,YAAY,uBAAuB,qBAC3C;MACD;IAEJ,iBAAA,GAAA,kBAAA,KAAC,SAAA;KACM;KACL,WAAW,cAAA,GACT,cAAc,EAAE,MAAM,WAAW,CAAC,EAClC,aACA,aACD;KACD,OAAO,eAAe,WAAW,OAAO,QAAQ;KACtC;KACV,SAAS;KACT,QAAQ;KACR,GAAI;MACJ;IACD,QAAQ,iBAAiB,WACxB,iBAAA,GAAA,kBAAA,KAAC,MAAA;KACC,WAAW,cAAA,GACT,8FACA,WAAW,GACZ;KACD,OAAO,EACL,OAAO,YAAY,uBAAuB,qBAC3C;MACD;;IAEA;GACW;EAGxB;AAED,WAAW,cAAc;AC5PzB,MAAa,cAAA,GAAA,yBAAA,KAAiB,+DAA+D;CAC3F,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;EACP,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACmCF,IAAM,2BAA2B;AAMjC,IAAM,uBAA6B;AACjC,KAAI,OAAO,aAAa,YAAa;AACrC,UAAS,KAAK,MAAM,WAAW;;AAGjC,IAAM,yBAA+B;AACnC,KAAI,OAAO,aAAa,YAAa;AACrC,UAAS,KAAK,MAAM,WAAW;;AAGjC,IAAM,SAAS,OAA8B;AAC3C,QAAO,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;;AAc1D,IAAM,gBAAA,GAAA,MAAA,eAAuD,KAAK;AAElE,IAAM,wBAAwB;CAC5B,MAAM,WAAA,GAAA,MAAA,YAAqB,aAAa;AACxC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,gEAAgE;AAElF,QAAO;;AAgHT,IAAMC,aAAiC,EACrC,MACA,cACA,MAAA,SAAO,MACP,UACA,GAAG,YACC;CACJ,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,eAAA,GAAA,MAAA,aAA0B,YAAY;AAC1C,eAAa,KAAK;AAClB,QAAM,MAAM,yBAAyB;AACrC,eAAa,MAAM;AACnB,iBAAe,MAAM;IACpB,CAAC,aAAa,CAAC;AAElB,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,KACF,iBAAgB;MAEhB,mBAAkB;AAEpB,eAAa;AACX,qBAAkB;;IAEnB,CAAC,KAAK,CAAC;AAEV,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,KAAM;EAEX,MAAM,gBAAgB,UAA+B;AACnD,OAAI,MAAM,QAAQ,SAChB,cAAa;;AAIjB,WAAS,iBAAiB,WAAW,aAAa;AAClD,eAAa;AACX,YAAS,oBAAoB,WAAW,aAAa;;IAEtD,CAAC,MAAM,YAAY,CAAC;AAEvB,KAAI,CAAC,KAAM,QAAO;AAElB,QACE,iBAAA,GAAA,kBAAA,KAAC,aAAa,UAAA;EAAS,OAAO;GAAE,QAAQ;GAAM,SAAS;GAAa,MAAA;GAAM;GAAW;YACnF,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,MAAK;GACL,cAAW;GACX,mBAAgB;GAChB,GAAI;GAEH;IACG;GACgB;;AAY5B,IAAMC,gBAAuC,EAAE,gBAAgB;CAC7D,MAAM,EAAE,SAAS,cAAc,iBAAiB;CAEhD,MAAMC,iBAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,gBAAgB;EAChB,sBAAsB;EACtB,SAAS,YAAY,IAAI;EACzB,YAAY;EACb,GACD,CAAC,UAAU,CACZ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACC,WAAW,cAAA,GAAG,gDAAgD,UAAU;EACxE,OAAO;EACP,SAAS;EACT,eAAY;GACZ;;AAaN,IAAM,gBAAA,GAAA,MAAA,aACH,EAAE,UAAU,aAAa,QAAQ;CAChC,MAAM,EAAE,MAAA,QAAM,cAAc,iBAAiB;CAE7C,MAAMC,eAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACtB,WAAW,YAAY,iCAAiC;EACxD,SAAS,YAAY,IAAI;EACzB,WAAW,CAAC,YAAY,8BAA8B;EACvD,GACD,CAAC,UAAU,CACZ;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,WAAW,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EAAE,OAAO;aAEpE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EACL,YAAY,4BACb;IACD,EACD,SAAA;GACG;EAGX;AAED,aAAa,cAAc;AAW3B,IAAMC,eAAqC,EAAE,UAAU,gBAAgB;AACrE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,0DAA0D,UAAU;EACpF;GACG;;AAaV,IAAMC,aAAiC,EAAE,UAAU,gBAAgB;AACjE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,YAAY,UAAU;EAAE,OAAO,EAAE,OAAO,yBAAyB;EACjF;GACG;;AAaV,IAAMC,eAAqC,EAAE,UAAU,gBAAgB;AACrE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,gDAAgD,UAAU;EAC1E;GACG;;AAaV,IAAMC,cAAmC,EAAE,UAAU,gBAAgB;AACnE,QACE,iBAAA,GAAA,kBAAA,KAAC,MAAA;EACC,IAAG;EACH,WAAW,cAAA,GAAG,oCAAoC,UAAU;EAC5D,OAAO,EAAE,OAAO,uBAAuB;EAEtC;GACE;;AAaT,IAAMC,oBAA+C,EAAE,UAAU,gBAAgB;AAC/E,QACE,iBAAA,GAAA,kBAAA,KAAC,KAAA;EACC,IAAG;EACH,WAAW,cAAA,GAAG,6BAA6B,UAAU;EACrD,OAAO,EAAE,OAAO,qBAAqB;EAEpC;GACC;;AAYR,IAAMC,cAAmC,EAAE,gBAAgB;CACzD,MAAM,EAAE,YAAY,iBAAiB;CACrC,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CAEvE,MAAMC,qBAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,QAAQ;EACR,OAAO;EACP,WAAW,iBACP,sBACA,YACE,sCACA;EACN,SAAS;EACV,GACD,CAAC,WAAW,eAAe,CAC5B;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACC,SAAS;EACT,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,SAAS,WAAW;EACpB,QAAQ,WAAW;EACnB,WAAW,cAAA,GACT,uDACA,UACD;EACD,OAAO;EACP,MAAK;EACL,cAAW;YAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA,EAAE,WAAW,WAAW,IAAA,CAAM;GACxB;;AA+Bb,MAAa,aAAa;CACxB,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,QAAQ;CACR,OAAO;CACP,aAAa;CACb,OAAO;CACR;AClgBD,MAAa,wBAAA,GAAA,yBAAA,KACX,oJACA;CACE,UAAU,EACR,MAAM;EACJ,MAAM;EACN,SAAS;EACT,SAAS;EACT,OAAO;EACR,EACF;CACD,iBAAiB,EACf,MAAM,QACP;CACF,CACF;ACCD,IAAM,qBAAqB;CACzB,MAAM,aAAA;CACN,SAAS,aAAA;CACT,SAAS,aAAA;CACT,OAAO,aAAA;CACR;AAuBD,IAAM,eAAe,cAAiF;AAOpG,QAN2F;EACzF,MAAM;GAAE,OAAO;GAAkC,MAAM;GAAiC,QAAQ;GAAoC;EACpI,SAAS;GAAE,OAAO;GAAqC,MAAM;GAAoC,QAAQ;GAAuC;EAChJ,SAAS;GAAE,OAAO;GAAqC,MAAM;GAAoC,QAAQ;GAAuC;EAChJ,OAAO;GAAE,OAAO;GAAmC,MAAM;GAAkC,QAAQ;GAAqC;EACzI,CACc;;AAGjB,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,SAAS,aAAa,MAAM,UAAU,OAAO,SAAS,SAAS,WAAW,GAAG,SAAS,QAAQ;CAE/F,MAAM,UAAU,eAAe,YAAY;AAG3C,KAAA,QAAA,IAAA,aAA6B,iBAAiB,SAC5C,SAAQ,KACN,sIACD;CAcH,MAAMG,gBAVkD;EACtD,SAAS;EACT,aAAa;EACb,SAAS;EACT,SAAS;EAET,MAAM;EACN,OAAO;EACR,CAEqD,YAAY;CAElE,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,OAAO,mBAAmB;CAChC,MAAM,SAAS,YAAY,cAAc;CAEzC,MAAMC,kBAAiC;EACrC,YAAY;EACZ,QAAQ;EACR,WAAW,YAAY,OAAO,OAAO;EACrC,WAAW,YAAY,qBAAqB;EAC7C;CAED,MAAMC,sBAAqC;EACzC,YAAY,OAAO;EACnB,WAAW,YAAY,OAAO,OAAO;EACtC;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qBAAqB,EAAE,MAAM,eAAe,CAAC,EAAE,UAAU;EACvE,OAAO;EACP,MAAK;EACL,aAAU;EACV,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;;GAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO;cAEP,iBAAA,GAAA,kBAAA,KAAC,MAAA;KAAK,WAAU;KAAwB,OAAO,EAAE,OAAO,OAAO,OAAO;MAAI;KACtE;GAGN,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAkD,OAAO,EAAE,OAAO,uBAAuB;eACnG;MACC,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAqB,OAAO,EAAE,OAAO,yBAAyB;eACxE;MACC,CAAA;KACA;GAGN,iBAAA,GAAA,kBAAA,KAAC,UAAA;IACC,SAAS;IACT,WAAU;IACV,OAAO,EAAE,OAAO,qBAAqB;IACrC,MAAK;IACL,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA,EAAE,WAAW,WAAW,IAAA,CAAM;KACxB;;GACL;EAGX;AAED,kBAAkB,cAAc;AC3FhC,MAAa,eAAe,MAAM,YAK9B,EACE,SACA,UACA,OAAO,UACP,QAAQ,UACR,aAAa,GACb,MACA,cACA,YAAY,MACZ,aAEF,QACG;CAEH,MAAMC,gBAAqC;EACzC,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;CAGD,MAAMC,cAAmC,EACvC,MAAM,2BACP;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAiB;EAAW;EAAoB;aAC/C,iBAAA,GAAA,kBAAA,KAAC,SAAiB;GAAQ,SAAA;aAAS;IAAmC,EAEtE,iBAAA,GAAA,kBAAA,KAAC,UAAiB,EAAA,UAChB,iBAAA,GAAA,kBAAA,MAAC,UAAiB;GACX;GACC;GACC;GACK;GACZ,WAAW,cAAA,GACT,6BACA,gDACA,0CACA,0CACA,0CACA,0CACA,gBACA,UACD;GACD,OAAO;GACP,MAAK;GACL,cAAW;cAEV,UAEA,aACC,iBAAA,GAAA,kBAAA,KAAC,QAAiB;IAChB,WAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;KACR,CAAA;IAEqB,EAAA,CACH,CAAA;GACJ;EAG7B;AAED,aAAa,cAAc;ACzH3B,MAAa,oBAAA,GAAA,yBAAA,KAAuB,mBAAmB;CACrD,UAAU,EACR,SAAS;EACP,MAAM;EACN,OAAO;EACP,QAAQ;EACR,WAAW;EACX,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CAAC;ACQF,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,UAAU,QACV,OACA,QACA,OACA,GAAG,SAEL,QACG;CACH,MAAMC,iBAAgC;EACpC;EACA;EACA,YAAY;EACZ,gBAAgB;EAChB,WAAW;EACX,GAAG;EACJ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,iBAAiB,EAAE,SAAS,CAAC,EAAE,UAAU;EACvD,OAAO;EACP,eAAY;EACZ,GAAI;GACJ;EAGP;AAED,cAAc,cAAc;ACzB5B,MAAa,eAAA,GAAA,MAAA,aAET,EACE,WACA,OACA,UACA,KAAA,QAAM,GACN,KAAA,QAAM,KACN,OAAO,GACP,WACA,OACA,OACA,SACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CAEnD,MAAM,cAAe,QAAQ,UAAQ,QAAM,SAAQ;CAEnD,MAAMC,cAA6B,EACjC,YAAY,uBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,WAAW;EACrB,YAAY;EACZ,WACE,aAAa,aACT,4BACA,KAAA;EACP;CAED,MAAMC,cAA6B;EACjC,MAAM,QAAQ,WAAW;EACzB,YAAY;EACZ,QAAQ;EACR,WAAW,iBACP,sBACA,aAAa,aACX,6BACA;EACN,WAAW,aACP,gBACA,YACE,gBACA;EACP;CAID,MAAM,cAAe,SAAS,aAAe,CAAC,SAAS,YACrD,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAI,WAAU;aACZ,SACC,iBAAA,GAAA,kBAAA,KAAC,SAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC;IACK,EAEV,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC;IACI,CAAA;GACH,GACJ,KAAA;AAEJ,QACE,iBAAA,GAAA,kBAAA,MAAC,kBAAA;EACC,OAAO,YAAY,KAAA,IAAY;EACxB;EACE;EACT,WAAW,cAAA,GAAG,UAAU,UAAU;aAEjC,aACD,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,cAAc,WAAW;GACzB,cAAc,WAAW;;IAGzB,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;IAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;IAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA;KACM;KACL,MAAK;KACE;KACP,WAAW,MAAM,SAAS,OAAO,EAAE,OAAO,MAAM,CAAC;KACjD,mBAAmB,cAAc,KAAK;KACtC,iBAAiB,cAAc,MAAM;KACrC,oBAAoB,cAAc,KAAK;KACvC,kBAAkB,cAAc,MAAM;KACtC,SAAS,WAAW;KACpB,QAAQ,WAAW;KACd,KAAA;KACA,KAAA;KACC;KACI;KACV,cAAY,SAAS,WAAW,MAAM,IAAI,MAAI,GAAG,MAAI;KACrD,iBAAe;KACf,iBAAe;KACf,iBAAe;KACf,kBAAgB,GAAG;KACnB,WAAU;KACV,OAAO,EAAE,SAAS,QAAQ;KAC1B,GAAI;MACJ;IAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;;IACE,CAAA;GACW;EAGxB;AAED,YAAY,cAAc;AC5G1B,IAAM,eAAA,GAAA,MAAA,eAAqD,KAAK;AAEhE,IAAM,uBAAuB;CAC3B,MAAM,WAAA,GAAA,MAAA,YAAqB,YAAY;AACvC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,8DAA8D;AAEhF,QAAO;;AAqGT,IAAMC,YAA+B,EAAE,OAAO,eAAe,UAAU,gBAAgB;AACrF,QACE,iBAAA,GAAA,kBAAA,KAAC,YAAY,UAAA;EAAS,OAAO;GAAE;GAAO;GAAe;YACnD,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAW,cAAA,GAAG,mBAAmB,UAAU;GAAG;IAAe;GAC7C;;AAa3B,IAAM,YAAA,GAAA,MAAA,aACH,EAAE,UAAU,WAAW,GAAG,SAAS,QAAQ;AAM1C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wDAAwD,UAAU;EAChF,OATmC;GACrC,YAAY;GACZ,QAAQ;GACT;EAOG,MAAK;EACL,GAAI;EAEH;GACG;EAGX;AAED,SAAS,cAAc;AAiBvB,IAAM,eAAA,GAAA,MAAA,aACH,EAAE,OAAO,UAAU,WAAW,YAAY,QAAQ;CACjD,MAAM,EAAE,OAAO,aAAa,kBAAkB,gBAAgB;CAC9D,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,WAAW,gBAAgB;CAEjC,MAAME,YAA2B;EAC/B,YAAY,WAAW,yBAAyB;EAChD,OAAO,WAAW,2BAA2B;EAC7C,WAAW,kBAAkB,CAAC,WAAW,sBAAsB;EAChE;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;EACM;EACL,MAAK;EACL,MAAK;EACL,iBAAe;EACL;EACV,WAAW,cAAA,GACT,6IACA,YAAY,iCACZ,UACD;EACD,OAAO;EACP,eAAe,CAAC,YAAY,gBAAgB,MAAM;EAClD,SAAS,WAAW;EACpB,QAAQ,WAAW;aAElB,UACA,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,YAAY,wBAAwB;IAC7C,CAAA;GAEG;EAGd;AAED,YAAY,cAAc;AAe1B,IAAMC,eAAqC,EAAE,OAAO,UAAU,gBAAgB;CAC5E,MAAM,EAAE,OAAO,gBAAgB,gBAAgB;CAC/C,MAAM,WAAW,gBAAgB;AAEjC,KAAI,CAAC,SAAU,QAAO;AAEtB,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACC,MAAK;EACL,eAAa,CAAC;EACd,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAE5D;GACG;;AA6BV,MAAa,YAAY;CACvB,MAAM;CACN,MAAM;CACN,SAAS;CACT,SAAS;CACV;AChUD,MAAa,eAAA,GAAA,yBAAA,KAAkB,qDAAqD;CAClF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACCF,IAAM,cAAc;CAClB,IAAI;EAAE,OAAO;EAAW,MAAM;EAAW,WAAW;EAAiB;CACrE,IAAI;EAAE,OAAO;EAAY,MAAM;EAAW,WAAW;EAAiB;CACtE,IAAI;EAAE,OAAO;EAAY,MAAM;EAAW,WAAW;EAAiB;CACvE;AAkBD,MAAa,eAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,SACA,UACA,UACA,OACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,IAAI,YAAY,UAAQ;CAE9B,MAAMC,cAA6B;EACjC,YAAY,UAAU,4BAA4B;EAClD,WAAW,kBAAkB,CAAC,WAC1B,sBACA,UACA,uBACA;EACL;CAED,MAAMC,aAA4B,EAChC,YAAY,sBACb;CAGD,MAAM,SACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA;EAAK,WAAU;YACd,iBAAA,GAAA,kBAAA,KAAC,UAAA;GACM;GACL,MAAK;GACL,MAAK;GACL,gBAAc;GACd,cAAY,SAAS;GACX;GACV,WAAW,cAAA,GACT,YAAY,EAAE,MAAA,QAAM,CAAC,EACrB,WAAW,kCAAkC,kBAC7C,CAAC,SAAS,UACX;GACD,OAAO;GACP,eAAe,CAAC,YAAY,WAAW,CAAC,QAAQ;GAChD,SAAS,WAAW;GACpB,QAAQ,WAAW;GACnB,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAW,cAAA,GACT,gFACA,EAAE,MACF,WAAW,EAAE,UACd;IACD,OAAO;KACP;IACK;GACJ;AAGT,KAAI,MACF,QACE,iBAAA,GAAA,kBAAA,MAAC,SAAA;EACC,WAAW,cAAA,GACT,6CACA,WAAW,kCAAkC,kBAC7C,UACD;aAEA,QACD,iBAAA,GAAA,kBAAA,KAAC,QAAA;GAAK,WAAU;GAAqB,OAAO,EAAE,OAAO,yBAAyB;aAC3E;IACI,CAAA;GACD;AAIZ,QAAO;EAEV;AAED,YAAY,cAAc;ACrH1B,MAAa,oBAAA,GAAA,yBAAA,KACX,6IACA;CACE,UAAU,EACR,UAAU;EACR,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,UAAU,OACX;CACF,CACF;AC4ED,MAAa,gBAAA,GAAA,MAAA,aACV,EAAE,UAAU,SAAS,WAAW,OAAO,aAAa,QAAQ;CAC3D,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,aAAA,GAAA,MAAA,QAAmB;CAGzB,MAAMC,gBAA+B;EACnC,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,oBAAkB,YAAY,YAAY,KAAA;aAEzC,UACA,aACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,IAAI;GACJ,WAAW,cAAA,GAAG,iBAAiB,EAAE,UAAU,CAAC,CAAC;GAC7C,OAAO;GACP,MAAK;aAEJ;IACG,CAAA;GAEJ;EAGX;AAED,aAAa,cAAc;AC7G3B,MAAa,yBAAA,GAAA,MAAA,aAKT,EACE,OACA,MAAM,MACN,YAAY,sBACZ,UACA,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAMC,aAA4B,EAChC,OAAO,uBACR;CAED,MAAMC,gBAA+B,EACnC,OAAO,qBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,WACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;EACM;EACL,MAAK;EACL,SAAS;EACT,iBAAe;EACf,WAAW,cAAA,GACT,+FACA,UACD;EACD,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACZ,QAAQ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IAAK,WAAU;IAAU,OAAO;KAAc,EACxD,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAAe;KAAa,CAAA;IACxC,EACL,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;GAAU,WAAU;GAAU,OAAO;IAAiB,GAEvD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;GAAY,WAAU;GAAU,OAAO;IAAiB,CAAA;GAEpD;EAGd;AAED,sBAAsB,cAAc;ACzEpC,IAAM,sBAAA,GAAA,yBAAA,KACJ,+IACA;CACE,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,OAAO;GACR;EACD,SAAS;GACP,UAAU;GACV,QAAQ;GACR,OAAO;GACR;EACF;CACD,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CACF,CACF;AAaD,MAAa,mBAAA,GAAA,MAAA,aAET,EACE,MAAM,MACN,WAAW,IACX,MAAA,QACA,SACA,WACA,cAAc,WACd,GAAG,SAEL,QACG;CACH,MAAMC,iBACJ,YAAY,aACR;EACE,YACE;EACF,WAAW;EACZ,GACD,KAAA;CAEN,MAAMC,eACJ,YAAY,WACR;EACE,YAAY;EACZ,QAAQ;EACT,GACD,KAAA;CAEN,MAAMC,aAA4B,EAChC,OAAO,wBACR;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,MAAK;EACL,cAAY;EACZ,WAAW,cAAA,GAAG,mBAAmB;GAAE,MAAA;GAAM;GAAS,CAAC,EAAE,UAAU;EAC/D,OAAO,kBAAkB;EACzB,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GAAK,MAAM;GAAU,OAAO;IAAc;GACpC;EAGd;AAED,gBAAgB,cAAc;AChE9B,MAAa,kBAAA,GAAA,MAAA,aAET,EACE,UACA,eAAe,IACf,OAAO,iBACP,UAAU,oBACV,UAAU,WACV,aAAa,wBACb,cAAc,sBACd,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,aAAa;CAChE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,eAAe,oBAAoB,KAAA;CACzC,MAAM,QAAQ,eAAe,kBAAkB;CAE/C,MAAM,gBAAgB,MAA2C;EAC/D,MAAM,WAAW,EAAE,OAAO;AAC1B,MAAI,aACF,sBAAqB,SAAS;MAE9B,kBAAiB,SAAS;;CAI9B,MAAM,qBAAqB;AACzB,aAAW,MAAM;;CAGnB,MAAM,iBAAiB,MAA2B;AAChD,MAAI,EAAE,QAAQ,QACZ,eAAc;;CAIlB,MAAMC,kBAAiC,EACrC,WAAW,YAAY,sBAAsB,QAC9C;CAED,MAAMC,cAA6B;EACjC,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,qBAAqB;EACrB,wBAAwB;EACzB;CAED,MAAMC,eAA8B;EAClC,YAAY;EACZ,OAAO;EACP,sBAAsB;EACtB,yBAAyB;EAC1B;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,WAAW,cAAA,GAAG,yCAAyC,UAAU;EACjE,OAAO;aAEP,iBAAA,GAAA,kBAAA,KAAC,SAAA;GACM;GACL,MAAK;GACE;GACP,UAAU;GACV,eAAe,aAAa,KAAK;GACjC,cAAc,aAAa,MAAM;GACjC,WAAW;GACE;GACb,cAAY;GACZ,WAAW,cAAA,GAAG,iDAAiD,WAAW;GAC1E,OAAO;GACP,GAAI;IACJ,EACF,iBAAA,GAAA,kBAAA,MAAC,UAAA;GACC,SAAS;GACT,MAAK;GACL,WAAW,cAAA,GACT,iGACA,YAAY,aAAa,OAC1B;GACD,OAAO;GACP,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA,EAAO,WAAU,WAAA,CAAY,EAC7B,YAAY,aAAa,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAAmB;KAAa,CAAA;IACnE,CAAA;GACL;EAGX;AAED,eAAe,cAAc;ACrG7B,IAAMC,cAAyC;CAC7C,SAAS;CACT,OAAO;CACP,MAAM;CACN,cAAc;CACf;AAuBD,MAAa,qBAAA,GAAA,MAAA,aAET,EACE,QACA,WACA,cACA,SAAA,YAAU;CAAC;CAAW;CAAS;CAAQ;CAAe,EACtD,UAAU,OACV,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,MAAM;CAC3C,MAAM,eAAA,GAAA,MAAA,QAAqC,KAAK;AAGhD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,OAAQ;EAEb,MAAM,sBAAsB,UAA4B;AACtD,OAAI,YAAY,WAAW,CAAC,YAAY,QAAQ,SAAS,MAAM,OAAe,CAC5E,WAAU,MAAM;;EAIpB,MAAM,gBAAgB,UAA+B;AACnD,OAAI,MAAM,QAAQ,SAChB,WAAU,MAAM;;AAIpB,WAAS,iBAAiB,aAAa,mBAAmB;AAC1D,WAAS,iBAAiB,WAAW,aAAa;AAElD,eAAa;AACX,YAAS,oBAAoB,aAAa,mBAAmB;AAC7D,YAAS,oBAAoB,WAAW,aAAa;;IAEtD,CAAC,OAAO,CAAC;CAEZ,MAAM,gBAAA,GAAA,MAAA,mBAAiC;AACrC,aAAW,SAAS,CAAC,KAAK;IACzB,EAAE,CAAC;CAEN,MAAM,qBAAA,GAAA,MAAA,cAAiC,UAAqB;AAC1D,MAAI,UAAU,OAEZ,cAAa,OAAO,cAAc,QAAQ,SAAS,MAAM;MAGzD,cAAa,OAAO,OAAO;AAE7B,YAAU,MAAM;IACf;EAAC;EAAQ;EAAW;EAAa,CAAC;CAErC,MAAM,iBAAiB,MAAiC;AACtD,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,iBAAc;;;CAKlB,MAAMC,gBAAAA,GAAAA,MAAAA,gBAA6C;EACjD,YAAY;EACZ,QAAQ;EACR,OAAO;EACR,GAAG,EAAE,CAAC;CAEP,MAAMC,kBAAAA,GAAAA,MAAAA,gBAA+C;EACnD,GAAG,0BAA0B;EAC7B,WAAW;EACZ,GAAG,EAAE,CAAC;CAEP,MAAM,WAAW,cAAc,QAAQ,aAAA,UAAU,aAAA;AAEjD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,MAAM,SAAS;AAEZ,eAA8D,UAAU;AACzE,OAAI,OAAO,QAAQ,WACjB,KAAI,KAAK;YACA,IACR,KAAsD,UAAU;;EAGrE,WAAW,cAAA,GAAG,yBAAyB,UAAU;EACjD,OAAO,EAAE,QAAQ,SAAS,MAAQ,QAAQ;EAC1C,GAAI;aAGJ,iBAAA,GAAA,kBAAA,KAAC,UAAA;GACC,MAAK;GACL,SAAS;GACT,WAAW;GACX,WAAW,cAAA,GACT,oGACA,wFACA,sCACD;GACD,OAAO;GACP,iBAAe;GACf,iBAAc;aAEb,UACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,QAAA,CAAW,EACjB,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAAS,WAAW,WAAW;IAAI,OAAO,EAAE,OAAO,sBAAsB;KAAI,CAAA,EAAA,CAC7E,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;KAAmB,OAAO,EAAE,OAAO,qBAAqB;eAAE;MAAY;IACtF,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAM,YAAY,SAAA,CAAe;IAClC,iBAAA,GAAA,kBAAA,KAAC,UAAA;KAAS,WAAW,WAAW;KAAI,OAAO,EAAE,OAAO,sBAAsB;MAAI;IAC9E,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;KACC,WAAW,cAAA,GACT,WAAW,IACX,qCACA,UAAU,aACX;KACD,OAAO,EAAE,OAAO,qBAAqB;MACrC;OACD;IAEE,EAGR,UACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,QAAQ,OAAO;GACxB,eAAe,UAAU,MAAM;IAC/B,EAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IAAE,GAAG;IAAgB,QAAQ;IAAO;GAC3C,MAAK;GACL,cAAW;aAEV,UAAQ,KAAK,UAAU;IACtB,MAAM,aAAa,UAAU;AAC7B,WACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;KAEC,MAAK;KACL,eAAe,kBAAkB,MAAM;KACvC,WAAW,cAAA,GACT,yFACA,kDACD;KACD,OAAO;MACL,OAAO,aAAa,uBAAuB;MAC3C,YAAY,aAAa,+BAA+B;MACzD;KACD,MAAK;KACL,iBAAe;gBAEf,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;gBAAe,YAAY;OAAc,EACxD,cACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACZ,cAAc,QACb,iBAAA,GAAA,kBAAA,KAAC,aAAA,SAAA,EAAQ,WAAW,WAAW,IAAA,CAAM,GAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAW,WAAW,IAAA,CAAM,EAEzC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA,EAAM,WAAW,WAAW,IAAA,CAAM,CAAA;OAC/B,CAAA;OAvBH,MAyBE;KAEX;IACE,CAAA,EAAA,CACL,CAAA;GAED;EAGX;AAED,kBAAkB,cAAc;ACpOhC,IAAM,oBAAA,GAAA,yBAAA,KAAuB,2BAA2B;CACtD,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,QAAQ;GACN,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB;EACf,MAAM;EACN,QAAQ;EACT;CACF,CAAC;AAiBF,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,MAAM,MACN,OACA,OACA,WAAW,IACX,cAAc,OACd,MAAA,QACA,QACA,WACA,GAAG,SAEL,QACG;CACH,MAAMC,aAA4B,EAChC,OAAO,yBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;CAED,MAAM,eAAe,QAAiC;AACpD,MAAI,CAAC,eAAe,OAAO,QAAQ,SAAU,QAAO,OAAO,IAAI;AAE/D,MAAI,OAAO,IAAS,QAAO,IAAI,MAAM,KAAS,QAAQ,EAAE,CAAC;AACzD,MAAI,OAAO,IAAM,QAAO,IAAI,MAAM,KAAM,QAAQ,EAAE,CAAC;AACnD,SAAO,OAAO,IAAI;;AAGpB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;EACM;EACL,WAAW,cAAA,GAAG,iBAAiB;GAAE,MAAA;GAAM;GAAQ,CAAC,EAAE,UAAU;EAC5D,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GAAK,MAAM;GAAU,OAAO;IAAc,EAC3C,iBAAA,GAAA,kBAAA,MAAC,QAAA;GAAK,WAAU;;IACb,YAAY,MAAM;IAAC;IAAE;;IACjB,CAAA;GACF;EAGZ;AAED,cAAc,cAAc;AChF5B,IAAMC,WAAsB;CAAC;CAAS;CAAU;CAAQ;AAExD,IAAMC,gBAAsE;CAC1E,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAWD,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,UAAU,WAAW,IAAI,WAAW,OAAO,WAAW,GAAG,SAAS,QAAQ;CAC3E,MAAM,EAAE,OAAO,eAAe,sBAAA,UAAU;CAExC,MAAM,YAAY,UAAQ,SAAO,QAAQ,MAAM,GAAG,KAAK,SAAO;CAC9D,MAAM,WAAW,cAAY,WAAW;CACxC,MAAM,YAAY,cAAY,WAAW;CAEzC,MAAMC,eAA8B;EAClC,YAAY;EACZ,QAAQ;EACT;CAED,MAAMC,aAA4B,EAChC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,MAAK;EACL,SAAS,YAAY;EACrB,cAAY,aAAa,UAAU;EACnC,WAAW,cAAA,GACT,oHACA,YAAY,oBACZ,UACD;EACD,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAAS,MAAM;IAAU,OAAO;KAAc,EAC9C,CAAC,YACA,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAuC,OAAO;cAC3D;KACI,CAAA;IAEL;GACC;EAGd;AAED,iBAAiB,cAAc;ACxC/B,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,GAAG,KAAA,QAAM,KAAK,WAAW,UAAU,GAAG,SAAS,QAAQ;CAChE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAO,IAAI,CAAC;AAElE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,oDACA,+BACA,UACD;EACD,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,kBAAgB,GAAG,KAAK,MAAM,WAAW,CAAC;EAC1C,GAAI;YAEH,OAAO,aAAa,aACjB,SAAS,WAAW,GACpB,YACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IACL,OAAO,GAAG,WAAW;IACrB,YAAY;IACb;IACD;GAEJ;EAGX;AAED,kBAAkB,cAAc;ACnDhC,IAAMC,gBAA0C;CAC9C,QAAQ;CACR,OAAO;CACR;AAED,IAAMC,gBAA4C;CAChD,OAAO;CACP,QAAQ;CACR,KAAK;CACN;AAGD,IAAMC,iBAAiE;CACrE,OAAO;EAAE,IAAI;EAAwB,MAAM;EAA6B;CACxE,QAAQ;EAAE,IAAI;EAAsB,MAAM;EAA2B;CACrE,KAAK;EAAE,IAAI;EAAsB,MAAM;EAA2B;CACnE;AAED,MAAa,wBAAA,GAAA,MAAA,aACV,EAAE,OAAO,SAAS,MAAA,SAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;CACjE,MAAM,SAAS,eAAa;CAE5B,MAAMC,kBAAiC;EACrC,iBAAiB,OAAO;EACxB,WAAW,OAAO;EACnB;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,iDACA,cAAY,SACZ,UACD;EACD,OAAO;EACP,MAAK;EACL,cAAY,WAAW;EACvB,GAAI;YAEH,WAAS,WACR,iBAAA,GAAA,kBAAA,KAAC,QAAA;GAAK,WAAU;aACb,cAAc;IACV;GAEL;EAGX;AAED,qBAAqB,cAAc;AChDnC,IAAMC,aAAqG;CACzG,QAAQ;EACN,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,YAAY;EACb;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,YAAY;EACb;CACF;AAED,MAAa,kBAAA,GAAA,MAAA,aACV,EAAE,OAAO,WAAW,OAAO,aAAa,WAAW,GAAG,SAAS,QAAQ;CACtE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CACjD,MAAM,SAAS,WAAW;CAE1B,MAAMC,cAA6B;EACjC,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,WAAW,YAAY,oBAAoB;EAC5C;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,8DACA,UACD;EACD,OAAO;EACP,oBAAoB,aAAa,KAAK;EACtC,oBAAoB,aAAa,MAAM;EACvC,MAAK;EACL,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,OAAO,MAAM;cAE7B,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,OAAO,YAAA,CAAc,EAChD,MAAA;IACG,EACL,eACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,qBAAqB;aAEpC;IACC,CAAA;GAEF;EAGX;AAED,eAAe,cAAc;AC1D7B,IAAMC,oBAA4C;CAChD,YAAY;CACZ,YAAY;CACZ,QAAQ;CACR,MAAM;CACN,KAAK;CACL,MAAM;CACN,IAAI;CACJ,MAAM;CACN,MAAM;CACN,KAAK;CACN;AAED,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,WAAW,aAAa,MAAM,WAAW,GAAG,SAAS,QAAQ;CAC9D,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA0C,KAAK;CAEnE,MAAMC,YAA2B,EAC/B,WAAW,uBACZ;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,UAAU,UAAU;EAAE,GAAI;aAErD,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;GACP,MAAK;GACL,cAAW;aAEV,UAAU,KAAK,MAAM,MAAM;IAC1B,MAAM,aAAa,KAAK,SAAS,kBAAkB,KAAK,SAAS;IACjE,MAAMC,gBAA+B;KACnC,OAAO,GAAG,KAAK,QAAQ;KACvB,SAAS,gBAAgB,QAAQ,gBAAgB,IAAI,KAAM;KAC3D,YAAY;KACb;AAED,WACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAEC,WAAW,cAAA,GAAG,WAAW;KACzB,OAAO;KACP,MAAK;KACL,cAAY,GAAG,KAAK,KAAK,IAAI,KAAK,QAAQ;KAC1C,iBAAe,KAAK;KACpB,iBAAe;KACf,iBAAe;KACf,oBAAoB,eAAe,EAAE;KACrC,oBAAoB,eAAe,KAAK;OATnC,OAAO,KAAK,KAAK,GAAG,IAUzB;KAEJ;IACE,EAGL,cACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC,UAAU,KAAK,MAAM,MAAM;AAG1B,WACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAEC,WAAU;KACV,oBAAoB,eAAe,EAAE;KACrC,oBAAoB,eAAe,KAAK;;MAExC,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAK,WAAW,cAAA,GAAG,0CATL,KAAK,SAAS,kBAAkB,KAAK,SAAS,eASY,EAAA,CAAI;MAC5E,KAAK;MAAK;MAAE,KAAK;MAAQ;;OANrB,UAAU,KAAK,KAAK,GAAG,IAOvB;KAET;IACE,CAAA;GAEJ;EAGX;AAED,iBAAiB,cAAc;AC3F/B,IAAMC,gBAAiD;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAMC,oBAAuD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAMC,wBAA2D;CAC/D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAGD,IAAMC,eAAoD;CACxD,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;CACP;AASD,MAAa,sBAAA,GAAA,MAAA,aACV,EAAE,UAAU,MAAA,SAAO,MAAM,QAAQ,UAAU,MAAM,WAAW,GAAG,SAAS,QAAQ;CAC/E,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAMC,eAA8B;EAClC,WAAW,YAAY,+BAA+B;EACtD,QAAQ;EACT;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,oBAAoB,aAAa,KAAK;EACtC,oBAAoB,aAAa,MAAM;EACvC,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAW,cAAA,GACT,6EACA,qFACA,cAAY,SACZ,WAAW,+CACZ;GACD,OAAO;GACP,MAAK;GACL,cAAY,gCAAgC;aAE3C;IACG,EACL,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAW,cAAA,GACT,yBACA,sBAAsB,SACtB,kBAAkB,QACnB;GACD,OAAO;IACL,YAAY,aAAa;IACzB,QAAQ;IACR,WAAW;IACZ;GACD,MAAK;GACL,cAAY,WAAW;IACvB,CAAA;GAEA;EAGX;AAED,mBAAmB,cAAc;ACzFjC,MAAa,iBAAA,GAAA,yBAAA,KAAoB,gCAAgC;CAC/D,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACWF,IAAM,qBAAqB,aAA8E;AASvG,QAR2F;EACzF,QAAQ;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA0B;EAC7E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,OAAO;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAyB;EAC3E,SAAS;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA2B;EAC/E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EAC1E,CACgB;;AAGnB,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,OACA,WAAW,UACX,WACA,GAAG,SAEL,QACG;CACH,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CACtD,MAAM,iBAAiB,kBAAkB,SAAS;CAElD,MAAME,cAA6B,EACjC,YAAY,sBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,aAAa;EACvB,YAAY,0BAA0B,eAAe,KAAK,IAAI,eAAe,GAAG;EAChF,WAAW,OAAO,eAAe,QAAQ;EAC1C;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,UAAU,UAAU;EAAE,GAAI;aACpD,aACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAyB,OAAO,EAAE,OAAO,qBAAqB;cAAE;KAEzE,EACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAAqC,OAAO,EAAE,OAAO,yBAAyB;eAC3F,cAAa,IAAA;KACT,CAAA;IACH,EAER,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAW,cAAA,GAAG,cAAc,EAAE,MAAA,QAAM,CAAC,CAAC;GAAE,OAAO;aAClD,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO;IACP,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,iBAAe;IACf,cAAY,aAAa,aAAa;KACtC;IACE,CAAA;GACF;EAGX;AAED,cAAc,cAAc;ACjF5B,IAAMC,cAAmD;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAa,wBAAA,GAAA,MAAA,aACV,EAAE,OAAO,MAAA,SAAO,MAAM,WAAW,MAAM,WAAW,GAAG,SAAS,QAAQ;CACrE,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CAEtD,MAAMC,cAA6B,EACjC,YAAY,sBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,aAAa;EACvB,YACE;EACF,WAAW,WAAW,wBAAwB;EAC9C,WAAW,WAAW,6BAA6B;EACpD;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,gCAAgC,YAAY,SAAO,UAAU;EAC3E,OAAO;EACP,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAY,qBAAqB,aAAa;EAC9C,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IACP;GACE;EAGX;AAED,qBAAqB,cAAc;AC1CnC,MAAa,yBAAA,GAAA,MAAA,aACV,EAAE,SAAA,WAAS,OAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;AAM1D,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,mCAAmC,UAAU;EAC3D,OATmC;GACrC,QAAQ;GACR,YAAY;GACb;EAOG,MAAK;EACL,GAAI;YAEH,UAAQ,KAAK,QAAQ;GACpB,MAAM,WAAW,UAAU,IAAI;AAM/B,UACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAEC,eAAe,WAAW,IAAI,MAAM;IACpC,WAAU;IACV,OAVgC;KAClC,YAAY,WAAW,+BAA+B;KACtD,OAAO,WAAW,iCAAiC;KACpD;IAQG,MAAK;IACL,MAAK;IACL,iBAAe;cAEd,IAAI;MARA,IAAI,MASF;IAEX;GACE;EAGX;AAED,sBAAsB,cAAc;AC1CpC,IAAMG,kBAAqC;CACzC;CACA;CACA;CACD;AAED,MAAa,eAAA,GAAA,MAAA,aAET,EACE,YACA,WAAW,iBACX,gBAAgB,eAChB,WACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,aAAY;EACZ,WAAU;EACV,WAAA;EACA,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,sBAAsB;eAEtC,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,6BAAA,CAA8B,EAAA,aAAA;KAE9C;GACN,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;cAC1C;KAEG;GACJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IAAG,WAAU;cACX,SAAS,KAAK,SAAS,MACtB,iBAAA,GAAA,kBAAA,MAAC,MAAA;KAEC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;gBAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,wBAAwB;OACxC,EACD,QAAA;OARI,WAAW,IASb,CACL;KACC;GACL,iBAAA,GAAA,kBAAA,KAAC,aAAA;IACC,SAAQ;IACR,MAAK;IACL,MAAM,aAAA;IACN,SAAS;IACT,WAAU;cACX;KAEa;GACd,iBAAA,GAAA,kBAAA,MAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,qBAAqB;eAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA,EAAM,WAAU,6BAAA,CAA8B,EAC9C,cAAA;KACC;;GACY;EAGvB;AAED,YAAY,cAAc;ACxE1B,MAAa,0BAAA,GAAA,MAAA,aAKT,EACE,cACA,UACA,YACA,QAAQ,gBACR,YAAY,MACZ,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,eAA8B,EAClC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,QAAQ,UAAU;EAAE,GAAI;aACnD,iBAAA,GAAA,kBAAA,MAAC,MAAA;GACC,WAAU;GACV,OAAO;cAEP,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;IAAW,WAAU;IAAU,OAAO;KAAgB,EACtD,MAAA;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,KAAA;GACC,WAAW,cAAA,GACT,mCACA,aAAa,YACd;GACD,OAAO;;IAEP,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY;MAC3B,aAAa,gBAAgB;MAAC;;MAC1B;IACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,gBAAA,EAAe,WAAU,WAAA,CAAY;MACrC;MAAS;;MACL;IACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,WAAA,CAAY;MACjC;MAAW;;MACP;;IACL,CAAA;GACA;EAGX;AAED,uBAAuB,cAAc;ACpDrC,IAAMC,WAGF;CACF,SAAS;EAAE,UAAU;EAAW,SAAS;EAA8B;CACvE,OAAO;EAAE,UAAU;EAAS,SAAS;EAA4B;CACjE,MAAM;EAAE,UAAU;EAAQ,SAAS;EAA2B;CAC9D,KAAK;EAAE,UAAU;EAAQ,SAAS;EAA0B;CAC7D;AAiBD,MAAa,uBAAA,GAAA,MAAA,aAGV,EAAE,OAAO,OAAO,QAAQ,QAAQ,MAAA,SAAO,MAAM,WAAW,GAAG,SAAS,QAAQ;CAC7E,MAAM,EAAE,UAAU,YAAY,SAAS;AAEvC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,oCAAoC,UAAU;EAC5D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,uBAAA;GACQ;GACD,MAAA;GACN,OAAO;GACP,YAAY;GACZ,WAAW,WAAS,OAAO,IAAI;GAC/B,UAAA;GACA,eAAc;IACd,EACF,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,SAAS;aAExB;IACI,CAAA;GACH;EAER;AAEF,oBAAoB,cAAc;ACrElC,MAAa,4BAAA,GAAA,MAAA,aAKT,EACE,aACA,kBACA,qBAAqB,eACrB,gBAAgB,eAChB,UAAU,GACV,WACA,GAAG,SAEL,QACG;CAEH,MAAM,sBACJ,kBACC,mBAAmB,IAChB,KAAK,MAAM,eAAe,mBAAmB,KAAK,GAClD;CAEN,MAAM,iBAAiB,iBAAiB,KAAK,MAAM,cAAc,GAAG;CAEpE,MAAMC,aAA4B;EAChC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAMC,gBAA+B,EACnC,OAAO,uBACR;AAOD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,cARI;GACpB,GAAG;GACH,GAAG;GACJ,CAK6C,UAAU,UAAU;EAC9D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAA0B,OAAO;;IAC9C,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;KAAU,OAAO;eAAa;MAEvC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAgB,OAAO;gBACnC,YAAY,gBAAgB,EAAC,WAAA;MAC1B;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAU,OAAO;gBAC7B,kBAAiB,IAAA;MACd;;IACF,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAA0B,OAAO;;IAC9C,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;KAAU,OAAO;eAAa;MAEvC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAgB,OAAO;gBACnC,oBAAoB,gBAAgB,EAAC,WAAA;MAClC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAU,OAAO;;MAAa;MACzC,eAAe,gBAAgB;MAAC;;MAC9B;;IACF,CAAA;GACF;EAGX;AAED,yBAAyB,cAAc;AC7EvC,IAAMC,kBAAyD;CAC7D,SAAS;CACT,OAAO;CACP,MAAM;CACN,KAAK;CACN;AAGD,IAAMC,eAAgG;CACpG,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,KAAK;EACH,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACF;AAED,MAAa,mBAAA,GAAA,MAAA,aACV,EAAE,OAAO,OAAO,QAAQ,QAAQ,WAAW,GAAG,SAAS,QAAQ;CAC9D,MAAM,YAAY,aAAa;CAE/B,MAAMC,cAA6B;EACjC,OAAO,UAAU;EACjB,YAAY,UAAU;EACvB;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAQ,UAAU;EAClB,aAAa,UAAU;EACvB,WAAW,UAAU;EACrB,WAAA;EACA,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAA8D,OAAO;eAClF,OAAM,IAAA;KACF,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;cAExC;KACI,CAAA;IACH,EACN,iBAAA,GAAA,kBAAA,KAAC,eAAA;GACQ;GACP,UAAU,gBAAgB;GAC1B,MAAK;IACL,CAAA;GACc;EAGvB;AAED,gBAAgB,cAAc;ACzE9B,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,SAAS,UAAU,GAAG,MAAM,MAAM,WAAW,GAAG,SAAS,QAAQ;CAClE,MAAM,aAAa;EACjB,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,MAAM,gBAAgB;EACpB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACJ;AAED,KAAI,QAAQ,WAAW,EACrB,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,QAAQ,cAAc,UAAU,WAAW,MAAM,UAAU;EACzE,GAAI;YAEH,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;GAEC,OAAO,OAAO;GACd,OAAO,OAAO;GACd,OAAO,OAAO;KAHT,OAAO,MAIZ,CACF;GACE;EAGX;AAED,iBAAiB,cAAc;AC9B/B,MAAa,uBAAA,GAAA,MAAA,aAET,EACE,MACA,WACA,SACA,cACA,QAAQ,GACR,WAAW,SACX,SAAS,EAAE,EACX,WAAW,OACX,UACA,eACA,mBACA,WACA,GAAG,SAEL,QACG;CAEH,MAAM,sBAAsB,eAAe,IACvC,KAAK,MAAM,WAAW,eAAe,KAAK,GAC1C;CACJ,MAAM,iBAAiB,KAAK,MAAM,UAAU,GAAG;CAE/C,MAAMC,iBAAgC;EACpC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,mBAAkC;EACtC,YAAY;EACZ,aAAa;EACd;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,SAAQ;EACR,aAAY;EACZ,WAAW;EACX,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,mBAAmB,UAAU;EAC3C,GAAI;aAGJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,SAAS;GACT,MAAK;GACL,UAAU;GACV,YAAY,MAAM;AAChB,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,OAAE,gBAAgB;AAClB,iBAAY;;;GAGhB,iBAAe;;IAEf,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,uBAAuB;iBAEtC;QACI,EACP,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,UAAA,CAAY,CAAA;OACpC,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACZ,QAAQ,KACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,sBAAsB;kBAEtC,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY,EAC3B,MAAA;QACI,EAER,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;OAAU,WAAU;OAAU,OAAO,EAAE,OAAO,qBAAqB;QAAI,GAExE,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;OAAY,WAAU;OAAU,OAAO,EAAE,OAAO,qBAAqB;QAAI,CAAA;OAExE,CAAA;MACF;IACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;eAEpC;MACG;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,yBAAyB;;MAExC;MAAQ;MAAY;MAAa;;MAC9B;;IACF,EAGL,YACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,OAAO;;IAGN,OAAO,SAAS,KACf,iBAAA,GAAA,kBAAA,MAAC,OAAA;KACC,WAAU;KACV,OAAO;MACL,YAAY;MACZ,aAAa;MACd;gBAED,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,4BAA4B;iBAE5C,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA,EAAc,WAAU,eAAA,CAAgB,EAAA,SAAA;OAErC,EACL,OAAO,KAAK,OAAO,YAClB,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAEC,WAAU;MACV,OAAO,EAAE,OAAO,4BAA4B;iBAC7C,MACI,MAAA;QAJE,QAKD,CACN,CAAA;MACE;IAIR,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO;;OAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;mBAEtC,SAAQ,WAAA;SACL;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;mBAEpC,cAAa,IAAA;SACV;;OACF,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO;;OAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;mBAEtC,qBAAoB,WAAA;SACjB;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;;SACtC;SACG;SAAe;;SACb;;OACF,CAAA;MACF;IAGN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,aAAA;MACC,SAAQ;MACR,MAAK;MACL,MAAM,aAAA;MACN,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,wBAAiB;;MAEnB,WAAU;gBACX;OAEa,EACd,iBAAA,GAAA,kBAAA,KAAC,aAAA;MACC,SAAQ;MACR,MAAK;MACL,MAAM,aAAA;MACN,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,4BAAqB;;MAEvB,WAAU;gBACX;OAEa,CAAA;MACV;;IACF,CAAA;GAEQ;EAGvB;AAED,oBAAoB,cAAc;ACrOlC,MAAa,yBAAA,GAAA,MAAA,aAKT,EACE,MACA,WAAW,SACX,QAAQ,GACR,WAAW,OACX,mBAAmB,OACnB,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAM,eAAe,YAA0B;AAC7C,MAAI,CAAC,iBAAkB,QAAO,OAAO,QAAM;AAC3C,MAAI,WAAS,IAAS,QAAO,IAAI,UAAQ,KAAS,QAAQ,EAAE,CAAC;AAC7D,MAAI,WAAS,IAAM,QAAO,IAAI,UAAQ,KAAM,QAAQ,EAAE,CAAC;AACvD,SAAO,OAAO,QAAM;;AAGtB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAsB,OAAO;cAC1C;KACI,EACP,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,UAAA,CAAY,CAAA;IACpC,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACZ,QAAQ,KACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAAkC,OAAO;eACvD,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY,EAC3B,YAAY,MAAM,CAAA;KACd,EAER,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;IAAU,WAAU;IAAU,OAAO;KAAe,GAErD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;IAAY,WAAU;IAAU,OAAO;KAAe,CAAA;IAErD,CAAA;GACF;EAGX;AAED,sBAAsB,cAAc;ACvEpC,MAAa,2BAAA,GAAA,MAAA,aAKT,EACE,WACA,SACA,cACA,UAAU,OACV,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAMC,kBAAiC,EACrC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,UAAU,gBAAgB,aAAa,UAAU;EAC/D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;GAAU,OAAO;aAC7B;IACG,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAAU,OAAO;;IAC7B,QAAQ,gBAAgB;IAAC;IAAY;IAAa;;IAC/C,CAAA;GACF;EAGX;AAED,wBAAwB,cAAc;ACrCtC,MAAa,0BAAA,GAAA,MAAA,aAKT,EACE,OACA,WAAW,KACX,QAAQ,uBACR,WAAW,MACX,MAAA,SAAO,MACP,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,eAA8B,EAClC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAQD,MAAM,QANc;EAClB,IAAI;GAAE,OAAO;GAAa,OAAO;GAAY,KAAK;GAAW,MAAM;GAAW;EAC9E,IAAI;GAAE,OAAO;GAAW,OAAO;GAAY,KAAK;GAAW,MAAM;GAAW;EAC5E,IAAI;GAAE,OAAO;GAAW,OAAO;GAAY,KAAK;GAAY,MAAM;GAAW;EAC9E,CAEyB;AAE1B,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,MAAA;GACC,WAAW,cAAA,GAAG,yCAAyC,MAAM,MAAM;GACnE,OAAO;cAEN,YAAY,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;IAAO,WAAW,MAAM;IAAM,OAAO;KAAgB,EAClE,MAAA;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAW,cAAA,GACT,MAAM,OACN,oGACD;cAEA;KACI,EACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAW,MAAM;IAAK,OAAO;eAAa,MAC3C,SAAA;KACE,CAAA;IACH,CAAA;GACF;EAGX;AAED,uBAAuB,cAAc;ACnErC,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,MACA,UACA,UACA,aAAa,KACb,SAAS,YACT,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,yBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,WAAW,aAAa,cAAc,2BACtC,UACD;EACD,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GACC,WAAW,cAAA,GACT,aACA,WAAW,aAAa,uBAAuB,UAChD;GACD,OAAO;aAEN;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAW,cAAA,GACT,6CACA,WAAW,cAAc,SAC1B;GACD,OAAO;;IAEP,iBAAA,GAAA,kBAAA,MAAC,KAAA;KACC,MAAM;KACN,WAAU;KACV,OAAO;KACP,cAAY,QAAQ,SAAS;;MAC9B;MACG;MAAS;MAAC,iBAAA,GAAA,kBAAA,KAAC,aAAA,cAAA,EAAa,WAAU,WAAA,CAAY;;MAC9C;IACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,WAAA,CAAY;;MAAS;;MACpC;;IACH,CAAA;GACF;EAGX;AAED,cAAc,cAAc;ACnE5B,MAAa,sBAAA,GAAA,MAAA,aAET,EACE,OACA,WACA,WACA,OAAO,MACP,cAAc,OACd,WACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,mCACA,QAAQ,aACR,UACD;EACD,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;;GACE;EAGX;AAED,mBAAmB,cAAc;AC3CjC,MAAa,iBAAA,GAAA,MAAA,aAET,EAAE,MAAM,OAAO,OAAO,SAAS,UAAU,aAAa,OAAO,WAAW,QAAQ,MAAM,GAAG,QAAQ,GAAG,YAAY,WAAW,SAAS,GAAG,SACvI,QACG;CACH,MAAMC,iBAAgC;EACpC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,mBAAkC;EACtC,YAAY;EACZ,aAAa;EACd;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,SAAQ;EACR,aAAY;EACZ,WAAU;EACV,WAAA;EACA,SAAQ;EACR,WAAW,cAAA,GAAG,+BAA+B,UAAU;EAC9C;EACT,MAAK;EACL,UAAU;EACV,YAAY,MAAM;AAChB,OAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,MAAE,gBAAgB;AAClB,cAAU,EAAiD;;;EAG/D,iBAAe;EACf,cAAY,GAAG,KAAK,SAAS,MAAM,IAAI,QAAQ,YAAY,aAAa,aAAa,SAAS;EAC9F,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqC,OAAO,EAAE,OAAO,uBAAuB;gBACzF;OACI,EACP,iBAAA,GAAA,kBAAA,MAAC,YAAA,EAAA,UAAA;MACE;MAAM;MAAE;SACE,CAAA;MACT,EACN,iBAAA,GAAA,kBAAA,MAAC,QAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,yBAAyB;gBAExC,SACA,aACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAU,6BAAA,CAA8B,GAEnD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA,EAAY,WAAU,6BAAA,CAA8B,CAAA;MAElD,CAAA;KACH;GACN,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,OAAO;IACG;IACV,MAAK;KACL;GAGD,cACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,WAAU;IACV,OAAO;eAGP,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;;MACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;;MACF,EAGL,cACC,iBAAA,GAAA,kBAAA,MAAC,aAAA;KACC,SAAQ;KACR,MAAK;KACL,UAAU,MAAM;AACd,QAAE,iBAAiB;AACnB,kBAAY;;KAEd,WAAU;gBACX,oBACkB,KAAA;MACL,CAAA;KAEZ;;GAEQ;EAGvB;AAED,cAAc,cAAc;AClJ5B,MAAa,oBAAA,GAAA,MAAA,aAET,EACE,eAAe,MACf,WAAW,IACX,aAAa,IACb,QAAQ,EAAE,EACV,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAAoD,KAAK;CAE9E,MAAM,mBAAmB,SAAgC;AACvD,kBAAgB,iBAAiB,OAAO,OAAO,KAAK;;AAGtD,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,qBAAqB,UAAU;EAC7C,WAAU;EACV,OAAO;EACP,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,MAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,uBAAuB;eAEvC,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;KAAW,WAAU;KAAsC,OAAO,EAAE,OAAO,sBAAsB;MAAI,EAAA,eAAA;KAEnG;GACL,iBAAA,GAAA,kBAAA,MAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;;KAEzC,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,2CAAA,CAA4C;OAC3D,aAAa,gBAAgB;OAAC;;OAC1B;KACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;KACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,gBAAA,EAAe,WAAU,2CAAA,CAA4C;OACrE;OAAS;;OACL;KACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;KACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,2CAAA,CAA4C;OACjE;OAAW;;OACP;;KACL;GACJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACZ,MAAM,KAAK,MACV,iBAAA,GAAA,kBAAA,KAAC,eAAA;KAEC,MAAM,EAAE;KACR,OAAO,EAAE;KACT,OAAO,EAAE;KACT,SAAS,EAAE;KACX,UAAU,EAAE;KACZ,KAAK,EAAE;KACP,OAAO,EAAE;KACT,YAAY,iBAAiB,EAAE;KAC/B,eAAe,gBAAgB,EAAE,KAAK;KACtC,kBAAkB;OAVb,EAAE,KAcP,CACF;KACE;;GACI;EAGjB;AAED,iBAAiB,cAAc;AClF/B,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,EAAE,EAAE,WAAW,OAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;AACxE,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,UAAU;EACxB,WAAU;EACV,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,UAAA;GACC,SAAS;GACT,WAAU;GACV,OAAO,EAAE,OAAO,uBAAuB;GACvC,MAAK;GACL,iBAAe;cAEf,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA;KAAc,WAAU;KAAwB,OAAO,EAAE,OAAO,sBAAsB;MAAI,EAC3F,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;gBAAoC,MAAM,QAAO,kBAAA;MAAsB,CAAA;KACnF,EACL,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;IAAU,WAAU;IAAwB,OAAO,EAAE,OAAO,qBAAqB;KAAI,GAEtF,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;IAAY,WAAU;IAAwB,OAAO,EAAE,OAAO,qBAAqB;KAAI,CAAA;IAEnF,EACR,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;aACZ,MAAM,KAAK,MAAM,MAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAA;IAEC,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,aAAa,KAAK;MAHb,QAAQ,IAIb,CACF;IACE,CAAA;GAEE;EAGjB;AAED,kBAAkB,cAAc;AC3ChC,MAAa,uBAAA,GAAA,MAAA,aAET,EACE,UACA,OACA,UACA,aACA,gBAAgB,QAChB,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,2BAA2B,UAAU;EACnD,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;GACC,MAAM;GACN,cAAY;GACZ,SAAS;GACT,SAAQ;GACR,MAAK;IACL,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAqC,OAAO;cACzD;KACI,EACN,YACC,iBAAA,GAAA,kBAAA,MAAC,QAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;eAC1C,MACI,SAAA;KACE,CAAA;IAEL,CAAA;GACF;EAGX;AAED,oBAAoB,cAAc;AC5DlC,IAAMC,SAAsB;CAAC;CAAS;CAAU;CAAQ;AAExD,IAAMC,cAAsE;CAC1E,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAQD,MAAa,kBAAA,GAAA,MAAA,aACV,EAAE,WAAW,UAAU,UAAU,eAAe,WAAW,GAAG,SAAS,QAAQ;CAC9E,MAAM,EAAE,OAAO,eAAe,sBAAA,UAAU;CAExC,MAAM,YAAY,QAAQ,OAAO,QAAQ,MAAM,GAAG,KAAK,OAAO;CAC9D,MAAM,WAAW,YAAY,WAAW;CAExC,MAAMC,eAA8B;EAClC,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACvB;CAED,MAAMC,gBAA+B;EACnC,YAAY;EACZ,WAAW;EACZ;CAED,MAAMC,iBAAgC;EACpC,YAAY;EACZ,QAAQ;EACT;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,WAAW,cAAA,GAAG,2EAA2E,UAAU;EACnG,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;;KACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,WAAU;MACV,OAAO;MACP,MAAK;MACL,cAAW;gBAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;OAAO,WAAU;OAAwB,OAAO,EAAE,OAAO,wBAAwB;QAAI;OAC/E;KACT,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqC,OAAO,EAAE,OAAO,uBAAuB;gBAAE;OAEvF;KACP,iBAAA,GAAA,kBAAA,KAAC,gBAAA;MACC,WAAU;MACV,cAAc;MACd,UAAU;MACV,YAAW;MACX,aAAY;OACZ;;KACE,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;KACC,SAAS,iBAAiB;KAC1B,WAAU;KACV,OAAO;KACP,MAAK;KACL,cAAY,aAAa,YAAY,WAAW,MAAM;eAEtD,iBAAA,GAAA,kBAAA,KAAC,UAAA;MAAS,WAAU;MAAwB,OAAO,EAAE,OAAO,yBAAyB;OAAI;MAClF,EACT,iBAAA,GAAA,kBAAA,KAAC,aAAA;KAAY,SAAQ;KAAY,MAAM,aAAA;KAAQ,WAAU;eAAwB;MAEnE,CAAA;KACV,CAAA;IACF;GACC;EAGd;AAED,eAAe,cAAc;ACtE7B,MAAa,sBAAA,GAAA,MAAA,aAET,EACE,OAAO,kBACP,WAAW,UACX,WAAW,YACX,QAAQ,EAAE,EACV,YAAY,EAAE,EACd,cACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,IAAI;EAAE,OAAO;EAAI,WAAW;EAAG,WAAW;EAAG,GAAG;EAAO;CAE7D,MAAM,iBAAe,aAA6B;AAChD,SAAO,SACJ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,GAAG,CAChB,KAAK,GAAG,CACR,aAAa,CACb,MAAM,GAAG,EAAE;;AAGhB,QACE,iBAAA,GAAA,kBAAA,KAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,OAAO,UAAU;EAC/B,WAAU;EACV,MAAK;EACL,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,oBAAA;MACC,UAAU,cAAY,KAAK;MAC3B,MAAK;MACL,QAAO;OACP,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAA,EAAA,UAAA;MACC,iBAAA,GAAA,kBAAA,KAAC,MAAA;OAAG,WAAU;OAA+B,OAAO,EAAE,OAAO,uBAAuB;iBACjF;QACE;MACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,yBAAyB;;QAEzC,iBAAA,GAAA,kBAAA,MAAC,KAAA;SACC,MAAK;SACL,WAAU;SACV,OAAO,EAAE,OAAO,sBAAsB;;UACvC;UACG;UAAS;UAAC,iBAAA,GAAA,kBAAA,KAAC,aAAA,cAAA,EAAa,WAAU,WAAA,CAAY;;UAC9C;QACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;QACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,WAAA,CAAY;;UAAS;;UACpC;;QACH;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,yBAAyB;;QAEzC,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;WACC,WAAU;WACV,OAAO,EAAE,OAAO,sBAAsB;YACtC;UACD,EAAE;UAAM;;UACJ;QACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;WAAM,WAAU;WAAU,OAAO,EAAE,OAAO,sBAAsB;YAAI;UACpE,EAAE;UAAU;;UACR;QACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA;WAAK,WAAU;WAAU,OAAO,EAAE,OAAO,sBAAsB;YAAI;UACnE,EAAE;UAAU;;UACR;;QACH;SACF,CAAA;MACF,EACL,UAAU,SAAS,KAClB,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,kBAAA,EAA4B,WAAA,CAAa;MACtC,CAAA;KAEJ,EACN,iBAAA,GAAA,kBAAA,KAAC,aAAA,EAAY,YAAY,cAAA,CAAgB,CAAA;IACrC;GACI;EAGjB;AAED,mBAAmB,cAAc;ACtDjC,IAAM,mBAAmB,CACvB;CAAE,OAAO;CAAiB,OAAO;CAAQ,EACzC;CAAE,OAAO;CAAoB,OAAO;CAAW,CAChD;AAMD,MAAa,qBAAA,GAAA,MAAA,aAET,EACE,cACA,kBAAkB,OAClB,eAAe,MACf,gBACA,OAEA,iBACA,mBACA,SAAS,WACT,YAAY,QACZ,cACA,cACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA4C,KAAK;CAGvE,MAAM,qBAAqB,iBAAiB,sBAAsB,KAAA,KAAa,iBAAiB,KAAA;CAGhG,MAAM,iBAAA,GAAA,MAAA,eAA8B;AAClC,SAAO,aAAa,QAAQ,SAAS;AAEnC,OAAI,mBAAmB,KAAK,aAAa,QAAS,QAAO;AAEzD,OAAI,gBAAgB,KAAK,gBAAgB,aAAc,QAAO;AAE9D,OAAI,mBAAmB,oBAAoB,SAAS,KAAK,cAAc,gBAAiB,QAAO;AAC/F,UAAO;IACP;IACD;EAAC;EAAc;EAAiB;EAAc;EAAgB,CAAC;CAGlE,MAAM,eAAA,GAAA,MAAA,eAA4B;AAChC,MAAI,CAAC,aAAc,QAAO;AAE1B,SAAO,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM;GACvC,MAAM,aAAa,cAAc,QAAQ,IAAI;AAC7C,WAAQ,QAAR;IACE,KAAK,UACH,SAAQ,EAAE,UAAU,EAAE,WAAW;IACnC,KAAK,QACH,UAAS,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM;IAC7C,KAAK,OACH,QAAO,EAAE,KAAK,cAAc,EAAE,KAAK,GAAG;IACxC,KAAK,eACH,SAAQ,EAAE,eAAe,EAAE,gBAAgB;IAC7C,QACE,QAAO;;IAEX;IACD;EAAC;EAAe;EAAQ;EAAW;EAAa,CAAC;CAGpD,MAAM,eAAe,UACnB,kBACI,YACA,eACE,GAAG,iBACH,SACJ;CAEJ,MAAMC,uBAAsC,EAC1C,YAAY,kBACb;CAGD,MAAM,yBAAyB,UAAwB;AACrD,MAAI,sBAAsB,UAAU,UAAU,UAAU,WACtD,mBAAkB,MAAM;;AAI5B,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAU;EACV,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,GAAI;aAGJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cAEb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;;KACZ,kBACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA;MAAc,WAAU;MAAU,OAAO,EAAE,OAAO,sBAAsB;OAAI,GAE7E,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;MAAW,WAAU;MAAU,OAAO,EAAE,OAAO,sBAAsB;OAAI;KAE5E,iBAAA,GAAA,kBAAA,KAAC,MAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,uBAAuB;gBAEtC;OACE;KACL,iBAAA,GAAA,kBAAA,MAAC,YAAA;MAAW,SAAQ;iBAAQ,YAAY,QAAO,SAAA;OAAmB;;KAC9D,EAGL,sBACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACZ,gBACC,iBAAA,GAAA,kBAAA,KAAC,mBAAA;KACS;KACG;KACG;MACd,EAEH,qBAAqB,mBACpB,iBAAA,GAAA,kBAAA,KAAC,uBAAA;KACC,SAAS;KACT,OAAO;KACP,UAAU;MACV,CAAA;KAEA,CAAA;IAEJ,EAGL,YAAY,WAAW,IAEtB,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;;IACb,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;eAEP,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;MAAW,WAAU;MAAU,OAAO,EAAE,OAAO,qBAAqB;OAAI;MACrE;IACN,iBAAA,GAAA,kBAAA,KAAC,KAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;eACtC;MAEG;IACH,kBACC,iBAAA,GAAA,kBAAA,KAAC,UAAA;KACC,SAAS;KACT,WAAU;KACV,OAAO,EAAE,OAAO,sBAAsB;eACvC;MAEQ;;IAEP,GAGN,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;aACZ,YAAY,KAAK,MAAM,YACtB,iBAAA,GAAA,kBAAA,KAAC,qBAAA;IAEC,MAAM,KAAK;IACX,WAAW,KAAK;IAChB,SAAS,KAAK;IACd,cAAc,KAAK;IACnB,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,QAAQ,KAAK;IACb,UAAU,kBAAkB;IAC5B,gBAAgB,iBAAiB,kBAAkB,UAAQ,OAAO,QAAM;MATnE,KAAK,KAUV,CACF;IACE,CAAA;GAEE;EAGjB;AAED,kBAAkB,cAAc;ACxOhC,MAAa,uBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,IAAI,UAAU,EAAE,EAAE,WAAW,GAAG,SAAS,QAAQ;AAC1D,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,WAAU;EACV,MAAK;EACL,OAAO;EACP,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,MAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,uBAAuB;gBAEvC,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;MAAO,WAAU;MAAwB,OAAO,EAAE,OAAO,sBAAsB;OAAI,EAAA,sBAAA;MAEjF,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;gBACb;OACI,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqB,OAAO,EAAE,OAAO,qBAAqB;gBAAE;OAErE,CAAA;MACH,CAAA;KACF;GACN,iBAAA,GAAA,kBAAA,KAAC,sBAAA;IAAqB,OAAO;IAAO,MAAK;IAAK,UAAA;KAAW;GACxD,QAAQ,SAAS,KAChB,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACZ,QAAQ,KAAK,QACZ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;KAEC,OAAO,IAAE;KACT,OAAO,IAAE;KACT,OAAO,IAAE;OAHJ,IAAE,MAIP,CACF;KACE;;GAEE;EAGjB;AAED,oBAAoB,cAAc"}
|
|
1
|
+
{"version":3,"file":"trust-score-card-glass-CNcQveNY.cjs","names":["transforms: string[]","cardStyles: CSSProperties","iconMap: Record<AlertVariant, typeof Info>","variantStyles: Record<AlertVariant, AlertStyleVars>","effectiveVariant: AlertVariant","statusVars: Record<AvatarStatus, { bg: string; glow: string }>","avatarStyles: CSSProperties","variantStyles: Record<BadgeVariant, BadgeStyleVars>","baseStyles: Record<ButtonGlassVariant, CSSProperties>","checkboxStyles: CSSProperties","gradients: Record<CircularProgressGradient, { from: string; to: string; glowVar: string }>","React","React","index","composeContextScopes","Primitive","Slot","Node","React","useCallbackRef","React","useCallbackRef","React","index","Primitive","useCallbackRef","count","Primitive","Slot","Node","React","React","useCallbackRef","Primitive","index","React","React","useId","computePosition","platform","detectOverflow","options","arrow","max","offset","flip","placements","sides","side","placement","overflow","hide","shift","min","limitShift","size","getComputedStyle","_e","$","options","_e","offset","offset$1","shift","shift$1","flip","flip$1","size","size$1","hide","hide$1","arrow","arrow$1","limitShift","limitShift$1","useLayoutEffect","React","options","platform","data","arrow$1","arrow$2","Primitive","Slot","Node","React","Arrow","React","Primitive","createContextScope","React","index","Primitive","Slot","Node","React","size","React","createContextScope","React","ANCHOR_NAME","Primitive","CONTENT_NAME","arrow","floatingUIarrow","useCallbackRef","ARROW_NAME","ArrowPrimitive.Root","options","Root2","Primitive","Slot","Node","React","PORTAL_NAME","React","ReactDOM","Primitive","React","React2","Primitive","Slot","Node","React","React","useLayoutEffect","__assign","p","React","cbs","options","Target","React","React","SideCar","React","React","Style","React","SideCar","Popover","React","PopperPrimitive.Root","useId","PopperPrimitive.Anchor","PopoverTrigger","Primitive","PortalPrimitive","PopoverContent","Slot","RemoveScroll","PopperPrimitive.Content","PopperPrimitive.Arrow","Portal","Y","k","B","K","X","T","L","P","N","Slot","Node","React","ae","t","u","p","m","$","H","W","U","J","X","D","G","w","variants: Record<GlassVariant, string>","blurMap: Record<IntensityType, string>","bgVarMap: Record<IntensityType, string>","borderVarMap: Record<IntensityType, string>","glowVarMap: Record<string, string>","cardStyles: CSSProperties","ModalRoot: FC<ModalRootProps>","ModalOverlay: FC<ModalOverlayProps>","overlayStyles: CSSProperties","modalStyles: CSSProperties","ModalHeader: FC<ModalHeaderProps>","ModalBody: FC<ModalBodyProps>","ModalFooter: FC<ModalFooterProps>","ModalTitle: FC<ModalTitleProps>","ModalDescription: FC<ModalDescriptionProps>","ModalClose: FC<ModalCloseProps>","closeButtonStyles: CSSProperties","configs: Record<NotificationType, { color: string; glow: string; iconBg: string }>","variantToType: Record<string, NotificationType>","effectiveType: NotificationType","containerStyles: CSSProperties","iconContainerStyles: CSSProperties","popoverStyles: React.CSSProperties","arrowStyles: React.CSSProperties","skeletonStyles: CSSProperties","trackStyles: CSSProperties","fillStyles: CSSProperties","thumbStyles: CSSProperties","TabsRoot: FC<TabsRootProps>","containerStyles: CSSProperties","tabStyles: CSSProperties","TabsContent: FC<TabsContentProps>","trackStyles: CSSProperties","knobStyles: CSSProperties","tooltipStyles: CSSProperties","textStyles: CSSProperties","chevronStyles: CSSProperties","iconStyles: CSSProperties","gradientStyles: CSSProperties | undefined","subtleStyles: CSSProperties | undefined","iconStyles: CSSProperties","containerStyles: CSSProperties","inputStyles: CSSProperties","buttonStyles: CSSProperties","fieldLabels: Record<SortField, string>","buttonStyles: CSSProperties","dropdownStyles: CSSProperties","textStyles: CSSProperties","iconStyles: CSSProperties","themes: ThemeName[]","themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }>","buttonStyles: CSSProperties","iconStyles: CSSProperties","sizeClasses: Record<StatusSize, string>","statusSymbols: Record<StatusType, string>","statusVarMap: Record<StatusType, { bg: string; glow: string }>","indicatorStyles: CSSProperties","flagVarMap: Record<FlagType, { bg: string; border: string; text: string; statusType: StatusType }>","alertStyles: CSSProperties","defaultLangColors: Record<string, string>","barStyles: CSSProperties","segmentStyles: CSSProperties","sizeClasses: Record<ProfileAvatarSize, string>","statusSizeClasses: Record<ProfileAvatarSize, string>","statusPositionClasses: Record<ProfileAvatarSize, string>","statusVarMap: Record<ProfileAvatarStatus, string>","avatarStyles: CSSProperties","gradients: Record<ProgressGradient, { from: string; to: string; glowVar: string }>","trackStyles: CSSProperties","fillStyles: CSSProperties","sizeClasses: Record<RainbowProgressSize, string>","trackStyles: CSSProperties","fillStyles: CSSProperties","containerStyles: CSSProperties","buttonStyles: CSSProperties","defaultFeatures: readonly string[]","titleStyles: CSSProperties","accentStyles: CSSProperties","statsStyles: CSSProperties","colorMap: Record<\n CircularMetricColor,\n { gradient: CircularProgressGradient; textVar: string }\n>","cardStyles: CSSProperties","mutedStyles: CSSProperties","primaryStyles: CSSProperties","colorToGradient: Record<MetricColor, ProgressGradient>","metricVarMap: Record<MetricColor, { bg: string; text: string; border: string; glow: string }>","valueStyles: CSSProperties","expandedStyles: CSSProperties","metricCardStyles: CSSProperties","titleStyles: CSSProperties","starStyles: CSSProperties","mutedStyles: CSSProperties","mutedStyles: CSSProperties","secondaryStyles: CSSProperties","titleStyles: CSSProperties","accentStyles: CSSProperties","mutedStyles: CSSProperties","titleStyles: CSSProperties","metaStyles: CSSProperties","linkStyles: CSSProperties","expandedStyles: CSSProperties","metricCardStyles: CSSProperties","titleStyles: CSSProperties","themes: ThemeName[]","themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }>","headerStyles: CSSProperties","iconBtnStyles: CSSProperties","themeBtnStyles: CSSProperties","emptyContainerStyles: CSSProperties"],"sources":["../src/lib/variants/alert-glass-variants.ts","../src/components/glass/primitives/style-utils.ts","../src/components/glass/primitives/touch-target.tsx","../src/components/glass/primitives/form-field-wrapper.tsx","../src/components/glass/primitives/interactive-card.tsx","../src/components/glass/ui/alert-glass.tsx","../src/lib/variants/avatar-glass-variants.ts","../src/components/glass/ui/avatar-glass.tsx","../src/lib/variants/badge-glass-variants.ts","../src/components/glass/ui/badge-glass.tsx","../src/lib/variants/button-glass-variants.ts","../src/components/glass/ui/button-glass.tsx","../src/components/glass/ui/checkbox-glass.tsx","../src/components/glass/ui/circular-progress-glass.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/ui/popover.tsx","../node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/cmdk/dist/index.mjs","../src/components/ui/command.tsx","../src/lib/variants/input-glass-variants.ts","../src/lib/variants/dropdown-content-styles.ts","../src/components/glass/ui/combobox-glass.tsx","../src/components/glass/ui/dropdown-glass.tsx","../src/lib/variants/glass-card-variants.ts","../src/components/glass/ui/glass-card.tsx","../src/components/glass/ui/input-glass.tsx","../src/lib/variants/modal-glass-variants.ts","../src/components/glass/ui/modal-glass.tsx","../src/lib/variants/notification-glass-variants.ts","../src/components/glass/ui/notification-glass.tsx","../src/components/glass/ui/popover-glass.tsx","../src/lib/variants/skeleton-glass-variants.ts","../src/components/glass/ui/skeleton-glass.tsx","../src/components/glass/ui/slider-glass.tsx","../src/components/glass/ui/tabs-glass.tsx","../src/lib/variants/toggle-glass-variants.ts","../src/components/glass/ui/toggle-glass.tsx","../src/lib/variants/tooltip-glass-variants.ts","../src/components/glass/ui/tooltip-glass.tsx","../src/components/glass/atomic/expandable-header-glass.tsx","../src/components/glass/atomic/icon-button-glass.tsx","../src/components/glass/atomic/search-box-glass.tsx","../src/components/glass/atomic/sort-dropdown-glass.tsx","../src/components/glass/atomic/stat-item-glass.tsx","../src/components/glass/atomic/theme-toggle-glass.tsx","../src/components/glass/specialized/base-progress-glass.tsx","../src/components/glass/specialized/status-indicator-glass.tsx","../src/components/glass/specialized/flag-alert-glass.tsx","../src/components/glass/specialized/language-bar-glass.tsx","../src/components/glass/specialized/profile-avatar-glass.tsx","../src/lib/variants/progress-glass-variants.ts","../src/components/glass/specialized/progress-glass.tsx","../src/components/glass/specialized/rainbow-progress-glass.tsx","../src/components/glass/specialized/segmented-control-glass.tsx","../src/components/glass/composite/ai-card-glass.tsx","../src/components/glass/composite/career-stats-header-glass.tsx","../src/components/glass/composite/circular-metric-glass.tsx","../src/components/glass/composite/contribution-metrics-glass.tsx","../src/components/glass/composite/metric-card-glass.tsx","../src/components/glass/composite/metrics-grid-glass.tsx","../src/components/glass/composite/repository-card-glass.tsx","../src/components/glass/composite/repository-header-glass.tsx","../src/components/glass/composite/repository-metadata-glass.tsx","../src/components/glass/composite/trust-score-display-glass.tsx","../src/components/glass/composite/user-info-glass.tsx","../src/components/glass/composite/user-stats-line-glass.tsx","../src/components/glass/composite/year-card-glass.tsx","../src/components/glass/sections/career-stats-glass.tsx","../src/components/glass/sections/flags-section-glass.tsx","../src/components/glass/sections/header-branding-glass.tsx","../src/components/glass/sections/header-nav-glass.tsx","../src/components/glass/sections/profile-header-glass.tsx","../src/components/glass/sections/projects-list-glass.tsx","../src/components/glass/sections/trust-score-card-glass.tsx"],"sourcesContent":["/**\n * AlertGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\n// shadcn/ui compatible\nexport type AlertVariant =\n // shadcn/ui compatible variants\n | 'default'\n | 'destructive'\n // Glass UI extended variants\n | 'success'\n | 'warning'\n // Backward compatibility aliases\n | 'info' // alias for 'default'\n | 'error'; // alias for 'destructive'\n\n// Deprecated: use AlertVariant instead\nexport type AlertType = AlertVariant;\n\nexport const alertVariants = cva(\n 'flex items-start gap-2 md:gap-3 p-3 md:p-4 rounded-xl transition-all duration-300 backdrop-blur-sm min-w-96 max-w-2xl',\n {\n variants: {\n variant: {\n default: '',\n destructive: '',\n success: '',\n warning: '',\n info: '', // alias for default\n error: '', // alias for destructive\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n","/**\n * Style Utilities for Glass Components\n *\n * Centralized style constants and helper functions to reduce code duplication\n * and ensure consistency across all glass components.\n */\n\nimport type { CSSProperties } from 'react';\n\n// ============================================\n// ICON SIZES\n// ============================================\n\n/**\n * Standard icon size constants used across all glass components.\n * Provides consistent sizing with responsive variants.\n *\n * @example\n * ```tsx\n * <Icon className={ICON_SIZES.md} />\n * ```\n */\nexport const ICON_SIZES = {\n xs: 'w-2.5 h-2.5 md:w-3 md:h-3',\n sm: 'w-3 h-3 md:w-3.5 md:h-3.5',\n md: 'w-3.5 h-3.5 md:w-4 md:h-4', // Most common - default\n lg: 'w-4 h-4 md:w-5 md:h-5',\n xl: 'w-5 h-5 md:w-6 md:h-6',\n} as const;\n\n/**\n * Type representing available icon sizes\n */\nexport type IconSize = keyof typeof ICON_SIZES;\n\n// ============================================\n// GLASS SURFACE STYLES\n// ============================================\n\n/**\n * Options for generating glass surface styles\n */\nexport interface GlassSurfaceOptions {\n /** CSS variable for background, e.g. 'var(--card-bg)' */\n bg: string;\n /** CSS variable for border color */\n border: string;\n /** Blur intensity level */\n blur?: 'sm' | 'md' | 'lg' | 'xl';\n /** CSS variable for glow/shadow effect */\n shadow?: string;\n}\n\n/**\n * Generate consistent glass surface styles with backdrop blur.\n *\n * Applies glassmorphism effect with configurable blur, background,\n * border, and optional glow shadow.\n *\n * @param options - Surface styling options\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * const styles = getGlassSurfaceStyles({\n * bg: 'var(--card-bg)',\n * border: 'var(--card-border)',\n * blur: 'md',\n * shadow: 'var(--glow-primary)'\n * });\n * ```\n */\nexport function getGlassSurfaceStyles(\n options: GlassSurfaceOptions\n): CSSProperties {\n const blurValue = options.blur ?? 'md';\n return {\n background: options.bg,\n border: `1px solid ${options.border}`,\n backdropFilter: `blur(var(--blur-${blurValue}))`,\n WebkitBackdropFilter: `blur(var(--blur-${blurValue}))`,\n boxShadow: options.shadow ?? 'none',\n };\n}\n\n// ============================================\n// HOVER TRANSFORM STYLES\n// ============================================\n\n/**\n * Options for hover transform effects\n */\nexport interface HoverTransformOptions {\n /** Enable vertical lift effect (translateY) */\n lift?: boolean;\n /** Scale factor on hover (e.g., 1.02) */\n scale?: number;\n}\n\n/**\n * Generate hover transform styles with smooth transitions.\n *\n * Provides consistent hover animations across interactive elements.\n * Supports lift (translateY) and scale effects.\n *\n * @param isHovered - Current hover state\n * @param options - Transform options\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * const styles = getHoverTransformStyles(isHovered, {\n * lift: true,\n * scale: 1.02\n * });\n * ```\n */\nexport function getHoverTransformStyles(\n isHovered: boolean,\n options?: HoverTransformOptions\n): CSSProperties {\n const { lift = true, scale } = options ?? {};\n\n const transforms: string[] = [];\n\n if (lift) {\n transforms.push(isHovered ? 'translateY(-2px)' : 'translateY(0)');\n }\n\n if (scale && isHovered) {\n transforms.push(`scale(${scale})`);\n }\n\n return {\n transform: transforms.join(' ') || 'none',\n transition: 'transform var(--transition-base)',\n };\n}\n\n// ============================================\n// FORM FIELD BORDER COLOR\n// ============================================\n\n/**\n * Options for determining form field border color\n */\nexport interface StateBorderColorOptions {\n /** Error message (highest priority) */\n error?: string;\n /** Success message */\n success?: string;\n /** Focus state */\n isFocused?: boolean;\n /** Default border color when no state is active */\n defaultColor?: string;\n}\n\n/**\n * Determine border color based on form field state.\n *\n * Priority order: error > success > focus > default\n *\n * @param options - State and color options\n * @returns CSS variable string for border color\n *\n * @example\n * ```tsx\n * const borderColor = getStateBorderColor({\n * error: 'Username is required',\n * isFocused: true,\n * defaultColor: 'var(--input-border)'\n * });\n * // Returns: 'var(--alert-danger-text)' due to error priority\n * ```\n */\nexport function getStateBorderColor(\n options: StateBorderColorOptions\n): string {\n if (options.error) return 'var(--alert-danger-text)';\n if (options.success) return 'var(--alert-success-text)';\n if (options.isFocused) return 'var(--input-focus-border)';\n return options.defaultColor ?? 'var(--input-border)';\n}\n\n// ============================================\n// BLUR VALUES\n// ============================================\n\n/**\n * Standard blur values from design system (UI_DESIGN.md)\n *\n * - sm: 8px (subtle effects, close to surface)\n * - md: 16px (standard glassmorphism)\n * - lg: 24px (prominent glass layers)\n * - xl: 32px (heavy blur for modals/overlays)\n */\nexport const BLUR_VALUES = {\n sm: 'var(--blur-sm)', // 8px\n md: 'var(--blur-md)', // 16px\n lg: 'var(--blur-lg)', // 24px\n xl: 'var(--blur-xl)', // 32px\n} as const;\n\n/**\n * Type representing available blur levels\n */\nexport type BlurLevel = keyof typeof BLUR_VALUES;\n\n// ============================================\n// TRANSITION DURATIONS\n// ============================================\n\n/**\n * Standard transition duration constants\n *\n * Matches design system animation tokens\n */\nexport const TRANSITIONS = {\n fast: 'var(--transition-fast)', // 150ms\n base: 'var(--transition-base)', // 200ms\n slow: 'var(--transition-slow)', // 300ms\n} as const;\n\n/**\n * Type representing available transition speeds\n */\nexport type TransitionSpeed = keyof typeof TRANSITIONS;\n","/**\n * TouchTarget Component\n *\n * Ensures minimum touch target size compliance with Apple Human Interface Guidelines.\n * Wraps interactive elements to guarantee accessibility on touch devices.\n *\n * Apple HIG recommends minimum 44×44pt (44×44px) touch targets.\n * Material Design recommends 48×48dp for better accessibility.\n *\n * @see https://developer.apple.com/design/human-interface-guidelines/layout\n */\n\nimport { forwardRef, type ReactNode, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * Props for the TouchTarget component\n */\nexport interface TouchTargetProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Child element(s) to wrap with touch target\n */\n children: ReactNode;\n\n /**\n * Minimum touch target size in pixels\n * @default 44 - Apple HIG minimum\n */\n minSize?: 44 | 48;\n\n /**\n * Center content within touch target\n * @default true\n */\n center?: boolean;\n}\n\n/**\n * TouchTarget wrapper component\n *\n * Ensures interactive elements meet accessibility standards for touch devices.\n * Automatically applies minimum dimensions and optional centering.\n *\n * @example\n * ```tsx\n * // Basic usage with default 44px minimum\n * <TouchTarget>\n * <button className=\"w-8 h-8\">×</button>\n * </TouchTarget>\n *\n * // Material Design 48px minimum\n * <TouchTarget minSize={48}>\n * <Checkbox />\n * </TouchTarget>\n *\n * // Custom alignment\n * <TouchTarget center={false} className=\"justify-start\">\n * <IconButton />\n * </TouchTarget>\n * ```\n */\nexport const TouchTarget = forwardRef<HTMLDivElement, TouchTargetProps>(\n ({ children, minSize = 44, center = true, className, ...props }, ref) => {\n // Map minSize to Tailwind classes\n // 44px = 11 × 4px (min-h-11, min-w-11)\n // 48px = 12 × 4px (min-h-12, min-w-12)\n const sizeClass = minSize === 44 ? 'min-h-11 min-w-11' : 'min-h-12 min-w-12';\n\n return (\n <div\n ref={ref}\n className={cn(\n sizeClass,\n center && 'flex items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTouchTarget.displayName = 'TouchTarget';\n","/**\n * FormFieldWrapper Component\n *\n * Unified wrapper for form controls with label, validation states, and messages.\n * Eliminates code duplication across InputGlass, SliderGlass, ComboBoxGlass, etc.\n *\n * Handles:\n * - Label with optional required indicator\n * - Error messages (highest priority, red)\n * - Success messages (green, shown if no error)\n * - Consistent spacing and typography\n */\n\nimport { forwardRef, type ReactNode, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * Props for the FormFieldWrapper component\n */\nexport interface FormFieldWrapperProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Label text displayed above the field\n */\n label?: string;\n\n /**\n * Error message - takes priority over success\n * Displays in red below the field\n */\n error?: string;\n\n /**\n * Success message - displays in green if no error\n * Displays below the field\n */\n success?: string;\n\n /**\n * ID to link label with input via htmlFor\n * Should match the input's id attribute\n */\n htmlFor?: string;\n\n /**\n * Shows red asterisk (*) next to label\n * @default false\n */\n required?: boolean;\n\n /**\n * The form control element(s) to wrap\n */\n children: ReactNode;\n}\n\n/**\n * FormFieldWrapper component\n *\n * Provides consistent structure for form fields with labels and validation messages.\n * Used by InputGlass, SliderGlass, and other form components.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <FormFieldWrapper label=\"Email\" htmlFor=\"email-input\">\n * <input id=\"email-input\" type=\"email\" />\n * </FormFieldWrapper>\n *\n * // With validation\n * <FormFieldWrapper\n * label=\"Username\"\n * error=\"Username is required\"\n * required\n * htmlFor=\"username\"\n * >\n * <input id=\"username\" />\n * </FormFieldWrapper>\n *\n * // Success state\n * <FormFieldWrapper\n * label=\"Password\"\n * success=\"Strong password\"\n * htmlFor=\"password\"\n * >\n * <input id=\"password\" type=\"password\" />\n * </FormFieldWrapper>\n * ```\n */\nexport const FormFieldWrapper = forwardRef<HTMLDivElement, FormFieldWrapperProps>(\n (\n {\n label,\n error,\n success,\n htmlFor,\n required,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col gap-1 md:gap-1.5', className)}\n {...props}\n >\n {label && (\n <label\n htmlFor={htmlFor}\n className=\"text-xs md:text-sm font-medium\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {label}\n {required && (\n <span className=\"text-[var(--alert-danger-text)] ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </label>\n )}\n\n {children}\n\n {error && (\n <p\n className=\"text-xs\"\n style={{ color: 'var(--alert-danger-text)' }}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {error}\n </p>\n )}\n\n {success && !error && (\n <p\n className=\"text-xs\"\n style={{ color: 'var(--alert-success-text)' }}\n aria-live=\"polite\"\n >\n {success}\n </p>\n )}\n </div>\n );\n }\n);\n\nFormFieldWrapper.displayName = 'FormFieldWrapper';\n","/**\n * InteractiveCard Component\n *\n * Unified wrapper for card components with hover animations and glass effects.\n * Eliminates hover state duplication in MetricCardGlass, YearCardGlass,\n * AICardGlass, RepositoryCardGlass, and other card components.\n *\n * Features:\n * - Hover lift animation (translateY -2px)\n * - Optional glow effects\n * - Glass surface with backdrop blur\n * - Configurable backgrounds and borders\n */\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\n\n/**\n * Props for the InteractiveCard component\n */\nexport interface InteractiveCardProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Enable hover lift effect (translateY -2px)\n * @default true\n */\n hoverLift?: boolean;\n\n /**\n * CSS variable for hover glow effect\n * @example 'var(--glow-primary)'\n */\n hoverGlow?: string;\n\n /**\n * CSS variable for hover background\n * @example 'var(--card-hover-bg)'\n */\n hoverBg?: string;\n\n /**\n * CSS variable for base background\n * @default 'var(--card-bg)'\n */\n baseBg?: string;\n\n /**\n * CSS variable for border color\n * @default 'var(--card-border)'\n */\n borderColor?: string;\n\n /**\n * CSS variable for hover border color\n */\n hoverBorderColor?: string;\n\n /**\n * Blur level for glass effect\n * @default 'sm'\n */\n blur?: 'sm' | 'md' | 'lg' | 'xl';\n\n /**\n * Disable all hover interactions\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Border radius class\n * @default 'rounded-2xl'\n */\n rounded?: 'rounded-xl' | 'rounded-2xl' | 'rounded-3xl';\n\n /**\n * Transition speed\n * @default 'var(--transition-slow)'\n */\n transition?: string;\n}\n\n/**\n * InteractiveCard component\n *\n * Provides consistent hover animations and glass effects for card components.\n * Replaces ~80 lines of duplicated hover state management across 4+ components.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <InteractiveCard>\n * <h3>Card Title</h3>\n * <p>Card content</p>\n * </InteractiveCard>\n *\n * // With hover effects\n * <InteractiveCard\n * hoverLift\n * hoverGlow=\"var(--glow-primary)\"\n * hoverBg=\"var(--card-hover-bg)\"\n * hoverBorderColor=\"var(--card-hover-border)\"\n * >\n * <MetricContent />\n * </InteractiveCard>\n *\n * // Custom blur and rounding\n * <InteractiveCard\n * blur=\"md\"\n * rounded=\"rounded-3xl\"\n * baseBg=\"var(--metric-emerald-bg)\"\n * >\n * <StatusCard />\n * </InteractiveCard>\n * ```\n */\nexport const InteractiveCard = forwardRef<HTMLDivElement, InteractiveCardProps>(\n (\n {\n hoverLift = true,\n hoverGlow,\n hoverBg,\n baseBg = 'var(--card-bg)',\n borderColor = 'var(--card-border)',\n hoverBorderColor,\n blur = 'sm',\n disabled = false,\n rounded = 'rounded-2xl',\n transition = 'var(--transition-slow)',\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover({ includeFocus: !disabled });\n\n const cardStyles: CSSProperties = {\n // Background\n background: isHovered && hoverBg ? hoverBg : baseBg,\n\n // Border\n border: `1px solid ${\n isHovered && hoverBorderColor ? hoverBorderColor : borderColor\n }`,\n\n // Glassmorphism\n backdropFilter: `blur(var(--blur-${blur}))`,\n WebkitBackdropFilter: `blur(var(--blur-${blur}))`,\n\n // Hover transform\n transform: hoverLift && isHovered && !disabled ? 'translateY(-2px)' : 'translateY(0)',\n\n // Glow effect\n boxShadow: isHovered && hoverGlow && !disabled ? hoverGlow : 'none',\n\n // Transition\n transition: `all ${transition}`,\n\n // User styles override\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(rounded, className)}\n style={cardStyles}\n {...(disabled ? {} : hoverProps)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nInteractiveCard.displayName = 'InteractiveCard';\n","/**\n * AlertGlass Component\n *\n * Glass-themed alert with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - shadcn/ui compatible variants (default, destructive)\n * - Extended Glass UI variants (success, warning)\n * - Optional title\n * - Dismissible option\n * - Backdrop blur effect\n */\n\nimport { forwardRef, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport {\n Info,\n CheckCircle,\n AlertTriangle,\n AlertCircle,\n X,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { alertVariants } from '@/lib/variants/alert-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\nimport type { AlertVariant } from '@/lib/variants/alert-glass-variants';\n\n// ========================================\n// ICON MAP\n// ========================================\n\nconst iconMap: Record<AlertVariant, typeof Info> = {\n default: Info,\n destructive: AlertCircle,\n success: CheckCircle,\n warning: AlertTriangle,\n // Aliases\n info: Info,\n error: AlertCircle,\n};\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\ntype AlertStyleVars = { bg: string; border: string; text: string };\n\nconst variantStyles: Record<AlertVariant, AlertStyleVars> = {\n // shadcn/ui compatible variants\n default: {\n bg: 'var(--alert-default-bg)',\n border: 'var(--alert-default-border)',\n text: 'var(--alert-default-text)',\n },\n destructive: {\n bg: 'var(--alert-destructive-bg)',\n border: 'var(--alert-destructive-border)',\n text: 'var(--alert-destructive-text)',\n },\n // Glass UI extended variants\n success: {\n bg: 'var(--alert-success-bg)',\n border: 'var(--alert-success-border)',\n text: 'var(--alert-success-text)',\n },\n warning: {\n bg: 'var(--alert-warning-bg)',\n border: 'var(--alert-warning-border)',\n text: 'var(--alert-warning-text)',\n },\n // Backward compatibility aliases\n info: {\n bg: 'var(--alert-default-bg)',\n border: 'var(--alert-default-border)',\n text: 'var(--alert-default-text)',\n },\n error: {\n bg: 'var(--alert-destructive-bg)',\n border: 'var(--alert-destructive-border)',\n text: 'var(--alert-destructive-text)',\n },\n};\n\nconst getAlertStyles = (variant: AlertVariant): CSSProperties => {\n const config = variantStyles[variant];\n return {\n background: config.bg,\n border: `1px solid ${config.border}`,\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the AlertGlass component\n *\n * A glass-themed alert with semantic variants, dismissible option, and automatic icon selection.\n * Features theme-aware styling and WCAG-compliant role attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Dismissible alerts include a keyboard-accessible close button (Tab + Enter/Space)\n * - **Focus Management:** Close button receives visible focus ring (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"alert\"` for immediate announcement to screen readers (WCAG 4.1.3)\n * - **Icon Semantics:** Icons are decorative and hidden from screen readers with `aria-hidden=\"true\"`\n * - **Variant Semantics:** Each variant uses distinct colors and icons for multi-modal communication (color + icon)\n * - **Touch Targets:** Dismiss button meets minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** All variant text and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic alert (info/default variant)\n * <AlertGlass title=\"Information\" variant=\"default\">\n * This is an informational message\n * </AlertGlass>\n *\n * // Error alert with aria-live for dynamic updates\n * <AlertGlass variant=\"destructive\" title=\"Error\" aria-live=\"assertive\">\n * Your session has expired. Please log in again.\n * </AlertGlass>\n *\n * // Success alert\n * <AlertGlass variant=\"success\" title=\"Success\">\n * Your changes have been saved successfully.\n * </AlertGlass>\n *\n * // Warning alert\n * <AlertGlass variant=\"warning\" title=\"Warning\">\n * Your subscription expires in 3 days.\n * </AlertGlass>\n *\n * // Dismissible alert with accessible close button\n * <AlertGlass\n * variant=\"default\"\n * title=\"Welcome\"\n * dismissible\n * onDismiss={() => setShowAlert(false)}\n * >\n * Check out our new features!\n * </AlertGlass>\n *\n * // Alert without title\n * <AlertGlass variant=\"destructive\">\n * Quick error message without title\n * </AlertGlass>\n *\n * // Form validation alert\n * <form onSubmit={handleSubmit}>\n * {formError && (\n * <AlertGlass variant=\"destructive\" title=\"Validation Error\" role=\"alert\">\n * {formError}\n * </AlertGlass>\n * )}\n * <InputGlass label=\"Email\" />\n * <ButtonGlass type=\"submit\">Submit</ButtonGlass>\n * </form>\n * ```\n */\nexport interface AlertGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'title'>,\n VariantProps<typeof alertVariants> {\n readonly title?: string;\n readonly children: ReactNode;\n readonly dismissible?: boolean;\n readonly onDismiss?: () => void;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const AlertGlass = forwardRef<HTMLDivElement, AlertGlassProps>(\n (\n {\n className,\n variant = 'default',\n title,\n children,\n dismissible,\n onDismiss,\n ...props\n },\n ref\n ) => {\n // Ensure variant is never null/undefined for type safety\n const effectiveVariant: AlertVariant = variant ?? 'default';\n\n const config = variantStyles[effectiveVariant];\n const Icon = iconMap[effectiveVariant];\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ variant: effectiveVariant }), className)}\n style={getAlertStyles(effectiveVariant)}\n role=\"alert\"\n {...props}\n >\n <Icon\n className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 mt-0.5\"\n style={{ color: config.text }}\n />\n <div className=\"flex-1\">\n {title && (\n <p\n className=\"font-medium text-xs md:text-sm mb-0.5 md:mb-1\"\n style={{ color: config.text }}\n >\n {title}\n </p>\n )}\n <p className=\"text-xs md:text-sm opacity-80\" style={{ color: config.text }}>\n {children}\n </p>\n </div>\n {dismissible && (\n <button\n onClick={onDismiss}\n className=\"p-0.5 md:p-1 rounded transition-colors duration-200 hover:bg-black/5 flex-shrink-0\"\n aria-label=\"Dismiss alert\"\n >\n <X className={ICON_SIZES.md} style={{ color: config.text }} />\n </button>\n )}\n </div>\n );\n }\n);\n\nAlertGlass.displayName = 'AlertGlass';\n","/**\n * AvatarGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport const avatarSizes = cva(\n 'rounded-full flex items-center justify-center font-semibold transition-all duration-300',\n {\n variants: {\n size: {\n sm: 'w-7 h-7 md:w-8 md:h-8 text-[10px] md:text-xs',\n md: 'w-9 h-9 md:w-10 md:h-10 text-xs md:text-sm',\n lg: 'w-10 h-10 md:w-12 md:h-12 text-sm md:text-base',\n xl: 'w-14 h-14 md:w-16 md:h-16 text-base md:text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const statusSizes = cva('absolute -bottom-0.5 -right-0.5 rounded-full', {\n variants: {\n size: {\n sm: 'w-2 h-2 md:w-2.5 md:h-2.5',\n md: 'w-2.5 h-2.5 md:w-3 md:h-3',\n lg: 'w-3 h-3 md:w-3.5 md:h-3.5',\n xl: 'w-3.5 h-3.5 md:w-4 md:h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * AvatarGlass Component\n *\n * Glass-themed avatar with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover\n * - Status indicator with glow\n * - Size variants\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { avatarSizes, statusSizes } from '@/lib/variants/avatar-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\n/**\n * Avatar status indicator type\n */\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the AvatarGlass component\n *\n * A glass-themed avatar component with status indicators and size variants.\n * Displays user initials with theme-aware styling and optional status badge.\n *\n * @example\n * ```tsx\n * // Basic avatar\n * <AvatarGlass name=\"John Doe\" />\n *\n * // With status indicator\n * <AvatarGlass name=\"Jane Smith\" status=\"online\" size=\"lg\" />\n *\n * // Different sizes\n * <AvatarGlass name=\"Alex\" size=\"sm\" />\n * <AvatarGlass name=\"Sam\" size=\"xl\" />\n *\n * // As a link (asChild pattern)\n * <AvatarGlass asChild name=\"Sarah Connor\" status=\"online\">\n * <a href=\"/profile/sarah\">View Profile</a>\n * </AvatarGlass>\n * ```\n */\nexport interface AvatarGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof avatarSizes> {\n /**\n * Render as child element instead of div (polymorphic rendering).\n * Useful for making avatars clickable links.\n * @default false\n * @example\n * ```tsx\n * <AvatarGlass asChild name=\"John\">\n * <a href=\"/profile\">View Profile</a>\n * </AvatarGlass>\n * ```\n */\n readonly asChild?: boolean;\n\n /**\n * Full name of the user. Automatically generates initials (first 2 letters).\n * @example \"John Doe\" → \"JD\"\n */\n readonly name: string;\n\n /**\n * Optional status indicator with glow effect\n * @default undefined\n */\n readonly status?: AvatarStatus;\n\n /**\n * Size variant of the avatar\n * @default \"md\"\n */\n readonly size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst getInitials = (name: string): string => {\n if (!name || name.trim().length === 0) return '?';\n return name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Status colors mapping to CSS variables\nconst getStatusVars = (statusType: AvatarStatus): { bg: string; glow: string } => {\n const statusVars: Record<AvatarStatus, { bg: string; glow: string }> = {\n online: { bg: 'var(--status-online)', glow: 'var(--status-online-glow)' },\n offline: { bg: 'var(--status-offline)', glow: 'none' },\n busy: { bg: 'var(--status-busy)', glow: 'var(--status-busy-glow)' },\n away: { bg: 'var(--status-away)', glow: 'var(--status-away-glow)' },\n };\n return statusVars[statusType];\n};\n\nexport const AvatarGlass = forwardRef<HTMLDivElement, AvatarGlassProps>(\n ({ asChild = false, name, size = 'md', status, className, ...props }, ref) => {\n const { isHovered, hoverProps } = useHover();\n\n const avatarStyles: CSSProperties = {\n background: 'var(--avatar-bg)',\n border: '2px solid var(--avatar-border)',\n boxShadow: isHovered ? 'var(--avatar-hover-glow)' : 'var(--avatar-shadow)',\n color: '#ffffff',\n };\n\n const initials = getInitials(name);\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n className={cn('relative inline-flex', className)}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {/* Avatar circle */}\n <div\n className={cn(avatarSizes({ size }))}\n style={avatarStyles}\n role=\"img\"\n aria-label={`Avatar for ${name}`}\n >\n {initials}\n </div>\n\n {/* Status indicator */}\n {status && (\n <span\n className={cn(statusSizes({ size }))}\n style={{\n background: getStatusVars(status).bg,\n boxShadow: getStatusVars(status).glow,\n }}\n role=\"status\"\n aria-label={`Status: ${status}`}\n />\n )}\n </Comp>\n );\n }\n);\n\nAvatarGlass.displayName = 'AvatarGlass';\n","/**\n * BadgeGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type BadgeVariant =\n // shadcn/ui compatible variants\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n // Glass UI extended variants\n | 'success'\n | 'warning'\n | 'info';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center gap-1 md:gap-1.5 rounded-full font-medium',\n {\n variants: {\n size: {\n sm: 'px-1 py-0.5 md:px-1.5 text-[9px] md:text-[10px]',\n md: 'px-2 py-0.5 md:px-2.5 text-[10px] md:text-xs',\n lg: 'px-2.5 py-0.5 md:px-3 md:py-1 text-xs md:text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n","/**\n * BadgeGlass Component\n *\n * Glass-themed badge with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - shadcn/ui compatible variants (default, secondary, destructive, outline)\n * - Extended Glass UI variants (success, warning, info)\n * - Size options\n * - Optional animated dot\n */\n\nimport { forwardRef, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { badgeVariants, type BadgeVariant } from '@/lib/variants/badge-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\ntype BadgeStyleVars = { bg: string; text: string; border: string };\n\nconst variantStyles: Record<BadgeVariant, BadgeStyleVars> = {\n // shadcn/ui compatible variants\n default: {\n bg: 'var(--badge-default-bg)',\n text: 'var(--badge-default-text)',\n border: 'var(--badge-default-border)',\n },\n secondary: {\n bg: 'var(--badge-secondary-bg)',\n text: 'var(--badge-secondary-text)',\n border: 'var(--badge-secondary-border)',\n },\n destructive: {\n bg: 'var(--badge-destructive-bg)',\n text: 'var(--badge-destructive-text)',\n border: 'var(--badge-destructive-border)',\n },\n outline: {\n bg: 'var(--badge-outline-bg)',\n text: 'var(--badge-outline-text)',\n border: 'var(--badge-outline-border)',\n },\n // Glass UI extended variants\n success: {\n bg: 'var(--badge-success-bg)',\n text: 'var(--badge-success-text)',\n border: 'var(--badge-success-border)',\n },\n warning: {\n bg: 'var(--badge-warning-bg)',\n text: 'var(--badge-warning-text)',\n border: 'var(--badge-warning-border)',\n },\n info: {\n bg: 'var(--badge-info-bg)',\n text: 'var(--badge-info-text)',\n border: 'var(--badge-info-border)',\n },\n};\n\nconst getBadgeStyles = (variant: BadgeVariant): CSSProperties => {\n const v = variantStyles[variant] || variantStyles.default;\n return {\n background: v.bg,\n color: v.text,\n border: `1px solid ${v.border}`,\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the BadgeGlass component\n *\n * A glass-themed badge with semantic variants and optional animated status dot.\n * Features shadcn/ui compatible variants plus extended Glass UI variants.\n *\n * @accessibility\n * - **Keyboard Navigation:** Badges are non-interactive by default (display-only)\n * - **Focus Management:** N/A - badges do not receive focus unless wrapped in interactive elements\n * - **Screen Readers:** Semantic `<span>` element, content announced naturally\n * - **Status Indicators:** Use `aria-label` to provide context for status badges (e.g., \"Status: Active\")\n * - **Animated Dot:** Pulse animation respects `prefers-reduced-motion` settings\n * - **Touch Targets:** N/A for display badges, ensure 44x44px if wrapping in button/link (WCAG 2.5.5)\n * - **Color Contrast:** All variant text meets WCAG AA contrast ratio 4.5:1 against badge background\n * - **Motion:** Dot pulse animation can be disabled for users with motion sensitivity\n *\n * @example\n * ```tsx\n * // Basic badge with variant\n * <BadgeGlass variant=\"default\">New</BadgeGlass>\n *\n * // Status badge with aria-label for screen readers\n * <BadgeGlass variant=\"success\" aria-label=\"Status: Active\">\n * Active\n * </BadgeGlass>\n *\n * // Different variants (shadcn/ui compatible)\n * <BadgeGlass variant=\"default\">Default</BadgeGlass>\n * <BadgeGlass variant=\"secondary\">Secondary</BadgeGlass>\n * <BadgeGlass variant=\"destructive\">Error</BadgeGlass>\n * <BadgeGlass variant=\"outline\">Outline</BadgeGlass>\n *\n * // Extended Glass UI variants\n * <BadgeGlass variant=\"success\">Success</BadgeGlass>\n * <BadgeGlass variant=\"warning\">Warning</BadgeGlass>\n * <BadgeGlass variant=\"info\">Info</BadgeGlass>\n *\n * // With animated status dot\n * <BadgeGlass variant=\"success\" dot aria-label=\"Status: Online\">\n * Online\n * </BadgeGlass>\n * <BadgeGlass variant=\"destructive\" dot aria-label=\"Status: Offline\">\n * Offline\n * </BadgeGlass>\n *\n * // Size variants\n * <BadgeGlass size=\"sm\">Small</BadgeGlass>\n * <BadgeGlass size=\"md\">Medium</BadgeGlass>\n * <BadgeGlass size=\"lg\">Large</BadgeGlass>\n *\n * // Inside interactive elements (ensure accessible labels)\n * <button aria-label=\"Filter by active status\">\n * Filter: <BadgeGlass variant=\"success\">Active</BadgeGlass>\n * </button>\n *\n * // Count badge with semantic meaning\n * <div>\n * <span>Notifications</span>\n * <BadgeGlass variant=\"destructive\" aria-label=\"3 unread notifications\">\n * 3\n * </BadgeGlass>\n * </div>\n * ```\n */\nexport interface BadgeGlassProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'style'>,\n VariantProps<typeof badgeVariants> {\n readonly children: ReactNode;\n readonly variant?: BadgeVariant;\n readonly dot?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const BadgeGlass = forwardRef<HTMLSpanElement, BadgeGlassProps>(\n (\n { children, className, variant = 'default', size = 'md', dot, ...props },\n ref\n ) => {\n const v = variantStyles[variant];\n\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ size }), className)}\n style={getBadgeStyles(variant)}\n {...props}\n >\n {dot && (\n <span\n className=\"w-1 h-1 md:w-1.5 md:h-1.5 rounded-full animate-pulse\"\n style={{ background: v.text }}\n />\n )}\n {children}\n </span>\n );\n }\n);\n\nBadgeGlass.displayName = 'BadgeGlass';\n","/**\n * ButtonGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ButtonGlassVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'destructive'\n | 'success'\n | 'text';\n\nexport type ButtonGlassSize = 'sm' | 'md' | 'lg' | 'xl' | 'icon';\n\nexport const buttonGlassVariants = cva(\n 'relative overflow-hidden font-medium inline-flex items-center justify-center transition-all duration-300 ease-out cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n primary: '',\n secondary: '',\n ghost: '',\n destructive: '',\n success: '',\n text: '',\n },\n size: {\n // All sizes include min-h for touch target compliance (Apple HIG: 44px minimum)\n // Border radius per UI_DESIGN.md: sm/md=8px, lg=12px\n sm: 'px-3 py-1.5 text-sm gap-1.5 min-h-[44px] rounded-xl', // 8px radius\n md: 'px-4 py-2.5 text-sm gap-2 min-h-[44px] rounded-xl', // 8px radius\n lg: 'px-6 py-3 text-base gap-2.5 min-h-[48px] rounded-xl', // 12px radius\n xl: 'px-8 py-4 text-lg gap-3 min-h-[56px] rounded-xl', // 16px radius (beyond spec)\n icon: 'p-2.5 min-h-[44px] min-w-[44px] rounded-xl', // 8px radius\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n);\n","/**\n * ButtonGlass Component\n *\n * Glass-themed button with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - Glow effects on hover\n * - Ripple effect on click (JS)\n * - Shine animation for primary variant (JS)\n * - Loading state with spinner\n * - Icon support (left/right position)\n */\n\nimport {\n forwardRef,\n useState,\n useCallback,\n useEffect,\n useRef,\n type MouseEvent,\n type CSSProperties,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { RefreshCw, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { buttonGlassVariants, type ButtonGlassVariant } from '@/lib/variants/button-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE STYLE MAPS\n// ========================================\n\nconst getVariantStyles = (\n variant: ButtonGlassVariant,\n isHovered: boolean,\n isFocusVisible: boolean\n): CSSProperties => {\n const baseStyles: Record<ButtonGlassVariant, CSSProperties> = {\n primary: {\n background: isHovered\n ? 'var(--btn-primary-hover-bg)'\n : 'var(--btn-primary-bg)',\n color: 'var(--btn-primary-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-primary-glow)'\n : '0 4px 15px oklch(48.5% 0.26 283 / 0.25)',\n },\n secondary: {\n background: isHovered\n ? 'var(--btn-secondary-hover-bg)'\n : 'var(--btn-secondary-bg)',\n color: 'var(--btn-secondary-text)',\n border: '1px solid var(--btn-secondary-border)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-secondary-glow)'\n : 'none',\n },\n ghost: {\n background: isHovered\n ? 'var(--btn-ghost-hover-bg)'\n : 'var(--btn-ghost-bg)',\n color: 'var(--btn-ghost-text)',\n border: 'none',\n boxShadow: isFocusVisible ? 'var(--focus-glow)' : 'none',\n },\n destructive: {\n background: 'var(--btn-destructive-bg)',\n color: 'var(--btn-destructive-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-destructive-glow)'\n : '0 4px 15px oklch(62.8% 0.225 29 / 0.25)',\n },\n success: {\n background: 'var(--btn-success-bg)',\n color: 'var(--btn-success-text)',\n border: 'none',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--btn-success-glow)'\n : '0 4px 15px oklch(70.7% 0.143 167 / 0.25)',\n },\n text: {\n background: 'transparent',\n color: 'var(--text-secondary)',\n border: 'none',\n boxShadow: isFocusVisible ? 'var(--focus-glow)' : 'none',\n },\n };\n\n return baseStyles[variant];\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the ButtonGlass component\n *\n * A glass-themed button with ripple effects, loading states, and icon support.\n * Features theme-aware styling and hover animations.\n *\n * @accessibility\n * - **Keyboard Navigation:** Fully keyboard accessible with native `<button>` element\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Semantic `<button>` element, disabled state announced automatically\n * - **Loading State:** When loading=true, button is disabled and loading spinner is visible\n * - **Touch Targets:** Minimum 44x44px touch target (WCAG 2.5.5) via size variants\n * - **Color Contrast:** All variants meet WCAG AA contrast ratio 4.5:1 minimum\n * - **Motion:** Respects `prefers-reduced-motion` for ripple/shine animations\n *\n * @example\n * ```tsx\n * // Basic button\n * <ButtonGlass variant=\"primary\">Click me</ButtonGlass>\n *\n * // With icon and aria-label for icon-only buttons\n * <ButtonGlass icon={Check} iconPosition=\"left\">Save</ButtonGlass>\n * <ButtonGlass icon={X} size=\"icon\" aria-label=\"Close dialog\" />\n *\n * // Loading state (automatically disables and shows spinner)\n * <ButtonGlass loading aria-live=\"polite\">Processing...</ButtonGlass>\n *\n * // Different variants\n * <ButtonGlass variant=\"ghost\">Cancel</ButtonGlass>\n * <ButtonGlass variant=\"success\">Confirm</ButtonGlass>\n * <ButtonGlass variant=\"destructive\">Delete</ButtonGlass>\n *\n * // As a link (asChild pattern) - maintains semantic HTML\n * <ButtonGlass asChild variant=\"primary\">\n * <a href=\"/dashboard\">Go to Dashboard</a>\n * </ButtonGlass>\n *\n * // With Next.js Link\n * <ButtonGlass asChild variant=\"ghost\">\n * <Link href=\"/settings\">Settings</Link>\n * </ButtonGlass>\n *\n * // Form submit button\n * <ButtonGlass type=\"submit\" variant=\"primary\">\n * Submit Form\n * </ButtonGlass>\n * ```\n */\nexport interface ButtonGlassProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style'>,\n VariantProps<typeof buttonGlassVariants> {\n /**\n * Render as child element instead of button (polymorphic rendering).\n * Useful for rendering buttons as links or other interactive elements.\n *\n * **Note:** When using `asChild`, decorative effects (ripple, shine, glow)\n * are disabled to maintain compatibility with Radix UI Slot.\n * Only styles and event handlers are passed to the child element.\n *\n * @default false\n * @example\n * ```tsx\n * <ButtonGlass asChild>\n * <a href=\"/about\">About Us</a>\n * </ButtonGlass>\n * ```\n */\n readonly asChild?: boolean;\n\n /**\n * Visual style variant of the button\n * @default \"primary\"\n */\n readonly variant?: ButtonGlassVariant;\n\n /**\n * Show loading spinner and disable interactions\n * @default false\n */\n readonly loading?: boolean;\n\n /**\n * Icon component from lucide-react to display\n * @example icon={Check}\n */\n readonly icon?: LucideIcon;\n\n /**\n * Position of the icon relative to button text\n * @default \"left\"\n */\n readonly iconPosition?: 'left' | 'right';\n\n /**\n * Size variant of the button\n * @default \"md\"\n */\n readonly size?: 'sm' | 'md' | 'lg' | 'icon';\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ButtonGlass = forwardRef<HTMLButtonElement, ButtonGlassProps>(\n (\n {\n asChild = false,\n className,\n variant = 'primary',\n size = 'md',\n children,\n loading = false,\n disabled,\n icon: Icon,\n iconPosition = 'left',\n onClick,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const [ripple, setRipple] = useState<{ x: number; y: number } | null>(null);\n\n const isDisabled = disabled || loading;\n const rippleTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n // Cleanup ripple timeout on unmount\n useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n // Ripple effect handler\n const handleClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n\n // Create ripple effect\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setRipple({ x, y });\n\n // Clear previous timeout if exists\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n rippleTimeoutRef.current = setTimeout(() => {\n setRipple(null);\n rippleTimeoutRef.current = null;\n }, 600);\n\n onClick?.(e);\n },\n [isDisabled, onClick]\n );\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n className={cn(\n buttonGlassVariants({ variant, size }),\n isHovered && !isDisabled && 'scale-[1.02]',\n className\n )}\n style={{\n ...getVariantStyles(variant, isHovered && !isDisabled, isFocusVisible && !isDisabled),\n outline: 'none',\n }}\n type={asChild ? undefined : 'button'}\n disabled={isDisabled}\n onClick={handleClick}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n {...props}\n >\n {/* When asChild is true, only render children (Slot expects a single child) */}\n {asChild ? (\n children\n ) : (\n <>\n {/* Shine effect on hover for primary */}\n {isHovered && variant === 'primary' && !isDisabled && (\n <div\n className=\"absolute inset-0 overflow-hidden pointer-events-none\"\n style={{ borderRadius: 'inherit' }}\n >\n <div\n className=\"absolute top-0 h-full w-1/3 bg-linear-to-r from-transparent via-white/20 to-transparent\"\n style={{ animation: 'btn-shine 1.5s ease-in-out infinite' }}\n />\n </div>\n )}\n\n {/* Ripple effect */}\n {ripple && (\n <span\n className=\"absolute rounded-full bg-white/30 pointer-events-none\"\n style={{\n left: ripple.x,\n top: ripple.y,\n width: 10,\n height: 10,\n transform: 'translate(-50%, -50%)',\n animation: 'ripple 0.6s ease-out',\n }}\n />\n )}\n\n {/* Pulsing glow on hover */}\n {isHovered && variant === 'primary' && !isDisabled && (\n <div\n className=\"absolute inset-0 rounded-xl animate-glow-pulse pointer-events-none\"\n style={{\n background:\n 'radial-gradient(circle, oklch(100% 0 0 / 0.1) 0%, transparent 70%)',\n }}\n />\n )}\n\n {/* Loading spinner */}\n {loading && <RefreshCw className={cn(ICON_SIZES.md, 'animate-spin')} />}\n\n {/* Icon left */}\n {!loading && Icon && iconPosition === 'left' && (\n <Icon className={ICON_SIZES.md} />\n )}\n\n {/* Content */}\n {!loading && children}\n\n {/* Icon right */}\n {!loading && Icon && iconPosition === 'right' && (\n <Icon className={ICON_SIZES.md} />\n )}\n </>\n )}\n </Comp>\n );\n }\n);\n\nButtonGlass.displayName = 'ButtonGlass';\n","/**\n * CheckboxGlass Component\n *\n * Glass-themed checkbox with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the CheckboxGlass component\n *\n * A glass-themed checkbox with accessible keyboard navigation, focus management,\n * and touch-friendly targets. Features glow effects and theme-aware styling.\n *\n * @accessibility\n * - **Keyboard Navigation:** Full keyboard support with Enter/Space to toggle, Tab to focus (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Dual implementation with native `<input type=\"checkbox\">` (hidden) + visual `<div role=\"checkbox\">`\n * - **ARIA Attributes:** Uses `role=\"checkbox\"` and `aria-checked` for proper state announcement\n * - **Label Association:** Visual label automatically associated with checkbox via `<label>` wrapper\n * - **Touch Targets:** 44x44px minimum touch area per Apple HIG (WCAG 2.5.5 compliance)\n * - **Color Contrast:** Check mark and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic checkbox with label\n * <CheckboxGlass checked={agreed} onChange={setAgreed} label=\"I agree to terms\" />\n *\n * // Checkbox with accessible name (no visual label)\n * <CheckboxGlass\n * checked={checked}\n * onChange={setChecked}\n * aria-label=\"Select all items\"\n * />\n *\n * // Form integration with validation\n * <form onSubmit={handleSubmit}>\n * <CheckboxGlass\n * checked={newsletter}\n * onChange={setNewsletter}\n * label=\"Subscribe to newsletter\"\n * aria-describedby=\"newsletter-help\"\n * />\n * <p id=\"newsletter-help\">Receive weekly updates</p>\n * <CheckboxGlass\n * checked={terms}\n * onChange={setTerms}\n * label=\"Accept terms and conditions\"\n * required\n * aria-invalid={submitted && !terms}\n * />\n * {submitted && !terms && (\n * <span role=\"alert\">You must accept the terms</span>\n * )}\n * </form>\n *\n * // Disabled checkbox (state announced to screen readers)\n * <CheckboxGlass\n * checked={true}\n * onChange={() => {}}\n * label=\"This option is locked\"\n * disabled\n * />\n *\n * // Checkbox group with fieldset\n * <fieldset>\n * <legend>Select your interests</legend>\n * <CheckboxGlass\n * checked={interests.tech}\n * onChange={(checked) => setInterests({ ...interests, tech: checked })}\n * label=\"Technology\"\n * />\n * <CheckboxGlass\n * checked={interests.design}\n * onChange={(checked) => setInterests({ ...interests, design: checked })}\n * label=\"Design\"\n * />\n * </fieldset>\n * ```\n */\nexport interface CheckboxGlassProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n readonly checked: boolean;\n readonly onChange?: (checked: boolean) => void;\n readonly label?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const CheckboxGlass = forwardRef<HTMLInputElement, CheckboxGlassProps>(\n (\n {\n className,\n checked,\n onChange,\n label,\n disabled,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n const checkboxStyles: CSSProperties = {\n background: checked ? 'var(--checkbox-checked-bg)' : 'var(--checkbox-bg)',\n border: `2px solid ${checked ? 'var(--checkbox-checked-bg)' : 'var(--checkbox-border)'}`,\n boxShadow: isFocusVisible && !disabled\n ? 'var(--focus-glow)'\n : isHovered && !disabled\n ? 'var(--checkbox-glow)'\n : 'none',\n };\n\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 md:gap-2.5',\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n onChange={(e) => !disabled && onChange?.(e.target.checked)}\n disabled={disabled}\n className=\"sr-only\"\n {...props}\n />\n {/* Touch area wrapper - 44px minimum for Apple HIG compliance */}\n <span className=\"inline-flex items-center justify-center min-w-11 min-h-11\">\n {/* Visual checkbox - smaller but within 44px touch area */}\n <div\n onClick={() => !disabled && onChange?.(!checked)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n className=\"relative w-6 h-6 md:w-5 md:h-5 rounded-md flex items-center justify-center transition-all duration-300\"\n style={checkboxStyles}\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={label || 'Checkbox'}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onChange?.(!checked);\n }\n }}\n >\n {checked && (\n <Check className=\"w-3.5 h-3.5 md:w-3 md:h-3\" style={{ color: 'var(--text-inverse)' }} />\n )}\n </div>\n </span>\n {label && (\n <span className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckboxGlass.displayName = 'CheckboxGlass';\n","/**\n * CircularProgressGlass Component\n *\n * SVG-based circular progress indicator with:\n * - Determinate and indeterminate variants\n * - Configurable size and thickness\n * - Glow effect with SVG filters\n * - Theme-aware styling\n * - Optional label in center\n * - Gradient colors support\n */\n\nimport { forwardRef, useMemo, useId } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// VARIANTS\n// ========================================\n\nconst circularProgressVariants = cva('relative inline-flex items-center justify-center', {\n variants: {\n size: {\n sm: 'w-16 h-16',\n md: 'w-24 h-24',\n lg: 'w-32 h-32',\n xl: 'w-40 h-40',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type CircularProgressGradient = 'violet' | 'blue' | 'cyan' | 'amber' | 'emerald' | 'rose';\n\nexport interface CircularProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof circularProgressVariants> {\n /** Progress value (0-100) for determinate variant */\n readonly value?: number;\n /** Variant type */\n readonly variant?: 'determinate' | 'indeterminate';\n /** Stroke width in pixels */\n readonly thickness?: number;\n /** Background track width in pixels */\n readonly trackWidth?: number;\n /** Progress color gradient */\n readonly color?: CircularProgressGradient;\n /** Track color (background circle) */\n readonly trackColor?: string;\n /** Show percentage label in center */\n readonly showLabel?: boolean;\n /** Custom label text (overrides percentage) */\n readonly label?: string;\n /** Custom color for the center label text */\n readonly labelColor?: string;\n /** Show glow effect */\n readonly showGlow?: boolean;\n /** Glow intensity */\n readonly glowIntensity?: 'low' | 'medium' | 'high';\n /** Stroke linecap style */\n readonly strokeLinecap?: 'round' | 'butt' | 'square';\n /** Animation duration in seconds */\n readonly animationDuration?: number;\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst getGradientColors = (gradient: CircularProgressGradient) => {\n const gradients: Record<CircularProgressGradient, { from: string; to: string; glowVar: string }> = {\n violet: { from: '#8b5cf6', to: '#a855f7', glowVar: '--progress-glow-violet' },\n blue: { from: '#3b82f6', to: '#60a5fa', glowVar: '--progress-glow-blue' },\n cyan: { from: '#06b6d4', to: '#22d3ee', glowVar: '--progress-glow-cyan' },\n amber: { from: '#f59e0b', to: '#fbbf24', glowVar: '--progress-glow-amber' },\n emerald: { from: '#10b981', to: '#34d399', glowVar: '--progress-glow-emerald' },\n rose: { from: '#f43f5e', to: '#fb7185', glowVar: '--progress-glow-rose' },\n };\n return gradients[gradient];\n};\n\nconst getGlowStdDeviation = (intensity: 'low' | 'medium' | 'high'): number => {\n const intensities = { low: 2, medium: 4, high: 6 };\n return intensities[intensity];\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const CircularProgressGlass = forwardRef<HTMLDivElement, CircularProgressGlassProps>(\n (\n {\n className,\n size = 'md',\n value = 0,\n variant = 'determinate',\n thickness = 8,\n trackWidth = 8,\n color = 'violet',\n trackColor = 'oklch(100% 0 0 / 0.1)',\n showLabel = true,\n label,\n labelColor,\n showGlow = true,\n glowIntensity = 'medium',\n strokeLinecap = 'round',\n animationDuration = 1,\n ...props\n },\n ref\n ) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const gradientColors = getGradientColors(color);\n\n // SVG dimensions\n const sizeMap = { sm: 64, md: 96, lg: 128, xl: 160 };\n const svgSize = sizeMap[size || 'md'];\n const radius = (svgSize - Math.max(thickness, trackWidth)) / 2;\n const circumference = 2 * Math.PI * radius;\n const center = svgSize / 2;\n\n // Calculate stroke dash offset for determinate progress\n const dashOffset = useMemo(() => {\n if (variant === 'indeterminate') return circumference * 0.75;\n return circumference * ((100 - clampedValue) / 100);\n }, [variant, clampedValue, circumference]);\n\n // Generate unique IDs for SVG elements (using useId for stable IDs)\n const uniqueId = useId();\n const gradientId = `circular-gradient-${uniqueId}`;\n const glowId = `circular-glow-${uniqueId}`;\n\n return (\n <div ref={ref} className={cn(circularProgressVariants({ size }), className)} {...props}>\n <svg\n width={svgSize}\n height={svgSize}\n className=\"transform -rotate-90\"\n aria-hidden=\"true\"\n >\n <defs>\n {/* Gradient definition */}\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={gradientColors.from} />\n <stop offset=\"100%\" stopColor={gradientColors.to} />\n </linearGradient>\n\n {/* Glow filter */}\n {showGlow && (\n <filter id={glowId}>\n <feGaussianBlur stdDeviation={getGlowStdDeviation(glowIntensity)} result=\"coloredBlur\" />\n <feMerge>\n <feMergeNode in=\"coloredBlur\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n )}\n </defs>\n\n {/* Background track */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={trackWidth}\n />\n\n {/* Progress circle */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={`url(#${gradientId})`}\n strokeWidth={thickness}\n strokeLinecap={strokeLinecap}\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n filter={showGlow ? `url(#${glowId})` : undefined}\n className={cn(\n 'transition-all',\n variant === 'indeterminate' && 'animate-circular-progress-spin'\n )}\n style={{\n transitionDuration: `${animationDuration}s`,\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span\n className=\"text-sm font-semibold tabular-nums\"\n style={{ color: labelColor || 'var(--text-primary)' }}\n >\n {label || (variant === 'determinate' ? `${clampedValue}%` : '')}\n </span>\n </div>\n )}\n\n {/* Accessibility */}\n <div\n role=\"progressbar\"\n aria-valuenow={variant === 'determinate' ? clampedValue : undefined}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label || (variant === 'determinate' ? `Progress: ${clampedValue}%` : 'Loading progress')}\n aria-valuetext={label || (variant === 'determinate' ? `${clampedValue}%` : 'Loading...')}\n className=\"sr-only\"\n >\n {label || (variant === 'determinate' ? `${clampedValue}%` : 'Loading...')}\n </div>\n </div>\n );\n }\n);\n\nCircularProgressGlass.displayName = 'CircularProgressGlass';\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b border-border px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-60 text-muted-foreground\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm font-medium outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","/**\n * InputGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type InputGlassSize = 'sm' | 'md' | 'lg';\n\nexport const inputVariants = cva(\n 'w-full transition-all duration-300 outline-none backdrop-blur-sm disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n size: {\n // All sizes use text-base (16px) minimum to prevent iOS auto-zoom on focus\n // Border radius: 8px per UI_DESIGN.md (rounded-md)\n // Touch targets: 44-48px minimum (Apple HIG)\n sm: 'px-3 py-2 text-base rounded-md min-h-[44px]', // UI_DESIGN: 8px radius, 44px mobile\n md: 'px-4 py-2.5 text-base rounded-md min-h-[44px]', // UI_DESIGN: 8px radius\n lg: 'px-5 py-3 text-base md:text-lg rounded-md min-h-[48px]', // UI_DESIGN: 8px radius\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n","/**\n * Dropdown Content Styles\n *\n * Unified styling utilities for all dropdown-style components:\n * - DropdownGlass\n * - ComboBoxGlass\n * - SelectGlass\n * - SortDropdownGlass\n *\n * Eliminates ~50 lines of duplicated dropdown styling code.\n */\n\nimport type { CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ICON_SIZES } from '@/components/glass/primitives/style-utils';\n\n// ============================================\n// DROPDOWN CONTENT STYLES\n// ============================================\n\n/**\n * Generate consistent dropdown content styles with glassmorphism.\n *\n * Provides standard glass surface with backdrop blur for all dropdown menus.\n *\n * @returns React CSSProperties object\n *\n * @example\n * ```tsx\n * <div style={getDropdownContentStyles()}>\n * <DropdownItem />\n * </div>\n * ```\n */\nexport function getDropdownContentStyles(): CSSProperties {\n return {\n background: 'var(--dropdown-bg)',\n border: '1px solid var(--dropdown-border)',\n boxShadow: 'var(--dropdown-glow)',\n backdropFilter: 'blur(var(--blur-md))',\n WebkitBackdropFilter: 'blur(var(--blur-md))',\n };\n}\n\n// ============================================\n// DROPDOWN CONTENT CLASSES\n// ============================================\n\n/**\n * Standard Tailwind classes for dropdown content containers.\n *\n * Includes sizing, border radius, z-index, and Radix UI animations.\n *\n * @example\n * ```tsx\n * <DropdownMenuContent className={dropdownContentClasses}>\n * ...\n * </DropdownMenuContent>\n * ```\n */\nexport const dropdownContentClasses = cn(\n // Sizing\n 'min-w-40 md:min-w-[200px]',\n\n // Shape\n 'rounded-2xl overflow-hidden',\n\n // Layering\n 'z-[50002]',\n\n // Animations (Radix UI data attributes)\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2'\n);\n\n// ============================================\n// DROPDOWN ITEM CLASSES\n// ============================================\n\n/**\n * Options for dropdown item styling\n */\nexport interface DropdownItemClassesOptions {\n /** Apply danger/destructive styling */\n danger?: boolean;\n /** Item is currently selected */\n selected?: boolean;\n /** Item is highlighted (keyboard navigation) */\n highlighted?: boolean;\n}\n\n/**\n * Generate classes for dropdown menu items.\n *\n * Supports different states: normal, highlighted, selected, danger.\n *\n * @param options - Styling options\n * @returns className string\n *\n * @example\n * ```tsx\n * // Normal item\n * <div className={getDropdownItemClasses()}>Edit</div>\n *\n * // Danger item\n * <div className={getDropdownItemClasses({ danger: true })}>Delete</div>\n *\n * // Selected item\n * <div className={getDropdownItemClasses({ selected: true })}>Active</div>\n * ```\n */\nexport function getDropdownItemClasses(\n options?: DropdownItemClassesOptions\n): string {\n const { danger, selected, highlighted } = options ?? {};\n\n return cn(\n // Base layout\n 'w-full px-3 py-2 md:px-4 md:py-2.5',\n 'text-xs md:text-sm text-left',\n 'flex items-center gap-2 md:gap-3',\n\n // Interaction\n 'outline-none cursor-default select-none',\n 'transition-colors duration-200 ease-out',\n\n // Hover/highlight state\n highlighted && 'bg-[var(--dropdown-item-hover)]',\n 'data-[highlighted]:bg-[var(--dropdown-item-hover)]',\n\n // Selected state\n selected &&\n 'bg-[var(--select-item-selected-bg)] text-[var(--select-item-selected-text)]',\n\n // Danger state\n danger\n ? 'text-[var(--alert-danger-text)] data-[highlighted]:text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-item-text)]'\n );\n}\n\n// ============================================\n// DROPDOWN ICON CLASSES\n// ============================================\n\n/**\n * Options for dropdown icon styling\n */\nexport interface DropdownIconClassesOptions {\n /** Apply danger/destructive styling */\n danger?: boolean;\n}\n\n/**\n * Generate classes for icons within dropdown items.\n *\n * @param options - Styling options\n * @returns className string\n *\n * @example\n * ```tsx\n * <Edit className={getDropdownIconClasses()} />\n * <Trash className={getDropdownIconClasses({ danger: true })} />\n * ```\n */\nexport function getDropdownIconClasses(\n options?: DropdownIconClassesOptions\n): string {\n return cn(\n // Size\n ICON_SIZES.md,\n\n // Behavior\n 'transition-colors duration-200 ease-out shrink-0',\n\n // Color\n options?.danger\n ? 'text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-icon)] group-data-[highlighted]:text-[var(--dropdown-icon-hover)]'\n );\n}\n\n// ============================================\n// DROPDOWN SEPARATOR CLASSES\n// ============================================\n\n/**\n * Standard classes for dropdown separators.\n *\n * @example\n * ```tsx\n * <DropdownMenuSeparator className={dropdownSeparatorClasses} />\n * ```\n */\nexport const dropdownSeparatorClasses = cn(\n 'h-px my-1',\n 'bg-[var(--dropdown-border)]'\n);\n\n// ============================================\n// DROPDOWN LABEL CLASSES\n// ============================================\n\n/**\n * Standard classes for dropdown section labels.\n *\n * @example\n * ```tsx\n * <DropdownMenuLabel className={dropdownLabelClasses}>\n * Actions\n * </DropdownMenuLabel>\n * ```\n */\nexport const dropdownLabelClasses = cn(\n 'px-3 py-1.5 md:px-4 md:py-2',\n 'text-xs font-medium',\n 'text-[var(--text-muted)]'\n);\n","/**\n * ComboBoxGlass Component\n *\n * Glass-themed combobox (searchable select) with:\n * - Keyboard navigation support\n * - Search/filter functionality\n * - Custom rendering options\n * - Async data loading support\n * - Glass styling with theme support\n * - Accessibility features\n * - Form field wrapper support (label, error, success)\n * - Size variants (sm, md, lg, xl)\n * - Optional searchable mode\n * - Icon support for trigger and options\n */\n\n'use client';\n\nimport { useState, useMemo, useCallback, forwardRef, useId } from 'react';\nimport { CheckIcon, ChevronsUpDownIcon, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ButtonGlass } from './button-glass';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { FormFieldWrapper } from '../primitives/form-field-wrapper';\nimport { inputVariants, type InputGlassSize } from '@/lib/variants/input-glass-variants';\nimport { getDropdownContentStyles } from '@/lib/variants/dropdown-content-styles';\nimport { ICON_SIZES } from '../primitives/style-utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type GlassVariant = 'glass' | 'frosted' | 'fluted' | 'crystal';\n\nexport interface ComboBoxOption<T = string> {\n readonly value: T;\n readonly label: string;\n readonly disabled?: boolean;\n /** Optional icon component for the option */\n readonly icon?: LucideIcon;\n}\n\nexport interface ComboBoxGlassProps<T = string> {\n /** Available options */\n readonly options: readonly ComboBoxOption<T>[];\n /** Currently selected value */\n readonly value?: T;\n /** Callback when value changes */\n readonly onChange?: (value: T | undefined) => void;\n /** Placeholder text for trigger button */\n readonly placeholder?: string;\n /** Text shown when no results found */\n readonly emptyText?: string;\n /** Placeholder for search input */\n readonly searchPlaceholder?: string;\n /** Glass variant style */\n readonly glassVariant?: GlassVariant;\n /** Disabled state */\n readonly disabled?: boolean;\n /** Custom className for container */\n readonly className?: string;\n /** Custom className for popover content */\n readonly popoverClassName?: string;\n /** Allow clearing selection */\n readonly clearable?: boolean;\n /** Popover side */\n readonly side?: 'top' | 'right' | 'bottom' | 'left';\n /** Popover alignment */\n readonly align?: 'start' | 'center' | 'end';\n\n // ========================================\n // NEW PROPS (Week 3 Enhancement)\n // ========================================\n\n /** Label text displayed above the field */\n readonly label?: string;\n /** Error message - displays in red below the field */\n readonly error?: string;\n /** Success message - displays in green if no error */\n readonly success?: string;\n /** Shows required asterisk (*) next to label */\n readonly required?: boolean;\n /** Size variant (affects trigger button height and padding) */\n readonly size?: InputGlassSize;\n /** Enable/disable search functionality */\n readonly searchable?: boolean;\n /** Optional icon for trigger button (displayed before text) */\n readonly icon?: LucideIcon;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nfunction ComboBoxGlassInner<T = string>(\n {\n options,\n value,\n onChange,\n placeholder = 'Select option...',\n emptyText = 'No results found.',\n searchPlaceholder = 'Search...',\n glassVariant = 'glass',\n disabled = false,\n className,\n popoverClassName,\n clearable = false,\n side = 'bottom',\n align = 'start',\n // NEW PROPS\n label,\n error,\n success,\n required = false,\n size = 'md',\n searchable = true,\n icon: TriggerIcon,\n }: ComboBoxGlassProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const fieldId = useId();\n\n // Find selected option\n const selectedOption = useMemo(\n () => options.find((opt) => opt.value === value),\n [options, value]\n );\n\n // Filter options based on search\n const filteredOptions = useMemo(() => {\n if (!search) return options;\n const searchLower = search.toLowerCase();\n return options.filter((opt) =>\n opt.label.toLowerCase().includes(searchLower)\n );\n }, [options, search]);\n\n // Handle option selection\n const handleSelect = useCallback(\n (optionValue: T) => {\n if (clearable && value === optionValue) {\n onChange?.(undefined);\n } else {\n onChange?.(optionValue);\n }\n setOpen(false);\n setSearch('');\n },\n [value, onChange, clearable]\n );\n\n // Get glass variant class\n const getGlassClass = () => {\n const variants: Record<GlassVariant, string> = {\n glass: 'glass',\n frosted: 'frosted',\n fluted: 'fluted',\n crystal: 'crystal',\n };\n return variants[glassVariant];\n };\n\n // Render content\n const comboboxContent = (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <ButtonGlass\n ref={ref}\n variant=\"secondary\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-label={selectedOption?.label || placeholder}\n aria-describedby={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n disabled={disabled}\n className={cn(\n 'w-full justify-between',\n // Apply size variant via inputVariants\n inputVariants({ size }),\n !selectedOption && 'text-muted-foreground',\n className\n )}\n >\n <span className=\"flex items-center gap-2 truncate\">\n {TriggerIcon && <TriggerIcon className={ICON_SIZES.md} />}\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <ChevronsUpDownIcon className={cn(ICON_SIZES.md, 'shrink-0 opacity-50')} />\n </ButtonGlass>\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n className={cn(\n 'w-[--radix-popover-trigger-width] p-0 rounded-2xl overflow-hidden border-0',\n getGlassClass(),\n popoverClassName\n )}\n style={getDropdownContentStyles()}\n >\n <Command\n shouldFilter={false}\n className={cn(\n 'bg-transparent',\n // Hide default border, use subtle divider instead\n '[&_[data-slot=command-input-wrapper]]:border-b-0',\n // Fix search icon - use glass theme color with better visibility\n '[&_[data-slot=command-input-wrapper]_svg]:text-[var(--text-muted)]',\n '[&_[data-slot=command-input-wrapper]_svg]:opacity-80'\n )}\n >\n {searchable && (\n <CommandInput\n placeholder={searchPlaceholder}\n value={search}\n onValueChange={setSearch}\n className=\"text-[var(--text-primary)] placeholder:text-[var(--text-muted)] h-10 font-medium\"\n />\n )}\n <CommandList className=\"p-1.5\">\n <CommandEmpty className=\"text-[var(--text-muted)] py-4\">{emptyText}</CommandEmpty>\n <CommandGroup className=\"text-[var(--text-primary)] p-0\">\n {filteredOptions.map((option) => {\n const OptionIcon = option.icon;\n const isSelected = value === option.value;\n\n return (\n <CommandItem\n key={String(option.value)}\n value={String(option.value)}\n disabled={option.disabled}\n onSelect={() => handleSelect(option.value)}\n className={cn(\n 'w-full px-3 py-2.5 text-sm flex items-center gap-2 rounded-none',\n 'cursor-pointer transition-colors duration-150',\n 'text-[var(--dropdown-item-text)]',\n 'data-[selected=true]:bg-[var(--dropdown-item-hover)]',\n isSelected && 'bg-[var(--select-item-selected-bg)] text-[var(--select-item-selected-text)]',\n option.disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n <CheckIcon\n className={cn(\n ICON_SIZES.md,\n 'shrink-0',\n isSelected ? 'opacity-100 text-[var(--text-accent)]' : 'opacity-0'\n )}\n />\n {OptionIcon && <OptionIcon className={cn(ICON_SIZES.md, 'shrink-0 text-[var(--dropdown-icon)]')} />}\n <span className=\"truncate\">{option.label}</span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n\n // Wrap with FormFieldWrapper if label/error/success provided\n if (label || error || success) {\n return (\n <FormFieldWrapper\n label={label}\n error={error}\n success={success}\n required={required}\n htmlFor={fieldId}\n >\n {comboboxContent}\n </FormFieldWrapper>\n );\n }\n\n return comboboxContent;\n}\n\n// Export with generic type support\nexport const ComboBoxGlass = forwardRef(ComboBoxGlassInner) as <T = string>(\n props: ComboBoxGlassProps<T> & { ref?: React.ForwardedRef<HTMLButtonElement> }\n) => ReturnType<typeof ComboBoxGlassInner>;\n\n// Add display name for debugging\nComboBoxGlassInner.displayName = 'ComboBoxGlass';\n","/**\n * DropdownGlass Component\n *\n * Glass-themed dropdown menu based on Radix UI with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth animations\n * - Proper positioning and accessibility\n * - Optional item icons and dividers\n *\n * @example\n * Simple API (recommended for basic dropdowns):\n * ```tsx\n * import { DropdownGlass } from '@/components/glass/ui/dropdown-glass';\n * import { MoreVertical, Edit, Trash } from 'lucide-react';\n *\n * <DropdownGlass\n * trigger={\n * <button>\n * <MoreVertical />\n * </button>\n * }\n * items={[\n * { label: 'Edit', icon: Edit, onClick: () => handleEdit() },\n * { divider: true },\n * { label: 'Delete', icon: Trash, onClick: () => handleDelete(), danger: true }\n * ]}\n * />\n * ```\n *\n * @example\n * Advanced: Using Radix UI primitives directly (for complex dropdowns):\n * ```tsx\n * import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n * import { getDropdownContentStyles, dropdownContentClasses } from '@/lib/variants/dropdown-content-styles';\n *\n * <DropdownMenuPrimitive.Root>\n * <DropdownMenuPrimitive.Trigger asChild>\n * <button>Open Menu</button>\n * </DropdownMenuPrimitive.Trigger>\n *\n * <DropdownMenuPrimitive.Portal>\n * <DropdownMenuPrimitive.Content\n * className={dropdownContentClasses}\n * style={getDropdownContentStyles()}\n * align=\"start\"\n * sideOffset={8}\n * >\n * <DropdownMenuPrimitive.Label className=\"px-3 py-1.5 text-xs font-medium\">\n * Actions\n * </DropdownMenuPrimitive.Label>\n *\n * <DropdownMenuPrimitive.Item\n * className=\"px-3 py-2 cursor-pointer hover:bg-[var(--dropdown-item-hover)]\"\n * onSelect={() => handleAction()}\n * >\n * Action Item\n * </DropdownMenuPrimitive.Item>\n *\n * <DropdownMenuPrimitive.Separator className=\"h-px my-1 bg-[var(--dropdown-border)]\" />\n *\n * <DropdownMenuPrimitive.CheckboxItem\n * checked={isChecked}\n * onCheckedChange={setIsChecked}\n * >\n * <DropdownMenuPrimitive.ItemIndicator>\n * <Check className=\"w-4 h-4\" />\n * </DropdownMenuPrimitive.ItemIndicator>\n * Checkbox Item\n * </DropdownMenuPrimitive.CheckboxItem>\n *\n * <DropdownMenuPrimitive.Sub>\n * <DropdownMenuPrimitive.SubTrigger>\n * More Options\n * </DropdownMenuPrimitive.SubTrigger>\n * <DropdownMenuPrimitive.SubContent>\n * <DropdownMenuPrimitive.Item>Sub Item 1</DropdownMenuPrimitive.Item>\n * <DropdownMenuPrimitive.Item>Sub Item 2</DropdownMenuPrimitive.Item>\n * </DropdownMenuPrimitive.SubContent>\n * </DropdownMenuPrimitive.Sub>\n * </DropdownMenuPrimitive.Content>\n * </DropdownMenuPrimitive.Portal>\n * </DropdownMenuPrimitive.Root>\n * ```\n *\n * @see {@link https://www.radix-ui.com/primitives/docs/components/dropdown-menu Radix UI Dropdown Menu Documentation}\n *\n * Available Radix primitives:\n * - `DropdownMenuPrimitive.Root` - Root component\n * - `DropdownMenuPrimitive.Trigger` - Trigger button (use `asChild` for custom triggers)\n * - `DropdownMenuPrimitive.Content` - Dropdown content container\n * - `DropdownMenuPrimitive.Item` - Menu item\n * - `DropdownMenuPrimitive.CheckboxItem` - Checkbox menu item\n * - `DropdownMenuPrimitive.RadioGroup` + `RadioItem` - Radio group\n * - `DropdownMenuPrimitive.Label` - Section label\n * - `DropdownMenuPrimitive.Separator` - Visual separator\n * - `DropdownMenuPrimitive.Sub` + `SubTrigger` + `SubContent` - Nested menus\n * - `DropdownMenuPrimitive.Portal` - Portal for dropdown content\n *\n * Use `getDropdownContentStyles()` and `dropdownContentClasses` from\n * `@/lib/variants/dropdown-content-styles` for consistent glass styling.\n */\n\nimport * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport { getDropdownContentStyles, dropdownContentClasses } from '@/lib/variants/dropdown-content-styles';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport interface DropdownItem {\n readonly label?: string;\n readonly icon?: LucideIcon;\n readonly onClick?: () => void;\n readonly danger?: boolean;\n readonly divider?: boolean;\n}\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the DropdownGlass component\n *\n * A glass-themed dropdown menu with accessible keyboard navigation, based on Radix UI primitives.\n * Features theme-aware styling, smooth animations, and WCAG-compliant interactions.\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate menu items, Enter/Space activates, Escape closes (WCAG 2.1.1)\n * - **Focus Management:** Focus trapped within menu when open, returned to trigger on close (WCAG 2.4.3)\n * - **Screen Readers:** Uses `role=\"menu\"` and `role=\"menuitem\"` for proper menu semantics (WCAG 4.1.3)\n * - **ARIA Attributes:** Items marked with `data-highlighted` state for screen reader announcement\n * - **Trigger Association:** Menu automatically associated with trigger button via Radix UI primitives\n * - **Touch Targets:** All menu items meet minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Menu text and backgrounds meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Open/close animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic dropdown with icon items\n * <DropdownGlass\n * trigger={\n * <button aria-label=\"Open menu\">\n * <MoreVertical className=\"w-5 h-5\" />\n * </button>\n * }\n * items={[\n * { label: 'Edit', icon: Edit, onClick: handleEdit },\n * { label: 'Delete', icon: Trash, onClick: handleDelete, danger: true }\n * ]}\n * />\n *\n * // Dropdown with dividers and alignment\n * <DropdownGlass\n * trigger={<ButtonGlass>Actions</ButtonGlass>}\n * align=\"right\"\n * items={[\n * { label: 'View', icon: Eye, onClick: () => navigate('/view') },\n * { label: 'Edit', icon: Edit, onClick: () => setEditMode(true) },\n * { divider: true },\n * { label: 'Archive', icon: Archive, onClick: handleArchive },\n * { divider: true },\n * { label: 'Delete', icon: Trash, onClick: handleDelete, danger: true }\n * ]}\n * />\n *\n * // Dropdown in table row (ensure trigger has accessible label)\n * <DropdownGlass\n * trigger={\n * <button aria-label={`Actions for ${user.name}`}>\n * <MoreHorizontal />\n * </button>\n * }\n * items={[\n * { label: 'View Profile', onClick: () => viewProfile(user.id) },\n * { label: 'Send Message', onClick: () => sendMessage(user.id) }\n * ]}\n * />\n *\n * // Dropdown with keyboard-friendly trigger\n * <DropdownGlass\n * trigger={\n * <ButtonGlass\n * icon={Settings}\n * variant=\"ghost\"\n * aria-haspopup=\"menu\"\n * aria-label=\"Settings menu\"\n * >\n * Settings\n * </ButtonGlass>\n * }\n * items={[\n * { label: 'Preferences', icon: Sliders, onClick: () => navigate('/settings/preferences') },\n * { label: 'Security', icon: Lock, onClick: () => navigate('/settings/security') },\n * { divider: true },\n * { label: 'Log Out', icon: LogOut, onClick: handleLogout }\n * ]}\n * />\n *\n * // Advanced: Using Radix primitives directly (see component JSDoc for examples)\n * ```\n */\nexport interface DropdownGlassProps {\n readonly trigger: React.ReactNode;\n readonly items: readonly DropdownItem[];\n readonly align?: 'left' | 'right';\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const DropdownGlass = React.forwardRef<\n HTMLDivElement,\n DropdownGlassProps\n>(({ trigger, items, align = 'left', className }, ref) => {\n return (\n <div ref={ref} className={cn('relative inline-block', className)}>\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>\n {trigger}\n </DropdownMenuPrimitive.Trigger>\n\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align={align === 'left' ? 'start' : 'end'}\n sideOffset={8}\n className={dropdownContentClasses}\n style={getDropdownContentStyles()}\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n {items.map((item, idx) =>\n item.divider ? (\n <DropdownMenuPrimitive.Separator\n key={`divider-${idx}`}\n className=\"my-2 mx-3 h-px\"\n style={{\n borderTop: '1px solid var(--dropdown-divider)',\n }}\n role=\"separator\"\n />\n ) : (\n <DropdownMenuPrimitive.Item\n key={`item-${idx}`}\n onClick={item.onClick}\n className={cn(\n 'group w-full px-3 py-2 md:px-4 md:py-2.5 text-xs md:text-sm text-left flex items-center gap-2 md:gap-3',\n 'cursor-default select-none',\n 'transition-colors duration-200 ease-out',\n 'focus-visible:outline-none focus-visible:shadow-(--focus-glow)',\n 'data-[highlighted]:bg-[var(--dropdown-item-hover)]',\n item.danger\n ? 'text-[var(--alert-danger-text)] data-[highlighted]:text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-item-text)]'\n )}\n role=\"menuitem\"\n >\n {item.icon && (\n <item.icon\n className={cn(\n ICON_SIZES.md,\n 'transition-colors duration-200 ease-out shrink-0',\n item.danger\n ? 'text-[var(--alert-danger-text)]'\n : 'text-[var(--dropdown-icon)] group-data-[highlighted]:text-[var(--dropdown-icon-hover)]'\n )}\n />\n )}\n <span className=\"font-medium\">{item.label}</span>\n </DropdownMenuPrimitive.Item>\n )\n )}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n </div>\n );\n});\n\nDropdownGlass.displayName = 'DropdownGlass';\n","/**\n * GlassCard CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type GlowType = 'blue' | 'violet' | 'cyan' | null;\nexport type IntensityType = 'subtle' | 'medium' | 'strong';\n\nexport type PaddingType = 'none' | 'compact' | 'default' | 'featured';\n\nexport const cardIntensity = cva('border transition-all duration-300', {\n variants: {\n intensity: {\n subtle: '',\n medium: '',\n strong: '',\n },\n hover: {\n true: 'hover-glow cursor-pointer',\n false: '',\n },\n // Padding variants per UI_DESIGN.md (24-32px for glass cards)\n // Border radius per UI_DESIGN.md: compact=12px, default=16px, featured=20px\n padding: {\n none: '',\n compact: 'p-4 md:p-5 rounded-lg', // 16px → 20px padding, 12px radius\n default: 'p-6 rounded-xl', // 24px padding, 16px radius\n featured: 'p-8 rounded-[20px]', // 32px padding, 20px radius (custom)\n },\n },\n defaultVariants: {\n intensity: 'medium',\n hover: true,\n padding: 'default',\n },\n});\n","/**\n * GlassCard Component\n *\n * Glass-themed container with:\n * - Theme-aware styling (glass/light/aurora)\n * - Configurable blur intensity\n * - Optional glow effects\n * - Hover animations\n */\n\nimport {\n forwardRef,\n type ReactNode,\n type CSSProperties,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { cardIntensity } from '@/lib/variants/glass-card-variants';\nimport '@/glass-theme.css';\n\nimport type { GlowType, IntensityType, PaddingType } from '@/lib/variants/glass-card-variants';\n\n// ========================================\n// BLUR MAP\n// ========================================\n// Per UI_DESIGN.md design tokens:\n// - subtle: 8px (--glass-blur-sm) - light glass effect\n// - medium: 16px (--glass-blur-md) - standard cards (was 12px - breaking change)\n// - strong: 24px (--glass-blur-lg) - featured cards (was 16px - breaking change)\n\nconst blurMap: Record<IntensityType, string> = {\n subtle: 'var(--blur-sm)', // 8px\n medium: 'var(--blur-md)', // 16px (BREAKING: was 12px)\n strong: 'var(--blur-lg)', // 24px (BREAKING: was 16px)\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the GlassCard component\n *\n * A glass-themed container with configurable blur, glow effects, and hover animations.\n * Features polymorphic rendering via `asChild` for semantic HTML flexibility.\n *\n * @accessibility\n * - **Keyboard Navigation:** When used with `asChild` as a link/button, inherits native keyboard support (Enter/Space activation)\n * - **Focus Management:** Focus ring applied to child element when using `asChild` pattern with interactive elements\n * - **Screen Readers:** Semantic HTML preserved via `asChild` - use appropriate elements (`<a>`, `<button>`, `<article>`)\n * - **Hover State:** Hover effects are purely visual and do not affect functionality (progressive enhancement)\n * - **Touch Targets:** When interactive, ensure child element meets minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Card border and background meet WCAG AA contrast requirements, content contrast is consumer's responsibility\n * - **Motion:** Hover scale animation respects `prefers-reduced-motion` settings via CSS transitions\n *\n * @example\n * ```tsx\n * // Basic card\n * <GlassCard intensity=\"medium\">Content</GlassCard>\n *\n * // As a clickable link with accessible name\n * <GlassCard asChild intensity=\"medium\">\n * <a href=\"/details\" aria-label=\"View product details\">\n * <h3>Product Title</h3>\n * <p>Description</p>\n * </a>\n * </GlassCard>\n *\n * // Different intensity levels\n * <GlassCard intensity=\"subtle\">Subtle blur</GlassCard>\n * <GlassCard intensity=\"medium\">Standard blur</GlassCard>\n * <GlassCard intensity=\"strong\">Heavy blur</GlassCard>\n *\n * // With glow effects\n * <GlassCard glow=\"blue\">Blue glow card</GlassCard>\n * <GlassCard glow=\"violet\">Violet glow card</GlassCard>\n * <GlassCard glow=\"cyan\">Cyan glow card</GlassCard>\n *\n * // As a button (interactive) with role\n * <GlassCard asChild hover intensity=\"medium\">\n * <button onClick={handleClick} aria-label=\"Open settings\">\n * <Settings className=\"w-6 h-6\" />\n * <span>Settings</span>\n * </button>\n * </GlassCard>\n *\n * // Article card with semantic HTML\n * <GlassCard asChild intensity=\"medium\" padding=\"lg\">\n * <article>\n * <header><h2>Article Title</h2></header>\n * <p>Article content...</p>\n * <footer>Published: Jan 1, 2025</footer>\n * </article>\n * </GlassCard>\n * ```\n */\nexport interface GlassCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof cardIntensity> {\n /**\n * Render as child element instead of div (polymorphic rendering).\n * Useful for making cards clickable links or custom interactive elements.\n * @default false\n * @example\n * ```tsx\n * <GlassCard asChild>\n * <a href=\"/article\">Article Content</a>\n * </GlassCard>\n * ```\n */\n readonly asChild?: boolean;\n\n readonly children: ReactNode;\n readonly glow?: GlowType;\n readonly padding?: PaddingType;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// CSS variable maps for intensity\nconst bgVarMap: Record<IntensityType, string> = {\n subtle: 'var(--card-subtle-bg)',\n medium: 'var(--card-medium-bg)',\n strong: 'var(--card-strong-bg)',\n};\n\nconst borderVarMap: Record<IntensityType, string> = {\n subtle: 'var(--card-subtle-border)',\n medium: 'var(--card-medium-border)',\n strong: 'var(--card-strong-border)',\n};\n\nconst glowVarMap: Record<string, string> = {\n blue: 'var(--glow-blue)',\n violet: 'var(--glow-violet)',\n purple: 'var(--glow-violet)',\n cyan: 'var(--glow-cyan)',\n};\n\nexport const GlassCard = forwardRef<HTMLDivElement, GlassCardProps>(\n (\n {\n asChild = false,\n children,\n className,\n intensity = 'medium',\n glow = null,\n hover = true,\n padding = 'default',\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const intensityVal = intensity ?? 'medium';\n\n const cardStyles: CSSProperties = {\n background: isHovered && hover ? 'var(--card-hover-bg)' : bgVarMap[intensityVal],\n borderColor: isHovered && hover ? 'var(--card-hover-border)' : borderVarMap[intensityVal],\n backdropFilter: `blur(${blurMap[intensityVal]})`,\n WebkitBackdropFilter: `blur(${blurMap[intensityVal]})`,\n boxShadow: glow\n ? glowVarMap[glow]\n : isHovered && hover\n ? 'var(--card-hover-glow)'\n : 'var(--glow-neutral)',\n };\n\n // Polymorphic component - render as Slot when asChild is true\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n className={cn(cardIntensity({ intensity, hover, padding }), className)}\n style={cardStyles}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nGlassCard.displayName = 'GlassCard';\n","/**\n * InputGlass Component\n *\n * Glass-themed input with:\n * - Theme-aware styling via CSS variables (glass/light/aurora)\n * - Focus glow effects\n * - Error/success states\n * - Icon support (left/right position)\n * - Backdrop blur effect\n */\n\nimport {\n forwardRef,\n useCallback,\n type InputHTMLAttributes,\n type CSSProperties,\n type FocusEvent,\n} from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { inputVariants } from '@/lib/variants/input-glass-variants';\nimport { ICON_SIZES, FormFieldWrapper } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// CSS VARIABLE HELPERS\n// ========================================\n\nconst getInputStyles = (\n isFocused: boolean,\n error?: string,\n success?: string\n): CSSProperties => {\n // Determine border color based on state\n let borderColor = 'var(--input-border)';\n if (error) {\n borderColor = 'var(--alert-danger-text)';\n } else if (success) {\n borderColor = 'var(--alert-success-text)';\n } else if (isFocused) {\n borderColor = 'var(--input-focus-border)';\n }\n\n return {\n background: 'var(--input-bg)',\n border: `1px solid ${borderColor}`,\n color: 'var(--input-text)',\n boxShadow: isFocused ? 'var(--focus-glow)' : 'none',\n };\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the InputGlass component\n *\n * A glass-themed input field with labels, validation states, and icon support.\n * Features focus glow effects and theme-aware styling.\n *\n * @accessibility\n * - **Keyboard Navigation:** Full keyboard support with native `<input>` element, standard tab navigation\n * - **Focus Management:** Visible focus ring using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Semantic `<label>` elements properly associated via `htmlFor`, error/success messages announced with `aria-describedby`\n * - **Error State:** Red border and error message displayed below input, programmatically associated for screen readers\n * - **Success State:** Green border and success message displayed below input, programmatically associated for screen readers\n * - **Touch Targets:** Minimum 44x44px touch target on mobile devices (WCAG 2.5.5)\n * - **Color Contrast:** All text meets WCAG AA contrast ratio 4.5:1 minimum against backgrounds\n * - **Motion:** Icon color transitions respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic input with label\n * <InputGlass label=\"Email\" placeholder=\"you@example.com\" />\n *\n * // With aria-describedby for additional context\n * <InputGlass\n * label=\"Username\"\n * placeholder=\"Enter username\"\n * aria-describedby=\"username-help\"\n * />\n * <span id=\"username-help\">Must be 3-20 characters</span>\n *\n * // With validation states (automatically announced to screen readers)\n * <InputGlass label=\"Username\" error=\"Username is required\" />\n * <InputGlass label=\"Password\" success=\"Strong password\" type=\"password\" />\n *\n * // With icon and accessible label\n * <InputGlass\n * icon={Search}\n * placeholder=\"Search...\"\n * aria-label=\"Search products\"\n * />\n * <InputGlass icon={Mail} iconPosition=\"right\" type=\"email\" />\n *\n * // Disabled state (automatically announced)\n * <InputGlass label=\"Email\" disabled value=\"locked@example.com\" />\n *\n * // Form integration with accessible error handling\n * <form onSubmit={handleSubmit}>\n * <InputGlass\n * label=\"Email\"\n * type=\"email\"\n * required\n * error={errors.email}\n * aria-invalid={!!errors.email}\n * />\n * <InputGlass\n * label=\"Password\"\n * type=\"password\"\n * icon={Lock}\n * error={errors.password}\n * />\n * <ButtonGlass type=\"submit\">Sign In</ButtonGlass>\n * </form>\n * ```\n */\nexport interface InputGlassProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof inputVariants> {\n /**\n * Label text displayed above the input field\n */\n readonly label?: string;\n\n /**\n * Error message to display below the input (red styling)\n */\n readonly error?: string;\n\n /**\n * Success message to display below the input (green styling)\n */\n readonly success?: string;\n\n /**\n * Icon component from lucide-react to display\n * @example icon={Search}\n */\n readonly icon?: LucideIcon;\n\n /**\n * Position of the icon relative to input text\n * @default \"left\"\n */\n readonly iconPosition?: 'left' | 'right';\n\n /**\n * @deprecated Use `size` prop instead. Will be removed in v4.0\n * @default \"md\"\n */\n readonly inputSize?: 'sm' | 'md' | 'lg';\n\n // Note: size prop comes from VariantProps<typeof inputVariants>\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const InputGlass = forwardRef<HTMLInputElement, InputGlassProps>(\n (\n {\n className,\n size,\n inputSize,\n label,\n error,\n success,\n icon: Icon,\n iconPosition = 'left',\n disabled,\n onFocus,\n onBlur,\n ...props\n },\n ref\n ) => {\n // Determine size value with fallback to deprecated inputSize prop\n const sizeValue = size ?? inputSize ?? 'md';\n\n // Deprecation warning in development mode\n if (process.env.NODE_ENV !== 'production' && inputSize !== undefined) {\n console.warn(\n '[InputGlass] The `inputSize` prop is deprecated and will be removed in v4.0. Use `size` instead.'\n );\n }\n\n const { isFocused, focusProps } = useFocus();\n\n // Wrap focus handlers to call both internal and external callbacks\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n focusProps.onFocus(e);\n onFocus?.(e);\n },\n [focusProps, onFocus]\n );\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n focusProps.onBlur(e);\n onBlur?.(e);\n },\n [focusProps, onBlur]\n );\n\n const hasIcon = Boolean(Icon);\n const paddingLeft = hasIcon && iconPosition === 'left' ? 'pl-10' : '';\n const paddingRight = hasIcon && iconPosition === 'right' ? 'pr-10' : '';\n\n return (\n <FormFieldWrapper\n label={label}\n error={error}\n success={success}\n htmlFor={props.id}\n className={className}\n >\n <div className=\"relative\">\n {Icon && iconPosition === 'left' && (\n <Icon\n className={cn(\n 'absolute left-2.5 md:left-3 top-1/2 -translate-y-1/2 transition-colors duration-300 z-10',\n ICON_SIZES.md\n )}\n style={{\n color: isFocused ? 'var(--text-accent)' : 'var(--text-muted)',\n }}\n />\n )}\n <input\n ref={ref}\n className={cn(\n inputVariants({ size: sizeValue }),\n paddingLeft,\n paddingRight\n )}\n style={getInputStyles(isFocused, error, success)}\n disabled={disabled}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n />\n {Icon && iconPosition === 'right' && (\n <Icon\n className={cn(\n 'absolute right-2.5 md:right-3 top-1/2 -translate-y-1/2 transition-colors duration-300 z-10',\n ICON_SIZES.md\n )}\n style={{\n color: isFocused ? 'var(--text-accent)' : 'var(--text-muted)',\n }}\n />\n )}\n </div>\n </FormFieldWrapper>\n );\n }\n);\n\nInputGlass.displayName = 'InputGlass';\n","/**\n * ModalGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n// Modal body padding: 24px per UI_DESIGN.md\n// Border radius: 20px per UI_DESIGN.md (using rounded-2xl/24px as closest token)\n// Max widths: 480/640/800px per UI_DESIGN.md\nexport const modalSizes = cva('relative w-full rounded-2xl p-6 transition-all duration-300', {\n variants: {\n size: {\n sm: 'max-w-[480px]', // UI_DESIGN.md: 480px (was 384px)\n md: 'max-w-[640px]', // UI_DESIGN.md: 640px (was 448px)\n lg: 'max-w-[800px]', // UI_DESIGN.md: 800px (was 512px)\n xl: 'max-w-xl',\n full: 'max-w-4xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * ModalGlass Component (Compound API only)\n *\n * Glass-themed modal with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth open/close animations\n * - Escape key to close\n * - Click outside to close\n * - Body scroll lock\n * - Size variants\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm</ModalGlass.Title>\n * <ModalGlass.Description>Are you sure?</ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Body content</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass onClick={() => setOpen(false)}>Cancel</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (isOpen/onClose/title props)\n */\n\nimport {\n useState,\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { modalSizes, type ModalSize } from '@/lib/variants/modal-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES & CONSTANTS\n// ========================================\n\nconst MODAL_ANIMATION_DURATION = 200;\n\n// ========================================\n// HELPERS\n// ========================================\n\nconst lockBodyScroll = (): void => {\n if (typeof document === 'undefined') return;\n document.body.style.overflow = 'hidden';\n};\n\nconst unlockBodyScroll = (): void => {\n if (typeof document === 'undefined') return;\n document.body.style.overflow = '';\n};\n\nconst delay = (ms: number): Promise<void> => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n// ========================================\n// CONTEXT FOR COMPOUND COMPONENTS\n// ========================================\n\ninterface ModalContextValue {\n isOpen: boolean;\n onClose: () => void;\n size: ModalSize;\n isClosing: boolean;\n}\n\nconst ModalContext = createContext<ModalContextValue | null>(null);\n\nconst useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('Modal compound components must be used within ModalGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// COMPOUND COMPONENT: ROOT\n// ========================================\n\n/**\n * Props for ModalGlass.Root component\n *\n * Root component that provides context and manages open/close state for the modal.\n * Handles keyboard events, body scroll lock, and accessibility attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Escape key closes modal, Tab key traps focus within modal content\n * - **Focus Management:** Focus automatically moved to modal on open, returned to trigger on close (WCAG 2.4.3)\n * - **Screen Readers:** Uses `role=\"dialog\"` and `aria-modal=\"true\"` for proper modal semantics (WCAG 4.1.3)\n * - **Title Association:** Modal title automatically linked via `aria-labelledby=\"modal-title\"`\n * - **Description Association:** Optional description linked via `aria-describedby=\"modal-description\"`\n * - **Body Scroll Lock:** Prevents background scrolling when modal is open (improves UX and focus management)\n * - **Touch Targets:** All interactive elements (close button, action buttons) meet 44x44px minimum (WCAG 2.5.5)\n * - **Color Contrast:** Modal content and overlay meet WCAG AA contrast requirements\n * - **Motion:** Open/close animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic modal with title and description\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm Action</ModalGlass.Title>\n * <ModalGlass.Description>\n * This action cannot be undone.\n * </ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Are you sure you want to proceed?</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass variant=\"ghost\" onClick={() => setOpen(false)}>\n * Cancel\n * </ButtonGlass>\n * <ButtonGlass variant=\"destructive\" onClick={handleConfirm}>\n * Confirm\n * </ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n *\n * // Different sizes\n * <ModalGlass.Root open={open} onOpenChange={setOpen} size=\"sm\">\n * {// Small modal content}\n * </ModalGlass.Root>\n * <ModalGlass.Root open={open} onOpenChange={setOpen} size=\"lg\">\n * {// Large modal content}\n * </ModalGlass.Root>\n *\n * // Form modal with proper focus management\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Create Account</ModalGlass.Title>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <form id=\"signup-form\" onSubmit={handleSubmit}>\n * <InputGlass label=\"Email\" type=\"email\" required />\n * <InputGlass label=\"Password\" type=\"password\" required />\n * </form>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass variant=\"ghost\" onClick={() => setOpen(false)}>\n * Cancel\n * </ButtonGlass>\n * <ButtonGlass type=\"submit\" form=\"signup-form\">\n * Sign Up\n * </ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n *\n * // Alert modal (no close button)\n * <ModalGlass.Root open={showAlert} onOpenChange={setShowAlert}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Session Expired</ModalGlass.Title>\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * Your session has expired. Please log in again.\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass onClick={handleLogin}>Log In</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n */\ninterface ModalRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Open state */\n open: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Size variant */\n size?: ModalSize;\n /** Child components */\n children: ReactNode;\n}\n\nconst ModalRoot: FC<ModalRootProps> = ({\n open,\n onOpenChange,\n size = 'md',\n children,\n ...props\n}) => {\n const [isClosing, setIsClosing] = useState(false);\n\n const handleClose = useCallback(async () => {\n setIsClosing(true);\n await delay(MODAL_ANIMATION_DURATION);\n setIsClosing(false);\n onOpenChange?.(false);\n }, [onOpenChange]);\n\n useEffect(() => {\n if (open) {\n lockBodyScroll();\n } else {\n unlockBodyScroll();\n }\n return () => {\n unlockBodyScroll();\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) return;\n\n const handleEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, handleClose]);\n\n if (!open) return null;\n\n return (\n <ModalContext.Provider value={{ isOpen: open, onClose: handleClose, size, isClosing }}>\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-2 sm:p-4\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n {...props}\n >\n {children}\n </div>\n </ModalContext.Provider>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: OVERLAY\n// ========================================\n\ninterface ModalOverlayProps {\n className?: string;\n}\n\nconst ModalOverlay: FC<ModalOverlayProps> = ({ className }) => {\n const { onClose, isClosing } = useModalContext();\n\n const overlayStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-overlay)',\n backdropFilter: 'blur(var(--blur-sm))',\n WebkitBackdropFilter: 'blur(var(--blur-sm))',\n opacity: isClosing ? 0 : 1,\n transition: 'all 0.3s',\n }),\n [isClosing]\n );\n\n return (\n <div\n className={cn('absolute inset-0 transition-all duration-300', className)}\n style={overlayStyles}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: CONTENT\n// ========================================\n\ninterface ModalContentProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n ({ children, className }, ref) => {\n const { size, isClosing } = useModalContext();\n\n const modalStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-bg)',\n border: '1px solid var(--modal-border)',\n boxShadow: 'var(--modal-glow)',\n backdropFilter: 'blur(var(--blur-lg))',\n WebkitBackdropFilter: 'blur(var(--blur-lg))',\n transform: isClosing ? 'scale(0.95) translateY(10px)' : 'scale(1) translateY(0)',\n opacity: isClosing ? 0 : 1,\n animation: !isClosing ? 'modalFadeIn 0.3s ease-out' : 'none',\n }),\n [isClosing]\n );\n\n return (\n <div ref={ref} className={cn(modalSizes({ size }), className)} style={modalStyles}>\n {/* Glow effect */}\n <div\n className=\"absolute inset-0 rounded-3xl pointer-events-none\"\n style={{\n background: 'var(--modal-glow-effect)',\n }}\n />\n {children}\n </div>\n );\n }\n);\n\nModalContent.displayName = 'ModalContent';\n\n// ========================================\n// COMPOUND COMPONENT: HEADER\n// ========================================\n\ninterface ModalHeaderProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalHeader: FC<ModalHeaderProps> = ({ children, className }) => {\n return (\n <div className={cn('relative flex items-start justify-between mb-4 md:mb-5', className)}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: BODY\n// ========================================\n\ninterface ModalBodyProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalBody: FC<ModalBodyProps> = ({ children, className }) => {\n return (\n <div className={cn('relative', className)} style={{ color: 'var(--text-secondary)' }}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: FOOTER\n// ========================================\n\ninterface ModalFooterProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalFooter: FC<ModalFooterProps> = ({ children, className }) => {\n return (\n <div className={cn('relative flex gap-3 mt-4 md:mt-5 justify-end', className)}>\n {children}\n </div>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: TITLE\n// ========================================\n\ninterface ModalTitleProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalTitle: FC<ModalTitleProps> = ({ children, className }) => {\n return (\n <h3\n id=\"modal-title\"\n className={cn('text-lg md:text-xl font-semibold', className)}\n style={{ color: 'var(--text-primary)' }}\n >\n {children}\n </h3>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: DESCRIPTION\n// ========================================\n\ninterface ModalDescriptionProps {\n children: ReactNode;\n className?: string;\n}\n\nconst ModalDescription: FC<ModalDescriptionProps> = ({ children, className }) => {\n return (\n <p\n id=\"modal-description\"\n className={cn('text-sm md:text-base mt-1', className)}\n style={{ color: 'var(--text-muted)' }}\n >\n {children}\n </p>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: CLOSE\n// ========================================\n\ninterface ModalCloseProps {\n className?: string;\n}\n\nconst ModalClose: FC<ModalCloseProps> = ({ className }) => {\n const { onClose } = useModalContext();\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n const closeButtonStyles: CSSProperties = useMemo(\n () => ({\n background: 'var(--modal-close-btn-bg)',\n border: 'var(--modal-close-btn-border)',\n color: 'var(--text-muted)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered\n ? 'var(--modal-close-btn-hover-glow)'\n : 'none',\n outline: 'none',\n }),\n [isHovered, isFocusVisible]\n );\n\n return (\n <button\n onClick={onClose}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n className={cn(\n 'p-1.5 md:p-2 rounded-xl transition-all duration-300',\n className\n )}\n style={closeButtonStyles}\n type=\"button\"\n aria-label=\"Close modal\"\n >\n <X className={ICON_SIZES.md} />\n </button>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT (v1.0.0+)\n// ========================================\n\n/**\n * ModalGlass - Compound Component API\n *\n * @example\n * ```tsx\n * <ModalGlass.Root open={open} onOpenChange={setOpen}>\n * <ModalGlass.Overlay />\n * <ModalGlass.Content>\n * <ModalGlass.Header>\n * <ModalGlass.Title>Confirm</ModalGlass.Title>\n * <ModalGlass.Description>Are you sure?</ModalGlass.Description>\n * <ModalGlass.Close />\n * </ModalGlass.Header>\n * <ModalGlass.Body>\n * <p>Body content</p>\n * </ModalGlass.Body>\n * <ModalGlass.Footer>\n * <ButtonGlass>Cancel</ButtonGlass>\n * </ModalGlass.Footer>\n * </ModalGlass.Content>\n * </ModalGlass.Root>\n * ```\n */\nexport const ModalGlass = {\n Root: ModalRoot,\n Overlay: ModalOverlay,\n Content: ModalContent,\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n Title: ModalTitle,\n Description: ModalDescription,\n Close: ModalClose,\n};\n","/**\n * NotificationGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error';\n\nexport const notificationVariants = cva(\n 'flex items-start gap-3 md:gap-4 p-4 md:p-5 rounded-2xl min-w-[280px] md:min-w-[320px] max-w-[360px] md:max-w-[420px] transition-all duration-300',\n {\n variants: {\n type: {\n info: '',\n success: '',\n warning: '',\n error: '',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n }\n);\n","/**\n * NotificationGlass Component\n *\n * Glass-themed toast notification with:\n * - Theme-aware styling (glass/light/aurora)\n * - Type variants (info/success/warning/error)\n * - Glow effect on hover\n * - Dismissible\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { Info, CheckCircle, AlertTriangle, AlertCircle, X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { notificationVariants } from '@/lib/variants/notification-glass-variants';\nimport { ICON_SIZES } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\nimport type { NotificationType } from '@/lib/variants/notification-glass-variants';\n\n// ========================================\n// CONSTANTS\n// ========================================\n\nconst NOTIFICATION_ICONS = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n} as const;\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface NotificationGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'style'>,\n VariantProps<typeof notificationVariants> {\n readonly title: string;\n readonly message: string;\n /** Notification variant (shadcn/ui compatible) */\n readonly variant?: 'default' | 'destructive' | 'success' | 'warning';\n /** @deprecated Use variant prop instead. Will be removed in next major version. */\n readonly type?: NotificationType;\n readonly onClose: () => void;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Type-specific CSS variable mapping\nconst getTypeVars = (notifType: NotificationType): { color: string; glow: string; iconBg: string } => {\n const configs: Record<NotificationType, { color: string; glow: string; iconBg: string }> = {\n info: { color: 'var(--notification-info-color)', glow: 'var(--notification-info-glow)', iconBg: 'var(--notification-info-icon-bg)' },\n success: { color: 'var(--notification-success-color)', glow: 'var(--notification-success-glow)', iconBg: 'var(--notification-success-icon-bg)' },\n warning: { color: 'var(--notification-warning-color)', glow: 'var(--notification-warning-glow)', iconBg: 'var(--notification-warning-icon-bg)' },\n error: { color: 'var(--notification-error-color)', glow: 'var(--notification-error-glow)', iconBg: 'var(--notification-error-icon-bg)' },\n };\n return configs[notifType];\n};\n\nexport const NotificationGlass = forwardRef<HTMLDivElement, NotificationGlassProps>(\n ({ variant: variantProp, type: typeProp, title, message, onClose, className, ...props }, ref) => {\n // Backward compatibility: support deprecated 'type' prop\n const variant = variantProp ?? typeProp ?? 'default';\n\n // Show deprecation warning in development\n if (process.env.NODE_ENV === 'development' && typeProp) {\n console.warn(\n 'NotificationGlass: The \"type\" prop is deprecated. Use \"variant\" instead. Example: <NotificationGlass variant=\"destructive\" />'\n );\n }\n\n // Map variant to internal notification type\n const variantToType: Record<string, NotificationType> = {\n default: 'info',\n destructive: 'error',\n success: 'success',\n warning: 'warning',\n // Backward compatibility aliases\n info: 'info',\n error: 'error',\n };\n\n const effectiveType: NotificationType = variantToType[variant] || 'info';\n\n const { isHovered, hoverProps } = useHover();\n const Icon = NOTIFICATION_ICONS[effectiveType];\n const config = getTypeVars(effectiveType);\n\n const containerStyles: CSSProperties = {\n background: 'var(--notification-bg)',\n border: '1px solid var(--notification-border)',\n boxShadow: isHovered ? config.glow : 'var(--notification-shadow)',\n transform: isHovered ? 'translateY(-2px)' : 'translateY(0)',\n };\n\n const iconContainerStyles: CSSProperties = {\n background: config.iconBg,\n boxShadow: isHovered ? config.glow : 'none',\n };\n\n return (\n <div\n ref={ref}\n className={cn(notificationVariants({ type: effectiveType }), className)}\n style={containerStyles}\n role=\"alert\"\n aria-live=\"polite\"\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n {...props}\n >\n {/* Icon with glow */}\n <div\n className=\"w-8 h-8 md:w-10 md:h-10 rounded-xl flex items-center justify-center shrink-0\"\n style={iconContainerStyles}\n >\n <Icon className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: config.color }} />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-semibold text-xs md:text-sm mb-0.5 md:mb-1\" style={{ color: 'var(--text-primary)' }}>\n {title}\n </p>\n <p className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {message}\n </p>\n </div>\n\n {/* Close button */}\n <button\n onClick={onClose}\n className=\"p-1 md:p-1.5 rounded-lg shrink-0\"\n style={{ color: 'var(--text-muted)' }}\n type=\"button\"\n aria-label=\"Close notification\"\n >\n <X className={ICON_SIZES.md} />\n </button>\n </div>\n );\n }\n);\n\nNotificationGlass.displayName = 'NotificationGlass';\n","/**\n * PopoverGlass Component\n *\n * Floating glass-themed container for tooltips, dropdowns, and overlays with:\n * - Theme-aware styling (glass/light/aurora)\n * - Smooth animations with fade-in effect\n * - Arrow pointer with glass styling\n * - ESC key and click-outside to close\n * - Focus trap for accessibility\n * - All position/alignment options (top/right/bottom/left × start/center/end)\n *\n * @example\n * ```tsx\n * <PopoverGlass\n * trigger={<ButtonGlass>Open</ButtonGlass>}\n * side=\"top\"\n * align=\"center\"\n * >\n * <div className=\"p-4\">\n * <h3 style={{ color: 'var(--text-primary)' }}>Title</h3>\n * <p style={{ color: 'var(--text-secondary)' }}>Content</p>\n * </div>\n * </PopoverGlass>\n * ```\n */\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface PopoverGlassProps {\n /** The trigger element that opens the popover */\n readonly trigger: React.ReactNode;\n /** The content to display inside the popover */\n readonly children: React.ReactNode;\n /** The preferred side of the trigger to render against */\n readonly side?: 'top' | 'right' | 'bottom' | 'left';\n /** The preferred alignment against the trigger */\n readonly align?: 'start' | 'center' | 'end';\n /** The distance in pixels from the trigger */\n readonly sideOffset?: number;\n /** Controlled open state */\n readonly open?: boolean;\n /** Callback when open state changes */\n readonly onOpenChange?: (open: boolean) => void;\n /** Whether to show the arrow pointer */\n readonly showArrow?: boolean;\n /** Additional class name for the content wrapper */\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const PopoverGlass = React.forwardRef<\n HTMLDivElement,\n PopoverGlassProps\n>(\n (\n {\n trigger,\n children,\n side = 'bottom',\n align = 'center',\n sideOffset = 8,\n open,\n onOpenChange,\n showArrow = true,\n className,\n },\n ref\n ) => {\n // Popover content styles with CSS variables\n const popoverStyles: React.CSSProperties = {\n background: 'var(--popover-bg)',\n border: '1px solid var(--popover-border)',\n boxShadow: 'var(--popover-shadow)',\n backdropFilter: 'blur(var(--blur-md))', // 16px - standard popover blur\n WebkitBackdropFilter: 'blur(var(--blur-md))',\n };\n\n // Arrow styles\n const arrowStyles: React.CSSProperties = {\n fill: 'var(--popover-arrow-bg)',\n };\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <PopoverPrimitive.Trigger asChild>{trigger}</PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-[50003] rounded-2xl',\n 'animate-in fade-in-0 zoom-in-95 duration-200',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'outline-none',\n className\n )}\n style={popoverStyles}\n role=\"dialog\"\n aria-modal=\"false\"\n >\n {children}\n\n {showArrow && (\n <PopoverPrimitive.Arrow\n className=\"fill-current\"\n style={arrowStyles}\n width={16}\n height={8}\n />\n )}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n }\n);\n\nPopoverGlass.displayName = 'PopoverGlass';\n","/**\n * SkeletonGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type SkeletonVariant = 'text' | 'title' | 'avatar' | 'thumbnail' | 'card';\n\nexport const skeletonVariants = cva('overflow-hidden', {\n variants: {\n variant: {\n text: 'h-3 md:h-4 rounded',\n title: 'h-5 md:h-6 rounded',\n avatar: 'w-10 h-10 md:w-12 md:h-12 rounded-full',\n thumbnail: 'w-full h-24 md:h-32 rounded-xl',\n card: 'w-full h-36 md:h-48 rounded-2xl',\n },\n },\n defaultVariants: {\n variant: 'text',\n },\n});\n","/**\n * SkeletonGlass Component\n *\n * Glass-themed loading skeleton with:\n * - Theme-aware styling (glass/light/aurora)\n * - Shimmer animation\n * - Variant presets (text, title, avatar, thumbnail, card)\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { skeletonVariants } from '@/lib/variants/skeleton-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SkeletonGlassProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n readonly width?: string | number;\n readonly height?: string | number;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SkeletonGlass = forwardRef<HTMLDivElement, SkeletonGlassProps>(\n (\n {\n className,\n variant = 'text',\n width,\n height,\n style,\n ...props\n },\n ref\n ) => {\n const skeletonStyles: CSSProperties = {\n width,\n height,\n background: 'linear-gradient(90deg, var(--skeleton-bg) 25%, var(--skeleton-shine) 50%, var(--skeleton-bg) 75%)',\n backgroundSize: '200% 100%',\n animation: 'skeleton-loading 1.5s infinite',\n ...style,\n };\n\n return (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n style={skeletonStyles}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeletonGlass.displayName = 'SkeletonGlass';\n","/**\n * SliderGlass Component\n *\n * Glass-themed range slider with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect on hover/drag\n * - Gradient fill (glass theme)\n * - Optional label and value display\n */\n\nimport { forwardRef, useState, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { FormFieldWrapper } from '@/components/glass/primitives';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SliderGlassProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> {\n readonly value: number;\n readonly onChange: (value: number) => void;\n readonly min?: number;\n readonly max?: number;\n readonly step?: number;\n readonly showValue?: boolean;\n readonly label?: string;\n readonly error?: string;\n readonly success?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SliderGlass = forwardRef<HTMLInputElement, SliderGlassProps>(\n (\n {\n className,\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n showValue,\n label,\n error,\n success,\n disabled,\n ...props\n },\n ref\n ) => {\n const { isHovered, hoverProps } = useHover();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const [isDragging, setIsDragging] = useState(false);\n\n const percentage = ((value - min) / (max - min)) * 100;\n\n const trackStyles: CSSProperties = {\n background: 'var(--slider-track)',\n };\n\n const fillStyles: CSSProperties = {\n width: `${percentage}%`,\n background: 'var(--slider-fill)',\n boxShadow:\n isHovered || isDragging\n ? 'var(--slider-fill-glow)'\n : undefined,\n };\n\n const thumbStyles: CSSProperties = {\n left: `calc(${percentage}% - 10px)`,\n background: 'var(--slider-thumb)',\n border: '2px solid var(--slider-thumb-border)',\n boxShadow: isFocusVisible\n ? 'var(--focus-glow)'\n : isHovered || isDragging\n ? 'var(--slider-thumb-glow)'\n : 'var(--slider-thumb-shadow)',\n transform: isDragging\n ? 'scale(1.15)'\n : isHovered\n ? 'scale(1.05)'\n : 'scale(1)',\n };\n\n // Custom label with value display - only used when showValue is true\n // Otherwise, let FormFieldWrapper handle the label\n const customLabel = (label && showValue) || (!label && showValue) ? (\n <div className=\"flex justify-between mb-1.5 md:mb-2\">\n {label && (\n <label\n className=\"text-xs md:text-sm font-medium\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {label}\n </label>\n )}\n <span\n className=\"text-xs md:text-sm font-medium tabular-nums\"\n style={{ color: 'var(--text-secondary)' }}\n >\n {value}\n </span>\n </div>\n ) : undefined;\n\n return (\n <FormFieldWrapper\n label={showValue ? undefined : label}\n error={error}\n success={success}\n className={cn('w-full', className)}\n >\n {customLabel}\n <div\n className=\"relative w-full h-8 md:h-6 flex items-center\"\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n >\n {/* Track */}\n <div\n className=\"absolute w-full h-2.5 md:h-2 rounded-full\"\n style={trackStyles}\n />\n {/* Fill */}\n <div\n className=\"absolute h-2.5 md:h-2 rounded-full transition-all duration-150\"\n style={fillStyles}\n />\n {/* Hidden input for accessibility */}\n <input\n ref={ref}\n type=\"range\"\n value={value}\n onChange={(e) => onChange(Number(e.target.value))}\n onMouseDown={() => setIsDragging(true)}\n onMouseUp={() => setIsDragging(false)}\n onTouchStart={() => setIsDragging(true)}\n onTouchEnd={() => setIsDragging(false)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n aria-label={label || `Slider: ${value} (${min}-${max})`}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${value}`}\n className=\"absolute w-full h-8 md:h-6 opacity-0 cursor-pointer disabled:cursor-not-allowed z-10\"\n style={{ outline: 'none' }}\n {...props}\n />\n {/* Thumb - larger on mobile for touch */}\n <div\n className=\"absolute w-6 h-6 md:w-5 md:h-5 rounded-full transition-all duration-150 pointer-events-none\"\n style={thumbStyles}\n />\n </div>\n </FormFieldWrapper>\n );\n }\n);\n\nSliderGlass.displayName = 'SliderGlass';\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * TabsGlass Component (Compound API only)\n *\n * Glass-themed tab navigation with:\n * - Theme-aware styling (glass/light/aurora)\n * - Active tab indicator\n * - Smooth transitions\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"overview\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"analytics\">Analytics</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"settings\">Settings</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"overview\">\n * Overview content\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"analytics\">\n * Analytics content\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"settings\">\n * Settings content\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (tabs/activeTab/onChange props)\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport interface TabItem {\n readonly id: string;\n readonly label: string;\n}\n\n// ========================================\n// CONTEXT FOR COMPOUND COMPONENTS\n// ========================================\n\ninterface TabsContextValue {\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = () => {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('Tabs compound components must be used within TabsGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// COMPOUND COMPONENT: ROOT\n// ========================================\n\n/**\n * Props for TabsGlass.Root component\n *\n * Root component that manages tab state and provides context for child components.\n * Features accessible keyboard navigation and ARIA attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate between tabs, Tab moves to tab panel content (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring on active tab using `--focus-glow` CSS variable (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"tablist\"`, `role=\"tab\"`, `role=\"tabpanel\"` for proper tab semantics (WCAG 4.1.3)\n * - **ARIA Attributes:** Tabs marked with `aria-selected`, panels with `aria-hidden` for state announcement\n * - **Active State:** Visual indicator (underline) plus color change for multi-modal feedback\n * - **Touch Targets:** Tab triggers meet minimum 44x44px touch target (WCAG 2.5.5)\n * - **Color Contrast:** Active and inactive tab text meet WCAG AA contrast ratio 4.5:1\n * - **Motion:** Transitions and indicator animations respect `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic tabs\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"overview\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"analytics\">Analytics</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"settings\">Settings</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"overview\">\n * <h2>Overview</h2>\n * <p>Overview content here</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"analytics\">\n * <h2>Analytics</h2>\n * <p>Analytics content here</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"settings\">\n * <h2>Settings</h2>\n * <p>Settings content here</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Tabs with icons (ensure accessible labels)\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"home\" aria-label=\"Home dashboard\">\n * <Home className=\"w-4 h-4\" />\n * </TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"search\" aria-label=\"Search\">\n * <Search className=\"w-4 h-4\" />\n * </TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"home\">Dashboard content</TabsGlass.Content>\n * <TabsGlass.Content value=\"search\">Search content</TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Disabled tab (announced to screen readers)\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"tab1\">Available Tab</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"tab2\" disabled>\n * Locked Tab\n * </TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"tab1\">Content 1</TabsGlass.Content>\n * </TabsGlass.Root>\n *\n * // Form tabs with proper focus management\n * <TabsGlass.Root value={currentStep} onValueChange={setCurrentStep}>\n * <TabsGlass.List aria-label=\"Registration steps\">\n * <TabsGlass.Trigger value=\"account\">Account Info</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"profile\">Profile Details</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"confirm\">Confirmation</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"account\">\n * <InputGlass label=\"Email\" type=\"email\" />\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"profile\">\n * <InputGlass label=\"Name\" />\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"confirm\">\n * <p>Review your information</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n */\ninterface TabsRootProps {\n /** Current active tab value */\n value: string;\n /** Callback when tab value changes */\n onValueChange?: (value: string) => void;\n /** Child components */\n children: ReactNode;\n /** Optional className for container */\n className?: string;\n}\n\nconst TabsRoot: FC<TabsRootProps> = ({ value, onValueChange, children, className }) => {\n return (\n <TabsContext.Provider value={{ value, onValueChange }}>\n <div className={cn('tabs-glass-root', className)}>{children}</div>\n </TabsContext.Provider>\n );\n};\n\n// ========================================\n// COMPOUND COMPONENT: LIST\n// ========================================\n\ninterface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n className?: string;\n}\n\nconst TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ children, className, ...props }, ref) => {\n const containerStyles: CSSProperties = {\n background: 'var(--tab-container-bg)',\n border: '1px solid var(--tab-container-border)',\n };\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex gap-0.5 md:gap-1 p-0.5 md:p-1 rounded-xl', className)}\n style={containerStyles}\n role=\"tablist\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTabsList.displayName = 'TabsList';\n\n// ========================================\n// COMPOUND COMPONENT: TRIGGER\n// ========================================\n\ninterface TabsTriggerProps {\n /** Value of this tab */\n value: string;\n /** Tab label/content */\n children: ReactNode;\n /** Optional className */\n className?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ value, children, className, disabled }, ref) => {\n const { value: activeValue, onValueChange } = useTabsContext();\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const isActive = activeValue === value;\n\n const tabStyles: CSSProperties = {\n background: isActive ? 'var(--tab-active-bg)' : 'var(--tab-bg)',\n color: isActive ? 'var(--tab-active-text)' : 'var(--text-secondary)',\n boxShadow: isFocusVisible && !disabled ? 'var(--focus-glow)' : 'none',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n disabled={disabled}\n className={cn(\n 'relative px-2.5 py-1.5 md:px-4 md:py-2 rounded-lg text-xs md:text-sm font-medium transition-[background-color,color,opacity] duration-300',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n style={tabStyles}\n onClick={() => !disabled && onValueChange?.(value)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n >\n {children}\n {isActive && (\n <div\n className=\"absolute bottom-0 left-1/2 -translate-x-1/2 w-6 md:w-8 h-0.5 rounded-full\"\n style={{ background: 'var(--tab-indicator)' }}\n />\n )}\n </button>\n );\n }\n);\n\nTabsTrigger.displayName = 'TabsTrigger';\n\n// ========================================\n// COMPOUND COMPONENT: CONTENT\n// ========================================\n\ninterface TabsContentProps {\n /** Value of the tab this content belongs to */\n value: string;\n /** Content to display when tab is active */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst TabsContent: FC<TabsContentProps> = ({ value, children, className }) => {\n const { value: activeValue } = useTabsContext();\n const isActive = activeValue === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n aria-hidden={!isActive}\n className={cn('animate-in fade-in-0 duration-200', className)}\n >\n {children}\n </div>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT (v1.0.0+)\n// ========================================\n\n/**\n * TabsGlass - Compound Component API\n *\n * @example\n * ```tsx\n * <TabsGlass.Root value={activeTab} onValueChange={setActiveTab}>\n * <TabsGlass.List>\n * <TabsGlass.Trigger value=\"tab1\">Overview</TabsGlass.Trigger>\n * <TabsGlass.Trigger value=\"tab2\">Analytics</TabsGlass.Trigger>\n * </TabsGlass.List>\n * <TabsGlass.Content value=\"tab1\">\n * <p>Overview content</p>\n * </TabsGlass.Content>\n * <TabsGlass.Content value=\"tab2\">\n * <p>Analytics content</p>\n * </TabsGlass.Content>\n * </TabsGlass.Root>\n * ```\n *\n * @since v1.0.0 - Legacy API removed (tabs/activeTab/onChange props)\n */\nexport const TabsGlass = {\n Root: TabsRoot,\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n};\n","/**\n * ToggleGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ToggleGlassSize = 'sm' | 'md' | 'lg';\n\nexport const toggleSizes = cva('relative rounded-full transition-all duration-300', {\n variants: {\n size: {\n sm: 'w-8 h-4',\n md: 'w-11 h-6',\n lg: 'w-14 h-7',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * ToggleGlass Component\n *\n * Glass-themed toggle switch with:\n * - Theme-aware styling (glass/light/aurora)\n * - Glow effect when active\n * - Size variants\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { toggleSizes } from '@/lib/variants/toggle-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// SIZE CONFIG\n// ========================================\n\nconst sizesConfig = {\n sm: { track: 'w-8 h-4', knob: 'w-3 h-3', translate: 'translate-x-4' },\n md: { track: 'w-11 h-6', knob: 'w-5 h-5', translate: 'translate-x-5' },\n lg: { track: 'w-14 h-7', knob: 'w-6 h-6', translate: 'translate-x-7' },\n} as const;\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface ToggleGlassProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof toggleSizes> {\n readonly checked: boolean;\n readonly onChange?: (checked: boolean) => void;\n readonly label?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ToggleGlass = forwardRef<HTMLButtonElement, ToggleGlassProps>(\n (\n {\n className,\n size = 'md',\n checked,\n onChange,\n disabled,\n label,\n ...props\n },\n ref\n ) => {\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n const s = sizesConfig[size ?? 'md'];\n\n const trackStyles: CSSProperties = {\n background: checked ? 'var(--toggle-active-bg)' : 'var(--toggle-bg)',\n boxShadow: isFocusVisible && !disabled\n ? 'var(--focus-glow)'\n : checked\n ? 'var(--toggle-glow)'\n : 'none',\n };\n\n const knobStyles: CSSProperties = {\n background: 'var(--toggle-knob)',\n };\n\n // Touch area wrapper ensures 44px minimum touch target (Apple HIG)\n const toggle = (\n <span className=\"inline-flex items-center justify-center min-h-11\">\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label || 'Toggle switch'}\n disabled={disabled}\n className={cn(\n toggleSizes({ size }),\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n !label && className\n )}\n style={trackStyles}\n onClick={() => !disabled && onChange?.(!checked)}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n {...props}\n >\n <div\n className={cn(\n 'absolute top-0.5 left-0.5 rounded-full shadow-md transition-all duration-300',\n s.knob,\n checked && s.translate\n )}\n style={knobStyles}\n />\n </button>\n </span>\n );\n\n if (label) {\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 md:gap-2.5',\n disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\n className\n )}\n >\n {toggle}\n <span className=\"text-xs md:text-sm\" style={{ color: 'var(--text-secondary)' }}>\n {label}\n </span>\n </label>\n );\n }\n\n return toggle;\n }\n);\n\nToggleGlass.displayName = 'ToggleGlass';\n","/**\n * TooltipGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const tooltipPositions = cva(\n 'absolute z-50 px-2 py-1 md:px-3 md:py-1.5 rounded-lg text-[10px] md:text-xs font-medium whitespace-nowrap transition-opacity duration-200',\n {\n variants: {\n position: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n }\n);\n","/**\n * TooltipGlass Component\n *\n * Glass-themed tooltip with:\n * - Unified dark design (consistent UX across themes)\n * - Position variants (top/bottom/left/right)\n * - Smooth animation\n */\n\nimport { forwardRef, useId, type ReactNode, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { useHover } from '@/lib/hooks/use-hover';\nimport { tooltipPositions, type TooltipPosition } from '@/lib/variants/tooltip-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\n/**\n * Props for the TooltipGlass component\n *\n * A glass-themed tooltip with configurable positioning and unified dark design.\n * Features smooth animations and WCAG-compliant accessibility attributes.\n *\n * @accessibility\n * - **Keyboard Navigation:** Tooltip appears on focus for keyboard users (same as hover)\n * - **Focus Management:** Tooltip does not trap focus, allows normal navigation flow\n * - **Screen Readers:** Uses `aria-describedby` to associate tooltip with trigger element (WCAG 4.1.3)\n * - **ARIA Attributes:** Tooltip marked with `role=\"tooltip\"` and unique ID for proper association\n * - **Dismissible:** Tooltip dismisses on mouse leave, focus blur, or Escape key\n * - **Touch Targets:** N/A - tooltips appear on hover/focus, do not require direct interaction\n * - **Color Contrast:** Tooltip text meets WCAG AA contrast ratio 4.5:1 against dark background\n * - **Motion:** Fade-in animation respects `prefers-reduced-motion` settings\n *\n * @example\n * ```tsx\n * // Basic tooltip\n * <TooltipGlass content=\"Click to edit\">\n * <button><Edit className=\"w-4 h-4\" /></button>\n * </TooltipGlass>\n *\n * // Different positions\n * <TooltipGlass content=\"Top tooltip\" position=\"top\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Bottom tooltip\" position=\"bottom\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Left tooltip\" position=\"left\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n * <TooltipGlass content=\"Right tooltip\" position=\"right\">\n * <ButtonGlass>Hover me</ButtonGlass>\n * </TooltipGlass>\n *\n * // Icon button with accessible tooltip (provides label)\n * <TooltipGlass content=\"Delete item\">\n * <ButtonGlass\n * icon={Trash}\n * size=\"icon\"\n * variant=\"ghost\"\n * aria-label=\"Delete item\"\n * />\n * </TooltipGlass>\n *\n * // Informational tooltip on text\n * <TooltipGlass content=\"This feature requires a Pro subscription\">\n * <span className=\"underline decoration-dotted\">Pro Feature</span>\n * </TooltipGlass>\n *\n * // Badge with tooltip for additional context\n * <TooltipGlass content=\"Last updated 2 hours ago\" position=\"top\">\n * <BadgeGlass variant=\"success\" dot>\n * Active\n * </BadgeGlass>\n * </TooltipGlass>\n *\n * // Disabled button with explanation tooltip\n * <TooltipGlass content=\"Save your changes first to enable this action\">\n * <span>\n * <ButtonGlass disabled aria-describedby=\"tooltip-id\">\n * Export\n * </ButtonGlass>\n * </span>\n * </TooltipGlass>\n * ```\n */\nexport interface TooltipGlassProps extends VariantProps<typeof tooltipPositions> {\n readonly children: ReactNode;\n readonly content: string;\n readonly position?: TooltipPosition;\n readonly className?: string;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const TooltipGlass = forwardRef<HTMLDivElement, TooltipGlassProps>(\n ({ children, content, position = 'top', className }, ref) => {\n const { isHovered, hoverProps } = useHover();\n const tooltipId = useId();\n\n // Glass tooltip with same background as modal (oklch(100% 0 0 / 0.06))\n const tooltipStyles: CSSProperties = {\n background: 'var(--tooltip-bg)',\n color: 'var(--tooltip-text)',\n border: '1px solid var(--tooltip-border)',\n boxShadow: 'var(--tooltip-shadow)',\n backdropFilter: 'blur(var(--blur-xl))',\n WebkitBackdropFilter: 'blur(var(--blur-xl))',\n };\n\n return (\n <div\n ref={ref}\n className={cn('relative inline-flex', className)}\n onMouseEnter={hoverProps.onMouseEnter}\n onMouseLeave={hoverProps.onMouseLeave}\n aria-describedby={isHovered ? tooltipId : undefined}\n >\n {children}\n {isHovered && (\n <div\n id={tooltipId}\n className={cn(tooltipPositions({ position }))}\n style={tooltipStyles}\n role=\"tooltip\"\n >\n {content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTooltipGlass.displayName = 'TooltipGlass';\n","// ========================================\n// EXPANDABLE HEADER GLASS - ATOMIC COMPONENT\n// Collapsible section header with icon and chevron\n// Level 2: Atomic (extracted from FlagsSectionGlass)\n// ========================================\n\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from 'react';\nimport { ChevronUp, ChevronDown, type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface ExpandableHeaderGlassProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title'> {\n /** Header title */\n readonly title: ReactNode;\n /** Leading icon component */\n readonly icon?: LucideIcon;\n /** Icon color (CSS variable or color value) */\n readonly iconColor?: string;\n /** Expanded state */\n readonly expanded: boolean;\n /** Toggle callback */\n readonly onToggle?: () => void;\n}\n\nexport const ExpandableHeaderGlass = forwardRef<\n HTMLButtonElement,\n ExpandableHeaderGlassProps\n>(\n (\n {\n title,\n icon: Icon,\n iconColor = 'var(--text-accent)',\n expanded,\n onToggle,\n className,\n ...props\n },\n ref\n ) => {\n const textStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const chevronStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const iconStyles: CSSProperties = {\n color: iconColor,\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onToggle}\n aria-expanded={expanded}\n className={cn(\n 'w-full p-4 flex items-center justify-between rounded-2xl transition-colors hover:bg-white/5',\n className\n )}\n style={textStyles}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n {Icon && <Icon className=\"w-5 h-5\" style={iconStyles} />}\n <span className=\"font-medium\">{title}</span>\n </div>\n {expanded ? (\n <ChevronUp className=\"w-5 h-5\" style={chevronStyles} />\n ) : (\n <ChevronDown className=\"w-5 h-5\" style={chevronStyles} />\n )}\n </button>\n );\n }\n);\n\nExpandableHeaderGlass.displayName = 'ExpandableHeaderGlass';\n","// ========================================\n// ICON BUTTON GLASS - ATOMIC COMPONENT\n// Glassmorphism icon button with responsive touch targets\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type ButtonHTMLAttributes, type CSSProperties } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nconst iconButtonVariants = cva(\n 'rounded-xl flex items-center justify-center transition-all duration-300 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2',\n {\n variants: {\n size: {\n sm: 'w-8 h-8',\n md: 'w-10 h-10',\n lg: 'w-12 h-12',\n // Touch target: 44px minimum for mobile (WCAG 2.1 AA)\n touch: 'w-11 h-11 md:w-10 md:h-10',\n },\n variant: {\n gradient: '',\n subtle: '',\n ghost: 'bg-transparent hover:bg-white/10',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'gradient',\n },\n }\n);\n\nexport interface IconButtonGlassProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n /** Lucide icon component */\n readonly icon: LucideIcon;\n /** Icon size in pixels (default: 20) */\n readonly iconSize?: number;\n /** Accessible label for screen readers */\n readonly 'aria-label': string;\n}\n\nexport const IconButtonGlass = forwardRef<HTMLButtonElement, IconButtonGlassProps>(\n (\n {\n icon: Icon,\n iconSize = 20,\n size,\n variant,\n className,\n 'aria-label': ariaLabel,\n ...props\n },\n ref\n ) => {\n const gradientStyles: CSSProperties | undefined =\n variant === 'gradient'\n ? {\n background:\n 'linear-gradient(135deg, var(--icon-btn-from), var(--icon-btn-to))',\n boxShadow: 'var(--icon-btn-shadow)',\n }\n : undefined;\n\n const subtleStyles: CSSProperties | undefined =\n variant === 'subtle'\n ? {\n background: 'var(--card-subtle-bg)',\n border: '1px solid var(--card-subtle-border)',\n }\n : undefined;\n\n const iconStyles: CSSProperties = {\n color: 'var(--icon-btn-text)',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n className={cn(iconButtonVariants({ size, variant }), className)}\n style={gradientStyles ?? subtleStyles}\n {...props}\n >\n <Icon size={iconSize} style={iconStyles} />\n </button>\n );\n }\n);\n\nIconButtonGlass.displayName = 'IconButtonGlass';\n","// ========================================\n// SEARCH BOX GLASS - ATOMIC COMPONENT\n// Search input with submit button\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport {\n forwardRef,\n useState,\n type InputHTMLAttributes,\n type CSSProperties,\n} from 'react';\nimport { Search } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface SearchBoxGlassProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onSubmit' | 'onChange'> {\n /** Callback when search is submitted (Enter key or button click) */\n readonly onSubmit?: (value: string) => void;\n /** Initial search value */\n readonly defaultValue?: string;\n /** Controlled value */\n readonly value?: string;\n /** Controlled change handler */\n readonly onChange?: (value: string) => void;\n /** Compact variant for mobile (icon only button) */\n readonly variant?: 'default' | 'compact';\n /** Input width class (default: w-48) */\n readonly inputWidth?: string;\n}\n\nexport const SearchBoxGlass = forwardRef<HTMLInputElement, SearchBoxGlassProps>(\n (\n {\n onSubmit,\n defaultValue = '',\n value: controlledValue,\n onChange: controlledOnChange,\n variant = 'default',\n inputWidth = 'w-32 sm:w-40 md:w-48',\n placeholder = 'Search username...',\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [isFocused, setIsFocused] = useState(false);\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (isControlled) {\n controlledOnChange?.(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handleSubmit = () => {\n onSubmit?.(value);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n };\n\n const containerStyles: CSSProperties = {\n boxShadow: isFocused ? 'var(--focus-glow)' : 'none',\n };\n\n const inputStyles: CSSProperties = {\n background: 'var(--search-bg)',\n color: 'var(--text-primary)',\n border: '1px solid var(--search-border)',\n borderRight: 'none',\n borderTopLeftRadius: '0.75rem',\n borderBottomLeftRadius: '0.75rem',\n };\n\n const buttonStyles: CSSProperties = {\n background: 'var(--search-btn-bg)',\n color: 'var(--search-btn-text)',\n borderTopRightRadius: '0.75rem',\n borderBottomRightRadius: '0.75rem',\n };\n\n return (\n <div\n className={cn('flex w-fit rounded-xl overflow-hidden', className)}\n style={containerStyles}\n >\n <input\n ref={ref}\n type=\"text\"\n value={value}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n className={cn('px-4 py-2 text-sm outline-none transition-all', inputWidth)}\n style={inputStyles}\n {...props}\n />\n <button\n onClick={handleSubmit}\n type=\"button\"\n className={cn(\n 'px-5 py-2 text-sm font-medium flex items-center gap-2 hover:scale-[1.02] transition-transform',\n variant === 'compact' && 'px-3'\n )}\n style={buttonStyles}\n aria-label=\"Search\"\n >\n <Search className=\"w-4 h-4\" />\n {variant === 'default' && <span className=\"hidden sm:inline\">Search</span>}\n </button>\n </div>\n );\n }\n);\n\nSearchBoxGlass.displayName = 'SearchBoxGlass';\n","/**\n * SortDropdownGlass Component\n *\n * Atomic component for sorting controls with:\n * - Theme-aware glass styling\n * - Responsive design (compact/full mode)\n * - Sort field selection (commits, stars, name, contribution)\n * - Sort order toggle (asc/desc)\n */\n\nimport { forwardRef, useState, useRef, useEffect, useCallback, useMemo, type CSSProperties } from 'react';\nimport { ChevronDown, ArrowUp, ArrowDown, Check } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { getDropdownContentStyles } from '@/lib/variants/dropdown-content-styles';\nimport { ICON_SIZES } from '../primitives/style-utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type SortField = 'commits' | 'stars' | 'name' | 'contribution';\nexport type SortOrder = 'asc' | 'desc';\n\n// ========================================\n// FIELD LABELS\n// ========================================\n\nconst fieldLabels: Record<SortField, string> = {\n commits: 'Commits',\n stars: 'Stars',\n name: 'Name',\n contribution: 'Contribution',\n};\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface SortDropdownGlassProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current sort field */\n readonly sortBy: SortField;\n /** Current sort order */\n readonly sortOrder: SortOrder;\n /** Callback when sort changes */\n readonly onSortChange: (field: SortField, order: SortOrder) => void;\n /** Available sort options (default: all) */\n readonly options?: readonly SortField[];\n /** Compact mode for mobile */\n readonly compact?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const SortDropdownGlass = forwardRef<HTMLDivElement, SortDropdownGlassProps>(\n (\n {\n sortBy,\n sortOrder,\n onSortChange,\n options = ['commits', 'stars', 'name', 'contribution'],\n compact = false,\n className,\n ...props\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const internalRef = useRef<HTMLDivElement>(null);\n\n // Close on click outside or escape\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent): void => {\n if (internalRef.current && !internalRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen]);\n\n const handleToggle = useCallback(() => {\n setIsOpen((prev) => !prev);\n }, []);\n\n const handleFieldSelect = useCallback((field: SortField) => {\n if (field === sortBy) {\n // Toggle order if same field\n onSortChange(field, sortOrder === 'asc' ? 'desc' : 'asc');\n } else {\n // New field, default to desc\n onSortChange(field, 'desc');\n }\n setIsOpen(false);\n }, [sortBy, sortOrder, onSortChange]);\n\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n };\n\n // Styles\n const buttonStyles: CSSProperties = useMemo(() => ({\n background: 'var(--segmented-container-bg)',\n border: '1px solid var(--segmented-container-border)',\n color: 'var(--text-primary)',\n }), []);\n\n const dropdownStyles: CSSProperties = useMemo(() => ({\n ...getDropdownContentStyles(),\n animation: 'dropdownFadeIn 0.2s ease-out',\n }), []);\n\n const SortIcon = sortOrder === 'asc' ? ArrowUp : ArrowDown;\n\n return (\n <div\n ref={(node) => {\n // Handle both refs\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n }}\n className={cn('relative inline-block', className)}\n style={{ zIndex: isOpen ? 50000 : 'auto' }}\n {...props}\n >\n {/* Trigger Button */}\n <button\n type=\"button\"\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-xs font-medium transition-all duration-200',\n 'hover:opacity-80 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'sm:gap-2 sm:px-4 sm:py-2 sm:text-sm'\n )}\n style={buttonStyles}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n >\n {compact ? (\n <>\n <span>Sort</span>\n <SortIcon className={ICON_SIZES.sm} style={{ color: 'var(--text-accent)' }} />\n </>\n ) : (\n <>\n <span className=\"hidden sm:inline\" style={{ color: 'var(--text-muted)' }}>Sort:</span>\n <span>{fieldLabels[sortBy]}</span>\n <SortIcon className={ICON_SIZES.sm} style={{ color: 'var(--text-accent)' }} />\n <ChevronDown\n className={cn(\n ICON_SIZES.sm,\n 'transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n style={{ color: 'var(--text-muted)' }}\n />\n </>\n )}\n </button>\n\n {/* Dropdown Menu */}\n {isOpen && (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0\"\n style={{ zIndex: 50001 }}\n onClick={() => setIsOpen(false)}\n />\n {/* Menu */}\n <div\n className=\"absolute left-0 mt-2 min-w-[140px] py-1.5 rounded-xl overflow-hidden\"\n style={{ ...dropdownStyles, zIndex: 50002 }}\n role=\"listbox\"\n aria-label=\"Sort options\"\n >\n {options.map((field) => {\n const isSelected = field === sortBy;\n return (\n <button\n key={field}\n type=\"button\"\n onClick={() => handleFieldSelect(field)}\n className={cn(\n 'w-full px-3 py-2 text-xs sm:text-sm text-left flex items-center justify-between gap-2',\n 'transition-colors duration-150 hover:bg-white/5'\n )}\n style={{\n color: isSelected ? 'var(--text-accent)' : 'var(--text-primary)',\n background: isSelected ? 'var(--dropdown-item-hover)' : 'transparent',\n }}\n role=\"option\"\n aria-selected={isSelected}\n >\n <span className=\"font-medium\">{fieldLabels[field]}</span>\n {isSelected && (\n <div className=\"flex items-center gap-1\">\n {sortOrder === 'asc' ? (\n <ArrowUp className={ICON_SIZES.sm} />\n ) : (\n <ArrowDown className={ICON_SIZES.sm} />\n )}\n <Check className={ICON_SIZES.sm} />\n </div>\n )}\n </button>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n }\n);\n\nSortDropdownGlass.displayName = 'SortDropdownGlass';\n","// ========================================\n// STAT ITEM GLASS - ATOMIC COMPONENT\n// Compact stat display with icon and label\n// Level 2: Atomic (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nconst statItemVariants = cva('flex items-center gap-1', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n layout: {\n horizontal: 'flex-row',\n vertical: 'flex-col items-start gap-0.5',\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'horizontal',\n },\n});\n\nexport interface StatItemGlassProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof statItemVariants> {\n /** Lucide icon component */\n readonly icon: LucideIcon;\n /** Stat value (number or formatted string) */\n readonly value: number | string;\n /** Stat label */\n readonly label: string;\n /** Icon size in pixels */\n readonly iconSize?: number;\n /** Abbreviated format for mobile (1.2k instead of 1234) */\n readonly abbreviated?: boolean;\n}\n\nexport const StatItemGlass = forwardRef<HTMLSpanElement, StatItemGlassProps>(\n (\n {\n icon: Icon,\n value,\n label,\n iconSize = 16,\n abbreviated = false,\n size,\n layout,\n className,\n ...props\n },\n ref\n ) => {\n const textStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n const iconStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const formatValue = (val: number | string): string => {\n if (!abbreviated || typeof val !== 'number') return String(val);\n\n if (val >= 1000000) return `${(val / 1000000).toFixed(1)}M`;\n if (val >= 1000) return `${(val / 1000).toFixed(1)}k`;\n return String(val);\n };\n\n return (\n <span\n ref={ref}\n className={cn(statItemVariants({ size, layout }), className)}\n style={textStyles}\n {...props}\n >\n <Icon size={iconSize} style={iconStyles} />\n <span className=\"font-medium\">\n {formatValue(value)} {label}\n </span>\n </span>\n );\n }\n);\n\nStatItemGlass.displayName = 'StatItemGlass';\n","// ========================================\n// THEME TOGGLE GLASS - ATOMIC COMPONENT\n// Theme switcher button with cycle animation\n// Level 2: Atomic (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type ButtonHTMLAttributes, type CSSProperties } from 'react';\nimport { Sun, Moon, Palette } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useTheme, type ThemeName } from '@/lib/theme-context';\nimport '@/glass-theme.css';\n\nconst themes: ThemeName[] = ['light', 'aurora', 'glass'];\n\nconst themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }> = {\n light: { label: 'Light', icon: Sun },\n aurora: { label: 'Aurora', icon: Moon },\n glass: { label: 'Glass', icon: Palette },\n};\n\nexport interface ThemeToggleGlassProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Custom theme toggle handler (overrides default cycleTheme) */\n readonly onToggle?: () => void;\n /** Icon size in pixels (default: 20) */\n readonly iconSize?: number;\n /** Show icon only (hide label on mobile) */\n readonly iconOnly?: boolean;\n}\n\nexport const ThemeToggleGlass = forwardRef<HTMLButtonElement, ThemeToggleGlassProps>(\n ({ onToggle, iconSize = 20, iconOnly = false, className, ...props }, ref) => {\n const { theme, cycleTheme } = useTheme();\n\n const nextTheme = themes[(themes.indexOf(theme) + 1) % themes.length];\n const NextIcon = themeConfig[nextTheme].icon;\n const nextLabel = themeConfig[nextTheme].label;\n\n const buttonStyles: CSSProperties = {\n background: 'var(--card-subtle-bg)',\n border: '1px solid var(--card-subtle-border)',\n };\n\n const iconStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onToggle ?? cycleTheme}\n aria-label={`Switch to ${nextLabel} theme`}\n className={cn(\n 'p-2.5 rounded-xl transition-all duration-300 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-offset-2',\n iconOnly && 'md:px-4 md:gap-2',\n className\n )}\n style={buttonStyles}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <NextIcon size={iconSize} style={iconStyles} />\n {!iconOnly && (\n <span className=\"hidden md:inline text-sm font-medium\" style={iconStyles}>\n {nextLabel}\n </span>\n )}\n </div>\n </button>\n );\n }\n);\n\nThemeToggleGlass.displayName = 'ThemeToggleGlass';\n","/**\n * BaseProgressGlass Component\n *\n * Base progress bar component used as foundation for:\n * - ProgressGlass (standard progress bar)\n * - RainbowProgressGlass (gradient progress bar)\n *\n * Features:\n * - Theme-aware styling\n * - Percentage calculation\n * - Accessible (ARIA progressbar)\n * - Customizable through children render prop\n */\n\nimport { forwardRef, type ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface BaseProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n readonly value?: number;\n readonly max?: number;\n readonly children?: ReactNode | ((percentage: number) => ReactNode);\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const BaseProgressGlass = forwardRef<HTMLDivElement, BaseProgressGlassProps>(\n ({ value = 0, max = 100, className, children, ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative h-2 w-full overflow-hidden rounded-full',\n 'bg-white/5 backdrop-blur-sm',\n className\n )}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuetext={`${Math.round(percentage)}%`}\n {...props}\n >\n {typeof children === 'function'\n ? children(percentage)\n : children || (\n <div\n className=\"h-full transition-all duration-300 ease-out\"\n style={{\n width: `${percentage}%`,\n background: 'var(--progress-bar-bg, linear-gradient(90deg, #a855f7, #ec4899))',\n }}\n />\n )}\n </div>\n );\n }\n);\n\nBaseProgressGlass.displayName = 'BaseProgressGlass';\n","// ========================================\n// STATUS INDICATOR GLASS COMPONENT\n// Status dots with glow effect\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type StatusType = \"green\" | \"yellow\" | \"red\";\nexport type StatusSize = \"normal\" | \"large\";\n\nexport interface StatusIndicatorGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly type?: StatusType;\n readonly size?: StatusSize;\n}\n\nconst sizeClasses: Record<StatusSize, string> = {\n normal: \"w-2 h-2 md:w-2.5 md:h-2.5\",\n large: \"w-3.5 h-3.5 md:w-4 md:h-4\",\n};\n\nconst statusSymbols: Record<StatusType, string> = {\n green: \"✓\",\n yellow: \"!\",\n red: \"✕\",\n};\n\n// CSS variable maps for status colors (using semantic naming)\nconst statusVarMap: Record<StatusType, { bg: string; glow: string }> = {\n green: { bg: \"var(--status-online)\", glow: \"var(--status-online-glow)\" },\n yellow: { bg: \"var(--status-away)\", glow: \"var(--status-away-glow)\" },\n red: { bg: \"var(--status-busy)\", glow: \"var(--status-busy-glow)\" },\n};\n\nexport const StatusIndicatorGlass = forwardRef<HTMLDivElement, StatusIndicatorGlassProps>(\n ({ type = \"green\", size = \"normal\", className, ...props }, ref) => {\n const colors = statusVarMap[type];\n\n const indicatorStyles: CSSProperties = {\n backgroundColor: colors.bg,\n boxShadow: colors.glow,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-full flex items-center justify-center\",\n sizeClasses[size],\n className\n )}\n style={indicatorStyles}\n role=\"status\"\n aria-label={`Status: ${type}`}\n {...props}\n >\n {size === \"large\" && (\n <span className=\"text-white text-[8px] md:text-[10px] font-bold\">\n {statusSymbols[type]}\n </span>\n )}\n </div>\n );\n }\n);\n\nStatusIndicatorGlass.displayName = \"StatusIndicatorGlass\";\n","// ========================================\n// FLAG ALERT GLASS COMPONENT\n// Individual warning/danger flag alert\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { StatusIndicatorGlass, type StatusType } from \"./status-indicator-glass\";\nimport \"@/glass-theme.css\";\n\nexport type FlagType = \"warning\" | \"danger\";\n\nexport interface FlagAlertGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly type?: FlagType;\n readonly title: string;\n readonly description?: string;\n}\n\n// CSS variable maps for flag types\nconst flagVarMap: Record<FlagType, { bg: string; border: string; text: string; statusType: StatusType }> = {\n danger: {\n bg: \"var(--alert-danger-bg)\",\n border: \"var(--alert-danger-border)\",\n text: \"var(--alert-danger-text)\",\n statusType: \"red\",\n },\n warning: {\n bg: \"var(--alert-warning-bg)\",\n border: \"var(--alert-warning-border)\",\n text: \"var(--alert-warning-text)\",\n statusType: \"yellow\",\n },\n};\n\nexport const FlagAlertGlass = forwardRef<HTMLDivElement, FlagAlertGlassProps>(\n ({ type = \"warning\", title, description, className, ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n const config = flagVarMap[type];\n\n const alertStyles: CSSProperties = {\n background: config.bg,\n borderColor: config.border,\n transform: isHovered ? \"translateX(4px)\" : \"translateX(0)\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"p-2.5 md:p-3 rounded-xl border transition-all duration-300\",\n className\n )}\n style={alertStyles}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n role=\"alert\"\n {...props}\n >\n <div\n className=\"flex items-center gap-1.5 md:gap-2 font-medium text-xs md:text-sm\"\n style={{ color: config.text }}\n >\n <StatusIndicatorGlass type={config.statusType} />\n {title}\n </div>\n {description && (\n <p\n className=\"text-[10px] md:text-xs mt-0.5 md:mt-1 ml-4 md:ml-5\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {description}\n </p>\n )}\n </div>\n );\n }\n);\n\nFlagAlertGlass.displayName = \"FlagAlertGlass\";\n","// ========================================\n// LANGUAGE BAR GLASS COMPONENT\n// Language/skill proficiency bar with legend\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport interface LanguageData {\n readonly name: string;\n readonly percent: number;\n readonly color?: string;\n}\n\nexport interface LanguageBarGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly languages: readonly LanguageData[];\n readonly showLegend?: boolean;\n}\n\nconst defaultLangColors: Record<string, string> = {\n TypeScript: \"bg-blue-500\",\n JavaScript: \"bg-yellow-400\",\n Python: \"bg-emerald-500\",\n HTML: \"bg-orange-500\",\n CSS: \"bg-purple-500\",\n Java: \"bg-red-500\",\n Go: \"bg-cyan-500\",\n Rust: \"bg-orange-600\",\n Ruby: \"bg-red-600\",\n PHP: \"bg-indigo-500\",\n};\n\nexport const LanguageBarGlass = forwardRef<HTMLDivElement, LanguageBarGlassProps>(\n ({ languages = [], showLegend = true, className, ...props }, ref) => {\n const [hoveredLang, setHoveredLang] = useState<number | null>(null);\n\n const barStyles: CSSProperties = {\n boxShadow: \"var(--rainbow-glow)\",\n };\n\n // Early return if no languages provided\n if (!languages || languages.length === 0) {\n return null;\n }\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Progress bar */}\n <div\n className=\"flex h-2 md:h-2.5 rounded-full overflow-hidden\"\n style={barStyles}\n role=\"group\"\n aria-label=\"Language distribution\"\n >\n {languages.map((lang, i) => {\n const colorClass = lang.color ?? defaultLangColors[lang.name] ?? \"bg-slate-400\";\n const segmentStyles: CSSProperties = {\n width: `${lang.percent}%`,\n opacity: hoveredLang !== null && hoveredLang !== i ? 0.5 : 1,\n transition: \"all 0.3s\",\n };\n\n return (\n <div\n key={`bar-${lang.name}-${i}`}\n className={cn(colorClass)}\n style={segmentStyles}\n role=\"progressbar\"\n aria-label={`${lang.name}: ${lang.percent}%`}\n aria-valuenow={lang.percent}\n aria-valuemin={0}\n aria-valuemax={100}\n onMouseEnter={() => setHoveredLang(i)}\n onMouseLeave={() => setHoveredLang(null)}\n />\n );\n })}\n </div>\n\n {/* Legend */}\n {showLegend && (\n <div\n className=\"flex items-center gap-3 md:gap-4 mt-1.5 md:mt-2 text-[10px] md:text-xs flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {languages.map((lang, i) => {\n const colorClass = lang.color ?? defaultLangColors[lang.name] ?? \"bg-slate-400\";\n\n return (\n <span\n key={`legend-${lang.name}-${i}`}\n className=\"flex items-center gap-1 md:gap-1.5 cursor-pointer\"\n onMouseEnter={() => setHoveredLang(i)}\n onMouseLeave={() => setHoveredLang(null)}\n >\n <span className={cn(\"w-2 h-2 md:w-2.5 md:h-2.5 rounded-full\", colorClass)} />\n {lang.name} {lang.percent}%\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n\nLanguageBarGlass.displayName = \"LanguageBarGlass\";\n","// ========================================\n// PROFILE AVATAR GLASS COMPONENT\n// Large avatar with glow animation for profiles\n// ========================================\n\nimport { forwardRef, useState, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type ProfileAvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ProfileAvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nconst sizeClasses: Record<ProfileAvatarSize, string> = {\n sm: \"w-9 h-9 md:w-10 md:h-10 text-xs md:text-sm\",\n md: \"w-12 h-12 md:w-14 md:h-14 text-base md:text-lg\",\n lg: \"w-14 h-14 md:w-16 md:h-16 text-lg md:text-xl\",\n xl: \"w-18 h-18 md:w-20 md:h-20 text-xl md:text-2xl\",\n};\n\nconst statusSizeClasses: Record<ProfileAvatarSize, string> = {\n sm: \"w-2.5 h-2.5 md:w-3 md:h-3\",\n md: \"w-3 h-3 md:w-3.5 md:h-3.5\",\n lg: \"w-3.5 h-3.5 md:w-4 md:h-4\",\n xl: \"w-4 h-4 md:w-5 md:h-5\",\n};\n\nconst statusPositionClasses: Record<ProfileAvatarSize, string> = {\n sm: \"bottom-0 right-0\",\n md: \"bottom-0 right-0\",\n lg: \"-bottom-0.5 -right-0.5\",\n xl: \"-bottom-1 -right-1\",\n};\n\n// CSS variable maps for status colors (using semantic naming)\nconst statusVarMap: Record<ProfileAvatarStatus, string> = {\n online: \"var(--status-online)\",\n offline: \"var(--text-muted)\",\n busy: \"var(--status-busy)\",\n away: \"var(--status-away)\",\n};\n\nexport interface ProfileAvatarGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly initials: string;\n readonly size?: ProfileAvatarSize;\n readonly status?: ProfileAvatarStatus;\n readonly glowing?: boolean;\n}\n\nexport const ProfileAvatarGlass = forwardRef<HTMLDivElement, ProfileAvatarGlassProps>(\n ({ initials, size = \"lg\", status, glowing = true, className, ...props }, ref) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const avatarStyles: CSSProperties = {\n boxShadow: isHovered ? \"var(--profile-avatar-glow)\" : \"none\",\n border: \"3px solid var(--profile-avatar-border)\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"relative inline-flex\", className)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n <div\n className={cn(\n \"rounded-full bg-gradient-to-br from-blue-400 via-violet-500 to-indigo-500\",\n \"flex items-center justify-center text-white font-bold transition-all duration-300\",\n sizeClasses[size],\n glowing && \"animate-[glow-pulse_2s_ease-in-out_infinite]\"\n )}\n style={avatarStyles}\n role=\"img\"\n aria-label={`Profile avatar with initials ${initials}`}\n >\n {initials}\n </div>\n {status && (\n <span\n className={cn(\n \"absolute rounded-full\",\n statusPositionClasses[size],\n statusSizeClasses[size]\n )}\n style={{\n background: statusVarMap[status],\n border: \"none\",\n boxShadow: \"none\",\n }}\n role=\"status\"\n aria-label={`Status: ${status}`}\n />\n )}\n </div>\n );\n }\n);\n\nProfileAvatarGlass.displayName = \"ProfileAvatarGlass\";\n","/**\n * ProgressGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type ProgressSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type ProgressGradient = 'violet' | 'blue' | 'cyan' | 'amber' | 'emerald' | 'rose';\n\nexport const progressSizes = cva('rounded-full overflow-hidden', {\n variants: {\n size: {\n sm: 'h-1.5 md:h-1',\n md: 'h-2.5 md:h-2',\n lg: 'h-3.5 md:h-3',\n xl: 'h-5 md:h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","/**\n * ProgressGlass Component\n *\n * Glass-themed progress bar with:\n * - Theme-aware styling (glass/light/aurora)\n * - Gradient fill with glow\n * - Size variants\n * - Optional label\n */\n\nimport { forwardRef, type CSSProperties } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { progressSizes, type ProgressGradient } from '@/lib/variants/progress-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// PROPS INTERFACE\n// ========================================\n\nexport interface ProgressGlassProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>,\n VariantProps<typeof progressSizes> {\n readonly value: number;\n readonly gradient?: ProgressGradient;\n readonly showLabel?: boolean;\n}\n\n// ========================================\n// COMPONENT\n// ========================================\n\n// Gradient colors for the fill - CSS variable based\nconst getGradientColors = (gradient: ProgressGradient = 'violet'): { from: string; to: string; glowVar: string } => {\n const gradients: Record<ProgressGradient, { from: string; to: string; glowVar: string }> = {\n violet: { from: '#8b5cf6', to: '#a855f7', glowVar: '--progress-glow-violet' },\n blue: { from: '#3b82f6', to: '#60a5fa', glowVar: '--progress-glow-blue' },\n cyan: { from: '#06b6d4', to: '#22d3ee', glowVar: '--progress-glow-cyan' },\n amber: { from: '#f59e0b', to: '#fbbf24', glowVar: '--progress-glow-amber' },\n emerald: { from: '#10b981', to: '#34d399', glowVar: '--progress-glow-emerald' },\n rose: { from: '#f43f5e', to: '#fb7185', glowVar: '--progress-glow-rose' },\n };\n return gradients[gradient] || gradients.violet;\n};\n\nexport const ProgressGlass = forwardRef<HTMLDivElement, ProgressGlassProps>(\n (\n {\n className,\n size = 'md',\n value = 0,\n gradient = 'violet',\n showLabel,\n ...props\n },\n ref\n ) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const gradientColors = getGradientColors(gradient);\n\n const trackStyles: CSSProperties = {\n background: 'var(--progress-bg)',\n };\n\n const fillStyles: CSSProperties = {\n width: `${clampedValue}%`,\n background: `linear-gradient(90deg, ${gradientColors.from}, ${gradientColors.to})`,\n boxShadow: `var(${gradientColors.glowVar})`,\n };\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {showLabel && (\n <div className=\"flex justify-between mb-1 md:mb-1.5\">\n <span className=\"text-[10px] md:text-xs\" style={{ color: 'var(--text-muted)' }}>\n Progress\n </span>\n <span className=\"text-[10px] md:text-xs font-medium\" style={{ color: 'var(--text-secondary)' }}>\n {clampedValue}%\n </span>\n </div>\n )}\n <div className={cn(progressSizes({ size }))} style={trackStyles}>\n <div\n className=\"h-full rounded-full transition-all duration-700 ease-out\"\n style={fillStyles}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`Progress: ${clampedValue}%`}\n />\n </div>\n </div>\n );\n }\n);\n\nProgressGlass.displayName = 'ProgressGlass';\n","// ========================================\n// RAINBOW PROGRESS GLASS COMPONENT\n// Animated rainbow gradient progress bar\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport type RainbowProgressSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface RainbowProgressGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly value: number;\n readonly size?: RainbowProgressSize;\n readonly showGlow?: boolean;\n}\n\nconst sizeClasses: Record<RainbowProgressSize, string> = {\n sm: \"h-2.5 md:h-2\",\n md: \"h-3.5 md:h-3\",\n lg: \"h-[1.125rem] md:h-4\",\n xl: \"h-6 md:h-5\",\n};\n\nexport const RainbowProgressGlass = forwardRef<HTMLDivElement, RainbowProgressGlassProps>(\n ({ value, size = \"lg\", showGlow = true, className, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n\n const trackStyles: CSSProperties = {\n background: \"var(--progress-bg)\",\n };\n\n const fillStyles: CSSProperties = {\n width: `${clampedValue}%`,\n background:\n \"linear-gradient(90deg, #f59e0b, #fbbf24, #84cc16, #22c55e, #14b8a6, #06b6d4, #3b82f6)\",\n boxShadow: showGlow ? \"var(--rainbow-glow)\" : \"none\",\n animation: showGlow ? \"var(--rainbow-animation)\" : \"none\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"rounded-full overflow-hidden\", sizeClasses[size], className)}\n style={trackStyles}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`Rainbow progress: ${clampedValue}%`}\n {...props}\n >\n <div\n className=\"h-full rounded-full transition-all duration-1000\"\n style={fillStyles}\n />\n </div>\n );\n }\n);\n\nRainbowProgressGlass.displayName = \"RainbowProgressGlass\";\n","// ========================================\n// SEGMENTED CONTROL GLASS COMPONENT\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport \"@/glass-theme.css\";\n\nexport interface SegmentOption {\n readonly value: string;\n readonly label: string;\n}\n\nexport interface SegmentedControlGlassProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n readonly options: readonly SegmentOption[];\n readonly value: string;\n readonly onChange?: (value: string) => void;\n}\n\nexport const SegmentedControlGlass = forwardRef<HTMLDivElement, SegmentedControlGlassProps>(\n ({ options = [], value, onChange, className, ...props }, ref) => {\n const containerStyles: CSSProperties = {\n border: \"1px solid var(--segmented-container-border)\",\n background: \"var(--segmented-container-bg)\",\n };\n\n // Early return if no options provided\n if (!options || options.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"flex rounded-xl overflow-hidden\", className)}\n style={containerStyles}\n role=\"tablist\"\n {...props}\n >\n {options.map((opt) => {\n const isActive = value === opt.value;\n const buttonStyles: CSSProperties = {\n background: isActive ? \"var(--segmented-active-bg)\" : \"transparent\",\n color: isActive ? \"var(--segmented-active-text)\" : \"var(--segmented-inactive-text)\",\n };\n\n return (\n <button\n key={opt.value}\n onClick={() => onChange?.(opt.value)}\n className=\"px-3 py-1.5 md:px-4 md:py-2 text-xs md:text-sm font-medium transition-all duration-300\"\n style={buttonStyles}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nSegmentedControlGlass.displayName = \"SegmentedControlGlass\";\n","// ========================================\n// AI CARD GLASS COMPONENT\n// AI summary card with feature list\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Sparkles, Check, Zap, Clock } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nexport interface AICardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly onGenerate?: () => void;\n readonly features?: readonly string[];\n readonly estimatedTime?: string;\n}\n\nconst defaultFeatures: readonly string[] = [\n \"Code quality assessment\",\n \"Architecture patterns\",\n \"Best practices\",\n];\n\nexport const AICardGlass = forwardRef<HTMLDivElement, AICardGlassProps>(\n (\n {\n onGenerate,\n features = defaultFeatures,\n estimatedTime = \"~30 seconds\",\n className,\n ...props\n },\n ref\n ) => {\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--ai-card-bg)\"\n borderColor=\"var(--ai-card-border)\"\n hoverGlow=\"var(--ai-card-hover-glow)\"\n hoverLift\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"w-full sm:w-56 md:w-64 p-3 md:p-4\", className)}\n {...props}\n >\n <div\n className=\"flex items-center gap-1.5 md:gap-2 font-semibold text-xs md:text-sm mb-1.5 md:mb-2\"\n style={{ color: \"var(--text-accent)\" }}\n >\n <Sparkles className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n AI Summary\n </div>\n <p\n className=\"text-[10px] md:text-xs mb-1.5 md:mb-2\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n Get comprehensive analysis:\n </p>\n <ul className=\"text-[10px] md:text-xs space-y-0.5 md:space-y-1 mb-2 md:mb-3\">\n {features.map((feature, i) => (\n <li\n key={`feature-${i}`}\n className=\"flex items-center gap-1\"\n style={{ color: \"var(--text-muted)\" }}\n >\n <Check\n className=\"w-2.5 h-2.5 md:w-3 md:h-3\"\n style={{ color: \"var(--status-online)\" }}\n />\n {feature}\n </li>\n ))}\n </ul>\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n icon={Zap}\n onClick={onGenerate}\n className=\"w-full\"\n >\n Generate Report\n </ButtonGlass>\n <p\n className=\"text-[10px] md:text-xs mt-1.5 md:mt-2 text-center flex items-center justify-center gap-1\"\n style={{ color: \"var(--text-muted)\" }}\n >\n <Clock className=\"w-2.5 h-2.5 md:w-3 md:h-3\" />\n {estimatedTime}\n </p>\n </InteractiveCard>\n );\n }\n);\n\nAICardGlass.displayName = \"AICardGlass\";\n","// ========================================\n// CAREER STATS HEADER GLASS - COMPOSITE COMPONENT\n// Career statistics header with total counts\n// Level 3: Composite (extracted from CareerStatsGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { TrendingUp, Code, GitPullRequest, FolderGit2 } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface CareerStatsHeaderGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Total commits count */\n readonly totalCommits: number;\n /** Total pull requests count */\n readonly totalPRs: number;\n /** Total repositories count */\n readonly totalRepos: number;\n /** Header title */\n readonly title?: string;\n /** Stats wrap on mobile */\n readonly wrapStats?: boolean;\n}\n\nexport const CareerStatsHeaderGlass = forwardRef<\n HTMLDivElement,\n CareerStatsHeaderGlassProps\n>(\n (\n {\n totalCommits,\n totalPRs,\n totalRepos,\n title = 'Career Stats',\n wrapStats = true,\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const accentStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const statsStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <div ref={ref} className={cn('mb-4', className)} {...props}>\n <h3\n className=\"font-semibold flex items-center gap-2 mb-1\"\n style={titleStyles}\n >\n <TrendingUp className=\"w-5 h-5\" style={accentStyles} />\n {title}\n </h3>\n <p\n className={cn(\n 'text-sm flex items-center gap-2',\n wrapStats && 'flex-wrap'\n )}\n style={statsStyles}\n >\n <span className=\"flex items-center gap-1\">\n <Code className=\"w-4 h-4\" />\n {totalCommits.toLocaleString()} commits\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <GitPullRequest className=\"w-4 h-4\" />\n {totalPRs} PRs\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <FolderGit2 className=\"w-4 h-4\" />\n {totalRepos} repos\n </span>\n </p>\n </div>\n );\n }\n);\n\nCareerStatsHeaderGlass.displayName = 'CareerStatsHeaderGlass';\n","// ========================================\n// CIRCULAR METRIC GLASS COMPONENT\n// Compact circular metric display for mobile\n// ========================================\n\nimport { forwardRef } from 'react';\nimport { cn } from '@/lib/utils';\nimport {\n CircularProgressGlass,\n type CircularProgressGradient,\n} from '../ui/circular-progress-glass';\nimport '@/glass-theme.css';\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type CircularMetricColor = 'emerald' | 'amber' | 'blue' | 'red';\n\nexport interface CircularMetricGlassProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Metric label (e.g., \"Reg\", \"Imp\") */\n readonly label: string;\n /** Metric value (0-100) */\n readonly value: number;\n /** Metric color */\n readonly color?: CircularMetricColor;\n /** Size variant */\n readonly size?: 'sm' | 'md';\n}\n\n// ========================================\n// HELPERS\n// ========================================\n\n// Map CircularMetricColor to CircularProgressGlass gradient and CSS variable\nconst colorMap: Record<\n CircularMetricColor,\n { gradient: CircularProgressGradient; textVar: string }\n> = {\n emerald: { gradient: 'emerald', textVar: 'var(--metric-emerald-text)' },\n amber: { gradient: 'amber', textVar: 'var(--metric-amber-text)' },\n blue: { gradient: 'blue', textVar: 'var(--metric-blue-text)' },\n red: { gradient: 'rose', textVar: 'var(--metric-red-text)' },\n};\n\n// ========================================\n// COMPONENT\n// ========================================\n\n/**\n * CircularMetricGlass - Compact circular progress metric display\n *\n * Designed for mobile layouts where rectangular MetricCardGlass is too wide.\n * Shows a circular progress indicator with percentage inside and label below.\n *\n * @example\n * ```tsx\n * <CircularMetricGlass label=\"Reg\" value={84} color=\"emerald\" />\n * ```\n */\nexport const CircularMetricGlass = forwardRef<\n HTMLDivElement,\n CircularMetricGlassProps\n>(({ label, value, color = 'blue', size = 'sm', className, ...props }, ref) => {\n const { gradient, textVar } = colorMap[color];\n\n return (\n <div\n ref={ref}\n className={cn('flex flex-col items-center gap-1', className)}\n {...props}\n >\n <CircularProgressGlass\n value={value}\n size={size}\n color={gradient}\n labelColor={textVar}\n thickness={size === 'sm' ? 6 : 8}\n showGlow\n glowIntensity=\"medium\"\n />\n <span\n className=\"text-xs font-medium\"\n style={{ color: textVar }}\n >\n {label}\n </span>\n </div>\n );\n});\n\nCircularMetricGlass.displayName = 'CircularMetricGlass';\n","// ========================================\n// CONTRIBUTION METRICS GLASS - COMPOSITE COMPONENT\n// Repository contribution metrics grid\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface ContributionMetricsGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** User's commit count */\n readonly userCommits: number;\n /** User's contribution percentage */\n readonly userContribution: number;\n /** Total project commits (calculated if not provided) */\n readonly totalProjectCommits?: number;\n /** Estimated lines of code */\n readonly estimatedLines?: number;\n /** Grid layout (1 or 2 columns) */\n readonly columns?: 1 | 2;\n}\n\nexport const ContributionMetricsGlass = forwardRef<\n HTMLDivElement,\n ContributionMetricsGlassProps\n>(\n (\n {\n userCommits,\n userContribution,\n totalProjectCommits: providedTotal,\n estimatedLines: providedLines,\n columns = 2,\n className,\n ...props\n },\n ref\n ) => {\n // Calculate total project commits from contribution percentage\n const totalProjectCommits =\n providedTotal ??\n (userContribution > 0\n ? Math.round(userCommits / (userContribution / 100))\n : userCommits);\n\n const estimatedLines = providedLines ?? Math.round(userCommits * 12);\n\n const cardStyles: CSSProperties = {\n background: 'var(--card-bg)',\n borderColor: 'var(--card-border)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const primaryStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const columnClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n };\n\n return (\n <div\n ref={ref}\n className={cn('grid gap-2', columnClasses[columns], className)}\n {...props}\n >\n <div className=\"p-2.5 rounded-lg border\" style={cardStyles}>\n <div className=\"text-xs\" style={mutedStyles}>\n Your Contribution\n </div>\n <div className=\"font-semibold\" style={primaryStyles}>\n {userCommits.toLocaleString()} commits\n </div>\n <div className=\"text-xs\" style={mutedStyles}>\n {userContribution}%\n </div>\n </div>\n <div className=\"p-2.5 rounded-lg border\" style={cardStyles}>\n <div className=\"text-xs\" style={mutedStyles}>\n Full Project\n </div>\n <div className=\"font-semibold\" style={primaryStyles}>\n {totalProjectCommits.toLocaleString()} commits\n </div>\n <div className=\"text-xs\" style={mutedStyles}>\n ~{estimatedLines.toLocaleString()} lines\n </div>\n </div>\n </div>\n );\n }\n);\n\nContributionMetricsGlass.displayName = 'ContributionMetricsGlass';\n","// ========================================\n// METRIC CARD GLASS COMPONENT\n// Metric display card with progress\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { ProgressGlass } from \"../specialized/progress-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nimport type { ProgressGradient } from \"@/lib/variants/progress-glass-variants\";\n\nexport type MetricColor = \"emerald\" | \"amber\" | \"blue\" | \"red\";\n\nexport interface MetricCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly label: string;\n readonly value: number;\n readonly color?: MetricColor;\n}\n\n// Map MetricColor to ProgressGradient\nconst colorToGradient: Record<MetricColor, ProgressGradient> = {\n emerald: \"emerald\",\n amber: \"amber\",\n blue: \"blue\",\n red: \"rose\",\n};\n\n// CSS variable maps for metric colors\nconst metricVarMap: Record<MetricColor, { bg: string; text: string; border: string; glow: string }> = {\n emerald: {\n bg: \"var(--metric-emerald-bg)\",\n text: \"var(--metric-emerald-text)\",\n border: \"var(--metric-emerald-border)\",\n glow: \"var(--metric-emerald-glow)\",\n },\n amber: {\n bg: \"var(--metric-amber-bg)\",\n text: \"var(--metric-amber-text)\",\n border: \"var(--metric-amber-border)\",\n glow: \"var(--metric-amber-glow)\",\n },\n blue: {\n bg: \"var(--metric-blue-bg)\",\n text: \"var(--metric-blue-text)\",\n border: \"var(--metric-blue-border)\",\n glow: \"var(--metric-blue-glow)\",\n },\n red: {\n bg: \"var(--metric-red-bg)\",\n text: \"var(--metric-red-text)\",\n border: \"var(--metric-red-border)\",\n glow: \"var(--metric-red-glow)\",\n },\n};\n\nexport const MetricCardGlass = forwardRef<HTMLDivElement, MetricCardGlassProps>(\n ({ label, value, color = \"blue\", className, ...props }, ref) => {\n const colorVars = metricVarMap[color];\n\n const valueStyles: CSSProperties = {\n color: colorVars.text,\n textShadow: colorVars.glow,\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg={colorVars.bg}\n borderColor={colorVars.border}\n hoverGlow={colorVars.glow}\n hoverLift\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"p-3 md:p-4\", className)}\n {...props}\n >\n <div className=\"flex flex-col items-center mb-2 md:mb-3 gap-1\">\n <span className=\"font-bold text-sm sm:text-base md:text-lg whitespace-nowrap\" style={valueStyles}>\n {value}%\n </span>\n <span\n className=\"text-[10px] sm:text-xs md:text-sm font-medium truncate\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {label}\n </span>\n </div>\n <ProgressGlass\n value={value}\n gradient={colorToGradient[color]}\n size=\"sm\"\n />\n </InteractiveCard>\n );\n }\n);\n\nMetricCardGlass.displayName = \"MetricCardGlass\";\n","// ========================================\n// METRICS GRID GLASS - COMPOSITE COMPONENT\n// Responsive grid of metric cards\n// Level 3: Composite (extracted from TrustScoreCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\nimport { MetricCardGlass, type MetricColor } from './metric-card-glass';\nimport '@/glass-theme.css';\n\nexport interface MetricData {\n readonly label: string;\n readonly value: number;\n readonly color: MetricColor;\n}\n\nexport interface MetricsGridGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Array of metrics to display */\n readonly metrics: readonly MetricData[];\n /** Number of columns on desktop (1-6) */\n readonly columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Gap size */\n readonly gap?: 'sm' | 'md' | 'lg';\n}\n\nexport const MetricsGridGlass = forwardRef<HTMLDivElement, MetricsGridGlassProps>(\n ({ metrics, columns = 4, gap = 'md', className, ...props }, ref) => {\n const gapClasses = {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n };\n\n const columnClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-5',\n 6: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-6',\n };\n\n if (metrics.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn('grid', columnClasses[columns], gapClasses[gap], className)}\n {...props}\n >\n {metrics.map((metric) => (\n <MetricCardGlass\n key={metric.label}\n label={metric.label}\n value={metric.value}\n color={metric.color}\n />\n ))}\n </div>\n );\n }\n);\n\nMetricsGridGlass.displayName = 'MetricsGridGlass';\n","// ========================================\n// REPOSITORY CARD GLASS COMPONENT\n// Expandable repository card with metrics\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport {\n ChevronDown,\n ChevronUp,\n Star,\n ExternalLink,\n Sparkles,\n AlertTriangle,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { StatusIndicatorGlass } from \"../specialized/status-indicator-glass\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport \"@/glass-theme.css\";\n\nexport type RepositoryFlagType = \"green\" | \"yellow\" | \"red\";\n\nexport interface RepositoryCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly name: string;\n readonly languages: string;\n readonly commits: number;\n readonly contribution: number;\n readonly stars?: number;\n readonly flagType?: RepositoryFlagType;\n readonly issues?: readonly string[];\n readonly expanded?: boolean;\n readonly onToggle?: () => void;\n readonly onGitHubClick?: () => void;\n readonly onAIAnalysisClick?: () => void;\n}\n\nexport const RepositoryCardGlass = forwardRef<HTMLDivElement, RepositoryCardGlassProps>(\n (\n {\n name,\n languages,\n commits,\n contribution,\n stars = 0,\n flagType = \"green\",\n issues = [],\n expanded = false,\n onToggle,\n onGitHubClick,\n onAIAnalysisClick,\n className,\n ...props\n },\n ref\n ) => {\n // Calculate total project commits from contribution percentage\n const totalProjectCommits = contribution > 0\n ? Math.round(commits / (contribution / 100))\n : commits;\n const estimatedLines = Math.round(commits * 12);\n\n const expandedStyles: CSSProperties = {\n background: \"var(--expanded-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n const metricCardStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--card-bg)\"\n hoverBg=\"var(--card-hover-bg)\"\n borderColor=\"var(--card-border)\"\n hoverLift={false}\n blur=\"sm\"\n rounded=\"rounded-xl\"\n className={cn(\"overflow-hidden\", className)}\n {...props}\n >\n {/* Main Card Content */}\n <div\n className=\"p-3 md:p-3.5 cursor-pointer\"\n onClick={onToggle}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle?.();\n }\n }}\n aria-expanded={expanded}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"font-medium text-sm\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {name}\n </span>\n <StatusIndicatorGlass type={flagType} />\n </div>\n <div className=\"flex items-center gap-2\">\n {stars > 0 && (\n <span\n className=\"flex items-center gap-1 text-xs\"\n style={{ color: \"var(--status-away)\" }}\n >\n <Star className=\"w-3 h-3\" />\n {stars}\n </span>\n )}\n {expanded ? (\n <ChevronUp className=\"w-4 h-4\" style={{ color: \"var(--text-muted)\" }} />\n ) : (\n <ChevronDown className=\"w-4 h-4\" style={{ color: \"var(--text-muted)\" }} />\n )}\n </div>\n </div>\n <div\n className=\"text-xs mt-1.5\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {languages}\n </div>\n <div\n className=\"text-xs mt-0.5\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {commits} commits · {contribution}%\n </div>\n </div>\n\n {/* Expanded Section */}\n {expanded && (\n <div\n className=\"border-t p-3.5 space-y-3\"\n style={expandedStyles}\n >\n {/* Issues Alert */}\n {issues.length > 0 && (\n <div\n className=\"p-3 rounded-xl border\"\n style={{\n background: \"var(--alert-danger-bg)\",\n borderColor: \"var(--alert-danger-border)\",\n }}\n >\n <div\n className=\"text-xs font-semibold flex items-center gap-1.5 mb-1.5\"\n style={{ color: \"var(--alert-danger-text)\" }}\n >\n <AlertTriangle className=\"w-3.5 h-3.5\" />\n Issues\n </div>\n {issues.map((issue, index) => (\n <div\n key={index}\n className=\"text-xs opacity-70\"\n style={{ color: \"var(--alert-danger-text)\" }}\n >\n • {issue}\n </div>\n ))}\n </div>\n )}\n\n {/* Contribution Metrics */}\n <div className=\"grid grid-cols-2 gap-2\">\n <div\n className=\"p-2.5 rounded-lg border\"\n style={metricCardStyles}\n >\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Your Contribution\n </div>\n <div\n className=\"font-semibold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {commits} commits\n </div>\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n {contribution}%\n </div>\n </div>\n <div\n className=\"p-2.5 rounded-lg border\"\n style={metricCardStyles}\n >\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Full Project\n </div>\n <div\n className=\"font-semibold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {totalProjectCommits} commits\n </div>\n <div\n className=\"text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n ~{estimatedLines} lines\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <ButtonGlass\n variant=\"secondary\"\n size=\"sm\"\n icon={ExternalLink}\n onClick={(e) => {\n e.stopPropagation();\n onGitHubClick?.();\n }}\n className=\"flex-1\"\n >\n GitHub\n </ButtonGlass>\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n icon={Sparkles}\n onClick={(e) => {\n e.stopPropagation();\n onAIAnalysisClick?.();\n }}\n className=\"flex-1\"\n >\n AI Analysis\n </ButtonGlass>\n </div>\n </div>\n )}\n </InteractiveCard>\n );\n }\n);\n\nRepositoryCardGlass.displayName = \"RepositoryCardGlass\";\n","// ========================================\n// REPOSITORY HEADER GLASS - COMPOSITE COMPONENT\n// Repository name with status indicator and stars\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Star, ChevronDown, ChevronUp } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { StatusIndicatorGlass } from '../specialized/status-indicator-glass';\nimport '@/glass-theme.css';\n\nexport type RepositoryFlagType = 'green' | 'yellow' | 'red';\n\nexport interface RepositoryHeaderGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Repository name */\n readonly name: string;\n /** Flag/status type */\n readonly flagType?: RepositoryFlagType;\n /** Star count */\n readonly stars?: number;\n /** Is expanded state */\n readonly expanded?: boolean;\n /** Abbreviated star count for mobile (1.2k instead of 1234) */\n readonly abbreviatedStars?: boolean;\n}\n\nexport const RepositoryHeaderGlass = forwardRef<\n HTMLDivElement,\n RepositoryHeaderGlassProps\n>(\n (\n {\n name,\n flagType = 'green',\n stars = 0,\n expanded = false,\n abbreviatedStars = false,\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const starStyles: CSSProperties = {\n color: 'var(--status-away)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const formatStars = (count: number): string => {\n if (!abbreviatedStars) return String(count);\n if (count >= 1000000) return `${(count / 1000000).toFixed(1)}M`;\n if (count >= 1000) return `${(count / 1000).toFixed(1)}k`;\n return String(count);\n };\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-between', className)}\n {...props}\n >\n <div className=\"flex items-center gap-2.5\">\n <span className=\"font-medium text-sm\" style={titleStyles}>\n {name}\n </span>\n <StatusIndicatorGlass type={flagType} />\n </div>\n <div className=\"flex items-center gap-2\">\n {stars > 0 && (\n <span className=\"flex items-center gap-1 text-xs\" style={starStyles}>\n <Star className=\"w-3 h-3\" />\n {formatStars(stars)}\n </span>\n )}\n {expanded ? (\n <ChevronUp className=\"w-4 h-4\" style={mutedStyles} />\n ) : (\n <ChevronDown className=\"w-4 h-4\" style={mutedStyles} />\n )}\n </div>\n </div>\n );\n }\n);\n\nRepositoryHeaderGlass.displayName = 'RepositoryHeaderGlass';\n","// ========================================\n// REPOSITORY METADATA GLASS - COMPOSITE COMPONENT\n// Repository languages, commits, and contribution info\n// Level 3: Composite (extracted from RepositoryCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface RepositoryMetadataGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Programming languages used */\n readonly languages: string;\n /** Number of commits */\n readonly commits: number;\n /** Contribution percentage */\n readonly contribution: number;\n /** Stacked layout for mobile */\n readonly stacked?: boolean;\n}\n\nexport const RepositoryMetadataGlass = forwardRef<\n HTMLDivElement,\n RepositoryMetadataGlassProps\n>(\n (\n {\n languages,\n commits,\n contribution,\n stacked = false,\n className,\n ...props\n },\n ref\n ) => {\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const secondaryStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(stacked ? 'space-y-0.5' : 'space-y-1', className)}\n {...props}\n >\n <div className=\"text-xs\" style={mutedStyles}>\n {languages}\n </div>\n <div className=\"text-xs\" style={secondaryStyles}>\n {commits.toLocaleString()} commits · {contribution}%\n </div>\n </div>\n );\n }\n);\n\nRepositoryMetadataGlass.displayName = 'RepositoryMetadataGlass';\n","// ========================================\n// TRUST SCORE DISPLAY GLASS - COMPOSITE COMPONENT\n// Large animated trust score number with title\n// Level 3: Composite (extracted from TrustScoreCardGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Target } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface TrustScoreDisplayGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Score value (0-100) */\n readonly score: number;\n /** Maximum score (default: 100) */\n readonly maxScore?: number;\n /** Title text */\n readonly title?: string;\n /** Show icon */\n readonly showIcon?: boolean;\n /** Size variant */\n readonly size?: 'sm' | 'md' | 'lg';\n}\n\nexport const TrustScoreDisplayGlass = forwardRef<\n HTMLDivElement,\n TrustScoreDisplayGlassProps\n>(\n (\n {\n score,\n maxScore = 100,\n title = 'Overall Trust Score',\n showIcon = true,\n size = 'md',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const accentStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n const mutedStyles: CSSProperties = {\n color: 'var(--text-muted)',\n };\n\n const sizeClasses = {\n sm: { title: 'text-base', score: 'text-2xl', max: 'text-lg', icon: 'w-4 h-4' },\n md: { title: 'text-lg', score: 'text-4xl', max: 'text-xl', icon: 'w-5 h-5' },\n lg: { title: 'text-xl', score: 'text-5xl', max: 'text-2xl', icon: 'w-6 h-6' },\n };\n\n const sizes = sizeClasses[size];\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-between', className)}\n {...props}\n >\n <h2\n className={cn('font-semibold flex items-center gap-2', sizes.title)}\n style={titleStyles}\n >\n {showIcon && <Target className={sizes.icon} style={accentStyles} />}\n {title}\n </h2>\n <div className=\"flex items-center gap-2 animate-[score-pulse_2s_ease-in-out_infinite]\">\n <span\n className={cn(\n sizes.score,\n 'font-bold bg-linear-to-r from-amber-400 via-emerald-400 to-cyan-400 bg-clip-text text-transparent'\n )}\n >\n {score}\n </span>\n <span className={sizes.max} style={mutedStyles}>\n / {maxScore}\n </span>\n </div>\n </div>\n );\n }\n);\n\nTrustScoreDisplayGlass.displayName = 'TrustScoreDisplayGlass';\n","// ========================================\n// USER INFO GLASS - COMPOSITE COMPONENT\n// User name, username, and join date display\n// Level 3: Composite (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { Calendar, ExternalLink } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport '@/glass-theme.css';\n\nexport interface UserInfoGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Full name */\n readonly name: string;\n /** Username (without @) */\n readonly username: string;\n /** Join date string (e.g., \"Jan 2023\") */\n readonly joinDate: string;\n /** Username link URL (default: #) */\n readonly profileUrl?: string;\n /** Layout orientation */\n readonly layout?: 'vertical' | 'horizontal';\n}\n\nexport const UserInfoGlass = forwardRef<HTMLDivElement, UserInfoGlassProps>(\n (\n {\n name,\n username,\n joinDate,\n profileUrl = '#',\n layout = 'vertical',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n const metaStyles: CSSProperties = {\n color: 'var(--text-secondary)',\n };\n\n const linkStyles: CSSProperties = {\n color: 'var(--text-accent)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n layout === 'vertical' ? 'space-y-1' : 'flex items-center gap-4',\n className\n )}\n {...props}\n >\n <h1\n className={cn(\n 'font-bold',\n layout === 'vertical' ? 'text-lg md:text-xl' : 'text-xl'\n )}\n style={titleStyles}\n >\n {name}\n </h1>\n <div\n className={cn(\n 'flex items-center gap-2 text-sm flex-wrap',\n layout === 'vertical' && 'mt-0.5'\n )}\n style={metaStyles}\n >\n <a\n href={profileUrl}\n className=\"flex items-center gap-1 hover:underline\"\n style={linkStyles}\n aria-label={`View ${username}'s profile`}\n >\n @{username} <ExternalLink className=\"w-3 h-3\" />\n </a>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"w-3 h-3\" /> Joined {joinDate}\n </span>\n </div>\n </div>\n );\n }\n);\n\nUserInfoGlass.displayName = 'UserInfoGlass';\n","// ========================================\n// USER STATS LINE GLASS - COMPOSITE COMPONENT\n// User statistics line (repos, followers, following)\n// Level 3: Composite (extracted from ProfileHeaderGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { FolderGit2, Users, User } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { StatItemGlass } from '../atomic/stat-item-glass';\nimport '@/glass-theme.css';\n\nexport interface UserStatsLineGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of repositories */\n readonly repos: number;\n /** Number of followers */\n readonly followers: number;\n /** Number of following */\n readonly following: number;\n /** Wrap stats on mobile */\n readonly wrap?: boolean;\n /** Abbreviated numbers for mobile (1.2k instead of 1234) */\n readonly abbreviated?: boolean;\n}\n\nexport const UserStatsLineGlass = forwardRef<HTMLDivElement, UserStatsLineGlassProps>(\n (\n {\n repos,\n followers,\n following,\n wrap = true,\n abbreviated = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center gap-4 text-sm',\n wrap && 'flex-wrap',\n className\n )}\n {...props}\n >\n <StatItemGlass\n icon={FolderGit2}\n value={repos}\n label=\"repos\"\n abbreviated={abbreviated}\n />\n <StatItemGlass\n icon={Users}\n value={followers}\n label=\"followers\"\n abbreviated={abbreviated}\n />\n <StatItemGlass\n icon={User}\n value={following}\n label=\"following\"\n abbreviated={abbreviated}\n />\n </div>\n );\n }\n);\n\nUserStatsLineGlass.displayName = 'UserStatsLineGlass';\n","// ========================================\n// YEAR CARD GLASS COMPONENT\n// Year card for career timeline\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { BadgeGlass } from \"../ui/badge-glass\";\nimport { ProgressGlass } from \"../specialized/progress-glass\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { InteractiveCard } from \"../primitives\";\nimport type { ProgressGradient } from \"@/lib/variants/progress-glass-variants\";\nimport \"@/glass-theme.css\";\n\nexport interface YearCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly year: string | number;\n readonly emoji: string;\n readonly label: string;\n readonly commits: string;\n readonly progress: number;\n readonly isExpanded?: boolean;\n readonly gradient?: ProgressGradient;\n readonly prs?: number;\n readonly repos?: number;\n readonly onShowYear?: () => void;\n}\n\nexport const YearCardGlass = forwardRef<HTMLDivElement, YearCardGlassProps>(\n (\n { year, emoji, label, commits, progress, isExpanded = false, gradient = \"blue\", prs = 0, repos = 0, onShowYear, className, onClick, ...props },\n ref\n ) => {\n const expandedStyles: CSSProperties = {\n background: \"var(--expanded-bg)\",\n borderColor: \"var(--expanded-border)\",\n };\n\n const metricCardStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n borderColor: \"var(--card-border)\",\n };\n\n return (\n <InteractiveCard\n ref={ref}\n baseBg=\"var(--year-card-bg)\"\n hoverBg=\"var(--card-hover-bg)\"\n borderColor=\"var(--year-card-border)\"\n hoverGlow=\"var(--year-card-hover-glow)\"\n hoverLift\n rounded=\"rounded-xl\"\n className={cn(\"p-2.5 md:p-3 cursor-pointer\", className)}\n onClick={onClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${year} year: ${label}, ${commits} commits. ${isExpanded ? 'Collapse' : 'Expand'} details`}\n {...props}\n >\n <div className=\"flex items-center justify-between mb-1.5 md:mb-2\">\n <div className=\"flex items-center gap-1.5 md:gap-2\">\n <span className=\"font-semibold text-sm md:text-base\" style={{ color: \"var(--text-primary)\" }}>\n {year}\n </span>\n <BadgeGlass>\n {emoji} {label}\n </BadgeGlass>\n </div>\n <span\n className=\"text-xs md:text-sm flex items-center gap-0.5 md:gap-1\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n {commits}\n {isExpanded ? (\n <ChevronUp className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n ) : (\n <ChevronDown className=\"w-3.5 h-3.5 md:w-4 md:h-4\" />\n )}\n </span>\n </div>\n <ProgressGlass\n value={progress}\n gradient={gradient}\n size=\"sm\"\n />\n\n {/* Expanded Section */}\n {isExpanded && (\n <div\n className=\"mt-3 pt-3 border-t space-y-3\"\n style={expandedStyles}\n >\n {/* Stats Grid */}\n <div className=\"grid grid-cols-3 gap-2 md:gap-3\">\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {commits}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Commits\n </div>\n </div>\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {prs}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n PRs\n </div>\n </div>\n <div\n className=\"p-2 md:p-2.5 rounded-lg border text-center\"\n style={metricCardStyles}\n >\n <div\n className=\"text-base md:text-xl font-bold\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {repos}\n </div>\n <div\n className=\"text-[10px] md:text-xs\"\n style={{ color: \"var(--text-muted)\" }}\n >\n Repos\n </div>\n </div>\n </div>\n\n {/* Show Year Button */}\n {onShowYear && (\n <ButtonGlass\n variant=\"primary\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n onShowYear();\n }}\n className=\"w-full\"\n >\n Show repos from {year}\n </ButtonGlass>\n )}\n </div>\n )}\n </InteractiveCard>\n );\n }\n);\n\nYearCardGlass.displayName = \"YearCardGlass\";\n","// ========================================\n// CAREER STATS GLASS COMPONENT\n// Career statistics with expandable year cards\n// ========================================\n\nimport { forwardRef, useState } from \"react\";\nimport { TrendingUp, Code, GitPullRequest, FolderGit2 } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { YearCardGlass } from \"../composite/year-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface YearData {\n readonly year: string | number;\n readonly emoji: string;\n readonly label: string;\n readonly commits: string;\n readonly progress: number;\n readonly prs?: number;\n readonly repos?: number;\n}\n\nexport interface CareerStatsGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly totalCommits?: number;\n readonly totalPRs?: number;\n readonly totalRepos?: number;\n readonly years?: readonly YearData[];\n}\n\nexport const CareerStatsGlass = forwardRef<HTMLDivElement, CareerStatsGlassProps>(\n (\n {\n totalCommits = 2242,\n totalPRs = 47,\n totalRepos = 11,\n years = [],\n className,\n ...props\n },\n ref\n ) => {\n const [expandedYear, setExpandedYear] = useState<string | number | null>(null);\n\n const handleYearClick = (year: string | number): void => {\n setExpandedYear(expandedYear === year ? null : year);\n };\n\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-4 md:p-5 lg:p-6\", className)}\n intensity=\"medium\"\n hover={false}\n {...props}\n >\n <h3\n className=\"font-semibold flex items-center gap-2 md:gap-2.5 lg:gap-3 mb-1 text-base md:text-lg lg:text-xl\"\n style={{ color: \"var(--text-primary)\" }}\n >\n <TrendingUp className=\"w-4 h-4 md:w-5 md:h-5 lg:w-6 lg:h-6\" style={{ color: \"var(--text-accent)\" }} />\n Career Stats\n </h3>\n <p\n className=\"text-xs md:text-sm lg:text-base mb-3 md:mb-4 flex items-center gap-2 md:gap-2.5 lg:gap-3 flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <Code className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalCommits.toLocaleString()} commits\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <GitPullRequest className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalPRs} PRs\n </span>\n <span>·</span>\n <span className=\"flex items-center gap-1 md:gap-1.5\">\n <FolderGit2 className=\"w-3.5 h-3.5 md:w-4 md:h-4 lg:w-5 lg:h-5\" />\n {totalRepos} repos\n </span>\n </p>\n <div className=\"space-y-2 md:space-y-2.5 lg:space-y-3\">\n {years.map((y) => (\n <YearCardGlass\n key={y.year}\n year={y.year}\n emoji={y.emoji}\n label={y.label}\n commits={y.commits}\n progress={y.progress}\n prs={y.prs}\n repos={y.repos}\n isExpanded={expandedYear === y.year}\n onClick={() => handleYearClick(y.year)}\n onShowYear={() => {\n // This can be used to filter repos by year\n // Example: onYearFilter?.(y.year)\n }}\n />\n ))}\n </div>\n </GlassCard>\n );\n }\n);\n\nCareerStatsGlass.displayName = \"CareerStatsGlass\";\n","// ========================================\n// FLAGS SECTION GLASS COMPONENT\n// Expandable flags/warnings section\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { AlertTriangle, ChevronUp, ChevronDown } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { FlagAlertGlass, type FlagType } from \"../specialized/flag-alert-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface FlagData {\n readonly type: FlagType;\n readonly title: string;\n readonly description?: string;\n}\n\nexport interface FlagsSectionGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly flags?: readonly FlagData[];\n readonly expanded?: boolean;\n readonly onToggle?: () => void;\n}\n\nexport const FlagsSectionGlass = forwardRef<HTMLDivElement, FlagsSectionGlassProps>(\n ({ flags = [], expanded = false, onToggle, className, ...props }, ref) => {\n return (\n <GlassCard\n ref={ref}\n className={cn(className)}\n intensity=\"medium\"\n hover={false}\n {...props}\n >\n <button\n onClick={onToggle}\n className=\"w-full p-3 md:p-4 flex items-center justify-between rounded-2xl\"\n style={{ color: \"var(--text-primary)\" }}\n type=\"button\"\n aria-expanded={expanded}\n >\n <div className=\"flex items-center gap-1.5 md:gap-2\">\n <AlertTriangle className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--status-away)\" }} />\n <span className=\"font-medium text-sm md:text-base\">{flags.length} flags detected</span>\n </div>\n {expanded ? (\n <ChevronUp className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-muted)\" }} />\n ) : (\n <ChevronDown className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-muted)\" }} />\n )}\n </button>\n {expanded && (\n <div className=\"px-3 pb-3 md:px-4 md:pb-4 space-y-1.5 md:space-y-2\">\n {flags.map((flag, i) => (\n <FlagAlertGlass\n key={`flag-${i}`}\n type={flag.type}\n title={flag.title}\n description={flag.description}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nFlagsSectionGlass.displayName = \"FlagsSectionGlass\";\n","// ========================================\n// HEADER BRANDING GLASS - SECTION COMPONENT\n// Header branding with logo and subtitle\n// Level 4: Section (extracted from HeaderNavGlass)\n// ========================================\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { type LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { IconButtonGlass } from '../atomic/icon-button-glass';\nimport '@/glass-theme.css';\n\nexport interface HeaderBrandingGlassProps extends HTMLAttributes<HTMLDivElement> {\n /** Logo icon component */\n readonly logoIcon: LucideIcon;\n /** Main title */\n readonly title: string;\n /** Subtitle (hidden on mobile) */\n readonly subtitle?: string;\n /** Logo click handler */\n readonly onLogoClick?: () => void;\n /** Logo aria label */\n readonly logoAriaLabel?: string;\n}\n\nexport const HeaderBrandingGlass = forwardRef<HTMLDivElement, HeaderBrandingGlassProps>(\n (\n {\n logoIcon,\n title,\n subtitle,\n onLogoClick,\n logoAriaLabel = 'Home',\n className,\n ...props\n },\n ref\n ) => {\n const titleStyles: CSSProperties = {\n color: 'var(--text-primary)',\n };\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center gap-4', className)}\n {...props}\n >\n <IconButtonGlass\n icon={logoIcon}\n aria-label={logoAriaLabel}\n onClick={onLogoClick}\n variant=\"gradient\"\n size=\"md\"\n />\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:gap-2\">\n <span className=\"font-semibold text-base md:text-lg\" style={titleStyles}>\n {title}\n </span>\n {subtitle && (\n <span\n className=\"hidden md:inline text-sm\"\n style={{ color: 'var(--text-secondary)' }}\n >\n · {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n }\n);\n\nHeaderBrandingGlass.displayName = 'HeaderBrandingGlass';\n","// ========================================\n// HEADER NAV GLASS COMPONENT\n// Navigation header with search and theme toggle\n// ========================================\n\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { Github, Sun, Moon, Palette } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { useTheme, type ThemeName } from \"@/lib/theme-context\";\nimport { ButtonGlass } from \"../ui/button-glass\";\nimport { SearchBoxGlass } from \"../atomic/search-box-glass\";\nimport \"@/glass-theme.css\";\n\nconst themes: ThemeName[] = [\"light\", \"aurora\", \"glass\"];\n\nconst themeConfig: Record<ThemeName, { label: string; icon: typeof Sun }> = {\n light: { label: \"Light\", icon: Sun },\n aurora: { label: \"Aurora\", icon: Moon },\n glass: { label: \"Glass\", icon: Palette },\n};\n\nexport interface HeaderNavGlassProps extends React.HTMLAttributes<HTMLElement> {\n readonly username?: string;\n readonly onSearch?: (value: string) => void;\n readonly onThemeToggle?: () => void;\n}\n\nexport const HeaderNavGlass = forwardRef<HTMLElement, HeaderNavGlassProps>(\n ({ username = \"Yhooi2\", onSearch, onThemeToggle, className, ...props }, ref) => {\n const { theme, cycleTheme } = useTheme();\n\n const nextTheme = themes[(themes.indexOf(theme) + 1) % themes.length];\n const NextIcon = themeConfig[nextTheme].icon;\n\n const headerStyles: CSSProperties = {\n background: \"var(--header-bg)\",\n borderColor: \"var(--header-border)\",\n backdropFilter: \"blur(var(--blur-md))\",\n WebkitBackdropFilter: \"blur(var(--blur-md))\",\n };\n\n const iconBtnStyles: CSSProperties = {\n background: \"linear-gradient(135deg, var(--icon-btn-from), var(--icon-btn-to))\",\n boxShadow: \"var(--icon-btn-shadow)\",\n };\n\n const themeBtnStyles: CSSProperties = {\n background: \"var(--card-subtle-bg)\",\n border: \"1px solid var(--card-subtle-border)\",\n };\n\n return (\n <header\n ref={ref}\n className={cn(\"border rounded-xl py-2 px-3 md:py-3 md:px-4 transition-all duration-300\", className)}\n style={headerStyles}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 md:gap-4\">\n <button\n className=\"w-8 h-8 md:w-10 md:h-10 rounded-xl flex items-center justify-center transition-all duration-300 hover:scale-105\"\n style={iconBtnStyles}\n type=\"button\"\n aria-label=\"GitHub\"\n >\n <Github className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--icon-btn-text)\" }} />\n </button>\n <span className=\"font-semibold text-base md:text-lg\" style={{ color: \"var(--text-primary)\" }}>\n User Analytics\n </span>\n <SearchBoxGlass\n className=\"ml-2 md:ml-4\"\n defaultValue={username}\n onSubmit={onSearch}\n inputWidth=\"w-28 sm:w-36 md:w-48\"\n placeholder=\"Search username...\"\n />\n </div>\n <div className=\"flex items-center gap-2 md:gap-3\">\n <button\n onClick={onThemeToggle ?? cycleTheme}\n className=\"p-2 md:p-2.5 rounded-xl transition-all duration-300 hover:scale-105\"\n style={themeBtnStyles}\n type=\"button\"\n aria-label={`Switch to ${themeConfig[nextTheme].label} theme`}\n >\n <NextIcon className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-secondary)\" }} />\n </button>\n <ButtonGlass variant=\"secondary\" icon={Github} className=\"hidden md:inline-flex\">\n Sign in with GitHub\n </ButtonGlass>\n </div>\n </div>\n </header>\n );\n }\n);\n\nHeaderNavGlass.displayName = \"HeaderNavGlass\";\n","// ========================================\n// PROFILE HEADER GLASS COMPONENT\n// User profile header with avatar, stats, languages\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Calendar, ExternalLink, FolderGit2, Users, User } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { ProfileAvatarGlass } from \"../specialized/profile-avatar-glass\";\nimport { LanguageBarGlass, type LanguageData } from \"../specialized/language-bar-glass\";\nimport { AICardGlass } from \"../composite/ai-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface ProfileStats {\n readonly repos?: number;\n readonly followers?: number;\n readonly following?: number;\n}\n\nexport interface ProfileHeaderGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly name?: string;\n readonly username?: string;\n readonly joinDate?: string;\n readonly stats?: ProfileStats;\n readonly languages?: readonly LanguageData[];\n readonly onAIGenerate?: () => void;\n}\n\nexport const ProfileHeaderGlass = forwardRef<HTMLDivElement, ProfileHeaderGlassProps>(\n (\n {\n name = \"Artem Safronov\",\n username = \"Yhooi2\",\n joinDate = \"Jan 2023\",\n stats = {},\n languages = [],\n onAIGenerate,\n className,\n ...props\n },\n ref\n ) => {\n const s = { repos: 11, followers: 1, following: 5, ...stats };\n\n const getInitials = (fullName: string): string => {\n return fullName\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-5\", className)}\n intensity=\"strong\"\n glow=\"violet\"\n hover={false}\n {...props}\n >\n <div className=\"flex flex-col md:flex-row gap-3 md:gap-6\">\n <div className=\"flex-1\">\n <div className=\"flex gap-4\">\n <ProfileAvatarGlass\n initials={getInitials(name)}\n size=\"lg\"\n status=\"online\"\n />\n <div>\n <h1 className=\"text-lg md:text-xl font-bold\" style={{ color: \"var(--text-primary)\" }}>\n {name}\n </h1>\n <div\n className=\"flex items-center gap-2 text-sm mt-0.5\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <a\n href=\"#\"\n className=\"flex items-center gap-1 hover:underline\"\n style={{ color: \"var(--text-accent)\" }}\n >\n @{username} <ExternalLink className=\"w-3 h-3\" />\n </a>\n <span>·</span>\n <span className=\"flex items-center gap-1\">\n <Calendar className=\"w-3 h-3\" /> Joined {joinDate}\n </span>\n </div>\n <div\n className=\"flex items-center gap-3 md:gap-4 mt-2 text-sm flex-wrap\"\n style={{ color: \"var(--text-secondary)\" }}\n >\n <span className=\"flex items-center gap-1\">\n <FolderGit2\n className=\"w-4 h-4\"\n style={{ color: \"var(--text-accent)\" }}\n />\n {s.repos} repos\n </span>\n <span className=\"flex items-center gap-1\">\n <Users className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n {s.followers} followers\n </span>\n <span className=\"flex items-center gap-1\">\n <User className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n {s.following} following\n </span>\n </div>\n </div>\n </div>\n {languages.length > 0 && (\n <div className=\"mt-4\">\n <LanguageBarGlass languages={languages} />\n </div>\n )}\n </div>\n <AICardGlass onGenerate={onAIGenerate} />\n </div>\n </GlassCard>\n );\n }\n);\n\nProfileHeaderGlass.displayName = \"ProfileHeaderGlass\";\n","// ========================================\n// PROJECTS LIST GLASS COMPONENT\n// List of repository cards with filtering, sorting, and ownership controls\n// ========================================\n\nimport { forwardRef, useState, useMemo, type CSSProperties } from \"react\";\nimport { FolderGit2, AlertTriangle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { BadgeGlass } from \"../ui/badge-glass\";\nimport { RepositoryCardGlass, type RepositoryFlagType } from \"../composite/repository-card-glass\";\nimport { SegmentedControlGlass } from \"../specialized/segmented-control-glass\";\nimport { SortDropdownGlass, type SortField, type SortOrder } from \"../atomic\";\nimport \"@/glass-theme.css\";\n\n// ========================================\n// TYPES\n// ========================================\n\nexport type OwnershipFilter = 'your' | 'contrib' | 'all';\n\n// Re-export for convenience\nexport type { SortField, SortOrder } from \"../atomic\";\n\nexport interface Repository {\n readonly name: string;\n readonly languages: string;\n readonly commits: number;\n readonly contribution: number;\n readonly stars?: number;\n readonly flagType?: RepositoryFlagType;\n readonly issues?: readonly string[];\n readonly createdYear?: number;\n /** Ownership type for Your/Contrib filtering */\n readonly ownership?: 'your' | 'contrib';\n}\n\nexport interface ProjectsListGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n /** List of repositories to display */\n readonly repositories: readonly Repository[];\n /** Show only flagged (non-green) repositories */\n readonly showFlaggedOnly?: boolean;\n /** Filter by creation year */\n readonly selectedYear?: number | null;\n /** Callback to clear all filters */\n readonly onClearFilters?: () => void;\n /** Custom title (overrides auto-generated) */\n readonly title?: string;\n\n // ======== NEW: Ownership Filter ========\n /** Current ownership filter */\n readonly ownershipFilter?: OwnershipFilter;\n /** Callback when ownership filter changes */\n readonly onOwnershipChange?: (filter: OwnershipFilter) => void;\n\n // ======== NEW: Sorting ========\n /** Current sort field */\n readonly sortBy?: SortField;\n /** Current sort order */\n readonly sortOrder?: SortOrder;\n /** Callback when sort changes */\n readonly onSortChange?: (field: SortField, order: SortOrder) => void;\n\n // ======== NEW: Controls ========\n /** Show header controls (sort dropdown, ownership filter). Default: true when callbacks provided */\n readonly showControls?: boolean;\n}\n\n// ========================================\n// OWNERSHIP FILTER OPTIONS\n// ========================================\n\nconst ownershipOptions = [\n { value: 'your' as const, label: 'Your' },\n { value: 'contrib' as const, label: 'Contrib' },\n];\n\n// ========================================\n// COMPONENT\n// ========================================\n\nexport const ProjectsListGlass = forwardRef<HTMLDivElement, ProjectsListGlassProps>(\n (\n {\n repositories,\n showFlaggedOnly = false,\n selectedYear = null,\n onClearFilters,\n title,\n // New props\n ownershipFilter,\n onOwnershipChange,\n sortBy = 'commits',\n sortOrder = 'desc',\n onSortChange,\n showControls,\n className,\n ...props\n },\n ref\n ) => {\n const [expandedIndex, setExpandedIndex] = useState<number | null>(null);\n\n // Determine if controls should be shown\n const shouldShowControls = showControls ?? (onOwnershipChange !== undefined || onSortChange !== undefined);\n\n // Filter repositories\n const filteredRepos = useMemo(() => {\n return repositories.filter((repo) => {\n // Flag filter\n if (showFlaggedOnly && repo.flagType === \"green\") return false;\n // Year filter\n if (selectedYear && repo.createdYear !== selectedYear) return false;\n // Ownership filter\n if (ownershipFilter && ownershipFilter !== 'all' && repo.ownership !== ownershipFilter) return false;\n return true;\n });\n }, [repositories, showFlaggedOnly, selectedYear, ownershipFilter]);\n\n // Sort repositories\n const sortedRepos = useMemo(() => {\n if (!onSortChange) return filteredRepos;\n\n return [...filteredRepos].sort((a, b) => {\n const multiplier = sortOrder === 'asc' ? 1 : -1;\n switch (sortBy) {\n case 'commits':\n return (a.commits - b.commits) * multiplier;\n case 'stars':\n return ((a.stars ?? 0) - (b.stars ?? 0)) * multiplier;\n case 'name':\n return a.name.localeCompare(b.name) * multiplier;\n case 'contribution':\n return (a.contribution - b.contribution) * multiplier;\n default:\n return 0;\n }\n });\n }, [filteredRepos, sortBy, sortOrder, onSortChange]);\n\n // Generate title based on filters\n const displayTitle = title ?? (\n showFlaggedOnly\n ? \"Flagged\"\n : selectedYear\n ? `${selectedYear}`\n : \"All\"\n ) + \" Projects\";\n\n const emptyContainerStyles: CSSProperties = {\n background: \"var(--card-bg)\",\n };\n\n // Handle ownership change with type safety\n const handleOwnershipChange = (value: string): void => {\n if (onOwnershipChange && (value === 'your' || value === 'contrib')) {\n onOwnershipChange(value);\n }\n };\n\n return (\n <GlassCard\n ref={ref}\n intensity=\"medium\"\n className={cn(\"p-3 sm:p-4\", className)}\n {...props}\n >\n {/* Header */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4\">\n {/* Left: Title + Badge */}\n <div className=\"flex items-center gap-2\">\n {showFlaggedOnly ? (\n <AlertTriangle className=\"w-4 h-4\" style={{ color: \"var(--status-away)\" }} />\n ) : (\n <FolderGit2 className=\"w-4 h-4\" style={{ color: \"var(--text-accent)\" }} />\n )}\n <h3\n className=\"font-semibold text-sm sm:text-base\"\n style={{ color: \"var(--text-primary)\" }}\n >\n {displayTitle}\n </h3>\n <BadgeGlass variant=\"info\">{sortedRepos.length} repos</BadgeGlass>\n </div>\n\n {/* Right: Controls */}\n {shouldShowControls && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n {onSortChange && (\n <SortDropdownGlass\n sortBy={sortBy}\n sortOrder={sortOrder}\n onSortChange={onSortChange}\n />\n )}\n {onOwnershipChange && ownershipFilter && (\n <SegmentedControlGlass\n options={ownershipOptions}\n value={ownershipFilter}\n onChange={handleOwnershipChange}\n />\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {sortedRepos.length === 0 ? (\n // Empty State\n <div className=\"text-center py-10\">\n <div\n className=\"w-16 h-16 mx-auto mb-3 rounded-2xl flex items-center justify-center\"\n style={emptyContainerStyles}\n >\n <FolderGit2 className=\"w-8 h-8\" style={{ color: \"var(--text-muted)\" }} />\n </div>\n <p\n className=\"text-sm\"\n style={{ color: \"var(--text-muted)\" }}\n >\n No repositories found\n </p>\n {onClearFilters && (\n <button\n onClick={onClearFilters}\n className=\"mt-2 text-sm underline transition-colors hover:opacity-80\"\n style={{ color: \"var(--text-accent)\" }}\n >\n Clear filters\n </button>\n )}\n </div>\n ) : (\n // Repository List\n <div className=\"space-y-2\">\n {sortedRepos.map((repo, index) => (\n <RepositoryCardGlass\n key={repo.name}\n name={repo.name}\n languages={repo.languages}\n commits={repo.commits}\n contribution={repo.contribution}\n stars={repo.stars}\n flagType={repo.flagType}\n issues={repo.issues}\n expanded={expandedIndex === index}\n onToggle={() => setExpandedIndex(expandedIndex === index ? null : index)}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nProjectsListGlass.displayName = \"ProjectsListGlass\";\n","// ========================================\n// TRUST SCORE CARD GLASS COMPONENT\n// Overall trust score display with metrics\n// ========================================\n\nimport { forwardRef } from \"react\";\nimport { Target } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { GlassCard } from \"../ui/glass-card\";\nimport { RainbowProgressGlass } from \"../specialized/rainbow-progress-glass\";\nimport { MetricCardGlass, type MetricColor } from \"../composite/metric-card-glass\";\nimport \"@/glass-theme.css\";\n\nexport interface MetricData {\n readonly label: string;\n readonly value: number;\n readonly color: MetricColor;\n}\n\nexport interface TrustScoreCardGlassProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly score?: number;\n readonly metrics?: readonly MetricData[];\n}\n\nexport const TrustScoreCardGlass = forwardRef<HTMLDivElement, TrustScoreCardGlassProps>(\n ({ score = 72, metrics = [], className, ...props }, ref) => {\n return (\n <GlassCard\n ref={ref}\n className={cn(\"p-4 md:p-5\", className)}\n intensity=\"strong\"\n glow=\"cyan\"\n hover={false}\n {...props}\n >\n <div className=\"flex items-center justify-between mb-3 md:mb-4\">\n <h2\n className=\"font-semibold flex items-center gap-1.5 md:gap-2 text-base md:text-lg\"\n style={{ color: \"var(--text-primary)\" }}\n >\n <Target className=\"w-4 h-4 md:w-5 md:h-5\" style={{ color: \"var(--text-accent)\" }} />\n Overall Trust Score\n </h2>\n <div className=\"flex items-center gap-1.5 md:gap-2 animate-[score-pulse_2s_ease-in-out_infinite]\">\n <span className=\"text-3xl md:text-4xl font-bold bg-linear-to-r from-amber-400 via-emerald-400 to-cyan-400 bg-clip-text text-transparent\">\n {score}\n </span>\n <span className=\"text-lg md:text-xl\" style={{ color: \"var(--text-muted)\" }}>\n / 100\n </span>\n </div>\n </div>\n <RainbowProgressGlass value={score} size=\"lg\" showGlow />\n {metrics.length > 0 && (\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 md:gap-4 mt-4 md:mt-5\">\n {metrics.map((m) => (\n <MetricCardGlass\n key={m.label}\n label={m.label}\n value={m.value}\n color={m.color}\n />\n ))}\n </div>\n )}\n </GlassCard>\n );\n }\n);\n\nTrustScoreCardGlass.displayName = \"TrustScoreCardGlass\";\n"],"x_google_ignoreList":[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,iBAAA,GAAA,yBAAA,KACX,yHACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aAAa;EACb,SAAS;EACT,SAAS;EACT,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACjBD,MAAa,aAAa;CACxB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;ACiCD,MAAa,eAAA,GAAA,MAAA,aACV,EAAE,UAAU,UAAU,IAAI,SAAS,MAAM,WAAW,GAAG,SAAS,QAAQ;AAMvE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GALG,YAAY,KAAK,sBAAsB,qBAOnD,UAAU,oCACV,UACD;EACD,GAAI;EAEH;GACG;EAGX;AAED,YAAY,cAAc;ACI1B,MAAa,oBAAA,GAAA,MAAA,aAET,EACE,OACA,OACA,SACA,SACA,UACA,WACA,UACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,kCAAkC,UAAU;EAC1D,GAAI;;GAEH,SACC,iBAAA,GAAA,kBAAA,MAAC,SAAA;IACU;IACT,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;eAExC,OACA,YACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;KAAuC,cAAW;eAAW;MAEtE,CAAA;KAEH;GAGT;GAEA,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,4BAA4B;IAC5C,MAAK;IACL,aAAU;cAET;KACC;GAGL,WAAW,CAAC,SACX,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,6BAA6B;IAC7C,aAAU;cAET;KACC;;GAEF;EAGX;AAED,iBAAiB,cAAc;AClC/B,MAAa,mBAAA,GAAA,MAAA,aAET,EACE,YAAY,MACZ,WACA,SACA,SAAS,kBACT,cAAc,sBACd,kBACA,OAAO,MACP,WAAW,OACX,UAAU,eACV,aAAa,0BACb,WACA,OACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;CAEvE,MAAMC,aAA4B;EAEhC,YAAY,aAAa,UAAU,UAAU;EAG7C,QAAQ,aACN,aAAa,mBAAmB,mBAAmB;EAIrD,gBAAgB,mBAAmB,KAAK;EACxC,sBAAsB,mBAAmB,KAAK;EAG9C,WAAW,aAAa,aAAa,CAAC,WAAW,qBAAqB;EAGtE,WAAW,aAAa,aAAa,CAAC,WAAW,YAAY;EAG7D,YAAY,OAAO;EAGnB,GAAG;EACJ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,SAAS,UAAU;EACjC,OAAO;EACP,GAAK,WAAW,EAAE,GAAG;EACrB,GAAI;EAEH;GACG;EAGX;AAED,gBAAgB,cAAc;AClJ9B,IAAMC,UAA6C;CACjD,SAAS,aAAA;CACT,aAAa,aAAA;CACb,SAAS,aAAA;CACT,SAAS,aAAA;CAET,MAAM,aAAA;CACN,OAAO,aAAA;CACR;AAQD,IAAMC,kBAAsD;CAE1D,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,aAAa;EACX,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CAED,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CAED,MAAM;EACJ,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,IAAI;EACJ,QAAQ;EACR,MAAM;EACP;CACF;AAED,IAAM,kBAAkB,YAAyC;CAC/D,MAAM,SAAS,gBAAc;AAC7B,QAAO;EACL,YAAY,OAAO;EACnB,QAAQ,aAAa,OAAO;EAC7B;;AAqFH,MAAa,cAAA,GAAA,MAAA,aAET,EACE,WACA,UAAU,WACV,OACA,UACA,aACA,WACA,GAAG,SAEL,QACG;CAEH,MAAMC,mBAAiC,WAAW;CAElD,MAAM,SAAS,gBAAc;CAC7B,MAAM,OAAO,QAAQ;AAErB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,EAAE,SAAS,kBAAkB,CAAC,EAAE,UAAU;EACtE,OAAO,eAAe,iBAAiB;EACvC,MAAK;EACL,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,OAAO,MAAM;KAC7B;GACF,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACZ,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,OAAO,MAAM;eAE5B;MACC,EAEN,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAgC,OAAO,EAAE,OAAO,OAAO,MAAM;KACvE;MACC,CAAA;KACA;GACL,eACC,iBAAA,GAAA,kBAAA,KAAC,UAAA;IACC,SAAS;IACT,WAAU;IACV,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA;KAAE,WAAW,WAAW;KAAI,OAAO,EAAE,OAAO,OAAO,MAAM;MAAI;KACvD;;GAEP;EAGX;AAED,WAAW,cAAc;AC/NzB,MAAa,eAAA,GAAA,yBAAA,KACX,2FACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;AAED,MAAa,eAAA,GAAA,yBAAA,KAAkB,gDAAgD;CAC7E,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACwDF,IAAM,eAAe,SAAyB;AAC5C,KAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,WAAW,EAAG,QAAO;AAC9C,QAAO,KACJ,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,GAAG,CACtB,KAAK,GAAG,CACR,aAAa,CACb,MAAM,GAAG,EAAE;;AAQhB,IAAM,iBAAiB,eAA2D;AAOhF,QANuE;EACrE,QAAQ;GAAE,IAAI;GAAwB,MAAM;GAA6B;EACzE,SAAS;GAAE,IAAI;GAAyB,MAAM;GAAQ;EACtD,MAAM;GAAE,IAAI;GAAsB,MAAM;GAA2B;EACnE,MAAM;GAAE,IAAI;GAAsB,MAAM;GAA2B;EACpE,CACiB;;AAGpB,MAAa,eAAA,GAAA,MAAA,aACV,EAAE,UAAU,OAAO,MAAM,MAAA,SAAO,MAAM,QAAQ,WAAW,GAAG,SAAS,QAAQ;CAC5E,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAE5C,MAAME,eAA8B;EAClC,YAAY;EACZ,QAAQ;EACR,WAAW,YAAY,6BAA6B;EACpD,OAAO;EACR;CAED,MAAM,WAAW,YAAY,KAAK;AAKlC,QACE,iBAAA,GAAA,kBAAA,MAHW,UAAU,sBAAA,OAAO,OAG3B;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;aAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAW,cAAA,GAAG,YAAY,EAAE,MAAA,QAAM,CAAC,CAAC;GACpC,OAAO;GACP,MAAK;GACL,cAAY,cAAc;aAEzB;IACG,EAGL,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAW,cAAA,GAAG,YAAY,EAAE,MAAA,QAAM,CAAC,CAAC;GACpC,OAAO;IACL,YAAY,cAAc,OAAO,CAAC;IAClC,WAAW,cAAc,OAAO,CAAC;IAClC;GACD,MAAK;GACL,cAAY,WAAW;IACvB,CAAA;GAEC;EAGZ;AAED,YAAY,cAAc;ACvJ1B,MAAa,iBAAA,GAAA,yBAAA,KACX,sEACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;ACVD,IAAMC,gBAAsD;CAE1D,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,aAAa;EACX,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CAED,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,QAAQ;EACT;CACF;AAED,IAAM,kBAAkB,YAAyC;CAC/D,MAAM,IAAI,cAAc,YAAY,cAAc;AAClD,QAAO;EACL,YAAY,EAAE;EACd,OAAO,EAAE;EACT,QAAQ,aAAa,EAAE;EACxB;;AAmFH,MAAa,cAAA,GAAA,MAAA,aAET,EAAE,UAAU,WAAW,UAAU,WAAW,MAAA,SAAO,MAAM,KAAK,GAAG,SACjE,QACG;CACH,MAAM,IAAI,cAAc;AAExB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EACjD,OAAO,eAAe,QAAQ;EAC9B,GAAI;aAEH,OACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,YAAY,EAAE,MAAM;IAC7B,EAEH,SAAA;GACI;EAGZ;AAED,WAAW,cAAc;ACjKzB,MAAa,uBAAA,GAAA,yBAAA,KACX,oLACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WAAW;GACX,OAAO;GACP,aAAa;GACb,SAAS;GACT,MAAM;GACP;EACD,MAAM;GAGJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACP;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;ACTD,IAAM,oBACJ,SACA,WACA,mBACkB;AA8DlB,QA7D8D;EAC5D,SAAS;GACP,YAAY,YACR,gCACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,4BACA;GACL;EACD,WAAW;GACT,YAAY,YACR,kCACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,8BACA;GACL;EACD,OAAO;GACL,YAAY,YACR,8BACA;GACJ,OAAO;GACP,QAAQ;GACR,WAAW,iBAAiB,sBAAsB;GACnD;EACD,aAAa;GACX,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,gCACA;GACL;EACD,SAAS;GACP,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBACP,sBACA,YACA,4BACA;GACL;EACD,MAAM;GACJ,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW,iBAAiB,sBAAsB;GACnD;EACF,CAEiB;;AA+GpB,MAAa,eAAA,GAAA,MAAA,aAET,EACE,UAAU,OACV,WACA,UAAU,WACV,MAAA,SAAO,MACP,UACA,UAAU,OACV,UACA,MAAM,MACN,eAAe,QACf,SACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAuD,KAAK;CAE3E,MAAM,aAAa,YAAY;CAC/B,MAAM,oBAAA,GAAA,MAAA,QAAiD,KAAK;AAG5D,EAAA,GAAA,MAAA,iBAAgB;AACd,eAAa;AACX,OAAI,iBAAiB,QACnB,cAAa,iBAAiB,QAAQ;;IAGzC,EAAE,CAAC;CAGN,MAAM,eAAA,GAAA,MAAA,cACH,MAAqC;AACpC,MAAI,WAAY;EAGhB,MAAM,OAAO,EAAE,cAAc,uBAAuB;AAGpD,YAAU;GAAE,GAFF,EAAE,UAAU,KAAK;GAEZ,GADL,EAAE,UAAU,KAAK;GACT,CAAC;AAGnB,MAAI,iBAAiB,QACnB,cAAa,iBAAiB,QAAQ;AAGxC,mBAAiB,UAAU,iBAAiB;AAC1C,aAAU,KAAK;AACf,oBAAiB,UAAU;KAC1B,IAAI;AAEP,YAAU,EAAE;IAEd,CAAC,YAAY,QAAQ,CACtB;AAKD,QACE,iBAAA,GAAA,kBAAA,KAHW,UAAU,sBAAA,OAAO,UAG3B;EACM;EACL,WAAW,cAAA,GACT,oBAAoB;GAAE;GAAS,MAAA;GAAM,CAAC,EACtC,aAAa,CAAC,cAAc,gBAC5B,UACD;EACD,OAAO;GACL,GAAG,iBAAiB,SAAS,aAAa,CAAC,YAAY,kBAAkB,CAAC,WAAW;GACrF,SAAS;GACV;EACD,MAAM,UAAU,KAAA,IAAY;EAC5B,UAAU;EACV,SAAS;EACT,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,SAAS,WAAW;EACpB,QAAQ,WAAW;EACnB,GAAI;YAGH,UACC,WAEA,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;GAEG,aAAa,YAAY,aAAa,CAAC,cACtC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO,EAAE,cAAc,WAAW;cAElC,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,WAAW,uCAAuC;MAC3D;KACE;GAIP,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAU;IACV,OAAO;KACL,MAAM,OAAO;KACb,KAAK,OAAO;KACZ,OAAO;KACP,QAAQ;KACR,WAAW;KACX,WAAW;KACZ;KACD;GAIH,aAAa,YAAY,aAAa,CAAC,cACtC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO,EACL,YACE,sEACH;KACD;GAIH,WAAW,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAW,cAAA,GAAG,WAAW,IAAI,eAAe,EAAA,CAAI;GAGtE,CAAC,WAAW,QAAQ,iBAAiB,UACpC,iBAAA,GAAA,kBAAA,KAAC,MAAA,EAAK,WAAW,WAAW,IAAA,CAAM;GAInC,CAAC,WAAW;GAGZ,CAAC,WAAW,QAAQ,iBAAiB,WACpC,iBAAA,GAAA,kBAAA,KAAC,MAAA,EAAK,WAAW,WAAW,IAAA,CAAM;MAEnC;GAEA;EAGZ;AAED,YAAY,cAAc;ACjQ1B,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,SACA,UACA,OACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CAEvE,MAAME,iBAAgC;EACpC,YAAY,UAAU,+BAA+B;EACrD,QAAQ,aAAa,UAAU,+BAA+B;EAC9D,WAAW,kBAAkB,CAAC,WAC1B,sBACA,aAAa,CAAC,WACd,yBACA;EACL;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,SAAA;EACC,WAAW,cAAA,GACT,6CACA,WAAW,kCAAkC,kBAC7C,UACD;EACD,cAAc,WAAW;EACzB,cAAc,WAAW;;GAEzB,iBAAA,GAAA,kBAAA,KAAC,SAAA;IACM;IACL,MAAK;IACI;IACT,WAAW,MAAM,CAAC,YAAY,WAAW,EAAE,OAAO,QAAQ;IAChD;IACV,WAAU;IACV,GAAI;KACJ;GAEF,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAEd,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,eAAe,CAAC,YAAY,WAAW,CAAC,QAAQ;KAChD,SAAS,WAAW;KACpB,QAAQ,WAAW;KACnB,WAAU;KACV,OAAO;KACP,MAAK;KACL,gBAAc;KACd,cAAY,SAAS;KACrB,UAAU,WAAW,KAAK;KAC1B,YAAY,MAAM;AAChB,UAAI,CAAC,aAAa,EAAE,QAAQ,WAAW,EAAE,QAAQ,MAAM;AACrD,SAAE,gBAAgB;AAClB,kBAAW,CAAC,QAAQ;;;eAIvB,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;MAAM,WAAU;MAA4B,OAAO,EAAE,OAAO,uBAAuB;OAAI;MAEtF;KACD;GACN,SACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAqB,OAAO,EAAE,OAAO,yBAAyB;cAC3E;KACI;;GAEH;EAGb;AAED,cAAc,cAAc;AClK5B,IAAM,4BAAA,GAAA,yBAAA,KAA+B,oDAAoD;CACvF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;AA2CF,IAAM,uBAAqB,aAAuC;AAShE,QARmG;EACjG,QAAQ;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA0B;EAC7E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,OAAO;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAyB;EAC3E,SAAS;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA2B;EAC/E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EAC1E,CACgB;;AAGnB,IAAM,uBAAuB,cAAiD;AAE5E,QADoB;EAAE,KAAK;EAAG,QAAQ;EAAG,MAAM;EAAG,CAC/B;;AAOrB,MAAa,yBAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,QAAQ,GACR,UAAU,eACV,YAAY,GACZ,aAAa,GACb,QAAQ,UACR,aAAa,yBACb,YAAY,MACZ,OACA,YACA,WAAW,MACX,gBAAgB,UAChB,gBAAgB,SAChB,oBAAoB,GACpB,GAAG,SAEL,QACG;CACH,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CACtD,MAAM,iBAAiB,oBAAkB,MAAM;CAI/C,MAAM,UADU;EAAE,IAAI;EAAI,IAAI;EAAI,IAAI;EAAK,IAAI;EAAK,CAC5B,UAAQ;CAChC,MAAM,UAAU,UAAU,KAAK,IAAI,WAAW,WAAW,IAAI;CAC7D,MAAM,gBAAgB,IAAI,KAAK,KAAK;CACpC,MAAM,SAAS,UAAU;CAGzB,MAAM,cAAA,GAAA,MAAA,eAA2B;AAC/B,MAAI,YAAY,gBAAiB,QAAO,gBAAgB;AACxD,SAAO,kBAAkB,MAAM,gBAAgB;IAC9C;EAAC;EAAS;EAAc;EAAc,CAAC;CAG1C,MAAM,YAAA,GAAA,MAAA,QAAkB;CACxB,MAAM,aAAa,qBAAqB;CACxC,MAAM,SAAS,iBAAiB;AAEhC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,yBAAyB,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EAAE,GAAI;;GAC/E,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,OAAO;IACP,QAAQ;IACR,WAAU;IACV,eAAY;;KAEZ,iBAAA,GAAA,kBAAA,MAAC,QAAA,EAAA,UAAA,CAEC,iBAAA,GAAA,kBAAA,MAAC,kBAAA;MAAe,IAAI;MAAY,IAAG;MAAK,IAAG;MAAK,IAAG;MAAO,IAAG;iBAC3D,iBAAA,GAAA,kBAAA,KAAC,QAAA;OAAK,QAAO;OAAK,WAAW,eAAe;QAAQ,EACpD,iBAAA,GAAA,kBAAA,KAAC,QAAA;OAAK,QAAO;OAAO,WAAW,eAAe;QAAM,CAAA;OACrC,EAGhB,YACC,iBAAA,GAAA,kBAAA,MAAC,UAAA;MAAO,IAAI;iBACV,iBAAA,GAAA,kBAAA,KAAC,kBAAA;OAAe,cAAc,oBAAoB,cAAc;OAAE,QAAO;QAAgB,EACzF,iBAAA,GAAA,kBAAA,MAAC,WAAA,EAAA,UAAA,CACC,iBAAA,GAAA,kBAAA,KAAC,eAAA,EAAY,IAAG,eAAA,CAAgB,EAChC,iBAAA,GAAA,kBAAA,KAAC,eAAA,EAAY,IAAG,iBAAA,CAAkB,CAAA,EAAA,CAC1B,CAAA;OACH,CAAA,EAAA,CAEN;KAGP,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,MAAK;MACL,QAAQ;MACR,aAAa;OACb;KAGF,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,MAAK;MACL,QAAQ,QAAQ,WAAW;MAC3B,aAAa;MACE;MACf,iBAAiB;MACjB,kBAAkB;MAClB,QAAQ,WAAW,QAAQ,OAAO,KAAK,KAAA;MACvC,WAAW,cAAA,GACT,kBACA,YAAY,mBAAmB,iCAChC;MACD,OAAO;OACL,oBAAoB,GAAG,kBAAkB;OACzC,0BAA0B;OAC3B;OACD;;KACE;GAGL,aACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,cAAc,uBAAuB;eAEpD,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;MACvD;KACH;GAIR,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,MAAK;IACL,iBAAe,YAAY,gBAAgB,eAAe,KAAA;IAC1D,iBAAe;IACf,iBAAe;IACf,cAAY,UAAU,YAAY,gBAAgB,aAAa,aAAa,KAAK;IACjF,kBAAgB,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;IAC3E,WAAU;cAET,UAAU,YAAY,gBAAgB,GAAG,aAAa,KAAK;KACxD;;GACF;EAGX;AAED,sBAAsB,cAAc;ACpOpC,IAAI,YAAY,CAAC,EAAE,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,SAAS;AACvF,SAAS,qBAAqB,sBAAsB,iBAAiB,EAAE,2BAA2B,SAAS,EAAE,EAAE;AAC7G,QAAO,SAAS,YAAY,OAAO;AACjC,yBAAuB,MAAM;AAC7B,MAAI,6BAA6B,SAAS,CAAC,MAAM,iBAC/C,QAAO,kBAAkB,MAAM;;;ACJrC,SAAS,OAAO,KAAK,OAAO;AAC1B,KAAI,OAAO,QAAQ,WACjB,QAAO,IAAI,MAAM;UACR,QAAQ,QAAQ,QAAQ,KAAK,EACtC,KAAI,UAAU;;AAGlB,SAAS,YAAY,GAAG,MAAM;AAC5B,SAAQ,SAAS;EACf,IAAI,aAAa;EACjB,MAAM,WAAW,KAAK,KAAK,QAAQ;GACjC,MAAM,UAAU,OAAO,KAAK,KAAK;AACjC,OAAI,CAAC,cAAc,OAAO,WAAW,WACnC,cAAa;AAEf,UAAO;IACP;AACF,MAAI,WACF,cAAa;AACX,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,UAAU,SAAS;AACzB,QAAI,OAAO,WAAW,WACpB,UAAS;QAET,QAAO,KAAK,IAAI,KAAK;;;;;AAOjC,SAAS,gBAAgB,GAAG,MAAM;AAChC,QAAOE,MAAM,YAAY,YAAY,GAAG,KAAK,EAAE,KAAK;;ACftD,SAAS,mBAAmB,WAAW,yBAAyB,EAAE,EAAE;CAClE,IAAI,kBAAkB,EAAE;CACxB,SAAS,eAAe,mBAAmB,gBAAgB;EACzD,MAAM,cAAcC,MAAM,cAAc,eAAe;EACvD,MAAMC,UAAQ,gBAAgB;AAC9B,oBAAkB,CAAC,GAAG,iBAAiB,eAAe;EACtD,MAAM,YAAY,UAAU;GAC1B,MAAM,EAAE,OAAO,UAAU,GAAG,YAAY;GACxC,MAAM,UAAU,QAAQ,aAAaA,YAAU;GAC/C,MAAM,QAAQD,MAAM,cAAc,SAAS,OAAO,OAAO,QAAQ,CAAC;AAClE,UAAuB,iBAAA,GAAA,kBAAA,KAAI,QAAQ,UAAU;IAAE;IAAO;IAAU,CAAC;;AAEnE,WAAS,cAAc,oBAAoB;EAC3C,SAAS,YAAY,cAAc,OAAO;GACxC,MAAM,UAAU,QAAQ,aAAaC,YAAU;GAC/C,MAAM,UAAUD,MAAM,WAAW,QAAQ;AACzC,OAAI,QAAS,QAAO;AACpB,OAAI,mBAAmB,KAAK,EAAG,QAAO;AACtC,SAAM,IAAI,MAAM,KAAK,aAAa,2BAA2B,kBAAkB,IAAI;;AAErF,SAAO,CAAC,UAAU,YAAY;;CAEhC,MAAM,oBAAoB;EACxB,MAAM,gBAAgB,gBAAgB,KAAK,mBAAmB;AAC5D,UAAOA,MAAM,cAAc,eAAe;IAC1C;AACF,SAAO,SAAS,SAAS,OAAO;GAC9B,MAAM,WAAW,QAAQ,cAAc;AACvC,UAAOA,MAAM,eACJ,GAAG,UAAU,cAAc;IAAE,GAAG;KAAQ,YAAY;IAAU,EAAE,GACvE,CAAC,OAAO,SAAS,CAClB;;;AAGL,aAAY,YAAY;AACxB,QAAO,CAAC,gBAAgBE,uBAAqB,aAAa,GAAG,uBAAuB,CAAC;;AAEvF,SAASA,uBAAqB,GAAG,QAAQ;CACvC,MAAM,YAAY,OAAO;AACzB,KAAI,OAAO,WAAW,EAAG,QAAO;CAChC,MAAM,oBAAoB;EACxB,MAAM,aAAa,OAAO,KAAK,kBAAkB;GAC/C,UAAU,cAAc;GACxB,WAAW,aAAa;GACzB,EAAE;AACH,SAAO,SAAS,kBAAkB,gBAAgB;GAChD,MAAM,aAAa,WAAW,QAAQ,aAAa,EAAE,UAAU,gBAAgB;IAE7E,MAAM,eADa,SAAS,eAAe,CACX,UAAU;AAC1C,WAAO;KAAE,GAAG;KAAa,GAAG;KAAc;MACzC,EAAE,CAAC;AACN,UAAOF,MAAM,eAAe,GAAG,UAAU,UAAU,cAAc,YAAY,GAAG,CAAC,WAAW,CAAC;;;AAGjG,aAAY,YAAY,UAAU;AAClC,QAAO;;AClDT,IAAIG,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AACN,SAAS,4BAA4B,QAAQ,OAAO;AAClD,KAAI,OAAQ,WAAS,gBAAgB,OAAO,cAAc,MAAM,CAAC;;ACpCnE,SAASE,iBAAe,UAAU;CAChC,MAAM,cAAcC,MAAM,OAAO,SAAS;AAC1C,OAAM,gBAAgB;AACpB,cAAY,UAAU;GACtB;AACF,QAAOA,MAAM,eAAe,GAAG,SAAS,YAAY,UAAU,GAAG,KAAK,EAAE,EAAE,CAAC;;ACJ7E,SAAS,iBAAiB,qBAAqB,gBAAgB,YAAY,UAAU;CACnF,MAAM,kBAAkBC,iBAAe,oBAAoB;AAC3D,OAAM,gBAAgB;EACpB,MAAM,iBAAiB,UAAU;AAC/B,OAAI,MAAM,QAAQ,SAChB,iBAAgB,MAAM;;AAG1B,gBAAc,iBAAiB,WAAW,eAAe,EAAE,SAAS,MAAM,CAAC;AAC3E,eAAa,cAAc,oBAAoB,WAAW,eAAe,EAAE,SAAS,MAAM,CAAC;IAC1F,CAAC,iBAAiB,cAAc,CAAC;;ACHtC,IAAI,yBAAyB;AAC7B,IAAI,iBAAiB;AACrB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;AACpB,IAAI;AACJ,IAAI,0BAA0BC,MAAM,cAAc;CAChD,wBAAwB,IAAI,KAAK;CACjC,wDAAwD,IAAI,KAAK;CACjE,0BAA0B,IAAI,KAAK;CACpC,CAAC;AACF,IAAI,mBAAmBA,MAAM,YAC1B,OAAO,iBAAiB;CACvB,MAAM,EACJ,8BAA8B,OAC9B,iBACA,sBACA,gBACA,mBACA,WACA,GAAG,eACD;CACJ,MAAM,UAAUA,MAAM,WAAW,wBAAwB;CACzD,MAAM,CAAC,MAAM,WAAWA,MAAM,SAAS,KAAK;CAC5C,MAAM,gBAAgB,MAAM,iBAAiB,YAAY;CACzD,MAAM,GAAG,SAASA,MAAM,SAAS,EAAE,CAAC;CACpC,MAAM,eAAe,gBAAgB,eAAe,UAAU,QAAQ,MAAM,CAAC;CAC7E,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO;CACzC,MAAM,CAAC,gDAAgD,CAAC,GAAG,QAAQ,uCAAuC,CAAC,MAAM,GAAG;CACpH,MAAM,oDAAoD,OAAO,QAAQ,6CAA6C;CACtH,MAAMC,UAAQ,OAAO,OAAO,QAAQ,KAAK,GAAG;CAC5C,MAAM,8BAA8B,QAAQ,uCAAuC,OAAO;CAC1F,MAAM,yBAAyBA,WAAS;CACxC,MAAM,qBAAqB,uBAAuB,UAAU;EAC1D,MAAM,SAAS,MAAM;EACrB,MAAM,wBAAwB,CAAC,GAAG,QAAQ,SAAS,CAAC,MAAM,WAAW,OAAO,SAAS,OAAO,CAAC;AAC7F,MAAI,CAAC,0BAA0B,sBAAuB;AACtD,yBAAuB,MAAM;AAC7B,sBAAoB,MAAM;AAC1B,MAAI,CAAC,MAAM,iBAAkB,cAAa;IACzC,cAAc;CACjB,MAAM,eAAe,iBAAiB,UAAU;EAC9C,MAAM,SAAS,MAAM;AAErB,MADwB,CAAC,GAAG,QAAQ,SAAS,CAAC,MAAM,WAAW,OAAO,SAAS,OAAO,CAAC,CAClE;AACrB,mBAAiB,MAAM;AACvB,sBAAoB,MAAM;AAC1B,MAAI,CAAC,MAAM,iBAAkB,cAAa;IACzC,cAAc;AACjB,mBAAkB,UAAU;AAE1B,MAAI,EADmBA,YAAU,QAAQ,OAAO,OAAO,GAClC;AACrB,oBAAkB,MAAM;AACxB,MAAI,CAAC,MAAM,oBAAoB,WAAW;AACxC,SAAM,gBAAgB;AACtB,cAAW;;IAEZ,cAAc;AACjB,OAAM,gBAAgB;AACpB,MAAI,CAAC,KAAM;AACX,MAAI,6BAA6B;AAC/B,OAAI,QAAQ,uCAAuC,SAAS,GAAG;AAC7D,gCAA4B,cAAc,KAAK,MAAM;AACrD,kBAAc,KAAK,MAAM,gBAAgB;;AAE3C,WAAQ,uCAAuC,IAAI,KAAK;;AAE1D,UAAQ,OAAO,IAAI,KAAK;AACxB,kBAAgB;AAChB,eAAa;AACX,OAAI,+BAA+B,QAAQ,uCAAuC,SAAS,EACzF,eAAc,KAAK,MAAM,gBAAgB;;IAG5C;EAAC;EAAM;EAAe;EAA6B;EAAQ,CAAC;AAC/D,OAAM,gBAAgB;AACpB,eAAa;AACX,OAAI,CAAC,KAAM;AACX,WAAQ,OAAO,OAAO,KAAK;AAC3B,WAAQ,uCAAuC,OAAO,KAAK;AAC3D,mBAAgB;;IAEjB,CAAC,MAAM,QAAQ,CAAC;AACnB,OAAM,gBAAgB;EACpB,MAAM,qBAAqB,MAAM,EAAE,CAAC;AACpC,WAAS,iBAAiB,gBAAgB,aAAa;AACvD,eAAa,SAAS,oBAAoB,gBAAgB,aAAa;IACtE,EAAE,CAAC;AACN,QAAuB,iBAAA,GAAA,kBAAA,KACrBC,YAAU,KACV;EACE,GAAG;EACH,KAAK;EACL,OAAO;GACL,eAAe,8BAA8B,yBAAyB,SAAS,SAAS,KAAK;GAC7F,GAAG,MAAM;GACV;EACD,gBAAgB,qBAAqB,MAAM,gBAAgB,aAAa,eAAe;EACvF,eAAe,qBAAqB,MAAM,eAAe,aAAa,cAAc;EACpF,sBAAsB,qBACpB,MAAM,sBACN,mBAAmB,qBACpB;EACF,CACF;EAEJ;AACD,iBAAiB,cAAc;AAC/B,IAAI,cAAc;AAClB,IAAI,yBAAyBF,MAAM,YAAY,OAAO,iBAAiB;CACrE,MAAM,UAAUA,MAAM,WAAW,wBAAwB;CACzD,MAAM,MAAMA,MAAM,OAAO,KAAK;CAC9B,MAAM,eAAe,gBAAgB,cAAc,IAAI;AACvD,OAAM,gBAAgB;EACpB,MAAM,OAAO,IAAI;AACjB,MAAI,MAAM;AACR,WAAQ,SAAS,IAAI,KAAK;AAC1B,gBAAa;AACX,YAAQ,SAAS,OAAO,KAAK;;;IAGhC,CAAC,QAAQ,SAAS,CAAC;AACtB,QAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,GAAG;EAAO,KAAK;EAAc,CAAC;EAC1E;AACF,uBAAuB,cAAc;AACrC,SAAS,sBAAsB,sBAAsB,gBAAgB,YAAY,UAAU;CACzF,MAAM,2BAA2BC,iBAAe,qBAAqB;CACrE,MAAM,8BAA8BH,MAAM,OAAO,MAAM;CACvD,MAAM,iBAAiBA,MAAM,aAAa,GACxC;AACF,OAAM,gBAAgB;EACpB,MAAM,qBAAqB,UAAU;AACnC,OAAI,MAAM,UAAU,CAAC,4BAA4B,SAAS;IACxD,IAAI,4CAA4C,WAAW;AACzD,kCACE,sBACA,0BACA,aACA,EAAE,UAAU,MAAM,CACnB;;IAGH,MAAM,cAAc,EAAE,eAAe,OAAO;AAC5C,QAAI,MAAM,gBAAgB,SAAS;AACjC,mBAAc,oBAAoB,SAAS,eAAe,QAAQ;AAClE,oBAAe,UAAU;AACzB,mBAAc,iBAAiB,SAAS,eAAe,SAAS,EAAE,MAAM,MAAM,CAAC;UAE/E,4CAA2C;SAG7C,eAAc,oBAAoB,SAAS,eAAe,QAAQ;AAEpE,+BAA4B,UAAU;;EAExC,MAAM,UAAU,OAAO,iBAAiB;AACtC,iBAAc,iBAAiB,eAAe,kBAAkB;KAC/D,EAAE;AACL,eAAa;AACX,UAAO,aAAa,QAAQ;AAC5B,iBAAc,oBAAoB,eAAe,kBAAkB;AACnE,iBAAc,oBAAoB,SAAS,eAAe,QAAQ;;IAEnE,CAAC,eAAe,yBAAyB,CAAC;AAC7C,QAAO,EAEL,4BAA4B,4BAA4B,UAAU,MACnE;;AAEH,SAAS,gBAAgB,gBAAgB,gBAAgB,YAAY,UAAU;CAC7E,MAAM,qBAAqBG,iBAAe,eAAe;CACzD,MAAM,4BAA4BH,MAAM,OAAO,MAAM;AACrD,OAAM,gBAAgB;EACpB,MAAM,eAAe,UAAU;AAC7B,OAAI,MAAM,UAAU,CAAC,0BAA0B,QAE7C,8BAA6B,eAAe,oBADxB,EAAE,eAAe,OAAO,EACiC,EAC3E,UAAU,OACX,CAAC;;AAGN,gBAAc,iBAAiB,WAAW,YAAY;AACtD,eAAa,cAAc,oBAAoB,WAAW,YAAY;IACrE,CAAC,eAAe,mBAAmB,CAAC;AACvC,QAAO;EACL,sBAAsB,0BAA0B,UAAU;EAC1D,qBAAqB,0BAA0B,UAAU;EAC1D;;AAEH,SAAS,iBAAiB;CACxB,MAAM,QAAQ,IAAI,YAAY,eAAe;AAC7C,UAAS,cAAc,MAAM;;AAE/B,SAAS,6BAA6B,MAAM,SAAS,QAAQ,EAAE,YAAY;CACzE,MAAM,SAAS,OAAO,cAAc;CACpC,MAAM,QAAQ,IAAI,YAAY,MAAM;EAAE,SAAS;EAAO,YAAY;EAAM;EAAQ,CAAC;AACjF,KAAI,QAAS,QAAO,iBAAiB,MAAM,SAAS,EAAE,MAAM,MAAM,CAAC;AACnE,KAAI,SACF,6BAA4B,QAAQ,MAAM;KAE1C,QAAO,cAAc,MAAM;;AC7M/B,IAAII,UAAQ;AAKZ,SAAS,iBAAiB;AACxB,OAAM,gBAAgB;EACpB,MAAM,aAAa,SAAS,iBAAiB,2BAA2B;AACxE,WAAS,KAAK,sBAAsB,cAAc,WAAW,MAAM,kBAAkB,CAAC;AACtF,WAAS,KAAK,sBAAsB,aAAa,WAAW,MAAM,kBAAkB,CAAC;AACrF;AACA,eAAa;AACX,OAAIA,YAAU,EACZ,UAAS,iBAAiB,2BAA2B,CAAC,SAAS,SAAS,KAAK,QAAQ,CAAC;AAExF;;IAED,EAAE,CAAC;;AAER,SAAS,mBAAmB;CAC1B,MAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,SAAQ,aAAa,0BAA0B,GAAG;AAClD,SAAQ,WAAW;AACnB,SAAQ,MAAM,UAAU;AACxB,SAAQ,MAAM,UAAU;AACxB,SAAQ,MAAM,WAAW;AACzB,SAAQ,MAAM,gBAAgB;AAC9B,QAAO;;ACPT,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AC5BN,IAAI,qBAAqB;AACzB,IAAI,uBAAuB;AAC3B,IAAI,gBAAgB;CAAE,SAAS;CAAO,YAAY;CAAM;AACxD,IAAI,mBAAmB;AACvB,IAAI,aAAaE,MAAM,YAAY,OAAO,iBAAiB;CACzD,MAAM,EACJ,OAAO,OACP,UAAU,OACV,kBAAkB,sBAClB,oBAAoB,wBACpB,GAAG,eACD;CACJ,MAAM,CAAC,WAAW,gBAAgBA,MAAM,SAAS,KAAK;CACtD,MAAM,mBAAmBC,iBAAe,qBAAqB;CAC7D,MAAM,qBAAqBA,iBAAe,uBAAuB;CACjE,MAAM,wBAAwBD,MAAM,OAAO,KAAK;CAChD,MAAM,eAAe,gBAAgB,eAAe,SAAS,aAAa,KAAK,CAAC;CAChF,MAAM,aAAaA,MAAM,OAAO;EAC9B,QAAQ;EACR,QAAQ;AACN,QAAK,SAAS;;EAEhB,SAAS;AACP,QAAK,SAAS;;EAEjB,CAAC,CAAC;AACH,OAAM,gBAAgB;AACpB,MAAI,SAAS;GACX,IAAI,iBAAiB,SAAS,OAAO;AACnC,QAAI,WAAW,UAAU,CAAC,UAAW;IACrC,MAAM,SAAS,MAAM;AACrB,QAAI,UAAU,SAAS,OAAO,CAC5B,uBAAsB,UAAU;QAEhC,OAAM,sBAAsB,SAAS,EAAE,QAAQ,MAAM,CAAC;MAEvD,kBAAkB,SAAS,OAAO;AACnC,QAAI,WAAW,UAAU,CAAC,UAAW;IACrC,MAAM,gBAAgB,MAAM;AAC5B,QAAI,kBAAkB,KAAM;AAC5B,QAAI,CAAC,UAAU,SAAS,cAAc,CACpC,OAAM,sBAAsB,SAAS,EAAE,QAAQ,MAAM,CAAC;MAEvD,mBAAmB,SAAS,WAAW;AAExC,QADuB,SAAS,kBACT,SAAS,KAAM;AACtC,SAAK,MAAM,YAAY,UACrB,KAAI,SAAS,aAAa,SAAS,EAAG,OAAM,UAAU;;AAI1D,YAAS,iBAAiB,WAAW,eAAe;AACpD,YAAS,iBAAiB,YAAY,gBAAgB;GACtD,MAAM,mBAAmB,IAAI,iBAAiB,iBAAiB;AAC/D,OAAI,UAAW,kBAAiB,QAAQ,WAAW;IAAE,WAAW;IAAM,SAAS;IAAM,CAAC;AACtF,gBAAa;AACX,aAAS,oBAAoB,WAAW,eAAe;AACvD,aAAS,oBAAoB,YAAY,gBAAgB;AACzD,qBAAiB,YAAY;;;IAGhC;EAAC;EAAS;EAAW,WAAW;EAAO,CAAC;AAC3C,OAAM,gBAAgB;AACpB,MAAI,WAAW;AACb,oBAAiB,IAAI,WAAW;GAChC,MAAM,2BAA2B,SAAS;AAE1C,OAAI,CADwB,UAAU,SAAS,yBAAyB,EAC9C;IACxB,MAAM,aAAa,IAAI,YAAY,oBAAoB,cAAc;AACrE,cAAU,iBAAiB,oBAAoB,iBAAiB;AAChE,cAAU,cAAc,WAAW;AACnC,QAAI,CAAC,WAAW,kBAAkB;AAChC,gBAAW,YAAY,sBAAsB,UAAU,CAAC,EAAE,EAAE,QAAQ,MAAM,CAAC;AAC3E,SAAI,SAAS,kBAAkB,yBAC7B,OAAM,UAAU;;;AAItB,gBAAa;AACX,cAAU,oBAAoB,oBAAoB,iBAAiB;AACnE,qBAAiB;KACf,MAAM,eAAe,IAAI,YAAY,sBAAsB,cAAc;AACzE,eAAU,iBAAiB,sBAAsB,mBAAmB;AACpE,eAAU,cAAc,aAAa;AACrC,SAAI,CAAC,aAAa,iBAChB,OAAM,4BAA4B,SAAS,MAAM,EAAE,QAAQ,MAAM,CAAC;AAEpE,eAAU,oBAAoB,sBAAsB,mBAAmB;AACvE,sBAAiB,OAAO,WAAW;OAClC,EAAE;;;IAGR;EAAC;EAAW;EAAkB;EAAoB;EAAW,CAAC;CACjE,MAAM,gBAAgBA,MAAM,aACzB,UAAU;AACT,MAAI,CAAC,QAAQ,CAAC,QAAS;AACvB,MAAI,WAAW,OAAQ;EACvB,MAAM,WAAW,MAAM,QAAQ,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,WAAW,CAAC,MAAM;EAClF,MAAM,iBAAiB,SAAS;AAChC,MAAI,YAAY,gBAAgB;GAC9B,MAAM,aAAa,MAAM;GACzB,MAAM,CAAC,OAAO,QAAQ,iBAAiB,WAAW;AAElD,OAAI,EAD8B,SAAS;QAErC,mBAAmB,WAAY,OAAM,gBAAgB;cAErD,CAAC,MAAM,YAAY,mBAAmB,MAAM;AAC9C,UAAM,gBAAgB;AACtB,QAAI,KAAM,OAAM,OAAO,EAAE,QAAQ,MAAM,CAAC;cAC/B,MAAM,YAAY,mBAAmB,OAAO;AACrD,UAAM,gBAAgB;AACtB,QAAI,KAAM,OAAM,MAAM,EAAE,QAAQ,MAAM,CAAC;;;IAK/C;EAAC;EAAM;EAAS,WAAW;EAAO,CACnC;AACD,QAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,UAAU;EAAI,GAAG;EAAY,KAAK;EAAc,WAAW;EAAe,CAAC;EACvH;AACF,WAAW,cAAc;AACzB,SAAS,WAAW,YAAY,EAAE,SAAS,UAAU,EAAE,EAAE;CACvD,MAAM,2BAA2B,SAAS;AAC1C,MAAK,MAAM,aAAa,YAAY;AAClC,QAAM,WAAW,EAAE,QAAQ,CAAC;AAC5B,MAAI,SAAS,kBAAkB,yBAA0B;;;AAG7D,SAAS,iBAAiB,WAAW;CACnC,MAAM,aAAa,sBAAsB,UAAU;AAGnD,QAAO,CAFO,YAAY,YAAY,UAAU,EACnC,YAAY,WAAW,SAAS,EAAE,UAAU,CACrC;;AAEtB,SAAS,sBAAsB,WAAW;CACxC,MAAM,QAAQ,EAAE;CAChB,MAAM,SAAS,SAAS,iBAAiB,WAAW,WAAW,cAAc,EAC3E,aAAa,SAAS;EACpB,MAAM,gBAAgB,KAAK,YAAY,WAAW,KAAK,SAAS;AAChE,MAAI,KAAK,YAAY,KAAK,UAAU,cAAe,QAAO,WAAW;AACrE,SAAO,KAAK,YAAY,IAAI,WAAW,gBAAgB,WAAW;IAErE,CAAC;AACF,QAAO,OAAO,UAAU,CAAE,OAAM,KAAK,OAAO,YAAY;AACxD,QAAO;;AAET,SAAS,YAAY,UAAU,WAAW;AACxC,MAAK,MAAM,WAAW,SACpB,KAAI,CAAC,SAAS,SAAS,EAAE,MAAM,WAAW,CAAC,CAAE,QAAO;;AAGxD,SAAS,SAAS,MAAM,EAAE,QAAQ;AAChC,KAAI,iBAAiB,KAAK,CAAC,eAAe,SAAU,QAAO;AAC3D,QAAO,MAAM;AACX,MAAI,SAAS,KAAK,KAAK,SAAS,KAAM,QAAO;AAC7C,MAAI,iBAAiB,KAAK,CAAC,YAAY,OAAQ,QAAO;AACtD,SAAO,KAAK;;AAEd,QAAO;;AAET,SAAS,kBAAkB,SAAS;AAClC,QAAO,mBAAmB,oBAAoB,YAAY;;AAE5D,SAAS,MAAM,SAAS,EAAE,SAAS,UAAU,EAAE,EAAE;AAC/C,KAAI,WAAW,QAAQ,OAAO;EAC5B,MAAM,2BAA2B,SAAS;AAC1C,UAAQ,MAAM,EAAE,eAAe,MAAM,CAAC;AACtC,MAAI,YAAY,4BAA4B,kBAAkB,QAAQ,IAAI,OACxE,SAAQ,QAAQ;;;AAGtB,IAAI,mBAAmB,wBAAwB;AAC/C,SAAS,yBAAyB;CAChC,IAAI,QAAQ,EAAE;AACd,QAAO;EACL,IAAI,YAAY;GACd,MAAM,mBAAmB,MAAM;AAC/B,OAAI,eAAe,iBACjB,mBAAkB,OAAO;AAE3B,WAAQ,YAAY,OAAO,WAAW;AACtC,SAAM,QAAQ,WAAW;;EAE3B,OAAO,YAAY;AACjB,WAAQ,YAAY,OAAO,WAAW;AACtC,SAAM,IAAI,QAAQ;;EAErB;;AAEH,SAAS,YAAY,OAAO,MAAM;CAChC,MAAM,eAAe,CAAC,GAAG,MAAM;CAC/B,MAAMC,UAAQ,aAAa,QAAQ,KAAK;AACxC,KAAIA,YAAU,GACZ,cAAa,OAAOA,SAAO,EAAE;AAE/B,QAAO;;AAET,SAAS,YAAY,OAAO;AAC1B,QAAO,MAAM,QAAQ,SAAS,KAAK,YAAY,IAAI;;AC5MrD,IAAI,mBAAmB,YAAY,WAAWC,MAAM,wBAAwB;ACC5E,IAAI,aAAaC,MAAM,UAAU,MAAM,CAAC,UAAU,YAAY,KAAK;AACnE,IAAI,QAAQ;AACZ,SAASC,QAAM,iBAAiB;CAC9B,MAAM,CAAC,IAAI,SAASD,MAAM,SAAS,YAAY,CAAC;AAChD,wBAAsB;AACpB,MAAI,CAAC,gBAAiB,QAAO,YAAY,WAAW,OAAO,QAAQ,CAAC;IACnE,CAAC,gBAAgB,CAAC;AACrB,QAAO,oBAAoB,KAAK,SAAS,OAAO;;ACLlD,IAAM,QAAQ;CAAC;CAAO;CAAS;CAAU;CAAO;AAGhD,IAAM,MAAM,KAAK;AACjB,IAAM,MAAM,KAAK;AACjB,IAAM,QAAQ,KAAK;AACnB,IAAM,QAAQ,KAAK;AACnB,IAAM,gBAAe,OAAM;CACzB,GAAG;CACH,GAAG;CACJ;AACD,IAAM,kBAAkB;CACtB,MAAM;CACN,OAAO;CACP,QAAQ;CACR,KAAK;CACN;AACD,IAAM,uBAAuB;CAC3B,OAAO;CACP,KAAK;CACN;AACD,SAAS,MAAM,OAAO,OAAO,KAAK;AAChC,QAAO,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC;;AAEpC,SAAS,SAAS,OAAO,OAAO;AAC9B,QAAO,OAAO,UAAU,aAAa,MAAM,MAAM,GAAG;;AAEtD,SAAS,QAAQ,WAAW;AAC1B,QAAO,UAAU,MAAM,IAAI,CAAC;;AAE9B,SAAS,aAAa,WAAW;AAC/B,QAAO,UAAU,MAAM,IAAI,CAAC;;AAE9B,SAAS,gBAAgB,MAAM;AAC7B,QAAO,SAAS,MAAM,MAAM;;AAE9B,SAAS,cAAc,MAAM;AAC3B,QAAO,SAAS,MAAM,WAAW;;AAEnC,IAAM,6BAA0B,IAAI,IAAI,CAAC,OAAO,SAAS,CAAC;AAC1D,SAAS,YAAY,WAAW;AAC9B,QAAO,WAAW,IAAI,QAAQ,UAAU,CAAC,GAAG,MAAM;;AAEpD,SAAS,iBAAiB,WAAW;AACnC,QAAO,gBAAgB,YAAY,UAAU,CAAC;;AAEhD,SAAS,kBAAkB,WAAW,OAAO,KAAK;AAChD,KAAI,QAAQ,KAAK,EACf,OAAM;CAER,MAAM,YAAY,aAAa,UAAU;CACzC,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,SAAS,cAAc,cAAc;CAC3C,IAAI,oBAAoB,kBAAkB,MAAM,eAAe,MAAM,QAAQ,WAAW,UAAU,SAAS,cAAc,UAAU,WAAW;AAC9I,KAAI,MAAM,UAAU,UAAU,MAAM,SAAS,QAC3C,qBAAoB,qBAAqB,kBAAkB;AAE7D,QAAO,CAAC,mBAAmB,qBAAqB,kBAAkB,CAAC;;AAErE,SAAS,sBAAsB,WAAW;CACxC,MAAM,oBAAoB,qBAAqB,UAAU;AACzD,QAAO;EAAC,8BAA8B,UAAU;EAAE;EAAmB,8BAA8B,kBAAkB;EAAC;;AAExH,SAAS,8BAA8B,WAAW;AAChD,QAAO,UAAU,QAAQ,eAAc,cAAa,qBAAqB,WAAW;;AAEtF,IAAM,cAAc,CAAC,QAAQ,QAAQ;AACrC,IAAM,cAAc,CAAC,SAAS,OAAO;AACrC,IAAM,cAAc,CAAC,OAAO,SAAS;AACrC,IAAM,cAAc,CAAC,UAAU,MAAM;AACrC,SAAS,YAAY,MAAM,SAAS,KAAK;AACvC,SAAQ,MAAR;EACE,KAAK;EACL,KAAK;AACH,OAAI,IAAK,QAAO,UAAU,cAAc;AACxC,UAAO,UAAU,cAAc;EACjC,KAAK;EACL,KAAK,QACH,QAAO,UAAU,cAAc;EACjC,QACE,QAAO,EAAE;;;AAGf,SAAS,0BAA0B,WAAW,eAAe,WAAW,KAAK;CAC3E,MAAM,YAAY,aAAa,UAAU;CACzC,IAAI,OAAO,YAAY,QAAQ,UAAU,EAAE,cAAc,SAAS,IAAI;AACtE,KAAI,WAAW;AACb,SAAO,KAAK,KAAI,SAAQ,OAAO,MAAM,UAAU;AAC/C,MAAI,cACF,QAAO,KAAK,OAAO,KAAK,IAAI,8BAA8B,CAAC;;AAG/D,QAAO;;AAET,SAAS,qBAAqB,WAAW;AACvC,QAAO,UAAU,QAAQ,2BAA0B,SAAQ,gBAAgB,MAAM;;AAEnF,SAAS,oBAAoB,SAAS;AACpC,QAAO;EACL,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,GAAG;EACJ;;AAEH,SAAS,iBAAiB,SAAS;AACjC,QAAO,OAAO,YAAY,WAAW,oBAAoB,QAAQ,GAAG;EAClE,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACP;;AAEH,SAAS,iBAAiB,MAAM;CAC9B,MAAM,EACJ,GACA,GACA,OACA,WACE;AACJ,QAAO;EACL;EACA;EACA,KAAK;EACL,MAAM;EACN,OAAO,IAAI;EACX,QAAQ,IAAI;EACZ;EACA;EACD;;ACpIH,SAAS,2BAA2B,MAAM,WAAW,KAAK;CACxD,IAAI,EACF,WACA,aACE;CACJ,MAAM,WAAW,YAAY,UAAU;CACvC,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,cAAc,cAAc,cAAc;CAChD,MAAM,OAAO,QAAQ,UAAU;CAC/B,MAAM,aAAa,aAAa;CAChC,MAAM,UAAU,UAAU,IAAI,UAAU,QAAQ,IAAI,SAAS,QAAQ;CACrE,MAAM,UAAU,UAAU,IAAI,UAAU,SAAS,IAAI,SAAS,SAAS;CACvE,MAAM,cAAc,UAAU,eAAe,IAAI,SAAS,eAAe;CACzE,IAAI;AACJ,SAAQ,MAAR;EACE,KAAK;AACH,YAAS;IACP,GAAG;IACH,GAAG,UAAU,IAAI,SAAS;IAC3B;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG;IACH,GAAG,UAAU,IAAI,UAAU;IAC5B;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG,UAAU,IAAI,UAAU;IAC3B,GAAG;IACJ;AACD;EACF,KAAK;AACH,YAAS;IACP,GAAG,UAAU,IAAI,SAAS;IAC1B,GAAG;IACJ;AACD;EACF,QACE,UAAS;GACP,GAAG,UAAU;GACb,GAAG,UAAU;GACd;;AAEL,SAAQ,aAAa,UAAU,EAA/B;EACE,KAAK;AACH,UAAO,kBAAkB,eAAe,OAAO,aAAa,KAAK;AACjE;EACF,KAAK;AACH,UAAO,kBAAkB,eAAe,OAAO,aAAa,KAAK;AACjE;;AAEJ,QAAO;;AAUT,IAAME,oBAAkB,OAAO,WAAW,UAAU,WAAW;CAC7D,MAAM,EACJ,YAAY,UACZ,WAAW,YACX,aAAa,EAAE,EACf,UAAA,eACE;CACJ,MAAM,kBAAkB,WAAW,OAAO,QAAQ;CAClD,MAAM,MAAM,OAAOC,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS;CAC7E,IAAI,QAAQ,MAAMA,WAAS,gBAAgB;EACzC;EACA;EACA;EACD,CAAC;CACF,IAAI,EACF,GACA,MACE,2BAA2B,OAAO,WAAW,IAAI;CACrD,IAAI,oBAAoB;CACxB,IAAI,iBAAiB,EAAE;CACvB,IAAI,aAAa;AACjB,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;EAC/C,MAAM,EACJ,MACA,OACE,gBAAgB;EACpB,MAAM,EACJ,GAAG,OACH,GAAG,OACH,MACA,UACE,MAAM,GAAG;GACX;GACA;GACA,kBAAkB;GAClB,WAAW;GACX;GACA;GACA;GACA,UAAA;GACA,UAAU;IACR;IACA;IACD;GACF,CAAC;AACF,MAAI,SAAS,OAAO,QAAQ;AAC5B,MAAI,SAAS,OAAO,QAAQ;AAC5B,mBAAiB;GACf,GAAG;IACF,OAAO;IACN,GAAG,eAAe;IAClB,GAAG;IACJ;GACF;AACD,MAAI,SAAS,cAAc,IAAI;AAC7B;AACA,OAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,MAAM,UACR,qBAAoB,MAAM;AAE5B,QAAI,MAAM,MACR,SAAQ,MAAM,UAAU,OAAO,MAAMA,WAAS,gBAAgB;KAC5D;KACA;KACA;KACD,CAAC,GAAG,MAAM;AAEb,KAAC,CACC,GACA,KACE,2BAA2B,OAAO,mBAAmB,IAAI;;AAE/D,OAAI;;;AAGR,QAAO;EACL;EACA;EACA,WAAW;EACX;EACA;EACD;;AAWH,eAAeC,iBAAe,OAAO,WAAS;CAC5C,IAAI;AACJ,KAAIC,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,GACA,GACA,UAAA,YACA,OACA,UACA,aACE;CACJ,MAAM,EACJ,WAAW,qBACX,eAAe,YACf,iBAAiB,YACjB,cAAc,OACd,UAAU,MACR,SAASA,WAAS,MAAM;CAC5B,MAAM,gBAAgB,iBAAiB,QAAQ;CAE/C,MAAM,UAAU,SAAS,cADN,mBAAmB,aAAa,cAAc,aACb;CACpD,MAAM,qBAAqB,iBAAiB,MAAMF,WAAS,gBAAgB;EACzE,WAAW,wBAAwB,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,QAAQ,MAAM,OAAO,wBAAwB,QAAQ,UAAU,QAAQ,kBAAmB,OAAOA,WAAS,sBAAsB,OAAO,KAAK,IAAIA,WAAS,mBAAmB,SAAS,SAAS;EACjS;EACA;EACA;EACD,CAAC,CAAC;CACH,MAAM,OAAO,mBAAmB,aAAa;EAC3C;EACA;EACA,OAAO,MAAM,SAAS;EACtB,QAAQ,MAAM,SAAS;EACxB,GAAG,MAAM;CACV,MAAM,eAAe,OAAOA,WAAS,mBAAmB,OAAO,KAAK,IAAIA,WAAS,gBAAgB,SAAS,SAAS;CACnH,MAAM,cAAe,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,aAAa,IAAM,OAAOA,WAAS,YAAY,OAAO,KAAK,IAAIA,WAAS,SAAS,aAAa,KAAM;EACvL,GAAG;EACH,GAAG;EACJ,GAAG;EACF,GAAG;EACH,GAAG;EACJ;CACD,MAAM,oBAAoB,iBAAiBA,WAAS,wDAAwD,MAAMA,WAAS,sDAAsD;EAC/K;EACA;EACA;EACA;EACD,CAAC,GAAG,KAAK;AACV,QAAO;EACL,MAAM,mBAAmB,MAAM,kBAAkB,MAAM,cAAc,OAAO,YAAY;EACxF,SAAS,kBAAkB,SAAS,mBAAmB,SAAS,cAAc,UAAU,YAAY;EACpG,OAAO,mBAAmB,OAAO,kBAAkB,OAAO,cAAc,QAAQ,YAAY;EAC5F,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,cAAc,SAAS,YAAY;EACjG;;AAQH,IAAMG,WAAQ,eAAY;CACxB,MAAM;CACN,SAAA;CACA,MAAM,GAAG,OAAO;EACd,MAAM,EACJ,GACA,GACA,WACA,OACA,UAAA,YACA,UACA,mBACE;EAEJ,MAAM,EACJ,SACA,UAAU,MACR,SAASD,WAAS,MAAM,IAAI,EAAE;AAClC,MAAI,WAAW,KACb,QAAO,EAAE;EAEX,MAAM,gBAAgB,iBAAiB,QAAQ;EAC/C,MAAM,SAAS;GACb;GACA;GACD;EACD,MAAM,OAAO,iBAAiB,UAAU;EACxC,MAAM,SAAS,cAAc,KAAK;EAClC,MAAM,kBAAkB,MAAMF,WAAS,cAAc,QAAQ;EAC7D,MAAM,UAAU,SAAS;EACzB,MAAM,UAAU,UAAU,QAAQ;EAClC,MAAM,UAAU,UAAU,WAAW;EACrC,MAAM,aAAa,UAAU,iBAAiB;EAC9C,MAAM,UAAU,MAAM,UAAU,UAAU,MAAM,UAAU,QAAQ,OAAO,QAAQ,MAAM,SAAS;EAChG,MAAM,YAAY,OAAO,QAAQ,MAAM,UAAU;EACjD,MAAM,oBAAoB,OAAOA,WAAS,mBAAmB,OAAO,KAAK,IAAIA,WAAS,gBAAgB,QAAQ;EAC9G,IAAI,aAAa,oBAAoB,kBAAkB,cAAc;AAGrE,MAAI,CAAC,cAAc,CAAE,OAAOA,WAAS,aAAa,OAAO,KAAK,IAAIA,WAAS,UAAU,kBAAkB,EACrG,cAAa,SAAS,SAAS,eAAe,MAAM,SAAS;EAE/D,MAAM,oBAAoB,UAAU,IAAI,YAAY;EAIpD,MAAM,yBAAyB,aAAa,IAAI,gBAAgB,UAAU,IAAI;EAC9E,MAAM,aAAa,IAAI,cAAc,UAAU,uBAAuB;EACtE,MAAM,aAAa,IAAI,cAAc,UAAU,uBAAuB;EAItE,MAAM,QAAQ;EACd,MAAMI,QAAM,aAAa,gBAAgB,UAAU;EACnD,MAAM,SAAS,aAAa,IAAI,gBAAgB,UAAU,IAAI;EAC9D,MAAMC,WAAS,MAAM,OAAO,QAAQD,MAAI;EAMxC,MAAM,kBAAkB,CAAC,eAAe,SAAS,aAAa,UAAU,IAAI,QAAQ,WAAWC,YAAU,MAAM,UAAU,UAAU,KAAK,SAAS,QAAQ,aAAa,cAAc,gBAAgB,UAAU,IAAI;EAClN,MAAM,kBAAkB,kBAAkB,SAAS,QAAQ,SAAS,QAAQ,SAASD,QAAM;AAC3F,SAAO;IACJ,OAAO,OAAO,QAAQ;GACvB,MAAM;KACH,OAAOC;IACR,cAAc,SAASA,WAAS;IAChC,GAAI,mBAAmB,EACrB,iBACD;IACF;GACD,OAAO;GACR;;CAEJ;AA+GD,IAAMC,SAAO,SAAU,WAAS;AAC9B,KAAIJ,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,WACA,gBACA,OACA,kBACA,UAAA,YACA,aACE;GACJ,MAAM,EACJ,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,MAC5B,oBAAoB,6BACpB,mBAAmB,WACnB,4BAA4B,QAC5B,gBAAgB,MAChB,GAAG,0BACD,SAASA,WAAS,MAAM;AAM5B,QAAK,wBAAwB,eAAe,UAAU,QAAQ,sBAAsB,gBAClF,QAAO,EAAE;GAEX,MAAM,OAAO,QAAQ,UAAU;GAC/B,MAAM,kBAAkB,YAAY,iBAAiB;GACrD,MAAM,kBAAkB,QAAQ,iBAAiB,KAAK;GACtD,MAAM,MAAM,OAAOF,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS;GACtF,MAAM,qBAAqB,gCAAgC,mBAAmB,CAAC,gBAAgB,CAAC,qBAAqB,iBAAiB,CAAC,GAAG,sBAAsB,iBAAiB;GACjL,MAAM,+BAA+B,8BAA8B;AACnE,OAAI,CAAC,+BAA+B,6BAClC,oBAAmB,KAAK,GAAG,0BAA0B,kBAAkB,eAAe,2BAA2B,IAAI,CAAC;GAExH,MAAMO,eAAa,CAAC,kBAAkB,GAAG,mBAAmB;GAC5D,MAAM,WAAW,MAAMN,iBAAe,OAAO,sBAAsB;GACnE,MAAM,YAAY,EAAE;GACpB,IAAI,kBAAkB,uBAAuB,eAAe,SAAS,OAAO,KAAK,IAAI,qBAAqB,cAAc,EAAE;AAC1H,OAAI,cACF,WAAU,KAAK,SAAS,MAAM;AAEhC,OAAI,gBAAgB;IAClB,MAAMO,UAAQ,kBAAkB,WAAW,OAAO,IAAI;AACtD,cAAU,KAAK,SAASA,QAAM,KAAK,SAASA,QAAM,IAAI;;AAExD,mBAAgB,CAAC,GAAG,eAAe;IACjC;IACA;IACD,CAAC;AAGF,OAAI,CAAC,UAAU,OAAM,WAAQC,UAAQ,EAAE,EAAE;IACvC,IAAI,uBAAuB;IAC3B,MAAM,eAAe,wBAAwB,eAAe,SAAS,OAAO,KAAK,IAAI,sBAAsB,UAAU,KAAK;IAC1H,MAAM,gBAAgBF,aAAW;AACjC,QAAI;SAEE,EAD4B,mBAAmB,cAAc,oBAAoB,YAAY,cAAc,GAAG,UAIlH,cAAc,OAAM,MAAK,YAAY,EAAE,UAAU,KAAK,kBAAkB,EAAE,UAAU,KAAK,IAAI,KAAK,CAEhG,QAAO;MACL,MAAM;OACJ,OAAO;OACP,WAAW;OACZ;MACD,OAAO,EACL,WAAW,eACZ;MACF;;IAML,IAAI,kBAAkB,wBAAwB,cAAc,QAAO,MAAK,EAAE,UAAU,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,KAAK,EAAE,UAAU,GAAG,CAAC,OAAO,OAAO,KAAK,IAAI,sBAAsB;AAG1L,QAAI,CAAC,eACH,SAAQ,kBAAR;KACE,KAAK,WACH;MACE,IAAI;MACJ,MAAMG,eAAa,yBAAyB,cAAc,QAAO,MAAK;AACpE,WAAI,8BAA8B;QAChC,MAAM,kBAAkB,YAAY,EAAE,UAAU;AAChD,eAAO,oBAAoB,mBAG3B,oBAAoB;;AAEtB,cAAO;QACP,CAAC,KAAI,MAAK,CAAC,EAAE,WAAW,EAAE,UAAU,QAAO,eAAYC,aAAW,EAAE,CAAC,QAAQ,KAAK,eAAa,MAAMA,YAAU,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,OAAO,KAAK,IAAI,uBAAuB;AAChM,UAAID,YACF,kBAAiBA;AAEnB;;KAEJ,KAAK;AACH,uBAAiB;AACjB;;AAGN,QAAI,cAAc,eAChB,QAAO,EACL,OAAO,EACL,WAAW,gBACZ,EACF;;AAGL,UAAO,EAAE;;EAEZ;;AAGH,SAAS,eAAe,UAAU,MAAM;AACtC,QAAO;EACL,KAAK,SAAS,MAAM,KAAK;EACzB,OAAO,SAAS,QAAQ,KAAK;EAC7B,QAAQ,SAAS,SAAS,KAAK;EAC/B,MAAM,SAAS,OAAO,KAAK;EAC5B;;AAEH,SAAS,sBAAsB,UAAU;AACvC,QAAO,MAAM,MAAK,SAAQ,SAAS,SAAS,EAAE;;AAOhD,IAAME,SAAO,SAAU,WAAS;AAC9B,KAAIV,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,MAAM,EACJ,UACE;GACJ,MAAM,EACJ,WAAW,mBACX,GAAG,0BACD,SAASA,WAAS,MAAM;AAC5B,WAAQ,UAAR;IACE,KAAK,mBACH;KAKE,MAAM,UAAU,eAJC,MAAMD,iBAAe,OAAO;MAC3C,GAAG;MACH,gBAAgB;MACjB,CAAC,EACuC,MAAM,UAAU;AACzD,YAAO,EACL,MAAM;MACJ,wBAAwB;MACxB,iBAAiB,sBAAsB,QAAQ;MAChD,EACF;;IAEL,KAAK,WACH;KAKE,MAAM,UAAU,eAJC,MAAMA,iBAAe,OAAO;MAC3C,GAAG;MACH,aAAa;MACd,CAAC,EACuC,MAAM,SAAS;AACxD,YAAO,EACL,MAAM;MACJ,gBAAgB;MAChB,SAAS,sBAAsB,QAAQ;MACxC,EACF;;IAEL,QAEI,QAAO,EAAE;;;EAIlB;;AAsIH,IAAM,8BAA2B,IAAI,IAAI,CAAC,QAAQ,MAAM,CAAC;AAKzD,eAAe,qBAAqB,OAAO,WAAS;CAClD,MAAM,EACJ,WACA,UAAA,YACA,aACE;CACJ,MAAM,MAAM,OAAOD,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS;CACtF,MAAM,OAAO,QAAQ,UAAU;CAC/B,MAAM,YAAY,aAAa,UAAU;CACzC,MAAM,aAAa,YAAY,UAAU,KAAK;CAC9C,MAAM,gBAAgB,YAAY,IAAI,KAAK,GAAG,KAAK;CACnD,MAAM,iBAAiB,OAAO,aAAa,KAAK;CAChD,MAAM,WAAW,SAASE,WAAS,MAAM;CAGzC,IAAI,EACF,UACA,WACA,kBACE,OAAO,aAAa,WAAW;EACjC,UAAU;EACV,WAAW;EACX,eAAe;EAChB,GAAG;EACF,UAAU,SAAS,YAAY;EAC/B,WAAW,SAAS,aAAa;EACjC,eAAe,SAAS;EACzB;AACD,KAAI,aAAa,OAAO,kBAAkB,SACxC,aAAY,cAAc,QAAQ,gBAAgB,KAAK;AAEzD,QAAO,aAAa;EAClB,GAAG,YAAY;EACf,GAAG,WAAW;EACf,GAAG;EACF,GAAG,WAAW;EACd,GAAG,YAAY;EAChB;;AAUH,IAAMG,WAAS,SAAU,WAAS;AAChC,KAAIH,cAAY,KAAK,EACnB,aAAU;AAEZ,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,GACA,GACA,WACA,mBACE;GACJ,MAAM,aAAa,MAAM,qBAAqB,OAAOA,UAAQ;AAI7D,OAAI,gBAAgB,wBAAwB,eAAe,WAAW,OAAO,KAAK,IAAI,sBAAsB,eAAe,wBAAwB,eAAe,UAAU,QAAQ,sBAAsB,gBACxM,QAAO,EAAE;AAEX,UAAO;IACL,GAAG,IAAI,WAAW;IAClB,GAAG,IAAI,WAAW;IAClB,MAAM;KACJ,GAAG;KACH;KACD;IACF;;EAEJ;;AAQH,IAAMW,UAAQ,SAAU,WAAS;AAC/B,KAAIX,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,MAAM,EACJ,GACA,GACA,cACE;GACJ,MAAM,EACJ,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,OAC5B,UAAU,EACR,KAAI,SAAQ;IACV,IAAI,EACF,GAAA,KACA,GAAA,QACE;AACJ,WAAO;KACL,GAAA;KACA,GAAA;KACD;MAEJ,EACD,GAAG,0BACD,SAASA,WAAS,MAAM;GAC5B,MAAM,SAAS;IACb;IACA;IACD;GACD,MAAM,WAAW,MAAMD,iBAAe,OAAO,sBAAsB;GACnE,MAAM,YAAY,YAAY,QAAQ,UAAU,CAAC;GACjD,MAAM,WAAW,gBAAgB,UAAU;GAC3C,IAAI,gBAAgB,OAAO;GAC3B,IAAI,iBAAiB,OAAO;AAC5B,OAAI,eAAe;IACjB,MAAM,UAAU,aAAa,MAAM,QAAQ;IAC3C,MAAM,UAAU,aAAa,MAAM,WAAW;IAC9C,MAAMa,QAAM,gBAAgB,SAAS;IACrC,MAAMV,QAAM,gBAAgB,SAAS;AACrC,oBAAgB,MAAMU,OAAK,eAAeV,MAAI;;AAEhD,OAAI,gBAAgB;IAClB,MAAM,UAAU,cAAc,MAAM,QAAQ;IAC5C,MAAM,UAAU,cAAc,MAAM,WAAW;IAC/C,MAAMU,QAAM,iBAAiB,SAAS;IACtC,MAAMV,QAAM,iBAAiB,SAAS;AACtC,qBAAiB,MAAMU,OAAK,gBAAgBV,MAAI;;GAElD,MAAM,gBAAgB,QAAQ,GAAG;IAC/B,GAAG;KACF,WAAW;KACX,YAAY;IACd,CAAC;AACF,UAAO;IACL,GAAG;IACH,MAAM;KACJ,GAAG,cAAc,IAAI;KACrB,GAAG,cAAc,IAAI;KACrB,SAAS;OACN,WAAW;OACX,YAAY;MACd;KACF;IACF;;EAEJ;;AAKH,IAAMW,eAAa,SAAU,WAAS;AACpC,KAAIb,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,SAAA;EACA,GAAG,OAAO;GACR,MAAM,EACJ,GACA,GACA,WACA,OACA,mBACE;GACJ,MAAM,EACJ,QAAA,WAAS,GACT,UAAU,gBAAgB,MAC1B,WAAW,iBAAiB,SAC1B,SAASA,WAAS,MAAM;GAC5B,MAAM,SAAS;IACb;IACA;IACD;GACD,MAAM,YAAY,YAAY,UAAU;GACxC,MAAM,WAAW,gBAAgB,UAAU;GAC3C,IAAI,gBAAgB,OAAO;GAC3B,IAAI,iBAAiB,OAAO;GAC5B,MAAM,YAAY,SAASG,UAAQ,MAAM;GACzC,MAAM,iBAAiB,OAAO,cAAc,WAAW;IACrD,UAAU;IACV,WAAW;IACZ,GAAG;IACF,UAAU;IACV,WAAW;IACX,GAAG;IACJ;AACD,OAAI,eAAe;IACjB,MAAM,MAAM,aAAa,MAAM,WAAW;IAC1C,MAAM,WAAW,MAAM,UAAU,YAAY,MAAM,SAAS,OAAO,eAAe;IAClF,MAAM,WAAW,MAAM,UAAU,YAAY,MAAM,UAAU,OAAO,eAAe;AACnF,QAAI,gBAAgB,SAClB,iBAAgB;aACP,gBAAgB,SACzB,iBAAgB;;AAGpB,OAAI,gBAAgB;IAClB,IAAI,uBAAuB;IAC3B,MAAM,MAAM,aAAa,MAAM,UAAU;IACzC,MAAM,eAAe,YAAY,IAAI,QAAQ,UAAU,CAAC;IACxD,MAAM,WAAW,MAAM,UAAU,aAAa,MAAM,SAAS,QAAQ,iBAAiB,wBAAwB,eAAe,WAAW,OAAO,KAAK,IAAI,sBAAsB,eAAe,IAAI,MAAM,eAAe,IAAI,eAAe;IACzO,MAAM,WAAW,MAAM,UAAU,aAAa,MAAM,UAAU,QAAQ,eAAe,MAAM,yBAAyB,eAAe,WAAW,OAAO,KAAK,IAAI,uBAAuB,eAAe,MAAM,eAAe,eAAe,YAAY;AACpP,QAAI,iBAAiB,SACnB,kBAAiB;aACR,iBAAiB,SAC1B,kBAAiB;;AAGrB,UAAO;KACJ,WAAW;KACX,YAAY;IACd;;EAEJ;;AASH,IAAMW,SAAO,SAAU,WAAS;AAC9B,KAAId,cAAY,KAAK,EACnB,aAAU,EAAE;AAEd,QAAO;EACL,MAAM;EACN,SAAA;EACA,MAAM,GAAG,OAAO;GACd,IAAI,uBAAuB;GAC3B,MAAM,EACJ,WACA,OACA,UAAA,YACA,aACE;GACJ,MAAM,EACJ,cAAc,IACd,GAAG,0BACD,SAASA,WAAS,MAAM;GAC5B,MAAM,WAAW,MAAMD,iBAAe,OAAO,sBAAsB;GACnE,MAAM,OAAO,QAAQ,UAAU;GAC/B,MAAM,YAAY,aAAa,UAAU;GACzC,MAAM,UAAU,YAAY,UAAU,KAAK;GAC3C,MAAM,EACJ,OACA,WACE,MAAM;GACV,IAAI;GACJ,IAAI;AACJ,OAAI,SAAS,SAAS,SAAS,UAAU;AACvC,iBAAa;AACb,gBAAY,eAAgB,OAAOD,WAAS,SAAS,OAAO,KAAK,IAAIA,WAAS,MAAM,SAAS,SAAS,IAAK,UAAU,SAAS,SAAS;UAClI;AACL,gBAAY;AACZ,iBAAa,cAAc,QAAQ,QAAQ;;GAE7C,MAAM,wBAAwB,SAAS,SAAS,MAAM,SAAS;GAC/D,MAAM,uBAAuB,QAAQ,SAAS,OAAO,SAAS;GAC9D,MAAM,0BAA0B,IAAI,SAAS,SAAS,aAAa,sBAAsB;GACzF,MAAM,yBAAyB,IAAI,QAAQ,SAAS,YAAY,qBAAqB;GACrF,MAAM,UAAU,CAAC,MAAM,eAAe;GACtC,IAAI,kBAAkB;GACtB,IAAI,iBAAiB;AACrB,QAAK,wBAAwB,MAAM,eAAe,UAAU,QAAQ,sBAAsB,QAAQ,EAChG,kBAAiB;AAEnB,QAAK,yBAAyB,MAAM,eAAe,UAAU,QAAQ,uBAAuB,QAAQ,EAClG,mBAAkB;AAEpB,OAAI,WAAW,CAAC,WAAW;IACzB,MAAM,OAAO,IAAI,SAAS,MAAM,EAAE;IAClC,MAAM,OAAO,IAAI,SAAS,OAAO,EAAE;IACnC,MAAM,OAAO,IAAI,SAAS,KAAK,EAAE;IACjC,MAAM,OAAO,IAAI,SAAS,QAAQ,EAAE;AACpC,QAAI,QACF,kBAAiB,QAAQ,KAAK,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO,IAAI,SAAS,MAAM,SAAS,MAAM;QAEzG,mBAAkB,SAAS,KAAK,SAAS,KAAK,SAAS,IAAI,OAAO,OAAO,IAAI,SAAS,KAAK,SAAS,OAAO;;AAG/G,SAAM,MAAM;IACV,GAAG;IACH;IACA;IACD,CAAC;GACF,MAAM,iBAAiB,MAAMA,WAAS,cAAc,SAAS,SAAS;AACtE,OAAI,UAAU,eAAe,SAAS,WAAW,eAAe,OAC9D,QAAO,EACL,OAAO,EACL,OAAO,MACR,EACF;AAEH,UAAO,EAAE;;EAEZ;;ACrhCH,SAAS,YAAY;AACnB,QAAO,OAAO,WAAW;;AAE3B,SAAS,YAAY,MAAM;AACzB,KAAI,OAAO,KAAK,CACd,SAAQ,KAAK,YAAY,IAAI,aAAa;AAK5C,QAAO;;AAET,SAAS,UAAU,MAAM;CACvB,IAAI;AACJ,SAAQ,QAAQ,SAAS,sBAAsB,KAAK,kBAAkB,OAAO,KAAK,IAAI,oBAAoB,gBAAgB;;AAE5H,SAAS,mBAAmB,MAAM;CAChC,IAAI;AACJ,SAAQ,QAAQ,OAAO,KAAK,GAAG,KAAK,gBAAgB,KAAK,aAAa,OAAO,aAAa,OAAO,KAAK,IAAI,KAAK;;AAEjH,SAAS,OAAO,OAAO;AACrB,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,QAAQ,iBAAiB,UAAU,MAAM,CAAC;;AAEpE,SAAS,UAAU,OAAO;AACxB,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,WAAW,iBAAiB,UAAU,MAAM,CAAC;;AAEvE,SAAS,cAAc,OAAO;AAC5B,KAAI,CAAC,WAAW,CACd,QAAO;AAET,QAAO,iBAAiB,eAAe,iBAAiB,UAAU,MAAM,CAAC;;AAE3E,SAAS,aAAa,OAAO;AAC3B,KAAI,CAAC,WAAW,IAAI,OAAO,eAAe,YACxC,QAAO;AAET,QAAO,iBAAiB,cAAc,iBAAiB,UAAU,MAAM,CAAC;;AAE1E,IAAM,+CAA4C,IAAI,IAAI,CAAC,UAAU,WAAW,CAAC;AACjF,SAAS,kBAAkB,SAAS;CAClC,MAAM,EACJ,UACA,WACA,WACA,YACEiB,mBAAiB,QAAQ;AAC7B,QAAO,kCAAkC,KAAK,WAAW,YAAY,UAAU,IAAI,CAAC,6BAA6B,IAAI,QAAQ;;AAE/H,IAAM,gCAA6B,IAAI,IAAI;CAAC;CAAS;CAAM;CAAK,CAAC;AACjE,SAAS,eAAe,SAAS;AAC/B,QAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;;AAEhD,IAAM,oBAAoB,CAAC,iBAAiB,SAAS;AACrD,SAAS,WAAW,SAAS;AAC3B,QAAO,kBAAkB,MAAK,aAAY;AACxC,MAAI;AACF,UAAO,QAAQ,QAAQ,SAAS;WACzBC,MAAI;AACX,UAAO;;GAET;;AAEJ,IAAM,sBAAsB;CAAC;CAAa;CAAa;CAAS;CAAU;CAAc;AACxF,IAAM,mBAAmB;CAAC;CAAa;CAAa;CAAS;CAAU;CAAe;CAAS;AAC/F,IAAM,gBAAgB;CAAC;CAAS;CAAU;CAAU;CAAU;AAC9D,SAAS,kBAAkB,cAAc;CACvC,MAAM,SAAS,UAAU;CACzB,MAAM,MAAM,UAAU,aAAa,GAAGD,mBAAiB,aAAa,GAAG;AAIvE,QAAO,oBAAoB,MAAK,UAAS,IAAI,SAAS,IAAI,WAAW,SAAS,MAAM,KAAK,IAAI,gBAAgB,IAAI,kBAAkB,WAAW,UAAU,CAAC,WAAW,IAAI,iBAAiB,IAAI,mBAAmB,SAAS,UAAU,CAAC,WAAW,IAAI,SAAS,IAAI,WAAW,SAAS,UAAU,iBAAiB,MAAK,WAAU,IAAI,cAAc,IAAI,SAAS,MAAM,CAAC,IAAI,cAAc,MAAK,WAAU,IAAI,WAAW,IAAI,SAAS,MAAM,CAAC;;AAE1a,SAAS,mBAAmB,SAAS;CACnC,IAAI,cAAc,cAAc,QAAQ;AACxC,QAAO,cAAc,YAAY,IAAI,CAAC,sBAAsB,YAAY,EAAE;AACxE,MAAI,kBAAkB,YAAY,CAChC,QAAO;WACE,WAAW,YAAY,CAChC,QAAO;AAET,gBAAc,cAAc,YAAY;;AAE1C,QAAO;;AAET,SAAS,WAAW;AAClB,KAAI,OAAO,QAAQ,eAAe,CAAC,IAAI,SAAU,QAAO;AACxD,QAAO,IAAI,SAAS,2BAA2B,OAAO;;AAExD,IAAM,2CAAwC,IAAI,IAAI;CAAC;CAAQ;CAAQ;CAAY,CAAC;AACpF,SAAS,sBAAsB,MAAM;AACnC,QAAO,yBAAyB,IAAI,YAAY,KAAK,CAAC;;AAExD,SAASA,mBAAiB,SAAS;AACjC,QAAO,UAAU,QAAQ,CAAC,iBAAiB,QAAQ;;AAErD,SAAS,cAAc,SAAS;AAC9B,KAAI,UAAU,QAAQ,CACpB,QAAO;EACL,YAAY,QAAQ;EACpB,WAAW,QAAQ;EACpB;AAEH,QAAO;EACL,YAAY,QAAQ;EACpB,WAAW,QAAQ;EACpB;;AAEH,SAAS,cAAc,MAAM;AAC3B,KAAI,YAAY,KAAK,KAAK,OACxB,QAAO;CAET,MAAM,SAEN,KAAK,gBAEL,KAAK,cAEL,aAAa,KAAK,IAAI,KAAK,QAE3B,mBAAmB,KAAK;AACxB,QAAO,aAAa,OAAO,GAAG,OAAO,OAAO;;AAE9C,SAAS,2BAA2B,MAAM;CACxC,MAAM,aAAa,cAAc,KAAK;AACtC,KAAI,sBAAsB,WAAW,CACnC,QAAO,KAAK,gBAAgB,KAAK,cAAc,OAAO,KAAK;AAE7D,KAAI,cAAc,WAAW,IAAI,kBAAkB,WAAW,CAC5D,QAAO;AAET,QAAO,2BAA2B,WAAW;;AAE/C,SAAS,qBAAqB,MAAM,MAAM,iBAAiB;CACzD,IAAI;AACJ,KAAI,SAAS,KAAK,EAChB,QAAO,EAAE;AAEX,KAAI,oBAAoB,KAAK,EAC3B,mBAAkB;CAEpB,MAAM,qBAAqB,2BAA2B,KAAK;CAC3D,MAAM,SAAS,yBAAyB,uBAAuB,KAAK,kBAAkB,OAAO,KAAK,IAAI,qBAAqB;CAC3H,MAAM,MAAM,UAAU,mBAAmB;AACzC,KAAI,QAAQ;EACV,MAAM,eAAe,gBAAgB,IAAI;AACzC,SAAO,KAAK,OAAO,KAAK,IAAI,kBAAkB,EAAE,EAAE,kBAAkB,mBAAmB,GAAG,qBAAqB,EAAE,EAAE,gBAAgB,kBAAkB,qBAAqB,aAAa,GAAG,EAAE,CAAC;;AAE/L,QAAO,KAAK,OAAO,oBAAoB,qBAAqB,oBAAoB,EAAE,EAAE,gBAAgB,CAAC;;AAEvG,SAAS,gBAAgB,KAAK;AAC5B,QAAO,IAAI,UAAU,OAAO,eAAe,IAAI,OAAO,GAAG,IAAI,eAAe;;ACxJ9E,SAAS,iBAAiB,SAAS;CACjC,MAAM,MAAM,mBAAmB,QAAQ;CAGvC,IAAI,QAAQ,WAAW,IAAI,MAAM,IAAI;CACrC,IAAI,SAAS,WAAW,IAAI,OAAO,IAAI;CACvC,MAAM,YAAY,cAAc,QAAQ;CACxC,MAAM,cAAc,YAAY,QAAQ,cAAc;CACtD,MAAM,eAAe,YAAY,QAAQ,eAAe;CACxD,MAAM,iBAAiB,MAAM,MAAM,KAAK,eAAe,MAAM,OAAO,KAAK;AACzE,KAAI,gBAAgB;AAClB,UAAQ;AACR,WAAS;;AAEX,QAAO;EACL;EACA;EACA,GAAG;EACJ;;AAGH,SAAS,cAAc,SAAS;AAC9B,QAAO,CAAC,UAAU,QAAQ,GAAG,QAAQ,iBAAiB;;AAGxD,SAAS,SAAS,SAAS;CACzB,MAAM,aAAa,cAAc,QAAQ;AACzC,KAAI,CAAC,cAAc,WAAW,CAC5B,QAAO,aAAa,EAAE;CAExB,MAAM,OAAO,WAAW,uBAAuB;CAC/C,MAAM,EACJ,OACA,QACA,GAAA,QACE,iBAAiB,WAAW;CAChC,IAAI,KAAKE,MAAI,MAAM,KAAK,MAAM,GAAG,KAAK,SAAS;CAC/C,IAAI,KAAKA,MAAI,MAAM,KAAK,OAAO,GAAG,KAAK,UAAU;AAIjD,KAAI,CAAC,KAAK,CAAC,OAAO,SAAS,EAAE,CAC3B,KAAI;AAEN,KAAI,CAAC,KAAK,CAAC,OAAO,SAAS,EAAE,CAC3B,KAAI;AAEN,QAAO;EACL;EACA;EACD;;AAGH,IAAM,YAAyB,6BAAa,EAAE;AAC9C,SAAS,iBAAiB,SAAS;CACjC,MAAM,MAAM,UAAU,QAAQ;AAC9B,KAAI,CAAC,UAAU,IAAI,CAAC,IAAI,eACtB,QAAO;AAET,QAAO;EACL,GAAG,IAAI,eAAe;EACtB,GAAG,IAAI,eAAe;EACvB;;AAEH,SAAS,uBAAuB,SAAS,SAAS,sBAAsB;AACtE,KAAI,YAAY,KAAK,EACnB,WAAU;AAEZ,KAAI,CAAC,wBAAwB,WAAW,yBAAyB,UAAU,QAAQ,CACjF,QAAO;AAET,QAAO;;AAGT,SAAS,sBAAsB,SAAS,cAAc,iBAAiB,cAAc;AACnF,KAAI,iBAAiB,KAAK,EACxB,gBAAe;AAEjB,KAAI,oBAAoB,KAAK,EAC3B,mBAAkB;CAEpB,MAAM,aAAa,QAAQ,uBAAuB;CAClD,MAAM,aAAa,cAAc,QAAQ;CACzC,IAAI,QAAQ,aAAa,EAAE;AAC3B,KAAI,aACF,KAAI;MACE,UAAU,aAAa,CACzB,SAAQ,SAAS,aAAa;OAGhC,SAAQ,SAAS,QAAQ;CAG7B,MAAM,gBAAgB,uBAAuB,YAAY,iBAAiB,aAAa,GAAG,iBAAiB,WAAW,GAAG,aAAa,EAAE;CACxI,IAAI,KAAK,WAAW,OAAO,cAAc,KAAK,MAAM;CACpD,IAAI,KAAK,WAAW,MAAM,cAAc,KAAK,MAAM;CACnD,IAAI,QAAQ,WAAW,QAAQ,MAAM;CACrC,IAAI,SAAS,WAAW,SAAS,MAAM;AACvC,KAAI,YAAY;EACd,MAAM,MAAM,UAAU,WAAW;EACjC,MAAM,YAAY,gBAAgB,UAAU,aAAa,GAAG,UAAU,aAAa,GAAG;EACtF,IAAI,aAAa;EACjB,IAAI,gBAAgB,gBAAgB,WAAW;AAC/C,SAAO,iBAAiB,gBAAgB,cAAc,YAAY;GAChE,MAAM,cAAc,SAAS,cAAc;GAC3C,MAAM,aAAa,cAAc,uBAAuB;GACxD,MAAM,MAAM,mBAAmB,cAAc;GAC7C,MAAM,OAAO,WAAW,QAAQ,cAAc,aAAa,WAAW,IAAI,YAAY,IAAI,YAAY;GACtG,MAAM,MAAM,WAAW,OAAO,cAAc,YAAY,WAAW,IAAI,WAAW,IAAI,YAAY;AAClG,QAAK,YAAY;AACjB,QAAK,YAAY;AACjB,YAAS,YAAY;AACrB,aAAU,YAAY;AACtB,QAAK;AACL,QAAK;AACL,gBAAa,UAAU,cAAc;AACrC,mBAAgB,gBAAgB,WAAW;;;AAG/C,QAAO,iBAAiB;EACtB;EACA;EACA;EACA;EACD,CAAC;;AAKJ,SAAS,oBAAoB,SAAS,MAAM;CAC1C,MAAM,aAAa,cAAc,QAAQ,CAAC;AAC1C,KAAI,CAAC,KACH,QAAO,sBAAsB,mBAAmB,QAAQ,CAAC,CAAC,OAAO;AAEnE,QAAO,KAAK,OAAO;;AAGrB,SAAS,cAAc,iBAAiB,QAAQ;CAC9C,MAAM,WAAW,gBAAgB,uBAAuB;AAGxD,QAAO;EACL,GAHQ,SAAS,OAAO,OAAO,aAAa,oBAAoB,iBAAiB,SAAS;EAI1F,GAHQ,SAAS,MAAM,OAAO;EAI/B;;AAGH,SAAS,sDAAsD,MAAM;CACnE,IAAI,EACF,UACA,MACA,cACA,aACE;CACJ,MAAM,UAAU,aAAa;CAC7B,MAAM,kBAAkB,mBAAmB,aAAa;CACxD,MAAM,WAAW,WAAW,WAAW,SAAS,SAAS,GAAG;AAC5D,KAAI,iBAAiB,mBAAmB,YAAY,QAClD,QAAO;CAET,IAAI,SAAS;EACX,YAAY;EACZ,WAAW;EACZ;CACD,IAAI,QAAQ,aAAa,EAAE;CAC3B,MAAM,UAAU,aAAa,EAAE;CAC/B,MAAM,0BAA0B,cAAc,aAAa;AAC3D,KAAI,2BAA2B,CAAC,2BAA2B,CAAC,SAAS;AACnE,MAAI,YAAY,aAAa,KAAK,UAAU,kBAAkB,gBAAgB,CAC5E,UAAS,cAAc,aAAa;AAEtC,MAAI,cAAc,aAAa,EAAE;GAC/B,MAAM,aAAa,sBAAsB,aAAa;AACtD,WAAQ,SAAS,aAAa;AAC9B,WAAQ,IAAI,WAAW,IAAI,aAAa;AACxC,WAAQ,IAAI,WAAW,IAAI,aAAa;;;CAG5C,MAAM,aAAa,mBAAmB,CAAC,2BAA2B,CAAC,UAAU,cAAc,iBAAiB,OAAO,GAAG,aAAa,EAAE;AACrI,QAAO;EACL,OAAO,KAAK,QAAQ,MAAM;EAC1B,QAAQ,KAAK,SAAS,MAAM;EAC5B,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,aAAa,MAAM,IAAI,QAAQ,IAAI,WAAW;EAC3E,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,YAAY,MAAM,IAAI,QAAQ,IAAI,WAAW;EAC3E;;AAGH,SAAS,eAAe,SAAS;AAC/B,QAAO,MAAM,KAAK,QAAQ,gBAAgB,CAAC;;AAK7C,SAAS,gBAAgB,SAAS;CAChC,MAAM,OAAO,mBAAmB,QAAQ;CACxC,MAAM,SAAS,cAAc,QAAQ;CACrC,MAAM,OAAO,QAAQ,cAAc;CACnC,MAAM,QAAQ,IAAI,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,YAAY;CACzF,MAAM,SAAS,IAAI,KAAK,cAAc,KAAK,cAAc,KAAK,cAAc,KAAK,aAAa;CAC9F,IAAI,IAAI,CAAC,OAAO,aAAa,oBAAoB,QAAQ;CACzD,MAAM,IAAI,CAAC,OAAO;AAClB,KAAI,mBAAmB,KAAK,CAAC,cAAc,MACzC,MAAK,IAAI,KAAK,aAAa,KAAK,YAAY,GAAG;AAEjD,QAAO;EACL;EACA;EACA;EACA;EACD;;AAMH,IAAM,gBAAgB;AACtB,SAAS,gBAAgB,SAAS,UAAU;CAC1C,MAAM,MAAM,UAAU,QAAQ;CAC9B,MAAM,OAAO,mBAAmB,QAAQ;CACxC,MAAM,iBAAiB,IAAI;CAC3B,IAAI,QAAQ,KAAK;CACjB,IAAI,SAAS,KAAK;CAClB,IAAI,IAAI;CACR,IAAI,IAAI;AACR,KAAI,gBAAgB;AAClB,UAAQ,eAAe;AACvB,WAAS,eAAe;EACxB,MAAM,sBAAsB,UAAU;AACtC,MAAI,CAAC,uBAAuB,uBAAuB,aAAa,SAAS;AACvE,OAAI,eAAe;AACnB,OAAI,eAAe;;;CAGvB,MAAM,mBAAmB,oBAAoB,KAAK;AAIlD,KAAI,oBAAoB,GAAG;EACzB,MAAM,MAAM,KAAK;EACjB,MAAM,OAAO,IAAI;EACjB,MAAM,aAAa,iBAAiB,KAAK;EACzC,MAAM,mBAAmB,IAAI,eAAe,eAAe,WAAW,WAAW,WAAW,GAAG,WAAW,WAAW,YAAY,IAAI,IAAI;EACzI,MAAM,+BAA+B,KAAK,IAAI,KAAK,cAAc,KAAK,cAAc,iBAAiB;AACrG,MAAI,gCAAgC,cAClC,UAAS;YAEF,oBAAoB,cAG7B,UAAS;AAEX,QAAO;EACL;EACA;EACA;EACA;EACD;;AAGH,IAAM,kCAA+B,IAAI,IAAI,CAAC,YAAY,QAAQ,CAAC;AAEnE,SAAS,2BAA2B,SAAS,UAAU;CACrD,MAAM,aAAa,sBAAsB,SAAS,MAAM,aAAa,QAAQ;CAC7E,MAAM,MAAM,WAAW,MAAM,QAAQ;CACrC,MAAM,OAAO,WAAW,OAAO,QAAQ;CACvC,MAAM,QAAQ,cAAc,QAAQ,GAAG,SAAS,QAAQ,GAAG,aAAa,EAAE;AAK1E,QAAO;EACL,OALY,QAAQ,cAAc,MAAM;EAMxC,QALa,QAAQ,eAAe,MAAM;EAM1C,GALQ,OAAO,MAAM;EAMrB,GALQ,MAAM,MAAM;EAMrB;;AAEH,SAAS,kCAAkC,SAAS,kBAAkB,UAAU;CAC9E,IAAI;AACJ,KAAI,qBAAqB,WACvB,QAAO,gBAAgB,SAAS,SAAS;UAChC,qBAAqB,WAC9B,QAAO,gBAAgB,mBAAmB,QAAQ,CAAC;UAC1C,UAAU,iBAAiB,CACpC,QAAO,2BAA2B,kBAAkB,SAAS;MACxD;EACL,MAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,SAAO;GACL,GAAG,iBAAiB,IAAI,cAAc;GACtC,GAAG,iBAAiB,IAAI,cAAc;GACtC,OAAO,iBAAiB;GACxB,QAAQ,iBAAiB;GAC1B;;AAEH,QAAO,iBAAiB,KAAK;;AAE/B,SAAS,yBAAyB,SAAS,UAAU;CACnD,MAAM,aAAa,cAAc,QAAQ;AACzC,KAAI,eAAe,YAAY,CAAC,UAAU,WAAW,IAAI,sBAAsB,WAAW,CACxF,QAAO;AAET,QAAO,mBAAmB,WAAW,CAAC,aAAa,WAAW,yBAAyB,YAAY,SAAS;;AAM9G,SAAS,4BAA4B,SAAS,OAAO;CACnD,MAAM,eAAe,MAAM,IAAI,QAAQ;AACvC,KAAI,aACF,QAAO;CAET,IAAI,SAAS,qBAAqB,SAAS,EAAE,EAAE,MAAM,CAAC,QAAO,OAAM,UAAU,GAAG,IAAI,YAAY,GAAG,KAAK,OAAO;CAC/G,IAAI,sCAAsC;CAC1C,MAAM,iBAAiB,mBAAmB,QAAQ,CAAC,aAAa;CAChE,IAAI,cAAc,iBAAiB,cAAc,QAAQ,GAAG;AAG5D,QAAO,UAAU,YAAY,IAAI,CAAC,sBAAsB,YAAY,EAAE;EACpE,MAAM,gBAAgB,mBAAmB,YAAY;EACrD,MAAM,0BAA0B,kBAAkB,YAAY;AAC9D,MAAI,CAAC,2BAA2B,cAAc,aAAa,QACzD,uCAAsC;AAGxC,MAD8B,iBAAiB,CAAC,2BAA2B,CAAC,sCAAsC,CAAC,2BAA2B,cAAc,aAAa,YAAY,CAAC,CAAC,uCAAuC,gBAAgB,IAAI,oCAAoC,SAAS,IAAI,kBAAkB,YAAY,IAAI,CAAC,2BAA2B,yBAAyB,SAAS,YAAY,CAG7Y,UAAS,OAAO,QAAO,aAAY,aAAa,YAAY;MAG5D,uCAAsC;AAExC,gBAAc,cAAc,YAAY;;AAE1C,OAAM,IAAI,SAAS,OAAO;AAC1B,QAAO;;AAKT,SAAS,gBAAgB,MAAM;CAC7B,IAAI,EACF,SACA,UACA,cACA,aACE;CAEJ,MAAM,oBAAoB,CAAC,GADM,aAAa,sBAAsB,WAAW,QAAQ,GAAG,EAAE,GAAG,4BAA4B,SAAS,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,SAAS,EAC1G,aAAa;CACrE,MAAM,wBAAwB,kBAAkB;CAChD,MAAM,eAAe,kBAAkB,QAAQ,SAAS,qBAAqB;EAC3E,MAAM,OAAO,kCAAkC,SAAS,kBAAkB,SAAS;AACnF,UAAQ,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI;AACxC,UAAQ,QAAQ,IAAI,KAAK,OAAO,QAAQ,MAAM;AAC9C,UAAQ,SAAS,IAAI,KAAK,QAAQ,QAAQ,OAAO;AACjD,UAAQ,OAAO,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC3C,SAAO;IACN,kCAAkC,SAAS,uBAAuB,SAAS,CAAC;AAC/E,QAAO;EACL,OAAO,aAAa,QAAQ,aAAa;EACzC,QAAQ,aAAa,SAAS,aAAa;EAC3C,GAAG,aAAa;EAChB,GAAG,aAAa;EACjB;;AAGH,SAAS,cAAc,SAAS;CAC9B,MAAM,EACJ,OACA,WACE,iBAAiB,QAAQ;AAC7B,QAAO;EACL;EACA;EACD;;AAGH,SAAS,8BAA8B,SAAS,cAAc,UAAU;CACtE,MAAM,0BAA0B,cAAc,aAAa;CAC3D,MAAM,kBAAkB,mBAAmB,aAAa;CACxD,MAAM,UAAU,aAAa;CAC7B,MAAM,OAAO,sBAAsB,SAAS,MAAM,SAAS,aAAa;CACxE,IAAI,SAAS;EACX,YAAY;EACZ,WAAW;EACZ;CACD,MAAM,UAAU,aAAa,EAAE;CAI/B,SAAS,4BAA4B;AACnC,UAAQ,IAAI,oBAAoB,gBAAgB;;AAElD,KAAI,2BAA2B,CAAC,2BAA2B,CAAC,SAAS;AACnE,MAAI,YAAY,aAAa,KAAK,UAAU,kBAAkB,gBAAgB,CAC5E,UAAS,cAAc,aAAa;AAEtC,MAAI,yBAAyB;GAC3B,MAAM,aAAa,sBAAsB,cAAc,MAAM,SAAS,aAAa;AACnF,WAAQ,IAAI,WAAW,IAAI,aAAa;AACxC,WAAQ,IAAI,WAAW,IAAI,aAAa;aAC/B,gBACT,4BAA2B;;AAG/B,KAAI,WAAW,CAAC,2BAA2B,gBACzC,4BAA2B;CAE7B,MAAM,aAAa,mBAAmB,CAAC,2BAA2B,CAAC,UAAU,cAAc,iBAAiB,OAAO,GAAG,aAAa,EAAE;AAGrI,QAAO;EACL,GAHQ,KAAK,OAAO,OAAO,aAAa,QAAQ,IAAI,WAAW;EAI/D,GAHQ,KAAK,MAAM,OAAO,YAAY,QAAQ,IAAI,WAAW;EAI7D,OAAO,KAAK;EACZ,QAAQ,KAAK;EACd;;AAGH,SAAS,mBAAmB,SAAS;AACnC,QAAO,mBAAmB,QAAQ,CAAC,aAAa;;AAGlD,SAAS,oBAAoB,SAAS,UAAU;AAC9C,KAAI,CAAC,cAAc,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,aAAa,QACtE,QAAO;AAET,KAAI,SACF,QAAO,SAAS,QAAQ;CAE1B,IAAI,kBAAkB,QAAQ;AAM9B,KAAI,mBAAmB,QAAQ,KAAK,gBAClC,mBAAkB,gBAAgB,cAAc;AAElD,QAAO;;AAKT,SAAS,gBAAgB,SAAS,UAAU;CAC1C,MAAM,MAAM,UAAU,QAAQ;AAC9B,KAAI,WAAW,QAAQ,CACrB,QAAO;AAET,KAAI,CAAC,cAAc,QAAQ,EAAE;EAC3B,IAAI,kBAAkB,cAAc,QAAQ;AAC5C,SAAO,mBAAmB,CAAC,sBAAsB,gBAAgB,EAAE;AACjE,OAAI,UAAU,gBAAgB,IAAI,CAAC,mBAAmB,gBAAgB,CACpE,QAAO;AAET,qBAAkB,cAAc,gBAAgB;;AAElD,SAAO;;CAET,IAAI,eAAe,oBAAoB,SAAS,SAAS;AACzD,QAAO,gBAAgB,eAAe,aAAa,IAAI,mBAAmB,aAAa,CACrF,gBAAe,oBAAoB,cAAc,SAAS;AAE5D,KAAI,gBAAgB,sBAAsB,aAAa,IAAI,mBAAmB,aAAa,IAAI,CAAC,kBAAkB,aAAa,CAC7H,QAAO;AAET,QAAO,gBAAgB,mBAAmB,QAAQ,IAAI;;AAGxD,IAAM,kBAAkB,eAAgB,MAAM;CAC5C,MAAM,oBAAoB,KAAK,mBAAmB;CAClD,MAAM,kBAAkB,KAAK;CAC7B,MAAM,qBAAqB,MAAM,gBAAgB,KAAK,SAAS;AAC/D,QAAO;EACL,WAAW,8BAA8B,KAAK,WAAW,MAAM,kBAAkB,KAAK,SAAS,EAAE,KAAK,SAAS;EAC/G,UAAU;GACR,GAAG;GACH,GAAG;GACH,OAAO,mBAAmB;GAC1B,QAAQ,mBAAmB;GAC5B;EACF;;AAGH,SAAS,MAAM,SAAS;AACtB,QAAO,mBAAmB,QAAQ,CAAC,cAAc;;AAGnD,IAAM,WAAW;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAS,cAAc,GAAG,GAAG;AAC3B,QAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;;AAI7E,SAAS,YAAY,SAAS,QAAQ;CACpC,IAAI,KAAK;CACT,IAAI;CACJ,MAAM,OAAO,mBAAmB,QAAQ;CACxC,SAAS,UAAU;EACjB,IAAI;AACJ,eAAa,UAAU;AACvB,GAAC,MAAM,OAAO,QAAQ,IAAI,YAAY;AACtC,OAAK;;CAEP,SAAS,QAAQ,MAAM,WAAW;AAChC,MAAI,SAAS,KAAK,EAChB,QAAO;AAET,MAAI,cAAc,KAAK,EACrB,aAAY;AAEd,WAAS;EACT,MAAM,2BAA2B,QAAQ,uBAAuB;EAChE,MAAM,EACJ,MACA,KACA,OACA,WACE;AACJ,MAAI,CAAC,KACH,SAAQ;AAEV,MAAI,CAAC,SAAS,CAAC,OACb;EAEF,MAAM,WAAW,MAAM,IAAI;EAC3B,MAAM,aAAa,MAAM,KAAK,eAAe,OAAO,OAAO;EAC3D,MAAM,cAAc,MAAM,KAAK,gBAAgB,MAAM,QAAQ;EAC7D,MAAM,YAAY,MAAM,KAAK;EAE7B,MAAMC,YAAU;GACd,YAFiB,CAAC,WAAW,QAAQ,CAAC,aAAa,QAAQ,CAAC,cAAc,QAAQ,CAAC,YAAY;GAG/F,WAAW,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI;GACzC;EACD,IAAI,gBAAgB;EACpB,SAAS,cAAc,SAAS;GAC9B,MAAM,QAAQ,QAAQ,GAAG;AACzB,OAAI,UAAU,WAAW;AACvB,QAAI,CAAC,cACH,QAAO,SAAS;AAElB,QAAI,CAAC,MAGH,aAAY,iBAAiB;AAC3B,aAAQ,OAAO,KAAK;OACnB,IAAK;QAER,SAAQ,OAAO,MAAM;;AAGzB,OAAI,UAAU,KAAK,CAAC,cAAc,0BAA0B,QAAQ,uBAAuB,CAAC,CAQ1F,UAAS;AAEX,mBAAgB;;AAKlB,MAAI;AACF,QAAK,IAAI,qBAAqB,eAAe;IAC3C,GAAGA;IAEH,MAAM,KAAK;IACZ,CAAC;WACKC,MAAI;AACX,QAAK,IAAI,qBAAqB,eAAeD,UAAQ;;AAEvD,KAAG,QAAQ,QAAQ;;AAErB,SAAQ,KAAK;AACb,QAAO;;AAWT,SAAS,WAAW,WAAW,UAAU,QAAQ,WAAS;AACxD,KAAIA,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,iBAAiB,MACjB,iBAAiB,MACjB,gBAAgB,OAAO,mBAAmB,YAC1C,cAAc,OAAO,yBAAyB,YAC9C,iBAAiB,UACfA;CACJ,MAAM,cAAc,cAAc,UAAU;CAC5C,MAAM,YAAY,kBAAkB,iBAAiB,CAAC,GAAI,cAAc,qBAAqB,YAAY,GAAG,EAAE,EAAG,GAAG,qBAAqB,SAAS,CAAC,GAAG,EAAE;AACxJ,WAAU,SAAQ,aAAY;AAC5B,oBAAkB,SAAS,iBAAiB,UAAU,QAAQ,EAC5D,SAAS,MACV,CAAC;AACF,oBAAkB,SAAS,iBAAiB,UAAU,OAAO;GAC7D;CACF,MAAM,YAAY,eAAe,cAAc,YAAY,aAAa,OAAO,GAAG;CAClF,IAAI,iBAAiB;CACrB,IAAI,iBAAiB;AACrB,KAAI,eAAe;AACjB,mBAAiB,IAAI,gBAAe,SAAQ;GAC1C,IAAI,CAAC,cAAc;AACnB,OAAI,cAAc,WAAW,WAAW,eAAe,gBAAgB;AAGrE,mBAAe,UAAU,SAAS;AAClC,yBAAqB,eAAe;AACpC,qBAAiB,4BAA4B;KAC3C,IAAI;AACJ,MAAC,kBAAkB,mBAAmB,QAAQ,gBAAgB,QAAQ,SAAS;MAC/E;;AAEJ,WAAQ;IACR;AACF,MAAI,eAAe,CAAC,eAClB,gBAAe,QAAQ,YAAY;AAErC,iBAAe,QAAQ,SAAS;;CAElC,IAAI;CACJ,IAAI,cAAc,iBAAiB,sBAAsB,UAAU,GAAG;AACtE,KAAI,eACF,YAAW;CAEb,SAAS,YAAY;EACnB,MAAM,cAAc,sBAAsB,UAAU;AACpD,MAAI,eAAe,CAAC,cAAc,aAAa,YAAY,CACzD,SAAQ;AAEV,gBAAc;AACd,YAAU,sBAAsB,UAAU;;AAE5C,SAAQ;AACR,cAAa;EACX,IAAI;AACJ,YAAU,SAAQ,aAAY;AAC5B,qBAAkB,SAAS,oBAAoB,UAAU,OAAO;AAChE,qBAAkB,SAAS,oBAAoB,UAAU,OAAO;IAChE;AACF,eAAgC;AAChC,GAAC,mBAAmB,mBAAmB,QAAQ,iBAAiB,YAAY;AAC5E,mBAAiB;AACjB,MAAI,eACF,sBAAqB,QAAQ;;;AAsBnC,IAAME,WAASC;AAef,IAAMC,UAAQC;AAQd,IAAMC,SAAOC;AAQb,IAAMC,SAAOC;AAOb,IAAMC,SAAOC;AAOb,IAAMC,UAAQC;AAYd,IAAMC,eAAaC;AAMnB,IAAM,mBAAmB,WAAW,UAAU,cAAY;CAIxD,MAAM,wBAAQ,IAAI,KAAK;CACvB,MAAM,gBAAgB;EACpB;EACA,GAAGf;EACJ;CACD,MAAM,oBAAoB;EACxB,GAAG,cAAc;EACjB,IAAI;EACL;AACD,QAAO,kBAAkB,WAAW,UAAU;EAC5C,GAAG;EACH,UAAU;EACX,CAAC;;AC5vBJ,IAAI,QAHW,OAAO,aAAa,cAGZgB,MAAAA,kBADZ,SAAS,OAAO;AAK3B,SAAS,UAAU,GAAG,GAAG;AACvB,KAAI,MAAM,EACR,QAAO;AAET,KAAI,OAAO,MAAM,OAAO,EACtB,QAAO;AAET,KAAI,OAAO,MAAM,cAAc,EAAE,UAAU,KAAK,EAAE,UAAU,CAC1D,QAAO;CAET,IAAI;CACJ,IAAI;CACJ,IAAI;AACJ,KAAI,KAAK,KAAK,OAAO,MAAM,UAAU;AACnC,MAAI,MAAM,QAAQ,EAAE,EAAE;AACpB,YAAS,EAAE;AACX,OAAI,WAAW,EAAE,OAAQ,QAAO;AAChC,QAAK,IAAI,QAAQ,QAAQ,GACvB,KAAI,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CACxB,QAAO;AAGX,UAAO;;AAET,SAAO,OAAO,KAAK,EAAE;AACrB,WAAS,KAAK;AACd,MAAI,WAAW,OAAO,KAAK,EAAE,CAAC,OAC5B,QAAO;AAET,OAAK,IAAI,QAAQ,QAAQ,GACvB,KAAI,CAAC,EAAE,CAAC,eAAe,KAAK,GAAG,KAAK,GAAG,CACrC,QAAO;AAGX,OAAK,IAAI,QAAQ,QAAQ,IAAI;GAC3B,MAAM,MAAM,KAAK;AACjB,OAAI,QAAQ,YAAY,EAAE,SACxB;AAEF,OAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAC5B,QAAO;;AAGX,SAAO;;AAET,QAAO,MAAM,KAAK,MAAM;;AAG1B,SAAS,OAAO,SAAS;AACvB,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,SADY,QAAQ,cAAc,eAAe,QACtC,oBAAoB;;AAGjC,SAAS,WAAW,SAAS,OAAO;CAClC,MAAM,MAAM,OAAO,QAAQ;AAC3B,QAAO,KAAK,MAAM,QAAQ,IAAI,GAAG;;AAGnC,SAAS,aAAa,OAAO;CAC3B,MAAM,MAAMC,MAAM,OAAO,MAAM;AAC/B,aAAY;AACV,MAAI,UAAU;GACd;AACF,QAAO;;AAOT,SAAS,YAAY,WAAS;AAC5B,KAAIC,cAAY,KAAK,EACnB,aAAU,EAAE;CAEd,MAAM,EACJ,YAAY,UACZ,WAAW,YACX,aAAa,EAAE,EACf,UAAA,YACA,UAAU,EACR,WAAW,mBACX,UAAU,qBACR,EAAE,EACN,YAAY,MACZ,sBACA,SACEA;CACJ,MAAM,CAAC,MAAM,WAAWD,MAAM,SAAS;EACrC,GAAG;EACH,GAAG;EACH;EACA;EACA,gBAAgB,EAAE;EAClB,cAAc;EACf,CAAC;CACF,MAAM,CAAC,kBAAkB,uBAAuBA,MAAM,SAAS,WAAW;AAC1E,KAAI,CAAC,UAAU,kBAAkB,WAAW,CAC1C,qBAAoB,WAAW;CAEjC,MAAM,CAAC,YAAY,iBAAiBA,MAAM,SAAS,KAAK;CACxD,MAAM,CAAC,WAAW,gBAAgBA,MAAM,SAAS,KAAK;CACtD,MAAM,eAAeA,MAAM,aAAY,SAAQ;AAC7C,MAAI,SAAS,aAAa,SAAS;AACjC,gBAAa,UAAU;AACvB,iBAAc,KAAK;;IAEpB,EAAE,CAAC;CACN,MAAM,cAAcA,MAAM,aAAY,SAAQ;AAC5C,MAAI,SAAS,YAAY,SAAS;AAChC,eAAY,UAAU;AACtB,gBAAa,KAAK;;IAEnB,EAAE,CAAC;CACN,MAAM,cAAc,qBAAqB;CACzC,MAAM,aAAa,oBAAoB;CACvC,MAAM,eAAeA,MAAM,OAAO,KAAK;CACvC,MAAM,cAAcA,MAAM,OAAO,KAAK;CACtC,MAAM,UAAUA,MAAM,OAAO,KAAK;CAClC,MAAM,0BAA0B,wBAAwB;CACxD,MAAM,0BAA0B,aAAa,qBAAqB;CAClE,MAAM,cAAc,aAAaE,WAAS;CAC1C,MAAM,UAAU,aAAa,KAAK;CAClC,MAAM,SAASF,MAAM,kBAAkB;AACrC,MAAI,CAAC,aAAa,WAAW,CAAC,YAAY,QACxC;EAEF,MAAM,SAAS;GACb;GACA;GACA,YAAY;GACb;AACD,MAAI,YAAY,QACd,QAAO,WAAW,YAAY;AAEhC,kBAAgB,aAAa,SAAS,YAAY,SAAS,OAAO,CAAC,MAAK,WAAQ;GAC9E,MAAM,WAAW;IACf,GAAGG;IAKH,cAAc,QAAQ,YAAY;IACnC;AACD,OAAI,aAAa,WAAW,CAAC,UAAU,QAAQ,SAAS,SAAS,EAAE;AACjE,YAAQ,UAAU;AAClB,cAAS,gBAAgB;AACvB,aAAQ,SAAS;MACjB;;IAEJ;IACD;EAAC;EAAkB;EAAW;EAAU;EAAa;EAAQ,CAAC;AACjE,aAAY;AACV,MAAI,SAAS,SAAS,QAAQ,QAAQ,cAAc;AAClD,WAAQ,QAAQ,eAAe;AAC/B,YAAQ,YAAS;IACf,GAAGA;IACH,cAAc;IACf,EAAE;;IAEJ,CAAC,KAAK,CAAC;CACV,MAAM,eAAeH,MAAM,OAAO,MAAM;AACxC,aAAY;AACV,eAAa,UAAU;AACvB,eAAa;AACX,gBAAa,UAAU;;IAExB,EAAE,CAAC;AACN,aAAY;AACV,MAAI,YAAa,cAAa,UAAU;AACxC,MAAI,WAAY,aAAY,UAAU;AACtC,MAAI,eAAe,YAAY;AAC7B,OAAI,wBAAwB,QAC1B,QAAO,wBAAwB,QAAQ,aAAa,YAAY,OAAO;AAEzE,WAAQ;;IAET;EAAC;EAAa;EAAY;EAAQ;EAAyB;EAAwB,CAAC;CACvF,MAAM,OAAOA,MAAM,eAAe;EAChC,WAAW;EACX,UAAU;EACV;EACA;EACD,GAAG,CAAC,cAAc,YAAY,CAAC;CAChC,MAAM,WAAWA,MAAM,eAAe;EACpC,WAAW;EACX,UAAU;EACX,GAAG,CAAC,aAAa,WAAW,CAAC;CAC9B,MAAM,iBAAiBA,MAAM,cAAc;EACzC,MAAM,gBAAgB;GACpB,UAAU;GACV,MAAM;GACN,KAAK;GACN;AACD,MAAI,CAAC,SAAS,SACZ,QAAO;EAET,MAAM,IAAI,WAAW,SAAS,UAAU,KAAK,EAAE;EAC/C,MAAM,IAAI,WAAW,SAAS,UAAU,KAAK,EAAE;AAC/C,MAAI,UACF,QAAO;GACL,GAAG;GACH,WAAW,eAAe,IAAI,SAAS,IAAI;GAC3C,GAAI,OAAO,SAAS,SAAS,IAAI,OAAO,EACtC,YAAY,aACb;GACF;AAEH,SAAO;GACL,UAAU;GACV,MAAM;GACN,KAAK;GACN;IACA;EAAC;EAAU;EAAW,SAAS;EAAU,KAAK;EAAG,KAAK;EAAE,CAAC;AAC5D,QAAOA,MAAM,eAAe;EAC1B,GAAG;EACH;EACA;EACA;EACA;EACD,GAAG;EAAC;EAAM;EAAQ;EAAM;EAAU;EAAe,CAAC;;AASrD,IAAMI,aAAU,cAAW;CACzB,SAAS,MAAM,OAAO;AACpB,SAAO,EAAE,CAAC,eAAe,KAAK,OAAO,UAAU;;AAEjD,QAAO;EACL,MAAM;EACN,SAAA;EACA,GAAG,OAAO;GACR,MAAM,EACJ,SACA,YACE,OAAOH,cAAY,aAAaA,UAAQ,MAAM,GAAGA;AACrD,OAAI,WAAW,MAAM,QAAQ,EAAE;AAC7B,QAAI,QAAQ,WAAW,KACrB,QAAOI,QAAQ;KACb,SAAS,QAAQ;KACjB;KACD,CAAC,CAAC,GAAG,MAAM;AAEd,WAAO,EAAE;;AAEX,OAAI,QACF,QAAOA,QAAQ;IACb;IACA;IACD,CAAC,CAAC,GAAG,MAAM;AAEd,UAAO,EAAE;;EAEZ;;AAUH,IAAM,UAAU,WAAS,UAAU;CACjC,GAAG,SAASJ,UAAQ;CACpB,SAAS,CAACA,WAAS,KAAK;CACzB;AAOD,IAAM,SAAS,WAAS,UAAU;CAChC,GAAG,QAAQA,UAAQ;CACnB,SAAS,CAACA,WAAS,KAAK;CACzB;AAKD,IAAM,cAAc,WAAS,UAAU;CACrC,GAAG,aAAaA,UAAQ;CACxB,SAAS,CAACA,WAAS,KAAK;CACzB;AAQD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAQD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAkBD,IAAM,QAAQ,WAAS,UAAU;CAC/B,GAAG,OAAOA,UAAQ;CAClB,SAAS,CAACA,WAAS,KAAK;CACzB;AAkBD,IAAM,SAAS,WAAS,UAAU;CAChC,GAAGG,UAAQH,UAAQ;CACnB,SAAS,CAACA,WAAS,KAAK;CACzB;ACxVD,IAAIK,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AChCN,IAAI,OAAO;AACX,IAAIE,UAAQC,MAAM,YAAY,OAAO,iBAAiB;CACpD,MAAM,EAAE,UAAU,QAAQ,IAAI,SAAS,GAAG,GAAG,eAAe;AAC5D,QAAuB,iBAAA,GAAA,kBAAA,KACrBC,YAAU,KACV;EACE,GAAG;EACH,KAAK;EACL;EACA;EACA,SAAS;EACT,qBAAqB;EACrB,UAAU,MAAM,UAAU,WAA2B,iBAAA,GAAA,kBAAA,KAAI,WAAW,EAAE,QAAQ,kBAAkB,CAAC;EAClG,CACF;EACD;AACF,QAAM,cAAc;AACpB,IAAI,OAAOF;ACFX,SAASG,qBAAmB,WAAW,yBAAyB,EAAE,EAAE;CAClE,IAAI,kBAAkB,EAAE;CACxB,SAAS,eAAe,mBAAmB,gBAAgB;EACzD,MAAM,cAAcC,MAAM,cAAc,eAAe;EACvD,MAAMC,UAAQ,gBAAgB;AAC9B,oBAAkB,CAAC,GAAG,iBAAiB,eAAe;EACtD,MAAM,YAAY,UAAU;GAC1B,MAAM,EAAE,OAAO,UAAU,GAAG,YAAY;GACxC,MAAM,UAAU,QAAQ,aAAaA,YAAU;GAC/C,MAAM,QAAQD,MAAM,cAAc,SAAS,OAAO,OAAO,QAAQ,CAAC;AAClE,UAAuB,iBAAA,GAAA,kBAAA,KAAI,QAAQ,UAAU;IAAE;IAAO;IAAU,CAAC;;AAEnE,WAAS,cAAc,oBAAoB;EAC3C,SAAS,YAAY,cAAc,OAAO;GACxC,MAAM,UAAU,QAAQ,aAAaC,YAAU;GAC/C,MAAM,UAAUD,MAAM,WAAW,QAAQ;AACzC,OAAI,QAAS,QAAO;AACpB,OAAI,mBAAmB,KAAK,EAAG,QAAO;AACtC,SAAM,IAAI,MAAM,KAAK,aAAa,2BAA2B,kBAAkB,IAAI;;AAErF,SAAO,CAAC,UAAU,YAAY;;CAEhC,MAAM,oBAAoB;EACxB,MAAM,gBAAgB,gBAAgB,KAAK,mBAAmB;AAC5D,UAAOA,MAAM,cAAc,eAAe;IAC1C;AACF,SAAO,SAAS,SAAS,OAAO;GAC9B,MAAM,WAAW,QAAQ,cAAc;AACvC,UAAOA,MAAM,eACJ,GAAG,UAAU,cAAc;IAAE,GAAG;KAAQ,YAAY;IAAU,EAAE,GACvE,CAAC,OAAO,SAAS,CAClB;;;AAGL,aAAY,YAAY;AACxB,QAAO,CAAC,gBAAgB,qBAAqB,aAAa,GAAG,uBAAuB,CAAC;;AAEvF,SAAS,qBAAqB,GAAG,QAAQ;CACvC,MAAM,YAAY,OAAO;AACzB,KAAI,OAAO,WAAW,EAAG,QAAO;CAChC,MAAM,oBAAoB;EACxB,MAAM,aAAa,OAAO,KAAK,kBAAkB;GAC/C,UAAU,cAAc;GACxB,WAAW,aAAa;GACzB,EAAE;AACH,SAAO,SAAS,kBAAkB,gBAAgB;GAChD,MAAM,aAAa,WAAW,QAAQ,aAAa,EAAE,UAAU,gBAAgB;IAE7E,MAAM,eADa,SAAS,eAAe,CACX,UAAU;AAC1C,WAAO;KAAE,GAAG;KAAa,GAAG;KAAc;MACzC,EAAE,CAAC;AACN,UAAOA,MAAM,eAAe,GAAG,UAAU,UAAU,cAAc,YAAY,GAAG,CAAC,WAAW,CAAC;;;AAGjG,aAAY,YAAY,UAAU;AAClC,QAAO;;AClDT,IAAIE,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACjCN,SAAS,QAAQ,SAAS;CACxB,MAAM,CAACE,QAAM,WAAWC,MAAM,SAAS,KAAK,EAAE;AAC9C,wBAAsB;AACpB,MAAI,SAAS;AACX,WAAQ;IAAE,OAAO,QAAQ;IAAa,QAAQ,QAAQ;IAAc,CAAC;GACrE,MAAM,iBAAiB,IAAI,gBAAgB,YAAY;AACrD,QAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB;AAEF,QAAI,CAAC,QAAQ,OACX;IAEF,MAAM,QAAQ,QAAQ;IACtB,IAAI;IACJ,IAAI;AACJ,QAAI,mBAAmB,OAAO;KAC5B,MAAM,kBAAkB,MAAM;KAC9B,MAAM,aAAa,MAAM,QAAQ,gBAAgB,GAAG,gBAAgB,KAAK;AACzE,aAAQ,WAAW;AACnB,cAAS,WAAW;WACf;AACL,aAAQ,QAAQ;AAChB,cAAS,QAAQ;;AAEnB,YAAQ;KAAE;KAAO;KAAQ,CAAC;KAC1B;AACF,kBAAe,QAAQ,SAAS,EAAE,KAAK,cAAc,CAAC;AACtD,gBAAa,eAAe,UAAU,QAAQ;QAE9C,SAAQ,KAAK,EAAE;IAEhB,CAAC,QAAQ,CAAC;AACb,QAAOD;;ACVT,IAAI,cAAc;AAClB,IAAI,CAAC,qBAAqB,qBAAqBE,qBAAmB,YAAY;AAC9E,IAAI,CAAC,gBAAgB,oBAAoB,oBAAoB,YAAY;AACzE,IAAI,UAAU,UAAU;CACtB,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,CAAC,QAAQ,aAAaC,MAAM,SAAS,KAAK;AAChD,QAAuB,iBAAA,GAAA,kBAAA,KAAI,gBAAgB;EAAE,OAAO;EAAe;EAAQ,gBAAgB;EAAW;EAAU,CAAC;;AAEnH,OAAO,cAAc;AACrB,IAAIC,gBAAc;AAClB,IAAI,eAAeD,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,eAAe,YAAY,GAAG,gBAAgB;CACtD,MAAM,UAAU,iBAAiBC,eAAa,cAAc;CAC5D,MAAM,MAAMD,MAAM,OAAO,KAAK;CAC9B,MAAM,eAAe,gBAAgB,cAAc,IAAI;CACvD,MAAM,YAAYA,MAAM,OAAO,KAAK;AACpC,OAAM,gBAAgB;EACpB,MAAM,iBAAiB,UAAU;AACjC,YAAU,UAAU,YAAY,WAAW,IAAI;AAC/C,MAAI,mBAAmB,UAAU,QAC/B,SAAQ,eAAe,UAAU,QAAQ;GAE3C;AACF,QAAO,aAAa,OAAuB,iBAAA,GAAA,kBAAA,KAAIE,YAAU,KAAK;EAAE,GAAG;EAAa,KAAK;EAAc,CAAC;EAEvG;AACD,aAAa,cAAcD;AAC3B,IAAIE,iBAAe;AACnB,IAAI,CAAC,uBAAuB,qBAAqB,oBAAoBA,eAAa;AAClF,IAAI,gBAAgBH,MAAM,YACvB,OAAO,iBAAiB;CACvB,MAAM,EACJ,eACA,OAAO,UACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,eAAe,GACf,kBAAkB,MAClB,oBAAoB,EAAE,EACtB,kBAAkB,uBAAuB,GACzC,SAAS,WACT,mBAAmB,OACnB,yBAAyB,aACzB,UACA,GAAG,iBACD;CACJ,MAAM,UAAU,iBAAiBG,gBAAc,cAAc;CAC7D,MAAM,CAAC,SAAS,cAAcH,MAAM,SAAS,KAAK;CAClD,MAAM,eAAe,gBAAgB,eAAe,SAAS,WAAW,KAAK,CAAC;CAC9E,MAAM,CAACI,SAAO,YAAYJ,MAAM,SAAS,KAAK;CAC9C,MAAM,YAAY,QAAQI,QAAM;CAChC,MAAM,aAAa,WAAW,SAAS;CACvC,MAAM,cAAc,WAAW,UAAU;CACzC,MAAM,mBAAmB,QAAQ,UAAU,WAAW,MAAM,QAAQ;CACpE,MAAM,mBAAmB,OAAO,yBAAyB,WAAW,uBAAuB;EAAE,KAAK;EAAG,OAAO;EAAG,QAAQ;EAAG,MAAM;EAAG,GAAG;EAAsB;CAC5J,MAAM,WAAW,MAAM,QAAQ,kBAAkB,GAAG,oBAAoB,CAAC,kBAAkB;CAC3F,MAAM,wBAAwB,SAAS,SAAS;CAChD,MAAM,wBAAwB;EAC5B,SAAS;EACT,UAAU,SAAS,OAAO,UAAU;EAEpC,aAAa;EACd;CACD,MAAM,EAAE,MAAM,gBAAgB,WAAW,cAAc,mBAAmB,YAAY;EAEpF,UAAU;EACV,WAAW;EACX,uBAAuB,GAAG,SAAS;AAIjC,UAHgB,WAAW,GAAG,MAAM,EAClC,gBAAgB,2BAA2B,UAC5C,CAAC;;EAGJ,UAAU,EACR,WAAW,QAAQ,QACpB;EACD,YAAY;GACV,OAAO;IAAE,UAAU,aAAa;IAAa,eAAe;IAAa,CAAC;GAC1E,mBAAmB,MAAM;IACvB,UAAU;IACV,WAAW;IACX,SAAS,WAAW,YAAY,YAAY,GAAG,KAAK;IACpD,GAAG;IACJ,CAAC;GACF,mBAAmB,KAAK,EAAE,GAAG,uBAAuB,CAAC;GACrD,KAAK;IACH,GAAG;IACH,QAAQ,EAAE,UAAU,OAAO,gBAAgB,sBAAsB;KAC/D,MAAM,EAAE,OAAO,aAAa,QAAQ,iBAAiB,MAAM;KAC3D,MAAM,eAAe,SAAS,SAAS;AACvC,kBAAa,YAAY,kCAAkC,GAAG,eAAe,IAAI;AACjF,kBAAa,YAAY,mCAAmC,GAAG,gBAAgB,IAAI;AACnF,kBAAa,YAAY,+BAA+B,GAAG,YAAY,IAAI;AAC3E,kBAAa,YAAY,gCAAgC,GAAG,aAAa,IAAI;;IAEhF,CAAC;GACFA,WAASC,MAAgB;IAAE,SAASD;IAAO,SAAS;IAAc,CAAC;GACnE,gBAAgB;IAAE;IAAY;IAAa,CAAC;GAC5C,oBAAoB,KAAK;IAAE,UAAU;IAAmB,GAAG;IAAuB,CAAC;GACpF;EACF,CAAC;CACF,MAAM,CAAC,YAAY,eAAe,6BAA6B,UAAU;CACzE,MAAM,eAAeE,iBAAe,SAAS;AAC7C,wBAAsB;AACpB,MAAI,aACF,iBAAgB;IAEjB,CAAC,cAAc,aAAa,CAAC;CAChC,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,oBAAoB,eAAe,OAAO,iBAAiB;CACjE,MAAM,CAAC,eAAe,oBAAoBN,MAAM,UAAU;AAC1D,wBAAsB;AACpB,MAAI,QAAS,kBAAiB,OAAO,iBAAiB,QAAQ,CAAC,OAAO;IACrE,CAAC,QAAQ,CAAC;AACb,QAAuB,iBAAA,GAAA,kBAAA,KACrB,OACA;EACE,KAAK,KAAK;EACV,qCAAqC;EACrC,OAAO;GACL,GAAG;GACH,WAAW,eAAe,eAAe,YAAY;GAErD,UAAU;GACV,QAAQ;IACP,oCAAoC,CACnC,eAAe,iBAAiB,GAChC,eAAe,iBAAiB,EACjC,CAAC,KAAK,IAAI;GAIX,GAAG,eAAe,MAAM,mBAAmB;IACzC,YAAY;IACZ,eAAe;IAChB;GACF;EACD,KAAK,MAAM;EACX,UAA0B,iBAAA,GAAA,kBAAA,KACxB,uBACA;GACE,OAAO;GACP;GACA,eAAe;GACf;GACA;GACA,iBAAiB;GACjB,UAA0B,iBAAA,GAAA,kBAAA,KACxBE,YAAU,KACV;IACE,aAAa;IACb,cAAc;IACd,GAAG;IACH,KAAK;IACL,OAAO;KACL,GAAG,aAAa;KAGhB,WAAW,CAAC,eAAe,SAAS,KAAK;KAC1C;IACF,CACF;GACF,CACF;EACF,CACF;EAEJ;AACD,cAAc,cAAcC;AAC5B,IAAII,eAAa;AACjB,IAAI,gBAAgB;CAClB,KAAK;CACL,OAAO;CACP,QAAQ;CACR,MAAM;CACP;AACD,IAAI,cAAcP,MAAM,WAAW,SAAS,aAAa,OAAO,cAAc;CAC5E,MAAM,EAAE,eAAe,GAAG,eAAe;CACzC,MAAM,iBAAiB,kBAAkBO,cAAY,cAAc;CACnE,MAAM,WAAW,cAAc,eAAe;AAC9C,QAIkB,iBAAA,GAAA,kBAAA,KACd,QACA;EACE,KAAK,eAAe;EACpB,OAAO;GACL,UAAU;GACV,MAAM,eAAe;GACrB,KAAK,eAAe;IACnB,WAAW;GACZ,iBAAiB;IACf,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACP,CAAC,eAAe;GACjB,WAAW;IACT,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACP,CAAC,eAAe;GACjB,YAAY,eAAe,kBAAkB,WAAW,KAAK;GAC9D;EACD,UAA0B,iBAAA,GAAA,kBAAA,KACxBC,MACA;GACE,GAAG;GACH,KAAK;GACL,OAAO;IACL,GAAG,WAAW;IAEd,SAAS;IACV;GACF,CACF;EACF,CACF;EAEH;AACF,YAAY,cAAcD;AAC1B,SAAS,UAAU,OAAO;AACxB,QAAO,UAAU;;AAEnB,IAAI,mBAAmB,eAAa;CAClC,MAAM;CACN,SAAA;CACA,GAAG,MAAM;EACP,MAAM,EAAE,WAAW,OAAO,mBAAmB;EAE7C,MAAM,gBADoB,eAAe,OAAO,iBAAiB;EAEjE,MAAM,aAAa,gBAAgB,IAAIE,UAAQ;EAC/C,MAAM,cAAc,gBAAgB,IAAIA,UAAQ;EAChD,MAAM,CAAC,YAAY,eAAe,6BAA6B,UAAU;EACzE,MAAM,eAAe;GAAE,OAAO;GAAM,QAAQ;GAAO,KAAK;GAAQ,CAAC;EACjE,MAAM,gBAAgB,eAAe,OAAO,KAAK,KAAK,aAAa;EACnE,MAAM,gBAAgB,eAAe,OAAO,KAAK,KAAK,cAAc;EACpE,IAAI,IAAI;EACR,IAAI,IAAI;AACR,MAAI,eAAe,UAAU;AAC3B,OAAI,gBAAgB,eAAe,GAAG,aAAa;AACnD,OAAI,GAAG,CAAC,YAAY;aACX,eAAe,OAAO;AAC/B,OAAI,gBAAgB,eAAe,GAAG,aAAa;AACnD,OAAI,GAAG,MAAM,SAAS,SAAS,YAAY;aAClC,eAAe,SAAS;AACjC,OAAI,GAAG,CAAC,YAAY;AACpB,OAAI,gBAAgB,eAAe,GAAG,aAAa;aAC1C,eAAe,QAAQ;AAChC,OAAI,GAAG,MAAM,SAAS,QAAQ,YAAY;AAC1C,OAAI,gBAAgB,eAAe,GAAG,aAAa;;AAErD,SAAO,EAAE,MAAM;GAAE;GAAG;GAAG,EAAE;;CAE5B;AACD,SAAS,6BAA6B,WAAW;CAC/C,MAAM,CAAC,MAAM,QAAQ,YAAY,UAAU,MAAM,IAAI;AACrD,QAAO,CAAC,MAAM,MAAM;;AAEtB,IAAIC,UAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AC7QZ,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;AC5BN,IAAIE,gBAAc;AAClB,IAAI,SAASC,MAAM,YAAY,OAAO,iBAAiB;CACrD,MAAM,EAAE,WAAW,eAAe,GAAG,gBAAgB;CACrD,MAAM,CAAC,SAAS,cAAcA,MAAM,SAAS,MAAM;AACnD,wBAAsB,WAAW,KAAK,EAAE,EAAE,CAAC;CAC3C,MAAM,YAAY,iBAAiB,WAAW,YAAY,UAAU;AACpE,QAAO,YAAYC,UAAAA,QAAS,aAA6B,iBAAA,GAAA,kBAAA,KAAIC,YAAU,KAAK;EAAE,GAAG;EAAa,KAAK;EAAc,CAAC,EAAE,UAAU,GAAG;EACjI;AACF,OAAO,cAAcH;ACPrB,SAAS,gBAAgB,cAAc,SAAS;AAC9C,QAAOI,MAAM,YAAY,OAAO,UAAU;AAExC,SADkB,QAAQ,OAAO,UACb;IACnB,aAAa;;AAIlB,IAAI,YAAY,UAAU;CACxB,MAAM,EAAE,SAAS,aAAa;CAC9B,MAAM,WAAW,YAAY,QAAQ;CACrC,MAAM,QAAQ,OAAO,aAAa,aAAa,SAAS,EAAE,SAAS,SAAS,WAAW,CAAC,GAAGC,MAAO,SAAS,KAAK,SAAS;CACzH,MAAM,MAAM,gBAAgB,SAAS,KAAK,cAAc,MAAM,CAAC;AAE/D,QADmB,OAAO,aAAa,cAClB,SAAS,YAAYA,MAAO,aAAa,OAAO,EAAE,KAAK,CAAC,GAAG;;AAElF,SAAS,cAAc;AACvB,SAAS,YAAY,SAAS;CAC5B,MAAM,CAAC,MAAM,WAAWA,MAAO,UAAU;CACzC,MAAM,YAAYA,MAAO,OAAO,KAAK;CACrC,MAAM,iBAAiBA,MAAO,OAAO,QAAQ;CAC7C,MAAM,uBAAuBA,MAAO,OAAO,OAAO;CAElD,MAAM,CAAC,OAAO,QAAQ,gBADD,UAAU,YAAY,aACS;EAClD,SAAS;GACP,SAAS;GACT,eAAe;GAChB;EACD,kBAAkB;GAChB,OAAO;GACP,eAAe;GAChB;EACD,WAAW,EACT,OAAO,WACR;EACF,CAAC;AACF,OAAO,gBAAgB;EACrB,MAAM,uBAAuB,iBAAiB,UAAU,QAAQ;AAChE,uBAAqB,UAAU,UAAU,YAAY,uBAAuB;IAC3E,CAAC,MAAM,CAAC;AACX,wBAAsB;EACpB,MAAM,SAAS,UAAU;EACzB,MAAM,aAAa,eAAe;AAElC,MAD0B,eAAe,SAClB;GACrB,MAAM,oBAAoB,qBAAqB;GAC/C,MAAM,uBAAuB,iBAAiB,OAAO;AACrD,OAAI,QACF,MAAK,QAAQ;YACJ,yBAAyB,UAAU,QAAQ,YAAY,OAChE,MAAK,UAAU;YAGX,cADgB,sBAAsB,qBAExC,MAAK,gBAAgB;OAErB,MAAK,UAAU;AAGnB,kBAAe,UAAU;;IAE1B,CAAC,SAAS,KAAK,CAAC;AACnB,wBAAsB;AACpB,MAAI,MAAM;GACR,IAAI;GACJ,MAAM,cAAc,KAAK,cAAc,eAAe;GACtD,MAAM,sBAAsB,UAAU;IAEpC,MAAM,qBADuB,iBAAiB,UAAU,QAAQ,CAChB,SAAS,IAAI,OAAO,MAAM,cAAc,CAAC;AACzF,QAAI,MAAM,WAAW,QAAQ,oBAAoB;AAC/C,UAAK,gBAAgB;AACrB,SAAI,CAAC,eAAe,SAAS;MAC3B,MAAM,kBAAkB,KAAK,MAAM;AACnC,WAAK,MAAM,oBAAoB;AAC/B,kBAAY,YAAY,iBAAiB;AACvC,WAAI,KAAK,MAAM,sBAAsB,WACnC,MAAK,MAAM,oBAAoB;QAEjC;;;;GAIR,MAAM,wBAAwB,UAAU;AACtC,QAAI,MAAM,WAAW,KACnB,sBAAqB,UAAU,iBAAiB,UAAU,QAAQ;;AAGtE,QAAK,iBAAiB,kBAAkB,qBAAqB;AAC7D,QAAK,iBAAiB,mBAAmB,mBAAmB;AAC5D,QAAK,iBAAiB,gBAAgB,mBAAmB;AACzD,gBAAa;AACX,gBAAY,aAAa,UAAU;AACnC,SAAK,oBAAoB,kBAAkB,qBAAqB;AAChE,SAAK,oBAAoB,mBAAmB,mBAAmB;AAC/D,SAAK,oBAAoB,gBAAgB,mBAAmB;;QAG9D,MAAK,gBAAgB;IAEtB,CAAC,MAAM,KAAK,CAAC;AAChB,QAAO;EACL,WAAW,CAAC,WAAW,mBAAmB,CAAC,SAAS,MAAM;EAC1D,KAAKA,MAAO,aAAa,UAAU;AACjC,aAAU,UAAU,QAAQ,iBAAiB,MAAM,GAAG;AACtD,WAAQ,MAAM;KACb,EAAE,CAAC;EACP;;AAEH,SAAS,iBAAiB,QAAQ;AAChC,QAAO,QAAQ,iBAAiB;;AAElC,SAAS,cAAc,SAAS;CAC9B,IAAI,SAAS,OAAO,yBAAyB,QAAQ,OAAO,MAAM,EAAE;CACpE,IAAI,UAAU,UAAU,oBAAoB,UAAU,OAAO;AAC7D,KAAI,QACF,QAAO,QAAQ;AAEjB,UAAS,OAAO,yBAAyB,SAAS,MAAM,EAAE;AAC1D,WAAU,UAAU,oBAAoB,UAAU,OAAO;AACzD,KAAI,QACF,QAAO,QAAQ,MAAM;AAEvB,QAAO,QAAQ,MAAM,OAAO,QAAQ;;AC3GtC,IAAIC,cAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMC,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACjCN,IAAI,qBAAqBE,MAAM,uBAAuB,MAAM,CAAC,UAAU,KAAKC;AAC5E,SAAS,qBAAqB,EAC5B,MACA,aACA,iBAAiB,IAEjB,UACC;CACD,MAAM,CAAC,kBAAkB,qBAAqB,eAAe,qBAAqB;EAChF;EACA;EACD,CAAC;CACF,MAAM,eAAe,SAAS,KAAK;CACnC,MAAM,QAAQ,eAAe,OAAO;CAC1B;EACR,MAAM,kBAAkBD,MAAM,OAAO,SAAS,KAAK,EAAE;AACrD,QAAM,gBAAgB;GACpB,MAAM,gBAAgB,gBAAgB;AACtC,OAAI,kBAAkB,cAAc;IAClC,MAAM,OAAO,gBAAgB,eAAe;IAC5C,MAAM,KAAK,eAAe,eAAe;AACzC,YAAQ,KACN,GAAG,OAAO,oBAAoB,KAAK,MAAM,GAAG,4KAC7C;;AAEH,mBAAgB,UAAU;KACzB,CAAC,cAAc,OAAO,CAAC;;AAe5B,QAAO,CAAC,OAbSA,MAAM,aACpB,cAAc;AACb,MAAI,cAAc;GAChB,MAAM,SAAS,WAAW,UAAU,GAAG,UAAU,KAAK,GAAG;AACzD,OAAI,WAAW,KACb,aAAY,UAAU,OAAO;QAG/B,qBAAoB,UAAU;IAGlC;EAAC;EAAc;EAAM;EAAqB;EAAY,CACvD,CACuB;;AAE1B,SAAS,qBAAqB,EAC5B,aACA,YACC;CACD,MAAM,CAAC,OAAO,YAAYA,MAAM,SAAS,YAAY;CACrD,MAAM,eAAeA,MAAM,OAAO,MAAM;CACxC,MAAM,cAAcA,MAAM,OAAO,SAAS;AAC1C,0BAAyB;AACvB,cAAY,UAAU;IACrB,CAAC,SAAS,CAAC;AACd,OAAM,gBAAgB;AACpB,MAAI,aAAa,YAAY,OAAO;AAClC,eAAY,UAAU,MAAM;AAC5B,gBAAa,UAAU;;IAExB,CAAC,OAAO,aAAa,CAAC;AACzB,QAAO;EAAC;EAAO;EAAU;EAAY;;AAEvC,SAAS,WAAW,OAAO;AACzB,QAAO,OAAO,UAAU;;ACjE1B,IAAI,mBAAmB,SAAU,gBAAgB;AAC7C,KAAI,OAAO,aAAa,YACpB,QAAO;AAGX,SADmB,MAAM,QAAQ,eAAe,GAAG,eAAe,KAAK,gBACnD,cAAc;;AAEtC,IAAI,6BAAa,IAAI,SAAS;AAC9B,IAAI,oCAAoB,IAAI,SAAS;AACrC,IAAI,YAAY,EAAE;AAClB,IAAI,YAAY;AAChB,IAAI,aAAa,SAAU,MAAM;AAC7B,QAAO,SAAS,KAAK,QAAQ,WAAW,KAAK,WAAW;;AAE5D,IAAI,iBAAiB,SAAU,QAAQ,SAAS;AAC5C,QAAO,QACF,IAAI,SAAU,QAAQ;AACvB,MAAI,OAAO,SAAS,OAAO,CACvB,QAAO;EAEX,IAAI,kBAAkB,WAAW,OAAO;AACxC,MAAI,mBAAmB,OAAO,SAAS,gBAAgB,CACnD,QAAO;AAEX,UAAQ,MAAM,eAAe,QAAQ,2BAA2B,QAAQ,kBAAkB;AAC1F,SAAO;GACT,CACG,OAAO,SAAU,GAAG;AAAE,SAAO,QAAQ,EAAE;GAAI;;AAUpD,IAAI,yBAAyB,SAAU,gBAAgB,YAAY,YAAY,kBAAkB;CAC7F,IAAI,UAAU,eAAe,YAAY,MAAM,QAAQ,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;AAC3G,KAAI,CAAC,UAAU,YACX,WAAU,8BAAc,IAAI,SAAS;CAEzC,IAAI,gBAAgB,UAAU;CAC9B,IAAI,cAAc,EAAE;CACpB,IAAI,iCAAiB,IAAI,KAAK;CAC9B,IAAI,iBAAiB,IAAI,IAAI,QAAQ;CACrC,IAAI,OAAO,SAAU,IAAI;AACrB,MAAI,CAAC,MAAM,eAAe,IAAI,GAAG,CAC7B;AAEJ,iBAAe,IAAI,GAAG;AACtB,OAAK,GAAG,WAAW;;AAEvB,SAAQ,QAAQ,KAAK;CACrB,IAAI,OAAO,SAAU,QAAQ;AACzB,MAAI,CAAC,UAAU,eAAe,IAAI,OAAO,CACrC;AAEJ,QAAM,UAAU,QAAQ,KAAK,OAAO,UAAU,SAAU,MAAM;AAC1D,OAAI,eAAe,IAAI,KAAK,CACxB,MAAK,KAAK;OAGV,KAAI;IACA,IAAI,OAAO,KAAK,aAAa,iBAAiB;IAC9C,IAAI,gBAAgB,SAAS,QAAQ,SAAS;IAC9C,IAAI,gBAAgB,WAAW,IAAI,KAAK,IAAI,KAAK;IACjD,IAAI,eAAe,cAAc,IAAI,KAAK,IAAI,KAAK;AACnD,eAAW,IAAI,MAAM,aAAa;AAClC,kBAAc,IAAI,MAAM,YAAY;AACpC,gBAAY,KAAK,KAAK;AACtB,QAAI,iBAAiB,KAAK,cACtB,mBAAkB,IAAI,MAAM,KAAK;AAErC,QAAI,gBAAgB,EAChB,MAAK,aAAa,YAAY,OAAO;AAEzC,QAAI,CAAC,cACD,MAAK,aAAa,kBAAkB,OAAO;YAG5C,GAAG;AACN,YAAQ,MAAM,mCAAmC,MAAM,EAAE;;IAGnE;;AAEN,MAAK,WAAW;AAChB,gBAAe,OAAO;AACtB;AACA,QAAO,WAAY;AACf,cAAY,QAAQ,SAAU,MAAM;GAChC,IAAI,eAAe,WAAW,IAAI,KAAK,GAAG;GAC1C,IAAI,cAAc,cAAc,IAAI,KAAK,GAAG;AAC5C,cAAW,IAAI,MAAM,aAAa;AAClC,iBAAc,IAAI,MAAM,YAAY;AACpC,OAAI,CAAC,cAAc;AACf,QAAI,CAAC,kBAAkB,IAAI,KAAK,CAC5B,MAAK,gBAAgB,iBAAiB;AAE1C,sBAAkB,OAAO,KAAK;;AAElC,OAAI,CAAC,YACD,MAAK,gBAAgB,WAAW;IAEtC;AACF;AACA,MAAI,CAAC,WAAW;AAEZ,gCAAa,IAAI,SAAS;AAC1B,gCAAa,IAAI,SAAS;AAC1B,uCAAoB,IAAI,SAAS;AACjC,eAAY,EAAE;;;;AAW1B,IAAW,aAAa,SAAU,gBAAgB,YAAY,YAAY;AACtE,KAAI,eAAe,KAAK,EAAK,cAAa;CAC1C,IAAI,UAAU,MAAM,KAAK,MAAM,QAAQ,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;CAC3F,IAAI,mBAAmB,cAAc,iBAAiB,eAAe;AACrE,KAAI,CAAC,iBACD,QAAO,WAAY;AAAE,SAAO;;AAIhC,SAAQ,KAAK,MAAM,SAAS,MAAM,KAAK,iBAAiB,iBAAiB,sBAAsB,CAAC,CAAC;AACjG,QAAO,uBAAuB,SAAS,kBAAkB,YAAY,cAAc;;ACtGvF,IAAW,WAAW,WAAW;AAC/B,YAAW,OAAO,UAAU,SAASE,WAAS,GAAG;AAC7C,OAAK,IAAI,GAAG,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AACjD,OAAI,UAAU;AACd,QAAK,IAAIC,OAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAGA,IAAE,CAAE,GAAEA,OAAK,EAAEA;;AAE9E,SAAO;;AAEX,QAAO,SAAS,MAAM,MAAM,UAAU;;AAGxC,SAAgB,OAAO,GAAG,GAAG;CAC3B,IAAI,IAAI,EAAE;AACV,MAAK,IAAIA,OAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAGA,IAAE,IAAI,EAAE,QAAQA,IAAE,GAAG,EAC9E,GAAEA,OAAK,EAAEA;AACb,KAAI,KAAK,QAAQ,OAAO,OAAO,0BAA0B;OAChD,IAAI,IAAI,GAAGA,MAAI,OAAO,sBAAsB,EAAE,EAAE,IAAIA,IAAE,QAAQ,IAC/D,KAAI,EAAE,QAAQA,IAAE,GAAG,GAAG,KAAK,OAAO,UAAU,qBAAqB,KAAK,GAAGA,IAAE,GAAG,CAC1E,GAAEA,IAAE,MAAM,EAAEA,IAAE;;AAE1B,QAAO;;AAkKT,SAAgB,cAAc,IAAI,MAAM,MAAM;AAC5C,KAAI,QAAQ,UAAU,WAAW;OAAQ,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,IAC5E,KAAI,MAAM,EAAE,KAAK,OAAO;AACpB,OAAI,CAAC,GAAI,MAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,EAAE;AACpD,MAAG,KAAK,KAAK;;;AAGrB,QAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,KAAK,CAAC;;AC5N1D,IAAW,qBAAqB;AAChC,IAAW,qBAAqB;AAChC,IAAW,wBAAwB;AAKnC,IAAW,yBAAyB;ACMpC,SAAgB,UAAU,KAAK,OAAO;AAClC,KAAI,OAAO,QAAQ,WACf,KAAI,MAAM;UAEL,IACL,KAAI,UAAU;AAElB,QAAO;;ACLX,SAAgB,eAAe,cAAc,UAAU;CACnD,IAAI,OAAA,GAAA,MAAA,UAAe,WAAY;AAAE,SAAQ;GAErC,OAAO;GAEG;GAEV,QAAQ;IACJ,IAAI,UAAU;AACV,YAAO,IAAI;;IAEf,IAAI,QAAQ,OAAO;KACf,IAAI,OAAO,IAAI;AACf,SAAI,SAAS,OAAO;AAChB,UAAI,QAAQ;AACZ,UAAI,SAAS,OAAO,KAAK;;;IAGpC;GACJ;GAAK,CAAC;AAEP,KAAI,WAAW;AACf,QAAO,IAAI;;AClCf,IAAI,4BAA4B,OAAO,WAAW,cAAcC,MAAM,kBAAkBA,MAAM;AAC9F,IAAI,gCAAgB,IAAI,SAAS;AAejC,SAAgB,aAAa,MAAM,cAAc;CAC7C,IAAI,cAAc,eAAe,gBAAgB,MAAM,SAAU,UAAU;AACvE,SAAO,KAAK,QAAQ,SAAU,KAAK;AAAE,UAAO,UAAU,KAAK,SAAS;IAAI;GAC1E;AAEF,2BAA0B,WAAY;EAClC,IAAI,WAAW,cAAc,IAAI,YAAY;AAC7C,MAAI,UAAU;GACV,IAAI,aAAa,IAAI,IAAI,SAAS;GAClC,IAAI,aAAa,IAAI,IAAI,KAAK;GAC9B,IAAI,YAAY,YAAY;AAC5B,cAAW,QAAQ,SAAU,KAAK;AAC9B,QAAI,CAAC,WAAW,IAAI,IAAI,CACpB,WAAU,KAAK,KAAK;KAE1B;AACF,cAAW,QAAQ,SAAU,KAAK;AAC9B,QAAI,CAAC,WAAW,IAAI,IAAI,CACpB,WAAU,KAAK,UAAU;KAE/B;;AAEN,gBAAc,IAAI,aAAa,KAAK;IACrC,CAAC,KAAK,CAAC;AACV,QAAO;;AC1CX,SAAS,KAAK,GAAG;AACb,QAAO;;AAEX,SAAS,kBAAkB,UAAU,YAAY;AAC7C,KAAI,eAAe,KAAK,EAAK,cAAa;CAC1C,IAAI,SAAS,EAAE;CACf,IAAI,WAAW;AA0Df,QAzDa;EACT,MAAM,WAAY;AACd,OAAI,SACA,OAAM,IAAI,MAAM,mGAAmG;AAEvH,OAAI,OAAO,OACP,QAAO,OAAO,OAAO,SAAS;AAElC,UAAO;;EAEX,WAAW,SAAU,MAAM;GACvB,IAAI,OAAO,WAAW,MAAM,SAAS;AACrC,UAAO,KAAK,KAAK;AACjB,UAAO,WAAY;AACf,aAAS,OAAO,OAAO,SAAU,GAAG;AAAE,YAAO,MAAM;MAAQ;;;EAGnE,kBAAkB,SAAU,IAAI;AAC5B,cAAW;AACX,UAAO,OAAO,QAAQ;IAClB,IAAI,MAAM;AACV,aAAS,EAAE;AACX,QAAI,QAAQ,GAAG;;AAEnB,YAAS;IACL,MAAM,SAAU,GAAG;AAAE,YAAO,GAAG,EAAE;;IACjC,QAAQ,WAAY;AAAE,YAAO;;IAChC;;EAEL,cAAc,SAAU,IAAI;AACxB,cAAW;GACX,IAAI,eAAe,EAAE;AACrB,OAAI,OAAO,QAAQ;IACf,IAAI,MAAM;AACV,aAAS,EAAE;AACX,QAAI,QAAQ,GAAG;AACf,mBAAe;;GAEnB,IAAI,eAAe,WAAY;IAC3B,IAAIC,QAAM;AACV,mBAAe,EAAE;AACjB,UAAI,QAAQ,GAAG;;GAEnB,IAAI,QAAQ,WAAY;AAAE,WAAO,QAAQ,SAAS,CAAC,KAAK,aAAa;;AACrE,UAAO;AACP,YAAS;IACL,MAAM,SAAU,GAAG;AACf,kBAAa,KAAK,EAAE;AACpB,YAAO;;IAEX,QAAQ,SAAU,QAAQ;AACtB,oBAAe,aAAa,OAAO,OAAO;AAC1C,YAAO;;IAEd;;EAER;;AAQL,SAAgB,oBAAoB,WAAS;AACzC,KAAIC,cAAY,KAAK,EAAK,aAAU,EAAE;CACtC,IAAI,SAAS,kBAAkB,KAAK;AACpC,QAAO,UAAU,SAAS;EAAE,OAAO;EAAM,KAAK;EAAO,EAAEA,UAAQ;AAC/D,QAAO;;AC1EX,IAAI,UAAU,SAAU,IAAI;CACxB,IAAI,UAAU,GAAG,SAAS,OAAO,OAAO,IAAI,CAAC,UAAU,CAAC;AACxD,KAAI,CAAC,QACD,OAAM,IAAI,MAAM,qEAAqE;CAEzF,IAAIC,WAAS,QAAQ,MAAM;AAC3B,KAAI,CAACA,SACD,OAAM,IAAI,MAAM,2BAA2B;AAE/C,QAAOC,MAAM,cAAcD,UAAQ,SAAS,EAAE,EAAE,KAAK,CAAC;;AAE1D,QAAQ,kBAAkB;AAC1B,SAAgB,cAAc,QAAQ,UAAU;AAC5C,QAAO,UAAU,SAAS;AAC1B,QAAO;;ACfX,IAAW,YAAY,qBAAqB;ACI5C,IAAI,UAAU,WAAY;AAM1B,IAAI,eAAeE,MAAM,WAAW,SAAU,OAAO,WAAW;CAC5D,IAAI,MAAMA,MAAM,OAAO,KAAK;CAC5B,IAAI,KAAKA,MAAM,SAAS;EACpB,iBAAiB;EACjB,gBAAgB;EAChB,oBAAoB;EACvB,CAAC,EAAE,YAAY,GAAG,IAAI,eAAe,GAAG;CACzC,IAAI,eAAe,MAAM,cAAc,WAAW,MAAM,UAAU,YAAY,MAAM,WAAW,kBAAkB,MAAM,iBAAiB,UAAU,MAAM,SAAS,SAAS,MAAM,QAAQ,UAAU,MAAM,SAAS,aAAa,MAAM,YAAY,cAAc,MAAM,aAAa,QAAQ,MAAM,OAAO,iBAAiB,MAAM,gBAAgB,KAAK,MAAM,IAAI,YAAY,OAAO,KAAK,IAAI,QAAQ,IAAI,UAAU,MAAM,SAAS,OAAO,OAAO,OAAO;EAAC;EAAgB;EAAY;EAAa;EAAmB;EAAW;EAAU;EAAW;EAAc;EAAe;EAAS;EAAkB;EAAM;EAAU,CAAC;CACxlB,IAAIC,YAAU;CACd,IAAI,eAAe,aAAa,CAAC,KAAK,UAAU,CAAC;CACjD,IAAI,iBAAiB,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU;AAC5D,QAAQD,MAAM,cAAcA,MAAM,UAAU,MACxC,WAAYA,MAAM,cAAcC,WAAS;EAAE,SAAS;EAA4B;EAAyB;EAAoB;EAAyB;EAAoB;EAAqB;EAAc,gBAAgB,CAAC,CAAC;EAAgB,SAAS;EAAc;EAAS,CAAC,EAChR,eAAgBD,MAAM,aAAaA,MAAM,SAAS,KAAK,SAAS,EAAE,SAAS,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,cAAc,CAAC,CAAC,GAAKA,MAAM,cAAc,WAAW,SAAS,EAAE,EAAE,gBAAgB;EAAa;EAAW,KAAK;EAAc,CAAC,EAAE,SAAS,CAAE;EAChQ;AACF,aAAa,eAAe;CACxB,SAAS;CACT,iBAAiB;CACjB,OAAO;CACV;AACD,aAAa,aAAa;CACtB,WAAW;CACX,WAAW;CACd;AClCD,IAAI;AAIJ,IAAW,WAAW,WAAY;AAC9B,KAAI,aACA,QAAO;AAEX,KAAI,OAAO,sBAAsB,YAC7B,QAAO;;ACRf,SAAS,eAAe;AACpB,KAAI,CAAC,SACD,QAAO;CACX,IAAI,MAAM,SAAS,cAAc,QAAQ;AACzC,KAAI,OAAO;CACX,IAAI,QAAQ,UAAU;AACtB,KAAI,MACA,KAAI,aAAa,SAAS,MAAM;AAEpC,QAAO;;AAEX,SAAS,aAAa,KAAK,KAAK;AAE5B,KAAI,IAAI,WAEJ,KAAI,WAAW,UAAU;KAGzB,KAAI,YAAY,SAAS,eAAe,IAAI,CAAC;;AAGrD,SAAS,eAAe,KAAK;AAEzB,EADW,SAAS,QAAQ,SAAS,qBAAqB,OAAO,CAAC,IAC7D,YAAY,IAAI;;AAEzB,IAAW,sBAAsB,WAAY;CACzC,IAAI,UAAU;CACd,IAAI,aAAa;AACjB,QAAO;EACH,KAAK,SAAU,OAAO;AAClB,OAAI,WAAW;QACN,aAAa,cAAc,EAAG;AAC/B,kBAAa,YAAY,MAAM;AAC/B,oBAAe,WAAW;;;AAGlC;;EAEJ,QAAQ,WAAY;AAChB;AACA,OAAI,CAAC,WAAW,YAAY;AACxB,eAAW,cAAc,WAAW,WAAW,YAAY,WAAW;AACtE,iBAAa;;;EAGxB;;ACnCL,IAAW,qBAAqB,WAAY;CACxC,IAAI,QAAQ,qBAAqB;AACjC,QAAO,SAAU,QAAQ,WAAW;AAChC,QAAM,UAAU,WAAY;AACxB,SAAM,IAAI,OAAO;AACjB,UAAO,WAAY;AACf,UAAM,QAAQ;;KAEnB,CAAC,UAAU,UAAU,CAAC;;;ACZjC,IAAW,iBAAiB,WAAY;CACpC,IAAI,WAAW,oBAAoB;CACnC,IAAI,QAAQ,SAAU,IAAI;EACtB,IAAI,SAAS,GAAG,QAAQ,UAAU,GAAG;AACrC,WAAS,QAAQ,QAAQ;AACzB,SAAO;;AAEX,QAAO;;ACdX,IAAW,UAAU;CACjB,MAAM;CACN,KAAK;CACL,OAAO;CACP,KAAK;CACR;AACD,IAAI,QAAQ,SAAU,GAAG;AAAE,QAAO,SAAS,KAAK,IAAI,GAAG,IAAI;;AAC3D,IAAI,YAAY,SAAU,SAAS;CAC/B,IAAI,KAAK,OAAO,iBAAiB,SAAS,KAAK;CAC/C,IAAI,OAAO,GAAG,YAAY,YAAY,gBAAgB;CACtD,IAAI,MAAM,GAAG,YAAY,YAAY,eAAe;CACpD,IAAI,QAAQ,GAAG,YAAY,YAAY,iBAAiB;AACxD,QAAO;EAAC,MAAM,KAAK;EAAE,MAAM,IAAI;EAAE,MAAM,MAAM;EAAC;;AAElD,IAAW,cAAc,SAAU,SAAS;AACxC,KAAI,YAAY,KAAK,EAAK,WAAU;AACpC,KAAI,OAAO,WAAW,YAClB,QAAO;CAEX,IAAI,UAAU,UAAU,QAAQ;CAChC,IAAI,gBAAgB,SAAS,gBAAgB;CAC7C,IAAI,cAAc,OAAO;AACzB,QAAO;EACH,MAAM,QAAQ;EACd,KAAK,QAAQ;EACb,OAAO,QAAQ;EACf,KAAK,KAAK,IAAI,GAAG,cAAc,gBAAgB,QAAQ,KAAK,QAAQ,GAAG;EAC1E;;ACvBL,IAAI,QAAQ,gBAAgB;AAC5B,IAAW,gBAAgB;AAI3B,IAAI,YAAY,SAAU,IAAI,eAAe,SAAS,WAAW;CAC7D,IAAI,OAAO,GAAG,MAAM,MAAM,GAAG,KAAK,QAAQ,GAAG,OAAO,MAAM,GAAG;AAC7D,KAAI,YAAY,KAAK,EAAK,WAAU;AACpC,QAAO,QAAQ,OAAO,uBAAuB,2BAA2B,CAAC,OAAO,WAAW,wBAAwB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,eAAe,6BAA6B,CAAC,OAAO,WAAW,6CAA6C,CAAC,OAAO;EACnS,iBAAiB,sBAAsB,OAAO,WAAW,IAAI;EAC7D,YAAY,YACR,uBAAuB,OAAO,MAAM,yBAAyB,CAAC,OAAO,KAAK,2BAA2B,CAAC,OAAO,OAAO,iEAAiE,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,UAAU;EACzO,YAAY,aAAa,kBAAkB,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,IAAI;EACvF,CACI,OAAO,QAAQ,CACf,KAAK,GAAG,EAAE,iBAAiB,CAAC,OAAO,oBAAoB,kBAAkB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,yBAAyB,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,KAAK,CAAC,OAAO,oBAAoB,oBAAoB,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,oBAAoB,KAAK,CAAC,OAAO,oBAAoB,2BAA2B,CAAC,OAAO,WAAW,sBAAsB,CAAC,OAAO,eAAe,YAAY,CAAC,OAAO,wBAAwB,KAAK,CAAC,OAAO,KAAK,aAAa;;AAEhlB,IAAI,uBAAuB,WAAY;CACnC,IAAI,UAAU,SAAS,SAAS,KAAK,aAAA,qBAA2B,IAAI,KAAK,GAAG;AAC5E,QAAO,SAAS,QAAQ,GAAG,UAAU;;AAEzC,IAAW,mBAAmB,WAAY;AACtC,OAAM,UAAU,WAAY;AACxB,WAAS,KAAK,aAAa,gBAAgB,sBAAsB,GAAG,GAAG,UAAU,CAAC;AAClF,SAAO,WAAY;GACf,IAAI,aAAa,sBAAsB,GAAG;AAC1C,OAAI,cAAc,EACd,UAAS,KAAK,gBAAgB,cAAc;OAG5C,UAAS,KAAK,aAAa,eAAe,WAAW,UAAU,CAAC;;IAGzE,EAAE,CAAC;;AAKV,IAAW,kBAAkB,SAAU,IAAI;CACvC,IAAI,aAAa,GAAG,YAAY,cAAc,GAAG,aAAa,KAAK,GAAG,SAAS,UAAU,OAAO,KAAK,IAAI,WAAW;AACpH,mBAAkB;CAMlB,IAAI,MAAME,MAAM,QAAQ,WAAY;AAAE,SAAO,YAAY,QAAQ;IAAK,CAAC,QAAQ,CAAC;AAChF,QAAOA,MAAM,cAAc,OAAO,EAAE,QAAQ,UAAU,KAAK,CAAC,YAAY,SAAS,CAAC,cAAc,eAAe,GAAG,EAAE,CAAC;;ACnDzH,IAAI,mBAAmB;AACvB,IAAI,OAAO,WAAW,YAClB,KAAI;CACA,IAAI,UAAU,OAAO,eAAe,EAAE,EAAE,WAAW,EAC/C,KAAK,WAAY;AACb,qBAAmB;AACnB,SAAO;IAEd,CAAC;AAEF,QAAO,iBAAiB,QAAQ,SAAS,QAAQ;AAEjD,QAAO,oBAAoB,QAAQ,SAAS,QAAQ;SAEjD,KAAK;AACR,oBAAmB;;AAG3B,IAAW,aAAa,mBAAmB,EAAE,SAAS,OAAO,GAAG;AClBhE,IAAI,uBAAuB,SAAU,MAAM;AAEvC,QAAO,KAAK,YAAY;;AAE5B,IAAI,uBAAuB,SAAU,MAAM,UAAU;AACjD,KAAI,EAAE,gBAAgB,SAClB,QAAO;CAEX,IAAI,SAAS,OAAO,iBAAiB,KAAK;AAC1C,QAEA,OAAO,cAAc,YAEjB,EAAE,OAAO,cAAc,OAAO,aAAa,CAAC,qBAAqB,KAAK,IAAI,OAAO,cAAc;;AAEvG,IAAI,0BAA0B,SAAU,MAAM;AAAE,QAAO,qBAAqB,MAAM,YAAY;;AAC9F,IAAI,0BAA0B,SAAU,MAAM;AAAE,QAAO,qBAAqB,MAAM,YAAY;;AAC9F,IAAW,0BAA0B,SAAU,MAAM,MAAM;CACvD,IAAI,gBAAgB,KAAK;CACzB,IAAI,UAAU;AACd,IAAG;AAEC,MAAI,OAAO,eAAe,eAAe,mBAAmB,WACxD,WAAU,QAAQ;AAGtB,MADmB,uBAAuB,MAAM,QAAQ,EACtC;GACd,IAAI,KAAK,mBAAmB,MAAM,QAAQ;AAC1C,OAD2D,GAAG,KAAmB,GAAG,GAEhF,QAAO;;AAGf,YAAU,QAAQ;UACb,WAAW,YAAY,cAAc;AAC9C,QAAO;;AAEX,IAAI,sBAAsB,SAAU,IAAI;AAEpC,QAAO;EADS,GAAG;EAA0B,GAAG;EAA6B,GAAG;EAK/E;;AAEL,IAAI,sBAAsB,SAAU,IAAI;AAEpC,QAAO;EADU,GAAG;EAA0B,GAAG;EAA2B,GAAG;EAK9E;;AAEL,IAAI,yBAAyB,SAAU,MAAM,MAAM;AAC/C,QAAO,SAAS,MAAM,wBAAwB,KAAK,GAAG,wBAAwB,KAAK;;AAEvF,IAAI,qBAAqB,SAAU,MAAM,MAAM;AAC3C,QAAO,SAAS,MAAM,oBAAoB,KAAK,GAAG,oBAAoB,KAAK;;AAE/E,IAAI,qBAAqB,SAAU,MAAM,WAAW;AAMhD,QAAO,SAAS,OAAO,cAAc,QAAQ,KAAK;;AAEtD,IAAW,eAAe,SAAU,MAAM,WAAW,OAAO,aAAa,cAAc;CACnF,IAAI,kBAAkB,mBAAmB,MAAM,OAAO,iBAAiB,UAAU,CAAC,UAAU;CAC5F,IAAI,QAAQ,kBAAkB;CAE9B,IAAI,SAAS,MAAM;CACnB,IAAI,eAAe,UAAU,SAAS,OAAO;CAC7C,IAAI,qBAAqB;CACzB,IAAI,kBAAkB,QAAQ;CAC9B,IAAI,kBAAkB;CACtB,IAAI,qBAAqB;AACzB,IAAG;AACC,MAAI,CAAC,OACD;EAEJ,IAAI,KAAK,mBAAmB,MAAM,OAAO,EAAE,WAAW,GAAG;EACzD,IAAI,gBADoE,GAAG,KAAe,GAAG,KACnD,kBAAkB;AAC5D,MAAI,YAAY;OACR,uBAAuB,MAAM,OAAO,EAAE;AACtC,uBAAmB;AACnB,0BAAsB;;;EAG9B,IAAI,WAAW,OAAO;AAGtB,WAAU,YAAY,SAAS,aAAa,KAAK,yBAAyB,SAAS,OAAO;UAG7F,CAAC,gBAAgB,WAAW,SAAS,QAEjC,iBAAiB,UAAU,SAAS,OAAO,IAAI,cAAc;AAElE,KAAI,oBACE,gBAAgB,KAAK,IAAI,gBAAgB,GAAG,KAAO,CAAC,gBAAgB,QAAQ,iBAC9E,sBAAqB;UAEhB,CAAC,oBACJ,gBAAgB,KAAK,IAAI,mBAAmB,GAAG,KAAO,CAAC,gBAAgB,CAAC,QAAQ,oBAClF,sBAAqB;AAEzB,QAAO;;ACpGX,IAAW,aAAa,SAAU,OAAO;AACrC,QAAO,oBAAoB,QAAQ,CAAC,MAAM,eAAe,GAAG,SAAS,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE;;AAElH,IAAW,aAAa,SAAU,OAAO;AAAE,QAAO,CAAC,MAAM,QAAQ,MAAM,OAAO;;AAC9E,IAAI,aAAa,SAAU,KAAK;AAC5B,QAAO,OAAO,aAAa,MAAM,IAAI,UAAU;;AAEnD,IAAI,eAAe,SAAU,GAAG,GAAG;AAAE,QAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;;AACxE,IAAI,gBAAgB,SAAU,IAAI;AAAE,QAAO,4BAA4B,OAAO,IAAI,oDAAoD,CAAC,OAAO,IAAI,4BAA4B;;AAC9K,IAAI,YAAY;AAChB,IAAI,YAAY,EAAE;AAClB,SAAgB,oBAAoB,OAAO;CACvC,IAAI,qBAAqBC,MAAM,OAAO,EAAE,CAAC;CACzC,IAAI,gBAAgBA,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;CACxC,IAAI,aAAaA,MAAM,QAAQ;CAC/B,IAAI,KAAKA,MAAM,SAAS,YAAY,CAAC;CACrC,IAAIC,UAAQD,MAAM,SAAS,eAAe,CAAC;CAC3C,IAAI,YAAYA,MAAM,OAAO,MAAM;AACnC,OAAM,UAAU,WAAY;AACxB,YAAU,UAAU;IACrB,CAAC,MAAM,CAAC;AACX,OAAM,UAAU,WAAY;AACxB,MAAI,MAAM,OAAO;AACb,YAAS,KAAK,UAAU,IAAI,uBAAuB,OAAO,GAAG,CAAC;GAC9D,IAAI,UAAU,cAAc,CAAC,MAAM,QAAQ,QAAQ,GAAG,MAAM,UAAU,EAAE,EAAE,IAAI,WAAW,EAAE,KAAK,CAAC,OAAO,QAAQ;AAChH,WAAQ,QAAQ,SAAU,IAAI;AAAE,WAAO,GAAG,UAAU,IAAI,uBAAuB,OAAO,GAAG,CAAC;KAAI;AAC9F,UAAO,WAAY;AACf,aAAS,KAAK,UAAU,OAAO,uBAAuB,OAAO,GAAG,CAAC;AACjE,YAAQ,QAAQ,SAAU,IAAI;AAAE,YAAO,GAAG,UAAU,OAAO,uBAAuB,OAAO,GAAG,CAAC;MAAI;;;IAI1G;EAAC,MAAM;EAAO,MAAM,QAAQ;EAAS,MAAM;EAAO,CAAC;CACtD,IAAI,oBAAoBA,MAAM,YAAY,SAAU,OAAO,QAAQ;AAC/D,MAAK,aAAa,SAAS,MAAM,QAAQ,WAAW,KAAO,MAAM,SAAS,WAAW,MAAM,QACvF,QAAO,CAAC,UAAU,QAAQ;EAE9B,IAAI,QAAQ,WAAW,MAAM;EAC7B,IAAI,aAAa,cAAc;EAC/B,IAAI,SAAS,YAAY,QAAQ,MAAM,SAAS,WAAW,KAAK,MAAM;EACtE,IAAI,SAAS,YAAY,QAAQ,MAAM,SAAS,WAAW,KAAK,MAAM;EACtE,IAAI;EACJ,IAAI,SAAS,MAAM;EACnB,IAAI,gBAAgB,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM;AAEhE,MAAI,aAAa,SAAS,kBAAkB,OAAO,OAAO,SAAS,QAC/D,QAAO;EAEX,IAAI,+BAA+B,wBAAwB,eAAe,OAAO;AACjF,MAAI,CAAC,6BACD,QAAO;AAEX,MAAI,6BACA,eAAc;OAEb;AACD,iBAAc,kBAAkB,MAAM,MAAM;AAC5C,kCAA+B,wBAAwB,eAAe,OAAO;;AAGjF,MAAI,CAAC,6BACD,QAAO;AAEX,MAAI,CAAC,WAAW,WAAW,oBAAoB,UAAU,UAAU,QAC/D,YAAW,UAAU;AAEzB,MAAI,CAAC,YACD,QAAO;EAEX,IAAI,gBAAgB,WAAW,WAAW;AAC1C,SAAO,aAAa,eAAe,QAAQ,OAAO,kBAAkB,MAAM,SAAS,QAAQ,KAAK;IACjG,EAAE,CAAC;CACN,IAAI,gBAAgBA,MAAM,YAAY,SAAU,QAAQ;EACpD,IAAI,QAAQ;AACZ,MAAI,CAAC,UAAU,UAAU,UAAU,UAAU,SAAS,OAAOC,QAEzD;EAEJ,IAAI,QAAQ,YAAY,QAAQ,WAAW,MAAM,GAAG,WAAW,MAAM;EACrE,IAAI,cAAc,mBAAmB,QAAQ,OAAO,SAAU,GAAG;AAAE,UAAO,EAAE,SAAS,MAAM,SAAS,EAAE,WAAW,MAAM,UAAU,MAAM,WAAW,EAAE,iBAAiB,aAAa,EAAE,OAAO,MAAM;IAAI,CAAC;AAEtM,MAAI,eAAe,YAAY,QAAQ;AACnC,OAAI,MAAM,WACN,OAAM,gBAAgB;AAE1B;;AAGJ,MAAI,CAAC,aAAa;GACd,IAAI,cAAc,UAAU,QAAQ,UAAU,EAAE,EAC3C,IAAI,WAAW,CACf,OAAO,QAAQ,CACf,OAAO,SAAU,MAAM;AAAE,WAAO,KAAK,SAAS,MAAM,OAAO;KAAI;AAEpE,OADiB,WAAW,SAAS,IAAI,kBAAkB,OAAO,WAAW,GAAG,GAAG,CAAC,UAAU,QAAQ;QAE9F,MAAM,WACN,OAAM,gBAAgB;;;IAInC,EAAE,CAAC;CACN,IAAI,eAAeD,MAAM,YAAY,SAAU,MAAM,OAAO,QAAQ,QAAQ;EACxE,IAAI,QAAQ;GAAQ;GAAa;GAAe;GAAgB;GAAQ,cAAc,yBAAyB,OAAO;GAAE;AACxH,qBAAmB,QAAQ,KAAK,MAAM;AACtC,aAAW,WAAY;AACnB,sBAAmB,UAAU,mBAAmB,QAAQ,OAAO,SAAU,GAAG;AAAE,WAAO,MAAM;KAAS;KACrG,EAAE;IACN,EAAE,CAAC;CACN,IAAI,mBAAmBA,MAAM,YAAY,SAAU,OAAO;AACtD,gBAAc,UAAU,WAAW,MAAM;AACzC,aAAW,UAAU,KAAA;IACtB,EAAE,CAAC;CACN,IAAI,cAAcA,MAAM,YAAY,SAAU,OAAO;AACjD,eAAa,MAAM,MAAM,WAAW,MAAM,EAAE,MAAM,QAAQ,kBAAkB,OAAO,MAAM,QAAQ,QAAQ,CAAC;IAC3G,EAAE,CAAC;CACN,IAAI,kBAAkBA,MAAM,YAAY,SAAU,OAAO;AACrD,eAAa,MAAM,MAAM,WAAW,MAAM,EAAE,MAAM,QAAQ,kBAAkB,OAAO,MAAM,QAAQ,QAAQ,CAAC;IAC3G,EAAE,CAAC;AACN,OAAM,UAAU,WAAY;AACxB,YAAU,KAAKC,QAAM;AACrB,QAAM,aAAa;GACf,iBAAiB;GACjB,gBAAgB;GAChB,oBAAoB;GACvB,CAAC;AACF,WAAS,iBAAiB,SAAS,eAAe,WAAW;AAC7D,WAAS,iBAAiB,aAAa,eAAe,WAAW;AACjE,WAAS,iBAAiB,cAAc,kBAAkB,WAAW;AACrE,SAAO,WAAY;AACf,eAAY,UAAU,OAAO,SAAU,MAAM;AAAE,WAAO,SAASA;KAAS;AACxE,YAAS,oBAAoB,SAAS,eAAe,WAAW;AAChE,YAAS,oBAAoB,aAAa,eAAe,WAAW;AACpE,YAAS,oBAAoB,cAAc,kBAAkB,WAAW;;IAE7E,EAAE,CAAC;CACN,IAAI,kBAAkB,MAAM,iBAAiB,QAAQ,MAAM;AAC3D,QAAQD,MAAM,cAAcA,MAAM,UAAU,MACxC,QAAQA,MAAM,cAAcC,SAAO,EAAE,QAAQ,cAAc,GAAG,EAAE,CAAC,GAAG,MACpE,kBAAkBD,MAAM,cAAc,iBAAiB;EAAE,YAAY,MAAM;EAAY,SAAS,MAAM;EAAS,CAAC,GAAG,KAAK;;AAEhI,SAAS,yBAAyB,MAAM;CACpC,IAAI,eAAe;AACnB,QAAO,SAAS,MAAM;AAClB,MAAI,gBAAgB,YAAY;AAC5B,kBAAe,KAAK;AACpB,UAAO,KAAK;;AAEhB,SAAO,KAAK;;AAEhB,QAAO;;ACxJX,IAAA,kBAAe,cAAc,WAAW,oBAAoB;ACC5D,IAAI,oBAAoBE,MAAM,WAAW,SAAU,OAAO,KAAK;AAAE,QAAQA,MAAM,cAAc,cAAc,SAAS,EAAE,EAAE,OAAO;EAAO;EAAK,SAASC;EAAS,CAAC,CAAC;EAAK;AACpK,kBAAkB,aAAa,aAAa;AAC5C,IAAA,sBAAe;ACef,IAAI,eAAe;AACnB,IAAI,CAAC,sBAAsB,sBAAsB,mBAAmB,cAAc,CAChF,kBACD,CAAC;AACF,IAAI,iBAAiB,mBAAmB;AACxC,IAAI,CAAC,iBAAiB,qBAAqB,qBAAqB,aAAa;AAC7E,IAAIC,aAAW,UAAU;CACvB,MAAM,EACJ,gBACA,UACA,MAAM,UACN,aACA,cACA,QAAQ,UACN;CACJ,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,aAAaC,MAAM,OAAO,KAAK;CACrC,MAAM,CAAC,iBAAiB,sBAAsBA,MAAM,SAAS,MAAM;CACnE,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,aAAa,eAAe;EAC5B,UAAU;EACV,QAAQ;EACT,CAAC;AACF,QAAuB,iBAAA,GAAA,kBAAA,KAAIC,SAAsB;EAAE,GAAG;EAAa,UAA0B,iBAAA,GAAA,kBAAA,KAC3F,iBACA;GACE,OAAO;GACP,WAAWC,SAAO;GAClB;GACA;GACA,cAAc;GACd,cAAcF,MAAM,kBAAkB,SAAS,aAAa,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;GAClF;GACA,mBAAmBA,MAAM,kBAAkB,mBAAmB,KAAK,EAAE,EAAE,CAAC;GACxE,sBAAsBA,MAAM,kBAAkB,mBAAmB,MAAM,EAAE,EAAE,CAAC;GAC5E;GACA;GACD,CACF;EAAE,CAAC;;AAEN,UAAQ,cAAc;AACtB,IAAI,cAAc;AAClB,IAAI,gBAAgBA,MAAM,YACvB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;CAC3C,MAAM,UAAU,kBAAkB,aAAa,eAAe;CAC9D,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,EAAE,mBAAmB,yBAAyB;AACpD,OAAM,gBAAgB;AACpB,qBAAmB;AACnB,eAAa,sBAAsB;IAClC,CAAC,mBAAmB,qBAAqB,CAAC;AAC7C,QAAuB,iBAAA,GAAA,kBAAA,KAAIG,QAAwB;EAAE,GAAG;EAAa,GAAG;EAAa,KAAK;EAAc,CAAC;EAE5G;AACD,cAAc,cAAc;AAC5B,IAAI,eAAe;AACnB,IAAIC,mBAAiBJ,MAAM,YACxB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,iBAAiB;CAC5C,MAAM,UAAU,kBAAkB,cAAc,eAAe;CAC/D,MAAM,cAAc,eAAe,eAAe;CAClD,MAAM,qBAAqB,gBAAgB,cAAc,QAAQ,WAAW;CAC5E,MAAM,UAA0B,iBAAA,GAAA,kBAAA,KAC9BK,YAAU,QACV;EACE,MAAM;EACN,iBAAiB;EACjB,iBAAiB,QAAQ;EACzB,iBAAiB,QAAQ;EACzB,cAAc,SAAS,QAAQ,KAAK;EACpC,GAAG;EACH,KAAK;EACL,SAAS,qBAAqB,MAAM,SAAS,QAAQ,aAAa;EACnE,CACF;AACD,QAAO,QAAQ,kBAAkB,UAA0B,iBAAA,GAAA,kBAAA,KAAIF,QAAwB;EAAE,SAAS;EAAM,GAAG;EAAa,UAAU;EAAS,CAAC;EAE/I;AACD,iBAAe,cAAc;AAC7B,IAAI,cAAc;AAClB,IAAI,CAAC,gBAAgB,oBAAoB,qBAAqB,aAAa,EACzE,YAAY,KAAK,GAClB,CAAC;AACF,IAAI,iBAAiB,UAAU;CAC7B,MAAM,EAAE,gBAAgB,YAAY,UAAU,cAAc;CAC5D,MAAM,UAAU,kBAAkB,aAAa,eAAe;AAC9D,QAAuB,iBAAA,GAAA,kBAAA,KAAI,gBAAgB;EAAE,OAAO;EAAgB;EAAY,UAA0B,iBAAA,GAAA,kBAAA,KAAI,UAAU;GAAE,SAAS,cAAc,QAAQ;GAAM,UAA0B,iBAAA,GAAA,kBAAA,KAAIG,QAAiB;IAAE,SAAS;IAAM;IAAW;IAAU,CAAC;GAAE,CAAC;EAAE,CAAC;;AAE7P,cAAc,cAAc;AAC5B,IAAI,eAAe;AACnB,IAAIC,mBAAiBP,MAAM,YACxB,OAAO,iBAAiB;CACvB,MAAM,gBAAgB,iBAAiB,cAAc,MAAM,eAAe;CAC1E,MAAM,EAAE,aAAa,cAAc,YAAY,GAAG,iBAAiB;CACnE,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;AACrE,QAAuB,iBAAA,GAAA,kBAAA,KAAI,UAAU;EAAE,SAAS,cAAc,QAAQ;EAAM,UAAU,QAAQ,QAAwB,iBAAA,GAAA,kBAAA,KAAI,qBAAqB;GAAE,GAAG;GAAc,KAAK;GAAc,CAAC,GAAmB,iBAAA,GAAA,kBAAA,KAAI,wBAAwB;GAAE,GAAG;GAAc,KAAK;GAAc,CAAC;EAAE,CAAC;EAElR;AACD,iBAAe,cAAc;AAC7B,IAAIQ,UAAAA,GAAAA,sBAAAA,YAAkB,8BAA8B;AACpD,IAAI,sBAAsBR,MAAM,YAC7B,OAAO,iBAAiB;CACvB,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;CACrE,MAAM,aAAaA,MAAM,OAAO,KAAK;CACrC,MAAM,eAAe,gBAAgB,cAAc,WAAW;CAC9D,MAAM,yBAAyBA,MAAM,OAAO,MAAM;AAClD,OAAM,gBAAgB;EACpB,MAAM,UAAU,WAAW;AAC3B,MAAI,QAAS,QAAO,WAAW,QAAQ;IACtC,EAAE,CAAC;AACN,QAAuB,iBAAA,GAAA,kBAAA,KAAIS,qBAAc;EAAE,IAAID;EAAM,gBAAgB;EAAM,UAA0B,iBAAA,GAAA,kBAAA,KACnG,oBACA;GACE,GAAG;GACH,KAAK;GACL,WAAW,QAAQ;GACnB,6BAA6B;GAC7B,kBAAkB,qBAAqB,MAAM,mBAAmB,UAAU;AACxE,UAAM,gBAAgB;AACtB,QAAI,CAAC,uBAAuB,QAAS,SAAQ,WAAW,SAAS,OAAO;KACxE;GACF,sBAAsB,qBACpB,MAAM,uBACL,UAAU;IACT,MAAM,gBAAgB,MAAM,OAAO;IACnC,MAAM,gBAAgB,cAAc,WAAW,KAAK,cAAc,YAAY;AAE9E,2BAAuB,UADF,cAAc,WAAW,KAAK;MAGrD,EAAE,0BAA0B,OAAO,CACpC;GACD,gBAAgB,qBACd,MAAM,iBACL,UAAU,MAAM,gBAAgB,EACjC,EAAE,0BAA0B,OAAO,CACpC;GACF,CACF;EAAE,CAAC;EAEP;AACD,IAAI,yBAAyBR,MAAM,YAChC,OAAO,iBAAiB;CACvB,MAAM,UAAU,kBAAkB,cAAc,MAAM,eAAe;CACrE,MAAM,0BAA0BA,MAAM,OAAO,MAAM;CACnD,MAAM,2BAA2BA,MAAM,OAAO,MAAM;AACpD,QAAuB,iBAAA,GAAA,kBAAA,KACrB,oBACA;EACE,GAAG;EACH,KAAK;EACL,WAAW;EACX,6BAA6B;EAC7B,mBAAmB,UAAU;AAC3B,SAAM,mBAAmB,MAAM;AAC/B,OAAI,CAAC,MAAM,kBAAkB;AAC3B,QAAI,CAAC,wBAAwB,QAAS,SAAQ,WAAW,SAAS,OAAO;AACzE,UAAM,gBAAgB;;AAExB,2BAAwB,UAAU;AAClC,4BAAyB,UAAU;;EAErC,oBAAoB,UAAU;AAC5B,SAAM,oBAAoB,MAAM;AAChC,OAAI,CAAC,MAAM,kBAAkB;AAC3B,4BAAwB,UAAU;AAClC,QAAI,MAAM,OAAO,cAAc,SAAS,cACtC,0BAAyB,UAAU;;GAGvC,MAAM,SAAS,MAAM;AAErB,OADwB,QAAQ,WAAW,SAAS,SAAS,OAAO,CAC/C,OAAM,gBAAgB;AAC3C,OAAI,MAAM,OAAO,cAAc,SAAS,aAAa,yBAAyB,QAC5E,OAAM,gBAAgB;;EAG3B,CACF;EAEJ;AACD,IAAI,qBAAqBA,MAAM,YAC5B,OAAO,iBAAiB;CACvB,MAAM,EACJ,gBACA,WACA,iBACA,kBACA,6BACA,iBACA,sBACA,gBACA,mBACA,GAAG,iBACD;CACJ,MAAM,UAAU,kBAAkB,cAAc,eAAe;CAC/D,MAAM,cAAc,eAAe,eAAe;AAClD,iBAAgB;AAChB,QAAuB,iBAAA,GAAA,kBAAA,KACrB,YACA;EACE,SAAS;EACT,MAAM;EACN,SAAS;EACT,kBAAkB;EAClB,oBAAoB;EACpB,UAA0B,iBAAA,GAAA,kBAAA,KACxB,kBACA;GACE,SAAS;GACT;GACA;GACA;GACA;GACA;GACA,iBAAiB,QAAQ,aAAa,MAAM;GAC5C,UAA0B,iBAAA,GAAA,kBAAA,KACxBU,SACA;IACE,cAAc,SAAS,QAAQ,KAAK;IACpC,MAAM;IACN,IAAI,QAAQ;IACZ,GAAG;IACH,GAAG;IACH,KAAK;IACL,OAAO;KACL,GAAG,aAAa;KAGd,4CAA4C;KAC5C,2CAA2C;KAC3C,4CAA4C;KAC5C,iCAAiC;KACjC,kCAAkC;KAErC;IACF,CACF;GACF,CACF;EACF,CACF;EAEJ;AACD,IAAI,aAAa;AACjB,IAAI,eAAeV,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,eAAe;CAC1C,MAAM,UAAU,kBAAkB,YAAY,eAAe;AAC7D,QAAuB,iBAAA,GAAA,kBAAA,KACrBK,YAAU,QACV;EACE,MAAM;EACN,GAAG;EACH,KAAK;EACL,SAAS,qBAAqB,MAAM,eAAe,QAAQ,aAAa,MAAM,CAAC;EAChF,CACF;EAEJ;AACD,aAAa,cAAc;AAC3B,IAAI,aAAa;AACjB,IAAI,eAAeL,MAAM,YACtB,OAAO,iBAAiB;CACvB,MAAM,EAAE,gBAAgB,GAAG,eAAe;CAC1C,MAAM,cAAc,eAAe,eAAe;AAClD,QAAuB,iBAAA,GAAA,kBAAA,KAAIW,OAAuB;EAAE,GAAG;EAAa,GAAG;EAAY,KAAK;EAAc,CAAC;EAE1G;AACD,aAAa,cAAc;AAC3B,SAAS,SAAS,MAAM;AACtB,QAAO,OAAO,SAAS;;AAEzB,IAAI,QAAQZ;AAEZ,IAAI,UAAUK;AACd,IAAIQ,WAAS;AACb,IAAI,WAAWL;AAEf,IAAI,SAAS;ACtSb,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,iBAAA,GAAA,kBAAA,KAAC,OAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,iBAAA,GAAA,kBAAA,KAAC,SAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,GAAG,SACqD;AACxD,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAiB,EAAA,UAChB,iBAAA,GAAA,kBAAA,KAAC,UAAiB;EAChB,aAAU;EACH;EACK;EACZ,WAAW,cAAA,GACT,keACA,UACD;EACD,GAAI;GACJ,EAAA,CACsB;;ACrC9B,IAAI,IAAE,GAAEM,MAAE,IAAG,IAAE,IAAG,IAAE,KAAI,IAAE,IAAG,IAAE,MAAK,IAAE;AAAM,IAAIC,MAAE,KAAI,IAAE,uBAAsBC,MAAE,wBAAuBC,MAAE,SAAQC,MAAE;AAAS,SAAS,EAAE,GAAE,GAAE,GAAE,KAAE,GAAE,GAAE,GAAE;AAAC,KAAG,MAAI,EAAE,OAAO,QAAO,MAAI,EAAE,SAAO,IAAEH;CAAE,IAAII,MAAE,GAAG,EAAE,GAAG;AAAI,KAAG,EAAEA,SAAK,KAAK,EAAE,QAAO,EAAEA;AAAG,MAAI,IAAIC,MAAEC,IAAE,OAAO,EAAE,EAAC,IAAE,EAAE,QAAQD,KAAE,EAAE,EAAC,IAAE,GAAE,GAAEE,KAAE,GAAE,GAAE,KAAG,GAAG,KAAE,EAAE,GAAE,GAAE,GAAED,KAAE,IAAE,GAAE,IAAE,GAAE,EAAE,EAAC,IAAE,MAAI,MAAI,IAAE,KAAG,IAAE,EAAE,KAAK,EAAE,OAAO,IAAE,EAAE,CAAC,IAAE,KAAG,GAAE,IAAE,EAAE,MAAM,GAAE,IAAE,EAAE,CAAC,MAAML,IAAE,EAAC,KAAG,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,EAAE,OAAO,KAAGC,IAAE,KAAK,EAAE,OAAO,IAAE,EAAE,CAAC,IAAE,KAAGH,KAAE,IAAE,EAAE,MAAM,GAAE,IAAE,EAAE,CAAC,MAAMI,IAAE,EAAC,KAAG,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,EAAE,OAAO,MAAI,KAAG,GAAE,IAAE,MAAI,KAAG,KAAK,IAAI,GAAE,IAAE,EAAE,IAAG,EAAE,OAAO,EAAE,KAAG,EAAE,OAAO,EAAE,KAAG,KAAG,MAAK,IAAE,KAAG,EAAE,OAAO,IAAE,EAAE,KAAGG,IAAE,OAAO,IAAE,EAAE,IAAEA,IAAE,OAAO,IAAE,EAAE,KAAGA,IAAE,OAAO,EAAE,IAAE,EAAE,OAAO,IAAE,EAAE,KAAGA,IAAE,OAAO,EAAE,MAAI,MAAE,EAAE,GAAE,GAAE,GAAEA,KAAE,IAAE,GAAE,IAAE,GAAE,EAAE,EAACC,MAAE,IAAE,MAAI,IAAEA,MAAE,KAAI,IAAE,MAAI,IAAE,IAAG,IAAE,EAAE,QAAQF,KAAE,IAAE,EAAE;AAAC,QAAO,EAAED,OAAG,GAAE;;AAAE,SAAS,EAAE,GAAE;AAAC,QAAO,EAAE,aAAa,CAAC,QAAQD,KAAE,IAAI;;AAAC,SAAS,EAAE,GAAE,GAAE,GAAE;AAAC,QAAO,IAAE,KAAG,EAAE,SAAO,IAAE,GAAG,IAAE,MAAI,EAAE,KAAK,IAAI,KAAG,GAAE,EAAE,GAAE,GAAE,EAAE,EAAE,EAAC,EAAE,EAAE,EAAC,GAAE,GAAE,EAAE,CAAC;;ACwBv4B,IAAI,YAnBQ;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CACqB,QAAQ,WAAW,SAAS;CAChD,MAAMK,UAAAA,GAAAA,sBAAAA,YAAkB,aAAa,OAAO;CAC5C,MAAMC,SAAOC,MAAM,YAAY,OAAO,iBAAiB;EACrD,MAAM,EAAE,SAAS,GAAG,mBAAmB;EACvC,MAAM,OAAO,UAAUF,SAAO;AAC9B,MAAI,OAAO,WAAW,YACpB,QAAO,OAAO,IAAI,WAAW,IAAI;AAEnC,SAAuB,iBAAA,GAAA,kBAAA,KAAI,MAAM;GAAE,GAAG;GAAgB,KAAK;GAAc,CAAC;GAC1E;AACF,QAAK,cAAc,aAAa;AAChC,QAAO;EAAE,GAAG;GAAY,OAAOC;EAAM;GACpC,EAAE,CAAC;ACpC8Q,IAAI,IAAE,qBAAkB,IAAE,2BAAwB,KAAG,6BAA0B,KAAG,oBAAiB,KAAG,GAAG,GAAG,+BAA8B,IAAE,oBAAmB,IAAE,cAAa,MAAI,GAAE,GAAE,MAAIE,EAAG,GAAE,GAAE,EAAE,EAAC,KAAGC,MAAE,cAAc,KAAK,EAAE,EAAC,UAAMA,MAAE,WAAW,GAAG,EAAC,KAAGA,MAAE,cAAc,KAAK,EAAE,EAAC,WAAOA,MAAE,WAAW,GAAG,EAAC,KAAGA,MAAE,cAAc,KAAK,EAAE,EAAC,KAAGA,MAAE,YAAY,GAAE,MAAI;CAAC,IAAI,IAAE,QAAM;EAAC,IAAI,GAAE;AAAE,SAAM;GAAC,QAAO;GAAG,QAAO,KAAG,IAAE,EAAE,UAAQ,OAAK,IAAE,EAAE,iBAAe,OAAK,IAAE;GAAG,gBAAe,KAAK;GAAE,UAAS;IAAC,OAAM;IAAE,uBAAM,IAAI,KAAG;IAAC,wBAAO,IAAI,KAAG;IAAC;GAAC;GAAE,EAACC,MAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC,EAACC,MAAE,GAAG,EAAE,EAAC,EAAC,OAAM,GAAE,UAASC,KAAE,OAAM,GAAE,eAAc,GAAE,QAAO,GAAE,cAAa,GAAE,MAAK,GAAE,yBAAwB,KAAG,CAAC,GAAE,aAAY,IAAE,CAAC,GAAE,GAAG,MAAG,GAAEC,MAAEC,SAAG,EAAC,IAAEA,SAAG,EAAC,IAAEA,SAAG,EAAC,IAAEL,MAAE,OAAO,KAAK,EAAC,IAAE,IAAI;AAAC,SAAM;AAAC,MAAG,MAAI,KAAK,GAAE;GAAC,IAAI,IAAE,EAAE,MAAM;AAAC,KAAE,QAAQ,QAAM,GAAE,EAAE,MAAM;;IAAG,CAAC,EAAE,CAAC,EAAC,QAAM;AAAC,IAAE,GAAE,GAAG;IAAE,EAAE,CAAC;CAAC,IAAI,IAAEA,MAAE,eAAa;EAAC,YAAU,OAAI,EAAE,QAAQ,IAAI,EAAE,QAAK,EAAE,QAAQ,OAAO,EAAE;EAAE,gBAAa,EAAE;EAAQ,WAAU,GAAE,GAAE,MAAI;GAAC,IAAI,GAAE,GAAE,GAAE;AAAE,OAAG,CAAC,OAAO,GAAG,EAAE,QAAQ,IAAG,EAAE,EAAC;AAAC,QAAG,EAAE,QAAQ,KAAG,GAAE,MAAI,SAAS,MAAG,EAAC,GAAG,EAAC,EAAE,GAAEM,IAAE;aAAS,MAAI,SAAQ;AAAC,SAAG,SAAS,cAAc,aAAa,aAAa,IAAE,SAAS,cAAc,aAAa,YAAY,EAAC;MAAC,IAAI,IAAE,SAAS,eAAe,EAAE;AAAC,UAAE,EAAE,OAAO,IAAE,IAAE,SAAS,eAAeF,IAAE,KAAG,QAAM,EAAE,OAAO;;AAAC,SAAG,EAAE,SAAM;MAAC,IAAI;AAAE,QAAE,QAAQ,kBAAgB,IAAE,GAAG,KAAG,OAAK,KAAK,IAAE,EAAE,IAAG,EAAE,MAAM;OAAE,EAAC,KAAG,EAAE,GAAE,GAAG,IAAG,IAAEF,IAAE,YAAU,OAAK,KAAK,IAAE,EAAE,WAAS,KAAK,GAAE;MAAC,IAAI,IAAE,KAAG,OAAK,IAAE;AAAG,OAAC,KAAG,IAAEA,IAAE,SAAS,kBAAgB,QAAM,EAAE,KAAK,GAAE,EAAE;AAAC;;;AAAQ,MAAE,MAAM;;;EAAG,YAAS;AAAC,KAAE,QAAQ,SAAQ,MAAG,GAAG,CAAC;;EAAE,GAAE,EAAE,CAAC,EAACK,MAAEP,MAAE,eAAa;EAAC,QAAO,GAAE,GAAE,MAAI;GAAC,IAAI;AAAE,WAAM,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,WAAS,EAAE,QAAQ,IAAI,GAAE;IAAC,OAAM;IAAE,UAAS;IAAE,CAAC,EAAC,EAAE,QAAQ,SAAS,MAAM,IAAI,GAAE,GAAG,GAAE,EAAE,CAAC,EAAC,EAAE,SAAM;AAAC,OAAG,EAAC,EAAE,MAAM;KAAE;;EAAG,OAAM,GAAE,OAAKC,IAAE,QAAQ,IAAI,EAAE,EAAC,MAAI,EAAE,QAAQ,IAAI,EAAE,GAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAC,EAAE,QAAQ,IAAI,GAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,GAAE,EAAE,SAAM;AAAC,QAAG,EAAC,GAAG,EAAC,EAAE,QAAQ,SAAOK,KAAG,EAAC,EAAE,MAAM;IAAE,QAAK;AAAC,KAAE,QAAQ,OAAO,EAAE,EAACL,IAAE,QAAQ,OAAO,EAAE,EAAC,EAAE,QAAQ,SAAS,MAAM,OAAO,EAAE;GAAC,IAAI,IAAE,GAAG;AAAC,KAAE,SAAM;AAAC,SAAG,GAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAa,KAAK,MAAI,KAAGK,KAAG,EAAC,EAAE,MAAM;KAAE;;EAAG,QAAM,OAAI,EAAE,QAAQ,IAAI,EAAE,IAAE,EAAE,QAAQ,IAAI,mBAAE,IAAI,KAAG,CAAC,QAAK;AAAC,KAAE,QAAQ,OAAO,EAAE,EAAC,EAAE,QAAQ,OAAO,EAAE;;EAAG,cAAWJ,IAAE,QAAQ;EAAa,OAAM,KAAG,EAAE;EAAc,kCAA+BA,IAAE,QAAQ;EAAwB,QAAOE;EAAE,SAAQ;EAAE,SAAQ;EAAE,cAAa;EAAE,GAAE,EAAE,CAAC;CAAC,SAAS,GAAG,GAAE,GAAE;EAAC,IAAI,GAAE;EAAE,IAAI,KAAG,KAAG,IAAEF,IAAE,YAAU,OAAK,KAAK,IAAE,EAAE,WAAS,OAAK,IAAE;AAAG,SAAO,IAAE,EAAE,GAAE,EAAE,QAAQ,QAAO,EAAE,GAAC;;CAAE,SAAS,IAAG;AAAC,MAAG,CAAC,EAAE,QAAQ,UAAQA,IAAE,QAAQ,iBAAe,CAAC,EAAE;EAAO,IAAI,IAAE,EAAE,QAAQ,SAAS,OAAM,IAAE,EAAE;AAAC,IAAE,QAAQ,SAAS,OAAO,SAAQ,MAAG;GAAC,IAAI,IAAE,EAAE,QAAQ,IAAI,EAAE,EAAC,IAAE;AAAE,KAAE,SAAQ,MAAG;IAAC,IAAI,IAAE,EAAE,IAAI,EAAE;AAAC,QAAE,KAAK,IAAI,GAAE,EAAE;KAAE,EAAC,EAAE,KAAK,CAAC,GAAE,EAAE,CAAC;IAAE;EAAC,IAAI,IAAE,EAAE;AAAQ,KAAG,CAAC,MAAM,GAAE,MAAI;GAAC,IAAI,GAAE;GAAE,IAAI,IAAE,EAAE,aAAa,KAAK,EAAC,IAAE,EAAE,aAAa,KAAK;AAAC,YAAQ,IAAE,EAAE,IAAI,EAAE,KAAG,OAAK,IAAE,OAAK,IAAE,EAAE,IAAI,EAAE,KAAG,OAAK,IAAE;IAAI,CAAC,SAAQ,MAAG;GAAC,IAAI,IAAE,EAAE,QAAQ,EAAE;AAAC,OAAE,EAAE,YAAY,EAAE,kBAAgB,IAAE,IAAE,EAAE,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAC,EAAE,YAAY,EAAE,kBAAgB,IAAE,IAAE,EAAE,QAAQ,GAAG,EAAE,MAAM,CAAC;IAAE,EAAC,EAAE,MAAM,GAAE,MAAI,EAAE,KAAG,EAAE,GAAG,CAAC,SAAQ,MAAG;GAAC,IAAI;GAAE,IAAI,KAAG,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,EAAE,GAAG,EAAE,IAAI,mBAAmB,EAAE,GAAG,CAAC,IAAI;AAAC,MAAW,cAAc,YAAY,EAAE;IAAE;;CAAC,SAASI,MAAG;EAAC,IAAI,IAAE,GAAG,CAAC,MAAK,MAAG,EAAE,aAAa,gBAAgB,KAAG,OAAO,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAa,EAAE;AAAC,IAAE,SAAS,SAAQ,KAAG,KAAK,EAAE;;CAAC,SAASE,MAAG;EAAC,IAAI,GAAE,GAAE,GAAE;AAAE,MAAG,CAAC,EAAE,QAAQ,UAAQN,IAAE,QAAQ,iBAAe,CAAC,GAAE;AAAC,KAAE,QAAQ,SAAS,QAAMD,IAAE,QAAQ;AAAK;;AAAO,IAAE,QAAQ,SAAS,yBAAO,IAAI,KAAG;EAAC,IAAI,IAAE;AAAE,OAAI,IAAI,KAAKA,IAAE,SAAQ;GAAC,IAA6H,IAAE,IAAxH,KAAG,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,UAAQ,OAAK,IAAE,KAAM,KAAG,IAAE,EAAE,QAAQ,IAAI,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,aAAW,OAAK,IAAE,EAAE,CAAU;AAAC,KAAE,QAAQ,SAAS,MAAM,IAAI,GAAE,EAAE,EAAC,IAAE,KAAG;;AAAI,OAAI,IAAG,CAAC,GAAE,MAAK,EAAE,QAAQ,MAAI,IAAI,KAAK,EAAE,KAAG,EAAE,QAAQ,SAAS,MAAM,IAAI,EAAE,GAAC,GAAE;AAAC,KAAE,QAAQ,SAAS,OAAO,IAAI,EAAE;AAAC;;AAAM,IAAE,QAAQ,SAAS,QAAM;;CAAE,SAAS,KAAI;EAAC,IAAI,GAAE,GAAE;EAAE,IAAI,IAAE,GAAG;AAAC,UAAM,IAAE,EAAE,kBAAgB,OAAK,KAAK,IAAE,EAAE,gBAAc,OAAK,KAAG,IAAE,EAAE,QAAQ,EAAE,KAAG,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,KAAG,QAAM,EAAE,eAAe,EAAC,OAAM,WAAU,CAAC,GAAE,EAAE,eAAe,EAAC,OAAM,WAAU,CAAC;;CAAE,SAAS,IAAG;EAAC,IAAI;AAAE,UAAO,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG,GAAG,wBAAwB;;CAAC,SAAS,IAAG;EAAC,IAAI;AAAE,SAAO,MAAM,OAAO,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,iBAAiB,GAAG,KAAG,EAAE,CAAC;;CAAC,SAASQ,IAAE,GAAE;EAAC,IAAI,IAAE,GAAG,CAAC;AAAG,OAAG,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC;;CAAC,SAAS,EAAE,GAAE;EAAC,IAAI;EAAE,IAAI,IAAE,GAAG,EAAC,IAAE,GAAG,EAAC,IAAE,EAAE,WAAU,MAAG,MAAI,EAAE,EAAC,IAAE,EAAE,IAAE;AAAG,GAAC,IAAEP,IAAE,YAAU,QAAM,EAAE,SAAO,IAAE,IAAE,IAAE,IAAE,EAAE,EAAE,SAAO,KAAG,IAAE,MAAI,EAAE,SAAO,EAAE,KAAG,EAAE,IAAE,KAAI,KAAG,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC;;CAAC,SAAS,GAAG,GAAE;EAAC,IAAI,IAAE,GAAG,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,QAAQ,EAAE,EAAC;AAAE,SAAK,KAAG,CAAC,GAAG,KAAE,IAAE,IAAE,GAAG,GAAE,EAAE,GAAC,GAAG,GAAE,EAAE,EAAC,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE,cAAc,GAAG;AAAC,MAAE,EAAE,SAAS,SAAQ,EAAE,aAAa,EAAE,CAAC,GAAC,EAAE,EAAE;;CAAC,IAAI,WAAOO,IAAE,GAAG,CAAC,SAAO,EAAE,EAAC,MAAG,MAAG;AAAC,IAAE,gBAAgB,EAAC,EAAE,UAAQ,IAAI,GAAC,EAAE,SAAO,GAAG,EAAE,GAAC,EAAE,EAAE;IAAE,MAAG,MAAG;AAAC,IAAE,gBAAgB,EAAC,EAAE,UAAQA,IAAE,EAAE,GAAC,EAAE,SAAO,GAAG,GAAG,GAAC,EAAE,GAAG;;AAAE,QAAOT,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAI;EAAE,UAAS;EAAG,GAAG;EAAE,aAAY;EAAG,YAAU,MAAG;GAAC,IAAI;AAAE,IAAC,IAAE,EAAE,cAAY,QAAM,EAAE,KAAK,GAAE,EAAE;GAAC,IAAI,IAAE,EAAE,YAAY,eAAa,EAAE,YAAU;AAAI,OAAG,EAAE,EAAE,oBAAkB,GAAG,SAAO,EAAE,KAAT;IAAc,KAAI;IAAI,KAAI;AAAK,UAAG,EAAE,WAAS,GAAG,EAAE;AAAC;IAAM,KAAI;AAAa,QAAG,EAAE;AAAC;IAAM,KAAI;IAAI,KAAI;AAAK,UAAG,EAAE,WAAS,GAAG,EAAE;AAAC;IAAM,KAAI;AAAW,QAAG,EAAE;AAAC;IAAM,KAAI;AAAQ,OAAE,gBAAgB,EAACD,IAAE,EAAE;AAAC;IAAM,KAAI;AAAO,OAAE,gBAAgB,EAAC,IAAI;AAAC;IAAM,KAAI,SAAQ;AAAC,OAAE,gBAAgB;KAAC,IAAI,IAAE,GAAG;AAAC,SAAG,GAAE;MAAC,IAAI,IAAE,IAAI,MAAM,EAAE;AAAC,QAAE,cAAc,EAAE;;;;;EAAK,EAACT,MAAE,cAAc,SAAQ;EAAC,cAAa;EAAG,SAAQO,IAAE;EAAQ,IAAGA,IAAE;EAAQ,OAAM;EAAG,EAAC,EAAE,EAAC,EAAE,IAAE,MAAGP,MAAE,cAAc,GAAG,UAAS,EAAC,OAAM,GAAE,EAACA,MAAE,cAAc,GAAG,UAAS,EAAC,OAAMO,KAAE,EAAC,EAAE,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGP,MAAE,YAAY,GAAE,MAAI;CAAC,IAAI,GAAE;CAAE,IAAI,IAAEK,SAAG,EAACJ,MAAED,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,WAAW,GAAG,EAAC,IAAE,GAAG,EAAC,IAAE,GAAG,EAAE,EAACE,OAAG,KAAG,IAAE,EAAE,YAAU,OAAK,KAAK,IAAE,EAAE,eAAa,OAAK,IAAE,KAAG,OAAK,KAAK,IAAE,EAAE;AAAW,SAAM;AAAC,MAAG,CAACA,IAAE,QAAO,EAAE,KAAK,GAAE,KAAG,OAAK,KAAK,IAAE,EAAE,GAAG;IAAE,CAACA,IAAE,CAAC;CAAC,IAAI,IAAE,GAAG,GAAED,KAAE;EAAC,EAAE;EAAM,EAAE;EAASA;EAAE,EAAC,EAAE,SAAS,EAACE,MAAE,IAAI,EAAC,IAAE,GAAE,MAAG,EAAE,SAAO,EAAE,UAAQ,EAAE,QAAQ,EAAC,IAAE,GAAE,MAAGD,OAAG,EAAE,QAAQ,KAAG,CAAC,IAAE,CAAC,IAAE,EAAE,SAAO,EAAE,SAAS,MAAM,IAAI,EAAE,GAAC,IAAE,CAAC,EAAE;AAAC,OAAE,gBAAc;EAAC,IAAI,IAAED,IAAE;AAAQ,MAAG,EAAE,CAAC,KAAG,EAAE,UAAU,QAAO,EAAE,iBAAiB,GAAE,EAAE,QAAK,EAAE,oBAAoB,GAAE,EAAE;IAAE;EAAC;EAAE,EAAE;EAAS,EAAE;EAAS,CAAC;CAAC,SAAS,IAAG;EAAC,IAAI,GAAE;AAAE,KAAG,GAAE,KAAG,IAAE,EAAE,SAAS,aAAW,QAAM,EAAE,KAAK,GAAE,EAAE,QAAQ;;CAAC,SAAS,IAAG;AAAC,MAAE,SAAS,SAAQ,EAAE,SAAQ,CAAC,EAAE;;AAAC,KAAG,CAAC,EAAE,QAAO;CAAK,IAAG,EAAC,UAAS,GAAE,OAAM,IAAG,UAAS,GAAE,YAAW,GAAE,UAASG,KAAE,GAAG,MAAG;AAAE,QAAOJ,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAEV,KAAE,EAAE;EAAC,GAAG;EAAE,IAAG;EAAE,aAAY;EAAG,MAAK;EAAS,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,iBAAgB,CAAC,CAAC;EAAE,eAAc,KAAG,EAAE,4BAA4B,GAAC,KAAK,IAAE;EAAE,SAAQ,IAAE,KAAK,IAAE;EAAE,EAAC,EAAE,SAAS;EAAE,EAAC,KAAGD,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,SAAQ,GAAE,UAASC,KAAE,YAAW,GAAE,GAAG,MAAG,GAAE,IAAEI,SAAG,EAACH,MAAEF,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,OAAO,KAAK,EAACG,MAAEE,SAAG,EAAC,IAAE,GAAG,EAAC,IAAE,GAAE,MAAG,KAAG,EAAE,QAAQ,KAAG,CAAC,IAAE,CAAC,IAAE,EAAE,SAAO,EAAE,SAAS,OAAO,IAAI,EAAE,GAAC,CAAC,EAAE;AAAC,SAAM,EAAE,MAAM,EAAE,EAAC,EAAE,CAAC,EAAC,GAAG,GAAEH,KAAE;EAAC,EAAE;EAAM,EAAE;EAAQ;EAAE,CAAC;CAAC,IAAI,IAAEF,MAAE,eAAa;EAAC,IAAG;EAAE,YAAW;EAAE,GAAE,CAAC,EAAE,CAAC;AAAC,QAAOA,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAET,KAAE,EAAE;EAAC,GAAG;EAAE,cAAa;EAAG,MAAK;EAAe,QAAO,IAAE,KAAK,IAAE,CAAC;EAAE,EAAC,KAAGF,MAAE,cAAc,OAAM;EAAC,KAAI;EAAE,sBAAqB;EAAG,eAAc,CAAC;EAAE,IAAGG;EAAE,EAAC,EAAE,EAAC,EAAE,IAAE,MAAGH,MAAE,cAAc,OAAM;EAAC,oBAAmB;EAAG,MAAK;EAAQ,mBAAkB,IAAEG,MAAE,KAAK;EAAE,EAACH,MAAE,cAAc,GAAG,UAAS,EAAC,OAAM,GAAE,EAAC,EAAE,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGA,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,cAAa,GAAE,GAAGC,QAAG,GAAE,IAAED,MAAE,OAAO,KAAK,EAAC,IAAE,GAAE,MAAG,CAAC,EAAE,OAAO;AAAC,QAAM,CAAC,KAAG,CAAC,IAAE,OAAKA,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAE,GAAE,EAAE;EAAC,GAAGV;EAAE,kBAAiB;EAAG,MAAK;EAAY,CAAC;EAAE,EAAC,KAAGD,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,eAAc,GAAE,GAAGC,QAAG,GAAE,IAAE,EAAE,SAAO,MAAK,IAAE,IAAI,EAAC,IAAE,GAAE,QAAGE,IAAE,OAAO,EAACD,MAAE,GAAE,QAAGC,IAAE,eAAe,EAAC,IAAE,GAAG;AAAC,QAAOH,MAAE,gBAAc;AAAC,IAAE,SAAO,QAAM,EAAE,SAAS,UAAS,EAAE,MAAM;IAAE,CAAC,EAAE,MAAM,CAAC,EAACA,MAAE,cAAcU,UAAE,OAAM;EAAC,KAAI;EAAE,GAAGT;EAAE,cAAa;EAAG,cAAa;EAAM,aAAY;EAAM,YAAW,CAAC;EAAE,qBAAoB;EAAO,MAAK;EAAW,iBAAgB,CAAC;EAAE,iBAAgB,EAAE;EAAO,mBAAkB,EAAE;EAAQ,yBAAwBC;EAAE,IAAG,EAAE;EAAQ,MAAK;EAAO,OAAM,IAAE,EAAE,QAAM;EAAE,WAAS,QAAG;AAAC,QAAG,EAAE,SAAS,UAASC,IAAE,OAAO,MAAM,EAAC,IAAWA,IAAE,OAAO,MAAM;;EAAE,CAAC;EAAE,EAAC,KAAGH,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,UAAS,GAAE,OAAMC,MAAE,eAAc,GAAG,MAAG,GAAE,IAAED,MAAE,OAAO,KAAK,EAAC,IAAEA,MAAE,OAAO,KAAK,EAACE,MAAE,GAAE,QAAGC,IAAE,eAAe,EAAC,IAAE,GAAG;AAAC,QAAOH,MAAE,gBAAc;AAAC,MAAG,EAAE,WAAS,EAAE,SAAQ;GAAC,IAAIG,MAAE,EAAE,SAAQ,IAAE,EAAE,SAAQ,GAAE,IAAE,IAAI,qBAAmB;AAAC,QAAE,4BAA0B;KAAC,IAAI,IAAEA,IAAE;AAAa,OAAE,MAAM,YAAY,sBAAqB,EAAE,QAAQ,EAAE,GAAC,KAAK;MAAE;KAAE;AAAC,UAAO,EAAE,QAAQA,IAAE,QAAK;AAAC,yBAAqB,EAAE,EAAC,EAAE,UAAUA,IAAE;;;IAAI,EAAE,CAAC,EAACH,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAIC,YAAE,GAAE,EAAE;EAAC,GAAG;EAAE,aAAY;EAAG,MAAK;EAAU,UAAS;EAAG,yBAAwBT;EAAE,cAAaD;EAAE,IAAG,EAAE;EAAO,EAAC,EAAE,IAAE,QAAGD,MAAE,cAAc,OAAM;EAAC,KAAIW,YAAE,GAAE,EAAE,aAAa;EAAC,mBAAkB;EAAG,EAACR,IAAE,CAAC,CAAC;EAAE,EAAC,KAAGH,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,MAAK,GAAE,cAAaC,KAAE,kBAAiB,GAAE,kBAAiB,GAAE,WAAU,GAAE,GAAGC,QAAG;AAAE,QAAOF,MAAE,cAAcY,wBAAE,MAAK;EAAC,MAAK;EAAE,cAAaX;EAAE,EAACD,MAAE,cAAcY,wBAAE,QAAO,EAAC,WAAU,GAAE,EAACZ,MAAE,cAAcY,wBAAE,SAAQ;EAAC,gBAAe;EAAG,WAAU;EAAE,CAAC,EAACZ,MAAE,cAAcY,wBAAE,SAAQ;EAAC,cAAa,EAAE;EAAM,eAAc;EAAG,WAAU;EAAE,EAACZ,MAAE,cAAc,IAAG;EAAC,KAAI;EAAE,GAAGE;EAAE,CAAC,CAAC,CAAC,CAAC;EAAE,EAAC,KAAGF,MAAE,YAAY,GAAE,MAAI,GAAE,QAAGC,IAAE,SAAS,UAAQ,EAAE,GAACD,MAAE,cAAcU,UAAE,KAAI;CAAC,KAAI;CAAE,GAAG;CAAE,cAAa;CAAG,MAAK;CAAe,CAAC,GAAC,KAAK,EAAC,KAAGV,MAAE,YAAY,GAAE,MAAI;CAAC,IAAG,EAAC,UAAS,GAAE,UAASC,KAAE,OAAM,IAAE,cAAa,GAAG,MAAG;AAAE,QAAOD,MAAE,cAAcU,UAAE,KAAI;EAAC,KAAI;EAAE,GAAG;EAAE,gBAAe;EAAG,MAAK;EAAc,iBAAgB;EAAE,iBAAgB;EAAE,iBAAgB;EAAI,cAAa;EAAE,EAAC,EAAE,IAAE,MAAGV,MAAE,cAAc,OAAM,EAAC,eAAc,CAAC,GAAE,EAAC,EAAE,CAAC,CAAC;EAAE,EAAC,KAAG,OAAO,OAAO,IAAG;CAAC,MAAK;CAAG,MAAK;CAAG,OAAM;CAAG,OAAM;CAAG,WAAU;CAAG,QAAO;CAAG,OAAM;CAAG,SAAQ;CAAG,CAAC;AAAC,SAAS,GAAG,GAAE,GAAE;CAAC,IAAI,IAAE,EAAE;AAAmB,QAAK,IAAG;AAAC,MAAG,EAAE,QAAQ,EAAE,CAAC,QAAO;AAAE,MAAE,EAAE;;;AAAoB,SAAS,GAAG,GAAE,GAAE;CAAC,IAAI,IAAE,EAAE;AAAuB,QAAK,IAAG;AAAC,MAAG,EAAE,QAAQ,EAAE,CAAC,QAAO;AAAE,MAAE,EAAE;;;AAAwB,SAAS,GAAG,GAAE;CAAC,IAAI,IAAEA,MAAE,OAAO,EAAE;AAAC,QAAO,QAAM;AAAC,IAAE,UAAQ;GAAG,EAAC;;AAAE,IAAI,IAAE,OAAO,UAAQ,cAAYA,MAAE,YAAUA,MAAE;AAAgB,SAAS,EAAE,GAAE;CAAC,IAAI,IAAEA,MAAE,QAAQ;AAAC,QAAO,EAAE,YAAU,KAAK,MAAI,EAAE,UAAQ,GAAG,GAAE;;AAAE,SAAS,EAAE,GAAE;CAAC,IAAI,IAAE,IAAI,EAAC,UAAM,EAAE,EAAE,UAAU,CAAC;AAAC,QAAOA,MAAE,qBAAqB,EAAE,WAAU,GAAE,EAAE;;AAAC,SAAS,GAAG,GAAE,GAAE,GAAE,MAAE,EAAE,EAAC;CAAC,IAAI,IAAEA,MAAE,QAAQ,EAAC,IAAE,GAAG;AAAC,QAAO,QAAM;EAAC,IAAI;EAAE,IAAI,WAAO;GAAC,IAAIG;AAAE,QAAI,IAAI,KAAK,GAAE;AAAC,QAAG,OAAO,KAAG,SAAS,QAAO,EAAE,MAAM;AAAC,QAAG,OAAO,KAAG,YAAU,aAAY,EAAE,QAAO,EAAE,WAAS,MAAE,EAAE,QAAQ,gBAAc,OAAK,KAAK,IAAEA,IAAE,MAAM,GAAC,EAAE;;MAAY,EAACD,MAAED,IAAE,KAAI,QAAGE,IAAE,MAAM,CAAC;AAAC,IAAE,MAAM,GAAE,GAAED,IAAE,GAAE,IAAE,EAAE,YAAU,QAAM,EAAE,aAAa,GAAE,EAAE,EAAC,EAAE,UAAQ;GAAG,EAAC;;AAAE,IAAI,WAAO;CAAC,IAAG,CAAC,GAAE,KAAGF,MAAE,UAAU,EAAC,IAAE,wBAAM,IAAI,KAAG,CAAC;AAAC,QAAO,QAAM;AAAC,IAAE,QAAQ,SAAQ,QAAGC,KAAG,CAAC,EAAC,EAAE,0BAAQ,IAAI,KAAG;IAAE,CAAC,EAAE,CAAC,GAAE,KAAE,MAAI;AAAC,IAAE,QAAQ,IAAIA,KAAE,EAAE,EAAC,EAAE,EAAE,CAAC;;;AAAG,SAAS,GAAG,GAAE;CAAC,IAAI,IAAE,EAAE;AAAK,QAAO,OAAO,KAAG,aAAW,EAAE,EAAE,MAAM,GAAC,YAAW,IAAE,EAAE,OAAO,EAAE,MAAM,GAAC;;AAAE,SAAS,EAAE,EAAC,SAAQ,GAAE,UAAS,KAAG,GAAE;AAAC,QAAO,KAAGD,MAAE,eAAe,EAAE,GAACA,MAAE,aAAa,GAAG,EAAE,EAAC,EAAC,KAAI,EAAE,KAAI,EAAC,EAAE,EAAE,MAAM,SAAS,CAAC,GAAC,EAAE,EAAE;;AAAC,IAAI,KAAG;CAAC,UAAS;CAAW,OAAM;CAAM,QAAO;CAAM,SAAQ;CAAI,QAAO;CAAO,UAAS;CAAS,MAAK;CAAmB,YAAW;CAAS,aAAY;CAAI;ACeh1V,SAAS,QAAQ,EACf,WACA,GAAG,SAC6C;AAChD,QACE,iBAAA,GAAA,kBAAA,KAAC,IAAA;EACC,aAAU;EACV,WAAW,cAAA,GACT,6FACA,UACD;EACD,GAAI;GACJ;;AAmCN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,aAAU;EACV,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,oDAAA,CAAqD,EAC3E,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;GAChB,aAAU;GACV,WAAW,cAAA,GACT,wKACA,UACD;GACD,GAAI;IACJ,CAAA;GACE;;AAIV,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,MAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,+DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;EAChB,aAAU;EACV,WAAU;EACV,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,OAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,0NACA,UACD;EACD,GAAI;GACJ;;AAiBN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,iBAAA,GAAA,kBAAA,KAAC,GAAiB,MAAA;EAChB,aAAU;EACV,WAAW,cAAA,GACT,uYACA,UACD;EACD,GAAI;GACJ;;AChJN,MAAa,iBAAA,GAAA,yBAAA,KACX,oHACA;CACE,UAAU,EACR,MAAM;EAIJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;ACQD,SAAgB,2BAA0C;AACxD,QAAO;EACL,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;;AAmBH,MAAa,yBAAyB,cAAA,GAEpC,6BAGA,+BAGA,aAGA,mCACA,0CACA,yCACD;AAyHD,MAAa,2BAA2B,cAAA,GACtC,aACA,8BACD;AAgBD,MAAa,uBAAuB,cAAA,GAClC,+BACA,uBACA,2BACD;ACnHD,SAAS,mBACP,EACE,SAAA,WACA,OACA,UACA,cAAc,oBACd,YAAY,qBACZ,oBAAoB,aACpB,eAAe,SACf,WAAW,OACX,WACA,kBACA,YAAY,OACZ,OAAO,UACP,QAAQ,SAER,OACA,OACA,SACA,WAAW,OACX,MAAA,SAAO,MACP,aAAa,MACb,MAAM,eAER,KACA;CACA,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAoB,MAAM;CACvC,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,GAAG;CACxC,MAAM,WAAA,GAAA,MAAA,QAAiB;CAGvB,MAAM,kBAAA,GAAA,MAAA,eACE,UAAQ,MAAM,QAAQ,IAAI,UAAU,MAAM,EAChD,CAAC,WAAS,MAAM,CACjB;CAGD,MAAM,mBAAA,GAAA,MAAA,eAAgC;AACpC,MAAI,CAAC,OAAQ,QAAO;EACpB,MAAM,cAAc,OAAO,aAAa;AACxC,SAAO,UAAQ,QAAQ,QACrB,IAAI,MAAM,aAAa,CAAC,SAAS,YAAY,CAC9C;IACA,CAAC,WAAS,OAAO,CAAC;CAGrB,MAAM,gBAAA,GAAA,MAAA,cACH,gBAAmB;AAClB,MAAI,aAAa,UAAU,YACzB,YAAW,KAAA,EAAU;MAErB,YAAW,YAAY;AAEzB,UAAQ,MAAM;AACd,YAAU,GAAG;IAEf;EAAC;EAAO;EAAU;EAAU,CAC7B;CAGD,MAAM,sBAAsB;AAO1B,SAN+C;GAC7C,OAAO;GACP,SAAS;GACT,QAAQ;GACR,SAAS;GACV,CACe;;CAIlB,MAAM,kBACJ,iBAAA,GAAA,kBAAA,MAAC,SAAA;EAAc;EAAM,cAAc;aACjC,iBAAA,GAAA,kBAAA,KAAC,gBAAA;GAAe,SAAA;aACd,iBAAA,GAAA,kBAAA,MAAC,aAAA;IACM;IACL,SAAQ;IACR,MAAK;IACL,iBAAe;IACf,iBAAc;IACd,cAAY,gBAAgB,SAAS;IACrC,oBAAkB,QAAQ,GAAG,QAAQ,UAAU,UAAU,GAAG,QAAQ,YAAY,KAAA;IACtE;IACV,WAAW,cAAA,GACT,0BAEA,cAAc,EAAE,MAAA,QAAM,CAAC,EACvB,CAAC,kBAAkB,yBACnB,UACD;eAED,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;gBACb,eAAe,iBAAA,GAAA,kBAAA,KAAC,aAAA,EAAY,WAAW,WAAW,IAAA,CAAM,EACxD,iBAAiB,eAAe,QAAQ,YAAA;MACpC,EACP,iBAAA,GAAA,kBAAA,KAAC,aAAA,oBAAA,EAAmB,WAAW,cAAA,GAAG,WAAW,IAAI,sBAAsB,EAAA,CAAI,CAAA;KAC/D;IACC,EACjB,iBAAA,GAAA,kBAAA,KAAC,gBAAA;GACO;GACC;GACP,WAAW,cAAA,GACT,8EACA,eAAe,EACf,iBACD;GACD,OAAO,0BAA0B;aAEjC,iBAAA,GAAA,kBAAA,MAAC,SAAA;IACC,cAAc;IACd,WAAW,cAAA,GACT,kBAEA,oDAEA,sEACA,uDACD;eAEA,cACC,iBAAA,GAAA,kBAAA,KAAC,cAAA;KACC,aAAa;KACb,OAAO;KACP,eAAe;KACf,WAAU;MACV,EAEJ,iBAAA,GAAA,kBAAA,MAAC,aAAA;KAAY,WAAU;gBACrB,iBAAA,GAAA,kBAAA,KAAC,cAAA;MAAa,WAAU;gBAAiC;OAAyB,EAClF,iBAAA,GAAA,kBAAA,KAAC,cAAA;MAAa,WAAU;gBACrB,gBAAgB,KAAK,WAAW;OAC/B,MAAM,aAAa,OAAO;OAC1B,MAAM,aAAa,UAAU,OAAO;AAEpC,cACE,iBAAA,GAAA,kBAAA,MAAC,aAAA;QAEC,OAAO,OAAO,OAAO,MAAM;QAC3B,UAAU,OAAO;QACjB,gBAAgB,aAAa,OAAO,MAAM;QAC1C,WAAW,cAAA,GACT,mEACA,iDACA,oCACA,wDACA,cAAc,+EACd,OAAO,YAAY,gCACpB;;SAED,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EACC,WAAW,cAAA,GACT,WAAW,IACX,YACA,aAAa,0CAA0C,YACxD,EAAA,CACD;SACD,cAAc,iBAAA,GAAA,kBAAA,KAAC,YAAA,EAAW,WAAW,cAAA,GAAG,WAAW,IAAI,uCAAuC,EAAA,CAAI;SACnG,iBAAA,GAAA,kBAAA,KAAC,QAAA;UAAK,WAAU;oBAAY,OAAO;WAAa;;UArB3C,OAAO,OAAO,MAAM,CAsBb;QAEhB;OACW,CAAA;MACH,CAAA;KACN;IACK,CAAA;GACT;AAIZ,KAAI,SAAS,SAAS,QACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA;EACQ;EACA;EACE;EACC;EACV,SAAS;YAER;GACgB;AAIvB,QAAO;;AAIT,MAAa,iBAAA,GAAA,MAAA,YAA2B,mBAAmB;AAK3D,mBAAmB,cAAc;AC7EjC,MAAa,gBAAgB,MAAM,YAGhC,EAAE,SAAS,OAAO,QAAQ,QAAQ,aAAa,QAAQ;AACxD,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,yBAAyB,UAAU;YAC9D,iBAAA,GAAA,kBAAA,MAAC,+BAAsB,MAAA,EAAA,UAAA,CACrB,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,SAAA;GAAQ,SAAA;aAC5B;IAC6B,EAElC,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,QAAA,EAAA,UACrB,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,SAAA;GACrB,OAAO,UAAU,SAAS,UAAU;GACpC,YAAY;GACZ,WAAW;GACX,OAAO,0BAA0B;GACjC,MAAK;GACL,oBAAiB;aAEhB,MAAM,KAAK,MAAM,QAChB,KAAK,UACH,iBAAA,GAAA,kBAAA,KAAC,+BAAsB,WAAA;IAErB,WAAU;IACV,OAAO,EACL,WAAW,qCACZ;IACD,MAAK;MALA,WAAW,MAMhB,GAEF,iBAAA,GAAA,kBAAA,MAAC,+BAAsB,MAAA;IAErB,SAAS,KAAK;IACd,WAAW,cAAA,GACT,0GACA,8BACA,2CACA,kEACA,sDACA,KAAK,SACD,uFACA,mCACL;IACD,MAAK;eAEJ,KAAK,QACJ,iBAAA,GAAA,kBAAA,KAAC,KAAK,MAAA,EACJ,WAAW,cAAA,GACT,WAAW,IACX,oDACA,KAAK,SACD,oCACA,yFACL,EAAA,CACD,EAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;eAAe,KAAK;MAAa,CAAA;MAzB5C,QAAQ,MA0Bc,CAEhC;IAC6B,EAAA,CACH,CAAA,EAAA,CACF;GACzB;EAER;AAEF,cAAc,cAAc;AClR5B,MAAa,iBAAA,GAAA,yBAAA,KAAoB,sCAAsC;CACrE,UAAU;EACR,WAAW;GACT,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,OAAO;GACL,MAAM;GACN,OAAO;GACR;EAGD,SAAS;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,UAAU;GACX;EACF;CACD,iBAAiB;EACf,WAAW;EACX,OAAO;EACP,SAAS;EACV;CACF,CAAC;ACLF,IAAMc,UAAyC;CAC7C,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAwFD,IAAMC,WAA0C;CAC9C,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAED,IAAMC,eAA8C;CAClD,QAAQ;CACR,QAAQ;CACR,QAAQ;CACT;AAED,IAAMC,aAAqC;CACzC,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,MAAM;CACP;AAED,MAAa,aAAA,GAAA,MAAA,aAET,EACE,UAAU,OACV,UACA,WACA,YAAY,UACZ,OAAO,MACP,QAAQ,MACR,UAAU,WACV,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,eAAe,aAAa;CAElC,MAAMC,aAA4B;EAChC,YAAY,aAAa,QAAQ,yBAAyB,SAAS;EACnE,aAAa,aAAa,QAAQ,6BAA6B,aAAa;EAC5E,gBAAgB,QAAQ,QAAQ,cAAc;EAC9C,sBAAsB,QAAQ,QAAQ,cAAc;EACpD,WAAW,OACP,WAAW,QACX,aAAa,QACX,2BACA;EACP;AAKD,QACE,iBAAA,GAAA,kBAAA,KAHW,UAAU,sBAAA,OAAO,OAG3B;EACM;EACL,WAAW,cAAA,GAAG,cAAc;GAAE;GAAW;GAAO;GAAS,CAAC,EAAE,UAAU;EACtE,OAAO;EACP,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;EAEH;GACI;EAGZ;AAED,UAAU,cAAc;AChKxB,IAAM,kBACJ,WACA,OACA,YACkB;CAElB,IAAI,cAAc;AAClB,KAAI,MACF,eAAc;UACL,QACT,eAAc;UACL,UACT,eAAc;AAGhB,QAAO;EACL,YAAY;EACZ,QAAQ,aAAa;EACrB,OAAO;EACP,WAAW,YAAY,sBAAsB;EAC9C;;AAiHH,MAAa,cAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,QACA,WACA,OACA,OACA,SACA,MAAM,MACN,eAAe,QACf,UACA,SACA,QACA,GAAG,SAEL,QACG;CAEH,MAAM,YAAY,UAAQ,aAAa;AAGvC,KAAA,QAAA,IAAA,aAA6B,gBAAgB,cAAc,KAAA,EACzD,SAAQ,KACN,mGACD;CAGH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAG5C,MAAM,eAAA,GAAA,MAAA,cACH,MAAoC;AACnC,aAAW,QAAQ,EAAE;AACrB,YAAU,EAAE;IAEd,CAAC,YAAY,QAAQ,CACtB;CAED,MAAM,cAAA,GAAA,MAAA,cACH,MAAoC;AACnC,aAAW,OAAO,EAAE;AACpB,WAAS,EAAE;IAEb,CAAC,YAAY,OAAO,CACrB;CAED,MAAM,UAAU,QAAQ,KAAK;CAC7B,MAAM,cAAc,WAAW,iBAAiB,SAAS,UAAU;CACnE,MAAM,eAAe,WAAW,iBAAiB,UAAU,UAAU;AAErE,QACE,iBAAA,GAAA,kBAAA,KAAC,kBAAA;EACQ;EACA;EACE;EACT,SAAS,MAAM;EACJ;YAEX,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;;IACZ,QAAQ,iBAAiB,UACxB,iBAAA,GAAA,kBAAA,KAAC,MAAA;KACC,WAAW,cAAA,GACT,4FACA,WAAW,GACZ;KACD,OAAO,EACL,OAAO,YAAY,uBAAuB,qBAC3C;MACD;IAEJ,iBAAA,GAAA,kBAAA,KAAC,SAAA;KACM;KACL,WAAW,cAAA,GACT,cAAc,EAAE,MAAM,WAAW,CAAC,EAClC,aACA,aACD;KACD,OAAO,eAAe,WAAW,OAAO,QAAQ;KACtC;KACV,SAAS;KACT,QAAQ;KACR,GAAI;MACJ;IACD,QAAQ,iBAAiB,WACxB,iBAAA,GAAA,kBAAA,KAAC,MAAA;KACC,WAAW,cAAA,GACT,8FACA,WAAW,GACZ;KACD,OAAO,EACL,OAAO,YAAY,uBAAuB,qBAC3C;MACD;;IAEA;GACW;EAGxB;AAED,WAAW,cAAc;AC5PzB,MAAa,cAAA,GAAA,yBAAA,KAAiB,+DAA+D;CAC3F,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;EACP,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACmCF,IAAM,2BAA2B;AAMjC,IAAM,uBAA6B;AACjC,KAAI,OAAO,aAAa,YAAa;AACrC,UAAS,KAAK,MAAM,WAAW;;AAGjC,IAAM,yBAA+B;AACnC,KAAI,OAAO,aAAa,YAAa;AACrC,UAAS,KAAK,MAAM,WAAW;;AAGjC,IAAM,SAAS,OAA8B;AAC3C,QAAO,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;;AAc1D,IAAM,gBAAA,GAAA,MAAA,eAAuD,KAAK;AAElE,IAAM,wBAAwB;CAC5B,MAAM,WAAA,GAAA,MAAA,YAAqB,aAAa;AACxC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,gEAAgE;AAElF,QAAO;;AAgHT,IAAMC,aAAiC,EACrC,MACA,cACA,MAAA,SAAO,MACP,UACA,GAAG,YACC;CACJ,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,eAAA,GAAA,MAAA,aAA0B,YAAY;AAC1C,eAAa,KAAK;AAClB,QAAM,MAAM,yBAAyB;AACrC,eAAa,MAAM;AACnB,iBAAe,MAAM;IACpB,CAAC,aAAa,CAAC;AAElB,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,KACF,iBAAgB;MAEhB,mBAAkB;AAEpB,eAAa;AACX,qBAAkB;;IAEnB,CAAC,KAAK,CAAC;AAEV,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,KAAM;EAEX,MAAM,gBAAgB,UAA+B;AACnD,OAAI,MAAM,QAAQ,SAChB,cAAa;;AAIjB,WAAS,iBAAiB,WAAW,aAAa;AAClD,eAAa;AACX,YAAS,oBAAoB,WAAW,aAAa;;IAEtD,CAAC,MAAM,YAAY,CAAC;AAEvB,KAAI,CAAC,KAAM,QAAO;AAElB,QACE,iBAAA,GAAA,kBAAA,KAAC,aAAa,UAAA;EAAS,OAAO;GAAE,QAAQ;GAAM,SAAS;GAAa,MAAA;GAAM;GAAW;YACnF,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,MAAK;GACL,cAAW;GACX,mBAAgB;GAChB,GAAI;GAEH;IACG;GACgB;;AAY5B,IAAMC,gBAAuC,EAAE,gBAAgB;CAC7D,MAAM,EAAE,SAAS,cAAc,iBAAiB;CAEhD,MAAMC,iBAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,gBAAgB;EAChB,sBAAsB;EACtB,SAAS,YAAY,IAAI;EACzB,YAAY;EACb,GACD,CAAC,UAAU,CACZ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACC,WAAW,cAAA,GAAG,gDAAgD,UAAU;EACxE,OAAO;EACP,SAAS;EACT,eAAY;GACZ;;AAaN,IAAM,gBAAA,GAAA,MAAA,aACH,EAAE,UAAU,aAAa,QAAQ;CAChC,MAAM,EAAE,MAAA,QAAM,cAAc,iBAAiB;CAE7C,MAAMC,eAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACtB,WAAW,YAAY,iCAAiC;EACxD,SAAS,YAAY,IAAI;EACzB,WAAW,CAAC,YAAY,8BAA8B;EACvD,GACD,CAAC,UAAU,CACZ;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,WAAW,EAAE,MAAA,QAAM,CAAC,EAAE,UAAU;EAAE,OAAO;aAEpE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EACL,YAAY,4BACb;IACD,EACD,SAAA;GACG;EAGX;AAED,aAAa,cAAc;AAW3B,IAAMC,eAAqC,EAAE,UAAU,gBAAgB;AACrE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,0DAA0D,UAAU;EACpF;GACG;;AAaV,IAAMC,aAAiC,EAAE,UAAU,gBAAgB;AACjE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,YAAY,UAAU;EAAE,OAAO,EAAE,OAAO,yBAAyB;EACjF;GACG;;AAaV,IAAMC,eAAqC,EAAE,UAAU,gBAAgB;AACrE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EAAI,WAAW,cAAA,GAAG,gDAAgD,UAAU;EAC1E;GACG;;AAaV,IAAMC,cAAmC,EAAE,UAAU,gBAAgB;AACnE,QACE,iBAAA,GAAA,kBAAA,KAAC,MAAA;EACC,IAAG;EACH,WAAW,cAAA,GAAG,oCAAoC,UAAU;EAC5D,OAAO,EAAE,OAAO,uBAAuB;EAEtC;GACE;;AAaT,IAAMC,oBAA+C,EAAE,UAAU,gBAAgB;AAC/E,QACE,iBAAA,GAAA,kBAAA,KAAC,KAAA;EACC,IAAG;EACH,WAAW,cAAA,GAAG,6BAA6B,UAAU;EACrD,OAAO,EAAE,OAAO,qBAAqB;EAEpC;GACC;;AAYR,IAAMC,cAAmC,EAAE,gBAAgB;CACzD,MAAM,EAAE,YAAY,iBAAiB;CACrC,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CAEvE,MAAMC,qBAAAA,GAAAA,MAAAA,gBACG;EACL,YAAY;EACZ,QAAQ;EACR,OAAO;EACP,WAAW,iBACP,sBACA,YACE,sCACA;EACN,SAAS;EACV,GACD,CAAC,WAAW,eAAe,CAC5B;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACC,SAAS;EACT,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,SAAS,WAAW;EACpB,QAAQ,WAAW;EACnB,WAAW,cAAA,GACT,uDACA,UACD;EACD,OAAO;EACP,MAAK;EACL,cAAW;YAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA,EAAE,WAAW,WAAW,IAAA,CAAM;GACxB;;AA+Bb,MAAa,aAAa;CACxB,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,QAAQ;CACR,OAAO;CACP,aAAa;CACb,OAAO;CACR;AClgBD,MAAa,wBAAA,GAAA,yBAAA,KACX,oJACA;CACE,UAAU,EACR,MAAM;EACJ,MAAM;EACN,SAAS;EACT,SAAS;EACT,OAAO;EACR,EACF;CACD,iBAAiB,EACf,MAAM,QACP;CACF,CACF;ACCD,IAAM,qBAAqB;CACzB,MAAM,aAAA;CACN,SAAS,aAAA;CACT,SAAS,aAAA;CACT,OAAO,aAAA;CACR;AAuBD,IAAM,eAAe,cAAiF;AAOpG,QAN2F;EACzF,MAAM;GAAE,OAAO;GAAkC,MAAM;GAAiC,QAAQ;GAAoC;EACpI,SAAS;GAAE,OAAO;GAAqC,MAAM;GAAoC,QAAQ;GAAuC;EAChJ,SAAS;GAAE,OAAO;GAAqC,MAAM;GAAoC,QAAQ;GAAuC;EAChJ,OAAO;GAAE,OAAO;GAAmC,MAAM;GAAkC,QAAQ;GAAqC;EACzI,CACc;;AAGjB,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,SAAS,aAAa,MAAM,UAAU,OAAO,SAAS,SAAS,WAAW,GAAG,SAAS,QAAQ;CAE/F,MAAM,UAAU,eAAe,YAAY;AAG3C,KAAA,QAAA,IAAA,aAA6B,iBAAiB,SAC5C,SAAQ,KACN,sIACD;CAcH,MAAMG,gBAVkD;EACtD,SAAS;EACT,aAAa;EACb,SAAS;EACT,SAAS;EAET,MAAM;EACN,OAAO;EACR,CAEqD,YAAY;CAElE,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,OAAO,mBAAmB;CAChC,MAAM,SAAS,YAAY,cAAc;CAEzC,MAAMC,kBAAiC;EACrC,YAAY;EACZ,QAAQ;EACR,WAAW,YAAY,OAAO,OAAO;EACrC,WAAW,YAAY,qBAAqB;EAC7C;CAED,MAAMC,sBAAqC;EACzC,YAAY,OAAO;EACnB,WAAW,YAAY,OAAO,OAAO;EACtC;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qBAAqB,EAAE,MAAM,eAAe,CAAC,EAAE,UAAU;EACvE,OAAO;EACP,MAAK;EACL,aAAU;EACV,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,GAAI;;GAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO;cAEP,iBAAA,GAAA,kBAAA,KAAC,MAAA;KAAK,WAAU;KAAwB,OAAO,EAAE,OAAO,OAAO,OAAO;MAAI;KACtE;GAGN,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAkD,OAAO,EAAE,OAAO,uBAAuB;eACnG;MACC,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAA;KAAE,WAAU;KAAqB,OAAO,EAAE,OAAO,yBAAyB;eACxE;MACC,CAAA;KACA;GAGN,iBAAA,GAAA,kBAAA,KAAC,UAAA;IACC,SAAS;IACT,WAAU;IACV,OAAO,EAAE,OAAO,qBAAqB;IACrC,MAAK;IACL,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,GAAA,EAAE,WAAW,WAAW,IAAA,CAAM;KACxB;;GACL;EAGX;AAED,kBAAkB,cAAc;ACxFhC,MAAa,eAAe,MAAM,YAK9B,EACE,SACA,UACA,OAAO,UACP,QAAQ,UACR,aAAa,GACb,MACA,cACA,YAAY,MACZ,aAEF,QACG;CAEH,MAAMC,gBAAqC;EACzC,YAAY;EACZ,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;CAGD,MAAMC,cAAmC,EACvC,MAAM,2BACP;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAiB;EAAW;EAAoB;aAC/C,iBAAA,GAAA,kBAAA,KAAC,SAAiB;GAAQ,SAAA;aAAS;IAAmC,EAEtE,iBAAA,GAAA,kBAAA,KAAC,UAAiB,EAAA,UAChB,iBAAA,GAAA,kBAAA,MAAC,UAAiB;GACX;GACC;GACC;GACK;GACZ,WAAW,cAAA,GACT,yBACA,gDACA,0CACA,0CACA,0CACA,0CACA,gBACA,UACD;GACD,OAAO;GACP,MAAK;GACL,cAAW;cAEV,UAEA,aACC,iBAAA,GAAA,kBAAA,KAAC,QAAiB;IAChB,WAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;KACR,CAAA;IAEqB,EAAA,CACH,CAAA;GACJ;EAG7B;AAED,aAAa,cAAc;AC5H3B,MAAa,oBAAA,GAAA,yBAAA,KAAuB,mBAAmB;CACrD,UAAU,EACR,SAAS;EACP,MAAM;EACN,OAAO;EACP,QAAQ;EACR,WAAW;EACX,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CAAC;ACQF,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,UAAU,QACV,OACA,QACA,OACA,GAAG,SAEL,QACG;CACH,MAAMC,iBAAgC;EACpC;EACA;EACA,YAAY;EACZ,gBAAgB;EAChB,WAAW;EACX,GAAG;EACJ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,iBAAiB,EAAE,SAAS,CAAC,EAAE,UAAU;EACvD,OAAO;EACP,eAAY;EACZ,GAAI;GACJ;EAGP;AAED,cAAc,cAAc;ACzB5B,MAAa,eAAA,GAAA,MAAA,aAET,EACE,WACA,OACA,UACA,KAAA,QAAM,GACN,KAAA,QAAM,KACN,OAAO,GACP,WACA,OACA,OACA,SACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CAEnD,MAAM,cAAe,QAAQ,UAAQ,QAAM,SAAQ;CAEnD,MAAMC,cAA6B,EACjC,YAAY,uBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,WAAW;EACrB,YAAY;EACZ,WACE,aAAa,aACT,4BACA,KAAA;EACP;CAED,MAAMC,cAA6B;EACjC,MAAM,QAAQ,WAAW;EACzB,YAAY;EACZ,QAAQ;EACR,WAAW,iBACP,sBACA,aAAa,aACX,6BACA;EACN,WAAW,aACP,gBACA,YACE,gBACA;EACP;CAID,MAAM,cAAe,SAAS,aAAe,CAAC,SAAS,YACrD,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAI,WAAU;aACZ,SACC,iBAAA,GAAA,kBAAA,KAAC,SAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC;IACK,EAEV,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC;IACI,CAAA;GACH,GACJ,KAAA;AAEJ,QACE,iBAAA,GAAA,kBAAA,MAAC,kBAAA;EACC,OAAO,YAAY,KAAA,IAAY;EACxB;EACE;EACT,WAAW,cAAA,GAAG,UAAU,UAAU;aAEjC,aACD,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,cAAc,WAAW;GACzB,cAAc,WAAW;;IAGzB,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;IAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;IAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA;KACM;KACL,MAAK;KACE;KACP,WAAW,MAAM,SAAS,OAAO,EAAE,OAAO,MAAM,CAAC;KACjD,mBAAmB,cAAc,KAAK;KACtC,iBAAiB,cAAc,MAAM;KACrC,oBAAoB,cAAc,KAAK;KACvC,kBAAkB,cAAc,MAAM;KACtC,SAAS,WAAW;KACpB,QAAQ,WAAW;KACd,KAAA;KACA,KAAA;KACC;KACI;KACV,cAAY,SAAS,WAAW,MAAM,IAAI,MAAI,GAAG,MAAI;KACrD,iBAAe;KACf,iBAAe;KACf,iBAAe;KACf,kBAAgB,GAAG;KACnB,WAAU;KACV,OAAO,EAAE,SAAS,QAAQ;KAC1B,GAAI;MACJ;IAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;MACP;;IACE,CAAA;GACW;EAGxB;AAED,YAAY,cAAc;AC5G1B,IAAM,eAAA,GAAA,MAAA,eAAqD,KAAK;AAEhE,IAAM,uBAAuB;CAC3B,MAAM,WAAA,GAAA,MAAA,YAAqB,YAAY;AACvC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,8DAA8D;AAEhF,QAAO;;AAqGT,IAAMC,YAA+B,EAAE,OAAO,eAAe,UAAU,gBAAgB;AACrF,QACE,iBAAA,GAAA,kBAAA,KAAC,YAAY,UAAA;EAAS,OAAO;GAAE;GAAO;GAAe;YACnD,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAW,cAAA,GAAG,mBAAmB,UAAU;GAAG;IAAe;GAC7C;;AAa3B,IAAM,YAAA,GAAA,MAAA,aACH,EAAE,UAAU,WAAW,GAAG,SAAS,QAAQ;AAM1C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wDAAwD,UAAU;EAChF,OATmC;GACrC,YAAY;GACZ,QAAQ;GACT;EAOG,MAAK;EACL,GAAI;EAEH;GACG;EAGX;AAED,SAAS,cAAc;AAiBvB,IAAM,eAAA,GAAA,MAAA,aACH,EAAE,OAAO,UAAU,WAAW,YAAY,QAAQ;CACjD,MAAM,EAAE,OAAO,aAAa,kBAAkB,gBAAgB;CAC9D,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,WAAW,gBAAgB;CAEjC,MAAME,YAA2B;EAC/B,YAAY,WAAW,yBAAyB;EAChD,OAAO,WAAW,2BAA2B;EAC7C,WAAW,kBAAkB,CAAC,WAAW,sBAAsB;EAChE;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;EACM;EACL,MAAK;EACL,MAAK;EACL,iBAAe;EACL;EACV,WAAW,cAAA,GACT,6IACA,YAAY,iCACZ,UACD;EACD,OAAO;EACP,eAAe,CAAC,YAAY,gBAAgB,MAAM;EAClD,SAAS,WAAW;EACpB,QAAQ,WAAW;aAElB,UACA,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,YAAY,wBAAwB;IAC7C,CAAA;GAEG;EAGd;AAED,YAAY,cAAc;AAe1B,IAAMC,eAAqC,EAAE,OAAO,UAAU,gBAAgB;CAC5E,MAAM,EAAE,OAAO,gBAAgB,gBAAgB;CAC/C,MAAM,WAAW,gBAAgB;AAEjC,KAAI,CAAC,SAAU,QAAO;AAEtB,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACC,MAAK;EACL,eAAa,CAAC;EACd,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAE5D;GACG;;AA6BV,MAAa,YAAY;CACvB,MAAM;CACN,MAAM;CACN,SAAS;CACT,SAAS;CACV;AChUD,MAAa,eAAA,GAAA,yBAAA,KAAkB,qDAAqD;CAClF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACCF,IAAM,cAAc;CAClB,IAAI;EAAE,OAAO;EAAW,MAAM;EAAW,WAAW;EAAiB;CACrE,IAAI;EAAE,OAAO;EAAY,MAAM;EAAW,WAAW;EAAiB;CACtE,IAAI;EAAE,OAAO;EAAY,MAAM;EAAW,WAAW;EAAiB;CACvE;AAkBD,MAAa,eAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,SACA,UACA,UACA,OACA,GAAG,SAEL,QACG;CACH,MAAM,EAAE,gBAAgB,eAAe,kBAAA,SAAS,EAAE,cAAc,MAAM,CAAC;CACvE,MAAM,IAAI,YAAY,UAAQ;CAE9B,MAAMC,cAA6B;EACjC,YAAY,UAAU,4BAA4B;EAClD,WAAW,kBAAkB,CAAC,WAC1B,sBACA,UACA,uBACA;EACL;CAED,MAAMC,aAA4B,EAChC,YAAY,sBACb;CAGD,MAAM,SACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA;EAAK,WAAU;YACd,iBAAA,GAAA,kBAAA,KAAC,UAAA;GACM;GACL,MAAK;GACL,MAAK;GACL,gBAAc;GACd,cAAY,SAAS;GACX;GACV,WAAW,cAAA,GACT,YAAY,EAAE,MAAA,QAAM,CAAC,EACrB,WAAW,kCAAkC,kBAC7C,CAAC,SAAS,UACX;GACD,OAAO;GACP,eAAe,CAAC,YAAY,WAAW,CAAC,QAAQ;GAChD,SAAS,WAAW;GACpB,QAAQ,WAAW;GACnB,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAW,cAAA,GACT,gFACA,EAAE,MACF,WAAW,EAAE,UACd;IACD,OAAO;KACP;IACK;GACJ;AAGT,KAAI,MACF,QACE,iBAAA,GAAA,kBAAA,MAAC,SAAA;EACC,WAAW,cAAA,GACT,6CACA,WAAW,kCAAkC,kBAC7C,UACD;aAEA,QACD,iBAAA,GAAA,kBAAA,KAAC,QAAA;GAAK,WAAU;GAAqB,OAAO,EAAE,OAAO,yBAAyB;aAC3E;IACI,CAAA;GACD;AAIZ,QAAO;EAEV;AAED,YAAY,cAAc;ACrH1B,MAAa,oBAAA,GAAA,yBAAA,KACX,6IACA;CACE,UAAU,EACR,UAAU;EACR,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,UAAU,OACX;CACF,CACF;AC4ED,MAAa,gBAAA,GAAA,MAAA,aACV,EAAE,UAAU,SAAS,WAAW,OAAO,aAAa,QAAQ;CAC3D,MAAM,EAAE,WAAW,eAAe,kBAAA,UAAU;CAC5C,MAAM,aAAA,GAAA,MAAA,QAAmB;CAGzB,MAAMC,gBAA+B;EACnC,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,WAAW;EACX,gBAAgB;EAChB,sBAAsB;EACvB;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,cAAc,WAAW;EACzB,cAAc,WAAW;EACzB,oBAAkB,YAAY,YAAY,KAAA;aAEzC,UACA,aACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,IAAI;GACJ,WAAW,cAAA,GAAG,iBAAiB,EAAE,UAAU,CAAC,CAAC;GAC7C,OAAO;GACP,MAAK;aAEJ;IACG,CAAA;GAEJ;EAGX;AAED,aAAa,cAAc;AC7G3B,MAAa,yBAAA,GAAA,MAAA,aAKT,EACE,OACA,MAAM,MACN,YAAY,sBACZ,UACA,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAMC,aAA4B,EAChC,OAAO,uBACR;CAED,MAAMC,gBAA+B,EACnC,OAAO,qBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,WACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;EACM;EACL,MAAK;EACL,SAAS;EACT,iBAAe;EACf,WAAW,cAAA,GACT,+FACA,UACD;EACD,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACZ,QAAQ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IAAK,WAAU;IAAU,OAAO;KAAc,EACxD,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAAe;KAAa,CAAA;IACxC,EACL,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;GAAU,WAAU;GAAU,OAAO;IAAiB,GAEvD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;GAAY,WAAU;GAAU,OAAO;IAAiB,CAAA;GAEpD;EAGd;AAED,sBAAsB,cAAc;ACzEpC,IAAM,sBAAA,GAAA,yBAAA,KACJ,+IACA;CACE,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,OAAO;GACR;EACD,SAAS;GACP,UAAU;GACV,QAAQ;GACR,OAAO;GACR;EACF;CACD,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CACF,CACF;AAaD,MAAa,mBAAA,GAAA,MAAA,aAET,EACE,MAAM,MACN,WAAW,IACX,MAAA,QACA,SACA,WACA,cAAc,WACd,GAAG,SAEL,QACG;CACH,MAAMC,iBACJ,YAAY,aACR;EACE,YACE;EACF,WAAW;EACZ,GACD,KAAA;CAEN,MAAMC,eACJ,YAAY,WACR;EACE,YAAY;EACZ,QAAQ;EACT,GACD,KAAA;CAEN,MAAMC,aAA4B,EAChC,OAAO,wBACR;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,MAAK;EACL,cAAY;EACZ,WAAW,cAAA,GAAG,mBAAmB;GAAE,MAAA;GAAM;GAAS,CAAC,EAAE,UAAU;EAC/D,OAAO,kBAAkB;EACzB,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GAAK,MAAM;GAAU,OAAO;IAAc;GACpC;EAGd;AAED,gBAAgB,cAAc;AChE9B,MAAa,kBAAA,GAAA,MAAA,aAET,EACE,UACA,eAAe,IACf,OAAO,iBACP,UAAU,oBACV,UAAU,WACV,aAAa,wBACb,cAAc,sBACd,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,aAAa;CAChE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,eAAe,oBAAoB,KAAA;CACzC,MAAM,QAAQ,eAAe,kBAAkB;CAE/C,MAAM,gBAAgB,MAA2C;EAC/D,MAAM,WAAW,EAAE,OAAO;AAC1B,MAAI,aACF,sBAAqB,SAAS;MAE9B,kBAAiB,SAAS;;CAI9B,MAAM,qBAAqB;AACzB,aAAW,MAAM;;CAGnB,MAAM,iBAAiB,MAA2B;AAChD,MAAI,EAAE,QAAQ,QACZ,eAAc;;CAIlB,MAAMC,kBAAiC,EACrC,WAAW,YAAY,sBAAsB,QAC9C;CAED,MAAMC,cAA6B;EACjC,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,qBAAqB;EACrB,wBAAwB;EACzB;CAED,MAAMC,eAA8B;EAClC,YAAY;EACZ,OAAO;EACP,sBAAsB;EACtB,yBAAyB;EAC1B;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,WAAW,cAAA,GAAG,yCAAyC,UAAU;EACjE,OAAO;aAEP,iBAAA,GAAA,kBAAA,KAAC,SAAA;GACM;GACL,MAAK;GACE;GACP,UAAU;GACV,eAAe,aAAa,KAAK;GACjC,cAAc,aAAa,MAAM;GACjC,WAAW;GACE;GACb,cAAY;GACZ,WAAW,cAAA,GAAG,iDAAiD,WAAW;GAC1E,OAAO;GACP,GAAI;IACJ,EACF,iBAAA,GAAA,kBAAA,MAAC,UAAA;GACC,SAAS;GACT,MAAK;GACL,WAAW,cAAA,GACT,iGACA,YAAY,aAAa,OAC1B;GACD,OAAO;GACP,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA,EAAO,WAAU,WAAA,CAAY,EAC7B,YAAY,aAAa,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;cAAmB;KAAa,CAAA;IACnE,CAAA;GACL;EAGX;AAED,eAAe,cAAc;ACrG7B,IAAMC,cAAyC;CAC7C,SAAS;CACT,OAAO;CACP,MAAM;CACN,cAAc;CACf;AAuBD,MAAa,qBAAA,GAAA,MAAA,aAET,EACE,QACA,WACA,cACA,SAAA,YAAU;CAAC;CAAW;CAAS;CAAQ;CAAe,EACtD,UAAU,OACV,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,MAAM;CAC3C,MAAM,eAAA,GAAA,MAAA,QAAqC,KAAK;AAGhD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,OAAQ;EAEb,MAAM,sBAAsB,UAA4B;AACtD,OAAI,YAAY,WAAW,CAAC,YAAY,QAAQ,SAAS,MAAM,OAAe,CAC5E,WAAU,MAAM;;EAIpB,MAAM,gBAAgB,UAA+B;AACnD,OAAI,MAAM,QAAQ,SAChB,WAAU,MAAM;;AAIpB,WAAS,iBAAiB,aAAa,mBAAmB;AAC1D,WAAS,iBAAiB,WAAW,aAAa;AAElD,eAAa;AACX,YAAS,oBAAoB,aAAa,mBAAmB;AAC7D,YAAS,oBAAoB,WAAW,aAAa;;IAEtD,CAAC,OAAO,CAAC;CAEZ,MAAM,gBAAA,GAAA,MAAA,mBAAiC;AACrC,aAAW,SAAS,CAAC,KAAK;IACzB,EAAE,CAAC;CAEN,MAAM,qBAAA,GAAA,MAAA,cAAiC,UAAqB;AAC1D,MAAI,UAAU,OAEZ,cAAa,OAAO,cAAc,QAAQ,SAAS,MAAM;MAGzD,cAAa,OAAO,OAAO;AAE7B,YAAU,MAAM;IACf;EAAC;EAAQ;EAAW;EAAa,CAAC;CAErC,MAAM,iBAAiB,MAAiC;AACtD,MAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,KAAE,gBAAgB;AAClB,iBAAc;;;CAKlB,MAAMC,gBAAAA,GAAAA,MAAAA,gBAA6C;EACjD,YAAY;EACZ,QAAQ;EACR,OAAO;EACR,GAAG,EAAE,CAAC;CAEP,MAAMC,kBAAAA,GAAAA,MAAAA,gBAA+C;EACnD,GAAG,0BAA0B;EAC7B,WAAW;EACZ,GAAG,EAAE,CAAC;CAEP,MAAM,WAAW,cAAc,QAAQ,aAAA,UAAU,aAAA;AAEjD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACC,MAAM,SAAS;AAEZ,eAA8D,UAAU;AACzE,OAAI,OAAO,QAAQ,WACjB,KAAI,KAAK;YACA,IACR,KAAsD,UAAU;;EAGrE,WAAW,cAAA,GAAG,yBAAyB,UAAU;EACjD,OAAO,EAAE,QAAQ,SAAS,MAAQ,QAAQ;EAC1C,GAAI;aAGJ,iBAAA,GAAA,kBAAA,KAAC,UAAA;GACC,MAAK;GACL,SAAS;GACT,WAAW;GACX,WAAW,cAAA,GACT,oGACA,wFACA,sCACD;GACD,OAAO;GACP,iBAAe;GACf,iBAAc;aAEb,UACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,QAAA,CAAW,EACjB,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAAS,WAAW,WAAW;IAAI,OAAO,EAAE,OAAO,sBAAsB;KAAI,CAAA,EAAA,CAC7E,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAC,QAAA;KAAK,WAAU;KAAmB,OAAO,EAAE,OAAO,qBAAqB;eAAE;MAAY;IACtF,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAM,YAAY,SAAA,CAAe;IAClC,iBAAA,GAAA,kBAAA,KAAC,UAAA;KAAS,WAAW,WAAW;KAAI,OAAO,EAAE,OAAO,sBAAsB;MAAI;IAC9E,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;KACC,WAAW,cAAA,GACT,WAAW,IACX,qCACA,UAAU,aACX;KACD,OAAO,EAAE,OAAO,qBAAqB;MACrC;OACD;IAEE,EAGR,UACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,QAAQ,OAAO;GACxB,eAAe,UAAU,MAAM;IAC/B,EAEF,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IAAE,GAAG;IAAgB,QAAQ;IAAO;GAC3C,MAAK;GACL,cAAW;aAEV,UAAQ,KAAK,UAAU;IACtB,MAAM,aAAa,UAAU;AAC7B,WACE,iBAAA,GAAA,kBAAA,MAAC,UAAA;KAEC,MAAK;KACL,eAAe,kBAAkB,MAAM;KACvC,WAAW,cAAA,GACT,yFACA,kDACD;KACD,OAAO;MACL,OAAO,aAAa,uBAAuB;MAC3C,YAAY,aAAa,+BAA+B;MACzD;KACD,MAAK;KACL,iBAAe;gBAEf,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;gBAAe,YAAY;OAAc,EACxD,cACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACZ,cAAc,QACb,iBAAA,GAAA,kBAAA,KAAC,aAAA,SAAA,EAAQ,WAAW,WAAW,IAAA,CAAM,GAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAW,WAAW,IAAA,CAAM,EAEzC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA,EAAM,WAAW,WAAW,IAAA,CAAM,CAAA;OAC/B,CAAA;OAvBH,MAyBE;KAEX;IACE,CAAA,EAAA,CACL,CAAA;GAED;EAGX;AAED,kBAAkB,cAAc;ACpOhC,IAAM,oBAAA,GAAA,yBAAA,KAAuB,2BAA2B;CACtD,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,QAAQ;GACN,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB;EACf,MAAM;EACN,QAAQ;EACT;CACF,CAAC;AAiBF,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,MAAM,MACN,OACA,OACA,WAAW,IACX,cAAc,OACd,MAAA,QACA,QACA,WACA,GAAG,SAEL,QACG;CACH,MAAMC,aAA4B,EAChC,OAAO,yBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;CAED,MAAM,eAAe,QAAiC;AACpD,MAAI,CAAC,eAAe,OAAO,QAAQ,SAAU,QAAO,OAAO,IAAI;AAE/D,MAAI,OAAO,IAAS,QAAO,IAAI,MAAM,KAAS,QAAQ,EAAE,CAAC;AACzD,MAAI,OAAO,IAAM,QAAO,IAAI,MAAM,KAAM,QAAQ,EAAE,CAAC;AACnD,SAAO,OAAO,IAAI;;AAGpB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;EACM;EACL,WAAW,cAAA,GAAG,iBAAiB;GAAE,MAAA;GAAM;GAAQ,CAAC,EAAE,UAAU;EAC5D,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GAAK,MAAM;GAAU,OAAO;IAAc,EAC3C,iBAAA,GAAA,kBAAA,MAAC,QAAA;GAAK,WAAU;;IACb,YAAY,MAAM;IAAC;IAAE;;IACjB,CAAA;GACF;EAGZ;AAED,cAAc,cAAc;AChF5B,IAAMC,WAAsB;CAAC;CAAS;CAAU;CAAQ;AAExD,IAAMC,gBAAsE;CAC1E,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAWD,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,UAAU,WAAW,IAAI,WAAW,OAAO,WAAW,GAAG,SAAS,QAAQ;CAC3E,MAAM,EAAE,OAAO,eAAe,sBAAA,UAAU;CAExC,MAAM,YAAY,UAAQ,SAAO,QAAQ,MAAM,GAAG,KAAK,SAAO;CAC9D,MAAM,WAAW,cAAY,WAAW;CACxC,MAAM,YAAY,cAAY,WAAW;CAEzC,MAAMC,eAA8B;EAClC,YAAY;EACZ,QAAQ;EACT;CAED,MAAMC,aAA4B,EAChC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,MAAK;EACL,SAAS,YAAY;EACrB,cAAY,aAAa,UAAU;EACnC,WAAW,cAAA,GACT,oHACA,YAAY,oBACZ,UACD;EACD,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAAS,MAAM;IAAU,OAAO;KAAc,EAC9C,CAAC,YACA,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAuC,OAAO;cAC3D;KACI,CAAA;IAEL;GACC;EAGd;AAED,iBAAiB,cAAc;ACxC/B,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,GAAG,KAAA,QAAM,KAAK,WAAW,UAAU,GAAG,SAAS,QAAQ;CAChE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAO,IAAI,CAAC;AAElE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,oDACA,+BACA,UACD;EACD,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,kBAAgB,GAAG,KAAK,MAAM,WAAW,CAAC;EAC1C,GAAI;YAEH,OAAO,aAAa,aACjB,SAAS,WAAW,GACpB,YACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IACL,OAAO,GAAG,WAAW;IACrB,YAAY;IACb;IACD;GAEJ;EAGX;AAED,kBAAkB,cAAc;ACnDhC,IAAMC,gBAA0C;CAC9C,QAAQ;CACR,OAAO;CACR;AAED,IAAMC,gBAA4C;CAChD,OAAO;CACP,QAAQ;CACR,KAAK;CACN;AAGD,IAAMC,iBAAiE;CACrE,OAAO;EAAE,IAAI;EAAwB,MAAM;EAA6B;CACxE,QAAQ;EAAE,IAAI;EAAsB,MAAM;EAA2B;CACrE,KAAK;EAAE,IAAI;EAAsB,MAAM;EAA2B;CACnE;AAED,MAAa,wBAAA,GAAA,MAAA,aACV,EAAE,OAAO,SAAS,MAAA,SAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;CACjE,MAAM,SAAS,eAAa;CAE5B,MAAMC,kBAAiC;EACrC,iBAAiB,OAAO;EACxB,WAAW,OAAO;EACnB;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,iDACA,cAAY,SACZ,UACD;EACD,OAAO;EACP,MAAK;EACL,cAAY,WAAW;EACvB,GAAI;YAEH,WAAS,WACR,iBAAA,GAAA,kBAAA,KAAC,QAAA;GAAK,WAAU;aACb,cAAc;IACV;GAEL;EAGX;AAED,qBAAqB,cAAc;AChDnC,IAAMC,aAAqG;CACzG,QAAQ;EACN,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,YAAY;EACb;CACD,SAAS;EACP,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,YAAY;EACb;CACF;AAED,MAAa,kBAAA,GAAA,MAAA,aACV,EAAE,OAAO,WAAW,OAAO,aAAa,WAAW,GAAG,SAAS,QAAQ;CACtE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CACjD,MAAM,SAAS,WAAW;CAE1B,MAAMC,cAA6B;EACjC,YAAY,OAAO;EACnB,aAAa,OAAO;EACpB,WAAW,YAAY,oBAAoB;EAC5C;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,8DACA,UACD;EACD,OAAO;EACP,oBAAoB,aAAa,KAAK;EACtC,oBAAoB,aAAa,MAAM;EACvC,MAAK;EACL,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,OAAO,MAAM;cAE7B,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,OAAO,YAAA,CAAc,EAChD,MAAA;IACG,EACL,eACC,iBAAA,GAAA,kBAAA,KAAC,KAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,qBAAqB;aAEpC;IACC,CAAA;GAEF;EAGX;AAED,eAAe,cAAc;AC1D7B,IAAMC,oBAA4C;CAChD,YAAY;CACZ,YAAY;CACZ,QAAQ;CACR,MAAM;CACN,KAAK;CACL,MAAM;CACN,IAAI;CACJ,MAAM;CACN,MAAM;CACN,KAAK;CACN;AAED,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,YAAY,EAAE,EAAE,aAAa,MAAM,WAAW,GAAG,SAAS,QAAQ;CACnE,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA0C,KAAK;CAEnE,MAAMC,YAA2B,EAC/B,WAAW,uBACZ;AAGD,KAAI,CAAC,aAAa,UAAU,WAAW,EACrC,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,UAAU,UAAU;EAAE,GAAI;aAErD,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;GACP,MAAK;GACL,cAAW;aAEV,UAAU,KAAK,MAAM,MAAM;IAC1B,MAAM,aAAa,KAAK,SAAS,kBAAkB,KAAK,SAAS;IACjE,MAAMC,gBAA+B;KACnC,OAAO,GAAG,KAAK,QAAQ;KACvB,SAAS,gBAAgB,QAAQ,gBAAgB,IAAI,KAAM;KAC3D,YAAY;KACb;AAED,WACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAEC,WAAW,cAAA,GAAG,WAAW;KACzB,OAAO;KACP,MAAK;KACL,cAAY,GAAG,KAAK,KAAK,IAAI,KAAK,QAAQ;KAC1C,iBAAe,KAAK;KACpB,iBAAe;KACf,iBAAe;KACf,oBAAoB,eAAe,EAAE;KACrC,oBAAoB,eAAe,KAAK;OATnC,OAAO,KAAK,KAAK,GAAG,IAUzB;KAEJ;IACE,EAGL,cACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,yBAAyB;aAExC,UAAU,KAAK,MAAM,MAAM;AAG1B,WACE,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAEC,WAAU;KACV,oBAAoB,eAAe,EAAE;KACrC,oBAAoB,eAAe,KAAK;;MAExC,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAK,WAAW,cAAA,GAAG,0CATL,KAAK,SAAS,kBAAkB,KAAK,SAAS,eASY,EAAA,CAAI;MAC5E,KAAK;MAAK;MAAE,KAAK;MAAQ;;OANrB,UAAU,KAAK,KAAK,GAAG,IAOvB;KAET;IACE,CAAA;GAEJ;EAGX;AAED,iBAAiB,cAAc;AChG/B,IAAMC,gBAAiD;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAMC,oBAAuD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAMC,wBAA2D;CAC/D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAGD,IAAMC,eAAoD;CACxD,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;CACP;AASD,MAAa,sBAAA,GAAA,MAAA,aACV,EAAE,UAAU,MAAA,SAAO,MAAM,QAAQ,UAAU,MAAM,WAAW,GAAG,SAAS,QAAQ;CAC/E,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAMC,eAA8B;EAClC,WAAW,YAAY,+BAA+B;EACtD,QAAQ;EACT;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,wBAAwB,UAAU;EAChD,oBAAoB,aAAa,KAAK;EACtC,oBAAoB,aAAa,MAAM;EACvC,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAW,cAAA,GACT,6EACA,qFACA,cAAY,SACZ,WAAW,+CACZ;GACD,OAAO;GACP,MAAK;GACL,cAAY,gCAAgC;aAE3C;IACG,EACL,UACC,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAW,cAAA,GACT,yBACA,sBAAsB,SACtB,kBAAkB,QACnB;GACD,OAAO;IACL,YAAY,aAAa;IACzB,QAAQ;IACR,WAAW;IACZ;GACD,MAAK;GACL,cAAY,WAAW;IACvB,CAAA;GAEA;EAGX;AAED,mBAAmB,cAAc;ACzFjC,MAAa,iBAAA,GAAA,yBAAA,KAAoB,gCAAgC;CAC/D,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CAAC;ACWF,IAAM,qBAAqB,WAA6B,aAA4D;CAClH,MAAMC,YAAqF;EACzF,QAAQ;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA0B;EAC7E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EACzE,OAAO;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAyB;EAC3E,SAAS;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAA2B;EAC/E,MAAM;GAAE,MAAM;GAAW,IAAI;GAAW,SAAS;GAAwB;EAC1E;AACD,QAAO,UAAU,aAAa,UAAU;;AAG1C,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,WACA,MAAA,SAAO,MACP,QAAQ,GACR,WAAW,UACX,WACA,GAAG,SAEL,QACG;CACH,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CACtD,MAAM,iBAAiB,kBAAkB,SAAS;CAElD,MAAMC,cAA6B,EACjC,YAAY,sBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,aAAa;EACvB,YAAY,0BAA0B,eAAe,KAAK,IAAI,eAAe,GAAG;EAChF,WAAW,OAAO,eAAe,QAAQ;EAC1C;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,UAAU,UAAU;EAAE,GAAI;aACpD,aACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAyB,OAAO,EAAE,OAAO,qBAAqB;cAAE;KAEzE,EACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAAqC,OAAO,EAAE,OAAO,yBAAyB;eAC3F,cAAa,IAAA;KACT,CAAA;IACH,EAER,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAW,cAAA,GAAG,cAAc,EAAE,MAAA,QAAM,CAAC,CAAC;GAAE,OAAO;aAClD,iBAAA,GAAA,kBAAA,KAAC,OAAA;IACC,WAAU;IACV,OAAO;IACP,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,iBAAe;IACf,cAAY,aAAa,aAAa;KACtC;IACE,CAAA;GACF;EAGX;AAED,cAAc,cAAc;ACjF5B,IAAMC,cAAmD;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAa,wBAAA,GAAA,MAAA,aACV,EAAE,OAAO,MAAA,SAAO,MAAM,WAAW,MAAM,WAAW,GAAG,SAAS,QAAQ;CACrE,MAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;CAEtD,MAAMC,cAA6B,EACjC,YAAY,sBACb;CAED,MAAMC,aAA4B;EAChC,OAAO,GAAG,aAAa;EACvB,YACE;EACF,WAAW,WAAW,wBAAwB;EAC9C,WAAW,WAAW,6BAA6B;EACpD;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,gCAAgC,YAAY,SAAO,UAAU;EAC3E,OAAO;EACP,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAY,qBAAqB,aAAa;EAC9C,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GACC,WAAU;GACV,OAAO;IACP;GACE;EAGX;AAED,qBAAqB,cAAc;AC1CnC,MAAa,yBAAA,GAAA,MAAA,aACV,EAAE,SAAA,YAAU,EAAE,EAAE,OAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC/D,MAAMC,kBAAiC;EACrC,QAAQ;EACR,YAAY;EACb;AAGD,KAAI,CAAC,aAAW,UAAQ,WAAW,EACjC,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,mCAAmC,UAAU;EAC3D,OAAO;EACP,MAAK;EACL,GAAI;YAEH,UAAQ,KAAK,QAAQ;GACpB,MAAM,WAAW,UAAU,IAAI;AAM/B,UACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;IAEC,eAAe,WAAW,IAAI,MAAM;IACpC,WAAU;IACV,OAVgC;KAClC,YAAY,WAAW,+BAA+B;KACtD,OAAO,WAAW,iCAAiC;KACpD;IAQG,MAAK;IACL,MAAK;IACL,iBAAe;cAEd,IAAI;MARA,IAAI,MASF;IAEX;GACE;EAGX;AAED,sBAAsB,cAAc;AC/CpC,IAAME,kBAAqC;CACzC;CACA;CACA;CACD;AAED,MAAa,eAAA,GAAA,MAAA,aAET,EACE,YACA,WAAW,iBACX,gBAAgB,eAChB,WACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,aAAY;EACZ,WAAU;EACV,WAAA;EACA,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,sBAAsB;eAEtC,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,6BAAA,CAA8B,EAAA,aAAA;KAE9C;GACN,iBAAA,GAAA,kBAAA,KAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;cAC1C;KAEG;GACJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;IAAG,WAAU;cACX,SAAS,KAAK,SAAS,MACtB,iBAAA,GAAA,kBAAA,MAAC,MAAA;KAEC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;gBAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,wBAAwB;OACxC,EACD,QAAA;OARI,WAAW,IASb,CACL;KACC;GACL,iBAAA,GAAA,kBAAA,KAAC,aAAA;IACC,SAAQ;IACR,MAAK;IACL,MAAM,aAAA;IACN,SAAS;IACT,WAAU;cACX;KAEa;GACd,iBAAA,GAAA,kBAAA,MAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,qBAAqB;eAErC,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA,EAAM,WAAU,6BAAA,CAA8B,EAC9C,cAAA;KACC;;GACY;EAGvB;AAED,YAAY,cAAc;ACxE1B,MAAa,0BAAA,GAAA,MAAA,aAKT,EACE,cACA,UACA,YACA,QAAQ,gBACR,YAAY,MACZ,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,eAA8B,EAClC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EAAS;EAAK,WAAW,cAAA,GAAG,QAAQ,UAAU;EAAE,GAAI;aACnD,iBAAA,GAAA,kBAAA,MAAC,MAAA;GACC,WAAU;GACV,OAAO;cAEP,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;IAAW,WAAU;IAAU,OAAO;KAAgB,EACtD,MAAA;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,KAAA;GACC,WAAW,cAAA,GACT,mCACA,aAAa,YACd;GACD,OAAO;;IAEP,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY;MAC3B,aAAa,gBAAgB;MAAC;;MAC1B;IACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,gBAAA,EAAe,WAAU,WAAA,CAAY;MACrC;MAAS;;MACL;IACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,WAAA,CAAY;MACjC;MAAW;;MACP;;IACL,CAAA;GACA;EAGX;AAED,uBAAuB,cAAc;ACpDrC,IAAMC,WAGF;CACF,SAAS;EAAE,UAAU;EAAW,SAAS;EAA8B;CACvE,OAAO;EAAE,UAAU;EAAS,SAAS;EAA4B;CACjE,MAAM;EAAE,UAAU;EAAQ,SAAS;EAA2B;CAC9D,KAAK;EAAE,UAAU;EAAQ,SAAS;EAA0B;CAC7D;AAiBD,MAAa,uBAAA,GAAA,MAAA,aAGV,EAAE,OAAO,OAAO,QAAQ,QAAQ,MAAA,SAAO,MAAM,WAAW,GAAG,SAAS,QAAQ;CAC7E,MAAM,EAAE,UAAU,YAAY,SAAS;AAEvC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,oCAAoC,UAAU;EAC5D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,uBAAA;GACQ;GACD,MAAA;GACN,OAAO;GACP,YAAY;GACZ,WAAW,WAAS,OAAO,IAAI;GAC/B,UAAA;GACA,eAAc;IACd,EACF,iBAAA,GAAA,kBAAA,KAAC,QAAA;GACC,WAAU;GACV,OAAO,EAAE,OAAO,SAAS;aAExB;IACI,CAAA;GACH;EAER;AAEF,oBAAoB,cAAc;ACrElC,MAAa,4BAAA,GAAA,MAAA,aAKT,EACE,aACA,kBACA,qBAAqB,eACrB,gBAAgB,eAChB,UAAU,GACV,WACA,GAAG,SAEL,QACG;CAEH,MAAM,sBACJ,kBACC,mBAAmB,IAChB,KAAK,MAAM,eAAe,mBAAmB,KAAK,GAClD;CAEN,MAAM,iBAAiB,iBAAiB,KAAK,MAAM,cAAc,GAAG;CAEpE,MAAMC,aAA4B;EAChC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAMC,gBAA+B,EACnC,OAAO,uBACR;AAOD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,cARI;GACpB,GAAG;GACH,GAAG;GACJ,CAK6C,UAAU,UAAU;EAC9D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAA0B,OAAO;;IAC9C,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;KAAU,OAAO;eAAa;MAEvC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAgB,OAAO;gBACnC,YAAY,gBAAgB,EAAC,WAAA;MAC1B;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAU,OAAO;gBAC7B,kBAAiB,IAAA;MACd;;IACF,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAA0B,OAAO;;IAC9C,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;KAAU,OAAO;eAAa;MAEvC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAgB,OAAO;gBACnC,oBAAoB,gBAAgB,EAAC,WAAA;MAClC;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;KAAU,OAAO;;MAAa;MACzC,eAAe,gBAAgB;MAAC;;MAC9B;;IACF,CAAA;GACF;EAGX;AAED,yBAAyB,cAAc;AC7EvC,IAAMC,kBAAyD;CAC7D,SAAS;CACT,OAAO;CACP,MAAM;CACN,KAAK;CACN;AAGD,IAAMC,eAAgG;CACpG,SAAS;EACP,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACD,KAAK;EACH,IAAI;EACJ,MAAM;EACN,QAAQ;EACR,MAAM;EACP;CACF;AAED,MAAa,mBAAA,GAAA,MAAA,aACV,EAAE,OAAO,OAAO,QAAQ,QAAQ,WAAW,GAAG,SAAS,QAAQ;CAC9D,MAAM,YAAY,aAAa;CAE/B,MAAMC,cAA6B;EACjC,OAAO,UAAU;EACjB,YAAY,UAAU;EACvB;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAQ,UAAU;EAClB,aAAa,UAAU;EACvB,WAAW,UAAU;EACrB,WAAA;EACA,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAA8D,OAAO;eAClF,OAAM,IAAA;KACF,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;cAExC;KACI,CAAA;IACH,EACN,iBAAA,GAAA,kBAAA,KAAC,eAAA;GACQ;GACP,UAAU,gBAAgB;GAC1B,MAAK;IACL,CAAA;GACc;EAGvB;AAED,gBAAgB,cAAc;ACzE9B,MAAa,oBAAA,GAAA,MAAA,aACV,EAAE,SAAS,UAAU,GAAG,MAAM,MAAM,WAAW,GAAG,SAAS,QAAQ;CAClE,MAAM,aAAa;EACjB,IAAI;EACJ,IAAI;EACJ,IAAI;EACL;CAED,MAAM,gBAAgB;EACpB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACJ;AAED,KAAI,QAAQ,WAAW,EACrB,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,QAAQ,cAAc,UAAU,WAAW,MAAM,UAAU;EACzE,GAAI;YAEH,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;GAEC,OAAO,OAAO;GACd,OAAO,OAAO;GACd,OAAO,OAAO;KAHT,OAAO,MAIZ,CACF;GACE;EAGX;AAED,iBAAiB,cAAc;AC9B/B,MAAa,uBAAA,GAAA,MAAA,aAET,EACE,MACA,WACA,SACA,cACA,QAAQ,GACR,WAAW,SACX,SAAS,EAAE,EACX,WAAW,OACX,UACA,eACA,mBACA,WACA,GAAG,SAEL,QACG;CAEH,MAAM,sBAAsB,eAAe,IACvC,KAAK,MAAM,WAAW,eAAe,KAAK,GAC1C;CACJ,MAAM,iBAAiB,KAAK,MAAM,UAAU,GAAG;CAE/C,MAAMC,iBAAgC;EACpC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,mBAAkC;EACtC,YAAY;EACZ,aAAa;EACd;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,SAAQ;EACR,aAAY;EACZ,WAAW;EACX,MAAK;EACL,SAAQ;EACR,WAAW,cAAA,GAAG,mBAAmB,UAAU;EAC3C,GAAI;aAGJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,SAAS;GACT,MAAK;GACL,UAAU;GACV,YAAY,MAAM;AAChB,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,OAAE,gBAAgB;AAClB,iBAAY;;;GAGhB,iBAAe;;IAEf,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,uBAAuB;iBAEtC;QACI,EACP,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,UAAA,CAAY,CAAA;OACpC,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAAI,WAAU;iBACZ,QAAQ,KACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,sBAAsB;kBAEtC,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY,EAC3B,MAAA;QACI,EAER,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;OAAU,WAAU;OAAU,OAAO,EAAE,OAAO,qBAAqB;QAAI,GAExE,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;OAAY,WAAU;OAAU,OAAO,EAAE,OAAO,qBAAqB;QAAI,CAAA;OAExE,CAAA;MACF;IACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;eAEpC;MACG;IACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,yBAAyB;;MAExC;MAAQ;MAAY;MAAa;;MAC9B;;IACF,EAGL,YACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAU;GACV,OAAO;;IAGN,OAAO,SAAS,KACf,iBAAA,GAAA,kBAAA,MAAC,OAAA;KACC,WAAU;KACV,OAAO;MACL,YAAY;MACZ,aAAa;MACd;gBAED,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,4BAA4B;iBAE5C,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA,EAAc,WAAU,eAAA,CAAgB,EAAA,SAAA;OAErC,EACL,OAAO,KAAK,OAAO,YAClB,iBAAA,GAAA,kBAAA,MAAC,OAAA;MAEC,WAAU;MACV,OAAO,EAAE,OAAO,4BAA4B;iBAC7C,MACI,MAAA;QAJE,QAKD,CACN,CAAA;MACE;IAIR,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO;;OAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;mBAEtC,SAAQ,WAAA;SACL;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;mBAEpC,cAAa,IAAA;SACV;;OACF,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;MACC,WAAU;MACV,OAAO;;OAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;mBAEtC,qBAAoB,WAAA;SACjB;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;;SACtC;SACG;SAAe;;SACb;;OACF,CAAA;MACF;IAGN,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,aAAA;MACC,SAAQ;MACR,MAAK;MACL,MAAM,aAAA;MACN,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,wBAAiB;;MAEnB,WAAU;gBACX;OAEa,EACd,iBAAA,GAAA,kBAAA,KAAC,aAAA;MACC,SAAQ;MACR,MAAK;MACL,MAAM,aAAA;MACN,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,4BAAqB;;MAEvB,WAAU;gBACX;OAEa,CAAA;MACV;;IACF,CAAA;GAEQ;EAGvB;AAED,oBAAoB,cAAc;ACrOlC,MAAa,yBAAA,GAAA,MAAA,aAKT,EACE,MACA,WAAW,SACX,QAAQ,GACR,WAAW,OACX,mBAAmB,OACnB,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAM,eAAe,YAA0B;AAC7C,MAAI,CAAC,iBAAkB,QAAO,OAAO,QAAM;AAC3C,MAAI,WAAS,IAAS,QAAO,IAAI,UAAQ,KAAS,QAAQ,EAAE,CAAC;AAC7D,MAAI,WAAS,IAAM,QAAO,IAAI,UAAQ,KAAM,QAAQ,EAAE,CAAC;AACvD,SAAO,OAAO,QAAM;;AAGtB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAsB,OAAO;cAC1C;KACI,EACP,iBAAA,GAAA,kBAAA,KAAC,sBAAA,EAAqB,MAAM,UAAA,CAAY,CAAA;IACpC,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACZ,QAAQ,KACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAU;IAAkC,OAAO;eACvD,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,WAAA,CAAY,EAC3B,YAAY,MAAM,CAAA;KACd,EAER,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;IAAU,WAAU;IAAU,OAAO;KAAe,GAErD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;IAAY,WAAU;IAAU,OAAO;KAAe,CAAA;IAErD,CAAA;GACF;EAGX;AAED,sBAAsB,cAAc;ACvEpC,MAAa,2BAAA,GAAA,MAAA,aAKT,EACE,WACA,SACA,cACA,UAAU,OACV,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAED,MAAMC,kBAAiC,EACrC,OAAO,yBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,UAAU,gBAAgB,aAAa,UAAU;EAC/D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;GAAU,OAAO;aAC7B;IACG,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;GAAU,OAAO;;IAC7B,QAAQ,gBAAgB;IAAC;IAAY;IAAa;;IAC/C,CAAA;GACF;EAGX;AAED,wBAAwB,cAAc;ACrCtC,MAAa,0BAAA,GAAA,MAAA,aAKT,EACE,OACA,WAAW,KACX,QAAQ,uBACR,WAAW,MACX,MAAA,SAAO,MACP,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,eAA8B,EAClC,OAAO,sBACR;CAED,MAAMC,cAA6B,EACjC,OAAO,qBACR;CAQD,MAAM,QANc;EAClB,IAAI;GAAE,OAAO;GAAa,OAAO;GAAY,KAAK;GAAW,MAAM;GAAW;EAC9E,IAAI;GAAE,OAAO;GAAW,OAAO;GAAY,KAAK;GAAW,MAAM;GAAW;EAC5E,IAAI;GAAE,OAAO;GAAW,OAAO;GAAY,KAAK;GAAY,MAAM;GAAW;EAC9E,CAEyB;AAE1B,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,qCAAqC,UAAU;EAC7D,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,MAAA;GACC,WAAW,cAAA,GAAG,yCAAyC,MAAM,MAAM;GACnE,OAAO;cAEN,YAAY,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;IAAO,WAAW,MAAM;IAAM,OAAO;KAAgB,EAClE,MAAA;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IACC,WAAW,cAAA,GACT,MAAM,OACN,oGACD;cAEA;KACI,EACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;IAAK,WAAW,MAAM;IAAK,OAAO;eAAa,MAC3C,SAAA;KACE,CAAA;IACH,CAAA;GACF;EAGX;AAED,uBAAuB,cAAc;ACnErC,MAAa,iBAAA,GAAA,MAAA,aAET,EACE,MACA,UACA,UACA,aAAa,KACb,SAAS,YACT,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,yBACR;CAED,MAAMC,aAA4B,EAChC,OAAO,sBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,WAAW,aAAa,cAAc,2BACtC,UACD;EACD,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,MAAA;GACC,WAAW,cAAA,GACT,aACA,WAAW,aAAa,uBAAuB,UAChD;GACD,OAAO;aAEN;IACE,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;GACC,WAAW,cAAA,GACT,6CACA,WAAW,cAAc,SAC1B;GACD,OAAO;;IAEP,iBAAA,GAAA,kBAAA,MAAC,KAAA;KACC,MAAM;KACN,WAAU;KACV,OAAO;KACP,cAAY,QAAQ,SAAS;;MAC9B;MACG;MAAS;MAAC,iBAAA,GAAA,kBAAA,KAAC,aAAA,cAAA,EAAa,WAAU,WAAA,CAAY;;MAC9C;IACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;IACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;;MACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,WAAA,CAAY;;MAAS;;MACpC;;IACH,CAAA;GACF;EAGX;AAED,cAAc,cAAc;ACnE5B,MAAa,sBAAA,GAAA,MAAA,aAET,EACE,OACA,WACA,WACA,OAAO,MACP,cAAc,OACd,WACA,GAAG,SAEL,QACG;AACH,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GACT,mCACA,QAAQ,aACR,UACD;EACD,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;GACF,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,MAAM,aAAA;IACN,OAAO;IACP,OAAM;IACO;KACb;;GACE;EAGX;AAED,mBAAmB,cAAc;AC3CjC,MAAa,iBAAA,GAAA,MAAA,aAET,EAAE,MAAM,OAAO,OAAO,SAAS,UAAU,aAAa,OAAO,WAAW,QAAQ,MAAM,GAAG,QAAQ,GAAG,YAAY,WAAW,SAAS,GAAG,SACvI,QACG;CACH,MAAMC,iBAAgC;EACpC,YAAY;EACZ,aAAa;EACd;CAED,MAAMC,mBAAkC;EACtC,YAAY;EACZ,aAAa;EACd;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,iBAAA;EACM;EACL,QAAO;EACP,SAAQ;EACR,aAAY;EACZ,WAAU;EACV,WAAA;EACA,SAAQ;EACR,WAAW,cAAA,GAAG,+BAA+B,UAAU;EAC9C;EACT,MAAK;EACL,UAAU;EACV,YAAY,MAAM;AAChB,OAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,MAAE,gBAAgB;AAClB,cAAU,EAAiD;;;EAG/D,iBAAe;EACf,cAAY,GAAG,KAAK,SAAS,MAAM,IAAI,QAAQ,YAAY,aAAa,aAAa,SAAS;EAC9F,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqC,OAAO,EAAE,OAAO,uBAAuB;gBACzF;OACI,EACP,iBAAA,GAAA,kBAAA,MAAC,YAAA,EAAA,UAAA;MACE;MAAM;MAAE;SACE,CAAA;MACT,EACN,iBAAA,GAAA,kBAAA,MAAC,QAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,yBAAyB;gBAExC,SACA,aACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA,EAAU,WAAU,6BAAA,CAA8B,GAEnD,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA,EAAY,WAAU,6BAAA,CAA8B,CAAA;MAElD,CAAA;KACH;GACN,iBAAA,GAAA,kBAAA,KAAC,eAAA;IACC,OAAO;IACG;IACV,MAAK;KACL;GAGD,cACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;IACC,WAAU;IACV,OAAO;eAGP,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;;MACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO;kBAEP,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,uBAAuB;kBAEtC;SACG,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAA;QACC,WAAU;QACV,OAAO,EAAE,OAAO,qBAAqB;kBACtC;SAEK,CAAA;QACF;;MACF,EAGL,cACC,iBAAA,GAAA,kBAAA,MAAC,aAAA;KACC,SAAQ;KACR,MAAK;KACL,UAAU,MAAM;AACd,QAAE,iBAAiB;AACnB,kBAAY;;KAEd,WAAU;gBACX,oBACkB,KAAA;MACL,CAAA;KAEZ;;GAEQ;EAGvB;AAED,cAAc,cAAc;AClJ5B,MAAa,oBAAA,GAAA,MAAA,aAET,EACE,eAAe,MACf,WAAW,IACX,aAAa,IACb,QAAQ,EAAE,EACV,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAAoD,KAAK;CAE9E,MAAM,mBAAmB,SAAgC;AACvD,kBAAgB,iBAAiB,OAAO,OAAO,KAAK;;AAGtD,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,qBAAqB,UAAU;EAC7C,WAAU;EACV,OAAO;EACP,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,MAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,uBAAuB;eAEvC,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;KAAW,WAAU;KAAsC,OAAO,EAAE,OAAO,sBAAsB;MAAI,EAAA,eAAA;KAEnG;GACL,iBAAA,GAAA,kBAAA,MAAC,KAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;;KAEzC,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA,EAAK,WAAU,2CAAA,CAA4C;OAC3D,aAAa,gBAAgB;OAAC;;OAC1B;KACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;KACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,gBAAA,EAAe,WAAU,2CAAA,CAA4C;OACrE;OAAS;;OACL;KACP,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;KACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;MAAK,WAAU;;OACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA,EAAW,WAAU,2CAAA,CAA4C;OACjE;OAAW;;OACP;;KACL;GACJ,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACZ,MAAM,KAAK,MACV,iBAAA,GAAA,kBAAA,KAAC,eAAA;KAEC,MAAM,EAAE;KACR,OAAO,EAAE;KACT,OAAO,EAAE;KACT,SAAS,EAAE;KACX,UAAU,EAAE;KACZ,KAAK,EAAE;KACP,OAAO,EAAE;KACT,YAAY,iBAAiB,EAAE;KAC/B,eAAe,gBAAgB,EAAE,KAAK;KACtC,kBAAkB;OAVb,EAAE,KAcP,CACF;KACE;;GACI;EAGjB;AAED,iBAAiB,cAAc;AClF/B,MAAa,qBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,EAAE,EAAE,WAAW,OAAO,UAAU,WAAW,GAAG,SAAS,QAAQ;AACxE,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,UAAU;EACxB,WAAU;EACV,OAAO;EACP,GAAI;aAEJ,iBAAA,GAAA,kBAAA,MAAC,UAAA;GACC,SAAS;GACT,WAAU;GACV,OAAO,EAAE,OAAO,uBAAuB;GACvC,MAAK;GACL,iBAAe;cAEf,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA;KAAc,WAAU;KAAwB,OAAO,EAAE,OAAO,sBAAsB;MAAI,EAC3F,iBAAA,GAAA,kBAAA,MAAC,QAAA;KAAK,WAAU;gBAAoC,MAAM,QAAO,kBAAA;MAAsB,CAAA;KACnF,EACL,WACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,WAAA;IAAU,WAAU;IAAwB,OAAO,EAAE,OAAO,qBAAqB;KAAI,GAEtF,iBAAA,GAAA,kBAAA,KAAC,aAAA,aAAA;IAAY,WAAU;IAAwB,OAAO,EAAE,OAAO,qBAAqB;KAAI,CAAA;IAEnF,EACR,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;aACZ,MAAM,KAAK,MAAM,MAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAA;IAEC,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,aAAa,KAAK;MAHb,QAAQ,IAIb,CACF;IACE,CAAA;GAEE;EAGjB;AAED,kBAAkB,cAAc;AC3ChC,MAAa,uBAAA,GAAA,MAAA,aAET,EACE,UACA,OACA,UACA,aACA,gBAAgB,QAChB,WACA,GAAG,SAEL,QACG;CACH,MAAMC,cAA6B,EACjC,OAAO,uBACR;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAA;EACM;EACL,WAAW,cAAA,GAAG,2BAA2B,UAAU;EACnD,GAAI;aAEJ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;GACC,MAAM;GACN,cAAY;GACZ,SAAS;GACT,SAAQ;GACR,MAAK;IACL,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;IAAK,WAAU;IAAqC,OAAO;cACzD;KACI,EACN,YACC,iBAAA,GAAA,kBAAA,MAAC,QAAA;IACC,WAAU;IACV,OAAO,EAAE,OAAO,yBAAyB;eAC1C,MACI,SAAA;KACE,CAAA;IAEL,CAAA;GACF;EAGX;AAED,oBAAoB,cAAc;AC5DlC,IAAMC,SAAsB;CAAC;CAAS;CAAU;CAAQ;AAExD,IAAMC,cAAsE;CAC1E,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAK;CACpC,QAAQ;EAAE,OAAO;EAAU,MAAM,aAAA;EAAM;CACvC,OAAO;EAAE,OAAO;EAAS,MAAM,aAAA;EAAS;CACzC;AAQD,MAAa,kBAAA,GAAA,MAAA,aACV,EAAE,WAAW,UAAU,UAAU,eAAe,WAAW,GAAG,SAAS,QAAQ;CAC9E,MAAM,EAAE,OAAO,eAAe,sBAAA,UAAU;CAExC,MAAM,YAAY,QAAQ,OAAO,QAAQ,MAAM,GAAG,KAAK,OAAO;CAC9D,MAAM,WAAW,YAAY,WAAW;CAExC,MAAMC,eAA8B;EAClC,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,sBAAsB;EACvB;CAED,MAAMC,gBAA+B;EACnC,YAAY;EACZ,WAAW;EACZ;CAED,MAAMC,iBAAgC;EACpC,YAAY;EACZ,QAAQ;EACT;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAA;EACM;EACL,WAAW,cAAA,GAAG,2EAA2E,UAAU;EACnG,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;;KACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;MACC,WAAU;MACV,OAAO;MACP,MAAK;MACL,cAAW;gBAEX,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;OAAO,WAAU;OAAwB,OAAO,EAAE,OAAO,wBAAwB;QAAI;OAC/E;KACT,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqC,OAAO,EAAE,OAAO,uBAAuB;gBAAE;OAEvF;KACP,iBAAA,GAAA,kBAAA,KAAC,gBAAA;MACC,WAAU;MACV,cAAc;MACd,UAAU;MACV,YAAW;MACX,aAAY;OACZ;;KACE,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,UAAA;KACC,SAAS,iBAAiB;KAC1B,WAAU;KACV,OAAO;KACP,MAAK;KACL,cAAY,aAAa,YAAY,WAAW,MAAM;eAEtD,iBAAA,GAAA,kBAAA,KAAC,UAAA;MAAS,WAAU;MAAwB,OAAO,EAAE,OAAO,yBAAyB;OAAI;MAClF,EACT,iBAAA,GAAA,kBAAA,KAAC,aAAA;KAAY,SAAQ;KAAY,MAAM,aAAA;KAAQ,WAAU;eAAwB;MAEnE,CAAA;KACV,CAAA;IACF;GACC;EAGd;AAED,eAAe,cAAc;ACtE7B,MAAa,sBAAA,GAAA,MAAA,aAET,EACE,OAAO,kBACP,WAAW,UACX,WAAW,YACX,QAAQ,EAAE,EACV,YAAY,EAAE,EACd,cACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,IAAI;EAAE,OAAO;EAAI,WAAW;EAAG,WAAW;EAAG,GAAG;EAAO;CAE7D,MAAM,iBAAe,aAA6B;AAChD,SAAO,SACJ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,GAAG,CAChB,KAAK,GAAG,CACR,aAAa,CACb,MAAM,GAAG,EAAE;;AAGhB,QACE,iBAAA,GAAA,kBAAA,KAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,OAAO,UAAU;EAC/B,WAAU;EACV,MAAK;EACL,OAAO;EACP,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,oBAAA;MACC,UAAU,cAAY,KAAK;MAC3B,MAAK;MACL,QAAO;OACP,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAA,EAAA,UAAA;MACC,iBAAA,GAAA,kBAAA,KAAC,MAAA;OAAG,WAAU;OAA+B,OAAO,EAAE,OAAO,uBAAuB;iBACjF;QACE;MACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,yBAAyB;;QAEzC,iBAAA,GAAA,kBAAA,MAAC,KAAA;SACC,MAAK;SACL,WAAU;SACV,OAAO,EAAE,OAAO,sBAAsB;;UACvC;UACG;UAAS;UAAC,iBAAA,GAAA,kBAAA,KAAC,aAAA,cAAA,EAAa,WAAU,WAAA,CAAY;;UAC9C;QACJ,iBAAA,GAAA,kBAAA,KAAC,QAAA,EAAA,UAAK,KAAA,CAAQ;QACd,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,UAAA,EAAS,WAAU,WAAA,CAAY;;UAAS;;UACpC;;QACH;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAA;OACC,WAAU;OACV,OAAO,EAAE,OAAO,yBAAyB;;QAEzC,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;WACC,WAAU;WACV,OAAO,EAAE,OAAO,sBAAsB;YACtC;UACD,EAAE;UAAM;;UACJ;QACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,OAAA;WAAM,WAAU;WAAU,OAAO,EAAE,OAAO,sBAAsB;YAAI;UACpE,EAAE;UAAU;;UACR;QACP,iBAAA,GAAA,kBAAA,MAAC,QAAA;SAAK,WAAU;;UACd,iBAAA,GAAA,kBAAA,KAAC,aAAA,MAAA;WAAK,WAAU;WAAU,OAAO,EAAE,OAAO,sBAAsB;YAAI;UACnE,EAAE;UAAU;;UACR;;QACH;SACF,CAAA;MACF,EACL,UAAU,SAAS,KAClB,iBAAA,GAAA,kBAAA,KAAC,OAAA;KAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,kBAAA,EAA4B,WAAA,CAAa;MACtC,CAAA;KAEJ,EACN,iBAAA,GAAA,kBAAA,KAAC,aAAA,EAAY,YAAY,cAAA,CAAgB,CAAA;IACrC;GACI;EAGjB;AAED,mBAAmB,cAAc;ACtDjC,IAAM,mBAAmB,CACvB;CAAE,OAAO;CAAiB,OAAO;CAAQ,EACzC;CAAE,OAAO;CAAoB,OAAO;CAAW,CAChD;AAMD,MAAa,qBAAA,GAAA,MAAA,aAET,EACE,cACA,kBAAkB,OAClB,eAAe,MACf,gBACA,OAEA,iBACA,mBACA,SAAS,WACT,YAAY,QACZ,cACA,cACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA4C,KAAK;CAGvE,MAAM,qBAAqB,iBAAiB,sBAAsB,KAAA,KAAa,iBAAiB,KAAA;CAGhG,MAAM,iBAAA,GAAA,MAAA,eAA8B;AAClC,SAAO,aAAa,QAAQ,SAAS;AAEnC,OAAI,mBAAmB,KAAK,aAAa,QAAS,QAAO;AAEzD,OAAI,gBAAgB,KAAK,gBAAgB,aAAc,QAAO;AAE9D,OAAI,mBAAmB,oBAAoB,SAAS,KAAK,cAAc,gBAAiB,QAAO;AAC/F,UAAO;IACP;IACD;EAAC;EAAc;EAAiB;EAAc;EAAgB,CAAC;CAGlE,MAAM,eAAA,GAAA,MAAA,eAA4B;AAChC,MAAI,CAAC,aAAc,QAAO;AAE1B,SAAO,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM;GACvC,MAAM,aAAa,cAAc,QAAQ,IAAI;AAC7C,WAAQ,QAAR;IACE,KAAK,UACH,SAAQ,EAAE,UAAU,EAAE,WAAW;IACnC,KAAK,QACH,UAAS,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM;IAC7C,KAAK,OACH,QAAO,EAAE,KAAK,cAAc,EAAE,KAAK,GAAG;IACxC,KAAK,eACH,SAAQ,EAAE,eAAe,EAAE,gBAAgB;IAC7C,QACE,QAAO;;IAEX;IACD;EAAC;EAAe;EAAQ;EAAW;EAAa,CAAC;CAGpD,MAAM,eAAe,UACnB,kBACI,YACA,eACE,GAAG,iBACH,SACJ;CAEJ,MAAMC,uBAAsC,EAC1C,YAAY,kBACb;CAGD,MAAM,yBAAyB,UAAwB;AACrD,MAAI,sBAAsB,UAAU,UAAU,UAAU,WACtD,mBAAkB,MAAM;;AAI5B,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAU;EACV,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,GAAI;aAGJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;cAEb,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;;KACZ,kBACC,iBAAA,GAAA,kBAAA,KAAC,aAAA,eAAA;MAAc,WAAU;MAAU,OAAO,EAAE,OAAO,sBAAsB;OAAI,GAE7E,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;MAAW,WAAU;MAAU,OAAO,EAAE,OAAO,sBAAsB;OAAI;KAE5E,iBAAA,GAAA,kBAAA,KAAC,MAAA;MACC,WAAU;MACV,OAAO,EAAE,OAAO,uBAAuB;gBAEtC;OACE;KACL,iBAAA,GAAA,kBAAA,MAAC,YAAA;MAAW,SAAQ;iBAAQ,YAAY,QAAO,SAAA;OAAmB;;KAC9D,EAGL,sBACC,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACZ,gBACC,iBAAA,GAAA,kBAAA,KAAC,mBAAA;KACS;KACG;KACG;MACd,EAEH,qBAAqB,mBACpB,iBAAA,GAAA,kBAAA,KAAC,uBAAA;KACC,SAAS;KACT,OAAO;KACP,UAAU;MACV,CAAA;KAEA,CAAA;IAEJ,EAGL,YAAY,WAAW,IAEtB,iBAAA,GAAA,kBAAA,MAAC,OAAA;GAAI,WAAU;;IACb,iBAAA,GAAA,kBAAA,KAAC,OAAA;KACC,WAAU;KACV,OAAO;eAEP,iBAAA,GAAA,kBAAA,KAAC,aAAA,YAAA;MAAW,WAAU;MAAU,OAAO,EAAE,OAAO,qBAAqB;OAAI;MACrE;IACN,iBAAA,GAAA,kBAAA,KAAC,KAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,qBAAqB;eACtC;MAEG;IACH,kBACC,iBAAA,GAAA,kBAAA,KAAC,UAAA;KACC,SAAS;KACT,WAAU;KACV,OAAO,EAAE,OAAO,sBAAsB;eACvC;MAEQ;;IAEP,GAGN,iBAAA,GAAA,kBAAA,KAAC,OAAA;GAAI,WAAU;aACZ,YAAY,KAAK,MAAM,YACtB,iBAAA,GAAA,kBAAA,KAAC,qBAAA;IAEC,MAAM,KAAK;IACX,WAAW,KAAK;IAChB,SAAS,KAAK;IACd,cAAc,KAAK;IACnB,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,QAAQ,KAAK;IACb,UAAU,kBAAkB;IAC5B,gBAAgB,iBAAiB,kBAAkB,UAAQ,OAAO,QAAM;MATnE,KAAK,KAUV,CACF;IACE,CAAA;GAEE;EAGjB;AAED,kBAAkB,cAAc;ACxOhC,MAAa,uBAAA,GAAA,MAAA,aACV,EAAE,QAAQ,IAAI,UAAU,EAAE,EAAE,WAAW,GAAG,SAAS,QAAQ;AAC1D,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAA;EACM;EACL,WAAW,cAAA,GAAG,cAAc,UAAU;EACtC,WAAU;EACV,MAAK;EACL,OAAO;EACP,GAAI;;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAA;IAAI,WAAU;eACb,iBAAA,GAAA,kBAAA,MAAC,MAAA;KACC,WAAU;KACV,OAAO,EAAE,OAAO,uBAAuB;gBAEvC,iBAAA,GAAA,kBAAA,KAAC,aAAA,QAAA;MAAO,WAAU;MAAwB,OAAO,EAAE,OAAO,sBAAsB;OAAI,EAAA,sBAAA;MAEjF,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAA;KAAI,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;gBACb;OACI,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAA;MAAK,WAAU;MAAqB,OAAO,EAAE,OAAO,qBAAqB;gBAAE;OAErE,CAAA;MACH,CAAA;KACF;GACN,iBAAA,GAAA,kBAAA,KAAC,sBAAA;IAAqB,OAAO;IAAO,MAAK;IAAK,UAAA;KAAW;GACxD,QAAQ,SAAS,KAChB,iBAAA,GAAA,kBAAA,KAAC,OAAA;IAAI,WAAU;cACZ,QAAQ,KAAK,QACZ,iBAAA,GAAA,kBAAA,KAAC,iBAAA;KAEC,OAAO,IAAE;KACT,OAAO,IAAE;KACT,OAAO,IAAE;OAHJ,IAAE,MAIP,CACF;KACE;;GAEE;EAGjB;AAED,oBAAoB,cAAc"}
|