@godxjp/ui 2.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/BRAND.md +39 -29
  2. package/CHANGELOG.md +554 -10
  3. package/README.md +143 -168
  4. package/config/eslint.js +54 -0
  5. package/config/prettier.cjs +20 -0
  6. package/config/tsconfig.base.json +22 -0
  7. package/config/vitest.base.ts +26 -0
  8. package/dist/MiniMonth-YAmPGEpC.d.ts +143 -0
  9. package/dist/Table.types-BbsxoIYE.d.ts +352 -0
  10. package/dist/color-DO0qqUAb.d.ts +38 -0
  11. package/dist/components/composites.d.ts +963 -0
  12. package/dist/components/composites.js +7340 -0
  13. package/dist/components/composites.js.map +1 -0
  14. package/dist/components/primitives.d.ts +2633 -163
  15. package/dist/components/primitives.js +7264 -165
  16. package/dist/components/primitives.js.map +1 -1
  17. package/dist/components/shell.d.ts +82 -12
  18. package/dist/components/shell.js +168 -162
  19. package/dist/components/shell.js.map +1 -1
  20. package/dist/hooks.d.ts +83 -8
  21. package/dist/hooks.js +497 -83
  22. package/dist/hooks.js.map +1 -1
  23. package/dist/i18n.d.ts +55 -3
  24. package/dist/i18n.js +456 -5
  25. package/dist/i18n.js.map +1 -1
  26. package/dist/index.d.ts +24 -5
  27. package/dist/index.js +12522 -267
  28. package/dist/index.js.map +1 -1
  29. package/dist/padding-DY0JV5Ja.d.ts +16 -0
  30. package/dist/preferences.d.ts +132 -0
  31. package/dist/preferences.js +262 -0
  32. package/dist/preferences.js.map +1 -0
  33. package/dist/props.d.ts +86 -0
  34. package/dist/props.js +16 -0
  35. package/dist/props.js.map +1 -0
  36. package/dist/size-CQwNvOWd.d.ts +19 -0
  37. package/dist/{data.d.ts → types-LTj-2bl-.d.ts} +7 -12
  38. package/dist/useTableViews-D5NIAJ7h.d.ts +154 -0
  39. package/package.json +92 -34
  40. package/src/tokens/tailwind.css +158 -0
  41. package/dist/components/screens.d.ts +0 -51
  42. package/dist/components/screens.js +0 -806
  43. package/dist/components/screens.js.map +0 -1
  44. package/dist/data.js +0 -93
  45. package/dist/data.js.map +0 -1
  46. package/src/tokens/tokens.css +0 -765
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/primitives/cn.ts","../../src/components/primitives/Badge.tsx","../../src/components/primitives/Button.tsx","../../src/components/primitives/Card.tsx","../../src/components/primitives/Input.tsx","../../src/components/primitives/Label.tsx","../../src/components/primitives/Tabs.tsx","../../src/components/primitives/Avatar.tsx","../../src/components/primitives/Separator.tsx","../../src/components/primitives/Popover.tsx","../../src/components/primitives/DropdownMenu.tsx","../../src/components/primitives/Calendar.tsx","../../src/components/primitives/TimeInput.tsx"],"names":["jsx","Input","Textarea","forwardRef","Label","TabsList","TabsTrigger","Separator","PopoverContent","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuLabel","TimeInput"],"mappings":"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","file":"primitives.js","sourcesContent":["// cn — class-name merger. Standard shadcn utility: clsx merges values\n// and tailwind-merge resolves Tailwind class conflicts (e.g. last\n// `bg-*` wins). Every primitive in this package and every consumer\n// service imports cn from this single location to keep the dedupe\n// rules consistent.\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import type { ComponentProps, ReactNode } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Badge — status pill with a colored dot + label.\n *\n * Renders the canonical `.badge` class from `@godxjp/ui/tokens` so the\n * visual layer is mastered in CSS (not Tailwind utilities). All six\n * variants map onto a semantic role from the brand bible:\n *\n * - `success` — 若竹 task completed, healthy\n * - `warning` — 山吹 needs attention, not yet broken\n * - `info` — 群青 neutral state callout\n * - `error` — 茜 failed / blocked\n * - `attention`— 朱 pending, awaiting input\n * - `neutral` — grey default chrome\n * - `outline` — empty hairline only (rare)\n *\n * @example\n * <Badge variant=\"success\" dot>Healthy</Badge>\n * <Badge variant=\"error\">Failed</Badge>\n */\nexport type BadgeVariant =\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"error\"\n | \"attention\"\n | \"neutral\"\n | \"outline\"\n\nexport interface BadgeProps extends ComponentProps<\"span\"> {\n variant?: BadgeVariant\n /** When true renders a colored dot before the label. */\n dot?: boolean\n children?: ReactNode\n}\n\nexport function Badge({\n variant = \"neutral\",\n dot = false,\n className,\n children,\n ...rest\n}: BadgeProps) {\n return (\n <span className={cn(\"badge\", `badge-${variant}`, className)} {...rest}>\n {dot && <span className=\"dot\" aria-hidden />}\n {children}\n </span>\n )\n}\n","import { Slot } from \"@radix-ui/react-slot\"\nimport type { ComponentProps, ReactNode } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Button — canonical action atom.\n *\n * Maps onto the `.btn` family in tokens.css:\n *\n * primary — filled, brand color, default action\n * secondary — bordered, foreground text, neutral surface\n * ghost — transparent, foreground text, hover surface\n * danger — destructive, --destructive bg\n *\n * Sizes mirror density tokens:\n * sm — 28 px height (compact action bar)\n * md — 32 px height (default)\n * lg — 36 px height (page hero CTA)\n *\n * Supports `asChild` (Radix Slot pattern) so the button styles can wrap\n * a Link or any other element without nesting:\n *\n * @example\n * <Button variant=\"primary\">Save</Button>\n * <Button asChild variant=\"ghost\"><a href=\"/docs\">Docs</a></Button>\n */\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\"\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\"\n\nexport interface ButtonProps extends ComponentProps<\"button\"> {\n variant?: ButtonVariant\n size?: ButtonSize\n asChild?: boolean\n children?: ReactNode\n}\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n asChild = false,\n className,\n type = \"button\",\n children,\n ...rest\n}: ButtonProps) {\n const Component = asChild ? Slot : \"button\"\n return (\n <Component\n type={asChild ? undefined : type}\n className={cn(\n \"btn\",\n `btn-${variant}`,\n size === \"sm\" && \"btn-sm\",\n size === \"lg\" && \"btn-lg\",\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n )\n}\n","import type { ComponentProps, ReactNode } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Card — surface container for grouped content.\n *\n * The atom hierarchy mirrors the `.card`/`.card-header`/`.card-title`\n * classes in tokens.css. Compose as:\n *\n * <Card>\n * <CardHeader>\n * <CardTitle>Pull requests</CardTitle>\n * <CardSubtitle>Open / merged this week</CardSubtitle>\n * </CardHeader>\n * <CardContent>...</CardContent>\n * </Card>\n */\nexport function Card({ className, ...rest }: ComponentProps<\"div\">) {\n return <div className={cn(\"card\", className)} {...rest} />\n}\n\nexport function CardHeader({ className, ...rest }: ComponentProps<\"div\">) {\n return <div className={cn(\"card-header\", className)} {...rest} />\n}\n\nexport function CardTitle({ className, ...rest }: ComponentProps<\"h3\">) {\n return <h3 className={cn(\"card-title\", className)} {...rest} />\n}\n\nexport interface CardSubtitleProps extends ComponentProps<\"p\"> {\n children?: ReactNode\n}\n\nexport function CardSubtitle({ className, ...rest }: CardSubtitleProps) {\n return <p className={cn(\"card-subtitle\", className)} {...rest} />\n}\n\nexport function CardContent({ className, ...rest }: ComponentProps<\"div\">) {\n return <div className={className} {...rest} />\n}\n","import { forwardRef, type ComponentProps, type TextareaHTMLAttributes } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Input — text input atom. Maps to `.input` in tokens.css.\n *\n * Forward-ref so consumers can wire `react-hook-form` / focus\n * management without escaping the design tokens.\n */\nexport interface InputProps extends ComponentProps<\"input\"> {}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, type = \"text\", ...rest },\n ref,\n) {\n return <input ref={ref} type={type} className={cn(\"input\", className)} {...rest} />\n})\n\n/** Textarea — uses `.input` for shape, leaves height auto. */\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, ...rest },\n ref,\n) {\n return <textarea ref={ref} className={cn(\"input\", className)} {...rest} />\n})\n","import * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Label — form-field label. Wraps Radix Label so `htmlFor` /\n * click-to-focus works out of the box. Maps to `.label` in tokens.css.\n *\n * Pair with <Input /> + an optional `.help` paragraph:\n *\n * <Label htmlFor=\"name\">Display name</Label>\n * <Input id=\"name\" />\n * <p className=\"help\">Visible to teammates.</p>\n */\nexport const Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(function Label({ className, ...rest }, ref) {\n return <LabelPrimitive.Root ref={ref} className={cn(\"label\", className)} {...rest} />\n})\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Tabs — Radix-backed tab strip styled with the canonical `.tabs` /\n * `.tab` CSS from tokens.css. Keyboard navigation + ARIA come from\n * Radix; the visual contract stays in the design tokens.\n *\n * @example\n * <Tabs defaultValue=\"open\">\n * <TabsList>\n * <TabsTrigger value=\"open\">Open</TabsTrigger>\n * <TabsTrigger value=\"closed\">Closed</TabsTrigger>\n * </TabsList>\n * <TabsContent value=\"open\">...</TabsContent>\n * <TabsContent value=\"closed\">...</TabsContent>\n * </Tabs>\n */\nexport const Tabs = TabsPrimitive.Root\n\nexport const TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...rest }, ref) {\n return <TabsPrimitive.List ref={ref} className={cn(\"tabs\", className)} {...rest} />\n})\n\nexport const TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...rest }, ref) {\n // Radix sets `data-state=\"active\"` on the active trigger — map it to\n // the `data-active` attribute the .tab CSS expects.\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\"tab\", className)}\n {...rest}\n data-active={undefined}\n />\n )\n})\n\nexport const TabsContent = TabsPrimitive.Content\n","import type { ComponentProps } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Avatar — round chip with initials or an image. Maps to `.avatar`\n * + `.avatar.brand` in tokens.css.\n *\n * @example\n * <Avatar>PT</Avatar>\n * <Avatar variant=\"brand\">G</Avatar>\n */\nexport interface AvatarProps extends ComponentProps<\"span\"> {\n variant?: \"default\" | \"brand\"\n /** Optional image url; falls back to children (initials) when missing. */\n src?: string\n alt?: string\n}\n\nexport function Avatar({\n variant = \"default\",\n src,\n alt,\n className,\n children,\n ...rest\n}: AvatarProps) {\n return (\n <span className={cn(\"avatar\", variant === \"brand\" && \"brand\", className)} {...rest}>\n {src ? <img src={src} alt={alt ?? \"\"} style={{ width: \"100%\", height: \"100%\", borderRadius: \"inherit\", objectFit: \"cover\" }} /> : children}\n </span>\n )\n}\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Separator — horizontal / vertical divider. Wraps Radix Separator for\n * ARIA + decorative semantics. Maps to `.divider` styling in tokens.css\n * (1px border, theme-aware color).\n */\nexport const Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, orientation = \"horizontal\", decorative = true, ...rest }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n orientation={orientation}\n decorative={decorative}\n className={cn(\n orientation === \"horizontal\" ? \"divider\" : \"\",\n className,\n )}\n style={\n orientation === \"vertical\"\n ? { width: 1, height: \"100%\", background: \"var(--border)\", border: 0 }\n : undefined\n }\n {...rest}\n />\n )\n})\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * Popover — Radix-backed floating panel anchored to a trigger element.\n * Styled with the canonical `.popover-content` class from tokens.css\n * so the visual contract stays in the design tokens.\n *\n * @example\n * <Popover>\n * <PopoverTrigger asChild>\n * <Button variant=\"ghost\">Open</Button>\n * </PopoverTrigger>\n * <PopoverContent>…body…</PopoverContent>\n * </Popover>\n */\nexport const Popover = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\n\nexport const PopoverContent = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(function PopoverContent(\n { className, align = \"center\", sideOffset = 6, ...rest },\n ref,\n) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\"popover-content\", className)}\n {...rest}\n />\n </PopoverPrimitive.Portal>\n )\n})\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes } from \"react\"\nimport { cn } from \"./cn\"\n\n/**\n * DropdownMenu — Radix-backed action menu opened from a trigger\n * (kebab, caret, button…). Styled via canonical `.dropdown-menu-*`\n * classes from tokens.css.\n *\n * Items support `variant=\"destructive\"` for dangerous actions and\n * `inset` for left-padding alignment when icons aren't on every row.\n *\n * @example\n * <DropdownMenu>\n * <DropdownMenuTrigger asChild>\n * <Button variant=\"ghost\"><MoreVertical /></Button>\n * </DropdownMenuTrigger>\n * <DropdownMenuContent align=\"end\">\n * <DropdownMenuItem onSelect={onEdit}>Edit</DropdownMenuItem>\n * <DropdownMenuSeparator />\n * <DropdownMenuItem variant=\"destructive\" onSelect={onDelete}>\n * Delete\n * </DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n */\nexport const DropdownMenu = DropdownMenuPrimitive.Root\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(function DropdownMenuContent({ className, sideOffset = 6, ...rest }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\"dropdown-menu-content\", className)}\n {...rest}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\n\ntype DropdownItemProps = ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}\n\nexport const DropdownMenuItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownItemProps\n>(function DropdownMenuItem({ className, inset, variant = \"default\", ...rest }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\"dropdown-menu-item\", className)}\n data-variant={variant === \"destructive\" ? \"destructive\" : undefined}\n data-inset={inset ? \"true\" : undefined}\n {...rest}\n />\n )\n})\n\nexport const DropdownMenuSeparator = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...rest }, ref) {\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"dropdown-menu-separator\", className)}\n {...rest}\n />\n )\n})\n\nexport const DropdownMenuLabel = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(function DropdownMenuLabel({ className, inset, ...rest }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\"dropdown-menu-label\", className)}\n data-inset={inset ? \"true\" : undefined}\n {...rest}\n />\n )\n})\n\nexport function DropdownMenuShortcut({\n className,\n ...rest\n}: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn(\"dropdown-menu-shortcut\", className)} {...rest} />\n}\n","import { DayPicker, type DayPickerProps } from \"react-day-picker\"\nimport \"react-day-picker/dist/style.css\"\nimport { cn } from \"./cn\"\n\n/**\n * Calendar — react-day-picker grid themed with brand tokens via the\n * canonical `.calendar` class from tokens.css. Caller controls\n * mode/selected/onSelect through DayPicker's standard props.\n *\n * Locale + week-start are inherited from i18next / browser by default;\n * pass DayPickerProps explicitly to override (e.g. `weekStartsOn={1}`\n * for Monday-first).\n *\n * @example\n * const [date, setDate] = useState<Date>()\n * <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n */\nexport function Calendar({ className, showOutsideDays = true, ...rest }: DayPickerProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"calendar\", className)}\n {...rest}\n />\n )\n}\n","import { forwardRef, useEffect, useState, type ChangeEvent, type FocusEvent } from \"react\"\nimport { cn } from \"./cn\"\n\nexport interface TimeInputProps {\n /** Current time value in `\"HH:mm\"` (24-hour) format. */\n value?: string\n /** Fired on blur with the validated `\"HH:mm\"` string. */\n onChange?: (time: string) => void\n /** Additional class name applied to the input element. */\n className?: string\n /** Disable input + propagate aria-disabled. */\n disabled?: boolean\n /** Optional placeholder (defaults to \"HH:mm\"). */\n placeholder?: string\n /** Optional id used for label association. */\n id?: string\n /** Optional name used in form submissions. */\n name?: string\n}\n\nconst TIME_PATTERN = /^([01]\\d|2[0-3]):[0-5]\\d$/\n\nfunction normalize(raw: string): string {\n // Strip whitespace + non-digits-or-colon. Accept either \"HH:mm\" or\n // \"HHmm\" / \"H:mm\" / \"Hmm\" and coerce into canonical \"HH:mm\". Returns\n // the original string when it can't be parsed — the caller decides\n // whether to surface aria-invalid.\n const cleaned = raw.trim()\n if (!cleaned) return \"\"\n if (TIME_PATTERN.test(cleaned)) return cleaned\n const digits = cleaned.replace(/[^0-9]/g, \"\")\n if (digits.length === 3 || digits.length === 4) {\n const hh = digits.slice(0, digits.length - 2).padStart(2, \"0\")\n const mm = digits.slice(-2)\n const candidate = `${hh}:${mm}`\n if (TIME_PATTERN.test(candidate)) return candidate\n }\n return raw\n}\n\n/**\n * TimeInput — narrow text input for HH:mm (24-hour) values.\n * Mirrors the public `@godxjp/ui@0.2.0` API so call sites don't change\n * when upgrading to v2. Visual contract lives in the `.time-input`\n * class in tokens.css.\n *\n * Validation: emits `onChange` with the normalized string on blur if\n * it parses, otherwise leaves the value untouched and surfaces\n * `aria-invalid` so the consumer can style the error state.\n */\nexport const TimeInput = forwardRef<HTMLInputElement, TimeInputProps>(\n function TimeInput(\n { value, onChange, className, disabled, placeholder = \"HH:mm\", id, name },\n ref,\n ) {\n const [draft, setDraft] = useState(value ?? \"\")\n\n useEffect(() => {\n setDraft(value ?? \"\")\n }, [value])\n\n const invalid = draft !== \"\" && !TIME_PATTERN.test(draft)\n\n return (\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n spellCheck={false}\n maxLength={5}\n id={id}\n name={name}\n disabled={disabled}\n placeholder={placeholder}\n value={draft}\n aria-invalid={invalid || undefined}\n className={cn(\"time-input\", className)}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setDraft(e.target.value)}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n const next = normalize(e.target.value)\n setDraft(next)\n if (TIME_PATTERN.test(next) && next !== value) onChange?.(next)\n }}\n />\n )\n },\n)\n"]}
1
+ {"version":3,"sources":["../../src/components/cn.ts","../../src/components/layout/Row.tsx","../../src/components/layout/Col.tsx","../../src/components/layout/Flex.tsx","../../src/components/layout/Space.tsx","../../src/components/data-display/Badge.tsx","../../src/components/general/Button.tsx","../../src/components/data-display/Card.tsx","../../src/components/data-entry/Input.tsx","../../src/components/data-entry/InputPassword.tsx","../../src/components/data-entry/InputSearch.tsx","../../src/components/data-entry/InputNumber.tsx","../../src/components/data-entry/Form.tsx","../../src/components/feedback/Skeleton.tsx","../../src/components/feedback/Spinner.tsx","../../src/components/data-display/Popover.tsx","../../src/components/data-entry/AutoComplete.tsx","../../src/components/data-entry/Cascader.tsx","../../src/components/data-entry/Checkbox.tsx","../../src/components/data-entry/CheckboxGroup.tsx","../../src/components/data-entry/ColorPicker.tsx","../../src/components/data-entry/Field.tsx","../../src/props/loading.ts","../../src/components/data-entry/Radio.tsx","../../src/components/data-entry/Rate.tsx","../../src/components/data-entry/Select.tsx","../../src/components/data-entry/Slider.tsx","../../src/components/data-entry/Switch.tsx","../../src/components/data-display/IconButton.tsx","../../src/components/data-entry/Transfer.tsx","../../src/components/data-entry/TreeSelect.tsx","../../src/components/data-entry/FormField.tsx","../../src/components/data-entry/LocaleTabs.tsx","../../src/components/data-entry/Checklist.tsx","../../src/components/data-display/PageHeader.tsx","../../src/components/data-display/SegmentedControl.tsx","../../src/components/data-entry/Label.tsx","../../src/components/navigation/Tabs.tsx","../../src/components/data-display/Avatar.tsx","../../src/components/data-display/Statistic.tsx","../../src/components/data-display/Empty.tsx","../../src/components/data-display/Tag.tsx","../../src/components/feedback/Alert.tsx","../../src/components/feedback/Result.tsx","../../src/components/general/Typography.tsx","../../src/components/data-display/Descriptions.tsx","../../src/components/data-display/Separator.tsx","../../src/components/navigation/DropdownMenu.tsx","../../src/components/data-display/Calendar.tsx","../../src/components/feedback/Dialog.tsx","../../src/components/feedback/Sheet.tsx","../../src/components/feedback/AlertDialog.tsx","../../src/hooks/useBreakpoint.ts","../../src/components/data-display/Table.tsx","../../src/components/data-entry/TimeInput.tsx","../../src/components/feedback/toaster.tsx","../../src/components/feedback/Watermark.tsx","../../src/components/feedback/Popconfirm.tsx","../../src/components/navigation/Breadcrumb.tsx","../../src/components/navigation/Anchor.tsx","../../src/components/navigation/Menu.tsx","../../src/components/navigation/Pagination.tsx","../../src/components/navigation/Steps.tsx","../../src/components/feedback/Progress.tsx","../../src/components/data-display/calendar/IconRow.tsx","../../src/components/data-display/calendar/AvatarStack.tsx","../../src/components/data-display/calendar/ColorSwatchCheckbox.tsx","../../src/components/data-display/calendar/CalendarOption.tsx","../../src/components/data-display/calendar/AttendeeChip.tsx","../../src/components/data-display/calendar/AttendeeListItem.tsx","../../src/components/data-display/calendar/AllDayChip.tsx","../../src/components/data-display/calendar/DayHeaderPill.tsx","../../src/components/data-display/calendar/time.ts","../../src/components/data-display/calendar/TimeGrid.tsx","../../src/components/data-display/calendar/EventBlock.tsx","../../src/components/data-display/calendar/MonthCell.tsx","../../src/components/data-display/calendar/EventPill.tsx","../../src/components/data-display/calendar/MiniMonth.tsx","../../src/components/data-display/calendar/AvailabilityRow.tsx","../../src/components/data-display/calendar/SuggestedSlotCard.tsx","../../src/components/data-entry/DateTimePicker.tsx","../../src/components/data-display/Carousel.tsx","../../src/components/data-display/Collapse.tsx","../../src/components/data-display/List.tsx","../../src/components/data-display/Image.tsx","../../src/components/data-display/QRCode.tsx","../../src/components/data-display/Tooltip.tsx","../../src/preferences/holder.ts","../../src/i18n/format.ts","../../src/i18n/relative.ts","../../src/hooks/useFormatters.ts","../../src/components/data-display/Timeline.tsx","../../src/components/data-display/Tree.tsx","../../src/components/data-display/Tour.tsx"],"names":["order","jsx","JUSTIFY_CLASS","ALIGN_CLASS","VARIANT_CLASS","Button","jsxs","forwardRef","Card","Fragment","SIZE_CLASS","Input","Textarea","InputPassword","InputSearch","useState","STATUS_CLASS","InputNumber","useCallback","createContext","useContext","TONE_CLASS","Spinner","Root","Trigger","Popover","AutoComplete","useMemo","useEffect","Cascader","ChevronDown","Checkbox","CheckboxGroup","ColorPicker","Field","LabelControl","HelpText","CountText","RadioGroup","Radio","Rate","Content","Label","Item","Separator","Command","ChevronUp","ScrollUp","ScrollDown","Slider","Switch","IconButton","useRef","Slot","Transfer","ChevronRight","TreeSelect","normalizeIn","LocaleTabs","Checklist","iconSize","Check","X","PADDING_CLASS","PageHeader","Tabs","Alert","DEFAULT_ICON","Info","CheckCircle2","AlertTriangle","Result","Title","Tag","Paragraph","Text","Link","RACCalendar","RACCalendarGrid","RACCalendarGridHeader","RACCalendarHeaderCell","RACCalendarGridBody","RACCalendarCell","RACRangeCalendar","RACButton","ChevronLeft","RACHeading","Sheet","DialogPrimitive2","AlertDialog","footer","TimeInput","Toaster","SonnerToaster","Watermark","Anchor","Menu","Pagination","useTranslation","Steps","COLOR_CLASS","Progress","strokeWidth","RACDateField","RACLabel","RACDateInput","RACDateSegment","RACText","RACFieldError","RACTimeField","RACDatePicker","RACGroup","RACPopover","RACDialog","RACDateRangePicker","next","normalize","List","AriaTreeItem","AriaButton","AriaCheckbox","Tree","AriaTree","useId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACkCA,IAAM,GAAA,GAAM,cAAsB,EAAE,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAC,GAAG,CAAA;AAE7C,SAAS,YAAA,GAAiC;AAC/C,EAAA,OAAO,UAAA,CAAW,GAAG,CAAA,CAAE,MAAA;AACzB;AAEA,IAAM,aAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,eAAA;AAAA,EACP,GAAA,EAAK,aAAA;AAAA,EACL,MAAA,EAAQ,gBAAA;AAAA,EACR,cAAA,EAAgB,gBAAA;AAAA,EAChB,eAAA,EAAiB,iBAAA;AAAA,EACjB,cAAA,EAAgB;AAClB,CAAA;AAEA,IAAM,WAAA,GAAqC;AAAA,EACzC,GAAA,EAAK,aAAA;AAAA,EACL,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAQA,SAAS,mBAAmB,EAAA,EAAwB;AAClD,EAAA,MAAM,QAAA,GAAuC;AAAA,IAC3C,EAAA,EAAI,KAAA;AAAA,IACJ,EAAA,EAAI,OAAA;AAAA,IACJ,EAAA,EAAI,OAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,GAAA,EAAK;AAAA,GACP;AACA,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,SAAS,EAAE,CAAA;AACrD,EAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CAChD,iBAAiB,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE,CAAA,CACrC,IAAA,EAAK;AACR,EAAA,OAAO,CAAA,IAAK,SAAS,EAAE,CAAA;AACzB;AAEA,SAAS,gBAAgB,CAAA,EAA8C;AACrE,EAAA,IAAI,CAAA,KAAM,MAAA,EAAW,OAAO,CAAC,GAAG,CAAC,CAAA;AACjC,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,CAAC,GAAG,CAAC,CAAA;AACvC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAO,CAAC,CAAA,CAAE,CAAC,CAAA,IAAK,CAAA,EAAG,CAAA,CAAE,CAAC,KAAK,CAAC,CAAA;AAGlD,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa,OAAO,CAAC,CAAA,CAAE,EAAA,IAAM,GAAG,CAAC,CAAA;AACvD,EAAA,MAAM,QAAsB,CAAC,KAAA,EAAO,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAChE,EAAA,KAAA,MAAW,MAAM,KAAA,EAAO;AACtB,IAAA,IAAI,CAAA,CAAE,EAAE,CAAA,KAAM,MAAA,IAAa,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,OAAA,EAAS;AAC9F,MAAA,OAAO,CAAC,CAAA,CAAE,EAAE,CAAA,EAAa,CAAC,CAAA;AAAA,IAC5B;AAAA,EACF;AACA,EAAA,OAAO,CAAC,CAAA,CAAE,EAAA,IAAM,CAAA,EAAG,CAAC,CAAA;AACtB;AAEO,SAAS,GAAA,CAAI;AAAA,EAClB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAa;AACX,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,gBAAgB,MAAM,CAAA;AACrC,EAAA,uBACE,GAAA,CAAC,GAAA,CAAI,QAAA,EAAJ,EAAa,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAC,CAAA,EAAE,EACpC,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,OAAO,WAAA,GAAc,aAAA;AAAA,QACrB,OAAA,IAAW,cAAc,OAAO,CAAA;AAAA,QAChC,KAAA,IAAS,YAAY,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,QACvB,UAAA,EAAY,CAAA,GAAI,CAAA,CAAA,EAAI,CAAA,GAAI,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,QAChC,WAAA,EAAa,CAAA,GAAI,CAAA,CAAA,EAAI,CAAA,GAAI,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,QACjC,GAAG;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AC3HA,IAAM,WAAA,GAAc,CAAC,CAAA,KAAe,CAAA,GAAI,EAAA,GAAM,GAAA;AAuB9C,IAAM,SAAA,GAAwC;AAAA,EAC5C,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK;AACP,CAAA;AAEO,SAAS,GAAA,CAAI;AAAA,EAClB,IAAA,GAAO,EAAA;AAAA,EACP,MAAA,GAAS,CAAA;AAAA,EACT,IAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAa;AACX,EAAA,MAAM,CAAC,CAAC,CAAA,GAAI,YAAA,EAAa;AAOzB,EAAA,MAAM,WAAA,GAAmD;AAAA,IACvD,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,GACF;AAKA,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,MAAMA,SAAsB,CAAC,KAAA,EAAO,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAChE,IAAA,KAAA,MAAW,MAAMA,MAAAA,EAAO;AACtB,MAAA,MAAM,CAAA,GAAI,YAAY,EAAE,CAAA;AACxB,MAAA,IAAI,CAAA,KAAM,MAAA,IAAa,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,UAAU,EAAE,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,OAAA,EAAS;AACjF,QAAA,QAAA,GAAW,CAAA;AACX,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,OAAO,MAAA,EAAW;AAC3B,IAAA,QAAA,GAAW,EAAA;AAAA,EACb;AAEA,EAAA,MAAM,MAAA,GAAwB;AAAA,IAC5B,WAAW,IAAA,KAAS,MAAA,GAAY,SAAY,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAC,CAAA,CAAA,CAAA;AAAA,IACpE,UAAU,IAAA,KAAS,MAAA,GAAY,SAAY,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAC,CAAA,CAAA,CAAA;AAAA,IACnE,IAAA,EAAM,OAAO,IAAA,KAAS,QAAA,GAAW,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,KAAA,CAAA,GAAU,IAAA;AAAA,IAC1D,WAAA,EAAa,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAChC,YAAA,EAAc,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IACjC,YAAY,MAAA,GAAS,CAAA,EAAG,WAAA,CAAY,MAAM,CAAC,CAAA,CAAA,CAAA,GAAM,MAAA;AAAA,IACjD,KAAA;AAAA,IACA,GAAG;AAAA,GACL;AAGA,EAAA,uBACEC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,SAAS,CAAA,EAAG,KAAA,EAAO,MAAA,EAAS,GAAG,IAAA,EAC1D,QAAA,EACH,CAAA;AAEJ;ACxFA,IAAM,SAAA,GAAsD;AAAA,EAC1D,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAMC,cAAAA,GAA6C;AAAA,EACjD,KAAA,EAAO,eAAA;AAAA,EACP,GAAA,EAAK,aAAA;AAAA,EACL,MAAA,EAAQ,gBAAA;AAAA,EACR,eAAA,EAAiB,iBAAA;AAAA,EACjB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB;AAClB,CAAA;AAEA,IAAMC,YAAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,aAAA;AAAA,EACP,GAAA,EAAK,WAAA;AAAA,EACL,MAAA,EAAQ,cAAA;AAAA,EACR,OAAA,EAAS,eAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AAgBO,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA,GAAW,KAAA;AAAA,EACX,IAAA;AAAA,EACA,GAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AACZ,EAAA,MAAM,SAAA,GACJ,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,KAAA,IAAS,SAAS,QAAA,GAC7C,aAAA,GACA,IAAA,KAAS,cAAA,GACP,mBAAA,GACA,WAAA;AAER,EAAA,MAAM,KAAA,GACJ,OAAO,GAAA,KAAQ,QAAA,GACX,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA,GACN,GAAA,KAAQ,MAAA,GACN,SAAA,CAAU,GAAG,CAAA,GACb,MAAA;AAER,EAAA,uBACEF,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,WAAW,UAAA,GAAa,UAAA;AAAA,QACxB,SAAA;AAAA,QACA,OAAA,IAAWC,eAAc,OAAO,CAAA;AAAA,QAChC,KAAA,IAASC,aAAY,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,GAAA,EAAK,KAAA;AAAA,QACL,IAAA,EAAM,OAAO,IAAA,KAAS,QAAA,GAAW,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,KAAA,CAAA,GAAU,IAAA;AAAA,QAC1D,GAAG;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;ACvFA,IAAM,UAAA,GAAyD;AAAA,EAC7D,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAgBA,SAAS,YAAY,CAAA,EAAsB;AACzC,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,GAAW,GAAG,CAAC,CAAA,EAAA,CAAA,GAAO,WAAW,CAAC,CAAA;AACxD;AAEA,IAAMA,YAAAA,GAAgE;AAAA,EACpE,KAAA,EAAO,aAAA;AAAA,EACP,GAAA,EAAK,WAAA;AAAA,EACL,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA,GAAO,OAAA;AAAA,EACP,SAAA,GAAY,YAAA;AAAA,EACZ,IAAA,GAAO,KAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,CAAC,MAAA,EAAQ,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,IAAA,EAAM,IAAI,CAAA;AAGjE,EAAA,MAAM,QAAqB,EAAC;AAC5B,EAAA,IAAI,CAAA,GAAI,CAAA;AAGR,EAAA,MAAM,MAAM,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,GAAW,CAAC,QAAQ,CAAA;AAC1D,EAAA,KAAA,MAAW,SAAS,GAAA,EAAK;AACvB,IAAA,IAAI,CAAA,GAAI,KAAK,KAAA,EAAO;AAClB,MAAA,KAAA,CAAM,IAAA;AAAA,wBACJF,GAAAA,CAAC,MAAA,EAAA,EAAsB,aAAA,EAAY,MAAA,EAAO,WAAU,uBAAA,EACjD,QAAA,EAAA,KAAA,EAAA,EADQ,CAAA,IAAA,EAAO,CAAC,CAAA,CAEnB;AAAA,OACF;AAAA,IACF;AACA,IAAA,KAAA,CAAM,IAAA,iBAAKA,GAAAA,CAAC,MAAA,EAAA,EAAwB,mBAAd,CAAA,KAAA,EAAQ,CAAC,EAAW,CAAO,CAAA;AACjD,IAAA,CAAA,EAAA;AAAA,EACF;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,aAAA;AAAA,QACA,SAAA,KAAc,aAAa,UAAA,GAAa,UAAA;AAAA,QACxC,OAAO,WAAA,GAAc,aAAA;AAAA,QACrB,KAAA,IAASE,aAAY,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,YAAY,MAAM,CAAA;AAAA,QAC7B,MAAA,EAAQ,YAAY,MAAM,CAAA;AAAA,QAC1B,GAAG;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AC7CA,IAAM,aAAA,GAAqD;AAAA,EACzD,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,WAAA,EAAa,kBAAA;AAAA,EACb,SAAA,EAAW,gBAAA;AAAA;AAAA,EAEX,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA,GAAU,SAAA;AAAA,EACV,UAAA,GAAa,MAAA;AAAA,EACb,GAAA,GAAM,IAAA;AAAA,EACN,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,YAAA,GAAe,cAAc,OAAO,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,OAAA,KAAY,SAAA,IAAa,UAAA,KAAe,SAAA;AAE1D,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA,KAAe,MAAA,IAAU,CAAC,SAAA,IAAa,WAAA;AAAA,QACvC;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,GAAA,oBAAOF,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,eAAW,IAAA,EAAC,CAAA;AAAA,QACzC;AAAA;AAAA;AAAA,GACH;AAEJ;AC1BA,IAAMG,cAAAA,GAA+C;AAAA,EACnD,OAAA,EAAS,aAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO,WAAA;AAAA,EACP,WAAA,EAAa,iBAAA;AAAA,EACb,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,UAAA,GAAyC;AAAA,EAC7C,SAAA,EAAW,QAAA;AAAA,EACX,KAAA,EAAO,QAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,MAAA,GAAS,UAAA,CAA2C,SAASC,OAAAA,CACxE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAY,UAAU,IAAA,GAAO,QAAA;AACnC,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAQ/B,EAAA,MAAM,OAAA,GAAU,OAAA,GACd,QAAA,mBAEAC,KAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,OAAA,mBAAUL,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,aAAA,EAAc,aAAA,EAAW,MAAC,CAAA,GAAK,YAAA;AAAA,IACzD,QAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAM,UAAU,MAAA,GAAY,IAAA;AAAA,MAC5B,gBAAc,OAAA,IAAW,MAAA;AAAA,MACzB,QAAA,EAAU,UAAU,MAAA,GAAY,UAAA;AAAA,MAChC,iBAAe,UAAA,IAAc,MAAA;AAAA,MAC7B,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,SAAA,EAAW,EAAA;AAAA,QACT,KAAA;AAAA,QACAG,eAAc,OAAO,CAAA;AAAA,QACrB,WAAW,IAAI,CAAA;AAAA,QACf,KAAA,IAAS,WAAA;AAAA,QACT,OAAA,IAAW,aAAA;AAAA,QACX;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAC;ACnDD,IAAM,aAAA,GAA6C;AAAA,EACjD,KAAA,EAAO,oBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,IAAA,EAAM,mBAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,UAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO,iBAAA;AAAA,EACP,cAAA,EAAgB;AAClB,CAAA;AAEA,IAAM,YAAA,GAA2C;AAAA,EAC/C,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS,qBAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,IAAA,EAAM,kBAAA;AAAA,EACN,WAAA,EAAa,yBAAA;AAAA,EACb,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,UAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,mBAAA;AAAA,EACT,OAAA,EAAS,mBAAA;AAAA,EACT,OAAA,EAAS,mBAAA;AAAA,EACT,SAAA,EAAW,qBAAA;AAAA,EACX,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EAAa,uBAAA;AAAA,EACb,QAAA,EAAU,oBAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,IAAA,GAAOG,UAAAA,CAAsC,SAASC,KAAAA,CACjE;AAAA,EACE,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GACJ,UAAU,MAAA,IACV,QAAA,KAAa,UACb,MAAA,KAAW,MAAA,IACX,IAAA,KAAS,MAAA,IACT,KAAA,KAAU,MAAA;AACZ,EAAA,MAAM,QAAQ,OAAA,KAAY,MAAA;AAE1B,EAAA,uBACEF,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,cAAc,OAAO,CAAA;AAAA,QACrB,WAAW,IAAI,CAAA;AAAA,QACf,MAAA,IAAU,aAAa,MAAM,CAAA;AAAA,QAC7B,SAAA,IAAa,gBAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBACCL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,UAAA,CAAW,IAAI,CAAC,CAAA,EAAG,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,QAEhE,6BACCA,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,QAAA;AAAA,YACA,MAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA,EAAO;AAAA;AAAA,SACT;AAAA,QAED,QAAQ,QAAA,mBAAWA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAa,QAAA,EAAS,CAAA;AAAA,QACxD,WAAW,MAAA,oBACVA,IAAC,aAAA,EAAA,EAAc,KAAA,EAAO,OAAQ,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAEtC,OAAA,KAAY,0BACXA,GAAAA,CAAC,iBAAc,KAAA,EAAO,KAAA,EAAO,OAAA,EAAO,IAAA,EACjC,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AAiBD,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AAKrB,EAAA,MAAM,QACJ,MAAA,KAAW,MAAA,GAAY,QAAA,GAAW,QAAA,KAAa,SAAY,OAAA,GAAU,KAAA;AACvE,EAAA,MAAM,aACJ,KAAA,KAAU,QAAA,GACN,oBAAA,GACA,KAAA,KAAU,UACR,mBAAA,GACA,iBAAA;AAER,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,KAAA,IAAS,qBAAqB,SAAS,CAAA;AAAA,MAChE,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,QAAA,oBACTA,IAAAA,CAAAG,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,MAAA,KAAW,0BACVR,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAe,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,UAEvC,UAAU,MAAA,oBAAaA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,cAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACzD,aAAa,MAAA,oBACZA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAiB,QAAA,EAAA,QAAA,EAAS;AAAA,SAAA,EAE9C,CAAA;AAAA,QAED,KAAA,KAAU,OAAA,oBACTK,IAAAA,CAAAG,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,0BAAaR,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,cAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACzD,aAAa,MAAA,oBACZA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAiB,QAAA,EAAA,QAAA,EAAS;AAAA,SAAA,EAE9C,CAAA;AAAA,QAED,KAAA,KAAU,KAAA,oBACTK,IAAAA,CAAAG,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,0BAAaR,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,cAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACzD,SAAS,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,IAAA,EAAK;AAAA,SAAA,EAC3D,CAAA;AAAA,QAED,QAAA;AAAA,QACA,UAAU,MAAA,oBACTA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAE/C;AAEJ;AAUA,SAAS,aAAA,CAAc;AAAA,EACrB,OAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,QAAQ,mBAAA,GAAsB,oBAAA;AAAA,QAC9B,OAAA,IAAW,qBAAA;AAAA,QACX;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACxPA,IAAMS,WAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,YAAA,GAA4C;AAAA,EAChD,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,KAAA,GAAQH,UAAAA,CAAyC,SAASI,MAAAA,CACrE;AAAA,EACE,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,MAAA,GAAS,SAAA;AAAA,EACT,SAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAYD,YAAW,IAAI,CAAA;AACjC,EAAA,MAAM,WAAA,GAAc,aAAa,MAAM,CAAA;AAGvC,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,UAAU,CAAC,WAAA,IAAe,CAAC,UAAA,EAAY;AACrD,IAAA,uBACET,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,OAAA;AAAA,UACA,SAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA,IAAY,gBAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,KAAA,EAAO,UAAA;AAAA,QACN,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AAIA,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,YAAA;AAAA,QACA,SAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAW,MAAA,IAAa,kBAAA;AAAA,QACxB,WAAW,MAAA,IAAa,kBAAA;AAAA,QACxB,QAAA,IAAY,gBAAA;AAAA,QACZ;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,WAAA,KAAgB,0BACfL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,QAEhD,WAAW,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBACpEA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA;AAAA,YACA,QAAA;AAAA,YACA,KAAA,EAAO,UAAA;AAAA,YACN,GAAG;AAAA;AAAA,SACN;AAAA,QACC,WAAW,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QACnE,eAAe,MAAA,oBACdA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,UAAA,EAAW;AAAA;AAAA;AAAA,GAElD;AAEJ,CAAC;AAyBD,IAAM,YAAA,GAAgE;AAAA,EACpE,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,YAAA;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,QAAA,GAAWM,UAAAA;AAAA,EACtB,SAASK,SAAAA,CACP;AAAA,IACE,IAAA,GAAO,SAAA;AAAA,IACP,MAAA,GAAS,SAAA;AAAA,IACT,MAAA,GAAS,MAAA;AAAA,IACT,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,OAAO,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,CAAS,UAAU,IAAA,CAAK,IAAA;AACpE,IAAA,MAAM,OAAA,GAAU,OAAO,QAAA,KAAa,QAAA,GAAW,SAAS,OAAA,GAAU,MAAA;AAElE,IAAA,MAAM,WAAA,GAA6B;AAAA,MACjC,MAAA,EAAQ,aAAa,MAAM,CAAA;AAAA,MAC3B,GAAG;AAAA,KACL;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,WAAA,CAAY,SAAA,GAAY,CAAA,EAAG,OAAA,GAAU,GAAG,CAAA,EAAA,CAAA;AACxC,MAAA,WAAA,CAAY,SAAA,GAAY,MAAA;AAAA,IAC1B;AAKA,IAAA,MAAM,YACJ,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAM,GAAI,EAAE,YAAA,EAAa;AAEnD,IAAA,MAAM,6BACJX,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACC,GAAG,SAAA;AAAA,QACJ,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,OAAA;AAAA,UACAS,YAAW,IAAI,CAAA;AAAA,UACf,aAAa,MAAM,CAAA;AAAA,UACnB,QAAA,IAAY,gBAAA;AAAA,UACZ,CAAC,SAAA,IAAa;AAAA,SAChB;AAAA,QACA,KAAA,EAAO,WAAA;AAAA,QACN,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,CAAC,WAAW,OAAO,UAAA;AAEvB,IAAA,MAAM,OAAA,GACJ,OAAO,KAAA,KAAU,QAAA,GACb,KAAA,CAAM,SACN,OAAO,YAAA,KAAiB,QAAA,GACtB,YAAA,CAAa,MAAA,GACb,CAAA;AACR,IAAA,MAAM,IAAA,GAAO,OAAO,SAAA,KAAc,QAAA,IAAY,OAAA,GAAU,SAAA;AACxD,IAAA,MAAM,IAAA,GACJ,OAAO,SAAA,KAAc,QAAA,IAAY,CAAC,QAAQ,OAAA,IAAW,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,GAAG,CAAA;AAEjF,IAAA,uBACEJ,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAChD,QAAA,EAAA;AAAA,MAAA,UAAA;AAAA,sBACDL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,SAAS,IAAA,IAAQ,MAAA,EAAQ,IAAA,IAAQ,MAAM,GACxD,QAAA,EAAA,SAAA,GAAY,CAAA,EAAG,OAAO,CAAA,GAAA,EAAM,SAAS,KAAK,OAAA,EAC7C;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AChMO,IAAM,aAAA,GAAgBM,UAAAA;AAAA,EAC3B,SAASM,cAAAA,CACP;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,eAAA,GAAkB,KAAA;AAAA,IAClB,cAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,eAAe,CAAA;AACxD,IAAA,MAAM,WAAW,UAAA,IAAc,QAAA;AAE/B,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,MAAM,OAAO,CAAC,QAAA;AACd,MAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,IAAI,CAAA;AAC9C,MAAA,cAAA,GAAiB,IAAI,CAAA;AAAA,IACvB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,cAAc,IAAA,IAAQ,eAAA;AACxC,IAAA,MAAM,SAAA,GAAY,cAAc,IAAA,IAAQ,eAAA;AAExC,IAAA,MAAM,+BACJZ,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,mBAAA;AAAA,QACV,OAAA,EAAS,MAAA;AAAA,QACT,YAAA,EAAY,WAAW,SAAA,GAAY,SAAA;AAAA,QACnC,cAAA,EAAc,QAAA;AAAA,QACd,QAAA,EAAU,EAAA;AAAA,QAET,QAAA,EAAA,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,EAAA,EAAI,CAAA,mBAAKA,GAAAA,CAAC,GAAA,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,KACpD;AAGF,IAAA,uBACEK,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAR,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAM,WAAW,MAAA,GAAS,UAAA;AAAA,UAC1B,QAAQ,MAAA,IAAU,YAAA;AAAA,UAClB,SAAA,EAAW,GAAG,SAAS,CAAA;AAAA,UACtB,GAAG;AAAA;AAAA,OACN;AAAA,MACC;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AACF;AC/CO,IAAM,WAAA,GAAcM,UAAAA;AAAA,EACzB,SAASO,YAAAA,CACP;AAAA,IACE,UAAA,GAAa,IAAA;AAAA,IACb,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA,GAAa,QAAA;AAAA,IACb,KAAA,EAAO,eAAA;AAAA,IACP,YAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,QAAAA;AAAA,MAC9B,OAAO,YAAA,KAAiB,QAAA,GAAW,YAAA,GAAe;AAAA,KACpD;AACA,IAAA,MAAM,KAAA,GACJ,eAAA,KAAoB,MAAA,GAAY,MAAA,CAAO,eAAe,CAAA,GAAI,QAAA;AAE5D,IAAA,MAAM,YAAA,GAAe,WAAA;AAAA,MACnB,CAAC,CAAA,KAAqC;AACpC,QAAA,IAAI,eAAA,KAAoB,MAAA,EAAW,WAAA,CAAY,CAAA,CAAE,OAAO,KAAK,CAAA;AAC7D,QAAA,QAAA,GAAW,CAAC,CAAA;AACZ,QAAA,IAAI,UAAA,KAAe,QAAA,EAAU,QAAA,GAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,MACxD,CAAA;AAAA,MACA,CAAC,eAAA,EAAiB,QAAA,EAAU,QAAA,EAAU,UAAU;AAAA,KAClD;AAEA,IAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,MAAA,QAAA,GAAW,KAAK,CAAA;AAAA,IAClB,CAAA,EAAG,CAAC,QAAA,EAAU,KAAK,CAAC,CAAA;AAEpB,IAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,MACpB,CAAC,CAAA,KAAuC;AACtC,QAAA,SAAA,GAAY,CAAC,CAAA;AACb,QAAA,IAAI,EAAE,gBAAA,IAAoB,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,YAAY,WAAA,EAAa;AAC1E,QAAA,YAAA,EAAa;AAAA,MACf,CAAA;AAAA,MACA,CAAC,WAAW,YAAY;AAAA,KAC1B;AAEA,IAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,MAAA,IAAI,eAAA,KAAoB,MAAA,EAAW,WAAA,CAAY,EAAE,CAAA;AACjD,MAAA,OAAA,IAAU;AACV,MAAA,QAAA,GAAW,EAAE,CAAA;AAGb,MAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB,MAAA,EAAQ,EAAE,KAAA,EAAO,EAAA,EAAG;AAAA,UACpB,aAAA,EAAe,EAAE,KAAA,EAAO,EAAA;AAAG,SAC7B;AACA,QAAA,QAAA,CAAS,SAAS,CAAA;AAAA,MACpB;AAAA,IACF,GAAG,CAAC,eAAA,EAAiB,QAAA,EAAU,OAAA,EAAS,QAAQ,CAAC,CAAA;AAEjD,IAAA,MAAM,+BACJd,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS,YAAA;AAAA,QACT,YAAA,EAAW,QAAA;AAAA,QACX,QAAA,EAAU,EAAA;AAAA,QAET,QAAA,EAAA,UAAA,oBAAcA,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAM,EAAA,EAAI;AAAA;AAAA,KACnC;AAGF,IAAA,MAAM,WAAA,GACJ,UAAA,IAAc,KAAA,CAAM,MAAA,GAAS,oBAC3BA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,mBAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAW,cAAA;AAAA,QACX,QAAA,EAAU,EAAA;AAAA,QAEV,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,KACf,GACE,MAAA;AACN,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAA,GAAY,MAAA;AAClD,IAAA,MAAM,aAAA,GACJ,gBAAgB,MAAA,IAAa,UAAA,KAAe,yBAC1CK,IAAAA,CAAAG,UAAA,EACG,QAAA,EAAA;AAAA,MAAA,WAAA;AAAA,MACA;AAAA,KAAA,EACH,CAAA,GACE,MAAA;AAKN,IAAA,MAAM,SAAA,GACJ,oBAAoB,MAAA,GAChB,EAAE,OAAO,eAAA,EAAgB,GACzB,EAAE,YAAA,EAAa;AACrB,IAAA,uBACER,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACJ,GAAG,SAAA;AAAA,QACJ,QAAA,EAAU,YAAA;AAAA,QACV,SAAA,EAAW,aAAA;AAAA,QACX,MAAA,EAAQ,YAAA;AAAA,QACR,MAAA,EAAQ,aAAA;AAAA,QACP,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AClGA,IAAMS,WAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAMM,aAAAA,GAA4C;AAAA,EAChD,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,SAAS,OAAA,CAAQ,OAAe,SAAA,EAA4B;AAC1D,EAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,GAAY,CAAA,EAAG,OAAO,KAAA;AACrD,EAAA,MAAM,SAAS,EAAA,IAAM,SAAA;AACrB,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,MAAM,CAAA,GAAI,MAAA;AACtC;AAEA,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAc,GAAA,EAAsB;AAChE,EAAA,IAAI,GAAA,GAAM,KAAA;AACV,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,QAAgB,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,CAAA;AACpD,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,QAAgB,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,CAAA;AACpD,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,aAAa,IAAA,EAA6B;AACjD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA;AAC/C,EAAA,IAAI,YAAY,EAAA,IAAM,OAAA,KAAY,GAAA,IAAO,OAAA,KAAY,KAAK,OAAO,IAAA;AACjE,EAAA,MAAM,CAAA,GAAI,OAAO,OAAO,CAAA;AACxB,EAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA,GAAO,CAAA;AAClC;AAEO,IAAM,WAAA,GAAcT,UAAAA;AAAA,EACzB,SAASU,YAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA,GAAO,CAAA;AAAA,IACP,SAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,GAAc,IAAA;AAAA,IACd,MAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA,GAAS,SAAA;AAAA,IACT,IAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIF,QAAAA;AAAA,MACxC,YAAA,IAAgB;AAAA,KAClB;AACA,IAAA,MAAM,YAAA,GAAe,YAAA,GAAe,KAAA,IAAS,IAAA,GAAO,aAAA;AAIpD,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA;AAAA,MAAiB,MACrD,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,MAAA,GACtC,EAAA,GACA,MAAA,GACE,MAAA,CAAO,YAAY,CAAA,GACnB,MAAA,CAAO,YAAY;AAAA,KAC3B;AACA,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,cAAA,GAAiB,OAAsB,YAAY,CAAA;AAIzD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,IAAA,GAAO,YAAA;AACb,MAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,MAAA,EAAW;AACvC,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA;AAAA,MACF;AACA,MAAA,cAAA,CAAe,SAAS,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACrD,CAAA,EAAG,CAAC,YAAA,EAAc,MAAA,EAAQ,SAAS,CAAC,CAAA;AAEpC,IAAA,MAAM,IAAA,GAAOG,WAAAA;AAAA,MACX,CAAC,IAAA,KAAwB;AACvB,QAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,IAAI,CAAA;AACxC,QAAA,IAAI,cAAA,CAAe,YAAY,IAAA,EAAM;AACnC,UAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AACzB,UAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,QACtB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,cAAc,aAAa;AAAA,KAC9B;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyC;AAC7D,MAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,KAAA;AACzB,MAAA,cAAA,CAAe,GAAG,CAAA;AAClB,MAAA,IAAI,QAAQ,EAAA,EAAI;AACd,QAAA,IAAA,CAAK,IAAI,CAAA;AACT,QAAA;AAAA,MACF;AACA,MAAA,MAAM,MAAA,GAAA,CAAU,KAAA,IAAS,YAAA,EAAc,GAAG,CAAA;AAC1C,MAAA,IAAI,WAAW,IAAA,EAAM;AACrB,MAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,MAAA,GAASA,YAAY,MAAM;AAC/B,MAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,MAAA,EAAW;AACvD,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,cAAc,SAAS,CAAA,EAAG,KAAK,GAAG,CAAA;AAChE,MAAA,IAAA,CAAK,OAAO,CAAA;AACZ,MAAA,cAAA,CAAe,SAAS,MAAA,CAAO,OAAO,CAAA,GAAI,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,IAC3D,CAAA,EAAG,CAAC,YAAA,EAAc,IAAA,EAAM,QAAQ,GAAA,EAAK,GAAA,EAAK,SAAS,CAAC,CAAA;AAEpD,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAwC;AAC1D,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,MAAA,EAAO;AACP,MAAA,MAAA,GAAS,KAAK,CAAA;AAAA,IAChB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAwC;AAC3D,MAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,MAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,MAAA,EAAW;AACvD,QAAA,cAAA,CAAe,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,MACrC;AACA,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,MACb,CAAC,SAAA,KAAsB;AACrB,QAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,QAAA,MAAM,IAAA,GACJ,YAAA,KAAiB,OAAO,GAAA,KAAQ,WAAW,GAAA,GAAM,CAAA,CAAA;AACnD,QAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,GAAO,YAAY,IAAA,EAAM,SAAS,CAAA,EAAG,GAAA,EAAK,GAAG,CAAA;AACxE,QAAA,IAAA,CAAK,IAAI,CAAA;AACT,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,cAAA,CAAe,SAAS,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,QACrD,CAAA,MAAO;AACL,UAAA,cAAA,CAAe,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,QAC7B;AAAA,MACF,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,WAAW,GAAA,EAAK,GAAA,EAAK,SAAA,EAAW,QAAA,EAAU,IAAI;AAAA,KACvF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA2C;AAChE,MAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAA,CAAO,CAAC,CAAA;AAAA,MACV,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,WAAA,EAAa;AACpC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAA,CAAO,EAAE,CAAA;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,SAAA,GAAYR,YAAW,IAAI,CAAA;AACjC,IAAA,MAAM,WAAA,GAAcM,cAAa,MAAM,CAAA;AAEvC,IAAA,MAAM,SAAA,GAAY,OAAA;AAAA,MAChB,OAAO;AAAA,QACL,IAAA,EAAM,YAAA;AAAA,QACN,iBAAiB,YAAA,IAAgB,MAAA;AAAA,QACjC,eAAA,EAAiB,GAAA;AAAA,QACjB,eAAA,EAAiB;AAAA,OACnB,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,KACzB;AAEA,IAAA,uBACEV,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,mBAAA;AAAA,UACA,SAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAL,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,IAAA;AAAA,cACA,EAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,OAAA;AAAA,gBACA,cAAA;AAAA,gBACA,SAAA;AAAA,gBACA,WAAA;AAAA,gBACA,QAAA,IAAY,gBAAA;AAAA,gBACZ,CAAC,WAAA,IAAe;AAAA,eAClB;AAAA,cACA,KAAA,EAAO,WAAA;AAAA,cACP,WAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA,EAAU,YAAA;AAAA,cACV,MAAA,EAAQ,UAAA;AAAA,cACR,OAAA,EAAS,WAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACV,GAAG;AAAA;AAAA,WACN;AAAA,UACC,+BACCK,IAAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAuB,eAAW,IAAA,EAChD,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,QAAA,EAAU,EAAA;AAAA,gBACV,SAAA,EAAU,mBAAA;AAAA,gBACV,UAAU,QAAA,IAAY,QAAA;AAAA,gBACtB,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,kBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,kBAAA,MAAA,CAAO,CAAC,CAAA;AAAA,gBACV,CAAA;AAAA,gBAEA,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,EAAA,EAAI,eAAW,IAAA,EAAC;AAAA;AAAA,aACnC;AAAA,4BACAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,QAAA,EAAU,EAAA;AAAA,gBACV,SAAA,EAAU,mBAAA;AAAA,gBACV,UAAU,QAAA,IAAY,QAAA;AAAA,gBACtB,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,kBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,kBAAA,MAAA,CAAO,EAAE,CAAA;AAAA,gBACX,CAAA;AAAA,gBAEA,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAM,EAAA,EAAI,eAAW,IAAA,EAAC;AAAA;AAAA;AACrC,WAAA,EACF;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AC5QA,IAAM,cAAA,GAAiBkB,aAAAA,CAAkC,EAAE,OAAA,EAAS,QAAW,CAAA;AAGxE,SAAS,cAAA,GAA0C;AACxD,EAAA,OAAOC,UAAAA,CAAW,cAAc,CAAA,CAAE,OAAA;AACpC;AAEO,SAAS,IAAA,CAA4B;AAAA,EAC1C,IAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,WAAA;AAAA,EACP,QAAA;AAAA,EACA,MAAA,GAAS,UAAA;AAAA,EACT,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,QAAQ,OAAA,CAAW;AAAA,IACvB,aAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,SAAS,IAAA,IAAQ,KAAA;AACvB,EAAA,uBACEnB,GAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,QAChB,QAAA,kBAAAA,GAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAO,EAAE,OAAA,IAChC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,MAAA,EAAQ,CAAA,KAAA,EAAQ,MAAM,IAAI,SAAS,CAAA;AAAA,MACjD,QAAA,EAAU,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,QAAQ,CAAA,GAAI,MAAA;AAAA,MACrD,UAAA,EAAU,IAAA;AAAA,MACT,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;ACzDO,IAAM,QAAA,GAAWM,UAAAA;AAAA,EACtB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxBN,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,aAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;ACmBvB,IAAMS,WAAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAMW,WAAAA,GAA0C;AAAA,EAC9C,OAAA,EAAS,EAAA;AAAA,EACT,IAAA,EAAM,EAAA;AAAA,EACN,KAAA,EAAO,oBAAA;AAAA,EACP,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,WAAA,EAAa,0BAAA;AAAA,EACb,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,OAAA,GAAUd,UAAAA;AAAA,EACrB,SAASe,QAAAA,CACP,EAAE,IAAA,GAAO,IAAA,EAAM,IAAA,GAAO,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAM,GAAG,IAAA,EAAK,EACvD,GAAA,EACA;AACA,IAAA,MAAM,KAAA,GAAQ,KAAK,YAAY,CAAA;AAC/B,IAAA,MAAM,SAAA,GAAY,KAAA,GACd,EAAE,IAAA,EAAM,IAAA,IAAQ,QAAA,EAAU,YAAA,EAAc,KAAA,EAAM,GAC9C,EAAE,aAAA,EAAe,IAAA,EAAc;AACnC,IAAA,uBACErB,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,SAAA;AAAA,UACAS,YAAW,IAAI,CAAA;AAAA,UACfW,YAAW,IAAI,CAAA;AAAA,UACf;AAAA,SACF;AAAA,QACC,GAAG,SAAA;AAAA,QACH,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AClFA,IAAME,KAAAA,GAAwB,gBAAA,CAAA,IAAA;AAC9B,IAAMC,QAAAA,GAA2B,gBAAA,CAAA,OAAA;AAa1B,IAAM,OAAA,GAAUjB,UAAAA,CAGrB,SAASkB,QAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,SAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,uBAAOxB,GAAAA,CAACsB,KAAAA,EAAA,EAAM,GAAG,WAAY,QAAA,EAAS,CAAA;AAAA,EACxC;AAEA,EAAA,uBACEjB,IAAAA,CAACiB,KAAAA,EAAA,EAAM,GAAG,SAAA,EACR,QAAA,EAAA;AAAA,oBAAAtB,GAAAA,CAACuB,QAAAA,EAAA,EAAQ,OAAA,EAAO,MAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAC1BvB,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAkB,gBAAA,CAAA,OAAA;AAAA,MAAjB;AAAA,QACC,GAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,UAAA;AAAA,QACC,GAAG,YAAA;AAAA,QACJ,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAA,EAAW,cAAc,SAAS,CAAA;AAAA,QAElE;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AC7BM,IAAM,YAAA,GAAeM,UAAAA;AAAA,EAC1B,SAASmB,aAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA,GAAmB,KAAA;AAAA,IACnB;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,WAAA,GAAcC,QAAQ,MAAM;AAChC,MAAA,MAAM,IAAA,GAAO,eAAe,KAAA,GAAQ,YAAA;AACpC,MAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAClB,MAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,MAAA,KAAW,OAAO,KAAA,KAAU,IAAI,GAAG,KAAA,IAAS,IAAA;AAAA,IACnE,CAAA,EAAG,EAAE,CAAA;AACL,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIZ,SAAS,WAAW,CAAA;AACtD,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA,CAAS,eAAe,KAAK,CAAA;AACrE,IAAA,MAAM,cAAc,IAAA,IAAQ,YAAA;AAC5B,IAAA,MAAM,OAAA,GAAUG,WAAAA;AAAA,MACd,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,IAAA,KAAS,MAAA,EAAW,eAAA,CAAgB,IAAI,CAAA;AAC5C,QAAA,YAAA,GAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,MAAM,YAAY;AAAA,KACrB;AAEA,IAAAU,UAAU,MAAM;AACd,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAA,EAAQ,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA;AAAA,IACvC,CAAA,EAAG,CAAC,YAAA,EAAc,OAAA,EAAS,KAAK,CAAC,CAAA;AAEjC,IAAA,MAAM,QAAA,GAAWD,QAAQ,MAAM;AAC7B,MAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,EAAK,CAAE,WAAA,EAAY;AAC3C,MAAA,IAAI,CAAC,OAAO,OAAO,OAAA;AACnB,MAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,QAAO,CAAC,MAAA,KACrB,MAAA,CAAO,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,KAAK,CAAA,IAAK,MAAA,CAAO,KAAA,CAAM,WAAA,EAAY,CAAE,SAAS,KAAK;AAAA,OACzF;AAAA,IACF,CAAA,EAAG,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA;AAEvB,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyC;AAC7D,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA;AAC1B,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,aAAA,GAAgB,IAAI,CAAA;AACpB,MAAA,IAAI,CAAC,WAAA,EAAa,OAAA,CAAQ,IAAI,CAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAAmB;AACjC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,KAAA,KAAU,MAAM,CAAA,IAAK,QAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,MAAM,CAAA;AAC5G,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AACzB,QAAA,aAAA,GAAgB,OAAO,KAAK,CAAA;AAAA,MAC9B,WAAW,gBAAA,EAAkB;AAC3B,QAAA,YAAA,CAAa,MAAM,CAAA;AACnB,QAAA,aAAA,GAAgB,MAAM,CAAA;AAAA,MACxB;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,wBACJ1B,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,IAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAe,WAAA;AAAA,QACf,mBAAA,EAAkB,MAAA;AAAA,QAClB,QAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,MAAM,CAAC,QAAA,IAAY,QAAQ,IAAI,CAAA;AAAA,QACxC,SAAA,EAAW,EAAA;AAAA,UACT,OAAA;AAAA,UACA,SAAS,OAAA,IAAW,kBAAA;AAAA,UACpB,SAAS,OAAA,IAAW,kBAAA;AAAA,UACpB;AAAA;AACF;AAAA,KACF;AAGF,IAAA,uBACEA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,WAAA;AAAA,QACN,YAAA,EAAc,OAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAU,kBAAA;AAAA,QACV,YAAA,EAAc;AAAA,UACZ,eAAA,EAAiB,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,UACjD,cAAA,EAAgB,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA;AAAe,SAClD;AAAA,QAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EAAO,SAAA,EAAU,kBAAA,EACtC,QAAA,kBAAAA,GAAAA,CAAC,OAAA,CAAQ,IAAA,EAAR,EAAa,WAAU,eAAA,EACrB,QAAA,EAAA,QAAA,CAAS,MAAA,KAAW,CAAA,mBACnBA,GAAAA,CAAC,OAAA,CAAQ,KAAA,EAAR,EAAc,SAAA,EAAU,gBAAA,EAAiB,QAAA,EAAA,YAAA,EAAU,CAAA,GAEpD,QAAA,CAAS,GAAA,CAAI,CAAC,2BACZA,GAAAA;AAAA,UAAC,OAAA,CAAQ,IAAA;AAAA,UAAR;AAAA,YAEC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,SAAA,EAAU,eAAA;AAAA,YACV,QAAA,EAAU,MAAA;AAAA,YAET,QAAA,EAAA,MAAA,CAAO;AAAA,WAAA;AAAA,UANH,MAAA,CAAO;AAAA,SAQf,GAEL,CAAA,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AC5GA,SAAS,cAAA,CAAe,SAA2B,IAAA,EAA0B;AAC3E,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,IAAI,MAAA,GAAuC,OAAA;AAC3C,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,MAAkC,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,GAAG,CAAA;AAC3E,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,KAAK,CAAA;AACrB,IAAA,MAAA,GAAS,GAAA,CAAI,QAAA;AAAA,EACf;AACA,EAAA,OAAO,MAAA;AACT;AAaO,IAAM,QAAA,GAAWM,UAAAA;AAAA,EACtB,SAASsB,SAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA,GAAc,QAAA;AAAA,IACd,IAAA,GAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA,GAAe,IAAA;AAAA,IACf;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAId,QAAAA,CAAmB,YAAA,IAAgB,EAAE,CAAA;AACrE,IAAA,MAAM,WAAA,GAAc,YAAA,GAAgB,KAAA,IAAS,EAAC,GAAK,QAAA;AAEnD,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,QAAAA,CAAkB,eAAe,KAAK,CAAA;AAClF,IAAA,MAAM,mBAAmB,IAAA,KAAS,MAAA;AAClC,IAAA,MAAM,MAAA,GAAS,gBAAA,GAAmB,CAAC,CAAC,IAAA,GAAO,cAAA;AAE3C,IAAA,MAAM,SAAA,GAAYG,WAAAA;AAAA,MAChB,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,CAAC,gBAAA,EAAkB,iBAAA,CAAkB,IAAI,CAAA;AAC7C,QAAA,YAAA,GAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,kBAAkB,YAAY;AAAA,KACjC;AAGA,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIH,SAAmB,WAAW,CAAA;AAGlE,IAAA,MAAM,gBAAA,GAAmBG,WAAAA;AAAA,MACvB,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,IAAA,gBAAoB,WAAW,CAAA;AACnC,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,MAChB,CAAA;AAAA,MACA,CAAC,aAAa,SAAS;AAAA,KACzB;AAGA,IAAA,MAAM,OAAA,GAAUS,QAAQ,MAAM;AAC5B,MAAA,MAAM,IAAA,GAA2B,CAAC,OAAO,CAAA;AACzC,MAAA,IAAI,MAAA,GAAuC,OAAA;AAC3C,MAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,QAAA,MAAM,MAAkC,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,GAAG,CAAA;AAC3E,QAAA,IAAI,CAAC,OAAO,CAAC,GAAA,CAAI,YAAY,GAAA,CAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACxD,QAAA,IAAA,CAAK,IAAA,CAAK,IAAI,QAAQ,CAAA;AACtB,QAAA,MAAA,GAAS,GAAA,CAAI,QAAA;AAAA,MACf;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,EAAe,MAAA,KAA2B;AACnE,MAAA,IAAI,OAAO,QAAA,EAAU;AACrB,MAAA,MAAM,UAAA,GAAa,CAAC,GAAG,UAAA,CAAW,MAAM,CAAA,EAAG,KAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA;AAC/D,MAAA,MAAM,cAAc,CAAC,CAAC,OAAO,QAAA,IAAY,MAAA,CAAO,SAAS,MAAA,GAAS,CAAA;AAClE,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,aAAA,CAAc,UAAU,CAAA;AACxB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,UAAU,CAAA;AACzC,MAAA,aAAA,GAAgB,YAAY,MAAM,CAAA;AAClC,MAAA,aAAA,CAAc,UAAU,CAAA;AACxB,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,EAAS,WAAW,CAAA;AAClD,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,KAAW,CAAA,GAClC,EAAA,GACA,YAAA,GACE,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GACjB,MAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAE9B,IAAA,uBACE1B,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,MAAA;AAAA,QACN,YAAA,EAAc,gBAAA;AAAA,QACd,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAU,kBAAA;AAAA,QACV,yBACEK,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,UAAA;AAAA,YACL,eAAA,EAAe,MAAA;AAAA,YACf,QAAA;AAAA,YACA,SAAS,MAAM,CAAC,QAAA,IAAY,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAC7C,SAAA,EAAW,EAAA;AAAA,cACT,OAAA;AAAA,cACA,kBAAA;AAAA,cACA,SAAS,OAAA,IAAW,kBAAA;AAAA,cACpB,SAAS,OAAA,IAAW,kBAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,kBAAA,EAAkB,WAAA,KAAgB,EAAA,GAAK,MAAA,GAAS,MAAA;AAAA,YAEhD,QAAA,EAAA;AAAA,8BAAAL,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBACb,QAAA,EAAA,WAAA,KAAgB,EAAA,GAAK,cAAc,WAAA,EACtC,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC6B,WAAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAW,IAAA;AAAA,kBACX,OAAO,EAAE,KAAA,EAAO,oBAAoB,MAAA,EAAQ,kBAAA,EAAoB,YAAY,CAAA;AAAE;AAAA;AAChF;AAAA;AAAA,SACF;AAAA,QAGA,QAAA,kBAAA7B,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,IAAA,EAAK,MAAA,EACpC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,0BACpBA,GAAAA,CAAC,QAAe,SAAA,EAAU,iBAAA,EAAkB,MAAK,OAAA,EAC9C,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,MAAA,KAAW;AACtB,UAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAK,CAAA,KAAM,MAAA,CAAO,KAAA;AAC9C,UAAA,MAAM,UAAA,GAAa,YAAY,KAAK,CAAA,KAAM,OAAO,KAAA,IAAS,WAAA,CAAY,WAAW,KAAA,GAAQ,CAAA;AACzF,UAAA,MAAM,cAAc,CAAC,CAAC,OAAO,QAAA,IAAY,MAAA,CAAO,SAAS,MAAA,GAAS,CAAA;AAClE,UAAA,uBACEK,IAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,iBAAA;AAAA,cACV,IAAA,EAAK,UAAA;AAAA,cACL,aAAA,EAAa,WAAW,MAAA,GAAS,MAAA;AAAA,cACjC,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,cACrC,eAAA,EAAe,MAAA,CAAO,QAAA,GAAW,MAAA,GAAS,MAAA;AAAA,cAC1C,eAAA,EAAe,cAAc,QAAA,GAAW,MAAA;AAAA,cACxC,eAAA,EAAe,OAAO,QAAA,IAAY,MAAA;AAAA,cAClC,OAAA,EAAS,MAAM,iBAAA,CAAkB,KAAA,EAAO,MAAM,CAAA;AAAA,cAE9C,QAAA,EAAA;AAAA,gCAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,iBAAO,KAAA,EAAM,CAAA;AAAA,gBACrD,8BACCA,GAAAA;AAAA,kBAAC,YAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAW,IAAA;AAAA,oBACX,SAAA,EAAU,yBAAA;AAAA,oBACV,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,QAAQ,kBAAA;AAAmB;AAAA,iBACjE,GACE;AAAA;AAAA,aAAA;AAAA,YAjBC,MAAA,CAAO;AAAA,WAkBd;AAAA,QAEJ,CAAC,CAAA,EAAA,EA3BM,KA4BT,CACD,CAAA,EACH;AAAA;AAAA,KACJ;AAAA,EAEJ;AACF;AC3MA,IAAM,QAAA,GAAW,EAAE,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAMvD,IAAM,WAAA,GAAc,CAAA;AAyCb,IAAM,QAAA,GAAWM,UAAAA,CAGtB,SAASwB,SAAAA,CAAS,EAAE,SAAA,EAAW,YAAA,EAAc,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACvE,EAAA,MAAM,sBACJ9B,GAAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,GAAA;AAAA,MACA,WAAW,EAAA,CAAG,eAAA,EAAiB,QAAA,KAAa,MAAA,GAAY,YAAY,YAAY,CAAA;AAAA,MAC/E,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAK,IAAAA,CAAmB,iBAAA,CAAA,SAAA,EAAlB,EAA4B,WAAU,oBAAA,EACrC,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,sBAAA;AAAA,YACV,aAAA,EAAW,IAAA;AAAA,YACX,WAAA;AAAA,YACA,mBAAA,EAAmB,IAAA;AAAA,YACnB,KAAA,EAAO;AAAA;AAAA,SACT;AAAA,wBACAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,8BAAA;AAAA,YACV,aAAA,EAAW,IAAA;AAAA,YACX,WAAA;AAAA,YACA,mBAAA,EAAmB,IAAA;AAAA,YACnB,KAAA,EAAO;AAAA;AAAA;AACT,OAAA,EACF;AAAA;AAAA,GACF;AAGF,EAAA,IAAI,QAAA,KAAa,QAAW,OAAO,GAAA;AAEnC,EAAA,uBACEK,IAAAA,CAAC,OAAA,EAAA,EAAM,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAC7C,QAAA,EAAA;AAAA,IAAA,GAAA;AAAA,oBACDL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAS;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAC;AC9BD,IAAM,oBAAA,GAAuBkB,cAAuC,IAAI,CAAA;AAOjE,IAAM,aAAA,GAAgBZ,UAAAA;AAAA,EAC3B,SAASyB,cAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,YAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA,GAAc,YAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,IAAA,GAAO,SAAA;AAAA,IACP,IAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIjB,QAAAA;AAAA,MACtC,gBAAgB;AAAC,KACnB;AACA,IAAA,MAAM,eAAe,UAAA,KAAe,MAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,eAAe,UAAA,GAAa,YAAA;AAE1C,IAAA,MAAM,MAAA,GAASG,WAAAA;AAAA,MACb,CAAC,CAAA,KAAc;AACb,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,CAAC,IACzB,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,CAAC,CAAA,GAC3B,CAAC,GAAG,OAAO,CAAC,CAAA;AAChB,QAAA,IAAI,CAAC,YAAA,EAAc,eAAA,CAAgB,IAAI,CAAA;AACvC,QAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,CAAC,KAAA,EAAO,YAAA,EAAc,aAAa;AAAA,KACrC;AAEA,IAAA,MAAM,GAAA,GAAMS,OAAAA;AAAA,MACV,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,MAAM,IAAA,EAAK,CAAA;AAAA,MAC7C,CAAC,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,MAAM,IAAI;AAAA,KACtC;AAEA,IAAA,uBACE1B,GAAAA,CAAC,oBAAA,CAAqB,UAArB,EAA8B,KAAA,EAAO,KACpC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,kBAAA,EAAkB,WAAA;AAAA,QAClB,WAAA,EAAW,IAAA;AAAA,QACX,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,QACxC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,OAAA,GACG,OAAA,CAAQ,GAAA,CAAI,CAAC,wBACXA,GAAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YAEC,OAAO,GAAA,CAAI,KAAA;AAAA,YACX,UAAU,GAAA,CAAI,QAAA;AAAA,YAEb,QAAA,EAAA,GAAA,CAAI;AAAA,WAAA;AAAA,UAJA,GAAA,CAAI;AAAA,SAMZ,CAAA,GACD;AAAA;AAAA,KACN,EACF,CAAA;AAAA,EAEJ;AACF;AAcA,SAAS,iBAAA,CAAkB;AAAA,EACzB,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,GAAA,GAAMmB,WAAW,oBAAoB,CAAA;AAC3C,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA;AACxC,EAAA,MAAM,UAAA,GAAa,YAAY,GAAA,CAAI,QAAA;AACnC,EAAA,uBACEd,IAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,qBAAA,EAAsB,eAAA,EAAe,cAAc,MAAA,EAClE,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,QAAA,EAAU,UAAA;AAAA,QACV,eAAA,EAAiB,MAAM,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAAA,QACvC,MAAM,GAAA,CAAI,IAAA;AAAA,QACV;AAAA;AAAA,KACF;AAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAA6B,QAAA,EAAS;AAAA,GAAA,EACxD,CAAA;AAEJ;AC9HA,IAAMS,WAAAA,GAA8C;AAAA,EAClD,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,UAAA,GAAa,sBAAA;AACnB,IAAM,WAAA,GAAc,sBAAA;AAEpB,SAAS,YAAA,CAAa,KAAa,SAAA,EAAmC;AACpE,EAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,EAAK;AACvB,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,IAAI,SAAA,IAAa,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EAAG;AACxC,IAAA,OAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,EAAE,CAAA,CAAE,aAAa,CAAA,CAAA;AAAA,EAClD;AACA,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1B,IAAA,OAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,EAAE,CAAA,CAAE,aAAa,CAAA,CAAA;AAAA,EAClD;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,UAAU,KAAA,EAAuB;AAExC,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,oBAAoB,CAAA;AAC1C,EAAA,OAAO,CAAA,GAAI,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA,GAAK,SAAA;AAC1B;AAEA,SAAS,QAAQ,KAAA,EAAuB;AACtC,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,mCAAmC,CAAA;AACzD,EAAA,IAAI,CAAC,GAAG,OAAO,CAAA;AACf,EAAA,OAAO,QAAA,CAAS,CAAA,CAAE,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAC9B;AAEA,SAAS,UAAA,CAAW,KAAa,KAAA,EAAuB;AACtD,EAAA,MAAM,IAAA,GAAO,UAAU,GAAG,CAAA;AAC1B,EAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA,GAAI,GAAG,CAAA,CACvD,QAAA,CAAS,EAAE,CAAA,CACX,QAAA,CAAS,GAAG,GAAG,CAAA;AAClB,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,CAAC,CAAA,CAAA;AACpB;AAEO,IAAM,WAAA,GAAcH,UAAAA;AAAA,EACzB,SAAS0B,YAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,YAAA,GAAe,SAAA;AAAA,IACf,aAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,IAAA,GAAO,SAAA;AAAA,IACP,QAAA,GAAW,KAAA;AAAA,IACX,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIlB,SAAiB,YAAY,CAAA;AACvE,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,YAAA,GAAe,eAAe,KAAA,GAAQ,aAAA;AAE5C,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA;AAAA,MACtC,WAAA,IAAe;AAAA,KACjB;AACA,IAAA,MAAM,mBAAmB,IAAA,KAAS,MAAA;AAClC,IAAA,MAAM,WAAA,GAAc,mBAAmB,IAAA,GAAO,YAAA;AAE9C,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAiB,YAAY,CAAA;AAE7D,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,MAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,IAAI,CAAA;AACxC,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,MAAA,IAAI,CAAC,gBAAA,EAAkB,eAAA,CAAgB,IAAI,CAAA;AAC3C,MAAA,YAAA,GAAe,IAAI,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAyC;AACnE,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA;AAC1B,MAAA,MAAM,IAAA,GAAO,YACT,UAAA,CAAW,IAAA,EAAM,QAAQ,YAAY,CAAC,CAAA,GACtC,IAAA,CAAK,WAAA,EAAY;AACrB,MAAA,MAAA,CAAO,IAAI,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAyC;AAC/D,MAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,KAAA;AACzB,MAAA,WAAA,CAAY,GAAG,CAAA;AACf,MAAA,MAAM,UAAA,GAAa,YAAA,CAAa,GAAA,EAAK,SAAS,CAAA;AAC9C,MAAA,IAAI,UAAA,SAAmB,UAAU,CAAA;AAAA,IACnC,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAyC;AAClE,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AACvC,MAAA,MAAA,CAAO,UAAA,CAAW,YAAA,EAAc,KAAK,CAAC,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,uBACET,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,WAAA;AAAA,QACN,YAAA,EAAc,WAAW,MAAA,GAAY,OAAA;AAAA,QACrC,KAAA,EAAM,OAAA;AAAA,QACN,SAAA,EAAU,mBAAA;AAAA,QACV,yBACEA,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,QAAA;AAAA,YACA,iBAAe,QAAA,IAAY,MAAA;AAAA,YAC3B,SAAA,EAAW,EAAA;AAAA,cACT,qBAAA;AAAA,cACAI,YAAW,IAAI,CAAA;AAAA,cACf;AAAA,aACF;AAAA,YACA,YAAA,EAAW,cAAA;AAAA,YAEX,QAAA,EAAA;AAAA,8BAAAT,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oBAAA;AAAA,kBACV,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA,EAAa;AAAA,kBAClC,aAAA,EAAW;AAAA;AAAA,eACb;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAA6B,QAAA,EAAA,YAAA,EAAa;AAAA;AAAA;AAAA,SAC5D;AAAA,QAGA,QAAA,EAAA;AAAA,0BAAAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qBAAA;AAAA,cACV,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA,EAAa;AAAA,cAClC,aAAA,EAAW;AAAA;AAAA,WACb;AAAA,0BACAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,KAAA,EAAO,UAAU,YAAY,CAAA;AAAA,cAC7B,QAAA,EAAU,kBAAA;AAAA,cACV,SAAA,EAAU,oBAAA;AAAA,cACV,YAAA,EAAW;AAAA;AAAA,WACb;AAAA,UACC,6BACCA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,GAAA,EAAK,CAAA;AAAA,cACL,GAAA,EAAK,CAAA;AAAA,cACL,IAAA,EAAM,IAAA;AAAA,cACN,KAAA,EAAO,QAAQ,YAAY,CAAA;AAAA,cAC3B,QAAA,EAAU,iBAAA;AAAA,cACV,SAAA,EAAU,mBAAA;AAAA,cACV,YAAA,EAAW;AAAA;AAAA,WACb;AAAA,0BAEFA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,KAAA,EAAO,QAAA;AAAA,cACP,QAAA,EAAU,cAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,iBAAiB,CAAA;AAAA,cACxC,UAAA,EAAY,KAAA;AAAA,cACZ,YAAA,EAAW;AAAA;AAAA,WACb;AAAA,UACC,WAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAC3BA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EAAsB,IAAA,EAAK,WAAU,YAAA,EAAW,eAAA,EAC5D,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,YAAA,MAAM,QAAA,GACJ,MAAA,CAAO,WAAA,EAAY,KAAM,aAAa,WAAA,EAAY;AACpD,YAAA,uBACEA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,oBAAA;AAAA,gBACV,IAAA,EAAK,QAAA;AAAA,gBACL,eAAA,EAAe,QAAA;AAAA,gBACf,iBAAe,QAAA,IAAY,MAAA;AAAA,gBAC3B,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAO;AAAA,gBAC5B,OAAA,EAAS,MAAM,MAAA,CAAO,MAAM,CAAA;AAAA,gBAC5B,YAAA,EAAY;AAAA,eAAA;AAAA,cARP;AAAA,aASP;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA,KAEN;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;ACtNnB,IAAM,KAAA,GAAQM,UAAAA,CAAuC,SAAS2B,MAAAA,CACnE;AAAA,EACE,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,cAAc,IAAA,IAAQ,WAAA;AAC5B,EAAA,uBACE5B,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,OAAA,EAAS,SAAS,CAAA,EAAI,GAAG,IAAA,EACnD,QAAA,EAAA;AAAA,IAAA,KAAA,KAAU,0BACTL,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAED,QAAA;AAAA,IAAA,CACC,WAAA,KAAgB,MAAA,IAAa,KAAA,KAAU,MAAA,qBACvCK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,KAAA,KAAU,MAAA,GAAY,UAAA,GAAa,MAAA,EAChD,QAAA,EAAA;AAAA,MAAA,WAAA,KAAgB,MAAA,oBACfL,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAa,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,MAEpC,UAAU,MAAA,oBAAaA,GAAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO;AAAA,KAAA,EAChD;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AAkBD,IAAM,YAAA,GAAeM,UAAAA;AAAA,EACnB,SAAS4B,aAAAA,CACP;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA,GAAgB,gBAAA;AAAA,IAChB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,uBACE7B,KAAC,OAAA,EAAA,EAAM,GAAA,EAAU,WAAW,EAAA,CAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EAC7C,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,MACf,4BAAYA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,OAAM,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,MACnC,4BAAYA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,OAAO,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,MACjD,SAAS,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAQ,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,MACnD,KAAA,KAAU,MAAA,oBACTK,IAAAA,CAAAG,UAAA,EACE,QAAA,EAAA;AAAA,wBAAAR,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,QACxB;AAAA,OAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAoBA,IAAMoB,WAAAA,GAA4C;AAAA,EAChD,OAAA,EAAS,EAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,KAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,QAAA,GAAWd,UAAAA,CAA2C,SAAS6B,SAAAA,CACnE;AAAA,EACE,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GACJ,SACC,KAAA,GAAQ,OAAA,GAAU,UAAU,MAAA,GAAS,IAAA,GAAO,MAAA,GAAS,OAAA,GAAU,SAAA,GAAY,SAAA,CAAA;AAC9E,EAAA,uBACE9B,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAW,EAAA,CAAG,MAAA,EAAQe,WAAAA,CAAW,QAAQ,GAAG,SAAS,CAAA;AAAA,MACpD,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAWD,IAAM,SAAA,GAAYd,UAAAA;AAAA,EAChB,SAAS8B,UAAAA,CACP,EAAE,SAAA,EAAW,OAAA,EAAS,GAAA,EAAK,MAAA,GAAS,GAAA,EAAK,GAAG,IAAA,EAAK,EACjD,GAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,OAAA,GAAU,GAAA;AAClD,IAAA,MAAM,IAAA,GACJ,OAAO,GAAA,KAAQ,QAAA,IACf,CAAC,QACD,OAAA,IAAW,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,MAAM,CAAA;AACpC,IAAA,uBACEpC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,OAAA;AAAA,UACA,IAAA,IAAQ,MAAA;AAAA,UACR,IAAA,IAAQ,MAAA;AAAA,UACR;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,iBAAO,GAAA,KAAQ,QAAA,GAAW,GAAG,OAAO,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,GAAK;AAAA;AAAA,KACrD;AAAA,EAEJ;AACF,CAAA;;;AC9JO,SAAS,gBAAA,CACd,IAAA,EACA,WAAA,GAA2B,SAAA,EACR;AACnB,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,KAAA,EAAO;AACxC,IAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,WAAA,EAAY;AAAA,EAC5C;AACA,EAAA,IAAI,SAAS,IAAA,EAAM,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,MAAM,WAAA,EAAY;AAC5D,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,IAAA;AAAA,IACR,IAAA,EAAM,KAAK,IAAA,IAAQ,WAAA;AAAA,IACnB,OAAO,IAAA,CAAK;AAAA,GACd;AACF;ACGA,IAAM,iBAAA,GAAoBkB,aAAAA,CAA6B,EAAE,IAAA,EAAM,WAAW,CAAA;AAEnE,IAAM,UAAA,GAAaZ,UAAAA,CAGxB,SAAS+B,WAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,uBACErC,IAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAAO,EAAE,IAAA,EAAK,EACxC,QAAA,kBAAAA,GAAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,WAAA;AAAA,MACA,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACrC,GAAG,IAAA;AAAA,MAEH,oBACG,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACXA,IAAC,KAAA,EAAA,EAAsB,KAAA,EAAO,IAAI,KAAA,EAAO,QAAA,EAAU,IAAI,QAAA,EACpD,QAAA,EAAA,GAAA,CAAI,SADK,GAAA,CAAI,KAEhB,CACD,CAAA,GACD;AAAA;AAAA,GACN,EACF,CAAA;AAEJ,CAAC;AAUM,IAAM,KAAA,GAAQM,UAAAA,CAGnB,SAASgC,MAAAA,CAAM,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,EAAA,EAAG,EAAG,GAAA,EAAK;AAClE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAInB,UAAAA,CAAW,iBAAiB,CAAA;AAC7C,EAAA,uBACEd,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,kBAAA;AAAA,MACV,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,WAAA,EAAW,IAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAAqB,mBAAA,CAAA,IAAA;AAAA,UAApB;AAAA,YACC,GAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,EAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,YAErC,QAAA,kBAAAA,GAAAA,CAAqB,mBAAA,CAAA,SAAA,EAApB,EAA8B,WAAU,iBAAA,EAAkB;AAAA;AAAA,SAC7D;AAAA,QACC,QAAA,KAAa,yBACZA,GAAAA,CAAC,UAAK,SAAA,EAAU,wBAAA,EAA0B,UAAS,CAAA,GACjD;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;AC5ED,IAAMS,WAAAA,GAAuC;AAAA,EAC3C,KAAA,EAAO,iBAAA;AAAA,EACP,OAAA,EAAS,mBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,IAAA,GAAOH,UAAAA,CAAsC,SAASiC,KAAAA,CACjE;AAAA,EACE,KAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,aAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,SAAA,GAAY,KAAA;AAAA,EACZ,IAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIzB,SAAiB,YAAY,CAAA;AACvE,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,YAAA,GAAe,eAAe,KAAA,GAAQ,aAAA;AAE5C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,eAAe,UAAA,IAAc,YAAA;AAEnC,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,IAAI,CAAA;AACxC,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,QAAA,IAAY,CAAC,QAAA;AAElC,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAe,KAAA,KAAyC;AAC3E,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,MAAM,OACJ,SAAA,IAAa,UAAA,CAAW,KAAK,CAAA,GACzB,QAAQ,GAAA,GACR,KAAA;AACN,IAAA,MAAA,CAAO,IAAI,CAAA;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAe,KAAA,KAAyC;AAC3E,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,MAAM,OACJ,SAAA,IAAa,UAAA,CAAW,KAAK,CAAA,GACzB,QAAQ,GAAA,GACR,KAAA;AACN,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAW,EAAA,CAAG,MAAA,EAAQS,WAAAA,CAAW,IAAI,GAAG,SAAS,CAAA;AAAA,MACjD,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,IAAA,EAAK,YAAA;AAAA,MACL,YAAA,EAAW,QAAA;AAAA,MACX,YAAA,EAAc,WAAA;AAAA,MAEb,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,KAAM;AACvC,QAAA,MAAM,QAAQ,CAAA,GAAI,CAAA;AAClB,QAAA,MAAM,SAAS,YAAA,IAAgB,KAAA;AAC/B,QAAA,MAAM,IAAA,GACJ,SAAA,IAAa,CAAC,MAAA,IAAU,gBAAgB,KAAA,GAAQ,GAAA;AAClD,QAAA,uBACET,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,WAAA;AAAA,YACV,eAAa,MAAA,IAAU,MAAA;AAAA,YACvB,aAAW,IAAA,IAAQ,MAAA;AAAA,YACnB,QAAA;AAAA,YACA,cAAA,EAAc,IAAA,CAAK,IAAA,CAAK,YAAY,CAAA,KAAM,KAAA;AAAA,YAC1C,IAAA,EAAK,OAAA;AAAA,YACL,YAAA,EAAY,CAAA,EAAG,KAAK,CAAA,IAAA,EAAO,KAAK,CAAA,CAAA;AAAA,YAChC,OAAA,EAAS,CAAC,KAAA,KAAU,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,YAC5C,WAAA,EAAa,CAAC,KAAA,KAAU,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,YAE/C,QAAA,EAAA,UAAA,CAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM;AAAA,WAAA;AAAA,UAZ7B;AAAA,SAaP;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,SAAS,WAAW,KAAA,EAA+C;AACjE,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,aAAA,CAAc,qBAAA,EAAsB;AACvD,EAAA,OAAO,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,KAAK,KAAA,GAAQ,CAAA;AAClD;AAEA,SAAS,WAAW,IAAA,EAIN;AACZ,EAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AACA,EAAA,IAAI,KAAK,IAAA,EAAM;AACb,IAAA,uBAAOA,IAAC,QAAA,EAAA,EAAS,IAAA,EAAK,gBAAe,WAAA,EAAa,GAAA,EAAK,eAAW,IAAA,EAAC,CAAA;AAAA,EACrE;AACA,EAAA,IAAI,KAAK,MAAA,EAAQ;AACf,IAAA,uBAAOA,IAAC,IAAA,EAAA,EAAK,IAAA,EAAK,gBAAe,WAAA,EAAa,GAAA,EAAK,eAAW,IAAA,EAAC,CAAA;AAAA,EACjE;AACA,EAAA,uBAAOA,IAAC,IAAA,EAAA,EAAK,IAAA,EAAK,QAAO,WAAA,EAAa,GAAA,EAAK,eAAW,IAAA,EAAC,CAAA;AACzD;ACxGA,SAAS,cACP,GAAA,EAC0B;AAC1B,EAAA,OAAO,KAAA,CAAM,OAAA,CAAS,GAAA,CAA0B,OAAO,CAAA;AACzD;AAEA,SAAS,eAAe,OAAA,EAAwC;AAC9D,EAAA,MAAM,MAAsB,EAAC;AAC7B,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,IAAI,cAAc,GAAG,CAAA,MAAO,IAAA,CAAK,GAAG,IAAI,OAAO,CAAA;AAAA,SAC1C,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,EACnB;AACA,EAAA,OAAO,GAAA;AACT;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,GAAe,eAAA;AAAA,EACf,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACEA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA;AAAA,QACA,gBAAA;AAAA,QACA,iBAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACA,EAAA,uBACEK,IAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAsB,GAAG,IAAA,EACxB,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAACuB,QAAAA,EAAA,EAAQ,SAAA,EAAW,gBAAA,EAClB,0BAAAvB,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAA0B,CAAA,EACnD,CAAA;AAAA,oBACAA,GAAAA,CAACwC,QAAAA,EAAA,EAAQ,SAAA,EAAW,kBACjB,QAAA,EAAA,OAAA,CAAQ,GAAA;AAAA,MAAI,CAAC,KAAK,CAAA,KACjB,aAAA,CAAc,GAAG,CAAA,mBACfnC,IAAAA,CAACG,UAAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,IAAAA,CAAiB,uBAAhB,EACC,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAACyC,MAAAA,EAAA,EAAO,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,UACjB,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAC,yBAChBzC,GAAAA;AAAA,YAAC0C,KAAAA;AAAA,YAAA;AAAA,cAEC,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,UAAU,IAAA,CAAK,QAAA;AAAA,cAEd,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YAJD,IAAA,CAAK;AAAA,WAMb;AAAA,SAAA,EACH,CAAA;AAAA,QACC,IAAI,OAAA,CAAQ,MAAA,GAAS,qBAAK1C,GAAAA,CAAC2C,YAAA,EAAU;AAAA,OAAA,EAAA,EAbzB,SAAS,CAAC,CAAA,CAczB,CAAA,mBAEA3C,IAAC0C,KAAAA,EAAA,EAAqB,KAAA,EAAO,GAAA,CAAI,OAAO,QAAA,EAAU,GAAA,CAAI,UACnD,QAAA,EAAA,GAAA,CAAI,KAAA,EAAA,EADI,IAAI,KAEf;AAAA,KAEJ,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAKA,SAAS,gBAAA,CAAiB;AAAA,EACxB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,EAAM,KAAA;AAAA,EACN,QAAA,EAAU,SAAA;AAAA,EACV,GAAA,EAAK,IAAA;AAAA,EACL,YAAA,EAAc,aAAA;AAAA,EACd,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,oBAAoB,KAAA,KAAU,MAAA;AACpC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI5B,QAAAA;AAAA,IACxC;AAAA,GACF;AACA,EAAA,MAAM,YAAA,GAAe,oBAAoB,KAAA,GAAQ,aAAA;AAEjD,EAAA,MAAM,mBAAmB,QAAA,KAAa,MAAA;AACtC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA,CAAS,eAAe,KAAK,CAAA;AACrE,EAAA,MAAM,IAAA,GAAO,mBAAmB,QAAA,GAAW,YAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,IAAA,IAAI,CAAC,gBAAA,EAAkB,eAAA,CAAgB,IAAI,CAAA;AAC3C,IAAA,YAAA,GAAe,IAAI,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,cAAA,CAAe,OAAO,CAAA,CAAE,IAAA;AAAA,IACvC,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU;AAAA,GAC/B;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,KAAA,EAAM,OAAA;AAAA,MACN,UAAA,EAAY,CAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,gBAAgB,CAAA;AAAA,MAChD,yBACEK,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,gBAAA,EAAkB,gBAAgB,CAAA;AAAA,UACzD,QAAA;AAAA,UACA,eAAA,EAAc,SAAA;AAAA,UACd,OACE,QAAA,IAAY,OAAO,SAAS,KAAA,KAAU,QAAA,GAClC,SAAS,KAAA,GACT,MAAA;AAAA,UAGN,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,CAAC,QAAA,IAAY,OAAO,CAAA,EAC5D,QAAA,EAAA,QAAA,GAAW,QAAA,CAAS,KAAA,GAAQ,WAAA,EAC/B,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC6B,WAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,OAAA;AAAA,gBACV,aAAA,EAAW,IAAA;AAAA,gBACX,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO,kBAAA;AAAA,kBACP,MAAA,EAAQ,kBAAA;AAAA,kBACR,UAAA,EAAY;AAAA;AACd;AAAA;AACF;AAAA;AAAA,OACF;AAAA,MAED,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAxB,IAAAA,CAACuC,OAAAA,EAAA,EAAQ,WAAU,kBAAA,EACjB,QAAA,EAAA;AAAA,wBAAA5C,GAAAA;AAAA,UAAC4C,OAAAA,CAAQ,KAAA;AAAA,UAAR;AAAA,YACC,SAAA,EAAU,gBAAA;AAAA,YACV,WAAA,EAAa;AAAA;AAAA,SACf;AAAA,wBACA5C,GAAAA,CAAC4C,OAAAA,CAAQ,IAAA,EAAR,EAAa,WAAU,eAAA,EACrB,QAAA,EAAA,OAAA,mBACC5C,GAAAA,CAAC4C,OAAAA,CAAQ,IAAA,EAAR,EAAa,KAAA,EAAM,WAAA,EAAY,QAAA,EAAQ,IAAA,EAAC,SAAA,EAAU,eAAA,EAChD,wBACH,CAAA,mBAEAvC,IAAAA,CAAAG,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA,KAAe,MAAA,oBACdR,GAAAA,CAAC4C,OAAAA,CAAQ,OAAR,EAAc,SAAA,EAAU,kBACtB,QAAA,EAAA,UAAA,EACH,CAAA;AAAA,UAED,OAAA,CAAQ,GAAA;AAAA,YAAI,CAAC,GAAA,EAAK,CAAA,KACjB,aAAA,CAAc,GAAG,oBACf5C,GAAAA;AAAA,cAAC4C,OAAAA,CAAQ,KAAA;AAAA,cAAR;AAAA,gBAEC,SACE,OAAO,GAAA,CAAI,KAAA,KAAU,QAAA,GAAW,IAAI,KAAA,GAAQ,MAAA;AAAA,gBAG7C,QAAA,EAAA,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAC,yBAChB5C,GAAAA;AAAA,kBAAC,cAAA;AAAA,kBAAA;AAAA,oBAEC,MAAA,EAAQ,IAAA;AAAA,oBACR,QAAA,EAAU,CAAC,MAAA,KAAW;AACpB,sBAAA,IAAI,CAAC,iBAAA,EAAmB,gBAAA,CAAiB,MAAM,CAAA;AAC/C,sBAAA,aAAA,GAAgB,MAAM,CAAA;AACtB,sBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,oBACf;AAAA,mBAAA;AAAA,kBANK,IAAA,CAAK;AAAA,iBAQb;AAAA,eAAA;AAAA,cAfI,SAAS,CAAC,CAAA;AAAA,gCAkBjBA,GAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBAEC,MAAA,EAAQ,GAAA;AAAA,gBACR,QAAA,EAAU,CAAC,MAAA,KAAW;AACpB,kBAAA,IAAI,CAAC,iBAAA,EAAmB,gBAAA,CAAiB,MAAM,CAAA;AAC/C,kBAAA,aAAA,GAAgB,MAAM,CAAA;AACtB,kBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,gBACf;AAAA,eAAA;AAAA,cANK,GAAA,CAAI;AAAA;AAOX;AAEJ,SAAA,EACF,CAAA,EAEJ;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,MAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,QAAA,GACJ,OAAO,MAAA,CAAO,KAAA,KAAU,WAAW,CAAC,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA;AACtD,EAAA,uBACEA,GAAAA;AAAA,IAAC4C,OAAAA,CAAQ,IAAA;AAAA,IAAR;AAAA,MACC,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,QAAA;AAAA,MACA,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,SAAA,EAAU,eAAA;AAAA,MACV,QAAA;AAAA,MAEC,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,GACV;AAEJ;AAEA,IAAMrB,QAAAA,GAAUjB,UAAAA,CAGd,SAASiB,QAAAA,CAAQ,EAAE,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACxD,EAAA,uBACElB,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACjD,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDL,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,MAC3B,QAAA,kBAAAA,GAAAA;AAAA,UAAC6B,WAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,OAAA;AAAA,YACV,aAAA,EAAW,IAAA;AAAA,YACX,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,kBAAA;AAAA,cACP,MAAA,EAAQ,kBAAA;AAAA,cACR,UAAA,EAAY;AAAA;AACd;AAAA,SACF,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC,CAAA;AAED,IAAMW,QAAAA,GAAUlC,UAAAA,CAGd,SAASkC,QAAAA,CACT,EAAE,SAAA,EAAW,QAAA,EAAU,QAAA,GAAW,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,IAAA,IAC/D,GAAA,EACA;AACA,EAAA,uBACExC,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAK,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACzC,QAAA;AAAA,MACA,UAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,YACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC6C,SAAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAW,IAAA;AAAA,YACX,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,QAAQ,kBAAA;AAAmB;AAAA,SACjE,EACF,CAAA;AAAA,wBACA7C,GAAAA,CAAiB,eAAA,CAAA,QAAA,EAAhB,EAAyB,SAAA,EAAU,mBACjC,QAAA,EACH,CAAA;AAAA,wBACAA,GAAAA,CAAC,UAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC6B,WAAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAW,IAAA;AAAA,YACX,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,QAAQ,kBAAA;AAAmB;AAAA,SACjE,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAC,CAAA;AAED,IAAMY,MAAAA,GAAQnC,WAGZ,SAASmC,MAAAA,CAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC5C,EAAA,uBACEzC,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,MACtC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AAED,IAAM0C,KAAAA,GAAOpC,UAAAA,CAGX,SAASoC,KAAAA,CAAK,EAAE,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACrD,EAAA,uBACE1C,GAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACrC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAiB,eAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA,GACtC;AAEJ,CAAC,CAAA;AAED,IAAM2C,UAAAA,GAAYrC,WAGhB,SAASqC,UAAAA,CAAU,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAChD,EAAA,uBACE3C,GAAAA;AAAA,IAAiB,eAAA,CAAA,SAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA;AAAA,MAC1C,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AAED,IAAM,QAAA,GAAWM,WAGf,SAASwC,SAAAA,CAAS,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC/C,EAAA,uBACE9C,GAAAA;AAAA,IAAiB,eAAA,CAAA,cAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA;AAAA,MAC3C,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AAED,IAAM,UAAA,GAAaM,WAGjB,SAASyC,WAAAA,CAAW,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACjD,EAAA,uBACE/C,GAAAA;AAAA,IAAiB,eAAA,CAAA,gBAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA;AAAA,MAC3C,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AClXD,SAAS,QAAQ,CAAA,EAAkD;AACjE,EAAA,IAAI,CAAA,KAAM,QAAW,OAAO,MAAA;AAC5B,EAAA,OAAO,MAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAA;AAClC;AAEO,IAAM,MAAA,GAASM,UAAAA,CAGpB,SAAS0C,OAAAA,CACT;AAAA,EACE,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR,QAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAatB,QAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACxD,EAAA,MAAM,YAAA,GAAeA,OAAAA;AAAA,IACnB,MAAM,OAAA,CAAQ,YAAY,CAAA,KAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,CAAC,GAAG,CAAA,CAAA;AAAA,IACzD,CAAC,YAAA,EAAc,KAAA,EAAO,GAAA,EAAK,GAAG;AAAA,GAChC;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAmB;AACvC,IAAA,IAAI,CAAC,aAAA,EAAe;AACpB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,aAAA,CAAc,CAAC,KAAK,CAAC,CAAA,IAAK,KAAK,IAAA,CAAK,CAAC,CAAA,IAAK,GAAG,CAAC,CAAA;AAAA,IAChD,CAAA,MAAO;AACL,MAAA,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,IAAK,GAAG,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,QAAQ,CAAA,GAAI,CAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,IAAO,CAAA;AAM1B,EAAA,MAAM,SAAA,GACJ,eAAe,MAAA,GAAY,EAAE,OAAO,UAAA,EAAW,GAAI,EAAE,YAAA,EAAc,YAAA,EAAa;AAElF,EAAA,uBACErB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,oBAAkB,WAAA,EAC7C,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAiB,eAAA,CAAA,IAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QAChC,GAAG,SAAA;AAAA,QACJ,aAAA,EAAe,YAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA;AAAA,QACA,kBAAA,EAAkB,WAAA;AAAA,QACjB,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,cAAA,EAC/B,QAAA,kBAAAA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,cAAA,EAAe,CAAA,EAClD,CAAA;AAAA,UACC,MAAM,IAAA,CAAK,EAAE,QAAQ,UAAA,EAAY,EAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBAC1CA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAA8B,SAAA,EAAU,cAAA,EAAA,EAAb,CAA4B,CACzD;AAAA;AAAA;AAAA,KACH;AAAA,IACC,KAAA,IAAS,KAAA,CAAM,MAAA,GAAS,CAAA,mBACvBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EAAe,kBAAA,EAAkB,WAAA,EAC7C,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAChB,MAAA,MAAM,GAAA,GAAA,CAAQ,CAAA,CAAE,KAAA,GAAQ,GAAA,IAAO,IAAA,GAAQ,GAAA;AACvC,MAAA,MAAM,KAAA,GACJ,WAAA,KAAgB,UAAA,GACZ,EAAE,MAAA,EAAQ,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,EAAI,GACpB,EAAE,IAAA,EAAM,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,EAAI;AACxB,MAAA,uBACEK,IAAAA,CAAC,MAAA,EAAA,EAAmB,SAAA,EAAU,eAAc,KAAA,EAC1C,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAkB,eAAW,IAAA,EAAC,CAAA;AAAA,QAC7C,CAAA,CAAE,KAAA,KAAU,MAAA,mBACXA,GAAAA,CAAC,UAAK,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,CAAA,CAAE,KAAA,EAAM,CAAA,GAC3C;AAAA,OAAA,EAAA,EAJK,EAAE,KAKb,CAAA;AAAA,IAEJ,CAAC,GACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAC;AC1IM,IAAM,MAAA,GAASM,WAGpB,SAAS2C,OAAAA,CAAO,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC7C,EAAA,uBACEjD,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,GAAA,EAAU,SAAA,EAAW,GAAG,aAAA,EAAe,SAAS,CAAA,EAAI,GAAG,MAC3E,QAAA,kBAAAA,GAAAA,CAAiB,uBAAhB,EAAsB,SAAA,EAAU,gBAAe,CAAA,EAClD,CAAA;AAEJ,CAAC;ACiCD,IAAMG,cAAAA,GAAmD;AAAA,EACvD,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,gBAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAEA,IAAMM,WAAAA,GAA6C;AAAA,EACjD,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,UAAA,GAAaH,UAAAA;AAAA,EACxB,SAAS4C,WAAAA,CACP;AAAA,IACE,OAAA,GAAU,WAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,SAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AAKA,IAAA,MAAM,SAAA,GAAYC,OAAO,KAAK,CAAA;AAE9B,IAAAxB,UAAU,MAAM;AACd,MAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AAC3C,MAAA,IAAI,UAAU,OAAA,EAAS;AACvB,MAAA,MAAM,KAAA,GAAQ,IAAA;AACd,MAAA,MAAM,SAAA,GAAY,MAAM,YAAY,CAAA;AACpC,MAAA,MAAM,cAAA,GAAiB,MAAM,iBAAiB,CAAA;AAC9C,MAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,MAAA,MAAM,OAAA,GACH,OAAO,SAAA,KAAc,QAAA,IAAY,UAAU,IAAA,EAAK,KAAM,MACtD,OAAO,cAAA,KAAmB,YAAY,cAAA,CAAe,IAAA,OAAW,EAAA,IAChE,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,MAAK,KAAM,EAAA;AACjD,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AAEpB,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN;AAAA,SAIF;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,IAAA,MAAM,SAAA,GAAY,UAAUyB,IAAAA,GAAO,QAAA;AACnC,IAAA,uBACEpD,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAM,UAAU,MAAA,GAAY,IAAA;AAAA,QAC5B,SAAA,EAAW,EAAA;AAAA,UACT,UAAA;AAAA,UACAG,eAAc,OAAO,CAAA;AAAA,UACrBM,YAAW,IAAI,CAAA;AAAA,UACf;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AC9DO,IAAM,QAAA,GAAWH,UAAAA;AAAA,EACtB,SAAS+C,SAAAA,CACP;AAAA,IACE,UAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA,GAAS,CAAC,EAAA,EAAI,EAAE,CAAA;AAAA,IAChB,IAAA,GAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIvC,QAAAA;AAAA,MACxC,gBAAgB;AAAC,KACnB;AACA,IAAA,MAAM,SAAA,GAAY,YAAA,GAAe,KAAA,IAAS,EAAC,GAAI,aAAA;AAC/C,IAAA,MAAM,QAAA,GAAWY,QAAQ,MAAM,IAAI,IAAI,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAE9D,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAIZ,QAAAA,iBAAsB,IAAI,KAAK,CAAA;AACvE,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAIA,QAAAA,iBAAsB,IAAI,KAAK,CAAA;AACzE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC/C,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,EAAE,CAAA;AAEjD,IAAA,MAAM,SAAA,GAAYY,OAAAA;AAAA,MAChB,MAAM,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,MACnD,CAAC,YAAY,QAAQ;AAAA,KACvB;AACA,IAAA,MAAM,UAAA,GAAaA,OAAAA;AAAA,MACjB,MAAM,WAAW,MAAA,CAAO,CAAC,MAAM,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,GAAG,CAAC,CAAA;AAAA,MAClD,CAAC,YAAY,QAAQ;AAAA,KACvB;AAEA,IAAA,MAAM,WAAA,GAAcA,OAAAA;AAAA,MAClB,MAAM,cAAA,CAAe,SAAA,EAAW,UAAU,CAAA;AAAA,MAC1C,CAAC,WAAW,UAAU;AAAA,KACxB;AACA,IAAA,MAAM,YAAA,GAAeA,OAAAA;AAAA,MACnB,MAAM,cAAA,CAAe,UAAA,EAAY,WAAW,CAAA;AAAA,MAC5C,CAAC,YAAY,WAAW;AAAA,KAC1B;AAEA,IAAA,MAAM,MAAA,GAAST,WAAAA;AAAA,MACb,CAAC,SAAA,KAAwB;AACvB,QAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,SAAS,CAAA;AAC7C,QAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,MAC3B,CAAA;AAAA,MACA,CAAC,cAAc,aAAa;AAAA,KAC9B;AAEA,IAAA,MAAM,SAAA,GAAYA,YAAY,MAAM;AAClC,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,UAAU,SAAA,CAAU,MAAA;AAAA,QACxB,CAAC,MAAM,YAAA,CAAa,GAAA,CAAI,EAAE,GAAG,CAAA,IAAK,CAAC,CAAA,CAAE;AAAA,OACvC;AACA,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1B,MAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,GAAG,CAAC,CAAA;AAC/C,MAAA,MAAA,CAAO,CAAC,GAAG,SAAA,EAAW,GAAG,KAAK,CAAC,CAAA;AAC/B,MAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,YAAY,CAAA;AAC1C,MAAA,KAAA,MAAW,CAAA,IAAK,KAAA,EAAO,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA;AAC7C,MAAA,eAAA,CAAgB,aAAa,CAAA;AAAA,IAC/B,GAAG,CAAC,MAAA,EAAQ,UAAU,SAAA,EAAW,SAAA,EAAW,YAAY,CAAC,CAAA;AAEzD,IAAA,MAAM,QAAA,GAAWA,YAAY,MAAM;AACjC,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,UAAU,UAAA,CAAW,MAAA;AAAA,QACzB,CAAC,MAAM,aAAA,CAAc,GAAA,CAAI,EAAE,GAAG,CAAA,IAAK,CAAC,CAAA,CAAE;AAAA,OACxC;AACA,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1B,MAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,GAAG,CAAC,CAAA;AAC/C,MAAA,MAAA,CAAO,SAAA,CAAU,OAAO,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AAC7C,MAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,aAAa,CAAA;AAC3C,MAAA,KAAA,MAAW,CAAA,IAAK,KAAA,EAAO,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA;AAC7C,MAAA,gBAAA,CAAiB,aAAa,CAAA;AAAA,IAChC,GAAG,CAAC,MAAA,EAAQ,UAAU,UAAA,EAAY,SAAA,EAAW,aAAa,CAAC,CAAA;AAE3D,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAkB,GAAA,EAAa,IAAA,KAAuB;AACxE,MAAA,IAAI,QAAA,IAAY,KAAK,QAAA,EAAU;AAC/B,MAAA,MAAM,MAAA,GAAS,IAAA,KAAS,MAAA,GAAS,eAAA,GAAkB,gBAAA;AACnD,MAAA,MAAA,CAAO,CAAC,IAAA,KAAS;AACf,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,QAAA,IAAI,KAAK,GAAA,CAAI,GAAG,CAAA,EAAG,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,aAC7B,IAAA,CAAK,IAAI,GAAG,CAAA;AACjB,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,SAAA,GAAYR,YAAW,IAAI,CAAA;AAEjC,IAAA,uBACEJ,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAA,EAAW,SAAS,CAAA;AAAA,QAC9C,iBAAe,QAAA,IAAY,MAAA;AAAA,QAE3B,QAAA,EAAA;AAAA,0BAAAL,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,cACf,YAAY,SAAA,CAAU,MAAA;AAAA,cACtB,eAAe,YAAA,CAAa,IAAA;AAAA,cAC5B,YAAA,EAAc,WAAA;AAAA,cACd,QAAA,EAAU,YAAA;AAAA,cACV,QAAA;AAAA,cACA,UAAA;AAAA,cACA,WAAA,EAAa,UAAA;AAAA,cACb,cAAA,EAAgB,aAAA;AAAA,cAChB,iBAAA;AAAA,cACA,UAAA;AAAA,cACA,UAAU,CAAC,GAAA,EAAK,SAAS,UAAA,CAAW,MAAA,EAAQ,KAAK,IAAI,CAAA;AAAA,cACrD;AAAA;AAAA,WACF;AAAA,0BACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,YAAA;AAAA,gBACX,QAAA,EAAU,QAAA,IAAY,YAAA,CAAa,IAAA,KAAS,CAAA;AAAA,gBAC5C,OAAA,EAAS,SAAA;AAAA,gBACT,IAAA,EAAM,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,IAAA;AAAA,gBAEhC,0BAAAA,GAAAA,CAACsD,YAAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,eAAW,IAAA,EAAC;AAAA;AAAA,aACtC;AAAA,4BACAtD,GAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,WAAA;AAAA,gBACX,QAAA,EAAU,QAAA,IAAY,aAAA,CAAc,IAAA,KAAS,CAAA;AAAA,gBAC7C,OAAA,EAAS,QAAA;AAAA,gBACT,IAAA,EAAM,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,IAAA;AAAA,gBAEhC,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAM,EAAA,EAAI,eAAW,IAAA,EAAC;AAAA;AAAA;AACrC,WAAA,EACF,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,cACf,YAAY,UAAA,CAAW,MAAA;AAAA,cACvB,eAAe,aAAA,CAAc,IAAA;AAAA,cAC7B,YAAA,EAAc,YAAA;AAAA,cACd,QAAA,EAAU,aAAA;AAAA,cACV,QAAA;AAAA,cACA,UAAA;AAAA,cACA,WAAA,EAAa,WAAA;AAAA,cACb,cAAA,EAAgB,cAAA;AAAA,cAChB,iBAAA;AAAA,cACA,UAAA;AAAA,cACA,UAAU,CAAC,GAAA,EAAK,SAAS,UAAA,CAAW,OAAA,EAAS,KAAK,IAAI,CAAA;AAAA,cACtD;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAIA,IAAMS,WAAAA,GAA2C;AAAA,EAC/C,KAAA,EAAO,qBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,SAAS,cAAA,CAAe,OAAuB,KAAA,EAA+B;AAC5E,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACnC,EAAA,IAAI,CAAC,GAAG,OAAO,KAAA;AACf,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM;AACzB,IAAA,MAAM,YAAY,OAAO,CAAA,CAAE,UAAU,QAAA,GAAW,CAAA,CAAE,QAAQ,CAAA,CAAE,GAAA;AAC5D,IAAA,OAAO,SAAA,CAAU,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAA;AAAA,EAC3C,CAAC,CAAA;AACH;AAkBA,SAAS,MAAA,CAAO;AAAA,EACd,KAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,uBACEJ,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,oBAAAL,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,kBAAAK,KAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,aAAA,GAAgB,IAAI,CAAA,EAAA,EAAK,aAAa,IAAI,UAAU,CAAA,CAAA,CAAA,GAAM,KAAK,UAAU,CAAA,CAAA;AAAA,KAAA,EAC5E,CAAA,EACF,CAAA;AAAA,IACC,8BACCL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBACb,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,IAAA,KAAS,OAAA,GAAU,SAAA,GAAY,OAAA;AAAA,QACrC,WAAA,EAAa,iBAAA;AAAA,QACb,KAAA,EAAO,WAAA;AAAA,QACP,QAAA;AAAA,QACA,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA,KAChD,EACF,CAAA;AAAA,oBAEFA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAAS;AAC1B,MAAA,MAAM,YAAA,GAAe,YAAY,IAAA,CAAK,QAAA;AACtC,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AACrC,MAAA,uBACEK,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,oBAAA;AAAA,UACV,iBAAe,YAAA,IAAgB,MAAA;AAAA,UAC/B,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,UAEtC,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA;AAAA,gBACA,QAAA,EAAU,YAAA;AAAA,gBACV,eAAA,EAAiB,MAAM,QAAA,CAAS,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,gBAC9C,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA;AAAgB;AAAA,aACpC;AAAA,4BACAA,IAAC,MAAA,EAAA,EAAM,QAAA,EAAA,UAAA,GAAa,WAAW,IAAI,CAAA,GAAI,KAAK,KAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QAX7C,IAAA,CAAK;AAAA,OAYZ;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;ACnQA,SAAS,cAAc,OAAA,EAAkD;AACvE,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,KAA8B;AAC1C,IAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,MAAA,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA;AACxB,MAAA,IAAI,CAAA,CAAE,QAAA,EAAU,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAA;AAAA,IACjC;AAAA,EACF,CAAA;AACA,EAAA,IAAA,CAAK,OAAO,CAAA;AACZ,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,iBAAiB,OAAA,EAAuC;AAC/D,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,KAA8B;AAC1C,IAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,MAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAK,CAAA;AAChB,MAAA,IAAI,CAAA,CAAE,QAAA,EAAU,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAA;AAAA,IACjC;AAAA,EACF,CAAA;AACA,EAAA,IAAA,CAAK,OAAO,CAAA;AACZ,EAAA,OAAO,GAAA;AACT;AAYA,SAAS,QAAA,CAAS;AAAA,EAChB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,cAAc,CAAC,CAAC,OAAO,QAAA,IAAY,MAAA,CAAO,SAAS,MAAA,GAAS,CAAA;AAClE,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC/C,EAAA,uBACEK,IAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,sBAAA;AAAA,MACV,IAAA,EAAK,UAAA;AAAA,MACL,eAAA,EAAe,cAAc,UAAA,GAAa,MAAA;AAAA,MAC1C,iBAAe,UAAA,IAAc,MAAA;AAAA,MAE7B,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iBAAA;AAAA,YACV,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,YACrC,eAAA,EAAe,MAAA,CAAO,QAAA,GAAW,MAAA,GAAS,MAAA;AAAA,YAC1C,KAAA,EAAO,EAAE,WAAA,EAAa,CAAA,wBAAA,EAA2B,KAAK,CAAA,oBAAA,CAAA,EAAuB;AAAA,YAE5E,QAAA,EAAA;AAAA,cAAA,WAAA,mBACCL,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,mBAAA;AAAA,kBACV,YAAA,EAAY,aAAa,UAAA,GAAa,QAAA;AAAA,kBACtC,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,oBAAA,cAAA,CAAe,OAAO,KAAK,CAAA;AAAA,kBAC7B,CAAA;AAAA,kBAEC,QAAA,EAAA,UAAA,mBACCA,GAAAA,CAAC6B,WAAAA,EAAA,EAAY,aAAA,EAAW,IAAA,EAAC,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,MAAA,EAAQ,kBAAA,EAAmB,EAAG,CAAA,mBAE3F7B,GAAAA,CAACsD,YAAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,MAAA,EAAQ,kBAAA,EAAmB,EAAG;AAAA;AAAA,kCAIhGtD,GAAAA,CAAC,UAAK,SAAA,EAAU,mBAAA,EAAoB,eAAW,IAAA,EAAC,CAAA;AAAA,cAEjD,2BACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,qBAAA;AAAA,kBACV,OAAA,EAAS,UAAA;AAAA,kBACT,UAAU,MAAA,CAAO,QAAA;AAAA,kBACjB,iBAAiB,MAAM,CAAC,MAAA,CAAO,QAAA,IAAY,SAAS,MAAM;AAAA;AAAA,eAC5D,GACE,IAAA;AAAA,8BACJA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,kBAAA;AAAA,kBACV,UAAU,MAAA,CAAO,QAAA;AAAA,kBACjB,SAAS,MAAM,CAAC,MAAA,CAAO,QAAA,IAAY,SAAS,MAAM,CAAA;AAAA,kBAEjD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA;AAAA,SACF;AAAA,QACC,8BACCA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qBAAA;AAAA,YACV,IAAA,EAAK,OAAA;AAAA,YACL,eAAA,EAAe,aAAa,MAAA,GAAS,OAAA;AAAA,YAEpC,QAAA,EAAA,MAAA,CAAO,QAAA,CAAU,GAAA,CAAI,CAAC,0BACrBA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,MAAA,EAAQ,KAAA;AAAA,gBACR,OAAO,KAAA,GAAQ,CAAA;AAAA,gBACf,QAAA;AAAA,gBACA,WAAA;AAAA,gBACA,WAAA;AAAA,gBACA,cAAA;AAAA,gBACA;AAAA,eAAA;AAAA,cAPK,KAAA,CAAM;AAAA,aASd;AAAA;AAAA,SACH,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAEO,IAAM,UAAA,GAAaM,UAAAA;AAAA,EACxB,SAASiD,WAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,WAAA,GAAc,QAAA;AAAA,IACd,IAAA,GAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA,GAAmB,KAAA;AAAA,IACnB;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAE/B,IAAA,MAAMC,YAAAA,GAAc,CAAC,GAAA,KAAiD;AACpE,MAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,OAAO,EAAC;AAC/B,MAAA,OAAO,KAAA,CAAM,QAAQ,GAAG,CAAA,GAAI,MAAM,GAAA,GAAM,CAAC,GAAG,CAAA,GAAI,EAAC;AAAA,IACnD,CAAA;AAEA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAI1C,QAAAA,CAAmB0C,YAAAA,CAAY,YAAY,CAAC,CAAA;AAC5E,IAAA,MAAM,YAAA,GAAe,YAAA,GAAeA,YAAAA,CAAY,KAAK,CAAA,GAAI,QAAA;AACzD,IAAA,MAAM,WAAA,GAAc9B,QAAQ,MAAM,IAAI,IAAI,YAAY,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEvE,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIZ,QAAAA,CAAkB,eAAe,KAAK,CAAA;AAClF,IAAA,MAAM,mBAAmB,IAAA,KAAS,MAAA;AAClC,IAAA,MAAM,MAAA,GAAS,gBAAA,GAAmB,CAAC,CAAC,IAAA,GAAO,cAAA;AAE3C,IAAA,MAAM,SAAA,GAAYG,WAAAA;AAAA,MAChB,CAAC,IAAA,KAAkB;AACjB,QAAA,IAAI,CAAC,gBAAA,EAAkB,iBAAA,CAAkB,IAAI,CAAA;AAC7C,QAAA,YAAA,GAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,kBAAkB,YAAY;AAAA,KACjC;AAEA,IAAA,MAAM,SAAA,GAAYS,QAAQ,MAAM,gBAAA,CAAiB,OAAO,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACpE,IAAA,MAAM,QAAA,GAAWA,QAAQ,MAAM,aAAA,CAAc,OAAO,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEhE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIZ,SAAsB,MAAM;AAChE,MAAA,IAAI,gBAAA,EAAkB,OAAO,IAAI,GAAA,CAAI,SAAS,CAAA;AAE9C,MAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,MAAA,MAAM,IAAA,GAAO,CAAC,KAAA,EAA2B,OAAA,KAAsB;AAC7D,QAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,UAAA,IAAI,WAAA,CAAY,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,aAAc,CAAA,IAAK,OAAA,EAAS,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA;AAChE,UAAA,IAAI,CAAA,CAAE,QAAA,EAAU,IAAA,CAAK,CAAA,CAAE,QAAA,EAAU,CAAC,GAAG,OAAA,EAAS,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,QACxD;AAAA,MACF,CAAA;AACA,MAAA,IAAA,CAAK,OAAA,EAAS,EAAE,CAAA;AAChB,MAAA,OAAO,GAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,kBAAA,GAAqBG,WAAAA,CAAY,CAAC,SAAA,KAAsB;AAC5D,MAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACvB,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,QAAA,IAAI,KAAK,GAAA,CAAI,SAAS,CAAA,EAAG,IAAA,CAAK,OAAO,SAAS,CAAA;AAAA,aACzC,IAAA,CAAK,IAAI,SAAS,CAAA;AACvB,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,MACb,CAAC,SAAA,KAAwB;AACvB,QAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,SAAS,CAAA;AACxC,QAAA,IAAI,QAAA,kBAA0B,SAAS,CAAA;AAAA,aAClC,aAAA,GAAgB,SAAA,CAAU,CAAC,CAAA,IAAK,EAAE,CAAA;AAAA,MACzC,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,QAAA,EAAU,aAAa;AAAA,KACxC;AAEA,IAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,MACnB,CAAC,MAAA,KAA6B;AAC5B,QAAA,IAAI,OAAO,QAAA,EAAU;AACrB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,YAAY,CAAA;AACjC,UAAA,IAAI,IAAA,CAAK,IAAI,MAAA,CAAO,KAAK,GAAG,IAAA,CAAK,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,eAC/C,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC1B,UAAA,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,QACzB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,CAAC,MAAA,CAAO,KAAK,CAAC,CAAA;AACrB,UAAA,SAAA,CAAU,KAAK,CAAA;AAAA,QACjB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,YAAA,EAAc,MAAA,EAAQ,SAAS;AAAA,KAC5C;AAEA,IAAA,MAAM,WAAA,GAAcS,QAAQ,MAAM;AAChC,MAAA,IAAI,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AACtC,MAAA,MAAM,MAAA,GAAS,aAAa,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,IAAK,CAAC,CAAA;AAC3D,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,OAAO,MAAA,IAAU,CAAA,EAAG,OAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AAC/C,QAAA,OAAO,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,CAAA;AAAA,MAC/D;AACA,MAAA,OAAO,OAAO,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAC,YAAA,EAAc,QAAA,EAAU,QAAQ,CAAC,CAAA;AAErC,IAAA,uBACE1B,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,MAAA;AAAA,QACN,YAAA,EAAc,SAAA;AAAA,QACd,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAU,oBAAA;AAAA,QACV,yBACEK,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,UAAA;AAAA,YACL,eAAA,EAAe,MAAA;AAAA,YACf,QAAA;AAAA,YACA,SAAS,MAAM,CAAC,QAAA,IAAY,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAC7C,SAAA,EAAW,EAAA;AAAA,cACT,OAAA;AAAA,cACA,oBAAA;AAAA,cACA,SAAS,OAAA,IAAW,kBAAA;AAAA,cACpB,SAAS,OAAA,IAAW,kBAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,kBAAA,EAAkB,WAAA,KAAgB,EAAA,GAAK,MAAA,GAAS,MAAA;AAAA,YAEhD,QAAA,EAAA;AAAA,8BAAAL,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BACb,QAAA,EAAA,WAAA,KAAgB,EAAA,GAAK,cAAc,WAAA,EACtC,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC6B,WAAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAW,IAAA;AAAA,kBACX,OAAO,EAAE,KAAA,EAAO,oBAAoB,MAAA,EAAQ,kBAAA,EAAoB,YAAY,CAAA;AAAE;AAAA;AAChF;AAAA;AAAA,SACF;AAAA,QAGA,QAAA,kBAAA7B,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,iBAAA,EAAkB,IAAA,EAAK,MAAA,EAClC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,MAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,QAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,cAAA,EAAgB,kBAAA;AAAA,YAChB,QAAA,EAAU;AAAA,WAAA;AAAA,UAPL,MAAA,CAAO;AAAA,SASf,CAAA,EACH;AAAA;AAAA,KACJ;AAAA,EAEJ;AACF;ACnQO,SAAS,SAAA,CAGd;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,KAAe,aAAA,CAAwB,EAAE,MAAM,CAAA;AAC9D,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,OAAO,SAAA,EAAU,GAC1D,gBAAA,CAAiB,OAAA,IAAW,WAAW,CAAA;AAEzC,EAAA,MAAM,KAAA,GAAQ,oBAAoB,UAAU,CAAA;AAC5C,EAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,eAAe,KAAK,CAAA,GAC9B,WAAW,KAAA,EAAuB,KAAA,EAA0B,OAAO,CAAA,GACnE,KAAA;AACJ,EAAA,MAAM,eAA0C,KAAA,GAC5C,OAAA,GACC,IAAA,KAAS,WAAA,KAAgB,SAAY,SAAA,GAAY,MAAA,CAAA;AAEtD,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,SAAA,IAAa,aAAa,UAAA,EAAY;AACxC,IAAA,IAAA,mBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,uBAAA,EAAwB,cAAY,SAAA,EAAW,CAAA;AAAA,EAC5E,CAAA,MAAA,IAAW,SAAA,IAAa,QAAA,KAAa,SAAA,EAAW;AAC9C,IAAA,IAAA,mBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAClDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAA2B,aAAA,EAAW,IAAA,EACpD,QAAA,kBAAAA,GAAAA,CAAC,WAAQ,IAAA,EAAK,IAAA,EAAK,YAAA,EAAY,SAAA,IAAa,kCAAS,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA,MAAO;AACL,IAAA,IAAA,GAAO,KAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,MAAM,KAAA,IAAS,WAAA;AAAA,MAEd,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAMA,IAAM,kCAAkB,IAAI,GAAA,CAAa,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAC3D,IAAM,kBAAA,uBAAyB,GAAA,CAAa;AAAA,EAC1C,MAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,SAAS,UAAA,CACP,KAAA,EACA,KAAA,EACA,OAAA,EACc;AACd,EAAA,IAAI,eAAA,CAAgB,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACnC,IAAA,OAAO,aAAa,KAAA,EAAgD;AAAA,MAClE,OAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,iBAAiB,CAAC,IAAA,KAChB,KAAA,CAAM,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA,MAC9B,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,gBAAgB,OAAA,IAAW;AAAA,KAC5B,CAAA;AAAA,EACH;AACA,EAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,IAAA,OAAO,aAAa,KAAA,EAAgD;AAAA,MAClE,OAAO,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,GAAW,MAAM,KAAA,GAAQ,MAAA;AAAA,MACvD,aAAA,EAAe,CAAC,IAAA,KAAwB,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,MAC3D,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,MAAA,EAAQ,UAAU,OAAA,GAAU;AAAA,KAC7B,CAAA;AAAA,EACH;AACA,EAAA,IAAI,kBAAA,CAAmB,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACtC,IAAA,OAAO,aAAa,KAAA,EAAgD;AAAA,MAClE,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,aAAA,EAAe,CAAC,IAAA,KAAkB,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,MACrD,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,MAAA,EAAQ,UAAU,OAAA,GAAU,MAAA;AAAA,MAC5B,gBAAgB,OAAA,IAAW;AAAA,KAC5B,CAAA;AAAA,EACH;AACA,EAAA,OAAO,aAAa,KAAA,EAAgD;AAAA,IAClE,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,IACtB,QAAA,EAAU,CAAC,KAAA,KAAmB;AAC5B,MAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,YAAY,KAAA,EAAO;AAC3D,QAAA,MAAM,SAAU,KAAA,CAAyC,MAAA;AACzD,QAAA,KAAA,CAAM,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,KAAK,KAAA,CAAM,GAAA;AAAA,IACX,MAAA,EAAQ,UAAU,OAAA,GAAU,MAAA;AAAA,IAC5B,gBAAgB,OAAA,IAAW;AAAA,GAC5B,CAAA;AACH;AAEA,SAAS,oBAAoB,KAAA,EAAiD;AAC5E,EAAA,MAAM,MAAM,KAAA,CAAM,KAAA;AAClB,EAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,EAAA,IAAI,OAAO,GAAA,CAAI,OAAA,KAAY,YAAY,GAAA,CAAI,OAAA,SAAgB,GAAA,CAAI,OAAA;AAC/D,EAAA,IAAI,GAAA,CAAI,IAAA,EAAM,OAAO,CAAA,SAAA,EAAY,IAAI,IAAI,CAAA,CAAA,CAAA;AACzC,EAAA,OAAO,eAAA;AACT;ACvHA,IAAM,SAAA,GAA6C;AAAA,EACjD,UAAA,EAAY,EAAA;AAAA,EACZ,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,UAAA,GAAaM,UAAAA;AAAA,EACxB,SAASmD,WAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,YAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,GAAY,gBAAA;AAAA,IACZ,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,qBAAA;AAAA,IACX,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI3C,QAAAA;AAAA,MAC9B,YAAA,IAAgB,OAAA,CAAQ,CAAC,CAAA,EAAG;AAAA,KAC9B;AACA,IAAA,MAAM,SAAS,UAAA,IAAc,QAAA;AAC7B,IAAA,MAAM,YAAA,GAAe,UAAA,IAAc,OAAA,CAAQ,CAAC,CAAA,EAAG,IAAA;AAE/C,IAAA,MAAM,MAAA,GAASG,WAAAA;AAAA,MACb,CAAC,IAAA,KAAiB;AAChB,QAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,IAAI,CAAA;AAC9C,QAAA,QAAA,GAAW,IAAI,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,CAAC,YAAY,QAAQ;AAAA,KACvB;AAEA,IAAA,uBACEZ,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QACnC,IAAA,EAAK,SAAA;AAAA,QACJ,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,YAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,YAAA;AAChC,YAAA,MAAM,QAAA,GAAW,OAAO,IAAA,KAAS,MAAA;AACjC,YAAA,MAAM,MAAA,GAAS,OAAO,IAAA,KAAS,YAAA;AAC/B,YAAA,uBACEA,IAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,QAAA;AAAA,gBACf,SAAA,EAAW,EAAA,CAAG,QAAA,IAAY,IAAI,CAAA;AAAA,gBAC9B,OAAA,EAAS,MAAM,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAAA,gBAEjC,QAAA,EAAA;AAAA,kCAAAL,GAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,OAAO,SAAA,CAAU,MAAM,CAAC,CAAA,EAAG,CAAA;AAAA,kBAC9C,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,IAAA,CAAK,WAAA,EAAY;AAAA,kBACxC,0BACCA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,QAAA,EAAU,EAAA;AAAA,wBACV,KAAA,EAAO,yBAAA;AAAA,wBACP,UAAA,EAAY;AAAA,uBACd;AAAA,sBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,eAAA;AAAA,cAlBG,MAAA,CAAO;AAAA,aAoBd;AAAA,UAEJ,CAAC,CAAA;AAAA,0BACDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,UACxB,SAAS,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAQ,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UACnD,KAAA,KAAU,0BACTA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,KAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,MAAA,EAAQ,yBAAA;AAAA,gBACR,YAAA,EAAc,kBAAA;AAAA,gBACd,MAAA,EAAQ,EAAA;AAAA,gBACR,OAAA,EAAS,OAAA;AAAA,gBACT,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AC7GO,IAAM,SAAA,GAAYM,UAAAA;AAAA,EACvB,SAASoD,UAAAA,CAAU,EAAE,KAAA,EAAO,QAAA,EAAAC,SAAAA,GAAW,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACpE,IAAA,uBACE3D,GAAAA,CAAC,IAAA,EAAA,EAAG,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,IAAA,EACtD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,GAAA,KAAQ;AACxB,MAAA,MAAM,IAAA,GACJ,KAAK,EAAA,KAAO,IAAA,GAAO,OAAO,IAAA,CAAK,EAAA,KAAO,QAAQ,KAAA,GAAQ,MAAA;AACxD,MAAA,MAAM,YAAA,GACJ,IAAA,CAAK,EAAA,KAAO,IAAA,mBACVA,IAAC4D,KAAAA,EAAA,EAAM,IAAA,EAAMD,SAAAA,EAAU,WAAA,EAAa,CAAA,EAAG,IACrC,IAAA,CAAK,EAAA,KAAO,KAAA,mBACd3D,GAAAA,CAAC6D,CAAAA,EAAA,EAAE,IAAA,EAAMF,SAAAA,EAAU,WAAA,EAAa,CAAA,EAAG,CAAA,GACjC,IAAA;AACN,MAAA,uBACEtD,IAAAA,CAAC,IAAA,EAAA,EAAa,SAAA,EAAW,EAAA,CAAG,IAAI,CAAA,EAC7B,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,IAAA,IAAQ,YAAA;AAAA,wBACdL,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,QACjB,IAAA,CAAK,IAAA,KAAS,MAAA,oBACbA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO;AAAA,aACT;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,OAAA,EAAA,EAXK,GAaT,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,EAEJ;AACF;ACTA,IAAM8D,cAAAA,GAAmD;AAAA,EACvD,KAAA,EAAO,kBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,UAAA,GAAaxD,UAAAA;AAAA,EACxB,SAASyD,WAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AAEA,IAAA,MAAM,QAAA,GACJ,OAAA,KAAY,UAAA,IAAc,IAAA,GAAO,SAAA,GAAY,SAAA,CAAA;AAE/C,IAAA,MAAM,YAAY,QAAA,KAAa,SAAA;AAE/B,IAAA,uBACE1D,IAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,IAAA,EAAM,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAIyD,cAAAA,CAAc,OAAO,CAAA,EAAG,SAAS,CAAA;AAAA,QACtE,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAzD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAA,IAAa,kBAAkB,CAAA;AAAA,gBAExD,QAAA,EAAA;AAAA,kBAAA,UAAA,KAAe,0BACdL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAA,UAAA,EAAW,CAAA;AAAA,kCAE7CK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,EAAA;AAAA,oCAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,OAAA,EAAS,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC5B,aAAa,MAAA,oBACZA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,OAAO,QAAA,EAAA,QAAA,EAAS;AAAA,mBAAA,EAEpC;AAAA;AAAA;AAAA,aACF;AAAA,YACC,YAAY,MAAA,oBACXA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAEzC,CAAA;AAAA,UACC,SAAS,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAW,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UACrD,SAAS,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAW,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,KACxD;AAAA,EAEJ;AACF;ACjDO,SAAS,gBAAA,CAA4C;AAAA,EAC1D,KAAA;AAAA,EACA,KAAA,EAAO,UAAA;AAAA,EACP,YAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,WAAA,GAAc,YAAA;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIc,QAAAA;AAAA,IAC9B,YAAA,IAAgB,KAAA,CAAM,CAAC,CAAA,EAAG;AAAA,GAC5B;AACA,EAAA,MAAM,SAAS,UAAA,IAAc,QAAA;AAC7B,EAAA,MAAM,QAAA,GAAWqC,MAAAA,CAAwC,EAAE,CAAA;AAE3D,EAAA,MAAM,MAAA,GAASlC,WAAAA;AAAA,IACb,CAAC,IAAA,KAAY;AACX,MAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,IAAI,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAY,QAAQ;AAAA,GACvB;AAMA,EAAA,MAAM,iBAAiB,KAAA,CAAM,MAAA,CAAiB,CAAC,GAAA,EAAK,MAAM,CAAA,KAAM;AAC9D,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,EAAU,GAAA,CAAI,KAAK,CAAC,CAAA;AAC9B,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,cAAc,KAAA,CAAM,SAAA,CAAU,CAAC,EAAA,KAAO,EAAA,CAAG,UAAU,MAAM,CAAA;AAC/D,EAAA,MAAM,YAAA,GACJ,WAAA,IAAe,CAAA,IAAK,CAAC,KAAA,CAAM,WAAW,CAAA,EAAG,QAAA,GACrC,WAAA,GACC,cAAA,CAAe,CAAC,CAAA,IAAK,EAAA;AAE5B,EAAA,MAAM,SAAA,GAAYA,WAAAA;AAAA,IAChB,CAAC,cAAsB,SAAA,KAAsB;AAC3C,MAAA,MAAM,OAAA,GAAU,cAAA;AAChB,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1B,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,CAAQ,YAAY,CAAA;AAChD,MAAA,MAAM,QAAA,GACJ,gBAAgB,EAAA,GACZ,CAAA,GAAA,CACC,cAAc,SAAA,GAAY,OAAA,CAAQ,UAAU,OAAA,CAAQ,MAAA;AAC3D,MAAA,MAAM,SAAA,GAAY,QAAQ,QAAQ,CAAA;AAClC,MAAA,MAAM,QAAA,GAAW,MAAM,SAAS,CAAA;AAChC,MAAA,QAAA,CAAS,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAM;AACnC,MAAA,MAAA,CAAO,SAAS,KAAK,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,KAAA,EAAO,MAAM;AAAA,GAChC;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,CAAC,OAA8C,KAAA,KAAkB;AAC/D,MAAA,MAAM,UAAA,GAAa,WAAA,KAAgB,UAAA,GAAa,WAAA,GAAc,YAAA;AAC9D,MAAA,MAAM,WAAA,GAAc,WAAA,KAAgB,UAAA,GAAa,SAAA,GAAY,WAAA;AAC7D,MAAA,IAAI,KAAA,CAAM,QAAQ,UAAA,EAAY;AAC5B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,MACpB,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,WAAA,EAAa;AACpC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AAAA,MACrB,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,MAAA,EAAQ;AAC/B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,KAAA,GAAQ,eAAe,CAAC,CAAA;AAC9B,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,EAAG,KAAA,EAAM;AAC/B,UAAA,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,CAAG,KAAK,CAAA;AAAA,QAC5B;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,KAAA,EAAO;AAC9B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,IAAA,GAAO,cAAA,CAAe,cAAA,CAAe,MAAA,GAAS,CAAC,CAAA;AACrD,QAAA,IAAI,SAAS,MAAA,EAAW;AACtB,UAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,EAAG,KAAA,EAAM;AAC9B,UAAA,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,CAAG,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF,WAAW,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,OAAA,EAAS;AACrD,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,OAAA,GAAU,MAAM,KAAK,CAAA;AAC3B,QAAA,IAAI,WAAW,CAAC,OAAA,CAAQ,QAAA,EAAU,MAAA,CAAO,QAAQ,KAAK,CAAA;AAAA,MACxD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,aAAa,MAAM;AAAA,GACxD;AAEA,EAAA,MAAM,SAAA,GACJ,OAAA,KAAY,MAAA,GAAS,YAAA,GAAe,WAAA;AAEtC,EAAA,uBACEjB,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACL,kBAAA,EAAkB,WAAA;AAAA,MAClB,SAAA,EAAW,EAAA;AAAA,QACT,SAAA;AAAA,QACA,SAAS,OAAA,IAAW,iBAAA;AAAA,QACpB;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,QAAA,MAAM,QAAA,GAAW,KAAK,KAAA,KAAU,MAAA;AAChC,QAAA,MAAM,SAAA,GACJ,OAAA,KAAY,MAAA,GAAS,WAAA,GAAc,gBAAA;AACrC,QAAA,MAAM,YAAY,KAAA,KAAU,YAAA;AAC5B,QAAA,uBACEK,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EAAK,CAAC,IAAA,KAAS;AACb,cAAA,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,GAAI,IAAA;AAAA,YAC5B,CAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,OAAA;AAAA,YACL,cAAA,EAAc,QAAA;AAAA,YACd,YAAA,EAAY,WAAW,QAAA,GAAW,UAAA;AAAA,YAClC,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,QAAA,EAAU,YAAY,CAAA,GAAI,EAAA;AAAA,YAC1B,SAAA,EAAW,SAAA;AAAA,YACX,SAAS,MAAM,CAAC,KAAK,QAAA,IAAY,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,YAClD,SAAA,EAAW,CAAC,KAAA,KAAU,aAAA,CAAc,OAAO,KAAK,CAAA;AAAA,YAE/C,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,IAAA;AAAA,cACL,IAAA,CAAK;AAAA;AAAA,WAAA;AAAA,UAfD,IAAA,CAAK;AAAA,SAgBZ;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AC3MO,IAAMoC,MAAAA,GAAQnC,WAGnB,SAASmC,MAAAA,CAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC5C,EAAA,uBAAOzC,GAAAA,CAAgB,cAAA,CAAA,IAAA,EAAf,EAAoB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AACrF,CAAC;ACWM,IAAM,IAAA,GAAOM,UAAAA,CAGlB,SAAS0D,KAAAA,CACT;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,mBACJ,WAAA,KAAgB,SAAA,KAAc,MAAA,IAAU,SAAA,KAAc,UAAU,UAAA,GAAa,YAAA,CAAA;AAC/E,EAAA,MAAM,SAAA,GAAY,OAAA,KAAY,OAAA,GAAU,YAAA,GAAe,MAAA;AACvD,EAAA,MAAM,YAAA,GAAe,OAAA,KAAY,OAAA,GAAU,WAAA,GAAc,KAAA;AAEzD,EAAA,uBACE3D,IAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAa,gBAAA;AAAA,MACb,gBAAA,EAAgB,SAAA;AAAA,MAChB,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACnC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAe,aAAA,CAAA,IAAA,EAAd,EAAmB,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,aAAa,CAAA,EACvD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,UAAe,aAAA,CAAA,OAAA;AAAA,UAAd;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,YAAA;AAAA,YAEV,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UALD,IAAA,CAAK;AAAA,SAOb,CAAA,EACH,CAAA;AAAA,QACC,KAAA,CAAM,GAAA;AAAA,UAAI,CAAC,IAAA,KACV,IAAA,CAAK,OAAA,KAAY,MAAA,GAAY,uBAC3BA,GAAAA;AAAA,YAAe,aAAA,CAAA,OAAA;AAAA,YAAd;AAAA,cAEC,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,SAAA,EAAW,gBAAA;AAAA,cAEV,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YAJD,IAAA,CAAK;AAAA;AAKZ,SAEJ;AAAA,QACC;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC;ACxCD,IAAM,OAAA,GAA2C;AAAA,EAC/C,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,OAAA,EAAS,EAAA;AAAA,EACT,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,cAAc,IAAA,EAAsC;AAC3D,EAAA,IAAI,IAAA,KAAS,MAAA,EAAW,OAAO,OAAA,CAAQ,OAAA;AACvC,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA;AACrC,EAAA,OAAO,QAAQ,IAAI,CAAA;AACrB;AAEA,SAAS,eAAe,IAAA,EAAsB;AAC5C,EAAA,OAAO,IAAA,CACJ,MAAK,CACL,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,MAAM,CAAA,EAAG,CAAC,EACV,IAAA,CAAK,EAAE,EACP,WAAA,EAAY;AACjB;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,EAAA,GAAK,cAAc,IAAI,CAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,IAAI,CAAA;AAEnC,EAAA,MAAM,MAAA,GAAwB;AAAA,IAC5B,KAAA,EAAO,GAAG,EAAE,CAAA,EAAA,CAAA;AAAA,IACZ,MAAA,EAAQ,GAAG,EAAE,CAAA,EAAA,CAAA;AAAA,IACb,QAAA,EAAU,GAAG,MAAM,CAAA,EAAA,CAAA;AAAA,IACnB,YAAA,EAAc,KAAA,KAAU,QAAA,GAAW,kBAAA,GAAqB,oBAAA;AAAA,IACxD,GAAG;AAAA,GACL;AACA,EAAA,IAAI,KAAA,SAAc,UAAA,GAAa,KAAA;AAC/B,EAAA,IAAI,SAAA,SAAkB,KAAA,GAAQ,SAAA;AAE9B,EAAA,MAAM,UAAU,OAAA,KAAY,OAAA;AAE5B,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,OAAA,IAAW,SAAS,SAAS,CAAA;AAAA,MACrD,KAAA,EAAO,MAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,gCACCA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,KAAK,GAAA,IAAO,EAAA;AAAA,UACZ,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAc,SAAA;AAAA,YACd,SAAA,EAAW;AAAA;AACb;AAAA,OACF,GACE,IAAA,KAAS,MAAA,GACX,IAAA,GACE,QAAA,KAAa,SACf,QAAA,GACE,IAAA,GACF,cAAA,CAAe,IAAI,CAAA,GACjB;AAAA;AAAA,GACN;AAEJ;ACrFA,IAAME,YAAAA,GAAoE;AAAA,EACxE,IAAA,EAAM,uBAAA;AAAA,EACN,KAAA,EAAO,sBAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAEA,SAAS,WAAA,CACP,KAAA,EACA,SAAA,EACA,cAAA,GAAiB,IAAA,EACT;AACR,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,OAAO,KAAK,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,cAAc,MAAA,GAAY,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA,CAAM,QAAQ,SAAS,CAAA;AAC/E,EAAA,IAAI,CAAC,gBAAgB,OAAO,KAAA;AAC5B,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,KAAA,CAAA,EAAW;AAAA,MACtC,uBAAuB,SAAA,IAAa,CAAA;AAAA,MACpC,uBAAuB,SAAA,IAAa;AAAA,KACrC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,EACjB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,SAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,SAAA,GAAY,YACd,SAAA,CAAU,KAAK,IACf,WAAA,CAAY,KAAA,EAAO,WAAW,cAAc,CAAA;AAChD,EAAA,MAAM,UAAA,GAA4B,YAC9B,EAAE,QAAA,EAAU,GAAG,SAAS,CAAA,EAAA,CAAA,KACxB,EAAC;AACL,EAAA,uBACEG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,WAAA;AAAA,QACAH,aAAY,KAAK,CAAA;AAAA,QACjB,QAAA,IAAY,oBAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,KAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,0BAAaF,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAChEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAkB,OAAO,UAAA,EACrC,QAAA,EAAA;AAAA,UAAA,MAAA,KAAW,0BACVL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,0BAE7CA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,UAC7C,WAAW,MAAA,oBACVA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EAE/C;AAAA;AAAA;AAAA,GACF;AAEJ;ACxFA,IAAM,gCACJK,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAK,KAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAG,IAAA;AAAA,UACH,EAAA,EAAG,IAAA;AAAA,UACH,EAAA,EAAG,IAAA;AAAA,UACH,EAAA,EAAG,GAAA;AAAA,UACH,IAAA,EAAK,cAAA;AAAA,UACL,OAAA,EAAQ;AAAA;AAAA,OACV;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,6CAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,KAAA;AAAA,UACZ,IAAA,EAAK,MAAA;AAAA,UACL,OAAA,EAAQ;AAAA;AAAA,OACV;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,mBAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,KAAA;AAAA,UACZ,IAAA,EAAK,MAAA;AAAA,UACL,OAAA,EAAQ;AAAA;AAAA;AACV;AAAA;AACF,CAAA;AAGK,SAAS,KAAA,CAAM;AAAA,EACpB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,uBACEK,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,OAAA,EAAS,SAAS,CAAA,EAAI,GAAG,IAAA,EAC1C,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,mBAAS,aAAA,EAAc,CAAA;AAAA,IACpD,gBAAgB,MAAA,oBACfA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAqB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IAE/C,4BAAYA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAgB,QAAA,EAAS;AAAA,GAAA,EACvD,CAAA;AAEJ;ACjCA,IAAM,UAAA,GAA6C;AAAA,EACjD,OAAA,EAAS,yBAAA;AAAA,EACT,OAAA,EAAS,gBAAA;AAAA,EACT,OAAA,EAAS,gBAAA;AAAA,EACT,WAAA,EAAa,oBAAA;AAAA,EACb,IAAA,EAAM,aAAA;AAAA,EACN,SAAA,EAAW,kBAAA;AAAA,EACX,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,WAAW,KAAA,EAAoD;AACtE,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,UAAA,CAAW,OAAA;AAC9B,EAAA,IAAI,KAAA,IAAS,UAAA,EAAY,OAAO,UAAA,CAAW,KAAuB,CAAA;AAClE,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,GAAA,CAAI;AAAA,EAClB,KAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAa;AACX,EAAA,MAAM,GAAA,GAAM,WAAW,KAAK,CAAA;AAE5B,EAAA,MAAM,MAAA,GAAwB;AAAA,IAC5B,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,uBAAuB,GAAG,CAAA,kBAAA,CAAA;AAAA,IACtC,WAAA,EAAa,QAAA,GAAW,CAAA,oBAAA,EAAuB,GAAG,CAAA,kBAAA,CAAA,GAAuB,aAAA;AAAA,IACzE,GAAG;AAAA,GACL;AAEA,EAAA,uBACEK,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,KAAA,EAAO,CAAC,QAAA,IAAY,kBAAkB,SAAS,CAAA;AAAA,MAC7D,KAAA,EAAO,MAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,0BAAaL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACxDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAS,CAAA;AAAA,QACrC,4BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,WAAA;AAAA,YACV,OAAA,EAAS,OAAA;AAAA,YACT,YAAA,EAAW,YAAA;AAAA,YACZ,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,GAEJ;AAEJ;ACrCA,IAAM,YAAA,GAA8C;AAAA,EAClD,OAAA,kBAASA,GAAAA,CAAC,IAAA,EAAA,EAAK,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACzD,IAAA,kBAAMA,GAAAA,CAAC,IAAA,EAAA,EAAK,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACtD,OAAA,kBAASA,GAAAA,CAAC,YAAA,EAAA,EAAa,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACjE,OAAA,kBAASA,GAAAA,CAAC,aAAA,EAAA,EAAc,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EAClE,WAAA,kBAAaA,GAAAA,CAAC,YAAA,EAAA,EAAa,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI;AACvE,CAAA;AAEO,IAAM,KAAA,GAAQM,UAAAA,CAAuC,SAAS2D,MAAAA,CACnE;AAAA,EACE,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,UAAA;AAAA,EACV,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,MAAA,GAAY,YAAA,CAAa,KAAK,CAAA,GAAI,IAAA;AAChE,EAAA,MAAM,QAAA,GAAW,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,KAAA;AAE3D,EAAA,uBACE5D,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,OAAA;AAAA,QACA,eAAe,KAAK,CAAA,CAAA;AAAA,QACpB,iBAAiB,OAAO,CAAA,CAAA;AAAA,QACxB;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAYL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAc,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,wBACxDK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,0BAAaL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC3D,gBAAgB,MAAA,oBACfA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,UAE1C,QAAA;AAAA,UACA,YAAY,MAAA,oBACXA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAA,OAAA,EAAQ;AAAA,SAAA,EAE5C,CAAA;AAAA,QACC,4BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,aAAA;AAAA,YACV,YAAA,EAAW,OAAA;AAAA,YACX,OAAA,EAAS,OAAA;AAAA,YACV,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,GAEJ;AAEJ,CAAC;ACvED,IAAMkE,aAAAA,GAA+C;AAAA,EACnD,OAAA,kBAASlE,GAAAA,CAACmE,IAAAA,EAAA,EAAK,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACzD,IAAA,kBAAMnE,GAAAA,CAACmE,IAAAA,EAAA,EAAK,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACtD,OAAA,kBAASnE,GAAAA,CAACoE,YAAAA,EAAA,EAAa,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACjE,OAAA,kBAASpE,GAAAA,CAACqE,aAAAA,EAAA,EAAc,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EAClE,WAAA,kBAAarE,GAAAA,CAAC,OAAA,EAAA,EAAQ,eAAY,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI;AAClE,CAAA;AAEO,IAAM,MAAA,GAASM,UAAAA,CAAwC,SAASgE,OAAAA,CACrE;AAAA,EACE,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,MAAA,GAAYJ,aAAAA,CAAa,KAAK,CAAA,GAAI,IAAA;AAEhE,EAAA,uBACE7D,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAW,EAAA,CAAG,QAAA,EAAU,CAAA,aAAA,EAAgB,KAAK,IAAI,SAAS,CAAA;AAAA,MACzD,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,QAC1C,UAAU,MAAA,oBAAaA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC3D,gBAAgB,MAAA,oBACfA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,eAAe,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,QAEzC,QAAA;AAAA,QACA,UAAU,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAC/D;AAEJ,CAAC;ACLD,IAAM,WAAA,GAA+C;AAAA,EACnD,OAAA,EAAS,EAAA;AAAA,EACT,SAAA,EAAW,4BAAA;AAAA,EACX,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,SAAA,EAAW,4BAAA;AAAA,EACX,IAAA,EAAM,uBAAA;AAAA,EACN,WAAA,EAAa;AACf,CAAA;AAEA,SAAS,cAAc,CAAA,EAAkC;AACvD,EAAA,OAAO,EAAA;AAAA,IACL,EAAE,KAAA,IAAS,CAAA,CAAE,UAAU,SAAA,IAAa,WAAA,CAAY,EAAE,KAAK,CAAA;AAAA,IACvD,EAAE,QAAA,IAAY,qBAAA;AAAA,IACd,EAAE,MAAA,IAAU,mBAAA;AAAA,IACZ,EAAE,MAAA,IAAU,mBAAA;AAAA,IACZ,EAAE,SAAA,IAAa,sBAAA;AAAA,IACf,EAAE,GAAA,IAAO,mBAAA;AAAA,IACT,EAAE,IAAA,IAAQ,iBAAA;AAAA,IACV,EAAE,IAAA,IAAQ,iBAAA;AAAA,IACV,EAAE,QAAA,IAAY,qBAAA;AAAA,IACd,CAAA,CAAE,aAAa,IAAA,IAAQ,qBAAA;AAAA,IACvB,OAAO,CAAA,CAAE,QAAA,KAAa,QAAA,IACpB,CAAA,CAAE,QAAA,KAAa,IAAA,KAAA,CACb,CAAA,CAAE,QAAA,CAAS,IAAA,IAAQ,CAAA,IAAK,CAAA,GACtB,2BAAA,GACA,qBAAA;AAAA,GACR;AACF;AAEA,SAAS,cACP,CAAA,EACiC;AACjC,EAAA,IAAI,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,UAAU,OAAO,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,EAAE,IAAA,IAAQ,CAAA;AACvB,EAAA,IAAI,IAAA,IAAQ,GAAG,OAAO,MAAA;AACtB,EAAA,OAAO,EAAE,iBAAiB,IAAA,EAAK;AACjC;AAIA,SAAS,WAAA,CACP,UACA,OAAA,EACA;AACA,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIc,SAAS,KAAK,CAAA;AAC1C,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,MAAM,MAAA,GAAS,OAAO,CAAA,KAAqC;AACzD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,MAAM,IAAA,GACJ,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,CAAS,IAAA,GACrC,QAAA,CAAS,IAAA,GACT,OAAO,OAAA,KAAY,QAAA,GACjB,OAAA,GACA,EAAA;AACR,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,CAAS,MAAA,WAAiB,MAAA,EAAO;AACrE,MAAA,MAAA,CAAO,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,GAAG,GAAI,CAAA;AAAA,IAChD,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA;AACA,EAAA,uBACEd,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,MAAA,IAAU,QAAQ,CAAA;AAAA,MACrD,OAAA,EAAS,MAAA;AAAA,MACT,YAAA,EAAY,SAAS,QAAA,GAAW,MAAA;AAAA,MAEhC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,MAAA;AAAA,UACL,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAa,IAAA;AAAA,UACb,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe,OAAA;AAAA,UACf,aAAA,EAAW,IAAA;AAAA,UAEV,QAAA,EAAA,MAAA,mBACCA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAiB,CAAA,mBAElCK,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAAR,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,IAAI,CAAA,EAAG,CAAA;AAAA,4BACvDA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yDAAA,EAA0D;AAAA,WAAA,EACpE;AAAA;AAAA;AAEJ;AAAA,GACF;AAEJ;AAgBO,IAAM,KAAA,GAAQM,UAAAA,CAA2C,SAASiE,MAAAA,CACvE;AAAA,EACE,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAMC,IAAAA,GAAM,IAAI,IAAI,CAAA,CAAA;AACpB,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,QAAA,EAAU,QAAQ,CAAA;AAC7C,EAAA,uBACEnE,IAAAA;AAAA,IAACmE,IAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6BAAA;AAAA,QACA,oBAAoB,IAAI,CAAA,CAAA;AAAA,QACxB,aAAA,CAAc;AAAA,UACZ,KAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAO,EAAE,GAAG,cAAc,QAAQ,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,MAC7C,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAQM,IAAM,SAAA,GAAYlE,UAAAA;AAAA,EACvB,SAASmE,UAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,QAAA,EAAU,QAAQ,CAAA;AAC7C,IAAA,uBACEpE,IAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iCAAA;AAAA,UACA,aAAA,CAAc;AAAA,YACZ,KAAA;AAAA,YACA,QAAA;AAAA,YACA,MAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA,GAAA;AAAA,YACA,IAAA;AAAA,YACA,IAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,UACD;AAAA,SACF;AAAA,QACA,OAAO,EAAE,GAAG,cAAc,QAAQ,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,QAC7C,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAQO,IAAM,IAAA,GAAOC,UAAAA,CAAuC,SAASoE,KAAAA,CAClE;AAAA,EACE,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,QAAA,EAAU,QAAQ,CAAA;AAC7C,EAAA,uBACErE,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,4BAAA;AAAA,QACA,aAAA,CAAc;AAAA,UACZ,KAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAO,EAAE,GAAG,cAAc,QAAQ,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,MAC7C,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAaM,IAAM,IAAA,GAAOC,UAAAA,CAAyC,SAASqE,KAAAA,CACpE;AAAA,EACE,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,QAAA,EAAU,QAAQ,CAAA;AAC7C,EAAA,uBACEtE,IAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,4BAAA;AAAA,QACA,aAAA,CAAc;AAAA,UACZ,KAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAO,EAAE,GAAG,cAAc,QAAQ,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,MAC9C,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC1B,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAIM,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF;ACpZA,IAAMI,WAAAA,GAAqE;AAAA,EACzE,KAAA,EAAO,yBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,CAAA;AAAA,EACT,MAAA,GAAS,YAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACEJ,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,WAAW,UAAA,IAAc,uBAAA;AAAA,QACzB,QAAA,IAAY,uBAAA;AAAA,QACZI,YAAW,IAAI,CAAA;AAAA,QACf;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,mBAAA,EAAqB,UAAU,MAAM,CAAA,iBAAA,CAAA;AAAA,QACrC,GAAG;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEF,QAAA,EAAA;AAAA,QAAA,CAAA,KAAA,KAAU,UAAa,KAAA,KAAU,MAAA,qBACjCJ,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,0BACTL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sBAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAE3C,UAAU,MAAA,oBACTA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAsB,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EAE/C,CAAA;AAAA,wBAEFA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,mBAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,mBAAA,EAAqB,UAAU,MAAM,CAAA,iBAAA;AAAA,aACvC;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBK,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,IAAA,CAAK,SAAS,CAAA;AAAA,gBACjD,OAAO,EAAE,UAAA,EAAY,QAAQ,IAAA,CAAK,IAAA,IAAQ,CAAC,CAAA,CAAA,EAAG;AAAA,gBAE9C,QAAA,EAAA;AAAA,kCAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA2B,eAAK,KAAA,EAAM,CAAA;AAAA,kCACrDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA2B,eAAK,KAAA,EAAM;AAAA;AAAA,eAAA;AAAA,cALhD,GAAG,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,IAAI,KAAK,CAAA;AAAA,aAOtC;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;ACzEO,IAAM2C,UAAAA,GAAYrC,UAAAA,CAGvB,SAASqC,UAAAA,CAAU,EAAE,SAAA,EAAW,WAAA,GAAc,YAAA,EAAc,UAAA,GAAa,IAAA,EAAM,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC/F,EAAA,uBACE3C,GAAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,WAAA,KAAgB,eAAe,SAAA,GAAY,EAAA;AAAA,QAC3C;AAAA,OACF;AAAA,MACA,KAAA,EACE,WAAA,KAAgB,UAAA,GACZ,EAAE,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,MAAA,EAAQ,UAAA,EAAY,eAAA,EAAiB,MAAA,EAAQ,CAAA,EAAE,GACnE,MAAA;AAAA,MAEL,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACPM,SAAS,YAAA,CAAa;AAAA,EAC3B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,gBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACEK,IAAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA4B,GAAG,SAAA,EAC9B,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAuB,qBAAA,CAAA,OAAA,EAAtB,EAA8B,OAAA,EAAO,MAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAChDA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAuB,qBAAA,CAAA,OAAA;AAAA,MAAtB;AAAA,QACC,KAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,gBAAgB,CAAA;AAAA,QAEtD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,UAAA,IAAI,IAAA,CAAK,SAAS,WAAA,EAAa;AAC7B,YAAA,uBACEA,GAAAA;AAAA,cAAuB,qBAAA,CAAA,SAAA;AAAA,cAAtB;AAAA,gBAEC,SAAA,EAAU;AAAA,eAAA;AAAA,cADL,IAAA,CAAK;AAAA,aAEZ;AAAA,UAEJ;AACA,UAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,YAAA,uBACEA,GAAAA;AAAA,cAAuB,qBAAA,CAAA,KAAA;AAAA,cAAtB;AAAA,gBAEC,SAAA,EAAU,qBAAA;AAAA,gBAET,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAHD,IAAA,CAAK;AAAA,aAIZ;AAAA,UAEJ;AACA,UAAA,uBACEK,IAAAA;AAAA,YAAuB,qBAAA,CAAA,IAAA;AAAA,YAAtB;AAAA,cAEC,UAAU,IAAA,CAAK,QAAA;AAAA,cACf,UAAU,IAAA,CAAK,QAAA;AAAA,cACf,SAAA,EAAU,oBAAA;AAAA,cACV,cAAA,EAAc,IAAA,CAAK,OAAA,KAAY,aAAA,GAAgB,aAAA,GAAgB,MAAA;AAAA,cAE9D,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,KAAA;AAAA,gBACL,IAAA,CAAK,4BACJL,GAAAA,CAAC,UAAK,SAAA,EAAU,wBAAA,EAA0B,eAAK,QAAA,EAAS;AAAA;AAAA,aAAA;AAAA,YARrD,IAAA,CAAK;AAAA,WAUZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC1BO,SAAS,QAAA,CAA0C;AAAA,EACxD,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,uBACEK,KAACuE,UAAA,EAAA,EAAa,GAAG,MAAM,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EACxD,QAAA,EAAA;AAAA,oBAAA5E,IAAC,cAAA,EAAA,EAAe,CAAA;AAAA,oBAChBK,KAACwE,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA7E,GAAAA,CAAC8E,kBAAA,EAAA,EACE,QAAA,EAAA,CAAC,GAAA,qBACA9E,IAAC+E,kBAAA,EAAA,EAAsB,SAAA,EAAU,kBAAA,EAC9B,QAAA,EAAA,GAAA,EACH,CAAA,EAEJ,CAAA;AAAA,sBACA/E,GAAAA,CAACgF,gBAAA,EAAA,EACE,QAAA,EAAA,CAAC,IAAA,qBAAShF,GAAAA,CAACiF,YAAA,EAAA,EAAgB,IAAA,EAAY,SAAA,EAAU,cAAA,EAAe,CAAA,EACnE;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAOO,SAAS,aAAA,CAA+C;AAAA,EAC7D,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,uBACE5E,IAAAA,CAAC6E,eAAA,EAAA,EAAkB,GAAG,IAAA,EAAM,WAAW,EAAA,CAAG,UAAA,EAAY,gBAAA,EAAkB,SAAS,CAAA,EAC/E,QAAA,EAAA;AAAA,oBAAAlF,IAAC,cAAA,EAAA,EAAe,CAAA;AAAA,oBAChBK,KAACwE,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA7E,GAAAA,CAAC8E,kBAAA,EAAA,EACE,QAAA,EAAA,CAAC,GAAA,qBACA9E,IAAC+E,kBAAA,EAAA,EAAsB,SAAA,EAAU,kBAAA,EAC9B,QAAA,EAAA,GAAA,EACH,CAAA,EAEJ,CAAA;AAAA,sBACA/E,GAAAA,CAACgF,gBAAA,EAAA,EACE,QAAA,EAAA,CAAC,IAAA,qBAAShF,GAAAA,CAACiF,YAAA,EAAA,EAAgB,IAAA,EAAY,SAAA,EAAU,cAAA,EAAe,CAAA,EACnE;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,cAAA,GAAiB;AACxB,EAAA,uBACE5E,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,iBAAA,EAChB,QAAA,EAAA;AAAA,oBAAAL,IAACmF,QAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EAAW,SAAA,EAAU,gBACnC,QAAA,kBAAAnF,GAAAA,CAACoF,WAAAA,EAAA,EAAY,eAAW,IAAA,EAAC,IAAA,EAAM,EAAA,EAAI,WAAA,EAAa,KAAK,CAAA,EACvD,CAAA;AAAA,oBACApF,GAAAA,CAACqF,OAAA,EAAA,EAAW,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,oBACvCrF,GAAAA,CAACmF,QAAA,EAAA,EAAU,IAAA,EAAK,MAAA,EAAO,WAAU,cAAA,EAC/B,QAAA,kBAAAnF,GAAAA,CAACsD,YAAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,MAAM,EAAA,EAAI,WAAA,EAAa,KAAK,CAAA,EACxD;AAAA,GAAA,EACF,CAAA;AAEJ;AC3FO,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,OAAA,mBACJjD,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAH,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,gBAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,MACC,WAAA,KAAgB,0BACfA,GAAAA,CAAiB,6BAAhB,EAA4B,SAAA,EAAU,sBACpC,QAAA,EAAA,WAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC,QAAA;AAAA,IACA,WAAW,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAClE,CAAA;AAEF,EAAA,MAAM,mBACJ,WAAA,KAAgB,MAAA,GACX,EAAE,kBAAA,EAAoB,MAAA,KACvB,EAAC;AAEP,EAAA,uBACEK,IAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAsB,GAAG,SAAA,EACvB,QAAA,EAAA;AAAA,IAAA,OAAA,KAAY,0BACXL,GAAAA,CAAiB,yBAAhB,EAAwB,OAAA,EAAO,MAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAE5CK,IAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EACC,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAiB,eAAA,CAAA,OAAA,EAAhB,EAAwB,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,sBACpDA,GAAAA;AAAA,QAAiB,eAAA,CAAA,OAAA;AAAA,QAAhB;AAAA,UACE,GAAG,YAAA;AAAA,UACH,GAAG,gBAAA;AAAA,UACJ,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,UAExC,QAAA,EAAA,IAAA,KAAS,yBAAYA,GAAAA,CAAC,UAAM,GAAG,IAAA,EAAO,mBAAQ,CAAA,GAAU;AAAA;AAAA;AAC3D,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChDO,IAAM,KAAA,GAAQM,UAAAA,CAGnB,SAASgF,MAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,SAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,IAAA,mBACJjF,IAAAA,CAAAG,QAAAA,EAAA,EACI,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,WAAA,qBACTH,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASL,GAAAA,CAAiBuF,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAChE,+BACCvF,GAAAA,CAAiBuF,6BAAhB,EAA4B,SAAA,EAAU,sBACpC,QAAA,EAAA,WAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IAED,QAAA;AAAA,IACA,0BAAUvF,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EACpD,CAAA;AAGF,EAAA,uBACEK,IAAAA,CAAiBkF,eAAA,CAAA,IAAA,EAAhB,EAAsB,GAAG,SAAA,EACvB,QAAA,EAAA;AAAA,IAAA,OAAA,oBAAWvF,GAAAA,CAAiBuF,eAAA,CAAA,OAAA,EAAhB,EAAwB,OAAA,EAAO,MAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBACtDlF,IAAAA,CAAiBkF,eAAA,CAAA,MAAA,EAAhB,EACC,QAAA,EAAA;AAAA,sBAAAvF,GAAAA,CAAiBuF,eAAA,CAAA,OAAA,EAAhB,EAAwB,SAAA,EAAU,eAAA,EAAgB,CAAA;AAAA,sBACnDvF,GAAAA;AAAA,QAAiBuF,eAAA,CAAA,OAAA;AAAA,QAAhB;AAAA,UACC,GAAA;AAAA,UACA,WAAA,EAAW,IAAA;AAAA,UACV,GAAG,YAAA;AAAA,UACJ,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAA,EAAW,cAAc,SAAS,CAAA;AAAA,UAEhE,iCAAOvF,GAAAA,CAAC,UAAM,GAAG,IAAA,EAAO,gBAAK,CAAA,GAAU;AAAA;AAAA;AAC1C,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;ACtDM,IAAM,WAAA,GAAcM,UAAAA,CAGzB,SAASkF,YAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,uBACEnF,IAAAA,CAAsB,oBAAA,CAAA,IAAA,EAArB,EAA2B,GAAG,SAAA,EAC5B,QAAA,EAAA;AAAA,IAAA,OAAA,oBAAWL,GAAAA,CAAsB,oBAAA,CAAA,OAAA,EAArB,EAA6B,OAAA,EAAO,MAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAC3DK,IAAAA,CAAsB,oBAAA,CAAA,MAAA,EAArB,EACC,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAsB,oBAAA,CAAA,OAAA,EAArB,EAA6B,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,sBACzDK,IAAAA;AAAA,QAAsB,oBAAA,CAAA,OAAA;AAAA,QAArB;AAAA,UACC,GAAA;AAAA,UACC,GAAG,YAAA;AAAA,UACJ,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAA,EAAW,cAAc,SAAS,CAAA;AAAA,UAElE,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAsB,oBAAA,CAAA,KAAA,EAArB,EAA2B,SAAA,EAAU,gBACnC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,cACC,+BACCA,GAAAA,CAAsB,kCAArB,EAAiC,SAAA,EAAU,sBACzC,QAAA,EAAA,WAAA,EACH;AAAA,aAAA,EAEJ,CAAA;AAAA,YACC,QAAA;AAAA,YAAA,CACC,UAAU,MAAA,IAAU,MAAA,qBACpBK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACZ,QAAA,EAAA;AAAA,cAAA,MAAA;AAAA,cACA,0BACCL,GAAAA,CAAsB,6BAArB,EAA4B,SAAA,EAAU,qBACpC,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,cAED,0BACCA,GAAAA,CAAsB,6BAArB,EAA4B,SAAA,EAAU,mBACpC,QAAA,EAAA,MAAA,EACH;AAAA,aAAA,EAEJ;AAAA;AAAA;AAAA;AAEJ,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AChDD,IAAM,WAAyB,CAAC,KAAA,EAAO,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AACnE,IAAM,eAA6B,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,KAAK,CAAA;AAEvE,IAAM,cAAA,GAA6C;AAAA,EACjD,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,GAAA,EAAK;AACP,CAAA;AAEA,SAAS,QAAQ,EAAA,EAAwB;AACvC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,eAAe,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CAChD,iBAAiB,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE,CAAA,CACrC,IAAA,EAAK;AACR,EAAA,OAAO,CAAA,IAAK,eAAe,EAAE,CAAA;AAC/B;AAEA,SAAS,iBAAA,GAAgC;AACvC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,IAAA;AAC1C,EAAA,KAAA,MAAW,MAAM,QAAA,EAAU;AACzB,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,YAAA,EAAe,OAAA,CAAQ,EAAE,CAAC,CAAA,CAAA,CAAG,EAAE,OAAA,EAAS;AAC5D,MAAA,OAAO,EAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,aAAA,GAA4B;AAC1C,EAAA,MAAM,CAAC,EAAA,EAAI,KAAK,IAAIc,QAAAA,CAAqB,MAAM,mBAAmB,CAAA;AAElE,EAAAa,UAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,MAAM,OAAO,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,MACzB,MAAA,CAAO,UAAA,CAAW,eAAe,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAG;AAAA,KAChD;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,iBAAA,EAAmB,CAAA;AAC9C,IAAA,IAAA,CAAK,QAAQ,CAAC,GAAA,KAAQ,IAAI,gBAAA,CAAiB,QAAA,EAAU,MAAM,CAAC,CAAA;AAC5D,IAAA,MAAA,EAAO;AACP,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,QAAQ,CAAC,GAAA,KAAQ,IAAI,mBAAA,CAAoB,QAAA,EAAU,MAAM,CAAC,CAAA;AAAA,IACjE,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAA;AACT;AASO,SAAS,eAAA,CAAgB,SAAqB,MAAA,EAA6B;AAChF,EAAA,OAAO,aAAa,OAAA,CAAQ,OAAO,CAAA,IAAK,YAAA,CAAa,QAAQ,MAAM,CAAA;AACrE;ACYA,SAAS,cAAA,CAAkB,SAAqB,QAAA,EAAgB;AAC9D,EAAA,OAAO,OAAO,OAAA,KAAY,UAAA,GACrB,OAAA,CAA0B,QAAQ,CAAA,GACnC,OAAA;AACN;AAEA,SAAS,aAAA,CACP,GAAA,EACA,KAAA,EACA,MAAA,EACA,iBAAA,EACA;AACA,EAAA,IAAI,OAAO,WAAW,UAAA,EAAY;AAChC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA;AAC/B,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACA,EAAA,IACE,OAAO,GAAA,KAAQ,QAAA,IACf,GAAA,KAAQ,IAAA,IACR,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,GAAA,EAAK,MAAM,CAAA,EAChD;AACA,IAAA,MAAM,KAAA,GAAS,IAAgC,MAAM,CAAA;AACrD,IAAA,IAAI,UAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,OAAO,KAAK,CAAA;AAAA,EAChE;AACA,EAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,gBAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA,GAAa,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AACpD;AAEA,SAAS,gBAAA,CACP,OAIA,GAAA,EACA;AACA,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA,GAAa,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AACpD;AAEA,SAAS,aACP,MAAA,EACoB;AACpB,EAAA,MAAM,aAAA,GAAgB,MAAA;AACtB,EAAA,IAAI,OAAO,aAAA,CAAc,EAAA,KAAO,QAAA,SAAiB,aAAA,CAAc,EAAA;AAC/D,EAAA,IAAI,OAAO,cAAc,WAAA,KAAgB,QAAA;AACvC,IAAA,OAAO,aAAA,CAAc,WAAA;AACvB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,YAAY,IAAA,EAA+C;AAClE,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,SAAa,EAAC;AACjD,EAAA,OAAO,MAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,IAAI,CAAA;AAC3C;AAEA,SAAS,aAAA,CAAc,MAAkC,GAAA,EAAa;AACpE,EAAA,MAAM,IAAA,GAAO,YAAY,IAAI,CAAA;AAC7B,EAAA,MAAM,QAAQ,IAAA,CAAK,SAAA,CAAU,CAAC,IAAA,KAAS,IAAA,CAAK,QAAQ,GAAG,CAAA;AACvD,EAAA,OAAO,KAAA,KAAU,KAAK,MAAA,GAAY,EAAE,OAAO,IAAA,CAAK,KAAK,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK;AACtE;AAGA,SAAS,cAAA,CACP,SACA,GAAA,EACgB;AAChB,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,CAAA;AACxC,EAAA,IAAI,UAAU,MAAA,EAAW,OAAO,EAAE,GAAA,EAAK,WAAW,KAAA,EAAM;AACxD,EAAA,IAAI,KAAA,CAAM,MAAM,SAAA,KAAc,KAAA,SAAc,EAAE,GAAA,EAAK,WAAW,MAAA,EAAO;AACrE,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,aAAA,CACP,SACA,GAAA,EACgB;AAChB,EAAA,MAAM,IAAA,GAAO,YAAY,OAAO,CAAA;AAChC,EAAA,MAAM,QAAQ,IAAA,CAAK,SAAA,CAAU,CAAC,IAAA,KAAS,IAAA,CAAK,QAAQ,GAAG,CAAA;AACvD,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,CAAC,GAAG,IAAA,EAAM,EAAE,GAAA,EAAK,SAAA,EAAW,OAAO,CAAA;AAAA,EAC5C;AACA,EAAA,MAAM,QAAA,GAAW,KAAK,KAAK,CAAA;AAC3B,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,IAAI,CAAA;AACrB,EAAA,IAAI,QAAA,CAAS,cAAc,KAAA,EAAO;AAChC,IAAA,IAAA,CAAK,KAAK,CAAA,GAAI,EAAE,GAAA,EAAK,WAAW,MAAA,EAAO;AAAA,EACzC,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,EACtB;AACA,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,KAAK,CAAC,CAAA;AACpC,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,iBAAA,CACP,QACA,EAAA,EAC6B;AAC7B,EAAA,IAAI,MAAA,KAAW,MAAA,IAAa,MAAA,KAAW,KAAA,EAAO,OAAO,MAAA;AACrD,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,OAAO,MAAA;AACvC,EAAA,IAAI,OAAO,IAAA,KAAS,MAAA,IAAa,CAAC,eAAA,CAAgB,EAAA,EAAI,OAAO,IAAI,CAAA;AAC/D,IAAA,OAAO,MAAA;AACT,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB;AAEA,SAAS,mBAAA,CACP,SACA,EAAA,EACoB;AACpB,EAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,IACb,CAAC,OAAO,MAAA,KAAW;AACjB,MAAA,MAAM,GAAA,GAAM,aAAa,MAAM,CAAA;AAC/B,MAAA,IAAI,GAAA,KAAQ,QAAW,OAAO,KAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,MAAA,CAAO,IAAA,EAAM,QAAQ,EAAE,CAAA;AACtD,MAAA,IAAI,IAAA,KAAS,QAAW,OAAO,KAAA;AAC/B,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,CAAC,IAAI,GAAG,CAAC,GAAI,KAAA,CAAM,IAAI,CAAA,IAAK,EAAC,EAAI,GAAG,CAAA,EAAE;AAAA,IAC3D,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAC,EAAG,KAAA,EAAO,EAAC;AAAE,GACxB;AACF;AAEA,SAAS,cAAA,CACP,QACA,KAAA,EACe;AACf,EAAA,MAAM,MAAA,GAAS,OAAO,WAAA,EAAY;AAClC,EAAA,MAAM,IAAA,GAAO,OAAO,SAAA,CAAU,IAAA;AAC9B,EAAA,OAAO;AAAA,IACL,OAAO,IAAA,KAAS,MAAA,GAAY,GAAG,MAAA,CAAO,OAAA,EAAS,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IACtD,QAAA,EACE,OAAO,SAAA,CAAU,OAAA,KAAY,SACzB,CAAA,EAAG,MAAA,CAAO,SAAA,CAAU,OAAO,CAAA,EAAA,CAAA,GAC3B,MAAA;AAAA,IACN,QAAA,EACE,OAAO,SAAA,CAAU,OAAA,KAAY,SACzB,CAAA,EAAG,MAAA,CAAO,SAAA,CAAU,OAAO,CAAA,EAAA,CAAA,GAC3B,MAAA;AAAA,IACN,QAAA,EAAU,SAAS,QAAA,GAAW,MAAA;AAAA,IAC9B,IAAA,EAAM,WAAW,MAAA,GAAS,CAAA,EAAG,OAAO,QAAA,CAAS,MAAM,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAC3D,KAAA,EAAO,WAAW,OAAA,GAAU,CAAA,EAAG,OAAO,QAAA,CAAS,OAAO,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAC9D,MAAA,EAAQ,SAAS,CAAA,GAAI,MAAA;AAAA,IACrB,GAAG;AAAA,GACL;AACF;AAEO,SAAS,KAAA,CAAa;AAAA,EAC3B,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,IAAA;AAAA,EACT,QAAA;AAAA,EACA,OAAA;AAAA,EACA,uBAAA;AAAA,EACA,gBAAA;AAAA,EACA,wBAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,aAAA,GAAgBwB,MAAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AAC9C,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAC1DrC,QAAAA;AAAA,IACE,MAAM,gBAAA,IAAoB,uBAAA,IAA2B;AAAC,GACxD;AACF,EAAA,MAAM,4BACJ,gBAAA,IAAoB,wBAAA;AAItB,EAAA,MAAM,KAAK,aAAA,EAAc;AACzB,EAAA,MAAM,iBAAA,GAAoBY,OAAAA;AAAA,IACxB,MAAM,mBAAA,CAAoB,OAAA,EAAS,EAAE,CAAA;AAAA,IACrC,CAAC,SAAS,EAAE;AAAA,GACd;AACA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAC5CZ,QAAAA,CAA6B,EAAE,IAAA,EAAM,EAAC,EAAG,KAAA,EAAO,EAAC,EAAG,CAAA;AACtD,EAAA,MAAM,aAAA,GAAgBY,QAA4B,MAAM;AACtD,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAmB,KAAA,CAAM,KAAK,IAAI,GAAA,CAAI,IAAI,CAAC,CAAA;AAC3D,IAAA,OAAO;AAAA,MACL,MAAM,MAAA,CAAO;AAAA,QACX,GAAI,iBAAA,CAAkB,IAAA,IAAQ,EAAC;AAAA,QAC/B,GAAI,iBAAA,CAAkB,IAAA,IAAQ;AAAC,OAChC,CAAA;AAAA,MACD,OAAO,MAAA,CAAO;AAAA,QACZ,GAAI,iBAAA,CAAkB,KAAA,IAAS,EAAC;AAAA,QAChC,GAAI,iBAAA,CAAkB,KAAA,IAAS;AAAC,OACjC;AAAA,KACH;AAAA,EACF,CAAA,EAAG,CAAC,iBAAA,EAAmB,iBAAiB,CAAC,CAAA;AACzC,EAAA,MAAM,yBAAA,GAA4B,CAAC,OAAA,KAAyC;AAC1E,IAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,EAAS,aAAa,CAAA;AAClD,IAAA,MAAM,WAAW,IAAI,GAAA,CAAI,iBAAA,CAAkB,IAAA,IAAQ,EAAE,CAAA;AACrD,IAAA,MAAM,YAAY,IAAI,GAAA,CAAI,iBAAA,CAAkB,KAAA,IAAS,EAAE,CAAA;AACvD,IAAA,oBAAA,CAAqB;AAAA,MACnB,IAAA,EAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,EAAC,EAAG,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,QAAA,CAAS,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,MAC1D,KAAA,EAAA,CAAQ,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,SAAA,CAAU,GAAA,CAAI,GAAG,CAAC;AAAA,KAC9D,CAAA;AACD,IAAA,qBAAA,GAAwB,IAAI,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,CAAC,yBAAyB,0BAA0B,CAAA,GAAIZ,SAE5D,MAAM,UAAA,EAAY,sBAAA,IAA0B,EAAE,CAAA;AAChD,EAAA,MAAM,eAAA,GACJ,YAAY,eAAA,IAAmB,uBAAA;AACjC,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,eAAe,CAAA;AACjD,EAAA,SAAS,kBAAkB,KAAA,EAAe;AACxC,IAAA,IAAI,eAAe,MAAA,EAAW;AAC9B,IAAA,MAAM,aAAA,GAAgB,WAAW,aAAA,KAAkB,IAAA;AACnD,IAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,eAAe,CAAA;AACvC,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,EAAG;AACtB,MAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,IAAI,CAAC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAM;AAClC,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AAAA,IACnB;AACA,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC/B,IAAA,IAAI,WAAW,eAAA,KAAoB,MAAA;AACjC,MAAA,0BAAA,CAA2B,IAAI,CAAA;AACjC,IAAA,UAAA,CAAW,uBAAuB,IAAI,CAAA;AAAA,EACxC;AACA,EAAA,MAAM,CAAC,2BAA2B,4BAA4B,CAAA,GAAIA,SAEhE,MAAM,IAAA,EAAM,oBAAA,IAAwB,EAAE,CAAA;AACxC,EAAA,MAAM,iBAAA,GACJ,MAAM,aAAA,IAAiB,yBAAA;AACzB,EAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,iBAAiB,CAAA;AACjD,EAAA,SAAS,eAAe,OAAA,EAAiB;AACvC,IAAA,IAAI,SAAS,MAAA,EAAW;AACxB,IAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,iBAAiB,CAAA;AACzC,IAAA,IAAI,QAAQ,GAAA,CAAI,OAAO,CAAA,EAAG,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,SAC3C,OAAA,CAAQ,IAAI,OAAO,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC/B,IAAA,IAAI,IAAA,CAAK,aAAA,KAAkB,MAAA,EAAW,4BAAA,CAA6B,IAAI,CAAA;AACvE,IAAA,IAAA,CAAK,wBAAwB,IAAI,CAAA;AAAA,EACnC;AACA,EAAA,MAAM,cAAc,IAAI,GAAA,CAAI,OAAA,EAAS,WAAA,IAAe,EAAE,CAAA;AACtD,EAAA,MAAM,eAAe,IAAI,GAAA,CAAI,OAAA,EAAS,YAAA,IAAgB,EAAE,CAAA;AACxD,EAAA,MAAM,eAAA,GACJ,QAAA,KACC,CAAC,GAAA,EAAY,KAAA,KACZ,cAAc,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,CAAC,aAAA,KAAkB;AACnD,IAAA,IAAI,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA,EAAG;AAC9C,IAAA,aAAA,CAAc,OAAA,CAAQ,IAAI,aAAa,CAAA;AACvC,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,2BAA2B,aAAa,CAAA,6EAAA;AAAA,KAC1C;AAAA,EACF,CAAC,CAAA,CAAA;AACL,EAAA,MAAM,4BAAA,GAA+B,CAAC,OAAA,KAAsC;AAC1E,IAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,EAAS,yBAAyB,CAAA;AAC9D,IAAA,IAAI,gBAAA,KAAqB,MAAA,EAAW,2BAAA,CAA4B,IAAI,CAAA;AACpE,IAAA,wBAAA,GAA2B,IAAI,CAAA;AAAA,EACjC,CAAA;AACA,EAAA,MAAM,UAAA,GAAaY,OAAAA;AAAA,IACjB,OAAO,EAAE,aAAA,EAAe,gBAAA,EAAkB,yBAAA,EAA0B,CAAA;AAAA,IACpE,CAAC,eAAe,yBAAyB;AAAA,GAC3C;AAKA,EAAA,MAAM,aAAa,aAAA,CAAc;AAAA,IAC/B,IAAA;AAAA,IACA,OAAA;AAAA,IACA,iBAAiB,eAAA,EAAgB;AAAA,IACjC,QAAA,EAAU,eAAA;AAAA,IACV,mBAAA,EAAqB,IAAA;AAAA,IACrB,sBAAsB,SAAA,KAAc,IAAA;AAAA,IACpC,gBAAA,EAAkB,UAAA;AAAA,IAClB,wBAAA,EAA0B,4BAAA;AAAA,IAC1B,qBAAA,EAAuB,yBAAA;AAAA,IACvB,KAAA,EAAO;AAAA,GACR,CAAA;AACD,EAAA,MAAM,QAA2B,QAAA,IAAY,UAAA;AAC7C,EAAA,MAAM,WAAA,GAAc,MAAM,qBAAA,EAAsB;AAChD,EAAA,MAAM,YAAY,WAAA,CAAY,IAAA;AAAA,IAC5B,CAAC,MAAA,KAAW,MAAA,CAAO,SAAA,CAAU,MAAA,KAAW;AAAA,GAC1C;AAGA,EAAA,MAAM,oBAAoB,IAAI,GAAA,CAAI,SAAA,EAAW,eAAA,IAAmB,EAAE,CAAA;AAClE,EAAA,MAAM,cAAA,GAAiB,KAAA,CACpB,WAAA,EAAY,CACZ,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAQ,SAAA,EAAW,mBAAA,GAAsB,GAAG,CAAA,KAAM,IAAI,CAAA;AACtE,EAAA,MAAM,kBAAA,GACJ,SAAA,KAAc,MAAA,IACd,cAAA,CAAe,SAAS,CAAA,IACxB,cAAA,CAAe,KAAA,CAAM,CAAC,GAAA,KAAQ,iBAAA,CAAkB,GAAA,CAAI,GAAA,CAAI,EAAE,CAAC,CAAA;AAC7D,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,cAAc,MAAA,EAAW;AAC7B,IAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,SAAA,CAAU,eAAe,CAAA;AAC9C,IAAA,IAAI,kBAAA,iBAAmC,OAAA,CAAQ,CAAC,QAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,SACtE,cAAA,CAAe,QAAQ,CAAC,GAAA,KAAQ,KAAK,GAAA,CAAI,GAAA,CAAI,EAAE,CAAC,CAAA;AACrD,IAAA,SAAA,CAAU,uBAAA,CAAwB,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EACpD,CAAA;AAEA,EAAA,MAAM,UAAU,IAAA,CAAK,GAAA;AAAA,IACnB,WAAA,CAAY,UACT,SAAA,KAAc,MAAA,GAAY,IAAI,CAAA,CAAA,IAC9B,UAAA,KAAe,SAAY,CAAA,GAAI,CAAA,CAAA;AAAA,IAClC;AAAA,GACF;AACA,EAAA,MAAM,YAAA,GAAe,yBAAS1B,GAAAA,CAAC,SAAM,WAAA,EAAa,CAAA,CAAE,wBAAwB,CAAA,EAAG,CAAA;AAE/E,EAAA,SAAS,cAAc,GAAA,EAA4B;AACjD,IAAA,MAAM,YAAA,GAAe,OAAA,EAAS,KAAA,KAAU,GAAA,CAAI,EAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,OAAA,EAAS,aAAA,GAAgB,GAAG,CAAA,KAAM,IAAA;AACrD,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,GAAA,CAAI,EAAE,CAAA;AACzC,IAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,YAAA,EAAc,GAAG,CAAA;AACtD,IAAA,MAAM,UAAA,GAAa,EAAA;AAAA,MACjB,WAAA;AAAA,MACA,YAAA,IAAgB,YAAA;AAAA,MAChB,UAAA,IAAc,CAAC,YAAA,IAAgB;AAAA,KACjC;AACA,IAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,GAAA,CAAI,GAAA,CAAI,EAAE,CAAA;AAC/C,IAAA,MAAM,SAAA,GACJ,eAAe,MAAA,KACd,UAAA,CAAW,kBAAkB,MAAA,IAC5B,UAAA,CAAW,cAAc,GAAG,CAAA,CAAA;AAChC,IAAA,MAAM,WAAwB,EAAC;AAC/B,IAAA,QAAA,CAAS,IAAA;AAAA,sBACPK,IAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,UAAA,IAAc,UAAU,CAAA;AAAA,UAClD,aAAA,EACE,OAAA,KAAY,MAAA,IAAa,CAAC,UAAA,IAAc,CAAC,YAAA,GACrC,MAAM,OAAA,CAAQ,OAAA,GAAU,GAAA,CAAI,EAAE,CAAA,GAC9B,MAAA;AAAA,UAEN,eAAa,GAAA,CAAI,EAAA;AAAA,UAEhB,QAAA,EAAA;AAAA,YAAA,SAAA,KAAc,0BACbL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,SACZ,QAAA,kBAAAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,cAAY,CAAA,CAAE,iBAAA,EAAmB,EAAE,GAAA,EAAK,GAAA,CAAI,IAAI,CAAA;AAAA,gBAChD,OAAA,EAAS,iBAAA,CAAkB,GAAA,CAAI,GAAA,CAAI,EAAE,CAAA;AAAA,gBACrC,QAAA,EAAU,SAAA,CAAU,mBAAA,GAAsB,GAAG,CAAA;AAAA,gBAC7C,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,kBAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,SAAA,CAAU,eAAe,CAAA;AAC9C,kBAAA,IAAI,OAAA,KAAY,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,IAAI,EAAE,CAAA;AAAA,uBAChC,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AACvB,kBAAA,SAAA,CAAU,uBAAA,CAAwB,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,gBACpD;AAAA;AAAA,aACF,EACF,CAAA;AAAA,YAED,UAAA,KAAe,MAAA,oBACdA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,aAAA,EAAc,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAG,EAC5C,uCACCA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,UAAA,IAAc,MAAM,CAAA;AAAA,gBACnD,cACE,UAAA,GAAa,CAAA,CAAE,mBAAmB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AAAA,gBAE3D,eAAA,EAAe,UAAA;AAAA,gBACf,OAAA,EAAS,MAAM,iBAAA,CAAkB,GAAA,CAAI,EAAE,CAAA;AAAA,gBACxC,QAAA,EAAA;AAAA;AAAA,aAED,EAEJ,CAAA;AAAA,YAED,GAAA,CAAI,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AACnC,cAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA;AACnC,cAAA,MAAM,SAAS,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO,EAAE,CAAA,CAAA;AAC1C,cAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA;AAC3C,cAAA,MAAM,WAAA,GACJ,YAAA,IAAgB,CAAC,UAAA,IAAc,OAAA,EAAS,cAAA,GACnC,OAAA,CAAQ,cAAA,CAAe,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW,GAAG,CAAA,IAClD,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,UAAA,EAAY,CAAA,GACxD,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,YAAY,CAAA;AAC9D,cAAA,uBACEA,GAAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,EAAA;AAAA,oBACT,IAAA,EAAM,SAAA;AAAA,oBACN,IAAA,CAAK,OAAO,WAAA,EAAY,IACtB,gBAAgB,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,CAAA;AAAA,oBAC3C,gBAAA,CAAiB,IAAA,EAAM,aAAA,EAAe,GAAG,CAAA;AAAA,oBACzC,WAAA,IAAe;AAAA,mBACjB;AAAA,kBACA,KAAA,EAAO,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ;AAAA,oBACjC,GAAG,IAAA,EAAM,KAAA;AAAA,oBACT,GAAG,gBAAA,CAAiB,IAAA,EAAM,SAAA,EAAW,GAAG;AAAA,mBACzC,CAAA;AAAA,kBAEA,QAAA,EAAA;AAAA,iBAAA;AAAA,gBAbI,IAAA,CAAK;AAAA,eAcZ;AAAA,YAEJ,CAAC;AAAA;AAAA,SAAA;AAAA,QApEI,GAAA,CAAI;AAAA;AAqEX,KACF;AACA,IAAA,IAAI,UAAA,KAAe,UAAa,UAAA,EAAY;AAC1C,MAAA,QAAA,CAAS,IAAA;AAAA,wBACPA,GAAAA,CAAC,IAAA,EAAA,EAA4B,SAAA,EAAU,cAAA,EACrC,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAmB,QAAA,EAAA,UAAA,CAAW,kBAAkB,GAAG,CAAA,EAAE,KADlD,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,OAAA,CAElB;AAAA,OACF;AAAA,IACF;AACA,IAAA,uBAAOA,IAACQ,UAAAA,EAAA,EAAiC,sBAAnB,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,KAAA,CAAmB,CAAA;AAAA,EACpD;AAEA,EAAA,SAAS,aAAA,CACP,IAAA,EACA,KAAA,EACA,KAAA,EACM;AACN,IAAA,MAAM,KAAK,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAM,KAAA,CAAM,MAAM,CAAC,CAAA;AACrD,IAAA,MAAM,QAAA,GAAW,IAAA,EAAM,QAAA,CAAS,IAAI,CAAA;AACpC,IAAA,MAAM,WAAA,GAAA,CAAe,QAAA,EAAU,MAAA,IAAU,CAAA,IAAK,CAAA;AAC9C,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,GAAA,CAAI,EAAE,CAAA;AACrC,IAAA,MAAM,cAAA,GAAiB,MAAM,qBAAA,EAAsB;AACnD,IAAA,KAAA,CAAM,IAAA;AAAA,sBACJR,GAAAA,CAAC,IAAA,EAAA,EAAY,SAAA,EAAW,iBAAiB,YAAA,EAAc;AAAA,QACrD,EAAA;AAAA,QACA,QAAA,EAAU,IAAA;AAAA,QACV,eAAA,EAAiB,MAAM;AAAC,OACA,CAAA,EACvB,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,QAAQ,WAAA,KAAgB;AAC3C,QAAA,MAAM,IAAA,GAAO,OAAO,SAAA,CAAU,IAAA;AAC9B,QAAA,MAAM,UAAU,WAAA,KAAgB,CAAA;AAChC,QAAA,MAAM,OAAA,GAAU,WAAW,KAAA,GAAQ,CAAA,GAC/B,MAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG,CAAC,GAAG,CAAA,qBAChCA,IAAC,MAAA,EAAA,EAAa,SAAA,EAAU,UAAS,aAAA,EAAW,IAAA,EAAA,EAAjC,CAAkC,CAC9C,CAAA,GACD,IAAA;AACJ,QAAA,MAAM,KAAA,GAAQ,OAAA,IAAW,WAAA,mBACvBA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,MAAA,IAAU,MAAM,CAAA;AAAA,YAC3C,cAAY,MAAA,GAAS,CAAA,CAAE,mBAAmB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AAAA,YACjE,eAAA,EAAe,MAAA;AAAA,YACf,OAAA,EAAS,MAAM,cAAA,CAAe,EAAE,CAAA;AAAA,YACjC,QAAA,EAAA;AAAA;AAAA,SAED,GACE,0BACFA,GAAAA,CAAC,UAAK,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC,CAAA,GACnC,IAAA;AACJ,QAAA,MAAM,QAAA,GAAY,OAAO,SAAA,CACtB,WAAA;AACH,QAAA,IAAI,OAAA,GAAqB,IAAA;AACzB,QAAA,IAAI,OAAO,MAAA,CAAO,SAAA,CAAU,IAAA,KAAS,UAAA,EAAY;AAC/C,UAAA,OAAA,GAAU,MAAA,CAAO,UAAU,IAAA,CAAK;AAAA,YAC9B,GAAA,EAAK,EAAE,QAAA,EAAU,IAAA,EAAM,EAAA,EAAG;AAAA,YAC1B,MAAA;AAAA,YACA,KAAA;AAAA,YACA,UAAU,MACR,QAAA,KAAa,MAAA,GACR,IAAA,CAAiC,QAAQ,CAAA,GAC1C,MAAA;AAAA,YACN,aAAa,MACX,QAAA,KAAa,MAAA,GACR,IAAA,CAAiC,QAAQ,CAAA,GAC1C,MAAA;AAAA,YACN,MAAM;AAAC,WACC,CAAA;AAAA,QACZ,CAAA,MAAA,IAAW,aAAa,MAAA,EAAW;AACjC,UAAA,MAAM,GAAA,GAAO,KAAiC,QAAQ,CAAA;AACtD,UAAA,OAAA,GAAU,QAAQ,MAAA,IAAa,GAAA,KAAQ,IAAA,GAAO,EAAA,GAAK,OAAO,GAAG,CAAA;AAAA,QAC/D;AACA,QAAA,uBACEK,IAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,IAAA,EAAM,SAAA;AAAA,cACN,OAAO,WAAA,EAAY,IAAK,CAAA,aAAA,EAAgB,MAAA,CAAO,aAAa,CAAA;AAAA,aAC9D;AAAA,YACA,OAAO,cAAA,CAAe,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,OAAO,CAAA;AAAA,YAE/C,QAAA,EAAA;AAAA,cAAA,OAAA;AAAA,cACA,KAAA;AAAA,cACA,KAAA,KAAU,OAAO,GAAA,GAAM,IAAA;AAAA,cACvB;AAAA;AAAA,WAAA;AAAA,UAVI,MAAA,CAAO;AAAA,SAWd;AAAA,MAEJ,CAAC,KA/DM,EAgET;AAAA,KACF;AACA,IAAA,IAAI,WAAA,IAAe,MAAA,IAAU,IAAA,KAAS,MAAA,EAAW;AAC/C,MAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,CAAA;AAClC,MAAA,IAAI,KAAA,GAAQ,KAAK,QAAA,EAAU;AACzB,QAAA,KAAA,MAAW,KAAA,IAAS,QAAA,IAAY,EAAC,EAAG;AAClC,UAAA,aAAA,CAAc,KAAA,EAAO,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,SAAS,cAAA,GAA4B;AACnC,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA;AACjC,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,MAAA,uBACEL,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,QAAG,OAAA,EAAkB,SAAA,EAAU,OAAA,EAC7B,QAAA,EAAA,YAAA,EACH,CAAA,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,QAAqB,EAAC;AAC5B,MAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,EAAM,aAAA,CAAc,IAAA,EAAM,GAAG,KAAK,CAAA;AACrD,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,MAAM,OAAA,uBAAc,GAAA,EAGlB;AACF,MAAA,MAAM,QAAkB,EAAC;AACzB,MAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,QAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AAChC,QAAA,IAAI,QAAQ,MAAA,EAAW;AACvB,QAAA,MAAM,UAAA,GACJ,OAAO,GAAA,KAAQ,QAAA,GAAW,EAAE,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO,GAAA,EAAI,GAAI,GAAA;AACvD,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA;AACzC,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,OAAA,CAAQ,GAAA,CAAI,WAAW,GAAA,EAAK,EAAE,YAAY,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG,CAAA;AACvD,UAAA,KAAA,CAAM,IAAA,CAAK,WAAW,GAAG,CAAA;AAAA,QAC3B,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,QACtB;AAAA,MACF;AACA,MAAA,MAAM,QAAqB,EAAC;AAC5B,MAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC9B,QAAA,IAAI,WAAW,MAAA,EAAW;AAC1B,QAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,GAAA,CAAI,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE,CAAA;AAC/D,QAAA,KAAA,CAAM,IAAA;AAAA,0BACJA,IAAC,IAAA,EAAA,EAAwB,SAAA,EAAU,aACjC,QAAA,kBAAAK,IAAAA,CAAC,QAAG,OAAA,EACF,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,OAAA;AAAA,gBACV,cACE,WAAA,GACI,CAAA,CAAE,iBAAiB,CAAA,GACnB,EAAE,mBAAmB,CAAA;AAAA,gBAE3B,iBAAe,CAAC,WAAA;AAAA,gBAChB,OAAA,EAAS,MAAM,cAAA,CAAe,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE,CAAA;AAAA,gBACrD,KAAA,EAAO;AAAA,kBACL,UAAA,EAAY,aAAA;AAAA,kBACZ,MAAA,EAAQ,CAAA;AAAA,kBACR,OAAA,EAAS,CAAA;AAAA,kBACT,MAAA,EAAQ,SAAA;AAAA,kBACR,IAAA,EAAM,SAAA;AAAA,kBACN,KAAA,EAAO;AAAA,iBACT;AAAA,gBAEC,wBAAc,QAAA,GAAM;AAAA;AAAA,aACvB;AAAA,YAAU,GAAA;AAAA,YACT,OAAO,UAAA,CAAW,KAAA;AAAA,YAClB,MAAA,CAAO,UAAA,CAAW,KAAA,KAAU,MAAA,oBAC3BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAU,QAAA,EAAA,MAAA,CAAO,UAAA,CAAW,KAAA,EAAM,CAAA;AAAA,YAEnD,MAAA,CAAO,UAAA,CAAW,KAAA,KAAU,MAAA,oBAC3BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAU,QAAA,EAAA,MAAA,CAAO,UAAA,CAAW,KAAA,EAAM;AAAA,WAAA,EAEtD,CAAA,EAAA,EA9BO,CAAA,MAAA,EAAS,GAAG,CAAA,CA+BrB;AAAA,SACF;AACA,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,KAAA,MAAW,GAAA,IAAO,OAAO,IAAA,EAAM;AAC7B,YAAA,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,GAAG,CAAC,CAAA;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,aAAA,CAAc,GAAG,CAAC,CAAA;AAAA,EAC7C;AAEA,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,kBAAkB,CAAA;AAAA,MAC/C,cAAA,EAAc,OAAA;AAAA,MAEd,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,kBAAAK,IAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,cAAA,EAAc,OAAA;AAAA,YACd,oBAAA,EAAoB,eAAe,MAAA,GAAS,MAAA;AAAA,YAC5C,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA;AAAA,YAC/B,GAAG,IAAA;AAAA,YAEH,QAAA,EAAA;AAAA,cAAA,OAAA,KAAY,MAAA,oBAAaL,GAAAA,CAAC,SAAA,EAAA,EAAS,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,8BAC5CA,GAAAA,CAAC,OAAA,EAAA,EAAM,aAAA,EAAa,eAAe,MAAA,GAAS,MAAA,EACzC,QAAA,EAAA,KAAA,CAAM,eAAA,GAAkB,GAAA,CAAI,CAAC,WAAA,qBAC5BK,KAAC,IAAA,EAAA,EACE,QAAA,EAAA;AAAA,gBAAA,SAAA,KAAc,0BACbL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,SACZ,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,EAAE,qBAAqB,CAAA;AAAA,oBACnC,OAAA,EAAS,kBAAA;AAAA,oBACT,eAAA,EAAiB;AAAA;AAAA,iBACnB,EACF,CAAA;AAAA,gBAED,UAAA,KAAe,MAAA,oBACdA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,YAAA,EAAa,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAG,EAAG,CAAA;AAAA,gBAElD,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACnC,kBAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,IAAA;AACrC,kBAAA,MAAM,SAAA,GAAY,YAAA,CAAa,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA;AACtD,kBAAA,MAAM,aACJ,IAAA,EAAM,QAAA,KAAa,IAAA,IACnB,SAAA,KAAc,UACd,YAAA,KAAiB,MAAA;AACnB,kBAAA,MAAM,YACJ,SAAA,KAAc,MAAA,GACV,aAAA,CAAc,IAAA,EAAM,SAAS,CAAA,GAC7B,MAAA;AACN,kBAAA,MAAM,eAAA,GAAkB,WAAW,KAAA,CAAM,SAAA;AACzC,kBAAA,MAAM,cAAA,GACJ,cAAc,MAAA,IAAa,SAAA,CAAU,KAAK,MAAA,GAAS,CAAA,GAC/C,SAAA,CAAU,KAAA,GAAQ,CAAA,GAClB,MAAA;AACN,kBAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,aAAA,GACzB,IAAA,GACA,UAAA;AAAA,oBACE,MAAA,CAAO,OAAO,SAAA,CAAU,MAAA;AAAA,oBACxB,OAAO,UAAA;AAAW,mBACpB;AACJ,kBAAA,MAAM,SAAA,GACJ,SAAA,KAAc,IAAA,IAAQ,MAAA,CAAO,OAAO,YAAA,EAAa;AACnD,kBAAA,uBACEK,IAAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBAEC,SAAS,MAAA,CAAO,OAAA;AAAA,sBAChB,SAAA,EAAW,EAAA;AAAA,wBACT,IAAA,EAAM,SAAA;AAAA,wBACN,IAAA,EAAM,eAAA;AAAA,wBACN,MAAA,CAAO,OAAO,WAAA,EAAY,IACxB,gBAAgB,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAA;AAAA,wBAC7C,UAAA,IAAc,UAAA;AAAA,wBACd,SAAA,IAAa;AAAA,uBACf;AAAA,sBACA,KAAA,EAAO,cAAA,CAAe,MAAA,CAAO,MAAA,EAAQ;AAAA,wBACnC,GAAG,IAAA,EAAM,KAAA;AAAA,wBACT,GAAG,IAAA,EAAM;AAAA,uBACV,CAAA;AAAA,sBACD,aACE,eAAA,KAAoB,KAAA,GAChB,WAAA,GACA,eAAA,KAAoB,SAClB,YAAA,GACA,MAAA;AAAA,sBAGP,QAAA,EAAA;AAAA,wBAAA,UAAA,IAAc,SAAA,KAAc,yBAC3BA,IAAAA;AAAA,0BAAC,QAAA;AAAA,0BAAA;AAAA,4BACC,IAAA,EAAK,QAAA;AAAA,4BACL,SAAA,EAAU,mBAAA;AAAA,4BACV,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,8BAAA,MAAM,IAAA,GAAO,MAAM,QAAA,GACf,aAAA,CAAc,MAAM,SAAS,CAAA,GAC7B,cAAA,CAAe,IAAA,EAAM,SAAS,CAAA;AAClC,8BAAA,YAAA,CAAa,IAAI,CAAA;AAAA,4BACnB,CAAA;AAAA,4BAEC,QAAA,EAAA;AAAA,8BAAA,aAAA;AAAA,8CACDA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAO,eAAW,IAAA,EAChC,QAAA,EAAA;AAAA,gDAAAL,GAAAA;AAAA,kCAAC,MAAA;AAAA,kCAAA;AAAA,oCACC,SAAA,EACE,eAAA,KAAoB,KAAA,GAAQ,MAAA,GAAS,GAAA;AAAA,oCAExC,QAAA,EAAA;AAAA;AAAA,iCAED;AAAA,gDACAA,GAAAA;AAAA,kCAAC,MAAA;AAAA,kCAAA;AAAA,oCACC,SAAA,EACE,eAAA,KAAoB,MAAA,GAAS,MAAA,GAAS,GAAA;AAAA,oCAEzC,QAAA,EAAA;AAAA;AAAA;AAED,+BAAA,EACF,CAAA;AAAA,8BACC,cAAA,KAAmB,0BAClBA,GAAAA,CAAC,UAAK,SAAA,EAAU,OAAA,EAAQ,aAAA,EAAW,IAAA,EAChC,QAAA,EAAA,cAAA,EACH;AAAA;AAAA;AAAA,yBAEJ,GAEA,aAAA;AAAA,wBAED,6BACCA,GAAAA;AAAA,0BAAC,QAAA;AAAA,0BAAA;AAAA,4BACC,IAAA,EAAK,QAAA;AAAA,4BACL,YAAA,EAAY,CAAA,CAAE,oBAAoB,CAAA,IAAK,eAAA;AAAA,4BACvC,SAAA,EAAU,QAAA;AAAA,4BACV,eAAA,EACE,MAAA,CAAO,MAAA,CAAO,aAAA,KAAkB,MAAA,GAAS,MAAA;AAAA,4BAE3C,WAAA,EAAa,OAAO,gBAAA,EAAiB;AAAA,4BACrC,YAAA,EAAc,OAAO,gBAAA,EAAiB;AAAA,4BACtC,aAAA,EAAe,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA;AAAU;AAAA;AAC/C;AAAA,qBAAA;AAAA,oBAtEG,MAAA,CAAO;AAAA,mBAwEd;AAAA,gBAEJ,CAAC;AAAA,eAAA,EAAA,EAjHM,WAAA,CAAY,EAkHrB,CACD,CAAA,EACH,CAAA;AAAA,8BACAA,GAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,cAAA,EAAe,EAAE,CAAA;AAAA,cACxB,6BACCA,GAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,iBAAgB,CAAE,GAAA,CAAI,CAAC,WAAA,qBAC5BA,GAAAA,CAAC,IAAA,EAAA,EACE,sBAAY,OAAA,CAAQ,GAAA,CAAI,CAACyF,OAAAA,KAAW;AACnC,gBAAA,MAAM,IAAA,GAAOA,OAAAA,CAAO,MAAA,CAAO,SAAA,CAAU,IAAA;AACrC,gBAAA,uBACEzF,GAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,SAASyF,OAAAA,CAAO,OAAA;AAAA,oBAChB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,SAAS,CAAA;AAAA,oBAC7B,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,KAAA,EAAM;AAAA,oBAEvB,QAAA,EAAAA,OAAAA,CAAO,aAAA,GACJ,IAAA,GACA,UAAA;AAAA,sBACEA,OAAAA,CAAO,OAAO,SAAA,CAAU,MAAA;AAAA,sBACxBA,QAAO,UAAA;AAAW;AACpB,mBAAA;AAAA,kBAVCA,OAAAA,CAAO;AAAA,iBAWd;AAAA,cAEJ,CAAC,CAAA,EAAA,EAlBM,WAAA,CAAY,EAmBrB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,SAEJ,EACF,CAAA;AAAA,QACC,WAAW,MAAA,oBAAazF,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAC5D,OAAA,KAAY,MAAA,IAAa,WAAA,CAAY,IAAA,GAAO,CAAA,oBAC3CK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa,YAAA,EAAW,OAAA,EACrC,QAAA,EAAA;AAAA,0BAAAL,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAkB,aAAA,EAAW,MAC3C,QAAA,kBAAAK,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAO,cAAA;AAAA,cACP,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe,OAAA;AAAA,cAEf,QAAA,EAAA;AAAA,gCAAAL,IAAC,QAAA,EAAA,EAAO,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,CAAA;AAAA,gCAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA;AAAA,gCACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI;AAAA;AAAA;AAAA,WAC3C,EACF,CAAA;AAAA,0BACAA,GAAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,eAAe,WAAA,CAAY,IAAI,CAAA,IACtC,CAAA,CAAE,wBAAwB,EAAE,KAAA,EAAO,WAAA,CAAY,IAAA,EAAM,CAAA,EACzD,CAAA;AAAA,0BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,UACxB,OAAA,CAAQ,WAAA,KAAgB,MAAA,oBACvBA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,SAAS,OAAA,CAAQ,WAAA;AAAA,cAEhB,QAAA,EAAA,OAAA,CAAQ,cAAA,IAAkB,CAAA,CAAE,iBAAiB;AAAA;AAAA,WAChD;AAAA,UAED,OAAA,CAAQ,SAAA,KAAc,MAAA,oBACrBA,IAAC,MAAA,EAAA,EAAO,IAAA,EAAK,SAAA,EAAU,OAAA,EAAS,QAAQ,SAAA,EACrC,QAAA,EAAA,OAAA,CAAQ,YAAA,IAAgB,CAAA,CAAE,eAAe,CAAA,EAC5C;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ;ACh3BA,IAAM,YAAA,GAAe,2BAAA;AAErB,SAAS,UAAU,GAAA,EAAqB;AAKtC,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,EAAK;AACzB,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AACrB,EAAA,IAAI,YAAA,CAAa,IAAA,CAAK,OAAO,CAAA,EAAG,OAAO,OAAA;AACvC,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAC5C,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,MAAA,CAAO,WAAW,CAAA,EAAG;AAC9C,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AAC7D,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA;AAC1B,IAAA,MAAM,SAAA,GAAY,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAC7B,IAAA,IAAI,YAAA,CAAa,IAAA,CAAK,SAAS,CAAA,EAAG,OAAO,SAAA;AAAA,EAC3C;AACA,EAAA,OAAO,GAAA;AACT;AAYO,IAAM,SAAA,GAAYM,UAAAA;AAAA,EACvB,SAASoF,UAAAA,CACP,EAAE,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,WAAA,GAAc,OAAA,EAAS,EAAA,EAAI,IAAA,EAAK,EACxE,GAAA,EACA;AACA,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI5E,QAAAA,CAAS,SAAS,EAAE,CAAA;AAE9C,IAAAa,UAAU,MAAM;AACd,MAAA,QAAA,CAAS,SAAS,EAAE,CAAA;AAAA,IACtB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,UAAU,KAAA,KAAU,EAAA,IAAM,CAAC,YAAA,CAAa,KAAK,KAAK,CAAA;AAExD,IAAA,uBACE3B,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,SAAA,EAAU,SAAA;AAAA,QACV,YAAA,EAAa,KAAA;AAAA,QACb,UAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,EAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA,EAAO,KAAA;AAAA,QACP,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,QACrC,UAAU,CAAC,CAAA,KAAqC,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACvE,MAAA,EAAQ,CAAC,CAAA,KAAoC;AAC3C,UAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AACrC,UAAA,QAAA,CAAS,IAAI,CAAA;AACb,UAAA,IAAI,aAAa,IAAA,CAAK,IAAI,KAAK,IAAA,KAAS,KAAA,aAAkB,IAAI,CAAA;AAAA,QAChE;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AC3EA,IAAM,wBAAA,GAA4C;AAAA,EAChD,KAAA,EAAO,OAAA;AAAA,EACP,KAAA,EAAO,aAAA;AAAA,EACP,WAAA,EAAa,mBAAA;AAAA,EACb,MAAA,EAAQ,cAAA;AAAA,EACR,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,oCAAA;AAAA,EACd,YAAA,EAAc,kCAAA;AAAA,EACd,OAAA,EAAS,sBAAA;AAAA,EACT,KAAA,EAAO,oBAAA;AAAA,EACP,IAAA,EAAM,mBAAA;AAAA,EACN,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,OAAA,EAAS,eAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,qBAAqB,QAAA,EAA6C;AACzE,EAAA,IAAI,CAAC,UAAU,OAAO,wBAAA;AACtB,EAAA,MAAM,IAAA,uBAAW,GAAA,CAAI;AAAA,IACnB,GAAG,MAAA,CAAO,IAAA,CAAK,wBAAwB,CAAA;AAAA,IACvC,GAAG,MAAA,CAAO,IAAA,CAAK,QAAQ;AAAA,GACK,CAAA;AAC9B,EAAA,MAAM,MAAuB,EAAC;AAC9B,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,IAAA,GAAO,yBAAyB,GAAG,CAAA;AACzC,IAAA,MAAM,IAAA,GAAO,SAAS,GAAG,CAAA;AACzB,IAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,MAAA,EAAW;AAC5C,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,EAAA,CAAG,IAAA,EAAM,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAOO,IAAM,OAAA,GAAUM,UAAAA,CAAsC,SAASqF,QAAAA,CACpE,EAAE,cAAc,SAAA,EAAW,GAAG,KAAA,EAAM,EACpC,GAAA,EACA;AACA,EAAA,uBACE3F,GAAAA;AAAA,IAAC4F,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,YAAA,EAAc;AAAA,QACZ,QAAA,EAAU,IAAA;AAAA,QACV,GAAG,YAAA;AAAA,QACH,UAAA,EAAY,oBAAA,CAAqB,YAAA,EAAc,UAAU;AAAA,OAC3D;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AC1BM,IAAM,SAAA,GAAYtF,UAAAA,CAA2C,SAASuF,UAAAA,CAC3E;AAAA,EACE,OAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,GAAA,GAAM,CAAC,GAAA,EAAK,EAAE,CAAA;AAAA,EACd,QAAA,GAAW,EAAA;AAAA,EACX,UAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,KAAK,KAAA,EAAM;AACjB,EAAkB,CAAA,GAAA,EAAM,EAAA,CAAG,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAE9C,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,GAAI,UAAU,OAAA,GAAU,CAAC,OAAO,CAAA,GAAI,EAAC;AACxE,EAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,GAAA;AACjB,EAAA,MAAM,CAAA,GAAI,EAAA;AACV,EAAA,MAAM,CAAA,GAAI,EAAA;AACV,EAAA,MAAM,KAAK,CAAA,GAAI,CAAA;AACf,EAAA,MAAM,KAAK,CAAA,GAAI,CAAA;AACf,EAAA,MAAM,aAAa,QAAA,GAAW,GAAA;AAC9B,EAAA,MAAM,eAAA,GAAkB,MAAM,MAAA,GAAS,UAAA;AACvC,EAAA,MAAM,UAAA,GAAa,EAAA,GAAK,eAAA,GAAkB,CAAA,GAAI,QAAA;AAE9C,EAAA,MAAM,GAAA,GAAMnE,QAAQ,MAAM;AACxB,IAAA,MAAM,KAAA,GAAQ,4BAAA;AACd,IAAA,OAAO,CAAA,YAAA,EAAe,KAAK,CAAA,SAAA,EAAY,CAAC,aAAa,CAAC,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,oCAAA,EAAuC,cAAc,uBAAuB,CAAA,aAAA,EAAgB,QAAQ,CAAA,WAAA,EAAc,OAAO,KAAK,KAAA,CAC7N,GAAA;AAAA,MACC,CAAC,CAAA,EAAG,CAAA,KACF,CAAA,SAAA,EAAY,EAAE,CAAA,KAAA,EAAQ,UAAA,GAAa,CAAA,GAAI,UAAU,CAAA,uBAAA,EAA0B,SAAA,CAAU,CAAC,CAAC,CAAA,OAAA;AAAA,KAC3F,CACC,IAAA,CAAK,EAAE,CAAC,CAAA,UAAA,CAAA;AAAA,EACb,CAAA,EAAG,CAAC,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,UAAA,EAAY,UAAU,CAAC,CAAA;AAEvF,EAAA,MAAM,OAAA,GAAU,CAAA,6BAAA,EAAgC,kBAAA,CAAmB,GAAG,CAAC,CAAA,EAAA,CAAA;AAEvE,EAAA,uBACE1B,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACpC,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,eAAA,EAAiB,KAAA,CAAM,MAAA,GAAS,OAAA,GAAU,MAAA;AAAA,QAC1C,gBAAA,EAAkB,QAAA;AAAA,QAClB,cAAA,EAAgB,CAAA,EAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,CAAA;AAAA,QAC3B,GAAG;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,SAAS,UAAU,CAAA,EAAmB;AACpC,EAAA,OAAO,CAAA,CAAE,OAAA;AAAA,IACP,UAAA;AAAA,IACA,CAAC,CAAA,KAAA,CACE,EAAE,GAAA,EAAK,QAAQ,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,OAAA,EAAS,GAAA,EAAK,QAAA,EAAU,GAAA,EAAK,QAAA,IAAY,CAAC;AAAA,GAChF;AACF;ACvDA,IAAM,WAAA,GAAc,sBAClBK,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA,IACb,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAW,IAAA;AAAA,IAEX,QAAA,EAAA;AAAA,sBAAAL,IAAC,QAAA,EAAA,EAAO,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,CAAA;AAAA,sBAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA;AAAA,sBACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI;AAAA;AAAA;AAC3C,CAAA;AAGK,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,GAAe,IAAA;AAAA,EACf,WAAA,GAAc,gCAAA;AAAA,EACd,cAAA,GAAiB,SAAA;AAAA,EACjB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIc,QAAAA,CAAS,eAAe,KAAK,CAAA;AACrE,EAAA,MAAM,eAAe,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,WAAA,GAAc,eAAe,IAAA,GAAO,YAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,IAAA,IAAI,CAAC,YAAA,EAAc,eAAA,CAAgB,IAAI,CAAA;AACvC,IAAA,YAAA,GAAe,IAAI,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AACX,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,SAAA,IAAY;AACZ,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,SAAA,GACJ,cAAA,KAAmB,aAAA,GAAgB,oBAAA,GAAuB,gBAAA;AAE5D,EAAA,uBACET,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,WAAA;AAAA,MACN,YAAA,EAAc,OAAA;AAAA,MACd,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAM,QAAA;AAAA,MACN,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MAErC,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAkB,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EACzD,QAAA,EAAA,IAAA,oBAAQA,GAAAA,CAAC,eAAY,CAAA,EACxB,CAAA;AAAA,0BACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YACxC,+BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,WAAA,EAElD;AAAA,SAAA,EACF,CAAA;AAAA,wBACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,UAAO,OAAA,EAAQ,OAAA,EAAQ,MAAK,SAAA,EAAU,OAAA,EAAS,cAC7C,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,cAAA;AAAA,cACT,IAAA,EAAK,SAAA;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cAER,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AC5HO,IAAM,UAAA,GAAaM,UAAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,SAAA,GAAY,KAAK,GAAG,KAAA,EAAM,EAAG,GAAA,qBAChDN,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAW,YAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,0BAChBK,IAAAA,CAAC,MAAA,EAAA,EAA8C,SAAA,EAAU,iBAAA,EACtD,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,uBACJL,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,cAAA,EAAc,IAAA,CAAK,OAAA,GAAU,MAAA,GAAS,MAAA;AAAA,YACtC,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,IAAA,CAAK,WAAW,SAAS,CAAA;AAAA,YAE1D,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,4BAGRA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,cAAA,EAAc,IAAA,CAAK,OAAA,GAAU,MAAA,GAAS,MAAA;AAAA,YACtC,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,IAAA,CAAK,WAAW,SAAS,CAAA;AAAA,YAE1D,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SACR;AAAA,QAED,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,oBACtBA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,gBAAA,EAChC,QAAA,EAAA,SAAA,EACH;AAAA,OAAA,EAAA,EApBO,GAAG,IAAA,CAAK,IAAA,IAAQ,OAAO,CAAA,CAAA,EAAI,KAAK,EAsB3C,CACD;AAAA;AAAA;AAGP;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;ACHlB,IAAM,MAAA,GAASM,UAAAA,CAAqC,SAASwF,OAAAA,CAClE;AAAA,EACE,WAAA,GAAc,UAAA;AAAA,EACd,MAAA;AAAA,EACA,MAAA,GAAS,CAAA;AAAA,EACT,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIhF,QAAAA;AAAA,IAC1C;AAAA,GACF;AACA,EAAA,MAAM,SAAS,KAAA,IAAS,cAAA;AAExB,EAAA,MAAM,KAAA,GAAQY,OAAAA,CAAQ,MAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAG7D,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,MAAM,QAAA,GAAW,KAAA;AAEjB,IAAA,MAAM,OAAA,GAAU,QAAA,CACb,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,aAAA,CAAc,CAAC,CAAC,CAAA,CACpC,MAAA,CAAO,CAAC,EAAA,KAAsB,OAAO,IAAI,CAAA;AAC5C,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AAErB,IAAA,MAAM,MAAM,IAAI,oBAAA;AAAA,MACd,CAAC,OAAA,KAAY;AACX,QAAA,MAAM,OAAA,GAAU,OAAA,CACb,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,cAAc,CAAA,CAC9B,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,iBAAA,GAAoB,EAAE,iBAAiB,CAAA;AAC3D,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1B,QAAA,MAAM,OAAO,CAAA,CAAA,EAAI,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAO,EAAE,CAAA,CAAA;AACrC,QAAA,IAAI,KAAA,KAAU,MAAA,EAAW,iBAAA,CAAkB,IAAI,CAAA;AAC/C,QAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,MACtB,CAAA;AAAA,MACA;AAAA,QACE,UAAA,EAAY,IAAI,MAAM,CAAA,eAAA,CAAA;AAAA,QACtB,SAAA,EAAW,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG;AAAA;AAC3B,KACF;AACA,IAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAC,CAAA;AACrC,IAAA,OAAO,MAAM,IAAI,UAAA,EAAW;AAAA,EAC9B,GAAG,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,aAAa,CAAC,CAAA;AAExC,EAAA,MAAM,WAAA,GAAcV,WAAAA;AAAA,IAClB,CAAC,GAAkC,IAAA,KAAiB;AAClD,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,aAAA,CAAc,IAAI,CAAA;AACtC,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,CAAA,CAAE,cAAA,EAAe;AAOjB,MAAA,MAAM,IAAA,GAAQ,GAAmB,qBAAA,EAAsB;AACvD,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,MAAA,CAAO,OAAA,GAAU,MAAA;AACxC,MAAA,MAAA,CAAO,QAAA,CAAS,EAAE,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC3C,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,iBAAA,CAAkB,IAAI,CAAA;AAC/C,MAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,IACtB,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,KAAA,EAAO,aAAa;AAAA,GAC/B;AAEA,EAAA,uBACEjB,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,kBAAA,EAAkB,WAAA;AAAA,MAClB,aAAA,EAAa,SAAS,MAAA,GAAS,MAAA;AAAA,MAC/B,kBAAA,EAAkB,WAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,QAAA,GAAW,WAAW,IAAA,CAAK,IAAA;AACjC,QAAA,uBACEA,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YAEC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAA,EAAU,aAAA;AAAA,YACV,aAAA,EAAa,WAAW,MAAA,GAAS,MAAA;AAAA,YACjC,cAAA,EAAc,WAAW,UAAA,GAAa,MAAA;AAAA,YACtC,SAAS,CAAC,KAAA,KAAU,WAAA,CAAY,KAAA,EAAO,KAAK,IAAI,CAAA;AAAA,YAE/C,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAPD,IAAA,CAAK;AAAA,SAQZ;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;ACzHM,IAAM,IAAA,GAAOM,UAAAA,CAAwC,SAASyF,KAAAA,CACnE;AAAA,EACE,WAAA,GAAc,UAAA;AAAA,EACd,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIjF,SAA6B,YAAY,CAAA;AACzE,EAAA,MAAM,SAAS,KAAA,IAAS,QAAA;AACxB,EAAA,MAAM,YAAA,GAAe,CAAC,SAAA,KAAsB;AAC1C,IAAA,IAAI,KAAA,KAAU,MAAA,EAAW,WAAA,CAAY,SAAS,CAAA;AAC9C,IAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC/B,kBAAA,EAAkB,WAAA;AAAA,MAClB,kBAAA,EAAkB,WAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,QAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,UAAA,uBACEA,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,WAAA;AAAA,cACL,SAAA,EAAU;AAAA,aAAA;AAAA,YAFL,WAAW,KAAK,CAAA;AAAA,WAGvB;AAAA,QAEJ;AACA,QAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,UAAA,uBACEK,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,OAAA;AAAA,cACL,cAAY,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,MAAA;AAAA,cAEzD,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,yBAASL,GAAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EAAoB,eAAK,KAAA,EAAM,CAAA;AAAA,gBAC5D,IAAA,CAAK,KAAA,EAAO,GAAA,CAAI,CAAC,0BAChBA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA,EAAM,KAAA;AAAA,oBACN,MAAA;AAAA,oBACA,aAAA,EAAe;AAAA,mBAAA;AAAA,kBAHV,KAAA,CAAM;AAAA,iBAKd;AAAA;AAAA,aAAA;AAAA,YAZI,SAAS,KAAK,CAAA;AAAA,WAarB;AAAA,QAEJ;AACA,QAAA,uBACEA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEC,IAAA;AAAA,YACA,MAAA;AAAA,YACA,aAAA,EAAe;AAAA,WAAA;AAAA,UAHV,KAAK,KAAA,IAAS;AAAA,SAIrB;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,SAAS,UAAA,CAAW;AAAA,EAClB,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,KAAU,MAAA,IAAa,WAAW,IAAA,CAAK,KAAA;AAC7D,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,IAAA,EAAK,MAAA,EAAO,OAAO,EAAE,OAAA,EAAS,UAAA,EAAW,EAC3C,QAAA,kBAAAK,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,SAAA,EAAU,WAAA;AAAA,MACV,YAAA,EAAY,WAAW,UAAA,GAAa,MAAA;AAAA,MACpC,eAAA,EAAe,KAAK,QAAA,IAAY,MAAA;AAAA,MAChC,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,SAAS,MAAM;AACb,QAAA,IAAI,CAAC,KAAK,QAAA,IAAY,IAAA,CAAK,UAAU,MAAA,EAAW,aAAA,CAAc,KAAK,KAAK,CAAA;AAAA,MAC1E,CAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,wBAAQL,GAAAA,CAAC,UAAK,SAAA,EAAU,gBAAA,EAAkB,eAAK,IAAA,EAAK,CAAA;AAAA,wBAC1DA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,eAAK,KAAA,EAAM,CAAA;AAAA,QAC7C,IAAA,CAAK,yBAASA,GAAAA,CAAC,UAAK,SAAA,EAAU,iBAAA,EAAmB,eAAK,KAAA,EAAM;AAAA;AAAA;AAAA,GAC/D,EACF,CAAA;AAEJ;AClBO,SAAS,iBACd,OAAA,EACA,KAAA,EACA,OAAA,GAAU,CAAA,EACV,WAAW,CAAA,EACY;AACvB,EAAA,IAAI,KAAA,IAAS,CAAA,EAAG,OAAO,CAAC,CAAC,CAAA;AACzB,EAAA,MAAM,UAAA,GAAa,CAAA,GAAI,OAAA,GAAU,CAAA,GAAI,IAAI,QAAA,GAAW,CAAA;AACpD,EAAA,IAAI,SAAS,UAAA,EAAY;AACvB,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,IAAS,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AACnE,EAAA,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,IACrB,EAAE,QAAQ,QAAA,EAAS;AAAA,IACnB,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,GAAQ,WAAW,CAAA,GAAI;AAAA,GACnC;AACA,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,IACxB,IAAA,CAAK,IAAI,OAAA,GAAU,OAAA,EAAS,QAAQ,QAAA,GAAW,CAAA,GAAI,UAAU,CAAC,CAAA;AAAA,IAC9D,QAAA,GAAW;AAAA,GACb;AACA,EAAA,MAAM,aAAa,IAAA,CAAK,GAAA;AAAA,IACtB,KAAK,GAAA,CAAI,OAAA,GAAU,SAAS,QAAA,GAAW,CAAA,GAAI,UAAU,CAAC,CAAA;AAAA,IACtD,QAAA,CAAS,CAAC,CAAA,GAAI;AAAA,GAChB;AACA,EAAA,MAAM,QAA+B,EAAC;AACtC,EAAA,KAAA,CAAM,IAAA,CAAK,GAAG,UAAU,CAAA;AACxB,EAAA,IAAI,YAAA,GAAe,QAAA,GAAW,CAAA,EAAG,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,OAAA,IACxC,QAAA,GAAW,IAAI,QAAA,CAAS,CAAC,GAAG,KAAA,CAAM,IAAA,CAAK,WAAW,CAAC,CAAA;AAC5D,EAAA,KAAA,IAAS,IAAI,YAAA,EAAc,CAAA,IAAK,YAAY,CAAA,EAAA,EAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAC7D,EAAA,IAAI,aAAa,QAAA,CAAS,CAAC,IAAI,CAAA,EAAG,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,OAAA,IACzC,QAAA,CAAS,CAAC,CAAA,GAAI,CAAA,GAAI,QAAA,QAAgB,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,GAAI,CAAC,CAAA;AAC/D,EAAA,KAAA,CAAM,IAAA,CAAK,GAAG,QAAQ,CAAA;AACtB,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,UAAA,GAAaM,UAAAA;AAAA,EACxB,SAAS0F,WAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA,GAAkB,EAAA;AAAA,IAClB,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA,GAAe,CAAA;AAAA,IACf,aAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,OAAA,GAAU,SAAA;AAAA,IACV,OAAA,GAAU,OAAA;AAAA,IACV,QAAA;AAAA,IACA,eAAA,GAAkB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,IAClC,eAAA,GAAkB,IAAA;AAAA,IAClB,aAAA,GAAgB,KAAA;AAAA,IAChB,gBAAA,GAAmB,KAAA;AAAA,IACnB,SAAA;AAAA,IACA,QAAA,GAAW,CAAA;AAAA,IACX,QAAA,GAAW,CAAA;AAAA,IACX,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,EAAE,CAAA,EAAE,GAAIC,cAAAA,EAAe;AAC7B,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAInF,SAAS,YAAY,CAAA;AAC7D,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,SAAS,eAAe,CAAA;AACxE,IAAA,MAAM,oBAAoB,QAAA,IAAY,gBAAA;AACtC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,iBAAA,EAAmB,CAAC,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,SAAA,GAAY,YAAY,CAAC,CAAA;AAClE,IAAA,MAAM,UAAU,KAAA,IAAS,YAAA;AACzB,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,GAAG,UAAU,CAAA;AAE7D,IAAA,MAAM,KAAA,GAAQY,OAAAA;AAAA,MACZ,MAAM,gBAAA,CAAiB,WAAA,EAAa,UAAA,EAAY,UAAU,QAAQ,CAAA;AAAA,MAClE,CAAC,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,QAAQ;AAAA,KAC9C;AAEA,IAAA,SAAS,SAAS,QAAA,EAAkB;AAClC,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,QAAQ,GAAG,UAAU,CAAA;AAC1D,MAAA,IAAI,YAAY,WAAA,EAAa;AAC7B,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,eAAA,CAAgB,OAAO,CAAA;AAChD,MAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,IACzB;AAEA,IAAA,SAAS,eAAe,YAAA,EAAsB;AAC5C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,QAAA,KAAa,MAAA,EAAW,mBAAA,CAAoB,YAAY,CAAA;AAC5D,MAAA,gBAAA,GAAmB,YAAY,CAAA;AAC/B,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,eAAA,CAAgB,CAAC,CAAA;AAC1C,MAAA,aAAA,GAAgB,CAAC,CAAA;AAAA,IACnB;AAEA,IAAA,MAAM,QAAQ,SAAA,KAAc,CAAA,GAAI,CAAA,GAAA,CAAK,WAAA,GAAc,KAAK,YAAA,GAAe,CAAA;AACvE,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,cAAc,SAAS,CAAA;AAE1D,IAAA,IAAI,gBAAA,IAAoB,SAAA,IAAa,YAAA,EAAc,OAAO,IAAA;AAE1D,IAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,MAAA,MAAM,0BAA0B,KAAA,CAAM,IAAA;AAAA,4BAChC,GAAA,CAAI,CAAC,GAAG,eAAA,EAAiB,YAAY,CAAC;AAAA,QAC1C,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,OAAO,KAAK,CAAA;AAEpC,MAAA,uBACErB,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,YAAA;AAAA,UACL,YAAA,EAAW,YAAA;AAAA,UACX,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,UACrC,cAAA,EAAa,UAAA;AAAA,UACb,WAAA,EAAW,IAAA,KAAS,OAAA,GAAU,OAAA,GAAU,MAAA;AAAA,UACvC,GAAG,IAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACZ,iBAAO,SAAA,KAAc,UAAA,GAClB,SAAA,CAAU,SAAA,EAAW,CAAC,KAAA,EAAO,GAAG,CAAC,CAAA,GACjC,EAAE,uBAAA,EAAyB;AAAA,cACzB,KAAA;AAAA,cACA,GAAA;AAAA,cACA,KAAA,EAAO;AAAA,aACR,CAAA,EACP,CAAA;AAAA,YACC,eAAA,oBACCK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,IAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,aAAA,IAAiB,CAAA,CAAE,gBAAgB,CAAA,EAAE,CAAA;AAAA,8BAC5CA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,cACE,OAAO,aAAA,KAAkB,QAAA,GACrB,aAAA,GACA,EAAE,gBAAgB,CAAA;AAAA,kBAExB,KAAA,EAAO,YAAA;AAAA,kBACP,QAAA;AAAA,kBACA,QAAA,EAAU,CAAC,KAAA,KACT,cAAA,CAAe,OAAO,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,kBAG1C,QAAA,EAAA,uBAAA,CAAwB,GAAA,CAAI,CAAC,MAAA,qBAC5BA,GAAAA,CAAC,QAAA,EAAA,EAAoB,KAAA,EAAO,MAAA,EACzB,QAAA,EAAA,MAAA,EAAA,EADU,MAEb,CACD;AAAA;AAAA;AACH,aAAA,EACF,CAAA;AAAA,4BAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,4BACxBK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,QAAA,EAAA;AAAA,cAAA,aAAA,oBACCL,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,WAAA,KAAgB,CAAA,GAAI,UAAA,GAAa,EAAA;AAAA,kBAC5C,QAAA,EAAU,YAAY,WAAA,KAAgB,CAAA;AAAA,kBACtC,OAAA,EAAS,MAAM,QAAA,CAAS,CAAC,CAAA;AAAA,kBACzB,YAAA,EAAY,cAAA,IAAkB,CAAA,CAAE,iBAAiB,CAAA;AAAA,kBAEjD,0BAAAA,GAAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA,eAC9C;AAAA,8BAEFA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,WAAA,KAAgB,CAAA,GAAI,UAAA,GAAa,EAAA;AAAA,kBAC5C,QAAA,EAAU,YAAY,WAAA,KAAgB,CAAA;AAAA,kBACtC,OAAA,EAAS,MAAM,QAAA,CAAS,WAAA,GAAc,CAAC,CAAA;AAAA,kBACvC,YAAA,EAAY,iBAAA,IAAqB,CAAA,CAAE,oBAAoB,CAAA;AAAA,kBAEvD,0BAAAA,GAAAA,CAACoF,WAAAA,EAAA,EAAY,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA,eAC7C;AAAA,cACC,KAAA,CAAM,GAAA;AAAA,gBAAI,CAAC,IAAA,EAAM,KAAA,KAChB,IAAA,KAAS,KAAA,mBACPpF,GAAAA,CAAC,MAAA,EAAA,EAA0B,SAAA,EAAU,KAAA,EAAM,eAAW,IAAA,EAAC,QAAA,EAAA,QAAA,EAAA,EAA5C,OAAO,KAAK,CAAA,CAEvB,oBAEAA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBAEL,SAAA,EAAW,IAAA,KAAS,WAAA,GAAc,IAAA,GAAO,EAAA;AAAA,oBACzC,QAAA;AAAA,oBACA,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,oBAC5B,cAAA,EAAc,IAAA,KAAS,WAAA,GAAc,MAAA,GAAS,MAAA;AAAA,oBAE7C,QAAA,EAAA;AAAA,mBAAA;AAAA,kBANI;AAAA;AAOP,eAEJ;AAAA,8BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,WAAA,KAAgB,UAAA,GAAa,UAAA,GAAa,EAAA;AAAA,kBACrD,QAAA,EAAU,YAAY,WAAA,KAAgB,UAAA;AAAA,kBACtC,OAAA,EAAS,MAAM,QAAA,CAAS,WAAA,GAAc,CAAC,CAAA;AAAA,kBACvC,YAAA,EAAY,aAAA,IAAiB,CAAA,CAAE,gBAAgB,CAAA;AAAA,kBAE/C,0BAAAA,GAAAA,CAACsD,YAAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA,eAC9C;AAAA,cACC,iCACCtD,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,WAAA,KAAgB,UAAA,GAAa,UAAA,GAAa,EAAA;AAAA,kBACrD,QAAA,EAAU,YAAY,WAAA,KAAgB,UAAA;AAAA,kBACtC,OAAA,EAAS,MAAM,QAAA,CAAS,UAAU,CAAA;AAAA,kBAClC,YAAA,EAAY,aAAA,IAAiB,CAAA,CAAE,gBAAgB,CAAA;AAAA,kBAE/C,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA;AAC/C,aAAA,EAEJ;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACEK,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,YAAA;AAAA,QACL,YAAA,EAAW,YAAA;AAAA,QACX,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,QACrC,WAAA,EAAW,IAAA,KAAS,OAAA,GAAU,OAAA,GAAU,MAAA;AAAA,QACxC,cAAA,EAAc,OAAA,KAAY,OAAA,GAAU,MAAA,GAAY,OAAA;AAAA,QAC/C,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,SAAA,oBACCL,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,OAAO,SAAA,KAAc,aAClB,SAAA,CAAU,SAAA,EAAW,CAAC,KAAA,EAAO,GAAG,CAAC,CAAA,GACjC,CAAA,EAAG,KAAK,CAAA,MAAA,EAAI,GAAG,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA,EACpC,CAAA;AAAA,0BAEFA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,iBAAA;AAAA,cACV,cAAY,iBAAA,IAAqB,eAAA;AAAA,cACjC,OAAA,EAAS,MAAM,QAAA,CAAS,WAAA,GAAc,CAAC,CAAA;AAAA,cACvC,QAAA,EAAU,YAAY,WAAA,KAAgB,CAAA;AAAA,cAEtC,0BAAAA,GAAAA,CAACoF,WAAAA,EAAA,EAAY,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA,WAC7C;AAAA,UACC,OAAA,KAAY,2BACX/E,IAAAA,CAAC,UAAK,SAAA,EAAU,iBAAA,EAAkB,gBAAa,MAAA,EAC5C,QAAA,EAAA;AAAA,YAAA,WAAA;AAAA,YAAY,KAAA;AAAA,YAAI;AAAA,WAAA,EACnB,IAEA,KAAA,CAAM,GAAA;AAAA,YAAI,CAAC,CAAA,EAAG,GAAA,KACZ,CAAA,KAAM,KAAA,mBACJL,GAAAA,CAAC,MAAA,EAAA,EAAqB,SAAA,EAAU,qBAAA,EAAsB,eAAW,IAAA,EAAC,QAAA,EAAA,QAAA,EAAA,EAAvD,IAAI,GAAG,CAAA,CAElB,oBAEAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,iBAAA;AAAA,gBACV,YAAA,EAAY,CAAA,KAAM,WAAA,GAAc,UAAA,GAAa,MAAA;AAAA,gBAC7C,cAAA,EAAc,CAAA,KAAM,WAAA,GAAc,MAAA,GAAS,MAAA;AAAA,gBAC3C,OAAA,EAAS,MAAM,QAAA,CAAS,CAAC,CAAA;AAAA,gBACzB,QAAA;AAAA,gBAEC,QAAA,EAAA;AAAA,eAAA;AAAA,cARI;AAAA;AASP,WAEJ;AAAA,0BAEFA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,iBAAA;AAAA,cACV,cAAY,aAAA,IAAiB,WAAA;AAAA,cAC7B,OAAA,EAAS,MAAM,QAAA,CAAS,WAAA,GAAc,CAAC,CAAA;AAAA,cACvC,QAAA,EAAU,YAAY,WAAA,KAAgB,UAAA;AAAA,cAEtC,0BAAAA,GAAAA,CAACsD,YAAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC,WAAU,OAAA,EAAQ;AAAA;AAAA;AAC9C;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AC1WA,IAAM,SAAA,GAAY,sBAChBtD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAa,CAAA,EAAG,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EACrI,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB,CAAA,EACpC,CAAA;AAGK,IAAM,KAAA,GAAQM,UAAAA,CAAyC,SAAS4F,MAAAA,CACrE,EAAE,KAAA,EAAO,WAAA,GAAc,YAAA,EAAc,OAAA,GAAU,CAAA,EAAG,SAAA,EAAW,GAAG,IAAA,IAChE,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU,WAAA,KAAgB,UAAA,GAAa,SAAA,GAAY,SAAA;AACzD,EAAA,uBACElG,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA;AAAA,MAChC,kBAAA,EAAkB,WAAA;AAAA,MAClB,kBAAA,EAAkB,WAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,QAAA,MAAM,aACJ,KAAA,GAAQ,OAAA,GAAU,MAAA,GAAS,KAAA,KAAU,UAAU,KAAA,GAAQ,KAAA;AAEzD,QAAA,uBACEK,IAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,UAAA,EAAY,KAAK,SAAS,CAAA;AAAA,YAChD,cAAA,EAAc,UAAA,KAAe,KAAA,GAAQ,MAAA,GAAS,MAAA;AAAA,YAE9C,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EACb,QAAA,EAAA,IAAA,CAAK,IAAA,KAAS,UAAA,KAAe,MAAA,mBAASA,GAAAA,CAAC,SAAA,EAAA,EAAU,CAAA,GAAK,QAAQ,CAAA,CAAA,EACjE,CAAA;AAAA,cACC,gBAAgB,UAAA,mBACfK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,yBAASL,GAAAA,CAAC,SAAI,SAAA,EAAU,KAAA,EAAO,eAAK,KAAA,EAAM,CAAA;AAAA,gBAC/C,IAAA,CAAK,+BAAeA,GAAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EAAQ,eAAK,WAAA,EAAY,CAAA;AAAA,gBAC5D,IAAA,CAAK;AAAA,eAAA,EACR,CAAA,mBAEAK,IAAAA,CAAAG,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,yBAASR,GAAAA,CAAC,UAAK,SAAA,EAAU,KAAA,EAAO,eAAK,KAAA,EAAM,CAAA;AAAA,gBAChD,IAAA,CAAK,+BAAeA,GAAAA,CAAC,UAAK,SAAA,EAAU,KAAA,EAAO,eAAK,WAAA,EAAY,CAAA;AAAA,gBAC5D,IAAA,CAAK;AAAA,eAAA,EACR;AAAA;AAAA,WAAA;AAAA,UAlBG,GAAG,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM,CAAC,IAAI,KAAK,CAAA;AAAA,SAoB/C;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC;ACrBD,IAAMmG,YAAAA,GAA6C;AAAA,EACjD,OAAA,EAAS,EAAA;AAAA,EACT,IAAA,EAAM,qBAAA;AAAA,EACN,OAAA,EAAS,wBAAA;AAAA,EACT,OAAA,EAAS,wBAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AAEA,IAAM1F,YAAAA,GAA2C;AAAA,EAC/C,KAAA,EAAO,qBAAA;AAAA,EACP,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,SAAS,QAAA,CAAS,OAAe,GAAA,EAAqB;AACpD,EAAA,IAAI,GAAA,IAAO,GAAG,OAAO,CAAA;AACrB,EAAA,MAAM,GAAA,GAAO,QAAQ,GAAA,GAAO,GAAA;AAC5B,EAAA,IAAI,GAAA,GAAM,GAAG,OAAO,CAAA;AACpB,EAAA,IAAI,GAAA,GAAM,KAAK,OAAO,GAAA;AACtB,EAAA,OAAO,GAAA;AACT;AAEO,IAAM,QAAA,GAAWH,UAAAA;AAAA,EACtB,SAAS8F,SAAAA,CACP;AAAA,IACE,KAAA,GAAQ,CAAA;AAAA,IACR,GAAA,GAAM,GAAA;AAAA,IACN,OAAA,GAAU,MAAA;AAAA,IACV,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,SAAA;AAAA,IACP,QAAA,GAAW,IAAA;AAAA,IACX,aAAAC,YAAAA,GAAc,CAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,KAAA,EAAO,GAAG,CAAA;AAC/B,IAAA,MAAM,KAAA,GAAmB,MAAA,GACrB,MAAA,CAAO,KAAA,EAAO,GAAG,IACjB,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA,CAAA;AAEtB,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,MAAM,CAAA,GAAI,KAAKA,YAAAA,GAAc,CAAA;AAC7B,MAAA,MAAM,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,CAAA;AACxB,MAAA,MAAM,UAAA,GAAa,CAAA,IAAK,CAAA,GAAI,GAAA,GAAM,GAAA,CAAA;AAClC,MAAA,uBACEhG,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,aAAA;AAAA,UACL,eAAA,EAAe,KAAA;AAAA,UACf,eAAA,EAAe,CAAA;AAAA,UACf,eAAA,EAAe,GAAA;AAAA,UACf,SAAA,EAAW,EAAA;AAAA,YACT,0BAAA;AAAA,YACA8F,aAAY,KAAK,CAAA;AAAA,YACjB1F,aAAW,IAAI,CAAA;AAAA,YACf;AAAA,WACF;AAAA,UACC,GAAG,IAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAAJ,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAA,EAAc,eAAY,MAAA,EACrC,QAAA,EAAA;AAAA,8BAAAL,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,EAAA;AAAA,kBACJ,EAAA,EAAI,EAAA;AAAA,kBACJ,CAAA;AAAA,kBACA,MAAA,EAAO,kBAAA;AAAA,kBACP,WAAA,EAAaqG,YAAAA;AAAA,kBACb,IAAA,EAAK;AAAA;AAAA,eACP;AAAA,8BACArG,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,EAAA;AAAA,kBACJ,EAAA,EAAI,EAAA;AAAA,kBACJ,CAAA;AAAA,kBACA,MAAA,EAAO,cAAA;AAAA,kBACP,WAAA,EAAaqG,YAAAA;AAAA,kBACb,IAAA,EAAK,MAAA;AAAA,kBACL,eAAA,EAAiB,CAAA;AAAA,kBACjB,gBAAA,EAAkB,UAAA;AAAA,kBAClB,aAAA,EAAc,OAAA;AAAA,kBACd,SAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YACC,2BAAWrG,GAAAA,CAAC,UAAK,SAAA,EAAU,eAAA,EAAiB,iBAAM,CAAA,GAAU;AAAA;AAAA;AAAA,OAC/D;AAAA,IAEJ;AAEA,IAAA,uBACEK,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,aAAA;AAAA,QACL,eAAA,EAAe,KAAA;AAAA,QACf,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,SAAA,EAAW,EAAA;AAAA,UACT,wBAAA;AAAA,UACA8F,aAAY,KAAK,CAAA;AAAA,UACjB1F,aAAW,IAAI,CAAA;AAAA,UACf;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAT,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,IAAO,CAAA,EAClC,CAAA;AAAA,UACC,2BAAWA,GAAAA,CAAC,UAAK,SAAA,EAAU,eAAA,EAAiB,iBAAM,CAAA,GAAU;AAAA;AAAA;AAAA,KAC/D;AAAA,EAEJ;AACF;ACzIO,SAAS,OAAA,CAAQ;AAAA,EACtB,IAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAG,YAAA,EAAY,KAAA,EAAQ,GAAG,IAAA,EAChE,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,oBACtCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAS;AAAA,GAAA,EAC3C,CAAA;AAEJ;ACNO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,IAAA,GAAO,EAAA;AAAA,EACP,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AAClC,EAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,CAAM,MAAA,GAAS,QAAQ,MAAM,CAAA;AAC1D,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,GAAO,IAAI,CAAC,CAAA;AAClD,EAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gBAAgB,SAAS,CAAA,EAAG,KAAA,EAAe,GAAG,IAAA,EAC9D,QAAA,EAAA;AAAA,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,qBACZL,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,mBAAA;AAAA,QACV,KAAA,EAAO,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,KAAA;AAAA,QACzB,KAAA,EAAO,EAAE,UAAA,EAAY,IAAA,CAAK,KAAA,EAAO,OAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,MAAA,EAAO;AAAA,QAE5E,QAAA,EAAA,IAAA,CAAK;AAAA,OAAA;AAAA,MALD,IAAA,CAAK;AAAA,KAOb,CAAA;AAAA,IACA,QAAA,GAAW,qBACVK,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,yCAAA;AAAA,QACV,OAAO,EAAE,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,QACtD,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UACG;AAAA;AAAA;AAAA;AACJ,GAAA,EAEJ,CAAA;AAEJ;AClCO,SAAS,mBAAA,CAAoB;AAAA,EAClC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,uBACEA,KAAC,OAAA,EAAA,EAAM,SAAA,EAAW,GAAG,cAAA,EAAgB,SAAS,CAAA,EAAI,GAAG,IAAA,EACnD,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,kBAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,KAAA;AAAA,UACA,UAAA,EAAY,UAAU,KAAA,GAAQ;AAAA,SAChC;AAAA,QAEC,QAAA,EAAA,OAAA,oBACCA,GAAAA,CAAC4D,KAAAA,EAAA,EAAM,IAAA,EAAM,EAAA,EAAI,WAAA,EAAa,CAAA,EAAG,KAAA,EAAM,OAAA,EAAQ,aAAA,EAAY,MAAA,EAAO;AAAA;AAAA,KAEtE;AAAA,oBACA5D,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC1C,QAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,KAAA,EAAM,aAAY,QAAA,EAAA,GAAA,EAE1D,CAAA;AAAA,oBAEFA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAU,qBAAA;AAAA,QACV,OAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAU,CAAC,CAAA,KAAM,QAAA,GAAW,CAAA,CAAE,OAAO,OAAO;AAAA;AAAA;AAC9C,GAAA,EACF,CAAA;AAEJ;ACnDO,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACEK,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,SAAA,EAAW,SAAS,CAAA,EAAI,GAAG,IAAA,EAC7C,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,UAAK,SAAA,EAAU,gBAAA,EAAiB,OAAO,EAAE,UAAA,EAAY,OAAM,EAAG,CAAA;AAAA,oBAC/DA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IACpC,IAAA,oBAAQK,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,cAAA,EAAe,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,MAAG;AAAA,KAAA,EAAK;AAAA,GAAA,EAClD,CAAA;AAEJ;ACbO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACEA,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,eAAA,EAAiB,SAAS,CAAA,EAAI,GAAG,IAAA,EACnD,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAuB,OAAO,EAAE,UAAA,EAAY,KAAA,EAAM,EAC/D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAsB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAC1C,4BACCA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAY,UAAU,IAAI,CAAA,CAAA;AAAA,QAE1B,0BAAAA,GAAAA,CAAC6D,CAAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI,eAAY,MAAA,EAAO;AAAA;AAAA;AAClC,GAAA,EAEJ,CAAA;AAEJ;AClBO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,KAAA;AAAA,EACd,GAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,cAAA,GAAiB,WAAA;AAAA,EACjB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,uBACExD,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,cAAA,EAAgB,SAAS,CAAA,EAAI,GAAG,IAAA,EACjD,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,UAAK,SAAA,EAAU,qBAAA,EAAsB,OAAO,EAAE,UAAA,EAAY,KAAA,EAAM,EAC9D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,oBACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,0BAAUL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,SAAA,EAAU;AAAA,OAAA,EAC1D,CAAA;AAAA,MAAA,CACE,OAAO,WAAA,qBACPK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,WAAA,GAAc,CAAA,EAAG,cAAc,CAAA,MAAA,CAAA,GAAQ,EAAA;AAAA,QACvC;AAAA,OAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;ACrCO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,uBACEL,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACtC,WAAA,EAAW,IAAA;AAAA,MACX,KAAA,EAAO,EAAE,UAAA,EAAY,KAAA,EAAO,GAAG,KAAA,EAAM;AAAA,MACpC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;ACpBO,SAAS,aAAA,CAAc;AAAA,EAC5B,GAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAG,YAAA,EAAY,KAAA,EAAQ,GAAG,IAAA,EAChE,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAgB,QAAA,EAAA,GAAA,EAAI,CAAA;AAAA,oBACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,GAAA,EAAI;AAAA,GAAA,EACtC,CAAA;AAEJ;;;ACrBO,SAAS,QAAQ,KAAA,EAAyC;AAC/D,EAAA,MAAM,CAAC,IAAA,EAAM,IAAI,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AACpC,EAAA,MAAM,CAAA,GAAI,OAAO,IAAI,CAAA;AACrB,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,IAAQ,GAAG,CAAA;AAC5B,EAAA,OAAO,EAAE,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,GAAI,CAAA,GAAI,CAAA,EAAG,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,GAAI,IAAI,CAAA,EAAE;AACxE;AAGO,SAAS,MAAA,CACd,CAAA,EACA,CAAA,EACA,OAAA,EACQ;AACR,EAAA,OAAA,CAAQ,IAAI,OAAA,CAAQ,SAAA,IAAa,KAAK,OAAA,CAAQ,QAAA,GAAW,IAAI,OAAA,CAAQ,QAAA;AACvE;AAGO,SAAS,OAAA,CAAQ,GAAW,MAAA,EAA4B;AAC7D,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,OAAO,CAAA,EAAG,CAAC,CAAA,MAAA,CAAA;AAChC,EAAA,OAAO,GAAG,MAAA,CAAO,CAAC,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,GAAA,CAAA;AACtC;AAGO,IAAM,YAAA,GAAe;AAAA,EAC1B,SAAA,EAAW,CAAA;AAAA,EACX,OAAA,EAAS,EAAA;AAAA,EACT,QAAA,EAAU;AAAA;AACZ;AAaO,SAAS,cAAA,CAAe,MAAc,KAAA,EAA+B;AAC1E,EAAA,MAAM,QAAQ,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,GAAQ,GAAG,CAAC,CAAA;AACzC,EAAA,MAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,MAAA,EAAO,GAAI,CAAA,IAAK,CAAA;AACpC,EAAA,MAAM,cAAc,IAAI,IAAA,CAAK,MAAM,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ;AACrD,EAAA,MAAM,QAAA,GAAW,IAAI,IAAA,CAAK,IAAA,EAAM,QAAQ,CAAA,EAAG,CAAC,EAAE,OAAA,EAAQ;AACtD,EAAA,MAAM,QAAwB,EAAC;AAC/B,EAAA,KAAA,IAAS,CAAA,GAAI,IAAA,GAAO,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAClC,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAG,CAAA,EAAG,QAAA,GAAW,CAAA,EAAG,GAAA,EAAK,IAAA,EAAM,CAAA;AAAA,EAClE;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,WAAA,EAAa,CAAA,EAAA,EAAK;AACrC,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,IAAA,EAAM,GAAG,KAAA,EAAO,CAAA,EAAG,GAAA,EAAK,KAAA,EAAO,CAAA;AAAA,EACjD;AACA,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,OAAO,KAAA,CAAM,SAAS,EAAA,EAAI;AACxB,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAG,CAAA,EAAG,IAAA,EAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,CAAA;AAAA,EAC5D;AACA,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,GAAA,CAAI,CAAA,EAAW,CAAA,EAAW,CAAA,EAAmB;AAC3D,EAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,IAAI,MAAA,CAAO,CAAC,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACzE;ACtCO,SAAS,UAAA,CAAW;AAAA,EACzB,YAAY,YAAA,CAAa,SAAA;AAAA,EACzB,UAAU,YAAA,CAAa,OAAA;AAAA,EACvB,WAAW,YAAA,CAAa,QAAA;AAAA,EACxB,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,OAAoB,EAAC;AAC3B,EAAA,MAAM,YAAY,EAAA,GAAK,QAAA;AACvB,EAAA,KAAA,IAAS,CAAA,GAAI,SAAA,EAAW,CAAA,GAAI,OAAA,EAAS,CAAA,EAAA,EAAK;AACxC,IAAA,IAAA,CAAK,IAAA,iBAAKA,GAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,aAAA,EAAc,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAA,EAAU,EAAA,EAAtD,CAAyD,CAAE,CAAA;AAAA,EACjF;AACA,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,cAAY,OAAA,IAAW,MAAA;AAAA,MACvB,KAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ;AAUO,SAAS,UAAA,CAAW;AAAA,EACzB,YAAY,YAAA,CAAa,SAAA;AAAA,EACzB,UAAU,YAAA,CAAa,OAAA;AAAA,EACvB,WAAW,YAAA,CAAa,QAAA;AAAA,EACxB,MAAA,GAAS,IAAA;AAAA,EACT;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,OAAoB,EAAC;AAC3B,EAAA,MAAM,YAAY,EAAA,GAAK,QAAA;AACvB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,GAAU,WAAW,CAAA,EAAA,EAAK;AAC5C,IAAA,IAAA,CAAK,IAAA;AAAA,sBACHL,GAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,cAAA,EAAe,OAAO,EAAE,MAAA,EAAQ,SAAA,EAAU,EAC/D,QAAA,kBAAAA,GAAAA,CAAC,UAAK,SAAA,EAAU,eAAA,EACb,QAAA,EAAA,CAAA,KAAM,CAAA,GAAI,EAAA,GAAK,OAAA,CAAQ,YAAY,CAAA,EAAG,MAAM,CAAA,EAC/C,CAAA,EAAA,EAHQ,CAIV;AAAA,KACF;AAAA,EACF;AACA,EAAA,uBAAOA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAC3D;AAWO,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,YAAY,YAAA,CAAa,SAAA;AAAA,EACzB,WAAW,YAAA,CAAa,QAAA;AAAA,EACxB,SAAA,GAAY;AACd,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIc,SAAS,CAAC,CAAA;AAClC,EAAAa,UAAU,MAAM;AACd,IAAA,IAAI,OAAA,IAAW,aAAa,CAAA,EAAG;AAC/B,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,EAAG,SAAS,CAAA;AACxE,IAAA,OAAO,MAAM,MAAA,CAAO,aAAA,CAAc,MAAM,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,MAAM,CAAA,GAAI,OAAA,oBAAW,IAAI,IAAA,EAAK;AAE9B,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA,CAAE,UAAA,EAAW,EAAG,EAAE,SAAA,EAAW,QAAA,EAAU,CAAA;AACtE,EAAA,IAAI,CAAA,GAAI,GAAG,OAAO,IAAA;AAElB,EAAA,uBACEtB,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAR,GAAAA,CAAC,SAAI,SAAA,EAAU,YAAA,EAAa,OAAO,EAAE,GAAA,EAAK,CAAA,GAAI,CAAA,EAAE,EAAG,CAAA;AAAA,oBACnDA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAc,KAAA,EAAO,EAAE,GAAA,EAAK,CAAA,EAAE,EAAG;AAAA,GAAA,EAClD,CAAA;AAEJ;ACnFO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,CAAA;AAAA,EACR,YAAY,YAAA,CAAa,SAAA;AAAA,EACzB,WAAW,YAAA,CAAa,QAAA;AAAA,EACxB,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,IAAS,OAAA;AAChC,EAAA,MAAM,MAAA,GAAS,MAAM,GAAA,IAAO,OAAA;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG,GAAI,QAAQ,QAAQ,CAAA;AACzC,EAAA,MAAM,EAAE,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG,GAAI,QAAQ,MAAM,CAAA;AACvC,EAAA,MAAM,MAAM,MAAA,CAAO,EAAA,EAAI,IAAI,EAAE,SAAA,EAAW,UAAU,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,MAAA,CAAO,EAAA,EAAI,EAAA,EAAI,EAAE,SAAA,EAAW,QAAA,EAAU,CAAA,GAAI,MAAM,CAAC,CAAA;AAC7E,EAAA,MAAM,WAAA,GAAc,EAAA,GAAK,EAAA,GAAK,EAAA,IAAM,KAAK,EAAA,GAAK,EAAA,CAAA;AAC9C,EAAA,MAAM,UAAU,WAAA,GAAc,EAAA;AAE9B,EAAA,MAAM,KACJ,OAAA,KAAY,OAAA,GACR,qCAAqC,KAAK,CAAA,UAAA,EAAa,KAAK,CAAA,YAAA,CAAA,GAC5D,OAAA,KAAY,cACV,CAAA,kCAAA,EAAqC,KAAK,wDAAwD,KAAK,CAAA,wBAAA,CAAA,GACvG,YAAY,OAAA,GACV,KAAA,GACA,uBAAuB,KAAK,CAAA,wBAAA,CAAA;AAEtC,EAAA,MAAM,SAAA,GAAY,OAAA,KAAY,OAAA,GAAU,OAAA,GAAU,KAAA;AAElD,EAAA,MAAM,WAAW,CAAA,KAAA,EAAQ,GAAA,GAAM,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA,QAAA,CAAA;AACjD,EAAA,MAAM,OAAA,GAAU,QAAS,GAAA,GAAM,IAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA,QAAA,CAAA;AAEzD,EAAA,MAAM,KAAA,GAAuB;AAAA,IAC3B,GAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY,EAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,uBACEK,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACtC,cAAY,OAAA,IAAW,MAAA;AAAA,MACvB,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,cAAA,EAAc,OAAA;AAAA,MACd,KAAA;AAAA,MACA,OAAA,EAAS,MAAM,OAAA,GAAU,KAAK,CAAA;AAAA,MAE9B,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,GAAA,EAAK,GAAG,UAAA,EAAY,UAAA,EAAY,UAAU,CAAA,EAAE,EACzE,0BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mBAAA,EAAqB,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EACnD,CAAA;AAAA,QACC,CAAC,OAAA,oBACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAA;AAAA,UAAM,QAAA;AAAA,UAAE,KAAA,CAAM,GAAA;AAAA,UACpB,KAAA,CAAM,QAAA,oBACLA,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAG,OAAA,EAAS,IAAA,EAAK,EAAG,QAAA,EAAA;AAAA,YAAA,OAAA;AAAA,YAAG,KAAA,CAAM;AAAA,WAAA,EAAS;AAAA,SAAA,EAErE,CAAA;AAAA,QAED,CAAC,WAAW,MAAA,oBAAUL,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,GACnE;AAEJ;AAYO,SAAS,aAAa,SAAA,EAA0C;AACrE,EAAA,MAAM,GAAA,GAAM,CAAC,GAAG,SAAS,CAAA,CACtB,MAAA;AAAA,IAAO,CAAC,MACP,OAAO,CAAA,CAAE,UAAU,QAAA,IAAY,OAAO,EAAE,GAAA,KAAQ;AAAA,GAClD,CACC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,QAA+C,EAAC;AACtD,EAAA,MAAM,YAA0B,EAAC;AACjC,EAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA,CAAE,SAAS,CAAC,CAAA;AACzC,MAAA,IAAI,IAAA,CAAK,GAAA,IAAO,CAAA,CAAE,KAAA,EAAO;AACvB,QAAA,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA;AACf,QAAA,SAAA,CAAU,IAAA,CAAK,EAAE,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,MAAA,EAAQ,GAAG,CAAA;AAC5C,QAAA,MAAA,GAAS,IAAA;AACT,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AACd,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,MAAM,MAAA,GAAS,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,CAAA;AAAA,IAC7D;AAAA,EACF;AACA,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,MAAM,CAAA;AAC1C,EAAA,KAAA,MAAW,CAAA,IAAK,SAAA,EAAW,CAAA,CAAE,MAAA,GAAS,SAAA;AACtC,EAAA,OAAO,SAAA;AACT;ACzHO,SAAS,SAAA,CAAU;AAAA,EACxB,GAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,GAAA,GAAM,KAAA;AAAA,EACN,OAAA,GAAU,KAAA;AAAA,EACV,UAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,CAAA;AAAA,EACX,cAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACrC,YAAU,GAAA,IAAO,MAAA;AAAA,MACjB,gBAAc,OAAA,IAAW,MAAA;AAAA,MACxB,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,UAAK,SAAA,EAAU,gBAAA,EAAiB,cAAY,KAAA,GAAQ,OAAA,GAAU,QAC5D,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,UACC,8BAAcA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAA0B,QAAA,EAAA,UAAA,EAAW;AAAA,SAAA,EACtE,CAAA;AAAA,wBACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,UACA,QAAA,GAAW,CAAA,oBACVL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA,cAAA,GAAiB,cAAA,CAAe,QAAQ,CAAA,GAAI,CAAA,EAAA,EAAK,QAAQ,CAAA,KAAA,CAAA,EAC5D;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AC/CO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA,GAAM,KAAA;AAAA,EACN,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACEK,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACrC,YAAU,GAAA,IAAO,MAAA;AAAA,MAChB,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,UAAK,SAAA,EAAU,gBAAA,EAAiB,OAAO,EAAE,UAAA,EAAY,OAAM,EAAG,CAAA;AAAA,QAC9D,wBAAQA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACjDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAC5C;AAEJ;ACNA,IAAM,YAAA,GAAe,CAAC,QAAA,EAAK,QAAA,EAAK,UAAK,QAAA,EAAK,QAAA,EAAK,UAAK,QAAG,CAAA;AAEhD,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,YAAA;AAAA,EACZ,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AACxC,EAAA,uBACEK,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,IAAA,EAC9C,QAAA,EAAA;AAAA,IAAA,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACjBL,GAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,gBAAA,EACpB,QAAA,EAAA,CAAA,EAAA,EADO,CAEV,CACD,CAAA;AAAA,IACA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,MAAA,MAAM,SAAA,GAAY,IAAI,CAAA,IAAK,CAAA;AAC3B,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,CAAE,GAAA,IAAO,MAAM,CAAA,KAAM,CAAA,CAAE,CAAA,IAAK,KAAA,CAAM,CAAA,KAAM,CAAA,CAAE,CAAA,IAAK,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;AAC9E,MAAA,MAAM,KAAA,GACJ,CAAC,CAAA,CAAE,GAAA,IACH,YACA,QAAA,CAAS,CAAA,KAAM,CAAA,CAAE,CAAA,IACjB,SAAS,CAAA,KAAM,CAAA,CAAE,CAAA,IACjB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,OAAA,GAAU,OAAA,GAAU,KAAA,GAAQ,UAAA,GAAa,MAAA;AACvD,MAAA,MAAM,SAAS,CAAC,CAAA,CAAE,GAAA,IAAO,SAAA,GAAY,QAAQ,SAAA,CAAU,GAAA,CAAI,CAAA,CAAE,CAAA,EAAG,EAAE,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA,GAAI,KAAA;AAC9E,MAAA,uBACEK,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,iBAAA;AAAA,UACV,YAAA,EAAY,KAAA;AAAA,UACZ,UAAA,EAAU,EAAE,GAAA,IAAO,MAAA;AAAA,UACnB,gBAAc,SAAA,IAAa,MAAA;AAAA,UAC3B,SAAS,MAAM,CAAC,CAAA,CAAE,GAAA,IAAO,WAAW,EAAE,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,GAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA;AAAA,UAC9D,UAAU,CAAA,CAAE,GAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,CAAA,EAAE,CAAA;AAAA,YACV,UAAU,CAAC,OAAA,oBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB;AAAA;AAAA,SAAA;AAAA,QAVnD;AAAA,OAWP;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AC1DO,SAAS,eAAA,CAAgB;AAAA,EAC9B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,SAAA,GAAY,MAAM,MAAA,IAAU,CAAA;AAClC,EAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACvC,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,oBAC1CK,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,iBAAA;AAAA,QACV,KAAA,EAAO,EAAE,mBAAA,EAAqB,CAAA,OAAA,EAAU,SAAS,CAAA,MAAA,CAAA,EAAS;AAAA,QAEzD,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACbL,GAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,YAAA,EAAa,YAAA,EAAY,CAAA,EAAA,EAAtC,CAAyC,CACpD,CAAA;AAAA,UACA,iCACCA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,mBAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,MAAM,CAAA,EAAI,aAAA,CAAc,CAAC,CAAA,GAAI,YAAa,GAAG,CAAA,CAAA,CAAA;AAAA,gBAC7C,KAAA,EAAO,IAAK,aAAA,CAAc,CAAC,IAAI,aAAA,CAAc,CAAC,CAAA,IAAK,SAAA,GAAa,GAAG,CAAA,CAAA;AAAA;AACrE;AAAA;AACF;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;ACnCO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEK,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACpC,aAAW,IAAA,IAAQ,MAAA;AAAA,MAClB,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACxC,wBAAQA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAkB,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,GAClD;AAEJ;ACyBO,SAAS,SAAA,CAA2C;AAAA,EACzD,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACEK,KAACiG,WAAA,EAAA,EAAc,GAAG,MAAM,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EACrD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,IAAA,oBAAQtG,GAAAA,CAACuG,KAAA,EAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnCvG,GAAAA,CAACwG,SAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EACrB,QAAA,EAAA,CAAC,OAAA,qBAAYxG,GAAAA,CAACyG,WAAA,EAAA,EAAe,OAAA,EAAkB,SAAA,EAAU,UAAS,CAAA,EACrE,CAAA;AAAA,IACC,WAAA,IAAe,wBACdzG,GAAAA,CAAC0G,UAAQ,IAAA,EAAK,aAAA,EAAc,SAAA,EAAU,MAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,oBAEF1G,GAAAA,CAAC2G,UAAA,EAAA,EAAc,SAAA,EAAU,YAAY,QAAA,EAAA,YAAA,EAAa;AAAA,GAAA,EACpD,CAAA;AAEJ;AAYO,SAAS,SAAA,CAA2C;AAAA,EACzD,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACEtG,KAACuG,WAAA,EAAA,EAAc,GAAG,MAAM,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EACrD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,IAAA,oBAAQ5G,GAAAA,CAACuG,KAAA,EAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnCvG,GAAAA,CAACwG,SAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EACrB,QAAA,EAAA,CAAC,OAAA,qBAAYxG,GAAAA,CAACyG,WAAA,EAAA,EAAe,OAAA,EAAkB,SAAA,EAAU,UAAS,CAAA,EACrE,CAAA;AAAA,IACC,WAAA,IAAe,wBACdzG,GAAAA,CAAC0G,UAAQ,IAAA,EAAK,aAAA,EAAc,SAAA,EAAU,MAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,oBAEF1G,GAAAA,CAAC2G,UAAA,EAAA,EAAc,SAAA,EAAU,YAAY,QAAA,EAAA,YAAA,EAAa;AAAA,GAAA,EACpD,CAAA;AAEJ;AAYO,SAAS,UAAA,CAA4C;AAAA,EAC1D,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,uBACEtG,KAACwG,YAAA,EAAA,EAAe,GAAG,MAAM,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EACtD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,IAAA,oBAAQ7G,GAAAA,CAACuG,KAAA,EAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnClG,IAAAA,CAACyG,KAAA,EAAA,EAAS,SAAA,EAAU,YAAA,EAClB,QAAA,EAAA;AAAA,sBAAA9G,GAAAA,CAACwG,SAAA,EAAA,EAAa,SAAA,EAAU,gCAAA,EACrB,QAAA,EAAA,CAAC,OAAA,qBAAYxG,GAAAA,CAACyG,WAAA,EAAA,EAAe,OAAA,EAAkB,SAAA,EAAU,QAAA,EAAS,CAAA,EACrE,CAAA;AAAA,sBAKAzG,GAAAA,CAACmF,QAAAA,EAAA,EAAU,SAAA,EAAU,kBAAiB,YAAA,EAAW,eAAA,EAC/C,QAAA,kBAAAnF,GAAAA,CAAC,gBAAa,aAAA,EAAW,IAAA,EAAC,MAAM,EAAA,EAAI,WAAA,EAAa,MAAM,CAAA,EACzD;AAAA,KAAA,EACF,CAAA;AAAA,IACC,WAAA,IAAe,wBACdA,GAAAA,CAAC0G,UAAQ,IAAA,EAAK,aAAA,EAAc,SAAA,EAAU,MAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,oBAEF1G,GAAAA,CAAC2G,UAAA,EAAA,EAAc,SAAA,EAAU,YAAY,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,oBAClD3G,GAAAA,CAAC+G,SAAA,EAAA,EAAW,SAAA,EAAU,YAAA,EACpB,QAAA,kBAAA/G,GAAAA,CAACgH,QAAA,EAAA,EACC,QAAA,kBAAAhH,GAAAA,CAAC,QAAA,EAAA,EAAS,CAAA,EACZ,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAYO,SAAS,eAAA,CAAiD;AAAA,EAC/D,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,uBACEK,KAAC4G,iBAAA,EAAA,EAAoB,GAAG,MAAM,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA,EAC3D,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,IAAA,oBAAQjH,GAAAA,CAACuG,KAAA,EAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnClG,IAAAA,CAACyG,KAAA,EAAA,EAAS,SAAA,EAAU,YAAA,EAClB,QAAA,EAAA;AAAA,sBAAA9G,GAAAA,CAAC,gBAAa,aAAA,EAAW,IAAA,EAAC,MAAM,EAAA,EAAI,WAAA,EAAa,GAAA,EAAK,SAAA,EAAU,KAAA,EAAM,CAAA;AAAA,sBACtEA,GAAAA,CAACwG,SAAA,EAAA,EAAa,IAAA,EAAK,SAAQ,SAAA,EAAU,gCAAA,EAClC,QAAA,EAAA,CAAC,OAAA,qBAAYxG,GAAAA,CAACyG,WAAA,EAAA,EAAe,OAAA,EAAkB,SAAA,EAAU,UAAS,CAAA,EACrE,CAAA;AAAA,sBACAzG,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,QAAA,EAAS,aAAA,EAAW,MAAC,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,sBACtCA,GAAAA,CAACwG,SAAA,EAAA,EAAa,IAAA,EAAK,OAAM,SAAA,EAAU,gCAAA,EAChC,QAAA,EAAA,CAAC,OAAA,qBAAYxG,GAAAA,CAACyG,WAAA,EAAA,EAAe,OAAA,EAAkB,SAAA,EAAU,UAAS,CAAA,EACrE,CAAA;AAAA,sBACAzG,GAAAA,CAACmF,QAAAA,EAAA,EAAU,WAAU,gBAAA,EAAiB,YAAA,EAAW,eAAA,EAC/C,QAAA,kBAAAnF,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,oBAAC,CAAA,EACrB;AAAA,KAAA,EACF,CAAA;AAAA,IACC,WAAA,IAAe,wBACdA,GAAAA,CAAC0G,UAAQ,IAAA,EAAK,aAAA,EAAc,SAAA,EAAU,MAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,oBAEF1G,GAAAA,CAAC2G,UAAA,EAAA,EAAc,SAAA,EAAU,YAAY,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,oBAClD3G,GAAAA,CAAC+G,SAAA,EAAA,EAAW,SAAA,EAAU,YAAA,EACpB,QAAA,kBAAA/G,GAAAA,CAACgH,QAAA,EAAA,EACC,QAAA,kBAAAhH,GAAAA,CAAC,aAAA,EAAA,EAAc,CAAA,EACjB,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AClKO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA,EAAO,UAAA;AAAA,EACP,YAAA,GAAe,CAAA;AAAA,EACf,aAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,MAAA,GAAS,IAAA;AAAA,EACT,IAAA,GAAO,IAAA;AAAA,EACP,WAAA,GAAc,YAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIc,SAAS,YAAY,CAAA;AACrD,EAAA,MAAM,SAAS,UAAA,IAAc,QAAA;AAE7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,IAAA,GAAOG,WAAAA;AAAA,IACX,CAACiG,KAAAA,KAAiB;AAChB,MAAA,IAAI,UAAU,CAAA,EAAG;AACjB,MAAA,IAAI,GAAA,GAAMA,KAAAA;AACV,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,GAAA,GAAA,CAAQA,KAAAA,GAAO,QAAS,KAAA,IAAS,KAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAA,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,KAAA,GAAQ,CAAA,EAAGA,KAAI,CAAC,CAAA;AAAA,MAC7C;AACA,MAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,GAAG,CAAA;AAC7C,MAAA,aAAA,GAAgB,GAAG,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,KAAA,EAAO,IAAA,EAAM,aAAa;AAAA,GACzC;AAEA,EAAA,MAAM,IAAA,GAAOjG,WAAAA,CAAY,MAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAI,CAAC,CAAA;AAC/D,EAAA,MAAM,IAAA,GAAOA,WAAAA,CAAY,MAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAI,CAAC,CAAA;AAG/D,EAAA,MAAM,WAAA,GAAckC,OAA8C,IAAI,CAAA;AACtE,EAAAxB,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,IAAY,QAAA,IAAY,CAAA,IAAK,MAAA,IAAU,QAAQ,CAAA,EAAG;AACvD,IAAA,WAAA,CAAY,OAAA,GAAU,YAAY,MAAM;AACtC,MAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,IACjB,GAAG,QAAQ,CAAA;AACX,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAA,CAAY,OAAA,EAAS,aAAA,CAAc,WAAA,CAAY,OAAO,CAAA;AAAA,IAC5D,CAAA;AAAA,EACF,GAAG,CAAC,QAAA,EAAU,QAAQ,MAAA,EAAQ,KAAA,EAAO,IAAI,CAAC,CAAA;AAE1C,EAAA,MAAM,aAAa,WAAA,KAAgB,UAAA;AACnC,EAAA,MAAM,aAAa,UAAA,GACf,EAAE,SAAA,EAAW,CAAA,YAAA,EAAe,SAAS,GAAG,CAAA,EAAA,CAAA,EAAM,aAAA,EAAe,QAAA,KAC7D,EAAE,SAAA,EAAW,CAAA,YAAA,EAAe,MAAA,GAAS,GAAG,CAAA,EAAA,CAAA,EAAK;AAEjD,EAAA,uBACEtB,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MACnC,kBAAA,EAAkB,WAAA;AAAA,MAClB,IAAA,EAAK,QAAA;AAAA,MACL,sBAAA,EAAqB,UAAA;AAAA,MACrB,YAAA,EAAc,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,MAClC,YAAA,EAAc,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAL,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAiB,KAAA,EAAO,YACpC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,0BAClBA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,OAAA;AAAA,YACL,sBAAA,EAAqB,OAAA;AAAA,YACrB,SAAA,EAAU,gBAAA;AAAA,YAET,QAAA,EAAA;AAAA,WAAA;AAAA,UALI;AAAA,SAOR,GACH,CAAA,EACF,CAAA;AAAA,QAEC,UAAU,KAAA,GAAQ,CAAA,oBACjBK,IAAAA,CAAAG,UAAA,EACE,QAAA,EAAA;AAAA,0BAAAR,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,qBAAA;AAAA,cACV,YAAA,EAAW,gBAAA;AAAA,cACX,OAAA,EAAS,IAAA;AAAA,cACT,QAAA,EAAU,CAAC,IAAA,IAAQ,MAAA,KAAW,CAAA;AAAA,cAE7B,QAAA,EAAA,UAAA,mBAAaA,GAAAA,CAAC6C,SAAAA,EAAA,EAAU,IAAA,EAAM,EAAA,EAAI,CAAA,mBAAK7C,GAAAA,CAACoF,WAAAA,EAAA,EAAY,MAAM,EAAA,EAAI;AAAA;AAAA,WACjE;AAAA,0BACApF,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,qBAAA;AAAA,cACV,YAAA,EAAW,YAAA;AAAA,cACX,OAAA,EAAS,IAAA;AAAA,cACT,QAAA,EAAU,CAAC,IAAA,IAAQ,MAAA,KAAW,KAAA,GAAQ,CAAA;AAAA,cAErC,QAAA,EAAA,UAAA,mBAAaA,GAAAA,CAAC6B,WAAAA,EAAA,EAAY,IAAA,EAAM,EAAA,EAAI,CAAA,mBAAK7B,GAAAA,CAACsD,YAAAA,EAAA,EAAa,MAAM,EAAA,EAAI;AAAA;AAAA;AACpE,SAAA,EACF,CAAA;AAAA,QAGD,QAAQ,KAAA,GAAQ,CAAA,oBACftD,GAAAA,CAAC,SAAI,SAAA,EAAU,eAAA,EAAgB,IAAA,EAAK,SAAA,EAAU,cAAW,QAAA,EACtD,QAAA,EAAA,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG,sBACdA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,KAAA;AAAA,YACL,YAAA,EAAY,CAAA,YAAA,EAAe,CAAA,GAAI,CAAC,CAAA,CAAA;AAAA,YAChC,iBAAe,CAAA,KAAM,MAAA;AAAA,YACrB,eAAa,CAAA,KAAM,MAAA;AAAA,YACnB,SAAA,EAAU,cAAA;AAAA,YACV,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC;AAAA,WAAA;AAAA,UAPhB;AAAA,SASR,CAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;ACjJA,SAASmH,UAAAA,CAAU,OAAsB,QAAA,EAA6B;AACpE,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,OAAO,EAAC;AACjC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,WAAW,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACpE,EAAA,OAAO,CAAC,KAAK,CAAA;AACf;AA2BO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA,EAAO,UAAA;AAAA,EACP,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIrG,QAAAA;AAAA,IAC9BqG,UAAAA,CAAU,cAAc,QAAQ;AAAA,GAClC;AACA,EAAA,MAAM,WACJ,UAAA,KAAe,MAAA,GAAYA,UAAAA,CAAU,UAAA,EAAY,QAAQ,CAAA,GAAI,QAAA;AAE/D,EAAA,MAAM,MAAA,GAASlG,WAAAA;AAAA,IACb,CAAC,UAAA,KAAuB;AACtB,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EAAG;AACjC,QAAA,QAAA,GAAW,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,UAAU,CAAA;AAAA,MACpD,WAAW,QAAA,EAAU;AACnB,QAAA,QAAA,GAAW,CAAC,GAAG,QAAA,EAAU,UAAU,CAAA;AAAA,MACrC,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,CAAC,UAAU,CAAA;AAAA,MACxB;AACA,MAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,QAAQ,CAAA;AAClD,MAAA,aAAA,GAAgB,QAAA,GAAW,QAAA,GAAY,QAAA,CAAS,CAAC,KAAK,EAAG,CAAA;AAAA,IAC3D,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,UAAU,aAAa;AAAA,GAC1D;AAEA,EAAA,uBACEjB,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,eAAA;AAAA,QACA,oBAAoB,OAAO,CAAA,CAAA;AAAA,QAC3B,iBAAiB,IAAI,CAAA,CAAA;AAAA,QACrB;AAAA,OACF;AAAA,MACA,iBAAe,QAAA,IAAY,MAAA;AAAA,MAE1B,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAC3C,QAAA,MAAM,UAAA,GAAa,YAAY,IAAA,CAAK,QAAA;AACpC,QAAA,uBACEK,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,gBAAA;AAAA,YACV,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,YAC9B,iBAAe,UAAA,IAAc,MAAA;AAAA,YAE7B,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,kBAAA;AAAA,kBACV,eAAA,EAAe,MAAA;AAAA,kBACf,eAAA,EAAe,CAAA,iBAAA,EAAoB,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,kBAC7C,QAAA,EAAU,UAAA;AAAA,kBACV,OAAA,EAAS,MAAM,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,kBAEhC,QAAA,EAAA;AAAA,oCAAAL,GAAAA,CAACsD,cAAA,EAAa,SAAA,EAAU,oBAAmB,IAAA,EAAM,EAAA,EAAI,eAAW,IAAA,EAAC,CAAA;AAAA,oCACjEtD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,eAAK,KAAA,EAAM,CAAA;AAAA,oBAC5C,IAAA,CAAK,UAAU,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM;AAAA;AAAA;AAAA,eAC5E;AAAA,cACC,0BACCA,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,CAAA,iBAAA,EAAoB,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,kBAClC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,kBAAA;AAAA,kBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA,WAAA;AAAA,UAxBG,IAAA,CAAK;AAAA,SA0BZ;AAAA,MAEJ,CAAC;AAAA;AAAA,GACC;AAER;AC/EO,SAASoH,KAAAA,CAAkB;AAAA,EAChC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,IAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,UAAU,KAAA,IAAS,QAAA;AAEzB,EAAA,MAAM,SAAoB,MAAM;AAC9B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBAAOpH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAe,QAAA,EAAA,eAAA,EAAQ,CAAA;AAAA,IAC/C;AACA,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,QAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA,KAAA,oBAASA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,OAAA,EAAQ,QAAA,EAAA,SAAA,EAAO,CAAA,EAC3C,CAAA;AAAA,MAEJ;AACA,MAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AACxB,MAAA,OAAO,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AACjC,QAAA,MAAM,IAAA,GAAO,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA;AAC/B,QAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAU,WAAA,EACnB,kBADM,CAET,CAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,IACH;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,GAAG;AAEH,EAAA,MAAM,MAAA,GAAS,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,GAAO,CAAA;AAElD,EAAA,uBACEK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,aAAa,IAAI,CAAA,CAAA;AAAA,QACjB,MAAA,IAAU,WAAA;AAAA,QACV;AAAA,OACF;AAAA,MACA,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,cAAY,OAAA,IAAW,MAAA;AAAA,MACvB,WAAA,EAAW,SAAS,IAAA,GAAO,MAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,0BAAaL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC1D,WAAW,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAe,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAC7D,MAAA,mBACCA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAA,KAAA,EAAM,CAAA,mBAElDA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,cAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAEnC,WAAW,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAe,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,GAChE;AAEJ;AC5EO,SAAS,KAAA,CAAM;AAAA,EACpB,GAAA;AAAA,EACA,GAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,WAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,GAAA,GAAM,OAAA;AAAA,EACN,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIc,QAAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,UAAA,GAA8C,CAAC,KAAA,KAAU;AAC7D,IAAA,SAAA,CAAU,QAAQ,CAAA;AAClB,IAAA,MAAA,GAAS,KAAK,CAAA;AAAA,EAChB,CAAA;AACA,EAAA,MAAM,WAAA,GAAgD,CAAC,KAAA,KAAU;AAC/D,IAAA,SAAA,CAAU,OAAO,CAAA;AACjB,IAAA,OAAA,GAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAgD,CAAC,KAAA,KAAU;AAC/D,IAAA,OAAA,GAAU,KAAK,CAAA;AACf,IAAA,IAAI,OAAA,IAAW,WAAW,QAAA,EAAU;AAClC,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,QAAQG,WAAAA,CAAY,MAAM,QAAQ,KAAK,CAAA,EAAG,EAAE,CAAA;AAElD,EAAAU,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAyB;AACtC,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU,KAAA,EAAM;AAAA,IACpC,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,KAAK,CAAA;AACxC,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,KAAK,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAEhB,EAAA,MAAM,YAAA,GAAe,MAAA,KAAW,OAAA,IAAW,QAAA,KAAa,MAAA;AACxD,EAAA,MAAM,eAAA,GAAkB,MAAA,KAAW,SAAA,IAAa,WAAA,KAAgB,MAAA;AAEhE,EAAA,uBACEtB,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAH,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,QACrC,cAAA,EAAc,UAAU,MAAA,GAAS,OAAA;AAAA,QACjC,aAAA,EAAa,MAAA;AAAA,QACb,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,eAAA,mBAAkBL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,uBAAY,CAAA,GAAU,IAAA;AAAA,UAC7E,YAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAkB,QAAA,EAAA,QAAA,EAAS,oBAE3CA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,GAAA;AAAA,cACA,OAAA,EAAS,YAAA;AAAA,cACT,KAAA,EAAO,EAAE,SAAA,EAAW,GAAA,EAAI;AAAA,cACxB,MAAA,EAAQ,UAAA;AAAA,cACR,OAAA,EAAS,WAAA;AAAA,cACT,OAAA,EAAS,WAAA;AAAA,cACR,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,KAEJ;AAAA,IACC,uBACCK,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,uBAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,YAAA,EAAY,GAAA;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QAET,QAAA,EAAA;AAAA,0BAAAL,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,GAAA;AAAA,cACA,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA;AAAgB;AAAA,WAC5C;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,qBAAA;AAAA,cACV,YAAA,EAAW,eAAA;AAAA,cACX,OAAA,EAAS,KAAA;AAAA,cACV,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACvGO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,IAAA,GAAO,GAAA;AAAA,EACP,UAAA,GAAa,GAAA;AAAA,EACb,KAAA,GAAQ,cAAA;AAAA,EACR,OAAA,GAAU,aAAA;AAAA,EACV,IAAA;AAAA,EACA,QAAA,EAAA2D,SAAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,MAAA,GAASjC,QAAQ,MAAM;AAC3B,IAAA,IAAI;AACF,MAAA,MAAM,KAAK,EAAA,CAAG,MAAA,CAAO,OAAO,EAAE,oBAAA,EAAsB,YAAY,CAAA;AAChE,MAAA,OAAO,EAAA,CAAG,OAAA;AAAA,IACZ,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AAEtB,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,uBACE1B,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,QACnC,YAAA,EAAW;AAAA;AAAA,KACb;AAAA,EAEJ;AAEA,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAK,GAAI,MAAA;AAChC,EAAA,MAAM,QAAoC,EAAC;AAC3C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,KAAK,CAAA,EAAG;AACnC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,KAAK,CAAA,EAAG;AACnC,MAAA,IAAI,IAAA,CAAK,CAAA,GAAI,OAAA,GAAU,CAAC,CAAA,EAAG;AACzB,QAAA,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY2D,SAAAA,IAAY,IAAA,CAAK,KAAA,CAAM,OAAO,IAAI,CAAA;AAEpD,EAAA,uBACEtD,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA;AAAA,YAClC,KAAA,EAAO,IAAA;AAAA,YACP,MAAA,EAAQ,IAAA;AAAA,YACR,cAAA,EAAe,YAAA;AAAA,YACf,IAAA,EAAK,KAAA;AAAA,YACL,YAAA,EAAY,KAAA;AAAA,YAEX,QAAA,EAAA;AAAA,cAAA,OAAA,KAAY,aAAA,mBACXL,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,SAAS,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,CAAA,GACpD,IAAA;AAAA,cACH,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,GAAG,IAAA,CAAK,CAAA;AAAA,kBACR,GAAG,IAAA,CAAK,CAAA;AAAA,kBACR,KAAA,EAAO,CAAA;AAAA,kBACP,MAAA,EAAQ,CAAA;AAAA,kBACR,IAAA,EAAM;AAAA,iBAAA;AAAA,gBALD,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAA;AAAA,eAO3B;AAAA;AAAA;AAAA,SACH;AAAA,QACC,IAAA,KAAS,yBACRA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,aAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,YAE5C,QAAA,EAAA;AAAA;AAAA,SACH,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;ACzEA,IAAM,8BAAA,GAAiCkB,cAAuB,KAAK,CAAA;AAe5D,SAAS,uBAAA,CAAwB;AAAA,EACtC,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiC;AAC/B,EAAA,uBACElB,GAAAA,CAAkB,gBAAA,CAAA,QAAA,EAAjB,EAA2B,GAAG,IAAA,EAC7B,QAAA,kBAAAA,GAAAA,CAAC,8BAAA,CAA+B,QAAA,EAA/B,EAAwC,KAAA,EAAO,IAAA,EAC7C,UACH,CAAA,EACF,CAAA;AAEJ;AAKA,SAAS,gBAAgB,EAAE,SAAA,EAAW,aAAa,CAAA,EAAG,GAAG,MAAK,EAAyB;AACrF,EAAA,uBACEA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,UAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MACzC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAuBO,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,aAAA,GAAgB,GAAA;AAAA,EAChB,IAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,mBAAA,GAAsBmB,WAAW,8BAA8B,CAAA;AACrE,EAAA,IAAI,YAAY,MAAA,EAAW,uBAAOnB,GAAAA,CAAAQ,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AAM9C,EAAA,MAAM,uBACJH,IAAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,IAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,OAAA,EAAO,MAAE,QAAA,EAAS,CAAA;AAAA,wBAC5CA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,WAAY,QAAA,EAAA,OAAA,EAAQ;AAAA;AAAA;AAAA,GAC7C;AAEF,EAAA,IAAI,qBAAqB,OAAO,IAAA;AAChC,EAAA,uBACEA,GAAAA,CAAC,uBAAA,EAAA,EAAwB,aAAA,EACtB,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ;;;AC9GA,IAAM,OAAA,GAAsB;AAAA,EAC1B,MAAA,EAAQ,IAAA;AAAA,EACR,QAAA,EAAU;AACZ,CAAA;AAEA,IAAI,OAAA,GAAsB,EAAE,GAAG,OAAA,EAAQ;AACvC,IAAM,WAAA,uBAAkB,GAAA,EAA6B;AAE9C,SAAS,aAAA,GAA4B;AAC1C,EAAA,OAAO,OAAA;AACT;AAyBO,SAAS,oBACd,EAAA,EACY;AACZ,EAAA,WAAA,CAAY,IAAI,EAAE,CAAA;AAClB,EAAA,OAAO,MAAM;AACX,IAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AAAA,EACvB,CAAA;AACF;;;ACtBA,SAAS,cAAc,IAAA,EAA8B;AACnD,EAAA,OAAO,IAAA,EAAM,MAAA,IAAU,aAAA,EAAc,CAAE,MAAA;AACzC;AAEA,SAAS,gBAAgB,IAAA,EAA8B;AACrD,EAAA,OAAO,IAAA,EAAM,QAAA,IAAY,aAAA,EAAc,CAAE,QAAA;AAC3C;AAGA,SAAS,OAAO,KAAA,EAAuB;AACrC,EAAA,IAAI,KAAA,YAAiB,MAAM,OAAO,KAAA;AAClC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,IAAI,KAAK,KAAK,CAAA;AACpD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,IAAI,KAAK,KAAK,CAAA;AACpD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,YAAY,KAAA,EAAO;AACpE,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,OAAO,CAAA,CAAE,MAAA,CAAO,aAAA,EAAc,CAAE,QAAQ,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,IAAI,SAAA,CAAU,CAAA,kCAAA,EAAqC,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAC1E;AAGA,SAAS,gBAAyC,IAAA,EAAmD;AACnG,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,EAAC;AACnB,EAAA,MAAM,EAAE,MAAA,EAAQ,EAAA,EAAI,UAAU,EAAA,EAAI,GAAG,MAAK,GAAI,IAAA;AAC9C,EAAA,OAAO,IAAA;AACT;AAGO,SAAS,UAAA,CAAW,OAAiB,IAAA,EAAkC;AAC5E,EAAA,MAAM,MAAA,GAAS,cAAc,IAAI,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,EAAA,MAAM,QAAA,GAAuC;AAAA,IAC3C,SAAA,EAAW,QAAA;AAAA,IACX,GAAG,gBAAgB,IAAI,CAAA;AAAA,IACvB,QAAA,EAAU;AAAA,GACZ;AACA,EAAA,OAAO,IAAI,KAAK,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACvE;AAGO,SAAS,UAAA,CAAW,OAAiB,IAAA,EAAkC;AAC5E,EAAA,MAAM,MAAA,GAAS,cAAc,IAAI,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,EAAA,MAAM,QAAA,GAAuC;AAAA,IAC3C,SAAA,EAAW,OAAA;AAAA,IACX,GAAG,gBAAgB,IAAI,CAAA;AAAA,IACvB,QAAA,EAAU;AAAA,GACZ;AACA,EAAA,OAAO,IAAI,KAAK,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACvE;AAGO,SAAS,cAAA,CAAe,OAAiB,IAAA,EAAkC;AAChF,EAAA,MAAM,MAAA,GAAS,cAAc,IAAI,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,EAAA,MAAM,QAAA,GAAuC;AAAA,IAC3C,SAAA,EAAW,QAAA;AAAA,IACX,SAAA,EAAW,OAAA;AAAA,IACX,GAAG,gBAAgB,IAAI,CAAA;AAAA,IACvB,QAAA,EAAU;AAAA,GACZ;AACA,EAAA,OAAO,IAAI,KAAK,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACvE;AAGO,SAAS,YAAA,CAAa,OAAe,IAAA,EAAoC;AAC9E,EAAA,MAAM,MAAA,GAAS,cAAc,IAAI,CAAA;AACjC,EAAA,OAAO,IAAI,KAAK,YAAA,CAAa,MAAA,EAAQ,gBAAgB,IAAI,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAC1E;AAGO,SAAS,cAAA,CAAe,OAAe,IAAA,EAAqC;AACjF,EAAA,MAAM,MAAA,GAAS,cAAc,IAAI,CAAA;AACjC,EAAA,MAAM,QAAA,GAAqC;AAAA,IACzC,KAAA,EAAO,UAAA;AAAA,IACP,GAAG,gBAAgB,IAAI;AAAA,GACzB;AACA,EAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,QAAQ,QAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAC7D;;;ACvGA,IAAM,MAAA,GAAS,GAAA;AACf,IAAM,SAAS,EAAA,GAAK,MAAA;AACpB,IAAM,OAAO,EAAA,GAAK,MAAA;AAClB,IAAM,MAAM,EAAA,GAAK,IAAA;AACjB,IAAM,OAAO,CAAA,GAAI,GAAA;AACjB,IAAM,QAAQ,EAAA,GAAK,GAAA;AACnB,IAAM,OAAO,GAAA,GAAM,GAAA;AAEnB,SAAS,KAAK,KAAA,EAAyB;AACrC,EAAA,IAAI,KAAA,YAAiB,IAAA,EAAM,OAAO,KAAA,CAAM,OAAA,EAAQ;AAChD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU,OAAO,IAAI,IAAA,CAAK,KAAK,EAAE,OAAA,EAAQ;AAC9D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,YAAY,KAAA,EAAO;AACpE,IAAA,OAAO,MAAM,MAAA,CAAO,aAAA,EAAc,CAAE,QAAQ,EAAE,OAAA,EAAQ;AAAA,EACxD;AACA,EAAA,MAAM,IAAI,SAAA,CAAU,CAAA,kCAAA,EAAqC,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAC1E;AASO,SAAS,cAAA,CAAe,KAAA,EAAiB,IAAA,GAAwB,EAAC,EAAW;AAClF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,aAAA,EAAc,CAAE,MAAA;AAC9C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,YAAe,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,OAAA,EAAQ,GAAK,IAAA,CAAK,GAAA,IAAO,IAAA,CAAK,GAAA,EAAI;AACpF,EAAA,MAAM,OAAA,GAAU,KAAK,KAAK,CAAA;AAC1B,EAAA,MAAM,SAAS,OAAA,GAAU,KAAA;AACzB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAE3B,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,IAAA,IAAA,GAAO,QAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,MAAM,CAAA;AAAA,EACrC,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,IAAA,IAAA,GAAO,QAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,MAAM,CAAA;AAAA,EACrC,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,IAAA,IAAA,GAAO,MAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,IAAI,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,IAAA,IAAA,GAAO,KAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAG,CAAA;AAAA,EAClC,CAAA,MAAA,IAAW,MAAM,KAAA,EAAO;AACtB,IAAA,IAAA,GAAO,MAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,IAAI,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AACrB,IAAA,IAAA,GAAO,OAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,KAAK,CAAA;AAAA,EACpC,CAAA,MAAO;AACL,IAAA,IAAA,GAAO,MAAA;AACP,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,IAAI,CAAA;AAAA,EACnC;AAEA,EAAA,OAAO,IAAI,IAAA,CAAK,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IACzC,OAAA,EAAS,KAAK,OAAA,IAAW,MAAA;AAAA,IACzB,KAAA,EAAO,KAAK,KAAA,IAAS;AAAA,GACtB,CAAA,CAAE,MAAA,CAAO,MAAA,EAAQ,IAAI,CAAA;AACxB;;;AC3CO,SAAS,aAAA,GAA4B;AAK1C,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAS,GAAI,oBAAA;AAAA,IAC3B,mBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO0B,OAAAA;AAAA,IACL,OAAO;AAAA,MACL,MAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,EAAO,IAAA,KAAS,UAAA,CAAa,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,MAC9E,UAAA,EAAY,CAAC,KAAA,EAAO,IAAA,KAAS,UAAA,CAAa,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,MAC9E,cAAA,EAAgB,CAAC,KAAA,EAAO,IAAA,KACtB,cAAA,CAAiB,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,MACvD,cAAA,EAAgB,CAAC,KAAA,EAAO,IAAA,KAAS,cAAA,CAAiB,OAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,MAC5E,YAAA,EAAc,CAAC,KAAA,EAAO,IAAA,KAAS,YAAA,CAAe,OAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,MACxE,cAAA,EAAgB,CAAC,KAAA,EAAO,IAAA,KACtB,cAAA,CAAiB,OAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ;AAAA,KAC/C,CAAA;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,GACnB;AACF;ACwDA,SAAS,WAAW,KAAA,EAAwC;AAC1D,EAAA,IAAI,KAAA,YAAiB,MAAM,OAAO,IAAA;AAClC,EAAA,IACE,OAAO,KAAA,KAAU,QAAA,IACjB,KAAA,KAAU,IAAA,IACV,YAAY,KAAA,IACZ,OAAQ,KAAA,CAA8B,MAAA,KAAW,UAAA,EACjD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAKA,SAAS,cAAA,CACP,KAAA,EACA,MAAA,EACA,GAAA,EACW;AACX,EAAA,IAAI,CAAC,UAAA,CAAW,KAAK,CAAA,EAAG,OAAO,KAAA;AAC/B,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA;AACH,MAAA,OAAO,GAAA,CAAI,eAAe,KAAK,CAAA;AAAA,IACjC,KAAK,MAAA;AACH,MAAA,OAAO,GAAA,CAAI,WAAW,KAAK,CAAA;AAAA,IAC7B,KAAK,MAAA;AACH,MAAA,OAAO,GAAA,CAAI,WAAW,KAAK,CAAA;AAAA,IAC7B,KAAK,UAAA;AAAA,IACL;AACE,MAAA,OAAO,GAAA,CAAI,eAAe,KAAK,CAAA;AAAA;AAErC;AAKA,SAAS,UAAA,CAAW,QAAuB,SAAA,EAAmB;AAC5D,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,WAAA;AACH,MAAA,OAAO,WAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,aAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL;AACE,MAAA,OAAO,EAAA;AAAA;AAEb;AAEA,SAAS,aAAA,CACP,IAAA,EACA,OAAA,EACA,UAAA,EACA,GAAA,EACW;AACX,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AACjC,EAAA,MAAM,IAAA,GAAO,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,YAAY,GAAG,CAAA;AAEtD,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,uBACErB,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,KAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAK,OAAA,IAAW,SAAA;AAAA,UAChB,KAAK,OAAA,IAAW,SAAA;AAAA,UAChB,IAAA,CAAK;AAAA,SACP;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAQ,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,0BAC7BA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAO,eAAW,IAAA,EAAC,CAAA;AAAA,0BAClCK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,KAAA,KAAU,0BAAaL,GAAAA,CAAC,SAAI,SAAA,EAAU,GAAA,EAAK,eAAK,KAAA,EAAM,CAAA;AAAA,YAC3D,IAAA,CAAK,gBAAgB,MAAA,oBACpBA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,GAAA,EAAK,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA;AAAA,YAEtC,IAAA,CAAK;AAAA,WAAA,EACR;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,uBACEK,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,MAAA,EAAQ,IAAA,CAAK,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA;AAAA,sBACNA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,GAAA,EACZ,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,UAAU,MAAA,oBAAaL,GAAAA,CAAC,GAAA,EAAA,EAAG,eAAK,KAAA,EAAM,CAAA;AAAA,UAC3C,SAAS,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAM,QAAA,EAAA,IAAA,EAAK;AAAA,SAAA,EACpD,CAAA;AAAA,QACC,IAAA,CAAK,gBAAgB,MAAA,oBACpBA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,GAAA,EAAK,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA;AAAA,QAEtC,IAAA,CAAK;AAAA,OAAA,EACR;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACEK,IAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,SAAA;AAAA,QACA,GAAA;AAAA,QACA,KAAK,OAAA,IAAW,SAAA;AAAA,QAChB,KAAK,OAAA,IAAW,SAAA;AAAA,QAChB,IAAA,CAAK;AAAA,OACP;AAAA,MAEE,QAAA,EAAA;AAAA,QAAA,CAAA,IAAA,CAAK,KAAA,KAAU,UAAa,IAAA,KAAS,MAAA,qBACrCA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,KAAA,EACZ,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,UAAU,MAAA,oBAAaL,GAAAA,CAAC,MAAA,EAAA,EAAM,eAAK,KAAA,EAAM,CAAA;AAAA,UAC9C,SAAS,MAAA,oBAAaA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAM,QAAA,EAAA,IAAA,EAAK;AAAA,SAAA,EACpD,CAAA;AAAA,QAED,IAAA,CAAK,gBAAgB,MAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EAAO,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA;AAAA,QACzE,IAAA,CAAK;AAAA;AAAA;AAAA,GACR;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,UAAU,OAAA,GAAU,KAAA,CAAM,KAAA,EAAM,CAAE,SAAQ,GAAI,KAAA;AACpD,EAAA,MAAM,MAAM,aAAA,EAAc;AAG1B,EAAA,MAAM,eAAA,GACJ,UAAA,KAAe,OAAA,KAAY,MAAA,GAAS,UAAA,GAAa,UAAA,CAAA;AAEnD,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AACpC,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,IAAO,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,UAAA,GACT,UAAA,CAAW,IAAA,EAAM,OAAA,EAAS,CAAC,CAAA,GAC3B,aAAA,CAAc,IAAA,EAAM,OAAA,EAAS,eAAA,EAAiB,GAAG,CAAA;AAErD,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAkB,QAAA,EAAA,IAAA,EAAA,EAAN,GAAW,CAAA;AAAA,EACjC,CAAC,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,EAAA;AAAA,IACjB,YAAY,MAAA,IAAU,SAAA;AAAA,IACtB,YAAY,WAAA,IAAe,OAAA;AAAA,IAC3B,YAAY,MAAA,IAAU,SAAA;AAAA;AAAA;AAAA,IAGtB,CAAC,SAAA,IAAa,OAAA,KAAY,MAAA,IAAU,iBAAA;AAAA,IACpC;AAAA,GACF;AAEA,EAAA,OAAO,OAAA,KAAY,MAAA,mBACjBA,GAAAA,CAAC,QAAG,SAAA,EAAW,UAAA,EAAa,QAAA,EAAA,IAAA,EAAK,CAAA,mBAEjCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAa,QAAA,EAAA,IAAA,EAAK,CAAA;AAEtC;AAMA,SAAS,MAAA,CAAO,EAAE,QAAA,EAAS,EAAuC;AAChE,EAAA,uBAAOA,GAAAA,CAAAQ,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AACrB;ACrNA,SAAS,YAAY,GAAA,EAA8C;AACjE,EAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,OAAO,EAAC;AAC/B,EAAA,OAAO,KAAA,CAAM,QAAQ,GAAG,CAAA,GAAI,MAAM,GAAA,GAAM,CAAC,GAAG,CAAA,GAAI,EAAC;AACnD;AAWA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAQ,MAAA,EAAQ,YAAW,EAA4B;AAChG,EAAA,MAAM,cAAc,CAAC,CAAC,KAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,UAAU,CAAA,GAAI,KAAK,CAAC,GAAG,MAAA,EAAQ,CAAC,MAAM,CAAA;AAC1D,EAAA,uBACEH,IAAAA;AAAA,IAACgH,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,WAAA;AAAA,MACV,IAAI,IAAA,CAAK,GAAA;AAAA,MACT,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,MAC5B,YAAY,IAAA,CAAK,QAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,wBAAArH,GAAAA,CAAC,mBACE,QAAA,EAAA,CAAC,EAAE,eAAe,UAAA,EAAY,UAAA,EAAY,UAAA,EAAY,KAAA,EAAM,KAAM;AACjE,UAAA,MAAM,UAAU,UAAA,GAAa;AAAA,YAC3B,IAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA,EAAa,aAAA;AAAA,YACb;AAAA,WACD,CAAA,oBACCK,IAAAA,CAAAG,UAAA,EACG,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,IAAA,KAAS,MAAA,oBACbR,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EAAY,aAAA,EAAW,IAAA,EACpC,QAAA,EAAA,IAAA,CAAK,IAAA,EACR,CAAA;AAAA,4BAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAA,EAAc,eAAK,KAAA,EAAM;AAAA,WAAA,EAC3C,CAAA;AAGF,UAAA,uBACEK,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAAH,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,eAAW,IAAA,EACtC,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,GAAA,CAAI,CAAC,SAAA,EAAW,KAAA,qBACtBL,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,YAAA;AAAA,kBACV,mBAAA,EAAmB,YAAY,MAAA,GAAS;AAAA,iBAAA;AAAA,gBAFnC;AAAA,eAIR,CAAA;AAAA,cACA,KAAA,GAAQ,qBACPA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,8BAAA;AAAA,kBACV,WAAA,EAAW,SAAS,MAAA,GAAS;AAAA;AAAA;AAC/B,aAAA,EAEJ,CAAA;AAAA,YACC,aAAA,mBACCA,GAAAA,CAACsH,QAAA,EAAA,EAAW,IAAA,EAAK,WAAU,SAAA,EAAU,aAAA,EACnC,QAAA,kBAAAtH,GAAAA,CAACsD,YAAAA,EAAA,EAAa,eAAW,IAAA,EAAC,SAAA,EAAU,kBAAA,EAAmB,CAAA,EACzD,CAAA,mBAEAtD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,YAE3C,SAAA,mBACCA,GAAAA,CAACuH,UAAA,EAAA,EAAa,IAAA,EAAK,WAAA,EAAY,SAAA,EAAU,eAAA,EAAgB,CAAA,mBAEzDvH,GAAAA,CAAC,kBAAA,EAAA,EAAmB,WAAU,gBAAA,EAAiB,CAAA;AAAA,4BAEjDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAC9C,CAAA;AAAA,QAEJ,CAAA,EACF,CAAA;AAAA,QACC,cACG,IAAA,CAAK,QAAA,CAAU,IAAI,CAAC,KAAA,EAAO,0BACzBA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,KAAA;AAAA,YACN,SAAA;AAAA,YACA,OAAO,KAAA,GAAQ,CAAA;AAAA,YACf,MAAA,EAAQ,WAAA;AAAA,YACR,MAAA,EAAQ,KAAA,KAAU,IAAA,CAAK,QAAA,CAAU,MAAA,GAAS,CAAA;AAAA,YAC1C;AAAA,WAAA;AAAA,UANK,KAAA,CAAM;AAAA,SAQd,CAAA,GACD;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,OAAmB,SAAA,EAAkD;AACxF,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,KAAsB;AAClC,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,UAAU,IAAI,CAAA,EAAG,GAAA,CAAI,IAAA,CAAK,KAAK,GAAG,CAAA;AACtC,MAAA,IAAI,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAAA,IACvC;AAAA,EACF,CAAA;AACA,EAAA,IAAA,CAAK,KAAK,CAAA;AACV,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kBAAkB,IAAA,EAAuC;AAChE,EAAA,IAAI,IAAA,KAAS,KAAA,EAAO,OAAO,EAAC;AAC5B,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AAChC;AAEO,IAAM,IAAA,GAAOM,UAAAA,CAAsC,SAASkH,KAAAA,CACjE;AAAA,EACE,QAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,UAAU,QAAA,IAAY,SAAA;AAC5B,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAI1G,QAAAA,CAAmB,WAAA,CAAY,YAAY,CAAC,CAAA;AAC5E,EAAA,MAAM,YAAA,GAAe,YAAA,GAAe,WAAA,CAAY,KAAK,CAAA,GAAI,QAAA;AAEzD,EAAA,MAAM,YAAA,GAAeY,OAAAA;AAAA,IACnB,MAAM,WAAA,CAAY,QAAA,EAAU,CAAC,IAAA,KAAS,IAAA,CAAK,aAAa,IAAI,CAAA;AAAA,IAC5D,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,cAAA,GAAiBA,OAAAA;AAAA,IACrB,MAAM,IAAI,GAAA,CAAI,WAAA,CAAY,QAAA,EAAU,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,KAAe,KAAK,CAAC,CAAA;AAAA,IACxE,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,IAAA,KAAoB;AACjD,IAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,KAAQ,cAAA,CAAe,GAAA,CAAI,GAAG,CAAC,CAAA;AAC5E,IAAA,MAAM,YAAY,OAAA,GAAU,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,CAAA;AAClD,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,SAAS,CAAA;AACxC,IAAA,IAAI,OAAA,kBAAyB,SAAS,CAAA;AAAA,SACjC,aAAA,GAAgB,SAAA,CAAU,CAAC,CAAA,IAAK,EAAE,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,IAAA,KAAmB;AAC/C,IAAA,oBAAA,GAAuB,KAAA,CAAM,IAAA,CAAK,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,uBACE1B,GAAAA;AAAA,IAACyH,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAW,MAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC/B,gBAAA,EAAgB,WAAW,MAAA,GAAS,MAAA;AAAA,MACpC,cAAA,EAAc,OAAA;AAAA,MACd,aAAA,EAAe,UAAU,UAAA,GAAa,QAAA;AAAA,MACtC,iBAAA,EAAmB,YAAY,QAAA,GAAW,SAAA;AAAA,MAC1C,YAAA,EAAc,IAAI,GAAA,CAAI,YAAY,CAAA;AAAA,MAClC,iBAAA,EAAmB,qBAAA;AAAA,MACnB,YAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA,EAAqB,YAAA,KAAiB,MAAA,GAAY,mBAAA,GAAsB,MAAA;AAAA,MACxE,gBAAA,EAAkB,oBAAA;AAAA,MAEjB,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,EAAM,0BACnBzH,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UAEC,IAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA,EAAO,CAAA;AAAA,UACP,QAAQ,EAAC;AAAA,UACT,MAAA,EAAQ,KAAA,KAAU,QAAA,CAAS,MAAA,GAAS,CAAA;AAAA,UACpC;AAAA,SAAA;AAAA,QANK,IAAA,CAAK;AAAA,OAQb;AAAA;AAAA,GACH;AAEJ,CAAC;AC5ND,IAAM,cAAA,GAAuC;AAAA,EAC3C,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM;AACR,CAAA;AAyBA,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,aAAA,GAAgB,GAAA;AACtB,IAAM,uBAAA,GAA0B,GAAA;AAChC,IAAM,cAAA,GAAiB,CAAA;AAEvB,SAAS,cACP,MAAA,EACoB;AACpB,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAO,QAAA,CAAS,cAA2B,MAAM,CAAA;AAAA,EACnD;AACA,EAAA,OAAO,OAAO,OAAA,IAAW,IAAA;AAC3B;AAEA,SAAS,iBAAA,CACP,MACA,SAAA,EACiB;AACjB,EAAA,MAAM,SAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GAAc,OAAO,UAAA,GAAa,IAAA;AACtD,EAAA,MAAM,SAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GAAc,OAAO,WAAA,GAAc,GAAA;AAEvD,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,KAAA;AACH,MAAA,GAAA,GAAM,IAAA,CAAK,MAAM,uBAAA,GAA0B,WAAA;AAC3C,MAAA,IAAA,GAAO,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,IAAI,aAAA,GAAgB,CAAA;AACpD,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS,IAAI,uBAAA,GAA0B,CAAA;AAC7D,MAAA,IAAA,GAAO,KAAK,KAAA,GAAQ,WAAA;AACpB,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAA,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS,IAAI,uBAAA,GAA0B,CAAA;AAC7D,MAAA,IAAA,GAAO,IAAA,CAAK,OAAO,aAAA,GAAgB,WAAA;AACnC,MAAA;AAAA,IACF,KAAK,QAAA;AAAA,IACL;AACE,MAAA,GAAA,GAAM,KAAK,MAAA,GAAS,WAAA;AACpB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,IAAI,aAAA,GAAgB,CAAA;AACpD,MAAA;AAAA;AAIJ,EAAA,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,SAAA,GAAY,uBAAA,GAA0B,CAAA,EAAG,GAAG,CAAC,CAAA;AACxE,EAAA,IAAA,GAAO,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,SAAA,GAAY,aAAA,GAAgB,CAAA,EAAG,IAAI,CAAC,CAAA;AAChE,EAAA,OAAO,EAAE,KAAK,IAAA,EAAK;AACrB;AAEO,SAAS,IAAA,CAAK;AAAA,EACnB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,CAAA;AAAA,EACjB,eAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,mBAAmB,IAAA,KAAS,MAAA;AAClC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIc,SAAkB,WAAW,CAAA;AACrE,EAAA,MAAM,MAAA,GAAS,gBAAA,GAAmB,CAAC,CAAC,IAAA,GAAO,YAAA;AAE3C,EAAA,MAAM,mBAAmB,OAAA,KAAY,MAAA;AACrC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAiB,cAAc,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,mBACd,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAA,IAAW,CAAC,CAAC,CAAA,GACpD,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,YAAY,CAAC,CAAA;AAExD,EAAA,MAAM,OAAA,GAAUG,WAAAA;AAAA,IACd,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,gBAAA,EAAkB,eAAA,CAAgB,IAAI,CAAA;AAC3C,MAAA,YAAA,GAAe,IAAI,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,kBAAkB,YAAY;AAAA,GACjC;AAEA,EAAA,MAAM,OAAA,GAAUA,WAAAA;AAAA,IACd,CAAC,IAAA,KAAiB;AAChB,MAAA,IAAI,CAAC,gBAAA,EAAkB,eAAA,CAAgB,IAAI,CAAA;AAC3C,MAAA,eAAA,GAAkB,IAAI,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,kBAAkB,eAAe;AAAA,GACpC;AAEA,EAAA,MAAM,cAAA,GAAiBS,OAAAA;AAAA,IACrB,OAAO,EAAE,GAAG,gBAAgB,GAAI,MAAA,IAAU,EAAC,EAAG,CAAA;AAAA,IAC9C,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,IAAA,GAAO,MAAM,SAAS,CAAA;AAC5B,EAAA,MAAM,SAAA,GAA2B,MAAM,SAAA,IAAa,QAAA;AACpD,EAAA,MAAM,UAAU,SAAA,KAAc,CAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,SAAA,KAAc,KAAA,CAAM,MAAA,GAAS,CAAA;AAE5C,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIZ,SAAiC,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAyB,IAAI,CAAA;AACjE,EAAA,MAAM,MAAA,GAASqC,OAAsB,IAAI,CAAA;AACzC,EAAA,MAAM,cAAcuE,KAAAA,EAAM;AAC1B,EAAA,MAAM,SAAS,CAAA,UAAA,EAAa,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAEzD,EAAA,MAAM,SAAA,GAAYzG,YAAY,MAAM;AAClC,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,IAAA,EAAM;AACpB,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,KAAc,QAAA,IAAY,IAAA,CAAK,MAAA,IAAU,IAAA,EAAM;AACjD,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA;AACpC,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,GAAG,qBAAA,EAAsB;AACtC,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,MAAA,CAAO,iBAAA,CAAkB,IAAA,EAAM,SAAS,CAAC,CAAA;AAAA,EAC3C,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,IAAI,CAAC,CAAA;AAE5B,EAAAU,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,SAAA,EAAU;AACV,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,MAAA,CAAO,OAAA,IAAW,IAAA,EAAM,oBAAA,CAAqB,OAAO,OAAO,CAAA;AAC/D,MAAA,MAAA,CAAO,OAAA,GAAU,sBAAsB,SAAS,CAAA;AAAA,IAClD,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AAC1C,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACnD,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AAC7C,MAAA,IAAI,MAAA,CAAO,OAAA,IAAW,IAAA,EAAM,oBAAA,CAAqB,OAAO,OAAO,CAAA;AAAA,IACjE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAA;AAEtB,EAAA,MAAM,WAAA,GAAcV,YAAY,MAAM;AACpC,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA,EAAG,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAErB,EAAA,MAAM,UAAA,GAAaA,YAAY,MAAM;AACnC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,QAAA,IAAW;AACX,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,YAAY,CAAC,CAAA;AAAA,EACvB,GAAG,CAAC,MAAA,EAAQ,WAAW,OAAA,EAAS,OAAA,EAAS,QAAQ,CAAC,CAAA;AAElD,EAAA,MAAM,UAAA,GAAaA,YAAY,MAAM;AACnC,IAAA,IAAI,OAAA,EAAS;AACb,IAAA,OAAA,CAAQ,YAAY,CAAC,CAAA;AAAA,EACvB,CAAA,EAAG,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,CAAC,CAAA;AAEhC,EAAAU,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAyB;AACtC,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU,WAAA,EAAY;AAAA,IAC1C,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,KAAK,CAAA;AACxC,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,KAAK,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,MAAA,EAAQ,WAAW,CAAC,CAAA;AAExB,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,QAAQ,OAAO,QAAA,KAAa,aAAa,OAAO,IAAA;AAEhE,EAAA,MAAM,YAAA,GACJ,GAAA,KAAQ,IAAA,GACJ,EAAE,GAAA,EAAK,GAAA,CAAI,GAAA,EAAK,IAAA,EAAM,GAAA,CAAI,IAAA,EAAK,GAC9B,EAAC;AAER,EAAA,MAAM,cAAA,GACJ,eAAe,IAAA,GACX;AAAA,IACE,GAAA,EAAK,WAAW,GAAA,GAAM,cAAA;AAAA,IACtB,IAAA,EAAM,WAAW,IAAA,GAAO,cAAA;AAAA,IACxB,KAAA,EAAO,UAAA,CAAW,KAAA,GAAQ,cAAA,GAAiB,CAAA;AAAA,IAC3C,MAAA,EAAQ,UAAA,CAAW,MAAA,GAAS,cAAA,GAAiB;AAAA,GAC/C,GACA,IAAA;AAEN,EAAA,OAAO,YAAA;AAAA,oBACLtB,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,QACvC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,iBAAA,EAAgB,oBAAA;AAAA,QAEhB,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAY,aAAA,EAAW,IAAA,EAAC,SAAS,WAAA,EAC9C,QAAA,EAAA;AAAA,4BAAAL,IAAC,MAAA,EAAA,EACC,QAAA,kBAAAK,IAAAA,CAAC,MAAA,EAAA,EAAK,IAAI,MAAA,EACR,QAAA,EAAA;AAAA,8BAAAL,IAAC,MAAA,EAAA,EAAK,KAAA,EAAM,QAAO,MAAA,EAAO,MAAA,EAAO,MAAK,OAAA,EAAQ,CAAA;AAAA,cAC7C,cAAA,KAAmB,wBAClBA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,kBAAA;AAAA,kBACV,GAAG,cAAA,CAAe,IAAA;AAAA,kBAClB,GAAG,cAAA,CAAe,GAAA;AAAA,kBAClB,OAAO,cAAA,CAAe,KAAA;AAAA,kBACtB,QAAQ,cAAA,CAAe,MAAA;AAAA,kBACvB,EAAA,EAAI,CAAA;AAAA,kBACJ,EAAA,EAAI,CAAA;AAAA,kBACJ,IAAA,EAAK;AAAA;AAAA;AACP,aAAA,EAEJ,CAAA,EACF,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,iBAAA;AAAA,gBACV,KAAA,EAAM,MAAA;AAAA,gBACN,MAAA,EAAO,MAAA;AAAA,gBACP,IAAA,EAAM,QAAQ,MAAM,CAAA,CAAA;AAAA;AAAA;AACtB,WAAA,EACF,CAAA;AAAA,UACC,cAAA,KAAmB,wBAClBA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,gBAAA;AAAA,cACV,aAAA,EAAW,IAAA;AAAA,cACX,KAAA,EAAO;AAAA;AAAA,WACT;AAAA,0BAEFK,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,cAAA;AAAA,gBACA,QAAQ,IAAA,IAAQ;AAAA,eAClB;AAAA,cACA,KAAA,EAAO,YAAA;AAAA,cACP,gBAAA,EAAgB,SAAA;AAAA,cAEhB,QAAA,EAAA;AAAA,gCAAAL,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAqB,EAAA,EAAG,oBAAA,EACpC,eAAK,KAAA,EACR,CAAA;AAAA,gBACC,IAAA,CAAK,gBAAgB,MAAA,oBACpBA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA;AAAA,gCAEvDK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,kCAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,SAAA,GAAY,CAAA;AAAA,oBAAE,KAAA;AAAA,oBAAI,KAAA,CAAM;AAAA,mBAAA,EAC3B,CAAA;AAAA,kCACAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,oCAAAL,GAAAA,CAAC,UAAO,OAAA,EAAQ,OAAA,EAAQ,MAAK,OAAA,EAAQ,OAAA,EAAS,WAAA,EAC3C,QAAA,EAAA,cAAA,CAAe,IAAA,EAClB,CAAA;AAAA,oBACC,CAAC,OAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAS,UAAA,EAC/C,QAAA,EAAA,cAAA,CAAe,IAAA,EAClB,CAAA;AAAA,oCAEFA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAS,UAAA,EAC7C,QAAA,EAAA,MAAA,GAAS,cAAA,CAAe,MAAA,GAAS,eAAe,IAAA,EACnD;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF","file":"primitives.js","sourcesContent":["// cn — class-name merger. Standard shadcn utility: clsx merges values\n// and tailwind-merge resolves Tailwind class conflicts (e.g. last\n// `bg-*` wins). Every primitive in this package and every consumer\n// service imports cn from this single location to keep the dedupe\n// rules consistent.\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","// <Row> — 24-column responsive grid (Ant Design model).\n//\n// Pairs with <Col span={…} xs={…} sm={…} md={…} lg={…} xl={…} />.\n// Children Cols sum to ≤24 per breakpoint; extra Cols wrap.\n//\n// <Row gutter={16}>\n// <Col xs={24} md={8}>left</Col>\n// <Col xs={24} md={16}>right</Col>\n// </Row>\n//\n// `gutter` can be a single number (horizontal only), [h, v] tuple,\n// or per-breakpoint object `{ xs: 8, md: 16 }`. The Row sets the\n// negative margin so the rightmost Col aligns with the container\n// edge; Cols add the matching positive padding.\n//\n// Why not raw `grid-cols-*`: per rule 12 Clause 1 the framework owns\n// layout primitives. Service code never writes `grid-cols-[280px_1fr]`.\n\nimport { createContext, useContext, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\nexport type GutterValue = number | [number, number] | Partial<Record<Breakpoint, number>>;\n\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n\nexport type Justify = \"start\" | \"end\" | \"center\" | \"space-around\" | \"space-between\" | \"space-evenly\";\nexport type Align = \"top\" | \"middle\" | \"bottom\" | \"stretch\";\n\nexport interface RowProps extends Omit<ComponentProps<\"div\">, \"children\"> {\n /** Horizontal gap (px), or [horizontal, vertical], or per-breakpoint object. */\n gutter?: GutterValue;\n /** Flex justify on the cross axis. */\n justify?: Justify;\n /** Flex align on the main axis. */\n align?: Align;\n /** Wrap children when sum > 24 cols (default true). */\n wrap?: boolean;\n children?: ReactNode;\n}\n\ninterface RowCtx {\n gutter: [number, number];\n}\n\nconst Ctx = createContext<RowCtx>({ gutter: [0, 0] });\n\nexport function useRowGutter(): [number, number] {\n return useContext(Ctx).gutter;\n}\n\nconst JUSTIFY_CLASS: Record<Justify, string> = {\n start: \"justify-start\",\n end: \"justify-end\",\n center: \"justify-center\",\n \"space-around\": \"justify-around\",\n \"space-between\": \"justify-between\",\n \"space-evenly\": \"justify-evenly\",\n};\n\nconst ALIGN_CLASS: Record<Align, string> = {\n top: \"items-start\",\n middle: \"items-center\",\n bottom: \"items-end\",\n stretch: \"items-stretch\",\n};\n\n/**\n * Read a breakpoint min-width from the CSS token system (cardinal\n * rule 22 — no hardcoded breakpoint literals in components). Falls\n * back to Tailwind defaults if the token isn't set (e.g. when the\n * Storybook preview hasn't loaded theme.css yet).\n */\nfunction getBreakpointWidth(bp: Breakpoint): string {\n const FALLBACK: Record<Breakpoint, string> = {\n xs: \"0px\",\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n xxl: \"1536px\",\n };\n if (typeof window === \"undefined\") return FALLBACK[bp];\n const v = getComputedStyle(document.documentElement)\n .getPropertyValue(`--breakpoint-${bp}`)\n .trim();\n return v || FALLBACK[bp];\n}\n\nfunction normalizeGutter(g: GutterValue | undefined): [number, number] {\n if (g === undefined) return [0, 0];\n if (typeof g === \"number\") return [g, 0];\n if (Array.isArray(g)) return [g[0] ?? 0, g[1] ?? 0];\n // Per-breakpoint object — pick the widest matching at runtime via\n // window.matchMedia. Server / first-paint falls back to xs.\n if (typeof window === \"undefined\") return [g.xs ?? 0, 0];\n const order: Breakpoint[] = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\n for (const bp of order) {\n if (g[bp] !== undefined && window.matchMedia(`(min-width: ${getBreakpointWidth(bp)})`).matches) {\n return [g[bp] as number, 0];\n }\n }\n return [g.xs ?? 0, 0];\n}\n\nexport function Row({\n gutter,\n justify,\n align,\n wrap = true,\n className,\n style,\n children,\n ...rest\n}: RowProps) {\n const [h, v] = normalizeGutter(gutter);\n return (\n <Ctx.Provider value={{ gutter: [h, v] }}>\n <div\n className={cn(\n \"flex\",\n wrap ? \"flex-wrap\" : \"flex-nowrap\",\n justify && JUSTIFY_CLASS[justify],\n align && ALIGN_CLASS[align],\n className,\n )}\n style={{\n rowGap: v ? `${v}px` : undefined,\n marginLeft: h ? `-${h / 2}px` : undefined,\n marginRight: h ? `-${h / 2}px` : undefined,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n}\n","// <Col span={n} xs={n} sm={n} md={n} lg={n} xl={n} xxl={n}>\n//\n// 24-column grid cell — sibling of Row. The breakpoint-keyed props\n// emit a `flex-basis: ${(n/24)*100}%` at each min-width media query\n// using Tailwind v4 arbitrary properties. Defaults to filling the\n// available row (span 24, i.e. 100%).\n//\n// <Col xs={24} md={8}>side</Col>\n// <Col xs={24} md={16}>main</Col>\n\nimport type { ComponentProps, CSSProperties, ReactNode } from \"react\";\nimport { useRowGutter, type Breakpoint } from \"./Row\";\nimport { cn } from \"../cn\";\n\nconst SPAN_TO_PCT = (n: number) => (n / 24) * 100;\n\nexport interface ColProps extends ComponentProps<\"div\"> {\n /** Default span (1..24). 24 = full width. */\n span?: number;\n /** Offset by n columns (1..23). */\n offset?: number;\n /** Push by n columns (flex-order shift). */\n push?: number;\n /** Per-breakpoint span overrides. */\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n xxl?: number;\n /** Flex order on the main axis. */\n order?: number;\n /** When set, the Col grows/shrinks like `flex: <n>` (free width). */\n flex?: string | number;\n children?: ReactNode;\n}\n\nconst BP_WIDTHS: Record<Breakpoint, string> = {\n xs: \"0px\",\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n xxl: \"1536px\",\n};\n\nexport function Col({\n span = 24,\n offset = 0,\n push,\n xs,\n sm,\n md,\n lg,\n xl,\n xxl,\n order,\n flex,\n className,\n style,\n children,\n ...rest\n}: ColProps) {\n const [h] = useRowGutter();\n\n // Build inline media-query-aware styles. We use CSS custom properties\n // + Tailwind's arbitrary-property syntax — but to support all six\n // breakpoints cleanly, generate a per-instance <style> tag would be\n // overkill. Use only the largest set value at runtime via the same\n // matchMedia approach as Row's gutter resolution.\n const breakpoints: Partial<Record<Breakpoint, number>> = {\n xs,\n sm,\n md,\n lg,\n xl,\n xxl,\n };\n\n // SSR-safe initial: prefer xs over base `span`. Client useEffect not\n // needed because we re-evaluate on each render and the browser\n // matchMedia API works synchronously.\n let resolved = span;\n if (typeof window !== \"undefined\") {\n const order: Breakpoint[] = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\n for (const bp of order) {\n const v = breakpoints[bp];\n if (v !== undefined && window.matchMedia(`(min-width: ${BP_WIDTHS[bp]})`).matches) {\n resolved = v;\n break;\n }\n }\n } else if (xs !== undefined) {\n resolved = xs;\n }\n\n const merged: CSSProperties = {\n flexBasis: flex !== undefined ? undefined : `${SPAN_TO_PCT(resolved)}%`,\n maxWidth: flex !== undefined ? undefined : `${SPAN_TO_PCT(resolved)}%`,\n flex: typeof flex === \"number\" ? `${flex} ${flex} auto` : flex,\n paddingLeft: h ? `${h / 2}px` : undefined,\n paddingRight: h ? `${h / 2}px` : undefined,\n marginLeft: offset ? `${SPAN_TO_PCT(offset)}%` : undefined,\n order: order,\n ...style,\n };\n void push; // reserved — Ant supports push/pull; rarely used, add if needed\n\n return (\n <div className={cn(\"min-w-0\", className)} style={merged} {...rest}>\n {children}\n </div>\n );\n}\n","// <Flex> — flex container with prop-driven config (Ant Design model).\n//\n// <Flex gap=\"default\" vertical justify=\"space-between\" align=\"center\" wrap>\n//\n// Replaces `<div className=\"flex items-center gap-2 …\">` patterns.\n// Prop names mirror Ant Design exactly so the API is familiar to\n// anyone who knows AntD; values map onto CSS flex.\n\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\nimport type { SizeProp } from \"../../props\";\n\n/** Flex gap scale. Accepts the shared `SizeProp` vocabulary plus a raw\n * pixel number for one-off gaps. Renamed from Ant's `\"middle\"` →\n * `\"default\"` to match the framework-wide size axis. */\nexport type FlexGap = number | SizeProp;\nexport type FlexJustify =\n | \"start\"\n | \"end\"\n | \"center\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\";\nexport type FlexAlign = \"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\";\n\nconst GAP_TOKEN: Record<Exclude<FlexGap, number>, string> = {\n small: \"var(--spacing-2)\",\n default: \"var(--spacing-3)\",\n large: \"var(--spacing-4)\",\n};\n\nconst JUSTIFY_CLASS: Record<FlexJustify, string> = {\n start: \"justify-start\",\n end: \"justify-end\",\n center: \"justify-center\",\n \"space-between\": \"justify-between\",\n \"space-around\": \"justify-around\",\n \"space-evenly\": \"justify-evenly\",\n};\n\nconst ALIGN_CLASS: Record<FlexAlign, string> = {\n start: \"items-start\",\n end: \"items-end\",\n center: \"items-center\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n};\n\nexport interface FlexProps extends ComponentProps<\"div\"> {\n /** Direction — false / undefined = horizontal, true = vertical. */\n vertical?: boolean;\n /** Wrap mode. */\n wrap?: boolean | \"nowrap\" | \"wrap\" | \"wrap-reverse\";\n /** Gap between children. Token name or pixel number. */\n gap?: FlexGap;\n justify?: FlexJustify;\n align?: FlexAlign;\n /** flex value for the container itself (rare — usually parent sets it). */\n flex?: string | number;\n children?: ReactNode;\n}\n\nexport function Flex({\n vertical = false,\n wrap,\n gap,\n justify,\n align,\n flex,\n className,\n style,\n children,\n ...rest\n}: FlexProps) {\n const wrapClass =\n wrap === undefined || wrap === false || wrap === \"nowrap\"\n ? \"flex-nowrap\"\n : wrap === \"wrap-reverse\"\n ? \"flex-wrap-reverse\"\n : \"flex-wrap\";\n\n const gapPx =\n typeof gap === \"number\"\n ? `${gap}px`\n : gap !== undefined\n ? GAP_TOKEN[gap]\n : undefined;\n\n return (\n <div\n className={cn(\n \"flex\",\n vertical ? \"flex-col\" : \"flex-row\",\n wrapClass,\n justify && JUSTIFY_CLASS[justify],\n align && ALIGN_CLASS[align],\n className,\n )}\n style={{\n gap: gapPx,\n flex: typeof flex === \"number\" ? `${flex} ${flex} auto` : flex,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","// <Space> — inline spacing between children (Ant Design model).\n//\n// <Space size=\"default\">\n// <Button>One</Button>\n// <Button>Two</Button>\n// </Space>\n//\n// Distinct from Flex in intent: Space implies a tight inline group\n// (action bar, breadcrumb, tag row). Flex implies a layout container.\n// Both use the same underlying flex CSS — Space adds a `<Compact>`\n// variant later for borderless adjacency.\n\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\nimport type { SizeProp } from \"../../props\";\n\n/** Inline-spacing scale. Accepts the shared `SizeProp` vocabulary plus\n * a raw pixel number for one-off gaps. Renamed from Ant's `\"middle\"`\n * → `\"default\"` to match the framework-wide size axis. */\nexport type SpaceSize = number | SizeProp;\n\nconst SIZE_TOKEN: Record<Exclude<SpaceSize, number>, string> = {\n small: \"var(--spacing-1)\",\n default: \"var(--spacing-2)\",\n large: \"var(--spacing-3)\",\n};\n\nexport interface SpaceProps extends ComponentProps<\"div\"> {\n /** Gap between adjacent children. */\n size?: SpaceSize | [SpaceSize, SpaceSize];\n /** Vertical stack instead of horizontal row. */\n direction?: \"horizontal\" | \"vertical\";\n /** Allow wrapping when row overflows. */\n wrap?: boolean;\n /** Cross-axis alignment. */\n align?: \"start\" | \"end\" | \"center\" | \"baseline\";\n /** Separator rendered between siblings (e.g. a divider). */\n split?: ReactNode;\n children?: ReactNode;\n}\n\nfunction resolveSize(s: SpaceSize): string {\n return typeof s === \"number\" ? `${s}px` : SIZE_TOKEN[s];\n}\n\nconst ALIGN_CLASS: Record<NonNullable<SpaceProps[\"align\"]>, string> = {\n start: \"items-start\",\n end: \"items-end\",\n center: \"items-center\",\n baseline: \"items-baseline\",\n};\n\nexport function Space({\n size = \"small\",\n direction = \"horizontal\",\n wrap = false,\n align,\n split,\n className,\n style,\n children,\n ...rest\n}: SpaceProps) {\n const [colGap, rowGap] = Array.isArray(size) ? size : [size, size];\n\n // Render children with optional separators.\n const items: ReactNode[] = [];\n let i = 0;\n // We don't introspect children to filter out null; mirror Ant's behavior\n // of letting falsy children naturally render nothing.\n const arr = Array.isArray(children) ? children : [children];\n for (const child of arr) {\n if (i > 0 && split) {\n items.push(\n <span key={`sep-${i}`} aria-hidden=\"true\" className=\"text-muted-foreground\">\n {split}\n </span>,\n );\n }\n items.push(<span key={`item-${i}`}>{child}</span>);\n i++;\n }\n\n return (\n <div\n className={cn(\n \"inline-flex\",\n direction === \"vertical\" ? \"flex-col\" : \"flex-row\",\n wrap ? \"flex-wrap\" : \"flex-nowrap\",\n align && ALIGN_CLASS[align],\n className,\n )}\n style={{\n columnGap: resolveSize(colGap),\n rowGap: resolveSize(rowGap),\n ...style,\n }}\n {...rest}\n >\n {items}\n </div>\n );\n}\n","import type { ComponentProps, ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Badge — status pill / chip.\n *\n * Renders the canonical `.chip` class family from the dxs-kintai\n * design system (comp-badges.html). Two appearance modes per\n * SKILL.md:\n *\n * • `appearance=\"soft\"` (default) — translucent role tint. Use for\n * transient state — 申請中 (in review), draft, pending.\n * • `appearance=\"solid\"` — full role color. Use for terminal\n * state — 承認済 (approved), 却下 (rejected).\n * • `appearance=\"outline\"` — hairline border only.\n *\n * Variants map to semantic roles:\n *\n * - `success` — 若竹 task completed, healthy\n * - `warning` — 山吹 needs attention, not yet broken\n * - `info` — 群青 neutral state callout\n * - `error` — 茜 failed / blocked (emits `chip-destructive`)\n * - `attention`— 朱 pending, awaiting input (prefer over `error`\n * for non-destructive alerts per SKILL.md)\n * - `primary` — brand action\n * - `neutral` — grey default chrome (omitted variant suffix; base\n * `.chip` styling)\n * - `outline` — empty hairline only (rare; same as\n * `appearance=\"outline\"` with no role)\n *\n * @example\n * <Badge variant=\"success\" dot>Healthy</Badge> // soft (default)\n * <Badge variant=\"success\" appearance=\"solid\">承認済</Badge>\n * <Badge variant=\"destructive\" appearance=\"solid\">却下</Badge>\n * <Badge variant=\"attention\" dot>遅刻</Badge>\n */\nexport type BadgeVariant =\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"destructive\"\n | \"attention\"\n | \"neutral\"\n | \"outline\"\n\nexport type BadgeAppearance = \"soft\" | \"solid\" | \"outline\"\n\nexport interface BadgeProps extends ComponentProps<\"span\"> {\n variant?: BadgeVariant\n appearance?: BadgeAppearance\n /** When true renders a colored dot before the label. */\n dot?: boolean\n children?: ReactNode\n}\n\n// `<Badge variant>` → canonical chip-role class.\nconst VARIANT_CLASS: Record<BadgeVariant, string | null> = {\n primary: \"chip-primary\",\n success: \"chip-success\",\n warning: \"chip-warning\",\n info: \"chip-info\",\n destructive: \"chip-destructive\",\n attention: \"chip-attention\",\n // Neutral = base `.chip` (no role suffix).\n neutral: null,\n outline: \"chip-outline\",\n}\n\nexport function Badge({\n variant = \"neutral\",\n appearance = \"soft\",\n dot = true,\n className,\n children,\n ...rest\n}: BadgeProps) {\n const variantClass = VARIANT_CLASS[variant]\n const isOutline = variant === \"outline\" || appearance === \"outline\"\n\n return (\n <span\n className={cn(\n \"chip\",\n variantClass,\n appearance === \"soft\" && !isOutline && \"chip-soft\",\n className,\n )}\n {...rest}\n >\n {dot && <span className=\"dot\" aria-hidden />}\n {children}\n </span>\n )\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Button — canonical action primitive.\n *\n * 100% mapped to the dxs-kintai design canon\n * (`design-handoff/ui-system/dxs-kintai-design-system/project/preview/\n * comp-buttons.html`):\n *\n * Variants: primary · secondary · outline · ghost · destructive · link\n * Sizes: x-small · small · default · large\n *\n * Cardinal rules honoured:\n * §14 — shadcn / Radix recipe (Slot for asChild)\n * §21 — every axis (theme/accent/density/font-size)\n * §22 — every literal token-pinned (height = --density-element-*)\n * §23 — vocabulary (`size` + `variant` per docs/specs/04 §B)\n * §24 — mobile touch target handled without changing visual size\n *\n * Slot props (§N):\n * startContent — ReactNode rendered before children (left icon)\n * endContent — ReactNode rendered after children (right icon)\n *\n * When `asChild` is true, Radix Slot merges Button's classes onto\n * the caller's single child element. The slot props\n * (`startContent` / `endContent` / `loading` spinner) are then\n * INERT — the caller's element owns its content. Compose icons\n * inline inside the slotted element:\n *\n * <Button asChild>\n * <a href=\"/x\"><Icon /> Label</a> ← icon wired inline\n * </Button>\n *\n * <Button asChild startContent={<Icon />}>← `startContent` IGNORED\n * <a href=\"/x\">Label</a>\n * </Button>\n */\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\n\nexport type ButtonSize = \"x-small\" | \"small\" | \"default\" | \"large\";\n\nexport interface ButtonProps extends Omit<ComponentProps<\"button\">, \"size\"> {\n /** Visual treatment per design canon `.btn-<variant>`. */\n variant?: ButtonVariant;\n /** Dimensional scale per `--density-element-<size>` chain. */\n size?: ButtonSize;\n /** Stretch to fill parent's width (mobile form submit pattern). */\n block?: boolean;\n /** Show a spinner + disable interaction. */\n loading?: boolean;\n /** Icon slot rendered before the label. */\n startContent?: ReactNode;\n /** Icon slot rendered after the label. */\n endContent?: ReactNode;\n /** Radix Slot pattern — wrap a link / RouterLink without nesting. */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst VARIANT_CLASS: Record<ButtonVariant, string> = {\n primary: \"btn-primary\",\n secondary: \"btn-secondary\",\n outline: \"btn-outline\",\n ghost: \"btn-ghost\",\n destructive: \"btn-destructive\",\n link: \"btn-link\",\n};\n\nconst SIZE_CLASS: Record<ButtonSize, string> = {\n \"x-small\": \"btn-xs\",\n small: \"btn-sm\",\n default: \"\",\n large: \"btn-lg\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"primary\",\n size = \"default\",\n block,\n loading,\n startContent,\n endContent,\n disabled,\n asChild = false,\n className,\n type = \"button\",\n children,\n ...rest\n },\n ref,\n) {\n const Component = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n\n // Radix Slot requires exactly ONE React element child (it merges\n // props into that child). When `asChild` is true the caller's\n // slotted element OWNS the content — slots like `startContent` /\n // `endContent` / `loading spinner` are inert and must be wired\n // inline inside the caller's element. When `asChild` is false we\n // wrap the slot content + children with the standard composition.\n const content = asChild ? (\n children\n ) : (\n <>\n {loading ? <span className=\"btn-spinner\" aria-hidden /> : startContent}\n {children}\n {endContent}\n </>\n );\n\n return (\n <Component\n ref={ref as never}\n type={asChild ? undefined : type}\n data-loading={loading || undefined}\n disabled={asChild ? undefined : isDisabled}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n className={cn(\n \"btn\",\n VARIANT_CLASS[variant],\n SIZE_CLASS[size],\n block && \"btn-block\",\n loading && \"btn-loading\",\n className,\n )}\n {...rest}\n >\n {content}\n </Component>\n );\n});\n","import { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Card — surface container. 100% mapped to the dxs-kintai design canon\n * (`design-handoff/ui-system/dxs-kintai-design-system/project/preview/\n * comp-card.html`).\n *\n * One atom (`.card`, 1px border, 6px radius, `var(--card)` bg,\n * no shadow at rest) + four orthogonal prop axes:\n *\n * - `padding` — tight / default / cozy / none (12 / 16 / 20 / 0)\n * - `tone` — default / muted / outline-only\n * - `accent` — primary / success / warning / attention / info /\n * destructive / featured (3px left edge or full ring)\n * - `hoverable`\n *\n * Plus a `band` prop for the H11 color-strip variant (4px strip\n * above the header).\n *\n * Header shape auto-detects from the slot props:\n *\n * - `kicker` set → `.ch-kicker` (3-tier\n * column: kicker / title /\n * subtitle)\n * - `subtitle` set, no `kicker` → `.ch-stack` (2-tier\n * column: title /\n * subtitle)\n * - `meta` set, no `subtitle`/`kicker` → `.ch` row with meta\n * right-aligned\n * (margin-left: auto)\n * - just `title` → `.ch` row, title only\n *\n * `extra` always renders right-aligned at the end of the header row\n * (works with all three shapes). Used for action buttons + tags\n * (H4/H5/H7 patterns).\n *\n * For flush cards with internal sections (H1-H17 variants), use\n * `padding=\"none\"` plus `footer` / `actions` and normal body content.\n */\n\n// ─── Prop axes ─────────────────────────────────────────────────────\n\nexport type CardPadding = \"tight\" | \"default\" | \"cozy\" | \"none\";\nexport type CardTone = \"default\" | \"muted\" | \"outline-only\";\nexport type CardAccent =\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"info\"\n | \"destructive\"\n | \"featured\";\nexport type CardBand =\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"info\"\n | \"destructive\"\n | \"gradient\"\n | \"dotted\";\n\nexport interface CardProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n /** Card title — H1/H2/H3/H12 `<span class=\"t\">…</span>`. */\n title?: ReactNode;\n /** Sub-text stacked BELOW the title (H2 `.ch-stack .sub`). */\n subtitle?: ReactNode;\n /** Small uppercase label ABOVE the title (H12 `.ch-kicker .k`). */\n kicker?: ReactNode;\n /** Right-aligned secondary text (H3 `.ch .sub` with margin-left:auto). */\n meta?: ReactNode;\n /** Right-aligned action slot — buttons, tags, status indicators. */\n extra?: ReactNode;\n /** Color strip above the header (4px, semantic). */\n band?: CardBand;\n /** Footer slot rendered with top divider + muted secondary tint. */\n footer?: ReactNode;\n /** Right-aligned action bar footer — no divider tint, transparent bg. */\n actions?: ReactNode;\n /** Padding density. */\n padding?: CardPadding;\n /** Surface tone. */\n tone?: CardTone;\n /** Edge accent (3px left edge, or full --primary ring for `featured`). */\n accent?: CardAccent;\n /** Hover affordance — border + shadow lift. */\n hoverable?: boolean;\n}\n\nconst PADDING_CLASS: Record<CardPadding, string> = {\n tight: \"card-padding-tight\",\n default: \"\",\n cozy: \"card-padding-cozy\",\n none: \"card-padding-none\",\n};\n\nconst TONE_CLASS: Record<CardTone, string> = {\n default: \"\",\n muted: \"card-tone-muted\",\n \"outline-only\": \"card-tone-outline\",\n};\n\nconst ACCENT_CLASS: Record<CardAccent, string> = {\n primary: \"card-accent-primary\",\n success: \"card-accent-success\",\n warning: \"card-accent-warning\",\n attention: \"card-accent-attention\",\n info: \"card-accent-info\",\n destructive: \"card-accent-destructive\",\n featured: \"card-accent-featured\",\n};\n\nconst BAND_CLASS: Record<CardBand, string> = {\n primary: \"card-band-primary\",\n success: \"card-band-success\",\n warning: \"card-band-warning\",\n attention: \"card-band-attention\",\n info: \"card-band-info\",\n destructive: \"card-band-destructive\",\n gradient: \"card-band-gradient\",\n dotted: \"card-band-dotted\",\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n kicker,\n meta,\n extra,\n band,\n footer,\n actions,\n padding = \"default\",\n tone = \"default\",\n accent,\n hoverable,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const hasHeader =\n title !== undefined ||\n subtitle !== undefined ||\n kicker !== undefined ||\n meta !== undefined ||\n extra !== undefined;\n const flush = padding === \"none\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"card\",\n PADDING_CLASS[padding],\n TONE_CLASS[tone],\n accent && ACCENT_CLASS[accent],\n hoverable && \"card-hoverable\",\n className,\n )}\n {...rest}\n >\n {band && (\n <div className={cn(\"card-band\", BAND_CLASS[band])} aria-hidden />\n )}\n {hasHeader && (\n <HeaderSection\n title={title}\n subtitle={subtitle}\n kicker={kicker}\n meta={meta}\n extra={extra}\n block={flush}\n />\n )}\n {flush ? children : <div className=\"card-body\">{children}</div>}\n {footer !== undefined && (\n <FooterSection block={flush}>{footer}</FooterSection>\n )}\n {actions !== undefined && (\n <FooterSection block={flush} actions>\n {actions}\n </FooterSection>\n )}\n </div>\n );\n});\n\n// ─── Internal sections (for flush / padding=\"none\" cards) ──────────\n\ninterface HeaderSectionProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n title?: ReactNode;\n subtitle?: ReactNode;\n kicker?: ReactNode;\n meta?: ReactNode;\n extra?: ReactNode;\n /** When `true`, the header pads itself + draws a bottom divider —\n * the `.ch` / `.ch-stack` / `.ch-kicker` block used inside flush\n * cards. When `false` (default), the header is the same shape but\n * sits inside the parent card's padding (no extra divider). */\n block?: boolean;\n}\n\nfunction HeaderSection({\n title,\n subtitle,\n kicker,\n meta,\n extra,\n block = false,\n className,\n children,\n ...rest\n}: HeaderSectionProps) {\n // Header shape selector per design canon:\n // kicker present → `.ch-kicker` (3-tier column)\n // subtitle present, no kicker → `.ch-stack` (2-tier column)\n // else → `.ch` (row with optional meta-right)\n const shape: \"kicker\" | \"stack\" | \"row\" =\n kicker !== undefined ? \"kicker\" : subtitle !== undefined ? \"stack\" : \"row\";\n const shapeClass =\n shape === \"kicker\"\n ? \"card-header-kicker\"\n : shape === \"stack\"\n ? \"card-header-stack\"\n : \"card-header-row\";\n\n return (\n <div\n className={cn(shapeClass, block && \"card-header-block\", className)}\n {...rest}\n >\n {shape === \"kicker\" && (\n <>\n {kicker !== undefined && (\n <span className=\"card-kicker\">{kicker}</span>\n )}\n {title !== undefined && <h3 className=\"card-title\">{title}</h3>}\n {subtitle !== undefined && (\n <span className=\"card-subtitle\">{subtitle}</span>\n )}\n </>\n )}\n {shape === \"stack\" && (\n <>\n {title !== undefined && <h3 className=\"card-title\">{title}</h3>}\n {subtitle !== undefined && (\n <span className=\"card-subtitle\">{subtitle}</span>\n )}\n </>\n )}\n {shape === \"row\" && (\n <>\n {title !== undefined && <h3 className=\"card-title\">{title}</h3>}\n {meta !== undefined && <span className=\"card-meta\">{meta}</span>}\n </>\n )}\n {children}\n {extra !== undefined && (\n <span className=\"card-header-extra\">{extra}</span>\n )}\n </div>\n );\n}\n\ninterface FooterSectionProps extends ComponentProps<\"div\"> {\n /** Right-aligned action bar, transparent bg, no muted tint. */\n actions?: boolean;\n /** When `true`, the footer pads itself + draws a top divider — the\n * `.cf` block in flush cards. */\n block?: boolean;\n}\n\nfunction FooterSection({\n actions,\n block = false,\n className,\n ...rest\n}: FooterSectionProps) {\n return (\n <div\n className={cn(\n block ? \"card-footer-block\" : \"card-footer-inline\",\n actions && \"card-footer-actions\",\n className,\n )}\n {...rest}\n />\n );\n}\n","import {\n forwardRef,\n type ComponentProps,\n type CSSProperties,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Input — text input with affix slots that match the canonical\n * dxs-kintai `.input-wrap` shell.\n *\n * <Input prefix={<SearchIcon />} suffix={<EyeIcon />} />\n * <Input addonBefore=\"https://\" addonAfter=\".com\" />\n * <Input size=\"large\" status=\"error\" />\n *\n * When `prefix` / `suffix` is provided the input is wrapped in a\n * `.input-wrap` shell that owns the focus ring while the icon sits\n * inside the field. When `addonBefore` / `addonAfter` is provided the\n * input + addons form a connected group; the addons render inside the\n * same `.input-wrap` as canonical `.affix.pre` / `.affix.suf`.\n */\n\nexport type InputSize = \"small\" | \"default\" | \"large\";\n/**\n * Form-field validation state per cardinal rule 23 §B vocabulary\n * (`\"default\" | \"success\" | \"warning\" | \"error\"`). Drives the border\n * + ring + helper-text color via the semantic chain.\n */\nexport type InputStatus = \"default\" | \"success\" | \"warning\" | \"error\";\n\nexport interface InputProps\n extends Omit<ComponentProps<\"input\">, \"prefix\" | \"size\"> {\n prefix?: ReactNode;\n suffix?: ReactNode;\n addonBefore?: ReactNode;\n addonAfter?: ReactNode;\n size?: InputSize;\n status?: InputStatus;\n /** Padding for the inner input — usually auto-derived from prefix/suffix. */\n inputStyle?: CSSProperties;\n}\n\nconst SIZE_CLASS: Record<InputSize, string> = {\n small: \"input-size-small\",\n default: \"\",\n large: \"input-size-large\",\n};\n\nconst STATUS_CLASS: Record<InputStatus, string> = {\n default: \"\",\n success: \"input-status-success\",\n warning: \"input-status-warning\",\n error: \"input-status-error\",\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n size = \"default\",\n status = \"default\",\n className,\n inputStyle,\n type = \"text\",\n readOnly,\n ...rest\n },\n ref,\n) {\n const sizeClass = SIZE_CLASS[size];\n const statusClass = STATUS_CLASS[status];\n\n // Bare input — no decoration.\n if (!prefix && !suffix && !addonBefore && !addonAfter) {\n return (\n <input\n ref={ref}\n type={type}\n readOnly={readOnly}\n className={cn(\n \"input\",\n sizeClass,\n statusClass,\n readOnly && \"input-readonly\",\n className,\n )}\n style={inputStyle}\n {...rest}\n />\n );\n }\n\n // Affix + addon shell — single canonical `.input-wrap` with\n // `.affix.pre` / `.affix.suf` per dxs-kintai design system.\n return (\n <div\n className={cn(\n \"input-wrap\",\n sizeClass,\n statusClass,\n prefix !== undefined && \"input-has-prefix\",\n suffix !== undefined && \"input-has-suffix\",\n readOnly && \"input-readonly\",\n className,\n )}\n >\n {addonBefore !== undefined && (\n <span className=\"affix addon pre\">{addonBefore}</span>\n )}\n {prefix !== undefined && <span className=\"affix prefix pre\">{prefix}</span>}\n <input\n ref={ref}\n type={type}\n readOnly={readOnly}\n style={inputStyle}\n {...rest}\n />\n {suffix !== undefined && <span className=\"affix suffix suf\">{suffix}</span>}\n {addonAfter !== undefined && (\n <span className=\"affix addon suf\">{addonAfter}</span>\n )}\n </div>\n );\n});\n\n/**\n * Textarea — `rows`, `autoSize`, `showCount`, `maxLength`, `resize`,\n * `status`, `size`. Visual contract maps to `.input` from the canonical\n * dxs-kintai design system.\n *\n * <Textarea rows={5} resize=\"vertical\" />\n * <Textarea autoSize={{ minRows: 3, maxRows: 8 }} showCount maxLength={500} />\n */\n\nexport type TextareaResize = \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n size?: InputSize;\n status?: InputStatus;\n /** \"none\" by default — matches the canonical chrome. */\n resize?: TextareaResize;\n /** Auto-grow on content. `true` = grow indefinitely. */\n autoSize?: boolean | { minRows?: number; maxRows?: number };\n /** Show character count in the bottom-right. */\n showCount?: boolean;\n}\n\nconst RESIZE_STYLE: Record<TextareaResize, CSSProperties[\"resize\"]> = {\n none: \"none\",\n vertical: \"vertical\",\n horizontal: \"horizontal\",\n both: \"both\",\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(\n {\n size = \"default\",\n status = \"default\",\n resize = \"none\",\n autoSize,\n showCount,\n maxLength,\n className,\n style,\n value,\n defaultValue,\n readOnly,\n ...rest\n },\n ref,\n ) {\n const rows = typeof autoSize === \"object\" ? autoSize.minRows : rest.rows;\n const maxRows = typeof autoSize === \"object\" ? autoSize.maxRows : undefined;\n\n const mergedStyle: CSSProperties = {\n resize: RESIZE_STYLE[resize],\n ...style,\n };\n if (maxRows) {\n mergedStyle.maxHeight = `${maxRows * 1.5}em`;\n mergedStyle.overflowY = \"auto\";\n }\n\n // Pick controlled OR uncontrolled — passing both `value` and\n // `defaultValue` (even when one is undefined) trips React's\n // \"controlled ↔ uncontrolled transition\" warning.\n const valueProp =\n value !== undefined ? { value } : { defaultValue };\n\n const textareaEl = (\n <textarea\n ref={ref}\n rows={rows}\n maxLength={maxLength}\n {...valueProp}\n readOnly={readOnly}\n className={cn(\n \"input\",\n SIZE_CLASS[size],\n STATUS_CLASS[status],\n readOnly && \"input-readonly\",\n !showCount && className,\n )}\n style={mergedStyle}\n {...rest}\n />\n );\n\n if (!showCount) return textareaEl;\n\n const current =\n typeof value === \"string\"\n ? value.length\n : typeof defaultValue === \"string\"\n ? defaultValue.length\n : 0;\n const over = typeof maxLength === \"number\" && current > maxLength;\n const near =\n typeof maxLength === \"number\" && !over && current >= Math.floor(maxLength * 0.9);\n\n return (\n <div className={cn(\"textarea-with-count\", className)}>\n {textareaEl}\n <span className={cn(\"count\", near && \"warn\", over && \"over\")}>\n {maxLength ? `${current} / ${maxLength}` : current}\n </span>\n </div>\n );\n },\n);\n","import { Eye, EyeOff } from \"lucide-react\";\nimport { forwardRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../cn\";\nimport { Input, type InputProps } from \"./Input\";\n\n/**\n * InputPassword — Input subtype with show/hide toggle.\n *\n * Mirrors the canonical password reveal at `K:comp-inputs.html:184-201`:\n * a `<button class=\"pass-toggle\">` absolute-positioned at `right:6px`,\n * with an `Eye` / `EyeOff` icon flipping the underlying `<input>` type.\n *\n * Wraps `<Input>` so every base prop pass-through works (`size`,\n * `status`, `prefix`, `addonBefore`, etc.). Pair with `<Checklist>`\n * below to render password-strength rules.\n *\n * Controlled-or-uncontrolled reveal:\n * - omit `revealed` → internal state\n * - pass `revealed` + `onRevealChange` → fully controlled\n *\n * @example\n * <InputPassword placeholder=\"••••••••••\" />\n *\n * @example with strength meter slot\n * <Field>\n * <Field.Label required>パスワード</Field.Label>\n * <InputPassword strengthMeter={<Checklist items={…} />} />\n * </Field>\n */\n\nexport interface InputPasswordProps extends Omit<InputProps, \"type\"> {\n /** Controlled reveal state. */\n revealed?: boolean;\n /** Default reveal state when uncontrolled. */\n defaultRevealed?: boolean;\n onRevealChange?: (next: boolean) => void;\n /** Accessible label for the toggle button. Defaults to a translated string. */\n toggleLabels?: { show?: string; hide?: string };\n /** Slot rendered below the input — typically a `<Checklist>` of password rules. */\n strengthMeter?: ReactNode;\n}\n\nexport const InputPassword = forwardRef<HTMLInputElement, InputPasswordProps>(\n function InputPassword(\n {\n revealed: controlled,\n defaultRevealed = false,\n onRevealChange,\n toggleLabels,\n suffix,\n strengthMeter,\n className,\n ...rest\n },\n ref,\n ) {\n const [internal, setInternal] = useState(defaultRevealed);\n const revealed = controlled ?? internal;\n\n const toggle = () => {\n const next = !revealed;\n if (controlled === undefined) setInternal(next);\n onRevealChange?.(next);\n };\n\n const showLabel = toggleLabels?.show ?? \"Show password\";\n const hideLabel = toggleLabels?.hide ?? \"Hide password\";\n\n const toggleButton = (\n <button\n type=\"button\"\n className=\"input-pass-toggle\"\n onClick={toggle}\n aria-label={revealed ? hideLabel : showLabel}\n aria-pressed={revealed}\n tabIndex={-1}\n >\n {revealed ? <EyeOff size={14} /> : <Eye size={14} />}\n </button>\n );\n\n return (\n <>\n <Input\n ref={ref}\n type={revealed ? \"text\" : \"password\"}\n suffix={suffix ?? toggleButton}\n className={cn(className)}\n {...rest}\n />\n {strengthMeter}\n </>\n );\n },\n);\n","import { Search, X } from \"lucide-react\";\nimport { forwardRef, useCallback, useState } from \"react\";\nimport type { ChangeEvent, KeyboardEvent } from \"react\";\nimport { Input, type InputProps } from \"./Input\";\n\n/**\n * InputSearch — Input subtype with leading magnifier + optional clear-X.\n *\n * Mirrors the canonical search pattern used in `K:comp-pageheader.html`\n * and `K:comp-topbar.html`. Wraps `<Input>` so every base prop\n * pass-through works (`size`, `status`, etc.).\n *\n * Behaviour:\n * - Renders a leading `<Search>` icon as the `prefix` slot.\n * - Default `searchMode=\"submit\"` fires `onSearch` only from the\n * search button or Enter key. Use `searchMode=\"change\"` for local\n * in-memory filtering only.\n * - When `value` is non-empty and `allowClear` is true (default),\n * hides the custom suffix and renders a trailing `<X>` clear button that fires\n * `onChange({ target: { value: \"\" } })` and `onClear()`.\n *\n * Controlled-or-uncontrolled. Sets `type=\"search\"` for native semantics\n * (mobile keyboards, `<form>` reset behaviour).\n *\n * @example\n * <InputSearch placeholder=\"従業員を検索\" />\n *\n * @example controlled\n * <InputSearch\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * onClear={() => setQuery(\"\")}\n * />\n */\n\nexport interface InputSearchProps extends Omit<InputProps, \"type\" | \"prefix\"> {\n /** Show the trailing X clear button when value is non-empty. Default `true`. */\n allowClear?: boolean;\n /** Fired when the user clicks the clear button. */\n onClear?: () => void;\n /** Search execution mode. Default `submit` avoids request-per-keypress. */\n searchMode?: \"submit\" | \"change\";\n /** Fired when search should execute. */\n onSearch?: (value: string) => void;\n /** Custom leading icon — defaults to lucide `Search`. */\n searchIcon?: React.ReactNode;\n}\n\nexport const InputSearch = forwardRef<HTMLInputElement, InputSearchProps>(\n function InputSearch(\n {\n allowClear = true,\n onClear,\n onChange,\n onKeyDown,\n onSearch,\n searchMode = \"submit\",\n value: controlledValue,\n defaultValue,\n searchIcon,\n suffix,\n ...rest\n },\n ref,\n ) {\n const [internal, setInternal] = useState<string>(\n typeof defaultValue === \"string\" ? defaultValue : \"\",\n );\n const value =\n controlledValue !== undefined ? String(controlledValue) : internal;\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (controlledValue === undefined) setInternal(e.target.value);\n onChange?.(e);\n if (searchMode === \"change\") onSearch?.(e.target.value);\n },\n [controlledValue, onChange, onSearch, searchMode],\n );\n\n const submitSearch = useCallback(() => {\n onSearch?.(value);\n }, [onSearch, value]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || e.key !== \"Enter\" || e.nativeEvent.isComposing) return;\n submitSearch();\n },\n [onKeyDown, submitSearch],\n );\n\n const handleClear = useCallback(() => {\n if (controlledValue === undefined) setInternal(\"\");\n onClear?.();\n onSearch?.(\"\");\n // Synthesize a change event so consumer state stays in sync even\n // when `onChange` was passed but `onClear` was not.\n if (!onClear && onChange) {\n const synthetic = {\n target: { value: \"\" } as unknown as HTMLInputElement,\n currentTarget: { value: \"\" } as unknown as HTMLInputElement,\n } as unknown as ChangeEvent<HTMLInputElement>;\n onChange(synthetic);\n }\n }, [controlledValue, onChange, onClear, onSearch]);\n\n const searchButton = (\n <button\n type=\"button\"\n className=\"input-search-button\"\n onClick={submitSearch}\n aria-label=\"Search\"\n tabIndex={-1}\n >\n {searchIcon ?? <Search size={14} />}\n </button>\n );\n\n const clearButton =\n allowClear && value.length > 0 ? (\n <button\n type=\"button\"\n className=\"input-pass-toggle\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <X size={14} />\n </button>\n ) : undefined;\n const hintSuffix = value.length > 0 ? undefined : suffix;\n const suffixContent =\n clearButton !== undefined || hintSuffix !== undefined ? (\n <>\n {clearButton}\n {hintSuffix}\n </>\n ) : undefined;\n\n // Pick controlled OR uncontrolled — passing both `value` and\n // `defaultValue` to the inner <input> (even when one is undefined)\n // trips React's \"controlled ↔ uncontrolled\" warning.\n const valueProp =\n controlledValue !== undefined\n ? { value: controlledValue }\n : { defaultValue }\n return (\n <Input\n ref={ref}\n type=\"search\"\n {...valueProp}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n prefix={searchButton}\n suffix={suffixContent}\n {...rest}\n />\n );\n },\n);\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type FocusEvent,\n type KeyboardEvent,\n} from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../cn\";\nimport type { InputSize, InputStatus } from \"./Input\";\n\n/**\n * InputNumber — numeric input with optional ± step buttons and an\n * optional display formatter / parser pair.\n *\n * Vocabulary per cardinal rule 23 §B:\n * • `value` / `defaultValue` / `onValueChange` (Radix-style)\n * • `size`: `\"small\" | \"default\" | \"large\"` (shared with Input)\n * • `status`: `\"default\" | \"success\" | \"warning\" | \"error\"`\n *\n * NOT Ant-shaped: no `controls` / `formatter` / `parser`. The\n * display side is a single `format` callback; the inverse parse is\n * an optional `parse` callback (only needed when `format` produces\n * text the browser's `Number()` can no longer round-trip).\n *\n * DOM mirrors `.input` from `30-input.css` with two stacked step\n * buttons absolutely positioned inside the wrapper.\n */\n\nexport interface InputNumberProps {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n /** Increment applied by the ± buttons + arrow keys. Default 1. */\n step?: number;\n /** Round to this many decimal places when emitting / blurring. */\n precision?: number;\n size?: InputSize;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n /** Show +/− step buttons (default true). */\n showStepper?: boolean;\n /** Optional display formatter (e.g., `n => \\`¥\\${n.toLocaleString()}\\``). */\n format?: (value: number) => string;\n /** Optional parser (inverse of format). Defaults to stripping non-numeric chars. */\n parse?: (text: string) => number | null;\n className?: string;\n status?: InputStatus;\n /** Forwarded `name` for native form submission. */\n name?: string;\n /** Forwarded `id` for label binding. */\n id?: string;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n}\n\nconst SIZE_CLASS: Record<InputSize, string> = {\n small: \"input-size-small\",\n default: \"\",\n large: \"input-size-large\",\n};\n\nconst STATUS_CLASS: Record<InputStatus, string> = {\n default: \"\",\n success: \"input-status-success\",\n warning: \"input-status-warning\",\n error: \"input-status-error\",\n};\n\nfunction roundTo(value: number, precision?: number): number {\n if (precision === undefined || precision < 0) return value;\n const factor = 10 ** precision;\n return Math.round(value * factor) / factor;\n}\n\nfunction clamp(value: number, min?: number, max?: number): number {\n let out = value;\n if (typeof min === \"number\") out = Math.max(out, min);\n if (typeof max === \"number\") out = Math.min(out, max);\n return out;\n}\n\nfunction defaultParse(text: string): number | null {\n const cleaned = text.replace(/[^\\d.\\-eE+]/g, \"\");\n if (cleaned === \"\" || cleaned === \"-\" || cleaned === \".\") return null;\n const n = Number(cleaned);\n return Number.isNaN(n) ? null : n;\n}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n function InputNumber(\n {\n value,\n defaultValue,\n onValueChange,\n min,\n max,\n step = 1,\n precision,\n size = \"default\",\n disabled,\n readOnly,\n placeholder,\n showStepper = true,\n format,\n parse,\n className,\n status = \"default\",\n name,\n id,\n onBlur,\n onFocus,\n },\n ref,\n ) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number | null>(\n defaultValue ?? null,\n );\n const currentValue = isControlled ? value ?? null : internalValue;\n\n // Text shown in the input. When focused or the user is mid-typing,\n // we show the raw text; when blurred we display the `format` output.\n const [displayText, setDisplayText] = useState<string>(() =>\n currentValue === null || currentValue === undefined\n ? \"\"\n : format\n ? format(currentValue)\n : String(currentValue),\n );\n const [isFocused, setIsFocused] = useState(false);\n const lastEmittedRef = useRef<number | null>(currentValue);\n\n // Sync display when the controlled `value` changes from the outside\n // (and we are not the source of the change).\n useEffect(() => {\n if (isFocused) return;\n const next = currentValue;\n if (next === null || next === undefined) {\n setDisplayText(\"\");\n return;\n }\n setDisplayText(format ? format(next) : String(next));\n }, [currentValue, format, isFocused]);\n\n const emit = useCallback(\n (next: number | null) => {\n if (!isControlled) setInternalValue(next);\n if (lastEmittedRef.current !== next) {\n lastEmittedRef.current = next;\n onValueChange?.(next);\n }\n },\n [isControlled, onValueChange],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const raw = event.target.value;\n setDisplayText(raw);\n if (raw === \"\") {\n emit(null);\n return;\n }\n const parsed = (parse ?? defaultParse)(raw);\n if (parsed === null) return;\n emit(parsed);\n };\n\n const commit = useCallback(() => {\n if (currentValue === null || currentValue === undefined) {\n setDisplayText(\"\");\n return;\n }\n const clamped = clamp(roundTo(currentValue, precision), min, max);\n emit(clamped);\n setDisplayText(format ? format(clamped) : String(clamped));\n }, [currentValue, emit, format, max, min, precision]);\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n commit();\n onBlur?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n // Show raw numeric text on focus so users can edit cleanly.\n if (currentValue !== null && currentValue !== undefined) {\n setDisplayText(String(currentValue));\n }\n onFocus?.(event);\n };\n\n const stepBy = useCallback(\n (direction: 1 | -1) => {\n if (disabled || readOnly) return;\n const base =\n currentValue ?? (typeof min === \"number\" ? min : 0);\n const next = clamp(roundTo(base + direction * step, precision), min, max);\n emit(next);\n if (!isFocused) {\n setDisplayText(format ? format(next) : String(next));\n } else {\n setDisplayText(String(next));\n }\n },\n [currentValue, disabled, emit, format, isFocused, max, min, precision, readOnly, step],\n );\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n stepBy(1);\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n stepBy(-1);\n }\n };\n\n const sizeClass = SIZE_CLASS[size];\n const statusClass = STATUS_CLASS[status];\n\n const ariaProps = useMemo(\n () => ({\n role: \"spinbutton\" as const,\n \"aria-valuenow\": currentValue ?? undefined,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n }),\n [currentValue, min, max],\n );\n\n return (\n <span\n className={cn(\n \"input-number-wrap\",\n sizeClass,\n statusClass,\n className,\n )}\n >\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n name={name}\n id={id}\n className={cn(\n \"input\",\n \"input-number\",\n sizeClass,\n statusClass,\n readOnly && \"input-readonly\",\n !showStepper && \"input-number-no-stepper\",\n )}\n value={displayText}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...ariaProps}\n />\n {showStepper && (\n <span className=\"input-number-stepper\" aria-hidden>\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"input-number-step\"\n disabled={disabled || readOnly}\n onMouseDown={(e) => {\n e.preventDefault();\n stepBy(1);\n }}\n >\n <ChevronUp size={12} aria-hidden />\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"input-number-step\"\n disabled={disabled || readOnly}\n onMouseDown={(e) => {\n e.preventDefault();\n stepBy(-1);\n }}\n >\n <ChevronDown size={12} aria-hidden />\n </button>\n </span>\n )}\n </span>\n );\n },\n);\n","import { createContext, useContext, type ComponentProps } from \"react\";\nimport {\n FormProvider,\n useForm,\n useFormContext,\n type DefaultValues,\n type FieldValues,\n type Resolver,\n type UseFormProps,\n type UseFormReturn,\n} from \"react-hook-form\";\nimport { cn } from \"../cn\";\nimport type { LoadingProp } from \"../../props\";\n\nexport type FormLayout = \"vertical\" | \"horizontal\" | \"inline\";\n\nexport interface FormProps<T extends FieldValues = FieldValues>\n extends Omit<ComponentProps<\"form\">, \"onSubmit\" | \"defaultValue\"> {\n form?: UseFormReturn<T>;\n defaultValues?: DefaultValues<T>;\n resolver?: Resolver<T>;\n mode?: UseFormProps<T>[\"mode\"];\n onSubmit?: (values: T) => void | Promise<void>;\n /** Visual layout. Mobile-first: every layout collapses to vertical at `xs`;\n * `horizontal` becomes label-left at `md`, `inline` becomes single-row at `sm`. */\n layout?: FormLayout;\n /** When set, every `<FormField>` inside this form renders its loading\n * state (spinner by default, skeleton via `{ kind: \"skeleton\" }`).\n * Each `<FormField>` can override with its own `loading` prop. */\n loading?: LoadingProp;\n}\n\ninterface FormLoadingContext {\n loading: LoadingProp | undefined;\n}\nconst FormLoadingCtx = createContext<FormLoadingContext>({ loading: undefined });\n\n/** Read the surrounding Form's loading state (used by `<FormField>`). */\nexport function useFormLoading(): LoadingProp | undefined {\n return useContext(FormLoadingCtx).loading;\n}\n\nexport function Form<T extends FieldValues>({\n form,\n defaultValues,\n resolver,\n mode = \"onTouched\",\n onSubmit,\n layout = \"vertical\",\n loading,\n className,\n children,\n ...rest\n}: FormProps<T>) {\n const local = useForm<T>({\n defaultValues,\n resolver,\n mode,\n });\n const active = form ?? local;\n return (\n <FormProvider {...active}>\n <FormLoadingCtx.Provider value={{ loading }}>\n <form\n className={cn(\"form\", `form-${layout}`, className)}\n onSubmit={onSubmit ? active.handleSubmit(onSubmit) : undefined}\n noValidate\n {...rest}\n >\n {children}\n </form>\n </FormLoadingCtx.Provider>\n </FormProvider>\n );\n}\n\nexport { useFormContext };\n","import { forwardRef } from \"react\"\nimport type { HTMLAttributes } from \"react\"\nimport { cn } from \"../cn\"\n\n// Skeleton — loading placeholder atom.\n//\n// Renders the canonical `.skeleton` class from tokens.css\n// (animate-skeleton + muted background). Use in place of any\n// content that is loading from the network. Works at any size;\n// set w-* and h-* via className.\n//\n// @example\n// <Skeleton className=\"h-8 w-36 rounded-md\" />\n// <Skeleton className=\"h-4 w-full\" />\n\nexport type SkeletonProps = HTMLAttributes<HTMLDivElement>\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n aria-hidden\n className={cn(\"skeleton\", className)}\n {...props}\n />\n ),\n)\nSkeleton.displayName = \"Skeleton\"\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../cn\";\nimport type { ColorProp, IconSizeProp } from \"../../props\";\n\n/**\n * Spinner — small inline circular loading indicator.\n *\n * Renders the canonical `.spinner` family from shell.css. Uses\n * `border-top-color: var(--info)` rotation; respects\n * `prefers-reduced-motion` via the keyframe declaration in CSS.\n *\n * Size mapping:\n * - `sm` → 10px (inline with `.help` lines)\n * - `md` → 12px (default, inline with `.input` suffix slot)\n * - `lg` → 16px (inline with `.btn` content)\n *\n * The `tone` prop selects a semantic role: `info` (default), `muted`,\n * `primary`, `success`, `warning`, `destructive`. Each tone re-targets\n * `border-top-color` to the matching semantic variable via the\n * `.spinner-tone-*` class.\n *\n * @example\n * <Spinner />\n * <Spinner size=\"large\" tone=\"primary\" aria-label=\"Saving…\" />\n */\n\n/** Alias of the shared `IconSizeProp` — Spinner is icon-symbol shaped. */\nexport type SpinnerSize = IconSizeProp;\n/**\n * Full semantic palette + `\"muted\"`. `default` falls back to `info`'s\n * CSS class for backwards compatibility (existing CSS chain was rooted\n * on info). `secondary` is excluded — it's Typography text-dimming\n * which doesn't translate to a rotating arc.\n */\nexport type SpinnerTone = Exclude<ColorProp, \"secondary\"> | \"muted\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {\n /** 10 / 12 / 16 px — defaults to `md`. */\n size?: SpinnerSize;\n /** Color role for the rotating arc; defaults to `info`. */\n tone?: SpinnerTone;\n /** Accessible label. When omitted, falls back to `aria-hidden`. */\n \"aria-label\"?: string;\n}\n\nconst SIZE_CLASS: Record<SpinnerSize, string> = {\n sm: \"spinner-sm\",\n md: \"\",\n lg: \"spinner-lg\",\n};\n\nconst TONE_CLASS: Record<SpinnerTone, string> = {\n default: \"\",\n info: \"\",\n muted: \"spinner-tone-muted\",\n primary: \"spinner-tone-primary\",\n success: \"spinner-tone-success\",\n warning: \"spinner-tone-warning\",\n destructive: \"spinner-tone-destructive\",\n attention: \"spinner-tone-attention\",\n};\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n function Spinner(\n { size = \"md\", tone = \"info\", className, role, ...rest },\n ref,\n ) {\n const label = rest[\"aria-label\"];\n const ariaProps = label\n ? { role: role ?? \"status\", \"aria-label\": label }\n : { \"aria-hidden\": true as const };\n return (\n <span\n ref={ref}\n className={cn(\n \"spinner\",\n SIZE_CLASS[size],\n TONE_CLASS[tone],\n className,\n )}\n {...ariaProps}\n {...rest}\n />\n );\n },\n);\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\nconst Root = PopoverPrimitive.Root\nconst Trigger = PopoverPrimitive.Trigger\n\nexport interface PopoverProps\n extends Omit<ComponentPropsWithoutRef<typeof PopoverPrimitive.Root>, \"children\"> {\n trigger?: ReactNode\n children?: ReactNode\n align?: ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>[\"align\"]\n side?: ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>[\"side\"]\n sideOffset?: number\n className?: string\n contentProps?: Omit<ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>, \"children\">\n}\n\nexport const Popover = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n PopoverProps\n>(function Popover(\n {\n trigger,\n children,\n align = \"center\",\n side,\n sideOffset = 6,\n className,\n contentProps,\n ...rootProps\n },\n ref,\n) {\n if (trigger === undefined) {\n return <Root {...rootProps}>{children}</Root>\n }\n\n return (\n <Root {...rootProps}>\n <Trigger asChild>{trigger}</Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n side={side}\n sideOffset={sideOffset}\n {...contentProps}\n className={cn(\"popover-content\", className, contentProps?.className)}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </Root>\n )\n})\n","import { Command } from \"cmdk\"\nimport { forwardRef, useCallback, useEffect, useMemo, useState, type ChangeEvent } from \"react\"\nimport { Popover } from \"../data-display/Popover\"\nimport { cn } from \"../cn\"\n\nexport interface AutoCompleteOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface AutoCompleteProps {\n options: AutoCompleteOption[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n size?: \"small\" | \"default\" | \"large\"\n disabled?: boolean\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n allowCustomValue?: boolean\n className?: string\n}\n\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(\n function AutoComplete(\n {\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder,\n size = \"default\",\n disabled,\n open,\n defaultOpen,\n onOpenChange,\n allowCustomValue = false,\n className,\n },\n ref,\n ) {\n const isControlled = value !== undefined\n const initialText = useMemo(() => {\n const seed = isControlled ? value : defaultValue\n if (!seed) return \"\"\n return options.find((option) => option.value === seed)?.label ?? seed\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n const [inputText, setInputText] = useState(initialText)\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false)\n const currentOpen = open ?? internalOpen\n const setOpen = useCallback(\n (next: boolean) => {\n if (open === undefined) setInternalOpen(next)\n onOpenChange?.(next)\n },\n [open, onOpenChange],\n )\n\n useEffect(() => {\n if (!isControlled) return\n const option = options.find((item) => item.value === value)\n if (option) setInputText(option.label)\n }, [isControlled, options, value])\n\n const filtered = useMemo(() => {\n const query = inputText.trim().toLowerCase()\n if (!query) return options\n return options.filter((option) =>\n option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query),\n )\n }, [inputText, options])\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value\n setInputText(next)\n onValueChange?.(next)\n if (!currentOpen) setOpen(true)\n }\n\n const commit = (picked: string) => {\n const option = options.find((item) => item.value === picked) ?? options.find((item) => item.label === picked)\n if (option) {\n setInputText(option.label)\n onValueChange?.(option.value)\n } else if (allowCustomValue) {\n setInputText(picked)\n onValueChange?.(picked)\n }\n setOpen(false)\n }\n\n const input = (\n <input\n ref={ref}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={currentOpen}\n aria-autocomplete=\"list\"\n disabled={disabled}\n placeholder={placeholder}\n value={inputText}\n onChange={handleChange}\n onFocus={() => !disabled && setOpen(true)}\n className={cn(\n \"input\",\n size === \"small\" && \"input-size-small\",\n size === \"large\" && \"input-size-large\",\n className,\n )}\n />\n )\n\n return (\n <Popover\n open={currentOpen}\n onOpenChange={setOpen}\n trigger={input}\n align=\"start\"\n sideOffset={4}\n className=\"combobox-content\"\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: (event) => event.preventDefault(),\n }}\n >\n <Command shouldFilter={false} className=\"combobox-command\">\n <Command.List className=\"combobox-list\">\n {filtered.length === 0 ? (\n <Command.Empty className=\"combobox-empty\">No matches</Command.Empty>\n ) : (\n filtered.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"combobox-item\"\n onSelect={commit}\n >\n {option.label}\n </Command.Item>\n ))\n )}\n </Command.List>\n </Command>\n </Popover>\n )\n },\n)\n","import { forwardRef, useCallback, useMemo, useState } from \"react\"\nimport { ChevronDown, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../cn\"\nimport { Popover } from \"../data-display/Popover\"\n\n/**\n * Cascader — nested column navigation. Renders a Popover whose body\n * is a horizontal row of vertical columns. Each column lists the\n * options at that depth; clicking a non-leaf option expands the next\n * column to the right; clicking a leaf commits the path of values.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style selection\n * (path is `string[]`; callback also receives the leaf option)\n * - `size` — \"small\" | \"default\" | \"large\"\n * - `open` / `defaultOpen` / `onOpenChange` — overlay state\n * - `disabled`, `placeholder`, `className`\n */\n\nexport interface CascaderOption {\n value: string\n label: string\n disabled?: boolean\n children?: CascaderOption[]\n}\n\nexport interface CascaderProps {\n options: CascaderOption[]\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (path: string[], leafOption: CascaderOption) => void\n placeholder?: string\n size?: \"small\" | \"default\" | \"large\"\n disabled?: boolean\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Display the full path as breadcrumb text or just the leaf label. */\n showFullPath?: boolean\n className?: string\n}\n\nfunction findPathLabels(options: CascaderOption[], path: string[]): string[] {\n const labels: string[] = []\n let cursor: CascaderOption[] | undefined = options\n for (const seg of path) {\n const hit: CascaderOption | undefined = cursor?.find((o) => o.value === seg)\n if (!hit) break\n labels.push(hit.label)\n cursor = hit.children\n }\n return labels\n}\n\nfunction findOptionByPath(options: CascaderOption[], path: string[]): CascaderOption | undefined {\n let cursor: CascaderOption[] | undefined = options\n let leaf: CascaderOption | undefined\n for (const seg of path) {\n leaf = cursor?.find((o) => o.value === seg)\n if (!leaf) return undefined\n cursor = leaf.children\n }\n return leaf\n}\n\nexport const Cascader = forwardRef<HTMLButtonElement, CascaderProps>(\n function Cascader(\n {\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Select\",\n size = \"default\",\n disabled,\n open,\n defaultOpen,\n onOpenChange,\n showFullPath = true,\n className,\n },\n ref,\n ) {\n const isControlled = value !== undefined\n const [internal, setInternal] = useState<string[]>(defaultValue ?? [])\n const currentPath = isControlled ? (value ?? []) : internal\n\n const [isOpenInternal, setIsOpenInternal] = useState<boolean>(defaultOpen ?? false)\n const isOpenControlled = open !== undefined\n const isOpen = isOpenControlled ? !!open : isOpenInternal\n\n const setIsOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setIsOpenInternal(next)\n onOpenChange?.(next)\n },\n [isOpenControlled, onOpenChange],\n )\n\n // Active (hovering / expanding) path while navigating columns.\n const [activePath, setActivePath] = useState<string[]>(currentPath)\n\n // When opening, reset activePath to the committed currentPath.\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (next) setActivePath(currentPath)\n setIsOpen(next)\n },\n [currentPath, setIsOpen],\n )\n\n // Build the visible columns by walking activePath.\n const columns = useMemo(() => {\n const cols: CascaderOption[][] = [options]\n let cursor: CascaderOption[] | undefined = options\n for (const seg of activePath) {\n const hit: CascaderOption | undefined = cursor?.find((o) => o.value === seg)\n if (!hit || !hit.children || hit.children.length === 0) break\n cols.push(hit.children)\n cursor = hit.children\n }\n return cols\n }, [options, activePath])\n\n const handleOptionClick = (depth: number, option: CascaderOption) => {\n if (option.disabled) return\n const nextActive = [...activePath.slice(0, depth), option.value]\n const hasChildren = !!option.children && option.children.length > 0\n if (hasChildren) {\n setActivePath(nextActive)\n return\n }\n // Leaf — commit\n if (!isControlled) setInternal(nextActive)\n onValueChange?.(nextActive, option)\n setActivePath(nextActive)\n setIsOpen(false)\n }\n\n const labels = findPathLabels(options, currentPath)\n const triggerText = labels.length === 0\n ? \"\"\n : showFullPath\n ? labels.join(\" / \")\n : labels[labels.length - 1]\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={handleOpenChange}\n align=\"start\"\n sideOffset={4}\n className=\"cascader-content\"\n trigger={\n <button\n ref={ref}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={cn(\n \"input\",\n \"cascader-trigger\",\n size === \"small\" && \"input-size-small\",\n size === \"large\" && \"input-size-large\",\n className,\n )}\n data-placeholder={triggerText === \"\" ? \"true\" : undefined}\n >\n <span className=\"cascader-trigger-text\">\n {triggerText === \"\" ? placeholder : triggerText}\n </span>\n <ChevronDown\n aria-hidden\n style={{ width: \"var(--spacing-4)\", height: \"var(--spacing-4)\", flexShrink: 0 }}\n />\n </button>\n }\n >\n <div className=\"cascader-columns\" role=\"tree\">\n {columns.map((column, depth) => (\n <ul key={depth} className=\"cascader-column\" role=\"group\">\n {column.map((option) => {\n const isActive = activePath[depth] === option.value\n const isSelected = currentPath[depth] === option.value && currentPath.length === depth + 1\n const hasChildren = !!option.children && option.children.length > 0\n return (\n <li\n key={option.value}\n className=\"cascader-option\"\n role=\"treeitem\"\n data-active={isActive ? \"true\" : undefined}\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={option.disabled ? \"true\" : undefined}\n aria-expanded={hasChildren ? isActive : undefined}\n aria-disabled={option.disabled || undefined}\n onClick={() => handleOptionClick(depth, option)}\n >\n <span className=\"cascader-option-label\">{option.label}</span>\n {hasChildren ? (\n <ChevronRight\n aria-hidden\n className=\"cascader-option-chevron\"\n style={{ width: \"var(--spacing-3)\", height: \"var(--spacing-3)\" }}\n />\n ) : null}\n </li>\n )\n })}\n </ul>\n ))}\n </div>\n </Popover>\n )\n },\n)\n\n// Re-export the leaf-lookup helper for consumers that need it.\nexport const __cascaderFindOptionByPath = findOptionByPath\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\n// Glyph at 0.75rem (12px @ base) — 3/4 of the box's 1rem footprint,\n// matches the shadcn / Ant canonical ratio. Rem-based so the icon\n// rescales with the font-size axis alongside the box (rule 21).\nconst iconSize = { width: \"0.75rem\", height: \"0.75rem\" } as const\n\n// strokeWidth=3 (vs lucide's default 2) + absoluteStrokeWidth keeps\n// the check / minus glyphs legible after the SVG is scaled from its\n// 24-unit native viewBox down to 12px — at default 2 the stroke\n// thins to roughly 1px visual and reads as a hairline.\nconst strokeWidth = 3\n\n/**\n * Checkbox — tri-state capable (checked / unchecked / indeterminate).\n *\n * Two consumption modes (per cardinal rule 23 + rule 31 — no parallel\n * convenience wrappers):\n *\n * 1. With label (preferred, Ant canonical) — pass children as the\n * label text:\n *\n * <Checkbox defaultChecked>利用規約に同意する</Checkbox>\n *\n * The primitive wraps the box + label in a single `<label>` so\n * clicking the text toggles the checkbox, ARIA labelling is\n * automatic, and the consumer never writes\n * `<label><Checkbox /><span>…</span></label>` ceremony.\n *\n * 2. Box-only (advanced) — no children. Use when the label lives\n * elsewhere (table cell header, custom layout) and you wire\n * `aria-labelledby` / `aria-label` yourself:\n *\n * <th><Checkbox aria-label=\"Select all\" /></th>\n *\n * Uses `.checkbox-*` classes from tokens.css. The box is 1rem (16px\n * @ base) per industry canon (shadcn / Ant / Tailwind).\n */\n\nexport interface CheckboxProps\n extends ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n /** Label text rendered to the right of the box. When provided, the\n * primitive wraps both in a single `<label>` so clicking the text\n * toggles the checkbox. */\n children?: ReactNode\n /** Class merged onto the OUTER `<label>` when `children` is set,\n * or onto the box `<button>` otherwise. */\n className?: string\n /** Class merged onto the inner box (when `children` is set). */\n boxClassName?: string\n}\n\nexport const Checkbox = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(function Checkbox({ className, boxClassName, children, ...rest }, ref) {\n const box = (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\"checkbox-root\", children === undefined ? className : boxClassName)}\n {...rest}\n >\n <CheckboxPrimitive.Indicator className=\"checkbox-indicator\">\n <Check\n className=\"checkbox-glyph-check\"\n aria-hidden\n strokeWidth={strokeWidth}\n absoluteStrokeWidth\n style={iconSize}\n />\n <Minus\n className=\"checkbox-glyph-indeterminate\"\n aria-hidden\n strokeWidth={strokeWidth}\n absoluteStrokeWidth\n style={iconSize}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n\n if (children === undefined) return box\n\n return (\n <label className={cn(\"checkbox-label\", className)}>\n {box}\n <span className=\"checkbox-label-text\">{children}</span>\n </label>\n )\n})\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\"\nimport { Checkbox } from \"./Checkbox\"\nimport { cn } from \"../cn\"\n\n/**\n * CheckboxGroup — wraps a set of `<Checkbox value=\"…\" />` items into a\n * single selection axis. Compositional (children) OR data-driven\n * (`options`) per cardinal rule 23 §A — one concept per prop.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style\n * controlled / uncontrolled selection (array of selected values).\n * NEVER `checked` / `selectedKeys` aliases.\n * - `orientation` — \"horizontal\" (default) | \"vertical\".\n * - `size` — \"small\" | \"default\" | \"large\" (forwarded via context).\n * - `disabled` — applies to every item.\n *\n * Visual contract lives in `.checkbox-group` (shell.css) — flex\n * direction flips on `data-orientation`.\n */\n\nexport type CheckboxGroupSize = \"small\" | \"default\" | \"large\"\nexport type CheckboxGroupOrientation = \"horizontal\" | \"vertical\"\n\nexport interface CheckboxOption {\n value: string\n label: ReactNode\n disabled?: boolean\n}\n\nexport interface CheckboxGroupProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n /** Data-driven items. Alternative to passing `<Checkbox value=\"…\" />` children. */\n options?: CheckboxOption[]\n /** Compositional children when `options` is omitted. */\n children?: ReactNode\n /** Controlled selection. */\n value?: string[]\n /** Uncontrolled initial selection. */\n defaultValue?: string[]\n /** Fires whenever the selection set changes. */\n onValueChange?: (value: string[]) => void\n orientation?: CheckboxGroupOrientation\n /** Disable every item in the group. */\n disabled?: boolean\n size?: CheckboxGroupSize\n /** Form name for native submission (mirrors RadioGroup). */\n name?: string\n}\n\ninterface CheckboxGroupCtx {\n value: string[]\n toggle: (v: string) => void\n disabled: boolean\n size: CheckboxGroupSize\n name?: string\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupCtx | null>(null)\n\n/** Internal hook — `<Checkbox value=\"…\" />` consumes it. */\nexport function useCheckboxGroup(): CheckboxGroupCtx | null {\n return useContext(CheckboxGroupContext)\n}\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(\n {\n options,\n children,\n value: controlled,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n disabled = false,\n size = \"default\",\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [uncontrolled, setUncontrolled] = useState<string[]>(\n defaultValue ?? [],\n )\n const isControlled = controlled !== undefined\n const value = isControlled ? controlled : uncontrolled\n\n const toggle = useCallback(\n (v: string) => {\n const next = value.includes(v)\n ? value.filter((x) => x !== v)\n : [...value, v]\n if (!isControlled) setUncontrolled(next)\n onValueChange?.(next)\n },\n [value, isControlled, onValueChange],\n )\n\n const ctx = useMemo<CheckboxGroupCtx>(\n () => ({ value, toggle, disabled, size, name }),\n [value, toggle, disabled, size, name],\n )\n\n return (\n <CheckboxGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n data-orientation={orientation}\n data-size={size}\n className={cn(\"checkbox-group\", className)}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <CheckboxGroupItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </CheckboxGroupItem>\n ))\n : children}\n </div>\n </CheckboxGroupContext.Provider>\n )\n },\n)\n\n/**\n * Internal item — labelled checkbox bound to the group context.\n * When CheckboxGroup is `options`-driven we render this; consumers\n * using the compositional form import `Checkbox` directly and pass\n * `value`, which routes through the same context.\n */\ninterface CheckboxGroupItemProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction CheckboxGroupItem({\n value,\n disabled,\n children,\n}: CheckboxGroupItemProps) {\n const ctx = useContext(CheckboxGroupContext)\n if (!ctx) return null\n const checked = ctx.value.includes(value)\n const isDisabled = disabled ?? ctx.disabled\n return (\n <label className=\"checkbox-group-item\" data-disabled={isDisabled || undefined}>\n <Checkbox\n checked={checked}\n disabled={isDisabled}\n onCheckedChange={() => ctx.toggle(value)}\n name={ctx.name}\n value={value}\n />\n <span className=\"checkbox-group-item-label\">{children}</span>\n </label>\n )\n}\n","import {\n forwardRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\nimport { Popover } from \"../data-display/Popover\";\nimport { cn } from \"../cn\";\n\n/**\n * ColorPicker — decorative color-selection trigger + popover panel.\n *\n * <ColorPicker defaultValue=\"#3b82f6\" presets={[\"#ef4444\", \"#10b981\"]} />\n *\n * Modeled on Input/Popconfirm prop shape per cardinal rule 23 §D.4.\n * The trigger is a `.colorpicker-trigger` button (swatch + hex label);\n * the popover hosts a native `<input type=\"color\">` canvas plus a hex\n * text input + preset swatch grid.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style state\n * - `size` — `\"small\" | \"default\" | \"large\"` (matches Input)\n * - `disabled` — boolean\n * - `open` / `defaultOpen` / `onOpenChange` — popover state\n * - `presets` — configurable hex list\n * - `showAlpha` — toggle alpha slider (0..1)\n *\n * Never uses Ant's `format` / `mode` aliases — `value` is always a hex\n * string (with optional `#rrggbbaa` when `showAlpha` is true).\n */\n\nexport type ColorPickerSize = \"small\" | \"default\" | \"large\";\n\nexport interface ColorPickerProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (hex: string) => void;\n presets?: string[];\n showAlpha?: boolean;\n size?: ColorPickerSize;\n disabled?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n}\n\nconst SIZE_CLASS: Record<ColorPickerSize, string> = {\n small: \"input-size-small\",\n default: \"\",\n large: \"input-size-large\",\n};\n\nconst HEX_RGB_RE = /^#?([0-9a-fA-F]{6})$/;\nconst HEX_RGBA_RE = /^#?([0-9a-fA-F]{8})$/;\n\nfunction normalizeHex(raw: string, showAlpha: boolean): string | null {\n const value = raw.trim();\n if (!value) return null;\n if (showAlpha && HEX_RGBA_RE.test(value)) {\n return `#${value.replace(/^#/, \"\").toLowerCase()}`;\n }\n if (HEX_RGB_RE.test(value)) {\n return `#${value.replace(/^#/, \"\").toLowerCase()}`;\n }\n return null;\n}\n\nfunction pickerHex(value: string): string {\n // <input type=\"color\"> only accepts #rrggbb — strip alpha.\n const m = value.match(/^#([0-9a-fA-F]{6})/);\n return m ? `#${m[1]}` : \"#000000\";\n}\n\nfunction alphaOf(value: string): number {\n const m = value.match(/^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})$/);\n if (!m) return 1;\n return parseInt(m[1], 16) / 255;\n}\n\nfunction applyAlpha(hex: string, alpha: number): string {\n const base = pickerHex(hex);\n const a = Math.round(Math.max(0, Math.min(1, alpha)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n return `${base}${a}`;\n}\n\nexport const ColorPicker = forwardRef<HTMLButtonElement, ColorPickerProps>(\n function ColorPicker(\n {\n value,\n defaultValue = \"#3b82f6\",\n onValueChange,\n presets,\n showAlpha = false,\n size = \"default\",\n disabled = false,\n open,\n defaultOpen,\n onOpenChange,\n className,\n },\n ref,\n ) {\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const [internalOpen, setInternalOpen] = useState<boolean>(\n defaultOpen ?? false,\n );\n const isOpenControlled = open !== undefined;\n const currentOpen = isOpenControlled ? open : internalOpen;\n\n const [hexDraft, setHexDraft] = useState<string>(currentValue);\n\n const commit = (next: string) => {\n if (!isControlled) setInternalValue(next);\n setHexDraft(next);\n onValueChange?.(next);\n };\n\n const setOpen = (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n const handlePickerChange = (event: ChangeEvent<HTMLInputElement>) => {\n const base = event.target.value;\n const next = showAlpha\n ? applyAlpha(base, alphaOf(currentValue))\n : base.toLowerCase();\n commit(next);\n };\n\n const handleHexInput = (event: ChangeEvent<HTMLInputElement>) => {\n const raw = event.target.value;\n setHexDraft(raw);\n const normalized = normalizeHex(raw, showAlpha);\n if (normalized) commit(normalized);\n };\n\n const handleAlphaChange = (event: ChangeEvent<HTMLInputElement>) => {\n const alpha = Number(event.target.value);\n commit(applyAlpha(currentValue, alpha));\n };\n\n return (\n <Popover\n open={currentOpen}\n onOpenChange={disabled ? undefined : setOpen}\n align=\"start\"\n className=\"colorpicker-panel\"\n trigger={\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n data-disabled={disabled || undefined}\n className={cn(\n \"colorpicker-trigger\",\n SIZE_CLASS[size],\n className,\n )}\n aria-label=\"Choose color\"\n >\n <span\n className=\"colorpicker-swatch\"\n style={{ background: currentValue }}\n aria-hidden\n />\n <span className=\"colorpicker-trigger-label\">{currentValue}</span>\n </button>\n }\n >\n <div\n className=\"colorpicker-preview\"\n style={{ background: currentValue }}\n aria-hidden\n />\n <input\n type=\"color\"\n value={pickerHex(currentValue)}\n onChange={handlePickerChange}\n className=\"colorpicker-canvas\"\n aria-label=\"Color canvas\"\n />\n {showAlpha && (\n <input\n type=\"range\"\n min={0}\n max={1}\n step={0.01}\n value={alphaOf(currentValue)}\n onChange={handleAlphaChange}\n className=\"colorpicker-alpha\"\n aria-label=\"Alpha channel\"\n />\n )}\n <input\n type=\"text\"\n value={hexDraft}\n onChange={handleHexInput}\n className={cn(\"input\", \"colorpicker-hex\")}\n spellCheck={false}\n aria-label=\"Hex value\"\n />\n {presets && presets.length > 0 && (\n <div className=\"colorpicker-presets\" role=\"listbox\" aria-label=\"Preset colors\">\n {presets.map((preset) => {\n const selected =\n preset.toLowerCase() === currentValue.toLowerCase();\n return (\n <button\n key={preset}\n type=\"button\"\n className=\"colorpicker-preset\"\n role=\"option\"\n aria-selected={selected}\n data-selected={selected || undefined}\n style={{ background: preset }}\n onClick={() => commit(preset)}\n aria-label={preset}\n />\n );\n })}\n </div>\n )}\n </Popover>\n );\n },\n);\n\nColorPicker.displayName = \"ColorPicker\";\n\nexport type ColorPickerTriggerNode = ReactNode;\n","import { forwardRef } from \"react\";\nimport type {\n HTMLAttributes,\n LabelHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\nexport interface FieldProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n help?: ReactNode;\n description?: ReactNode;\n count?: { current: number; max?: number; warnAt?: number };\n required?: boolean;\n optional?: boolean;\n optionalLabel?: ReactNode;\n tone?: FieldHelpTone;\n children: ReactNode;\n}\n\nexport const Field = forwardRef<HTMLDivElement, FieldProps>(function Field(\n {\n className,\n label,\n help,\n description,\n count,\n required,\n optional,\n optionalLabel,\n tone,\n children,\n ...rest\n },\n ref,\n) {\n const helpContent = help ?? description;\n return (\n <div ref={ref} className={cn(\"field\", className)} {...rest}>\n {label !== undefined && (\n <LabelControl\n required={required}\n optional={optional}\n optionalLabel={optionalLabel}\n >\n {label}\n </LabelControl>\n )}\n {children}\n {(helpContent !== undefined || count !== undefined) && (\n <div className={count !== undefined ? \"row-help\" : undefined}>\n {helpContent !== undefined && (\n <HelpText tone={tone}>{helpContent}</HelpText>\n )}\n {count !== undefined && <CountText {...count} />}\n </div>\n )}\n </div>\n );\n});\n\n// ─── Field.Label ──────────────────────────────────────────────────────\n\nexport interface FieldLabelProps\n extends LabelHTMLAttributes<HTMLLabelElement> {\n /** Append a red asterisk (`<span class=\"req\">*</span>`). */\n required?: boolean;\n /** Append a \"(optional)\" marker (`<span class=\"opt\">(任意)</span>`). */\n optional?: boolean;\n /** Optional label for the optional badge — defaults to \"(任意)\". */\n optionalLabel?: ReactNode;\n /** Inline help icon — typically a tooltip handle. Provide a `<span>` or `<button>`. */\n info?: ReactNode;\n /** Trailing slot at the right edge (e.g. an inline \"Forgot password?\" link). */\n extra?: ReactNode;\n}\n\nconst LabelControl = forwardRef<HTMLLabelElement, FieldLabelProps>(\n function LabelControl(\n {\n className,\n children,\n required,\n optional,\n optionalLabel = \"(任意)\",\n info,\n extra,\n ...rest\n },\n ref,\n ) {\n return (\n <label ref={ref} className={cn(className)} {...rest}>\n <span>{children}</span>\n {required && <span className=\"req\">*</span>}\n {optional && <span className=\"opt\">{optionalLabel}</span>}\n {info !== undefined && <span className=\"info\">{info}</span>}\n {extra !== undefined && (\n <>\n <span className=\"spacer\" />\n {extra}\n </>\n )}\n </label>\n );\n },\n);\n\n// ─── Field.Help ───────────────────────────────────────────────────────\n\nexport type FieldHelpTone = \"default\" | \"info\" | \"warn\" | \"error\" | \"success\";\n\nexport interface FieldHelpProps extends HTMLAttributes<HTMLDivElement> {\n tone?: FieldHelpTone;\n /** Sets tone to `error` — shortcut. */\n error?: boolean;\n /** Sets tone to `warn` — shortcut. */\n warning?: boolean;\n /** Sets tone to `info` — shortcut. */\n info?: boolean;\n /** Sets tone to `success` — shortcut. */\n success?: boolean;\n /** Leading icon slot. */\n icon?: ReactNode;\n}\n\nconst TONE_CLASS: Record<FieldHelpTone, string> = {\n default: \"\",\n info: \"info\",\n warn: \"warn\",\n error: \"err\",\n success: \"ok\",\n};\n\nconst HelpText = forwardRef<HTMLDivElement, FieldHelpProps>(function HelpText(\n {\n className,\n tone,\n error,\n warning,\n info,\n success,\n icon,\n children,\n ...rest\n },\n ref,\n) {\n const resolved: FieldHelpTone =\n tone ??\n (error ? \"error\" : warning ? \"warn\" : info ? \"info\" : success ? \"success\" : \"default\");\n return (\n <div\n ref={ref}\n className={cn(\"help\", TONE_CLASS[resolved], className)}\n {...rest}\n >\n {icon}\n {children}\n </div>\n );\n});\n\n// ─── Field.Count ──────────────────────────────────────────────────────\n\nexport interface FieldCountProps extends HTMLAttributes<HTMLDivElement> {\n current: number;\n max?: number;\n /** Threshold (0–1) above which the count flips to \"warn\" tone. Default `0.9`. */\n warnAt?: number;\n}\n\nconst CountText = forwardRef<HTMLDivElement, FieldCountProps>(\n function CountText(\n { className, current, max, warnAt = 0.9, ...rest },\n ref,\n ) {\n const over = typeof max === \"number\" && current > max;\n const near =\n typeof max === \"number\" &&\n !over &&\n current >= Math.floor(max * warnAt);\n return (\n <div\n ref={ref}\n className={cn(\n \"count\",\n near && \"warn\",\n over && \"over\",\n className,\n )}\n {...rest}\n >\n {typeof max === \"number\" ? `${current} / ${max}` : current}\n </div>\n );\n },\n);\n","/**\n * Shared `loading` prop-vocabulary for Form / FormField / data-entry\n * primitives.\n *\n * loading={true} → spinner (default kind)\n * loading={false} → off\n * loading={{ kind: \"skeleton\" }} → skeleton placeholder (use for\n * \"data is being fetched the\n * first time\" — UX nuance)\n * loading={{ kind: \"spinner\",\n * label: \"保存中...\" }} → spinner with aria-label\n *\n * Cascade rules:\n * - <Form loading={…}> sets a default for every <FormField> inside.\n * - <FormField loading={…}> overrides the Form default for that field.\n * - A primitive's own `loading` prop overrides both.\n */\n\nexport type LoadingKind = \"spinner\" | \"skeleton\";\n\nexport interface LoadingOptions {\n /** Default `\"spinner\"`. */\n kind?: LoadingKind;\n /** Accessible label announced to screen readers. */\n label?: string;\n}\n\nexport type LoadingProp = boolean | LoadingOptions;\n\nexport interface NormalizedLoading {\n active: boolean;\n kind: LoadingKind;\n label?: string;\n}\n\n/**\n * Coerce the union shape into `{active, kind, label}` so consumers can\n * branch on a single object instead of repeating `typeof prop === …`.\n */\nexport function normalizeLoading(\n prop: LoadingProp | undefined,\n defaultKind: LoadingKind = \"spinner\",\n): NormalizedLoading {\n if (prop === undefined || prop === false) {\n return { active: false, kind: defaultKind };\n }\n if (prop === true) return { active: true, kind: defaultKind };\n return {\n active: true,\n kind: prop.kind ?? defaultKind,\n label: prop.label,\n };\n}\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Radio + RadioGroup — Radix-backed single-select group. Compositional\n * (`<Radio value=\"…\" />` children) OR data-driven (`options`) per\n * cardinal rule 23 §A.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-canonical\n * selection (the GROUP exposes the value; individual items\n * internally use Radix's `checked` data-state).\n * - `orientation` — \"horizontal\" (default) | \"vertical\".\n * - `size` — \"small\" | \"default\" | \"large\".\n * - `disabled` — applies to the whole group OR per-item.\n * - `name` — native form name.\n *\n * Visual contract: `.radio-group` + `.radio-root` + `.radio-indicator`\n * in shell.css. State flows via Radix `data-state=\"checked\"`.\n */\n\nexport type RadioGroupSize = \"small\" | \"default\" | \"large\"\nexport type RadioGroupOrientation = \"horizontal\" | \"vertical\"\n\nexport interface RadioOption {\n value: string\n label: ReactNode\n disabled?: boolean\n}\n\nexport interface RadioGroupProps\n extends Omit<\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>,\n \"orientation\"\n > {\n /** Data-driven items. */\n options?: RadioOption[]\n /** Compositional children when `options` is omitted. */\n children?: ReactNode\n orientation?: RadioGroupOrientation\n size?: RadioGroupSize\n}\n\ninterface RadioGroupCtx {\n size: RadioGroupSize\n}\n\nconst RadioGroupContext = createContext<RadioGroupCtx>({ size: \"default\" })\n\nexport const RadioGroup = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(function RadioGroup(\n {\n options,\n children,\n orientation = \"horizontal\",\n size = \"default\",\n className,\n ...rest\n },\n ref,\n) {\n return (\n <RadioGroupContext.Provider value={{ size }}>\n <RadioGroupPrimitive.Root\n ref={ref}\n orientation={orientation}\n data-orientation={orientation}\n data-size={size}\n className={cn(\"radio-group\", className)}\n {...rest}\n >\n {options\n ? options.map((opt) => (\n <Radio key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </Radio>\n ))\n : children}\n </RadioGroupPrimitive.Root>\n </RadioGroupContext.Provider>\n )\n})\n\nexport interface RadioProps {\n value: string\n disabled?: boolean\n children?: ReactNode\n className?: string\n id?: string\n}\n\nexport const Radio = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioProps\n>(function Radio({ value, disabled, children, className, id }, ref) {\n const { size } = useContext(RadioGroupContext)\n return (\n <label\n className=\"radio-group-item\"\n data-disabled={disabled || undefined}\n data-size={size}\n >\n <RadioGroupPrimitive.Item\n ref={ref}\n value={value}\n disabled={disabled}\n id={id}\n className={cn(\"radio-root\", className)}\n >\n <RadioGroupPrimitive.Indicator className=\"radio-indicator\" />\n </RadioGroupPrimitive.Item>\n {children !== undefined ? (\n <span className=\"radio-group-item-label\">{children}</span>\n ) : null}\n </label>\n )\n})\n","import {\n forwardRef,\n useState,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { Star, StarHalf } from \"lucide-react\";\nimport { cn } from \"../cn\";\n\n/**\n * Rate — star-rating primitive (decorative input).\n *\n * <Rate defaultValue={3.5} allowHalf />\n * <Rate value={4} count={5} onValueChange={setRating} />\n * <Rate value={4} icon={<Heart />} />\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style state\n * - `size` — `\"small\" | \"default\" | \"large\"` (svg sized via CSS)\n * - `disabled` — boolean\n * - `readOnly` — display-only (matches Input)\n * - `count` — how many icons (default 5)\n * - `allowHalf` — left-half-click commits 0.5 step\n * - `icon` slot — custom icon node (per cardinal rule 23 §B `icon`\n * slot — NEVER Ant's `character`)\n *\n * The rendered row uses lucide `Star` filled vs hollow (and `StarHalf`\n * when `allowHalf` resolves to a 0.5 fraction). When `icon` is\n * provided, the custom node is reused for filled / hollow alike with\n * `data-filled` driving the color via CSS.\n */\n\nexport type RateSize = \"small\" | \"default\" | \"large\";\n\nexport interface RateProps {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n /** Max number of stars (default 5). */\n count?: number;\n allowHalf?: boolean;\n /** Render a custom icon instead of Star. */\n icon?: ReactNode;\n size?: RateSize;\n disabled?: boolean;\n /** Read-only display (no hover effect). */\n readOnly?: boolean;\n className?: string;\n}\n\nconst SIZE_CLASS: Record<RateSize, string> = {\n small: \"rate-size-small\",\n default: \"rate-size-default\",\n large: \"rate-size-large\",\n};\n\nexport const Rate = forwardRef<HTMLDivElement, RateProps>(function Rate(\n {\n value,\n defaultValue = 0,\n onValueChange,\n count = 5,\n allowHalf = false,\n icon,\n size = \"default\",\n disabled = false,\n readOnly = false,\n className,\n },\n ref,\n) {\n const [internalValue, setInternalValue] = useState<number>(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const displayValue = hoverValue ?? currentValue;\n\n const commit = (next: number) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const interactive = !disabled && !readOnly;\n\n const handleClick = (index: number, event: MouseEvent<HTMLButtonElement>) => {\n if (!interactive) return;\n const next =\n allowHalf && isLeftHalf(event)\n ? index - 0.5\n : index;\n commit(next);\n };\n\n const handleHover = (index: number, event: MouseEvent<HTMLButtonElement>) => {\n if (!interactive) return;\n const next =\n allowHalf && isLeftHalf(event)\n ? index - 0.5\n : index;\n setHoverValue(next);\n };\n\n const handleLeave = () => {\n if (!interactive) return;\n setHoverValue(null);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"rate\", SIZE_CLASS[size], className)}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n role=\"radiogroup\"\n aria-label=\"Rating\"\n onMouseLeave={handleLeave}\n >\n {Array.from({ length: count }, (_, i) => {\n const index = i + 1;\n const filled = displayValue >= index;\n const half =\n allowHalf && !filled && displayValue >= index - 0.5;\n return (\n <button\n key={index}\n type=\"button\"\n className=\"rate-star\"\n data-filled={filled || undefined}\n data-half={half || undefined}\n disabled={disabled}\n aria-checked={Math.ceil(currentValue) === index}\n role=\"radio\"\n aria-label={`${index} of ${count}`}\n onClick={(event) => handleClick(index, event)}\n onMouseMove={(event) => handleHover(index, event)}\n >\n {renderIcon({ icon, filled, half })}\n </button>\n );\n })}\n </div>\n );\n});\n\nRate.displayName = \"Rate\";\n\nfunction isLeftHalf(event: MouseEvent<HTMLButtonElement>): boolean {\n const rect = event.currentTarget.getBoundingClientRect();\n return event.clientX - rect.left < rect.width / 2;\n}\n\nfunction renderIcon(args: {\n icon: ReactNode;\n filled: boolean;\n half: boolean;\n}): ReactNode {\n if (args.icon !== undefined) {\n return args.icon;\n }\n if (args.half) {\n return <StarHalf fill=\"currentColor\" strokeWidth={1.5} aria-hidden />;\n }\n if (args.filled) {\n return <Star fill=\"currentColor\" strokeWidth={1.5} aria-hidden />;\n }\n return <Star fill=\"none\" strokeWidth={1.5} aria-hidden />;\n}\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Command } from \"cmdk\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport {\n forwardRef,\n Fragment,\n useState,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\";\nimport { Popover } from \"../data-display/Popover\";\nimport { cn } from \"../cn\";\n\n/**\n * Select — single-select picker.\n *\n * <Select options={[…]} value={…} onValueChange={…} placeholder=\"…\" />\n *\n * Pass `searchable` for a filterable variant backed by cmdk + Popover\n * (replaces the former standalone Combobox primitive):\n *\n * <Select options={…} value={…} onValueChange={…} searchable\n * searchPlaceholder=\"Find…\" emptyLabel=\"No matches\" />\n */\n\nexport interface SelectOption {\n value: string;\n /** Display content — usually a string, but ReactNode is fine for\n * icon + label compositions. When `searchable`, string labels are\n * used as filter keywords automatically. */\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: ReactNode;\n options: SelectOption[];\n}\n\nexport type SelectOptions = ReadonlyArray<SelectOption | SelectOptionGroup>;\n\nexport interface SelectProps\n extends Omit<\n ComponentPropsWithoutRef<typeof SelectPrimitive.Root>,\n \"children\"\n > {\n options: SelectOptions;\n placeholder?: ReactNode;\n triggerClassName?: string;\n contentClassName?: string;\n /** Render a searchable variant (cmdk + Popover) instead of Radix Select. */\n searchable?: boolean;\n /** Search input placeholder (searchable mode only). */\n searchPlaceholder?: string;\n /** Shown when the filter matches nothing (searchable mode only). */\n emptyLabel?: ReactNode;\n /** Render a disabled loading row instead of options (searchable mode only). */\n loading?: boolean;\n /** Loading row text (searchable mode only). */\n loadingLabel?: ReactNode;\n}\n\nfunction isOptionGroup(\n opt: SelectOption | SelectOptionGroup,\n): opt is SelectOptionGroup {\n return Array.isArray((opt as SelectOptionGroup).options);\n}\n\nfunction flattenOptions(options: SelectOptions): SelectOption[] {\n const out: SelectOption[] = [];\n for (const opt of options) {\n if (isOptionGroup(opt)) out.push(...opt.options);\n else out.push(opt);\n }\n return out;\n}\n\nexport function Select({\n options,\n placeholder,\n triggerClassName,\n contentClassName,\n searchable,\n searchPlaceholder,\n emptyLabel,\n loading,\n loadingLabel = \"Loading…\",\n ...rest\n}: SelectProps) {\n if (searchable) {\n return (\n <SearchableSelect\n options={options}\n placeholder={placeholder}\n triggerClassName={triggerClassName}\n contentClassName={contentClassName}\n searchPlaceholder={searchPlaceholder}\n emptyLabel={emptyLabel}\n loading={loading}\n loadingLabel={loadingLabel}\n {...rest}\n />\n );\n }\n return (\n <SelectPrimitive.Root {...rest}>\n <Trigger className={triggerClassName}>\n <SelectPrimitive.Value placeholder={placeholder} />\n </Trigger>\n <Content className={contentClassName}>\n {options.map((opt, i) =>\n isOptionGroup(opt) ? (\n <Fragment key={`group-${i}`}>\n <SelectPrimitive.Group>\n <Label>{opt.label}</Label>\n {opt.options.map((leaf) => (\n <Item\n key={leaf.value}\n value={leaf.value}\n disabled={leaf.disabled}\n >\n {leaf.label}\n </Item>\n ))}\n </SelectPrimitive.Group>\n {i < options.length - 1 && <Separator />}\n </Fragment>\n ) : (\n <Item key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </Item>\n ),\n )}\n </Content>\n </SelectPrimitive.Root>\n );\n}\n\ninterface SearchableSelectProps\n extends Omit<SelectProps, \"searchable\"> {}\n\nfunction SearchableSelect({\n options,\n placeholder,\n triggerClassName,\n contentClassName,\n searchPlaceholder,\n emptyLabel,\n loading,\n loadingLabel,\n value,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disabled,\n name: _name,\n required: _required,\n dir: _dir,\n autoComplete: _autoComplete,\n ...rest\n}: SearchableSelectProps) {\n const isValueControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string | undefined>(\n defaultValue,\n );\n const currentValue = isValueControlled ? value : internalValue;\n\n const isOpenControlled = openProp !== undefined;\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const open = isOpenControlled ? openProp : internalOpen;\n const setOpen = (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n const selected = flattenOptions(options).find(\n (option) => option.value === currentValue,\n );\n\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n align=\"start\"\n sideOffset={4}\n className={cn(\"select-content\", contentClassName)}\n trigger={\n <button\n type=\"button\"\n className={cn(\"input\", \"select-trigger\", triggerClassName)}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n title={\n selected && typeof selected.label === \"string\"\n ? selected.label\n : undefined\n }\n >\n <span className={cn(\"select-trigger-text\", !selected && \"muted\")}>\n {selected ? selected.label : placeholder}\n </span>\n <ChevronDown\n className=\"muted\"\n aria-hidden\n style={{\n width: \"var(--spacing-4)\",\n height: \"var(--spacing-4)\",\n flexShrink: 0,\n }}\n />\n </button>\n }\n {...rest}\n >\n <Command className=\"combobox-command\">\n <Command.Input\n className=\"combobox-input\"\n placeholder={searchPlaceholder}\n />\n <Command.List className=\"combobox-list\">\n {loading ? (\n <Command.Item value=\"__loading\" disabled className=\"combobox-item\">\n {loadingLabel}\n </Command.Item>\n ) : (\n <>\n {emptyLabel !== undefined && (\n <Command.Empty className=\"combobox-empty\">\n {emptyLabel}\n </Command.Empty>\n )}\n {options.map((opt, i) =>\n isOptionGroup(opt) ? (\n <Command.Group\n key={`group-${i}`}\n heading={\n typeof opt.label === \"string\" ? opt.label : undefined\n }\n >\n {opt.options.map((leaf) => (\n <SearchableItem\n key={leaf.value}\n option={leaf}\n onSelect={(picked) => {\n if (!isValueControlled) setInternalValue(picked);\n onValueChange?.(picked);\n setOpen(false);\n }}\n />\n ))}\n </Command.Group>\n ) : (\n <SearchableItem\n key={opt.value}\n option={opt}\n onSelect={(picked) => {\n if (!isValueControlled) setInternalValue(picked);\n onValueChange?.(picked);\n setOpen(false);\n }}\n />\n ),\n )}\n </>\n )}\n </Command.List>\n </Command>\n </Popover>\n );\n}\n\nfunction SearchableItem({\n option,\n onSelect,\n}: {\n option: SelectOption;\n onSelect: (value: string) => void;\n}) {\n const keywords =\n typeof option.label === \"string\" ? [option.label] : undefined;\n return (\n <Command.Item\n value={option.value}\n keywords={keywords}\n disabled={option.disabled}\n className=\"combobox-item\"\n onSelect={onSelect}\n >\n {option.label}\n </Command.Item>\n );\n}\n\nconst Trigger = forwardRef<\n ElementRef<typeof SelectPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function Trigger({ className, children, ...rest }, ref) {\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\"input\", \"select-trigger\", className)}\n {...rest}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown\n className=\"muted\"\n aria-hidden\n style={{\n width: \"var(--spacing-4)\",\n height: \"var(--spacing-4)\",\n flexShrink: 0,\n }}\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n});\n\nconst Content = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function Content(\n { className, children, position = \"popper\", sideOffset = 4, ...rest },\n ref,\n) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\"select-content\", className)}\n position={position}\n sideOffset={sideOffset}\n {...rest}\n >\n <ScrollUp>\n <ChevronUp\n aria-hidden\n style={{ width: \"var(--spacing-4)\", height: \"var(--spacing-4)\" }}\n />\n </ScrollUp>\n <SelectPrimitive.Viewport className=\"select-viewport\">\n {children}\n </SelectPrimitive.Viewport>\n <ScrollDown>\n <ChevronDown\n aria-hidden\n style={{ width: \"var(--spacing-4)\", height: \"var(--spacing-4)\" }}\n />\n </ScrollDown>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n\nconst Label = forwardRef<\n ElementRef<typeof SelectPrimitive.Label>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(function Label({ className, ...rest }, ref) {\n return (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"select-label\", className)}\n {...rest}\n />\n );\n});\n\nconst Item = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function Item({ className, children, ...rest }, ref) {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\"select-item\", className)}\n {...rest}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n\nconst Separator = forwardRef<\n ElementRef<typeof SelectPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(function Separator({ className, ...rest }, ref) {\n return (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"select-separator\", className)}\n {...rest}\n />\n );\n});\n\nconst ScrollUp = forwardRef<\n ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(function ScrollUp({ className, ...rest }, ref) {\n return (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\"select-scroll-btn\", className)}\n {...rest}\n />\n );\n});\n\nconst ScrollDown = forwardRef<\n ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(function ScrollDown({ className, ...rest }, ref) {\n return (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\"select-scroll-btn\", className)}\n {...rest}\n />\n );\n});\n","import * as SliderPrimitive from \"@radix-ui/react-slider\"\nimport {\n forwardRef,\n useMemo,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Slider — Radix-backed range input. Single-handle by default;\n * `range` flips to dual-handle.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-canonical\n * selection; scalar for single-handle, `[number, number]` for\n * `range`.\n * - `min` / `max` / `step` — HTML standards (not vocabulary).\n * - `disabled`, `orientation` — shared axes.\n * - `marks` — optional tick labels along the track.\n *\n * Visual contract: `.slider`, `.slider-track`, `.slider-range`,\n * `.slider-thumb` in shell.css. Vertical variant flips dimensions\n * via `data-orientation=\"vertical\"`.\n */\n\nexport interface SliderMark {\n value: number\n label?: ReactNode\n}\n\ntype SliderValue = number | [number, number]\n\nexport interface SliderProps\n extends Omit<\n ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"value\" | \"defaultValue\" | \"onValueChange\" | \"orientation\"\n > {\n value?: SliderValue\n defaultValue?: SliderValue\n onValueChange?: (value: SliderValue) => void\n min?: number\n max?: number\n step?: number\n /** Dual-handle when true; pass `[number, number]` for value. */\n range?: boolean\n disabled?: boolean\n orientation?: \"horizontal\" | \"vertical\"\n /** Optional tick marks rendered alongside the track. */\n marks?: SliderMark[]\n}\n\nfunction toArray(v: SliderValue | undefined): number[] | undefined {\n if (v === undefined) return undefined\n return Array.isArray(v) ? v : [v]\n}\n\nexport const Slider = forwardRef<\n ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(function Slider(\n {\n value,\n defaultValue,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n range = false,\n disabled,\n orientation = \"horizontal\",\n marks,\n className,\n ...rest\n },\n ref,\n) {\n const radixValue = useMemo(() => toArray(value), [value])\n const radixDefault = useMemo(\n () => toArray(defaultValue) ?? (range ? [min, max] : [min]),\n [defaultValue, range, min, max],\n )\n\n const handleChange = (next: number[]) => {\n if (!onValueChange) return\n if (range) {\n onValueChange([next[0] ?? min, next[1] ?? max])\n } else {\n onValueChange(next[0] ?? min)\n }\n }\n\n const thumbCount = range ? 2 : 1\n const span = max - min || 1\n\n // Pass controlled OR uncontrolled, never both. Even passing\n // `value={undefined}` alongside `defaultValue={…}` trips React's\n // controlled/uncontrolled transition warning at the inner Primitive\n // input level.\n const valueProp =\n radixValue !== undefined ? { value: radixValue } : { defaultValue: radixDefault }\n\n return (\n <div className=\"slider-wrap\" data-orientation={orientation}>\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\"slider\", className)}\n {...valueProp}\n onValueChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n orientation={orientation}\n data-orientation={orientation}\n {...rest}\n >\n <SliderPrimitive.Track className=\"slider-track\">\n <SliderPrimitive.Range className=\"slider-range\" />\n </SliderPrimitive.Track>\n {Array.from({ length: thumbCount }).map((_, i) => (\n <SliderPrimitive.Thumb key={i} className=\"slider-thumb\" />\n ))}\n </SliderPrimitive.Root>\n {marks && marks.length > 0 ? (\n <div className=\"slider-marks\" data-orientation={orientation}>\n {marks.map((m) => {\n const pct = ((m.value - min) / span) * 100\n const style =\n orientation === \"vertical\"\n ? { bottom: `${pct}%` }\n : { left: `${pct}%` }\n return (\n <span key={m.value} className=\"slider-mark\" style={style}>\n <span className=\"slider-mark-dot\" aria-hidden />\n {m.label !== undefined ? (\n <span className=\"slider-mark-label\">{m.label}</span>\n ) : null}\n </span>\n )\n })}\n </div>\n ) : null}\n </div>\n )\n})\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Switch — boolean toggle (Radix). Styled with `.switch-root` / `.switch-thumb`\n * in tokens.css.\n */\nexport const Switch = forwardRef<\n ElementRef<typeof SwitchPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(function Switch({ className, ...rest }, ref) {\n return (\n <SwitchPrimitive.Root ref={ref} className={cn(\"switch-root\", className)} {...rest}>\n <SwitchPrimitive.Thumb className=\"switch-thumb\" />\n </SwitchPrimitive.Root>\n )\n})\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef, useEffect, useRef } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * IconButton — square button with icon-only content.\n *\n * Maps onto the canonical `.icon-btn` family in shell.css (matches the\n * `K:comp-pageheader.html` reference at lines 14–17): 32 × 32 box,\n * `--radius-sm`, hairline border + `--background` fill by default\n * (`secondary` variant), with `ghost` (transparent / borderless) and\n * `primary` (filled brand) modifiers.\n *\n * Sizes:\n * - `sm` → 28 px (compact toolbars)\n * - `default` → 32 px (page-header default)\n * - `lg` → 36 px (touch / hero contexts)\n *\n * Accessible-name requirement: an icon-only control MUST carry a\n * discoverable name via one of `aria-label` / `aria-labelledby` /\n * `title`. React's HTML types make these always optional, so the\n * component instead emits a `console.warn` in development when none\n * is supplied. Production builds (`process.env.NODE_ENV === \"production\"`)\n * skip the check.\n *\n * @example\n * <IconButton aria-label=\"戻る\"><ArrowLeft size={14} /></IconButton>\n * <IconButton variant=\"ghost\" aria-label=\"More\"><MoreHorizontal size={16} /></IconButton>\n * <IconButton variant=\"primary\" size=\"lg\" aria-label=\"Save\"><Check size={18} /></IconButton>\n */\n\nimport type { IconSizeProp } from \"../../props\";\n\nexport type IconButtonVariant = \"secondary\" | \"ghost\" | \"primary\";\n/** Alias of the shared `IconSizeProp` (`sm | md | lg`) — IconButton is\n * icon-symbol shaped, same axis as Spinner. Renamed `\"default\"` → `\"md\"`\n * so the verb stays consistent across icon-only primitives. */\nexport type IconButtonSize = IconSizeProp;\n\nexport interface IconButtonProps extends Omit<\n ComponentProps<\"button\">,\n \"children\"\n> {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst VARIANT_CLASS: Record<IconButtonVariant, string> = {\n secondary: \"icon-btn-secondary\",\n ghost: \"icon-btn-ghost\",\n primary: \"icon-btn-primary\",\n};\n\nconst SIZE_CLASS: Record<IconButtonSize, string> = {\n sm: \"icon-btn-sm\",\n md: \"\",\n lg: \"icon-btn-lg\",\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n function IconButton(\n {\n variant = \"secondary\",\n size = \"md\",\n asChild = false,\n className,\n type = \"button\",\n children,\n ...rest\n },\n ref,\n ) {\n // Dev-only accessible-name check. Stripped from production bundles\n // because `process.env.NODE_ENV !== \"production\"` collapses to\n // `false` in production builds and the dead branch is tree-shaken.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const warnedRef = useRef(false);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (process.env.NODE_ENV === \"production\") return;\n if (warnedRef.current) return;\n const props = rest as Record<string, unknown>;\n const ariaLabel = props[\"aria-label\"];\n const ariaLabelledBy = props[\"aria-labelledby\"];\n const title = props.title;\n const hasName =\n (typeof ariaLabel === \"string\" && ariaLabel.trim() !== \"\") ||\n (typeof ariaLabelledBy === \"string\" && ariaLabelledBy.trim() !== \"\") ||\n (typeof title === \"string\" && title.trim() !== \"\");\n if (!hasName) {\n warnedRef.current = true;\n // eslint-disable-next-line no-console\n console.warn(\n \"[@godxjp/ui] <IconButton> is missing an accessible name. \" +\n \"Pass `aria-label`, `aria-labelledby`, or `title` so \" +\n \"screen-reader users can identify the control. \" +\n \"See docs/reference/data-display/IconButton.md#accessibility.\",\n );\n }\n }, [rest]);\n\n const Component = asChild ? Slot : \"button\";\n return (\n <Component\n ref={ref}\n type={asChild ? undefined : type}\n className={cn(\n \"icon-btn\",\n VARIANT_CLASS[variant],\n SIZE_CLASS[size],\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n","import {\n forwardRef,\n useCallback,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../cn\";\nimport { Checkbox } from \"./Checkbox\";\nimport { IconButton } from \"../data-display/IconButton\";\nimport { Input } from \"./Input\";\n\n/**\n * Transfer — dual list-box. Items in the left (\"source\") column move\n * to the right (\"target\") column via arrow buttons; `value` tracks\n * the keys currently on the right.\n *\n * Vocabulary per cardinal rule 23 §B:\n * • `value` / `defaultValue` / `onValueChange` (Radix-style)\n * — NOT `targetKeys`. The string-array carries \"the chosen set\",\n * which on this primitive happens to be the right column.\n * • `size`: `\"small\" | \"default\" | \"large\"`\n * • `disabled` boolean\n *\n * DOM mirrors `.transfer` / `.transfer-list` / `.transfer-actions`\n * from `30-input.css`.\n */\n\nexport interface TransferItem {\n key: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport type TransferSize = \"small\" | \"default\" | \"large\";\n\nexport interface TransferProps {\n dataSource: TransferItem[];\n /** Keys currently on the right (\"target\") column. */\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n /** Headers for the two columns — `[left, right]`. */\n titles?: [ReactNode, ReactNode];\n size?: TransferSize;\n disabled?: boolean;\n className?: string;\n /** Search box above each column. */\n showSearch?: boolean;\n /** Placeholder for the search input when `showSearch` is true. */\n searchPlaceholder?: string;\n /** Renderer for each item label (defaults to `item.label`). */\n renderItem?: (item: TransferItem) => ReactNode;\n}\n\nconst COLUMN_INDEX = { left: 0, right: 1 } as const;\ntype ColumnSide = keyof typeof COLUMN_INDEX;\n\nexport const Transfer = forwardRef<HTMLDivElement, TransferProps>(\n function Transfer(\n {\n dataSource,\n value,\n defaultValue,\n onValueChange,\n titles = [\"\", \"\"],\n size = \"default\",\n disabled,\n className,\n showSearch,\n searchPlaceholder,\n renderItem,\n },\n ref,\n ) {\n const isControlled = value !== undefined;\n const [internalRight, setInternalRight] = useState<string[]>(\n defaultValue ?? [],\n );\n const rightKeys = isControlled ? value ?? [] : internalRight;\n const rightSet = useMemo(() => new Set(rightKeys), [rightKeys]);\n\n const [selectedLeft, setSelectedLeft] = useState<Set<string>>(new Set());\n const [selectedRight, setSelectedRight] = useState<Set<string>>(new Set());\n const [searchLeft, setSearchLeft] = useState(\"\");\n const [searchRight, setSearchRight] = useState(\"\");\n\n const leftItems = useMemo(\n () => dataSource.filter((i) => !rightSet.has(i.key)),\n [dataSource, rightSet],\n );\n const rightItems = useMemo(\n () => dataSource.filter((i) => rightSet.has(i.key)),\n [dataSource, rightSet],\n );\n\n const visibleLeft = useMemo(\n () => filterBySearch(leftItems, searchLeft),\n [leftItems, searchLeft],\n );\n const visibleRight = useMemo(\n () => filterBySearch(rightItems, searchRight),\n [rightItems, searchRight],\n );\n\n const commit = useCallback(\n (nextRight: string[]) => {\n if (!isControlled) setInternalRight(nextRight);\n onValueChange?.(nextRight);\n },\n [isControlled, onValueChange],\n );\n\n const moveRight = useCallback(() => {\n if (disabled) return;\n const movable = leftItems.filter(\n (i) => selectedLeft.has(i.key) && !i.disabled,\n );\n if (movable.length === 0) return;\n const moved = new Set(movable.map((i) => i.key));\n commit([...rightKeys, ...moved]);\n const stillSelected = new Set(selectedLeft);\n for (const k of moved) stillSelected.delete(k);\n setSelectedLeft(stillSelected);\n }, [commit, disabled, leftItems, rightKeys, selectedLeft]);\n\n const moveLeft = useCallback(() => {\n if (disabled) return;\n const movable = rightItems.filter(\n (i) => selectedRight.has(i.key) && !i.disabled,\n );\n if (movable.length === 0) return;\n const moved = new Set(movable.map((i) => i.key));\n commit(rightKeys.filter((k) => !moved.has(k)));\n const stillSelected = new Set(selectedRight);\n for (const k of moved) stillSelected.delete(k);\n setSelectedRight(stillSelected);\n }, [commit, disabled, rightItems, rightKeys, selectedRight]);\n\n const toggleItem = (side: ColumnSide, key: string, item: TransferItem) => {\n if (disabled || item.disabled) return;\n const setter = side === \"left\" ? setSelectedLeft : setSelectedRight;\n setter((prev) => {\n const next = new Set(prev);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n };\n\n const sizeClass = SIZE_CLASS[size];\n\n return (\n <div\n ref={ref}\n className={cn(\"transfer\", sizeClass, className)}\n aria-disabled={disabled || undefined}\n >\n <Column\n title={titles[0]}\n totalCount={leftItems.length}\n selectedCount={selectedLeft.size}\n visibleItems={visibleLeft}\n selected={selectedLeft}\n disabled={disabled}\n showSearch={showSearch}\n searchValue={searchLeft}\n onSearchChange={setSearchLeft}\n searchPlaceholder={searchPlaceholder}\n renderItem={renderItem}\n onToggle={(key, item) => toggleItem(\"left\", key, item)}\n size={size}\n />\n <div className=\"transfer-actions\">\n <IconButton\n aria-label=\"Move right\"\n disabled={disabled || selectedLeft.size === 0}\n onClick={moveRight}\n size={size === \"small\" ? \"sm\" : \"md\"}\n >\n <ChevronRight size={14} aria-hidden />\n </IconButton>\n <IconButton\n aria-label=\"Move left\"\n disabled={disabled || selectedRight.size === 0}\n onClick={moveLeft}\n size={size === \"small\" ? \"sm\" : \"md\"}\n >\n <ChevronLeft size={14} aria-hidden />\n </IconButton>\n </div>\n <Column\n title={titles[1]}\n totalCount={rightItems.length}\n selectedCount={selectedRight.size}\n visibleItems={visibleRight}\n selected={selectedRight}\n disabled={disabled}\n showSearch={showSearch}\n searchValue={searchRight}\n onSearchChange={setSearchRight}\n searchPlaceholder={searchPlaceholder}\n renderItem={renderItem}\n onToggle={(key, item) => toggleItem(\"right\", key, item)}\n size={size}\n />\n </div>\n );\n },\n);\n\n// ─── Internals ────────────────────────────────────────────────────\n\nconst SIZE_CLASS: Record<TransferSize, string> = {\n small: \"transfer-size-small\",\n default: \"\",\n large: \"transfer-size-large\",\n};\n\nfunction filterBySearch(items: TransferItem[], query: string): TransferItem[] {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((i) => {\n const labelText = typeof i.label === \"string\" ? i.label : i.key;\n return labelText.toLowerCase().includes(q);\n });\n}\n\ninterface ColumnProps {\n title: ReactNode;\n totalCount: number;\n selectedCount: number;\n visibleItems: TransferItem[];\n selected: Set<string>;\n disabled?: boolean;\n showSearch?: boolean;\n searchValue: string;\n onSearchChange: (next: string) => void;\n searchPlaceholder?: string;\n renderItem?: (item: TransferItem) => ReactNode;\n onToggle: (key: string, item: TransferItem) => void;\n size: TransferSize;\n}\n\nfunction Column({\n title,\n totalCount,\n selectedCount,\n visibleItems,\n selected,\n disabled,\n showSearch,\n searchValue,\n onSearchChange,\n searchPlaceholder,\n renderItem,\n onToggle,\n size,\n}: ColumnProps) {\n return (\n <div className=\"transfer-list\">\n <div className=\"transfer-list-header\">\n <span>\n {title}\n {selectedCount > 0 ? ` (${selectedCount}/${totalCount})` : ` (${totalCount})`}\n </span>\n </div>\n {showSearch && (\n <div className=\"transfer-list-search\">\n <Input\n size={size === \"large\" ? \"default\" : \"small\"}\n placeholder={searchPlaceholder}\n value={searchValue}\n disabled={disabled}\n onChange={(e) => onSearchChange(e.target.value)}\n />\n </div>\n )}\n <div className=\"transfer-list-body\">\n {visibleItems.map((item) => {\n const itemDisabled = disabled || item.disabled;\n const checked = selected.has(item.key);\n return (\n <div\n key={item.key}\n className=\"transfer-list-item\"\n aria-disabled={itemDisabled || undefined}\n onClick={() => onToggle(item.key, item)}\n >\n <Checkbox\n checked={checked}\n disabled={itemDisabled}\n onCheckedChange={() => onToggle(item.key, item)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>{renderItem ? renderItem(item) : item.label}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { forwardRef, useCallback, useMemo, useState, type ReactNode } from \"react\"\nimport { ChevronDown, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../cn\"\nimport { Popover } from \"../data-display/Popover\"\nimport { Checkbox } from \"./Checkbox\"\n\n/**\n * TreeSelect — tree-structured Select. Renders a Popover containing a\n * recursive tree where each node is expandable. Multi-select supported\n * via `multiple`; single-select highlights one node.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style selection\n * (single: `string`; multiple: `string[]`)\n * - `multiple` — boolean (NEVER `mode=\"multiple\"`)\n * - `size` — \"small\" | \"default\" | \"large\"\n * - `open` / `defaultOpen` / `onOpenChange`\n * - `disabled`, `placeholder`, `className`\n */\n\nexport interface TreeSelectOption {\n value: string\n label: string\n disabled?: boolean\n children?: TreeSelectOption[]\n}\n\nexport interface TreeSelectProps {\n options: TreeSelectOption[]\n value?: string | string[]\n defaultValue?: string | string[]\n onValueChange?: (value: string | string[]) => void\n multiple?: boolean\n placeholder?: string\n size?: \"small\" | \"default\" | \"large\"\n disabled?: boolean\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Expand every node on first render. */\n defaultExpandAll?: boolean\n className?: string\n}\n\nfunction flattenLabels(options: TreeSelectOption[]): Map<string, string> {\n const out = new Map<string, string>()\n const walk = (nodes: TreeSelectOption[]) => {\n for (const n of nodes) {\n out.set(n.value, n.label)\n if (n.children) walk(n.children)\n }\n }\n walk(options)\n return out\n}\n\nfunction collectAllValues(options: TreeSelectOption[]): string[] {\n const out: string[] = []\n const walk = (nodes: TreeSelectOption[]) => {\n for (const n of nodes) {\n out.push(n.value)\n if (n.children) walk(n.children)\n }\n }\n walk(options)\n return out\n}\n\ninterface TreeNodeProps {\n option: TreeSelectOption\n depth: number\n multiple: boolean\n selectedSet: Set<string>\n expandedSet: Set<string>\n onToggleExpand: (value: string) => void\n onSelect: (option: TreeSelectOption) => void\n}\n\nfunction TreeNode({\n option,\n depth,\n multiple,\n selectedSet,\n expandedSet,\n onToggleExpand,\n onSelect,\n}: TreeNodeProps): ReactNode {\n const hasChildren = !!option.children && option.children.length > 0\n const isExpanded = expandedSet.has(option.value)\n const isSelected = selectedSet.has(option.value)\n return (\n <li\n className=\"treeselect-node-wrap\"\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-selected={isSelected || undefined}\n >\n <div\n className=\"treeselect-node\"\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={option.disabled ? \"true\" : undefined}\n style={{ paddingLeft: `calc(var(--spacing-2) + ${depth} * var(--spacing-4))` }}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"treeselect-toggle\"\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n onClick={(event) => {\n event.stopPropagation()\n onToggleExpand(option.value)\n }}\n >\n {isExpanded ? (\n <ChevronDown aria-hidden style={{ width: \"var(--spacing-3)\", height: \"var(--spacing-3)\" }} />\n ) : (\n <ChevronRight aria-hidden style={{ width: \"var(--spacing-3)\", height: \"var(--spacing-3)\" }} />\n )}\n </button>\n ) : (\n <span className=\"treeselect-toggle\" aria-hidden />\n )}\n {multiple ? (\n <Checkbox\n className=\"treeselect-checkbox\"\n checked={isSelected}\n disabled={option.disabled}\n onCheckedChange={() => !option.disabled && onSelect(option)}\n />\n ) : null}\n <button\n type=\"button\"\n className=\"treeselect-label\"\n disabled={option.disabled}\n onClick={() => !option.disabled && onSelect(option)}\n >\n {option.label}\n </button>\n </div>\n {hasChildren ? (\n <ul\n className=\"treeselect-children\"\n role=\"group\"\n data-expanded={isExpanded ? \"true\" : \"false\"}\n >\n {option.children!.map((child) => (\n <TreeNode\n key={child.value}\n option={child}\n depth={depth + 1}\n multiple={multiple}\n selectedSet={selectedSet}\n expandedSet={expandedSet}\n onToggleExpand={onToggleExpand}\n onSelect={onSelect}\n />\n ))}\n </ul>\n ) : null}\n </li>\n )\n}\n\nexport const TreeSelect = forwardRef<HTMLButtonElement, TreeSelectProps>(\n function TreeSelect(\n {\n options,\n value,\n defaultValue,\n onValueChange,\n multiple = false,\n placeholder = \"Select\",\n size = \"default\",\n disabled,\n open,\n defaultOpen,\n onOpenChange,\n defaultExpandAll = false,\n className,\n },\n ref,\n ) {\n const isControlled = value !== undefined\n\n const normalizeIn = (raw: string | string[] | undefined): string[] => {\n if (raw === undefined) return []\n return Array.isArray(raw) ? raw : raw ? [raw] : []\n }\n\n const [internal, setInternal] = useState<string[]>(normalizeIn(defaultValue))\n const currentArray = isControlled ? normalizeIn(value) : internal\n const selectedSet = useMemo(() => new Set(currentArray), [currentArray])\n\n const [isOpenInternal, setIsOpenInternal] = useState<boolean>(defaultOpen ?? false)\n const isOpenControlled = open !== undefined\n const isOpen = isOpenControlled ? !!open : isOpenInternal\n\n const setIsOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setIsOpenInternal(next)\n onOpenChange?.(next)\n },\n [isOpenControlled, onOpenChange],\n )\n\n const allValues = useMemo(() => collectAllValues(options), [options])\n const labelMap = useMemo(() => flattenLabels(options), [options])\n\n const [expandedSet, setExpandedSet] = useState<Set<string>>(() => {\n if (defaultExpandAll) return new Set(allValues)\n // Expand ancestors of any selected node so the selection is visible.\n const out = new Set<string>()\n const walk = (nodes: TreeSelectOption[], parents: string[]) => {\n for (const n of nodes) {\n if (selectedSet.has(n.value)) for (const p of parents) out.add(p)\n if (n.children) walk(n.children, [...parents, n.value])\n }\n }\n walk(options, [])\n return out\n })\n\n const handleToggleExpand = useCallback((nodeValue: string) => {\n setExpandedSet((prev) => {\n const next = new Set(prev)\n if (next.has(nodeValue)) next.delete(nodeValue)\n else next.add(nodeValue)\n return next\n })\n }, [])\n\n const commit = useCallback(\n (nextArray: string[]) => {\n if (!isControlled) setInternal(nextArray)\n if (multiple) onValueChange?.(nextArray)\n else onValueChange?.(nextArray[0] ?? \"\")\n },\n [isControlled, multiple, onValueChange],\n )\n\n const handleSelect = useCallback(\n (option: TreeSelectOption) => {\n if (option.disabled) return\n if (multiple) {\n const next = new Set(currentArray)\n if (next.has(option.value)) next.delete(option.value)\n else next.add(option.value)\n commit(Array.from(next))\n } else {\n commit([option.value])\n setIsOpen(false)\n }\n },\n [multiple, currentArray, commit, setIsOpen],\n )\n\n const triggerText = useMemo(() => {\n if (currentArray.length === 0) return \"\"\n const labels = currentArray.map((v) => labelMap.get(v) ?? v)\n if (multiple) {\n if (labels.length <= 2) return labels.join(\", \")\n return `${labels.slice(0, 2).join(\", \")} +${labels.length - 2}`\n }\n return labels[0]\n }, [currentArray, labelMap, multiple])\n\n return (\n <Popover\n open={isOpen}\n onOpenChange={setIsOpen}\n align=\"start\"\n sideOffset={4}\n className=\"treeselect-content\"\n trigger={\n <button\n ref={ref}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={cn(\n \"input\",\n \"treeselect-trigger\",\n size === \"small\" && \"input-size-small\",\n size === \"large\" && \"input-size-large\",\n className,\n )}\n data-placeholder={triggerText === \"\" ? \"true\" : undefined}\n >\n <span className=\"treeselect-trigger-text\">\n {triggerText === \"\" ? placeholder : triggerText}\n </span>\n <ChevronDown\n aria-hidden\n style={{ width: \"var(--spacing-4)\", height: \"var(--spacing-4)\", flexShrink: 0 }}\n />\n </button>\n }\n >\n <ul className=\"treeselect-tree\" role=\"tree\">\n {options.map((option) => (\n <TreeNode\n key={option.value}\n option={option}\n depth={0}\n multiple={multiple}\n selectedSet={selectedSet}\n expandedSet={expandedSet}\n onToggleExpand={handleToggleExpand}\n onSelect={handleSelect}\n />\n ))}\n </ul>\n </Popover>\n )\n },\n)\n","import { Children, cloneElement, isValidElement } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport {\n useController,\n type ControllerFieldState,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\nimport { Skeleton } from \"../feedback/Skeleton\";\nimport { Spinner } from \"../feedback/Spinner\";\nimport { AutoComplete } from \"./AutoComplete\";\nimport { Cascader } from \"./Cascader\";\nimport { Checkbox } from \"./Checkbox\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport { ColorPicker } from \"./ColorPicker\";\nimport { Field, type FieldHelpTone } from \"./Field\";\nimport { useFormLoading } from \"./Form\";\nimport { InputNumber } from \"./InputNumber\";\nimport { normalizeLoading, type LoadingProp } from \"../../props\";\nimport { RadioGroup } from \"./Radio\";\nimport { Rate } from \"./Rate\";\nimport { Select } from \"./Select\";\nimport { Slider } from \"./Slider\";\nimport { Switch } from \"./Switch\";\nimport { Transfer } from \"./Transfer\";\nimport { TreeSelect } from \"./TreeSelect\";\n\nexport interface FormFieldProps<\n T extends FieldValues = FieldValues,\n TName extends FieldPath<T> = FieldPath<T>,\n> {\n name: TName;\n label?: ReactNode;\n description?: ReactNode;\n required?: boolean;\n optional?: boolean;\n /** Override the auto-derived help tone (defaults to `\"error\"` when invalid,\n * `\"default\"` when `description` is set, otherwise undefined). */\n tone?: FieldHelpTone;\n /** Per-field loading override. `true` → spinner. `{ kind: \"skeleton\" }` →\n * skeleton placeholder (use during initial data fetch). When omitted,\n * inherits from the surrounding `<Form loading={…}>`. */\n loading?: LoadingProp;\n children: ReactElement;\n}\n\n/**\n * Form-wired Field. Reads value/onChange/error from the surrounding\n * `<Form>` via react-hook-form's `useController`, then clones its single\n * child with the right adapter:\n *\n * - Checkbox / Switch → checked + onCheckedChange\n * - InputNumber → value (number) + onValueChange\n * - Select / AutoComplete / ColorPicker / RadioGroup / Rate / Slider /\n * Cascader / Transfer / TreeSelect → value + onValueChange\n * - default (Input / Textarea / InputSearch / etc.)\n * → value + onChange(event)\n */\nexport function FormField<\n T extends FieldValues = FieldValues,\n TName extends FieldPath<T> = FieldPath<T>,\n>({\n name,\n label,\n description,\n required,\n optional,\n tone,\n loading,\n children,\n}: FormFieldProps<T, TName>) {\n const { field, fieldState } = useController<T, TName>({ name });\n const formLoading = useFormLoading();\n const { active: isLoading, kind: loadKind, label: loadLabel } =\n normalizeLoading(loading ?? formLoading);\n\n const error = extractErrorMessage(fieldState);\n const invalid = fieldState.invalid;\n const child = Children.only(children);\n const wired = isValidElement(child)\n ? adaptChild(child as ReactElement, field as ControllerField, invalid)\n : child;\n const resolvedTone: FieldHelpTone | undefined = error\n ? \"error\"\n : (tone ?? (description !== undefined ? \"default\" : undefined));\n\n let body: ReactElement | ReactNode;\n if (isLoading && loadKind === \"skeleton\") {\n body = <Skeleton className=\"h-9 w-full rounded-md\" aria-label={loadLabel} />;\n } else if (isLoading && loadKind === \"spinner\") {\n body = (\n <div className=\"form-field-spin\">\n <span className=\"form-field-spin__control\">{wired}</span>\n <span className=\"form-field-spin__overlay\" aria-hidden>\n <Spinner size=\"sm\" aria-label={loadLabel ?? \"読み込み中\"} />\n </span>\n </div>\n );\n } else {\n body = wired;\n }\n\n return (\n <Field\n label={label}\n required={required}\n optional={optional}\n tone={resolvedTone}\n help={error ?? description}\n >\n {body}\n </Field>\n );\n}\n\ntype ControllerField = ReturnType<\n typeof useController<FieldValues, string>\n>[\"field\"];\n\nconst BOOLEAN_TOGGLES = new Set<unknown>([Checkbox, Switch]);\nconst VALUE_CHANGE_TYPES = new Set<unknown>([\n Select,\n AutoComplete,\n CheckboxGroup,\n ColorPicker,\n RadioGroup,\n Rate,\n Slider,\n Cascader,\n Transfer,\n TreeSelect,\n]);\n\nfunction adaptChild(\n child: ReactElement,\n field: ControllerField,\n invalid: boolean,\n): ReactElement {\n if (BOOLEAN_TOGGLES.has(child.type)) {\n return cloneElement(child as ReactElement<Record<string, unknown>>, {\n checked: Boolean(field.value),\n onCheckedChange: (next: boolean | \"indeterminate\") =>\n field.onChange(next === true),\n onBlur: field.onBlur,\n \"aria-invalid\": invalid || undefined,\n });\n }\n if (child.type === InputNumber) {\n return cloneElement(child as ReactElement<Record<string, unknown>>, {\n value: typeof field.value === \"number\" ? field.value : undefined,\n onValueChange: (next: number | null) => field.onChange(next),\n onBlur: field.onBlur,\n status: invalid ? \"error\" : undefined,\n });\n }\n if (VALUE_CHANGE_TYPES.has(child.type)) {\n return cloneElement(child as ReactElement<Record<string, unknown>>, {\n value: field.value,\n onValueChange: (next: unknown) => field.onChange(next),\n onBlur: field.onBlur,\n status: invalid ? \"error\" : undefined,\n \"aria-invalid\": invalid || undefined,\n });\n }\n return cloneElement(child as ReactElement<Record<string, unknown>>, {\n value: field.value ?? \"\",\n onChange: (event: unknown) => {\n if (event && typeof event === \"object\" && \"target\" in event) {\n const target = (event as { target: { value: unknown } }).target;\n field.onChange(target.value);\n } else {\n field.onChange(event);\n }\n },\n onBlur: field.onBlur,\n ref: field.ref,\n status: invalid ? \"error\" : undefined,\n \"aria-invalid\": invalid || undefined,\n });\n}\n\nfunction extractErrorMessage(state: ControllerFieldState): string | undefined {\n const err = state.error;\n if (!err) return undefined;\n if (typeof err.message === \"string\" && err.message) return err.message;\n if (err.type) return `Invalid (${err.type})`;\n return \"Invalid value\";\n}\n","import {\n forwardRef,\n useCallback,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * LocaleTabs — bare tab strip with status dots per locale.\n *\n * Mirrors the `K:comp-inputs.html:248-284` reference (pattern ①, \"Locale\n * tabs\"). This primitive is the **header-only** subset: the consumer\n * wires the panel below. For the full input + panel composition see\n * the `LocaleInput` composite under `components/composites/locale-input`.\n *\n * Each tab carries a coloured dot signalling translation status:\n * - `translated` → success (green)\n * - `draft` → warning (amber, stale relative to base)\n * - `missing` → destructive (red, no translation yet)\n *\n * The base locale (first in `locales`, or `baseLocale` if provided)\n * carries a subtle \"(基準 / base)\" suffix so reviewers see the fallback\n * source at a glance.\n *\n * @example\n * <LocaleTabs\n * locales={[\n * { code: \"ja\", label: \"日本語\", status: \"translated\" },\n * { code: \"en\", label: \"English\", status: \"translated\" },\n * { code: \"vi\", label: \"Tiếng Việt\", status: \"draft\" },\n * { code: \"zh\", label: \"简体中文\", status: \"missing\" },\n * ]}\n * baseLocale=\"ja\"\n * meta=\"3 / 4 翻訳済\"\n * onAdd={() => openAddLocale()}\n * />\n */\n\nexport type LocaleTabStatus = \"translated\" | \"draft\" | \"missing\";\n\nexport interface LocaleTabItem {\n code: string;\n label?: ReactNode;\n status?: LocaleTabStatus;\n}\n\nexport interface LocaleTabsProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n locales: LocaleTabItem[];\n /** Controlled active locale code. */\n value?: string;\n /** Uncontrolled initial locale code. */\n defaultValue?: string;\n onChange?: (next: string) => void;\n /** Locale labelled \"(基準)\" in its tab. Defaults to `locales[0].code`. */\n baseLocale?: string;\n /** Custom label for the base-locale suffix. Defaults to \"(基準)\". */\n baseLabel?: ReactNode;\n /** Right-side meta string (e.g. \"3 / 4 翻訳済\"). */\n meta?: ReactNode;\n /** Click handler for the \"⊕ 追加\" button — when omitted, no button renders. */\n onAdd?: () => void;\n /** Label for the add button. Defaults to \"⊕ 追加\". */\n addLabel?: ReactNode;\n}\n\nconst DOT_CLASS: Record<LocaleTabStatus, string> = {\n translated: \"\",\n draft: \"draft\",\n missing: \"empty\",\n};\n\nexport const LocaleTabs = forwardRef<HTMLDivElement, LocaleTabsProps>(\n function LocaleTabs(\n {\n locales,\n value: controlled,\n defaultValue,\n onChange,\n baseLocale,\n baseLabel = \"(基準)\",\n meta,\n onAdd,\n addLabel = \"⊕ 追加\",\n className,\n ...rest\n },\n ref,\n ) {\n const [internal, setInternal] = useState<string | undefined>(\n defaultValue ?? locales[0]?.code,\n );\n const active = controlled ?? internal;\n const resolvedBase = baseLocale ?? locales[0]?.code;\n\n const select = useCallback(\n (next: string) => {\n if (controlled === undefined) setInternal(next);\n onChange?.(next);\n },\n [controlled, onChange],\n );\n\n return (\n <div\n ref={ref}\n className={cn(\"loc-tabs\", className)}\n role=\"tablist\"\n {...rest}\n >\n {locales.map((locale) => {\n const status = locale.status ?? \"translated\";\n const isActive = locale.code === active;\n const isBase = locale.code === resolvedBase;\n return (\n <button\n key={locale.code}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n className={cn(isActive && \"on\")}\n onClick={() => select(locale.code)}\n >\n <span className={cn(\"dot\", DOT_CLASS[status])} />\n {locale.label ?? locale.code.toUpperCase()}\n {isBase && (\n <span\n style={{\n fontSize: 10,\n color: \"var(--muted-foreground)\",\n marginLeft: 2,\n }}\n >\n {baseLabel}\n </span>\n )}\n </button>\n );\n })}\n <span className=\"spacer\" />\n {meta !== undefined && <span className=\"meta\">{meta}</span>}\n {onAdd !== undefined && (\n <button\n type=\"button\"\n onClick={onAdd}\n style={{\n border: \"1px solid var(--border)\",\n borderRadius: \"var(--radius-sm)\",\n height: 22,\n padding: \"0 8px\",\n fontSize: 11,\n background: \"var(--background)\",\n }}\n >\n {addLabel}\n </button>\n )}\n </div>\n );\n },\n);\n","import { Check, X } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Checklist — vertical list of pass/fail rules with per-row icon.\n *\n * Mirrors the canonical `.checklist` pattern from\n * `K:comp-inputs.html:196-200` (password-rules) + the CSS atom in\n * `shell.css` (`.checklist`, `.checklist li.ok`, `.checklist li.bad`).\n * Each row carries a leading icon (check / x by default) and a label;\n * row tone follows the canonical semantic palette (`--success` for ok,\n * `--destructive` for bad, `--muted-foreground` for neutral / pending).\n *\n * Typical uses: password-rule hints, validation summaries, \"tasks\n * completed\" lists, capability matrices.\n *\n * @example\n * <Checklist\n * items={[\n * { ok: true, label: \"8文字以上\" },\n * { ok: true, label: \"大文字・小文字を含む\" },\n * { ok: false, label: \"記号 (! @ # …) を 1 つ以上\" },\n * ]}\n * />\n *\n * @example with custom icons + neutral pending state\n * <Checklist\n * items={[\n * { ok: true, label: \"Plan approved\", icon: <Check size={11} /> },\n * { ok: null, label: \"Awaiting review\", icon: <Clock size={11} /> },\n * { ok: false, label: \"Budget exceeded\" },\n * ]}\n * />\n */\n\nexport interface ChecklistItem {\n /** `true` → ok / success; `false` → bad / destructive; `null` → neutral / pending. */\n ok: boolean | null;\n label: ReactNode;\n /** Override the default check / x icon. */\n icon?: ReactNode;\n /** Optional trailing hint text. */\n hint?: ReactNode;\n}\n\nexport interface ChecklistProps extends HTMLAttributes<HTMLUListElement> {\n items: ChecklistItem[];\n /** Icon size in px — defaults to 11 (matches canonical). */\n iconSize?: number;\n}\n\nexport const Checklist = forwardRef<HTMLUListElement, ChecklistProps>(\n function Checklist({ items, iconSize = 11, className, ...rest }, ref) {\n return (\n <ul ref={ref} className={cn(\"checklist\", className)} {...rest}>\n {items.map((item, idx) => {\n const tone =\n item.ok === true ? \"ok\" : item.ok === false ? \"bad\" : undefined;\n const fallbackIcon =\n item.ok === true ? (\n <Check size={iconSize} strokeWidth={3} />\n ) : item.ok === false ? (\n <X size={iconSize} strokeWidth={3} />\n ) : null;\n return (\n <li key={idx} className={cn(tone)}>\n {item.icon ?? fallbackIcon}\n <span>{item.label}</span>\n {item.hint !== undefined && (\n <span\n style={{\n marginLeft: \"auto\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {item.hint}\n </span>\n )}\n </li>\n );\n })}\n </ul>\n );\n },\n);\n","import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * PageHeader — canonical page chrome strip with title + subtitle +\n * breadcrumb slot + action slot.\n *\n * Mirrors `K:comp-pageheader.html` (three reference patterns: compact,\n * overflow, stacked). The atomic CSS classes (`.ph`, `.ph-bar`,\n * `.ph-title`, `.ph-actions`, `.ph-tabs`, `.ph-body`) live in\n * `shell.css`. React owns the slot composition — visual values stay in\n * tokens.\n *\n * Variant semantics:\n *\n * - `compact` → 1 row, title truncates with ellipsis, actions never\n * wrap. Use for index pages with a single primary\n * CTA + 0–2 secondary actions.\n * - `overflow` → 1 row, primary action + 2–3 icon buttons + \"…\"\n * overflow. Same height as `compact`; the variant flag\n * just signals intent in the JSX.\n * - `stacked` → 2 rows; meta / breadcrumb + tabs go on a second\n * row. Use when the page navigates between sub-views.\n *\n * Slots:\n * - `breadcrumb` → rendered above the title (xs muted text per\n * canonical). Passing this auto-bumps the layout to\n * \"stacked\" if `variant` is \"compact\".\n * - `title` → h1 (16px / 500 weight, ellipsis truncate)\n * - `subtitle` → adjacent baseline text (`.sub`, xs muted)\n * - `actions` → right-aligned slot, flex-shrink:0 / no wrap\n * - `tabs` → second-row tab strip (`.ph-tabs`); pair with\n * `<Tabs variant=\"line\">` or a list of `<a>`\n * - `body` → third-row body strip (`.ph-body`), small muted\n * descriptive copy\n *\n * @example compact\n * <PageHeader\n * title=\"従業員シフト · カレンダー\"\n * subtitle=\"月単位の一括割当\"\n * actions={<><Button size=\"small\">+ 一括割当</Button></>}\n * />\n *\n * @example stacked + tabs\n * <PageHeader\n * variant=\"stacked\"\n * breadcrumb={<Breadcrumb>...</Breadcrumb>}\n * title=\"店舗別 · 月次レポート\"\n * actions={...}\n * tabs={<nav>...</nav>}\n * />\n */\n\nexport type PageHeaderVariant = \"compact\" | \"overflow\" | \"stacked\";\nexport type PageHeaderPadding = \"tight\" | \"default\" | \"cozy\" | \"none\";\n\nexport interface PageHeaderProps\n extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n title: ReactNode;\n subtitle?: ReactNode;\n /** Breadcrumb slot rendered above the title (auto-stacks). */\n breadcrumb?: ReactNode;\n /** Right-aligned action slot — icon buttons, buttons, segmented controls. */\n actions?: ReactNode;\n /** Tab strip on a dedicated second row (`.ph-tabs`). */\n tabs?: ReactNode;\n /** Descriptive body strip below the bar (`.ph-body`). */\n body?: ReactNode;\n /** Layout variant — defaults to `compact`. */\n variant?: PageHeaderVariant;\n /** Internal-spacing density. Shares the vocabulary with `<Card>`\n * (cardinal rule 23 §B): tight (10/12) · default (14/16) · cozy\n * (20/24) · none (consumer pads the inside). Default `default`. */\n padding?: PageHeaderPadding;\n}\n\nconst PADDING_CLASS: Record<PageHeaderPadding, string> = {\n tight: \"ph-padding-tight\",\n default: \"\",\n cozy: \"ph-padding-cozy\",\n none: \"ph-padding-none\",\n};\n\nexport const PageHeader = forwardRef<HTMLElement, PageHeaderProps>(\n function PageHeader(\n {\n title,\n subtitle,\n breadcrumb,\n actions,\n tabs,\n body,\n variant,\n padding = \"default\",\n className,\n ...rest\n },\n ref,\n ) {\n // Auto-promote layout when richer slots are present.\n const resolved: PageHeaderVariant =\n variant ?? (breadcrumb || tabs ? \"stacked\" : \"compact\");\n\n const isStacked = resolved === \"stacked\";\n\n return (\n <section\n ref={ref}\n className={cn(\"ph\", `ph-${resolved}`, PADDING_CLASS[padding], className)}\n {...rest}\n >\n <div className=\"ph-bar\">\n <div\n className={cn(\"ph-title\", isStacked && \"ph-title-stacked\")}\n >\n {breadcrumb !== undefined && (\n <div className=\"ph-breadcrumb\">{breadcrumb}</div>\n )}\n <div className=\"ph-title-row\">\n <h1 className=\"ph-h1\">{title}</h1>\n {subtitle !== undefined && (\n <span className=\"sub\">{subtitle}</span>\n )}\n </div>\n </div>\n {actions !== undefined && (\n <div className=\"ph-actions\">{actions}</div>\n )}\n </div>\n {tabs !== undefined && <div className=\"ph-tabs\">{tabs}</div>}\n {body !== undefined && <div className=\"ph-body\">{body}</div>}\n </section>\n );\n },\n);\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * SegmentedControl — single-choice toggle group with no tab-panel.\n *\n * Mirrors the canonical `.seg` strip from\n * `K:comp-pageheader.html:21-24` (day / week / month-style switch).\n * Tabs already covers the case where a switch drives panel content;\n * SegmentedControl is the bare button-row variant for toolbars, view\n * pickers, density toggles, and other \"just pick one\" UIs without\n * panel composition.\n *\n * Two visual variants:\n *\n * - `bar` → connected button row with hairline dividers between\n * items (matches `.seg`; `.seg button + button` border).\n * Default; matches the page-header reference.\n * - `pill` → rounded background, active item lifts onto `--background`\n * with a soft shadow. Matches `.tabs-pills` from Tabs.\n *\n * Controlled or uncontrolled. Pass `items` as an array of\n * `{ value, label, icon?, disabled? }` or compose `<SegmentedControl>`\n * with `<SegmentedItem>` children directly.\n *\n * @example\n * <SegmentedControl\n * items={[\n * { value: \"day\", label: \"日\" },\n * { value: \"week\", label: \"週\" },\n * { value: \"month\", label: \"月\" },\n * ]}\n * defaultValue=\"month\"\n * />\n *\n * @example with icons + controlled state\n * <SegmentedControl\n * value={view}\n * onChange={setView}\n * variant=\"pill\"\n * items={[\n * { value: \"grid\", label: \"Grid\", icon: <LayoutGrid size={13} /> },\n * { value: \"list\", label: \"List\", icon: <List size={13} /> },\n * ]}\n * />\n */\n\nimport type { SizeProp } from \"../../props\";\n\nexport type SegmentedControlVariant = \"bar\" | \"pill\";\n/** Subset of the shared `SizeProp` — SegmentedControl only ships the\n * two compact-side rungs in practice (no `\"large\"` design canon yet). */\nexport type SegmentedControlSize = Exclude<SizeProp, \"large\">;\nexport type SegmentedControlOrientation = \"horizontal\" | \"vertical\";\n\nexport interface SegmentedControlItem<V extends string = string> {\n value: V;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps<V extends string = string>\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n items: SegmentedControlItem<V>[];\n value?: V;\n defaultValue?: V;\n onChange?: (next: V) => void;\n variant?: SegmentedControlVariant;\n size?: SegmentedControlSize;\n /** Axis of the radiogroup — controls Arrow-key direction for the\n * roving-tabindex pattern (per WAI-ARIA APG radiogroup). */\n orientation?: SegmentedControlOrientation;\n /** Accessible name for the group — falls back to a generic role label. */\n \"aria-label\"?: string;\n}\n\nexport function SegmentedControl<V extends string = string>({\n items,\n value: controlled,\n defaultValue,\n onChange,\n variant = \"bar\",\n size = \"default\",\n orientation = \"horizontal\",\n className,\n ...rest\n}: SegmentedControlProps<V>) {\n const [internal, setInternal] = useState<V | undefined>(\n defaultValue ?? items[0]?.value,\n );\n const active = controlled ?? internal;\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n const select = useCallback(\n (next: V) => {\n if (controlled === undefined) setInternal(next);\n onChange?.(next);\n },\n [controlled, onChange],\n );\n\n // WAI-ARIA APG roving-tabindex: only the checked item is in the\n // page Tab order; Arrow keys roam between items in the group.\n // If the active value is disabled / missing, fall back to the\n // first enabled item so the group is always reachable via Tab.\n const enabledIndices = items.reduce<number[]>((acc, item, i) => {\n if (!item.disabled) acc.push(i);\n return acc;\n }, []);\n const activeIndex = items.findIndex((it) => it.value === active);\n const tabStopIndex =\n activeIndex >= 0 && !items[activeIndex]?.disabled\n ? activeIndex\n : (enabledIndices[0] ?? -1);\n\n const moveFocus = useCallback(\n (currentIndex: number, direction: 1 | -1) => {\n const enabled = enabledIndices;\n if (enabled.length === 0) return;\n const currentSlot = enabled.indexOf(currentIndex);\n const nextSlot =\n currentSlot === -1\n ? 0\n : (currentSlot + direction + enabled.length) % enabled.length;\n const nextIndex = enabled[nextSlot]!;\n const nextItem = items[nextIndex]!;\n itemRefs.current[nextIndex]?.focus();\n select(nextItem.value);\n },\n [enabledIndices, items, select],\n );\n\n const handleKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>, index: number) => {\n const forwardKey = orientation === \"vertical\" ? \"ArrowDown\" : \"ArrowRight\";\n const backwardKey = orientation === \"vertical\" ? \"ArrowUp\" : \"ArrowLeft\";\n if (event.key === forwardKey) {\n event.preventDefault();\n moveFocus(index, 1);\n } else if (event.key === backwardKey) {\n event.preventDefault();\n moveFocus(index, -1);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n const first = enabledIndices[0];\n if (first !== undefined) {\n itemRefs.current[first]?.focus();\n select(items[first]!.value);\n }\n } else if (event.key === \"End\") {\n event.preventDefault();\n const last = enabledIndices[enabledIndices.length - 1];\n if (last !== undefined) {\n itemRefs.current[last]?.focus();\n select(items[last]!.value);\n }\n } else if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n const current = items[index];\n if (current && !current.disabled) select(current.value);\n }\n },\n [enabledIndices, items, moveFocus, orientation, select],\n );\n\n const rootClass =\n variant === \"pill\" ? \"tabs-pills\" : \"segmented\";\n\n return (\n <div\n role=\"radiogroup\"\n aria-orientation={orientation}\n className={cn(\n rootClass,\n size === \"small\" && \"segmented-small\",\n className,\n )}\n {...rest}\n >\n {items.map((item, index) => {\n const isActive = item.value === active;\n const itemClass =\n variant === \"pill\" ? \"tabs-pill\" : \"segmented-item\";\n const isTabStop = index === tabStopIndex;\n return (\n <button\n key={item.value}\n ref={(node) => {\n itemRefs.current[index] = node;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={isActive}\n data-state={isActive ? \"active\" : \"inactive\"}\n disabled={item.disabled}\n tabIndex={isTabStop ? 0 : -1}\n className={itemClass}\n onClick={() => !item.disabled && select(item.value)}\n onKeyDown={(event) => handleKeyDown(event, index)}\n >\n {item.icon}\n {item.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Label — form-field label. Wraps Radix Label so `htmlFor` /\n * click-to-focus works out of the box. Maps to `.label` in tokens.css.\n *\n * Pair with <Input /> + an optional `.help` paragraph:\n *\n * <Label htmlFor=\"name\">Display name</Label>\n * <Input id=\"name\" />\n * <p className=\"help\">Visible to teammates.</p>\n */\nexport const Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(function Label({ className, ...rest }, ref) {\n return <LabelPrimitive.Root ref={ref} className={cn(\"label\", className)} {...rest} />\n})\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\nexport type TabsVariant = \"line\" | \"pills\"\nexport type TabsOrientation = \"horizontal\" | \"vertical\"\nexport type TabsPlacement = \"top\" | \"right\" | \"bottom\" | \"left\"\n\nexport interface TabsItem {\n value: string\n label: ReactNode\n content?: ReactNode\n disabled?: boolean\n}\n\nexport interface TabsProps\n extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.Root>, \"children\"> {\n items: TabsItem[]\n variant?: TabsVariant\n placement?: TabsPlacement\n listClassName?: string\n contentClassName?: string\n children?: ReactNode\n}\n\nexport const Tabs = forwardRef<\n ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(function Tabs(\n {\n items,\n variant = \"line\",\n placement = \"top\",\n className,\n listClassName,\n contentClassName,\n orientation,\n children,\n ...rest\n },\n ref,\n) {\n const radixOrientation: TabsOrientation =\n orientation ?? (placement === \"left\" || placement === \"right\" ? \"vertical\" : \"horizontal\")\n const listClass = variant === \"pills\" ? \"tabs-pills\" : \"tabs\"\n const triggerClass = variant === \"pills\" ? \"tabs-pill\" : \"tab\"\n\n return (\n <TabsPrimitive.Root\n ref={ref}\n orientation={radixOrientation}\n data-placement={placement}\n className={cn(\"tabs-root\", className)}\n {...rest}\n >\n <TabsPrimitive.List className={cn(listClass, listClassName)}>\n {items.map((item) => (\n <TabsPrimitive.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={triggerClass}\n >\n {item.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n {items.map((item) =>\n item.content === undefined ? null : (\n <TabsPrimitive.Content\n key={item.value}\n value={item.value}\n className={contentClassName}\n >\n {item.content}\n </TabsPrimitive.Content>\n ),\n )}\n {children}\n </TabsPrimitive.Root>\n )\n})\n","import type { ComponentProps, CSSProperties, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Avatar — Ant-Design-shaped: shape + size + icon + image + initials.\n *\n * <Avatar size=\"large\" shape=\"square\" src={url} />\n * <Avatar size={48} icon={<UserOutlined />} />\n * <Avatar shape=\"square\" color=\"oklch(56% 0.15 240)\">F</Avatar>\n */\n\nexport type AvatarShape = \"circle\" | \"square\";\nexport type AvatarSizeToken = \"xs\" | \"sm\" | \"default\" | \"lg\" | \"xl\";\nexport type AvatarSize = AvatarSizeToken | number;\n\nexport interface AvatarProps\n extends Omit<ComponentProps<\"span\">, \"color\"> {\n /** Shape — circle (default) or square (rounded-md). */\n shape?: AvatarShape;\n /** Token name (xs|sm|default|lg|xl) or pixel number. */\n size?: AvatarSize;\n /** Image URL — wins over `icon` / children. */\n src?: string;\n alt?: string;\n /** Icon slot — wins over children when `src` is unset. */\n icon?: ReactNode;\n /**\n * Display name — first two initials are rendered as the fallback\n * when no `src` / `icon` / children are passed. Mirrors the\n * design-handoff `<Avatar name=\"Satoshi F\" />` shape (ui-kit.jsx).\n */\n name?: string;\n /**\n * Background colour — used for initials avatars to tint the bg\n * with a brand hue. Accepts any CSS colour value.\n */\n color?: string;\n /** Foreground colour override (rare; defaults follow `color`). */\n textColor?: string;\n /**\n * Variant alias for legacy callers. `brand` maps to color =\n * `var(--brand)` + textColor = `var(--primary-foreground)`.\n */\n variant?: \"default\" | \"brand\";\n}\n\nconst SIZE_PX: Record<AvatarSizeToken, number> = {\n xs: 20,\n sm: 24,\n default: 28,\n lg: 36,\n xl: 48,\n};\n\nfunction resolveSizePx(size: AvatarSize | undefined): number {\n if (size === undefined) return SIZE_PX.default;\n if (typeof size === \"number\") return size;\n return SIZE_PX[size];\n}\n\nfunction deriveInitials(name: string): string {\n return name\n .trim()\n .split(/\\s+/)\n .map((part) => part[0])\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n}\n\nexport function Avatar({\n shape = \"circle\",\n size,\n src,\n alt,\n icon,\n name,\n color,\n textColor,\n variant,\n className,\n style,\n children,\n ...rest\n}: AvatarProps) {\n const px = resolveSizePx(size);\n const fontPx = Math.round(px * 0.42);\n\n const inline: CSSProperties = {\n width: `${px}px`,\n height: `${px}px`,\n fontSize: `${fontPx}px`,\n borderRadius: shape === \"square\" ? \"var(--radius-md)\" : \"var(--radius-full)\",\n ...style,\n };\n if (color) inline.background = color;\n if (textColor) inline.color = textColor;\n\n const isBrand = variant === \"brand\";\n\n return (\n <span\n className={cn(\"avatar\", isBrand && \"brand\", className)}\n style={inline}\n {...rest}\n >\n {src ? (\n <img\n src={src}\n alt={alt ?? \"\"}\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"inherit\",\n objectFit: \"cover\",\n }}\n />\n ) : icon !== undefined ? (\n icon\n ) : children !== undefined ? (\n children\n ) : name ? (\n deriveInitials(name)\n ) : null}\n </span>\n );\n}\n","import type { ComponentProps, CSSProperties, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Statistic — Ant-Design KPI tile.\n *\n * <Statistic title=\"Active users\" value={1024} />\n * <Statistic title=\"Revenue\" value={1234.56} precision={2} prefix=\"¥\" />\n * <Statistic title=\"Uptime\" value={99.95} suffix=\"%\" />\n * <Statistic title=\"MRR\" value={5800000} bordered />\n *\n * The `bordered` prop renders the tile with its own card-style frame\n * (border + radius + padding + background) so consumers don't need to\n * wrap with `<Card>` just to get a surface. Default `false` keeps the\n * tile transparent for use inside grids / dashboards where the parent\n * surface already provides the chrome.\n */\n\nexport interface StatisticProps extends Omit<ComponentProps<\"div\">, \"title\" | \"prefix\"> {\n title?: ReactNode;\n value: number | string;\n /** Decimal places when value is a number. */\n precision?: number;\n /** Prepended to value (e.g. \"¥\", icon). */\n prefix?: ReactNode;\n /** Appended to value (e.g. \"%\", \"/mo\"). */\n suffix?: ReactNode;\n /** Locale-aware grouping (default `true` — uses Intl.NumberFormat). */\n groupSeparator?: boolean;\n /** Custom format function. Overrides precision + groupSeparator. */\n formatter?: (value: number | string) => ReactNode;\n /** Text alignment for the tile (default `left`). */\n align?: \"left\" | \"right\" | \"center\";\n /** Font size of the value (px). */\n valueSize?: number;\n /** Render the tile as a standalone card surface (border + radius +\n * padding + bg). Default `false` — the tile is transparent so it\n * composes inside grids that supply their own chrome. */\n bordered?: boolean;\n}\n\nconst ALIGN_CLASS: Record<NonNullable<StatisticProps[\"align\"]>, string> = {\n left: \"items-start text-left\",\n right: \"items-end text-right\",\n center: \"items-center text-center\",\n};\n\nfunction formatValue(\n value: number | string,\n precision?: number,\n groupSeparator = true,\n): string {\n if (typeof value !== \"number\") return String(value);\n const fixed = precision === undefined ? String(value) : value.toFixed(precision);\n if (!groupSeparator) return fixed;\n try {\n return new Intl.NumberFormat(undefined, {\n minimumFractionDigits: precision ?? 0,\n maximumFractionDigits: precision ?? 20,\n }).format(value);\n } catch {\n return fixed;\n }\n}\n\nexport function Statistic({\n title,\n value,\n precision,\n prefix,\n suffix,\n groupSeparator = true,\n formatter,\n align = \"left\",\n valueSize,\n bordered = false,\n className,\n style,\n ...rest\n}: StatisticProps) {\n const formatted = formatter\n ? formatter(value)\n : formatValue(value, precision, groupSeparator);\n const valueStyle: CSSProperties = valueSize\n ? { fontSize: `${valueSize}px` }\n : {};\n return (\n <div\n className={cn(\n \"statistic\",\n ALIGN_CLASS[align],\n bordered && \"statistic-bordered\",\n className,\n )}\n style={style}\n {...rest}\n >\n {title !== undefined && <div className=\"statistic-title\">{title}</div>}\n <div className=\"statistic-value\" style={valueStyle}>\n {prefix !== undefined && (\n <span className=\"statistic-prefix\">{prefix}</span>\n )}\n <span className=\"statistic-number\">{formatted}</span>\n {suffix !== undefined && (\n <span className=\"statistic-suffix\">{suffix}</span>\n )}\n </div>\n </div>\n );\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Empty — Ant-Design empty-state placeholder.\n *\n * <Empty description=\"No data\" />\n * <Empty image={<CustomIllustration />} description=\"Nothing here yet\">\n * <Button>Create one</Button>\n * </Empty>\n */\n\nexport interface EmptyProps extends ComponentProps<\"div\"> {\n /** Image / illustration / icon at the top. */\n image?: ReactNode;\n /** Text below the image (default `null` — no text). */\n description?: ReactNode;\n /** Action area below description (typically a button). */\n children?: ReactNode;\n}\n\nconst DEFAULT_IMAGE = (\n <svg\n width=\"64\"\n height=\"48\"\n viewBox=\"0 0 64 48\"\n fill=\"none\"\n role=\"img\"\n aria-hidden=\"true\"\n >\n <ellipse\n cx=\"32\"\n cy=\"42\"\n rx=\"28\"\n ry=\"3\"\n fill=\"currentColor\"\n opacity=\"0.1\"\n />\n <path\n d=\"M14 18l8-12h20l8 12M14 18v18h36V18M14 18h36\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity=\"0.45\"\n />\n <path\n d=\"M22 18l4 6h12l4-6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity=\"0.45\"\n />\n </svg>\n);\n\nexport function Empty({\n image,\n description,\n children,\n className,\n ...rest\n}: EmptyProps) {\n return (\n <div className={cn(\"empty\", className)} {...rest}>\n <div className=\"empty-image\">{image ?? DEFAULT_IMAGE}</div>\n {description !== undefined && (\n <p className=\"empty-description\">{description}</p>\n )}\n {children && <div className=\"empty-footer\">{children}</div>}\n </div>\n );\n}\n","import type { ComponentProps, CSSProperties, MouseEvent, ReactNode } from \"react\";\nimport { cn } from \"../cn\";\nimport type { ColorProp } from \"../../props\";\n\n/**\n * Tag — Ant-Design label chip.\n *\n * <Tag>basic</Tag>\n * <Tag color=\"success\">done</Tag>\n * <Tag color=\"oklch(56% 0.15 240)\">custom hue</Tag>\n * <Tag closable onClose={() => …}>removable</Tag>\n * <Tag bordered={false}>borderless</Tag>\n *\n * Distinct from <Badge>: Badge is for status pills (a numeric or\n * single short word), Tag is for labels (potentially many in a row,\n * potentially closable).\n */\n\n/**\n * Tag accepts the framework's full semantic palette except `\"secondary\"`\n * (that one is reserved for Typography text-dimming). Aliased from the\n * shared `ColorProp` so the vocabulary stays in lockstep with Alert,\n * Result, Timeline, etc.\n */\nexport type TagPresetColor = Exclude<ColorProp, \"secondary\">;\n\nexport interface TagProps extends Omit<ComponentProps<\"span\">, \"color\"> {\n /** Preset hue or a custom CSS color. */\n color?: TagPresetColor | string;\n /** Show outline (default `true`). Borderless = solid-tinted background only. */\n bordered?: boolean;\n /** Show an × button. Calls `onClose`. */\n closable?: boolean;\n onClose?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Leading icon. */\n icon?: ReactNode;\n}\n\nconst PRESET_VAR: Record<TagPresetColor, string> = {\n default: \"var(--muted-foreground)\",\n success: \"var(--success)\",\n warning: \"var(--warning)\",\n destructive: \"var(--destructive)\",\n info: \"var(--info)\",\n attention: \"var(--attention)\",\n primary: \"var(--primary)\",\n};\n\nfunction resolveHue(color: TagPresetColor | string | undefined): string {\n if (!color) return PRESET_VAR.default;\n if (color in PRESET_VAR) return PRESET_VAR[color as TagPresetColor];\n return color;\n}\n\nexport function Tag({\n color,\n bordered = true,\n closable,\n onClose,\n icon,\n className,\n style,\n children,\n ...rest\n}: TagProps) {\n const hue = resolveHue(color);\n\n const inline: CSSProperties = {\n color: hue,\n background: `color-mix(in oklch, ${hue} 14%, transparent)`,\n borderColor: bordered ? `color-mix(in oklch, ${hue} 35%, transparent)` : \"transparent\",\n ...style,\n };\n\n return (\n <span\n className={cn(\"tag\", !bordered && \"tag-borderless\", className)}\n style={inline}\n {...rest}\n >\n {icon !== undefined && <span className=\"tag-icon\">{icon}</span>}\n <span className=\"tag-label\">{children}</span>\n {closable && (\n <button\n type=\"button\"\n className=\"tag-close\"\n onClick={onClose}\n aria-label=\"Remove tag\"\n >\n ×\n </button>\n )}\n </span>\n );\n}\n","import { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport { Info, CheckCircle2, AlertTriangle, AlertOctagon } from \"lucide-react\";\nimport { cn } from \"../cn\";\nimport type { FeedbackColorProp } from \"../../props\";\n\n/**\n * Alert — Ant-Design banner-style notice.\n *\n * <Alert color=\"info\" title=\"5月度の締めは 5/31 (土) 23:59 です\" />\n * <Alert\n * color=\"warning\"\n * title=\"3 件の打刻漏れがあります\"\n * description=\"本日中に確認してください。\"\n * actions={<Button size=\"small\">確認する</Button>}\n * closable\n * onClose={() => …}\n * />\n * <Alert variant=\"banner\" color=\"info\" title=\"メンテナンス予定 …\" />\n *\n * Concept mapping (Ant → @godxjp/ui vocabulary per cardinal rule 23 §B):\n * - Ant `type` → `color` (semantic role)\n * - Ant `banner` → `variant=\"banner\"` (full-width borderless)\n * - Ant `message` → `title` (ReactNode slot)\n * - Ant `description` → `description` (ReactNode slot)\n * - Ant `action` → `actions` (plural — matches Card)\n * - Ant `showIcon` → boolean (omit `icon` + set false → no icon)\n * - Ant `closeIcon` → not exposed; default × ships\n * - Ant `closable` → already vocab (Tag uses it)\n * - Ant `onClose` → onClose callback\n */\n\n/** Alias of the shared `FeedbackColorProp` — same shape as\n * ResultColor / ProgressColor; kept as a named export for back-compat. */\nexport type AlertColor = FeedbackColorProp;\n\nexport type AlertVariant = \"outlined\" | \"banner\";\n\nexport interface AlertProps\n extends Omit<ComponentProps<\"div\">, \"color\" | \"title\"> {\n /** Semantic role. Defaults to `default`. */\n color?: AlertColor;\n /** Outlined card (default) or full-width banner. */\n variant?: AlertVariant;\n /** Primary message. */\n title?: ReactNode;\n /** Optional secondary body text. */\n description?: ReactNode;\n /** Leading icon. Omit to auto-pick a semantic icon for the color. */\n icon?: ReactNode;\n /** Render an × close button. */\n closable?: boolean;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Footer action slot (typically a Button group). */\n actions?: ReactNode;\n}\n\nconst DEFAULT_ICON: Record<AlertColor, ReactNode> = {\n default: <Info aria-hidden=\"true\" width={16} height={16} />,\n info: <Info aria-hidden=\"true\" width={16} height={16} />,\n success: <CheckCircle2 aria-hidden=\"true\" width={16} height={16} />,\n warning: <AlertTriangle aria-hidden=\"true\" width={16} height={16} />,\n destructive: <AlertOctagon aria-hidden=\"true\" width={16} height={16} />,\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n color = \"default\",\n variant = \"outlined\",\n title,\n description,\n icon,\n closable,\n onClose,\n actions,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const resolvedIcon = icon === undefined ? DEFAULT_ICON[color] : icon;\n const showIcon = resolvedIcon !== null && resolvedIcon !== false;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"alert\",\n `alert-color-${color}`,\n `alert-variant-${variant}`,\n className,\n )}\n {...rest}\n >\n {showIcon && <span className=\"alert-icon\">{resolvedIcon}</span>}\n <div className=\"alert-body\">\n {title !== undefined && <div className=\"alert-title\">{title}</div>}\n {description !== undefined && (\n <div className=\"alert-desc\">{description}</div>\n )}\n {children}\n {actions !== undefined && (\n <div className=\"alert-actions\">{actions}</div>\n )}\n </div>\n {closable && (\n <button\n type=\"button\"\n className=\"alert-close\"\n aria-label=\"Close\"\n onClick={onClose}\n >\n ×\n </button>\n )}\n </div>\n );\n});\n","import { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport {\n AlertTriangle,\n CheckCircle2,\n Info,\n XCircle,\n} from \"lucide-react\";\nimport { cn } from \"../cn\";\nimport type { FeedbackColorProp } from \"../../props\";\n\n/**\n * Result — page-level outcome surface (Ant-Design `Result` shape).\n *\n * <Result\n * color=\"success\"\n * title=\"ご注文が完了しました\"\n * description=\"番号 No. 2026-05-17-0042 でお手元に届きます。\"\n * extra={<Button>注文履歴を見る</Button>}\n * />\n *\n * Concept mapping (Ant → @godxjp/ui vocabulary per cardinal rule 23 §B):\n * - Ant `status` → `color` (semantic role; HTTP-status\n * shortcuts dropped — consumers\n * wire their own icon)\n * - Ant `title` → `title` (ReactNode slot)\n * - Ant `subTitle` → `description` (matches Alert vocabulary)\n * - Ant `icon` → `icon` (ReactNode slot)\n * - Ant `extra` → `extra` (matches Card footer slot)\n */\n\n/** Alias of the shared `FeedbackColorProp` — same shape as\n * AlertColor / ProgressColor; kept as a named export for back-compat. */\nexport type ResultColor = FeedbackColorProp;\n\nexport interface ResultProps\n extends Omit<ComponentProps<\"div\">, \"color\" | \"title\"> {\n /** Semantic role. Defaults to `info`. */\n color?: ResultColor;\n /** Primary headline. */\n title?: ReactNode;\n /** Secondary body text. */\n description?: ReactNode;\n /** Leading visual. Omit to auto-pick a semantic icon for the color. */\n icon?: ReactNode;\n /** Action area below the description (typically a Button group). */\n extra?: ReactNode;\n}\n\nconst DEFAULT_ICON: Record<ResultColor, ReactNode> = {\n default: <Info aria-hidden=\"true\" width={64} height={64} />,\n info: <Info aria-hidden=\"true\" width={64} height={64} />,\n success: <CheckCircle2 aria-hidden=\"true\" width={64} height={64} />,\n warning: <AlertTriangle aria-hidden=\"true\" width={64} height={64} />,\n destructive: <XCircle aria-hidden=\"true\" width={64} height={64} />,\n};\n\nexport const Result = forwardRef<HTMLDivElement, ResultProps>(function Result(\n {\n color = \"info\",\n title,\n description,\n icon,\n extra,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const resolvedIcon = icon === undefined ? DEFAULT_ICON[color] : icon;\n\n return (\n <div\n ref={ref}\n role=\"status\"\n className={cn(\"result\", `result-color-${color}`, className)}\n {...rest}\n >\n <div className=\"result-icon\">{resolvedIcon}</div>\n {title !== undefined && <h3 className=\"result-title\">{title}</h3>}\n {description !== undefined && (\n <p className=\"result-desc\">{description}</p>\n )}\n {children}\n {extra !== undefined && <div className=\"result-extra\">{extra}</div>}\n </div>\n );\n});\n","import {\n forwardRef,\n useState,\n type ComponentProps,\n type ElementType,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Typography — Title / Paragraph / Text / Link primitive family.\n *\n * <Typography.Title size={2}>Heading</Typography.Title>\n * <Typography.Paragraph>Lorem ipsum…</Typography.Paragraph>\n * <Typography.Text color=\"secondary\" strong>label</Typography.Text>\n * <Typography.Text code>code</Typography.Text>\n * <Typography.Text copyable>kb@famgia.com</Typography.Text>\n * <Typography.Text truncate>truncate me</Typography.Text>\n * <Typography.Paragraph truncate={{ rows: 3 }}>multi-line clamp</Typography.Paragraph>\n * <Typography.Link href=\"/x\">jump</Typography.Link>\n *\n * Vocabulary (per CLAUDE.md §23.B):\n * - `size` (1..5) — dimensional scale for Title; maps to the canon\n * heading mapping declared in `theme.css`. Same name as the\n * framework-wide `size` vocabulary entry (Button, Input, Avatar,\n * Tag, Badge, IconButton).\n * - `color` — semantic role; identical enum to Tag/Badge/Alert.\n * - `copyable` / `disabled` — adjective-boolean state, same pattern\n * as Tag's `closable` / Input's `disabled`.\n * - `truncate` — `true | { rows: N }`; framework-owned name (NOT\n * Ant's `ellipsis`).\n * - `strong` / `italic` / `underline` / `del` / `mark` / `code` /\n * `keyboard` — HTML5 semantic inline elements; conveniences, not\n * Ant-specific.\n *\n * Cardinal rules honoured:\n * §14 — purely structural primitive (no Radix peer needed)\n * §21 — every axis (theme/accent/density/font-size) flows via tokens\n * §22 — every literal mapped to an existing token; no new tokens;\n * heading scale follows the canon mapping declared in\n * `theme.css` (h1=4xl, h2=2xl, h3=xl, h4=lg, h5=md).\n * §23 — vocabulary first; no Ant-named props leak in.\n * §25 — primitive is the canon; all visuals live in `.typography*`\n * classes in `shell.css`. No inline `style={{...}}`.\n */\n\n// ─── Shared types ────────────────────────────────────────────────\n\nexport type TypographyColor =\n | \"default\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"attention\"\n | \"info\"\n | \"destructive\";\n\n/** Single-line truncate (`true`) or multi-line clamp (`{ rows: N }`). */\nexport type TypographyTruncate = boolean | { rows?: number };\n\nexport interface TypographyCommonProps {\n color?: TypographyColor;\n disabled?: boolean;\n /** Bold weight via `--font-weight-bold`. */\n strong?: boolean;\n italic?: boolean;\n underline?: boolean;\n /** Line-through. */\n del?: boolean;\n /** Highlight pill — wa-iro 山吹 (warning) tint. */\n mark?: boolean;\n /** Render as inline `<code>` chip. */\n code?: boolean;\n /** Render as inline `<kbd>` chip. */\n keyboard?: boolean;\n /** Truncate to one or more rows with ellipsis. */\n truncate?: TypographyTruncate;\n /** Show a copy icon-button after the text. */\n copyable?: boolean | { text?: string; onCopy?: () => void };\n}\n\nconst COLOR_CLASS: Record<TypographyColor, string> = {\n default: \"\",\n secondary: \"typography-color-secondary\",\n success: \"typography-color-success\",\n warning: \"typography-color-warning\",\n attention: \"typography-color-attention\",\n info: \"typography-color-info\",\n destructive: \"typography-color-destructive\",\n};\n\nfunction commonClasses(p: TypographyCommonProps): string {\n return cn(\n p.color && p.color !== \"default\" && COLOR_CLASS[p.color],\n p.disabled && \"typography-disabled\",\n p.strong && \"typography-strong\",\n p.italic && \"typography-italic\",\n p.underline && \"typography-underline\",\n p.del && \"typography-delete\",\n p.mark && \"typography-mark\",\n p.code && \"typography-code\",\n p.keyboard && \"typography-keyboard\",\n p.truncate === true && \"typography-ellipsis\",\n typeof p.truncate === \"object\" &&\n p.truncate !== null &&\n ((p.truncate.rows ?? 1) > 1\n ? \"typography-ellipsis-multi\"\n : \"typography-ellipsis\"),\n );\n}\n\nfunction truncateStyle(\n t: TypographyTruncate | undefined,\n): React.CSSProperties | undefined {\n if (!t || typeof t !== \"object\") return undefined;\n const rows = t.rows ?? 1;\n if (rows <= 1) return undefined;\n return { WebkitLineClamp: rows } as React.CSSProperties;\n}\n\n// ─── Copyable affordance ────────────────────────────────────────\n\nfunction useCopyable(\n copyable: TypographyCommonProps[\"copyable\"],\n rawText: ReactNode,\n) {\n const [copied, setCopied] = useState(false);\n if (!copyable) return null;\n const onCopy = async (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n const text =\n typeof copyable === \"object\" && copyable.text\n ? copyable.text\n : typeof rawText === \"string\"\n ? rawText\n : \"\";\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (typeof copyable === \"object\" && copyable.onCopy) copyable.onCopy();\n window.setTimeout(() => setCopied(false), 2000);\n } catch {\n /* clipboard rejected — fail silently */\n }\n };\n return (\n <button\n type=\"button\"\n className={cn(\"typography-action\", copied && \"copied\")}\n onClick={onCopy}\n aria-label={copied ? \"Copied\" : \"Copy\"}\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.75}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n {copied ? (\n <polyline points=\"20 6 9 17 4 12\" />\n ) : (\n <>\n <rect x={9} y={9} width={13} height={13} rx={2} ry={2} />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </>\n )}\n </svg>\n </button>\n );\n}\n\n// ─── Title ───────────────────────────────────────────────────────\n\nexport type TitleSize = 1 | 2 | 3 | 4 | 5;\n\nexport interface TitleProps\n extends Omit<ComponentProps<\"h1\">, \"color\">,\n TypographyCommonProps {\n /** Heading scale — renders `<h{size}>` and binds the canon\n * font-size token. `1` = `--text-4xl` (h1 cap), `2` = `--text-2xl`\n * (h2), `3` = `--text-xl` (page title), `4` = `--text-lg`\n * (subheading), `5` = `--text-md` (content body). */\n size?: TitleSize;\n}\n\nexport const Title = forwardRef<HTMLHeadingElement, TitleProps>(function Title(\n {\n size = 1,\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n copyable,\n className,\n children,\n style,\n ...rest\n },\n ref,\n) {\n const Tag = `h${size}` as ElementType;\n const action = useCopyable(copyable, children);\n return (\n <Tag\n ref={ref}\n className={cn(\n \"typography typography-title\",\n `typography-title-${size}`,\n commonClasses({\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n }),\n className,\n )}\n style={{ ...truncateStyle(truncate), ...style }}\n {...rest}\n >\n {children}\n {action}\n </Tag>\n );\n});\n\n// ─── Paragraph ───────────────────────────────────────────────────\n\nexport interface ParagraphProps\n extends Omit<ComponentProps<\"p\">, \"color\">,\n TypographyCommonProps {}\n\nexport const Paragraph = forwardRef<HTMLParagraphElement, ParagraphProps>(\n function Paragraph(\n {\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n copyable,\n className,\n children,\n style,\n ...rest\n },\n ref,\n ) {\n const action = useCopyable(copyable, children);\n return (\n <p\n ref={ref}\n className={cn(\n \"typography typography-paragraph\",\n commonClasses({\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n }),\n className,\n )}\n style={{ ...truncateStyle(truncate), ...style }}\n {...rest}\n >\n {children}\n {action}\n </p>\n );\n },\n);\n\n// ─── Text ────────────────────────────────────────────────────────\n\nexport interface TextProps\n extends Omit<ComponentProps<\"span\">, \"color\">,\n TypographyCommonProps {}\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(function Text(\n {\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n copyable,\n className,\n children,\n style,\n ...rest\n },\n ref,\n) {\n const action = useCopyable(copyable, children);\n return (\n <span\n ref={ref}\n className={cn(\n \"typography typography-text\",\n commonClasses({\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n }),\n className,\n )}\n style={{ ...truncateStyle(truncate), ...style }}\n {...rest}\n >\n {children}\n {action}\n </span>\n );\n});\n\n// ─── Link ────────────────────────────────────────────────────────\n\nexport interface LinkProps\n extends Omit<ComponentProps<\"a\">, \"color\">,\n Omit<TypographyCommonProps, \"color\"> {\n /** Override link colour (default `--primary`). Use\n * `color=\"destructive\"` etc. when the link's semantic role is\n * non-default. */\n color?: TypographyColor;\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n copyable,\n className,\n children,\n style,\n ...rest\n },\n ref,\n) {\n const action = useCopyable(copyable, children);\n return (\n <a\n ref={ref}\n className={cn(\n \"typography typography-link\",\n commonClasses({\n color,\n disabled,\n strong,\n italic,\n underline,\n del,\n mark,\n code,\n keyboard,\n truncate,\n }),\n className,\n )}\n style={{ ...truncateStyle(truncate), ...style }}\n aria-disabled={disabled || undefined}\n {...rest}\n >\n {children}\n {action}\n </a>\n );\n});\n\n// ─── Namespaced export ───────────────────────────────────────────\n\nexport const Typography = {\n Title,\n Paragraph,\n Text,\n Link,\n};\n","import type { ComponentProps, ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\nexport interface DescriptionsOption {\n label: ReactNode\n value: ReactNode\n span?: number\n className?: string\n}\n\nexport interface DescriptionsProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n title?: ReactNode\n extra?: ReactNode\n items: DescriptionsOption[]\n column?: number\n layout?: \"horizontal\" | \"vertical\"\n bordered?: boolean\n size?: \"small\" | \"default\" | \"large\"\n}\n\nconst SIZE_CLASS: Record<NonNullable<DescriptionsProps[\"size\"]>, string> = {\n small: \"descriptions-size-small\",\n default: \"\",\n large: \"descriptions-size-large\",\n}\n\nexport function Descriptions({\n title,\n extra,\n items,\n column = 3,\n layout = \"horizontal\",\n bordered = false,\n size = \"default\",\n className,\n style,\n ...rest\n}: DescriptionsProps) {\n return (\n <div\n className={cn(\n \"descriptions\",\n layout === \"vertical\" && \"descriptions-vertical\",\n bordered && \"descriptions-bordered\",\n SIZE_CLASS[size],\n className,\n )}\n style={{\n gridTemplateColumns: `repeat(${column}, minmax(0, 1fr))`,\n ...style,\n }}\n {...rest}\n >\n {(title !== undefined || extra !== undefined) && (\n <div className=\"descriptions-header\">\n {title !== undefined && (\n <h3 className=\"descriptions-title\">{title}</h3>\n )}\n {extra !== undefined && (\n <div className=\"descriptions-extra\">{extra}</div>\n )}\n </div>\n )}\n <div\n className=\"descriptions-body\"\n style={{\n gridTemplateColumns: `repeat(${column}, minmax(0, 1fr))`,\n }}\n >\n {items.map((item, index) => (\n <div\n key={`${String(item.label)}-${index}`}\n className={cn(\"descriptions-item\", item.className)}\n style={{ gridColumn: `span ${item.span ?? 1}` }}\n >\n <div className=\"descriptions-item-label\">{item.label}</div>\n <div className=\"descriptions-item-value\">{item.value}</div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\"\nimport { cn } from \"../cn\"\n\n/**\n * Separator — horizontal / vertical divider. Wraps Radix Separator for\n * ARIA + decorative semantics. Maps to `.divider` styling in tokens.css\n * (1px border, theme-aware color).\n */\nexport const Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, orientation = \"horizontal\", decorative = true, ...rest }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n orientation={orientation}\n decorative={decorative}\n className={cn(\n orientation === \"horizontal\" ? \"divider\" : \"\",\n className,\n )}\n style={\n orientation === \"vertical\"\n ? { width: 1, height: \"100%\", background: \"var(--border)\", border: 0 }\n : undefined\n }\n {...rest}\n />\n )\n})\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { type ComponentPropsWithoutRef, type ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\nexport interface DropdownMenuOption {\n key: string\n label?: ReactNode\n onSelect?: ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item>[\"onSelect\"]\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n shortcut?: ReactNode\n type?: \"item\" | \"label\" | \"separator\"\n}\n\nexport interface DropdownMenuProps\n extends Omit<ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root>, \"children\"> {\n trigger: ReactNode\n items: DropdownMenuOption[]\n align?: ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>[\"align\"]\n sideOffset?: number\n contentClassName?: string\n}\n\nexport function DropdownMenu({\n trigger,\n items,\n align,\n sideOffset = 6,\n contentClassName,\n ...rootProps\n}: DropdownMenuProps) {\n return (\n <DropdownMenuPrimitive.Root {...rootProps}>\n <DropdownMenuPrimitive.Trigger asChild>{trigger}</DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\"dropdown-menu-content\", contentClassName)}\n >\n {items.map((item) => {\n if (item.type === \"separator\") {\n return (\n <DropdownMenuPrimitive.Separator\n key={item.key}\n className=\"dropdown-menu-separator\"\n />\n )\n }\n if (item.type === \"label\") {\n return (\n <DropdownMenuPrimitive.Label\n key={item.key}\n className=\"dropdown-menu-label\"\n >\n {item.label}\n </DropdownMenuPrimitive.Label>\n )\n }\n return (\n <DropdownMenuPrimitive.Item\n key={item.key}\n disabled={item.disabled}\n onSelect={item.onSelect}\n className=\"dropdown-menu-item\"\n data-variant={item.variant === \"destructive\" ? \"destructive\" : undefined}\n >\n {item.label}\n {item.shortcut && (\n <span className=\"dropdown-menu-shortcut\">{item.shortcut}</span>\n )}\n </DropdownMenuPrimitive.Item>\n )\n })}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n )\n}\n","import {\n Button as RACButton,\n Calendar as RACCalendar,\n CalendarCell as RACCalendarCell,\n CalendarGrid as RACCalendarGrid,\n CalendarGridBody as RACCalendarGridBody,\n CalendarGridHeader as RACCalendarGridHeader,\n CalendarHeaderCell as RACCalendarHeaderCell,\n Heading as RACHeading,\n RangeCalendar as RACRangeCalendar,\n type CalendarProps as RACCalendarProps,\n type DateValue,\n type RangeCalendarProps as RACRangeCalendarProps,\n} from \"react-aria-components\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { cn } from \"../cn\"\n\n/**\n * Calendar — accessible date grid built on React Aria Components.\n *\n * Replaces the prior `react-day-picker` wrapper. The Adobe React\n * Aria stack is the modern shadcn / Radix-ecosystem recommendation\n * for date input: ARIA APG-compliant, full keyboard nav (arrow keys\n * / PageUp/PageDown / Home/End), locale-aware via `react-aria-i18n`,\n * and timezone-correct via `@internationalized/date`.\n *\n * Two exports:\n *\n * - `<Calendar>` — single date selection. `value` is a\n * `@internationalized/date` `CalendarDate` (or null); `onChange`\n * receives the same shape. Convert to/from JS `Date` with\n * `parseDate`, `today`, `getLocalTimeZone` from `@internationalized/date`.\n *\n * - `<RangeCalendar>` — contiguous range selection. `value` is\n * `{ start: CalendarDate, end: CalendarDate } | null`.\n *\n * @example\n * import { Calendar } from \"@godxjp/ui\"\n * import { today, getLocalTimeZone } from \"@internationalized/date\"\n *\n * const [value, setValue] = useState<CalendarDate | null>(\n * today(getLocalTimeZone())\n * )\n * <Calendar value={value} onChange={setValue} aria-label=\"Pick a date\" />\n *\n * @see https://react-spectrum.adobe.com/react-aria/Calendar.html\n */\nexport interface CalendarProps<T extends DateValue = DateValue>\n extends Omit<RACCalendarProps<T>, \"children\"> {\n className?: string\n}\n\nexport function Calendar<T extends DateValue = DateValue>({\n className,\n ...rest\n}: CalendarProps<T>) {\n return (\n <RACCalendar {...rest} className={cn(\"calendar\", className)}>\n <CalendarHeader />\n <RACCalendarGrid>\n <RACCalendarGridHeader>\n {(day) => (\n <RACCalendarHeaderCell className=\"calendar-weekday\">\n {day}\n </RACCalendarHeaderCell>\n )}\n </RACCalendarGridHeader>\n <RACCalendarGridBody>\n {(date) => <RACCalendarCell date={date} className=\"calendar-day\" />}\n </RACCalendarGridBody>\n </RACCalendarGrid>\n </RACCalendar>\n )\n}\n\nexport interface RangeCalendarProps<T extends DateValue = DateValue>\n extends Omit<RACRangeCalendarProps<T>, \"children\"> {\n className?: string\n}\n\nexport function RangeCalendar<T extends DateValue = DateValue>({\n className,\n ...rest\n}: RangeCalendarProps<T>) {\n return (\n <RACRangeCalendar {...rest} className={cn(\"calendar\", \"calendar-range\", className)}>\n <CalendarHeader />\n <RACCalendarGrid>\n <RACCalendarGridHeader>\n {(day) => (\n <RACCalendarHeaderCell className=\"calendar-weekday\">\n {day}\n </RACCalendarHeaderCell>\n )}\n </RACCalendarGridHeader>\n <RACCalendarGridBody>\n {(date) => <RACCalendarCell date={date} className=\"calendar-day\" />}\n </RACCalendarGridBody>\n </RACCalendarGrid>\n </RACRangeCalendar>\n )\n}\n\nfunction CalendarHeader() {\n return (\n <header className=\"calendar-header\">\n <RACButton slot=\"previous\" className=\"calendar-nav\">\n <ChevronLeft aria-hidden size={16} strokeWidth={1.5} />\n </RACButton>\n <RACHeading className=\"calendar-title\" />\n <RACButton slot=\"next\" className=\"calendar-nav\">\n <ChevronRight aria-hidden size={16} strokeWidth={1.5} />\n </RACButton>\n </header>\n )\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport {\n type ComponentPropsWithoutRef,\n type FormHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\nexport interface DialogProps extends ComponentPropsWithoutRef<\n typeof DialogPrimitive.Root\n> {\n trigger?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n children?: ReactNode;\n className?: string;\n contentProps?: Omit<\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n \"children\" | \"className\"\n >;\n form?: FormHTMLAttributes<HTMLFormElement>;\n}\n\nexport function Dialog({\n trigger,\n title,\n description,\n footer,\n children,\n className,\n contentProps,\n form,\n ...rootProps\n}: DialogProps) {\n const content = (\n <>\n <div className=\"dialog-header\">\n <DialogPrimitive.Title className=\"dialog-title\">\n {title}\n </DialogPrimitive.Title>\n {description !== undefined && (\n <DialogPrimitive.Description className=\"dialog-description\">\n {description}\n </DialogPrimitive.Description>\n )}\n </div>\n {children}\n {footer !== undefined && <div className=\"dialog-footer\">{footer}</div>}\n </>\n );\n const descriptionProps =\n description === undefined\n ? ({ \"aria-describedby\": undefined } as const)\n : {};\n\n return (\n <DialogPrimitive.Root {...rootProps}>\n {trigger !== undefined && (\n <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>\n )}\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"dialog-overlay\" />\n <DialogPrimitive.Content\n {...contentProps}\n {...descriptionProps}\n className={cn(\"dialog-content\", className)}\n >\n {form !== undefined ? <form {...form}>{content}</form> : content}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type FormHTMLAttributes,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\nexport type SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\"\n\nexport interface SheetProps\n extends Omit<ComponentPropsWithoutRef<typeof DialogPrimitive.Root>, \"children\"> {\n trigger?: ReactNode\n title?: ReactNode\n description?: ReactNode\n footer?: ReactNode\n children?: ReactNode\n side?: SheetSide\n className?: string\n contentProps?: Omit<ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, \"children\">\n form?: FormHTMLAttributes<HTMLFormElement>\n}\n\nexport const Sheet = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n SheetProps\n>(function Sheet(\n {\n trigger,\n title,\n description,\n footer,\n children,\n side = \"right\",\n className,\n contentProps,\n form,\n ...rootProps\n },\n ref,\n) {\n const body = (\n <>\n {(title || description) && (\n <div className=\"dialog-header\">\n {title && <DialogPrimitive.Title className=\"dialog-title\">{title}</DialogPrimitive.Title>}\n {description && (\n <DialogPrimitive.Description className=\"dialog-description\">\n {description}\n </DialogPrimitive.Description>\n )}\n </div>\n )}\n {children}\n {footer && <div className=\"dialog-footer\">{footer}</div>}\n </>\n )\n\n return (\n <DialogPrimitive.Root {...rootProps}>\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"sheet-overlay\" />\n <DialogPrimitive.Content\n ref={ref}\n data-side={side}\n {...contentProps}\n className={cn(\"sheet-content\", className, contentProps?.className)}\n >\n {form ? <form {...form}>{body}</form> : body}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n})\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../cn\"\n\nexport interface AlertDialogProps\n extends Omit<ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>, \"children\"> {\n trigger?: ReactNode\n title: ReactNode\n description?: ReactNode\n children?: ReactNode\n cancel?: ReactNode\n action?: ReactNode\n footer?: ReactNode\n className?: string\n contentProps?: Omit<ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>, \"children\">\n}\n\nexport const AlertDialog = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogProps\n>(function AlertDialog(\n {\n trigger,\n title,\n description,\n children,\n cancel,\n action,\n footer,\n className,\n contentProps,\n ...rootProps\n },\n ref,\n) {\n return (\n <AlertDialogPrimitive.Root {...rootProps}>\n {trigger && <AlertDialogPrimitive.Trigger asChild>{trigger}</AlertDialogPrimitive.Trigger>}\n <AlertDialogPrimitive.Portal>\n <AlertDialogPrimitive.Overlay className=\"dialog-overlay\" />\n <AlertDialogPrimitive.Content\n ref={ref}\n {...contentProps}\n className={cn(\"dialog-content\", className, contentProps?.className)}\n >\n <div className=\"dialog-header\">\n <AlertDialogPrimitive.Title className=\"dialog-title\">\n {title}\n </AlertDialogPrimitive.Title>\n {description && (\n <AlertDialogPrimitive.Description className=\"dialog-description\">\n {description}\n </AlertDialogPrimitive.Description>\n )}\n </div>\n {children}\n {(footer || cancel || action) && (\n <div className=\"dialog-footer\">\n {footer}\n {cancel && (\n <AlertDialogPrimitive.Cancel className=\"btn btn-secondary\">\n {cancel}\n </AlertDialogPrimitive.Cancel>\n )}\n {action && (\n <AlertDialogPrimitive.Action className=\"btn btn-primary\">\n {action}\n </AlertDialogPrimitive.Action>\n )}\n </div>\n )}\n </AlertDialogPrimitive.Content>\n </AlertDialogPrimitive.Portal>\n </AlertDialogPrimitive.Root>\n )\n})\n","import { useEffect, useState } from \"react\";\nimport type { Breakpoint } from \"../components/layout/Row\";\n\n/**\n * useBreakpoint — reads the framework's responsive breakpoint\n * tokens (`--breakpoint-{xs,sm,md,lg,xl,xxl}`) from the CSS\n * token system and returns the WIDEST currently-matching\n * breakpoint name.\n *\n * Per cardinal rule 22 the breakpoint values are token-pinned —\n * no hardcoded literals here; the hook reads `:root` via\n * `getComputedStyle`. Falls back to Tailwind v4 defaults if the\n * tokens aren't set yet (e.g. SSR / hydration / Storybook iframe\n * before theme.css loads).\n *\n * Per cardinal rule 23 §B the breakpoint name vocabulary is locked\n * across the framework — the `Breakpoint` type lives in\n * `components/layout/Row.ts` and is imported here so\n * consumers see exactly one definition.\n *\n * @example\n * const bp = useBreakpoint()\n * if (bp === \"xs\" || bp === \"sm\") return <MobileShell />\n * return <DesktopShell />\n *\n * @example\n * // Render only on >= md\n * const bp = useBreakpoint()\n * return matchBreakpoint(bp, \"md\") ? <Aside /> : null\n */\nexport type { Breakpoint };\n\nconst BP_ORDER: Breakpoint[] = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\nconst BP_ORDER_ASC: Breakpoint[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\"];\n\nconst FALLBACK_WIDTH: Record<Breakpoint, string> = {\n xs: \"0px\",\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n xxl: \"1536px\",\n};\n\nfunction widthOf(bp: Breakpoint): string {\n if (typeof window === \"undefined\") return FALLBACK_WIDTH[bp];\n const v = getComputedStyle(document.documentElement)\n .getPropertyValue(`--breakpoint-${bp}`)\n .trim();\n return v || FALLBACK_WIDTH[bp];\n}\n\nfunction currentBreakpoint(): Breakpoint {\n if (typeof window === \"undefined\") return \"xs\";\n for (const bp of BP_ORDER) {\n if (window.matchMedia(`(min-width: ${widthOf(bp)})`).matches) {\n return bp;\n }\n }\n return \"xs\";\n}\n\nexport function useBreakpoint(): Breakpoint {\n const [bp, setBp] = useState<Breakpoint>(() => currentBreakpoint());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mqls = BP_ORDER.map((b) =>\n window.matchMedia(`(min-width: ${widthOf(b)})`),\n );\n const update = () => setBp(currentBreakpoint());\n mqls.forEach((mql) => mql.addEventListener(\"change\", update));\n update();\n return () => {\n mqls.forEach((mql) => mql.removeEventListener(\"change\", update));\n };\n }, []);\n\n return bp;\n}\n\n/**\n * matchBreakpoint — true if `current` is at-or-above the target\n * breakpoint in the mobile-first order.\n *\n * matchBreakpoint(\"lg\", \"md\") → true (lg ≥ md)\n * matchBreakpoint(\"sm\", \"lg\") → false (sm < lg)\n */\nexport function matchBreakpoint(current: Breakpoint, target: Breakpoint): boolean {\n return BP_ORDER_ASC.indexOf(current) >= BP_ORDER_ASC.indexOf(target);\n}\n","/**\n * @godxjp/ui Table — slim primitive.\n *\n * Renders columns × rows. Sort indicators, resize handles, checkbox\n * column (driven by `selection`), expand toggles, tree twirls, group\n * banners, inline editing, sticky columns. The chrome — view tabs,\n * toolbar, filter chips, batch action band, pagination, column\n * manager Sheet, save-view Dialog — lives on the `<DataTable>`\n * composite (`src/components/composites/data-table/`).\n *\n * v5.0.0 (Stage 4b, Plan §3). The legacy chrome props (`toolbar`,\n * `views`, `batchActions`, `filters`, `onFiltersChange`, `filterBar`,\n * `onResetFilters`, `pagination`, `tableKey`) were removed in this\n * release. See `docs/how-to/migrate-to-data-table.md`.\n */\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n type Column,\n type ColumnPinningState,\n type Row,\n type Table as ReactTable,\n type Updater,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport { matchBreakpoint, useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport type { Breakpoint } from \"../layout/Row\";\nimport {\n Fragment,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"../cn\";\nimport { Checkbox } from \"../data-entry/Checkbox\";\nimport { Button } from \"../general/Button\";\nimport { Empty } from \"./Empty\";\nimport type {\n TableColumn,\n TableColumnVisibility,\n TableGroupDescriptor,\n TableProps,\n TableRowKey,\n TableSort,\n TableSortState,\n TableStickyConfig,\n TableStickySide,\n} from \"./Table.types\";\n// Re-export the type surface so existing `from \"./data-display/Table\"`\n// imports continue to resolve identically to before the Stage 4 split.\nexport type {\n TableColumn,\n TableColumnPinningChange,\n TableColumnVisibility,\n TableDensity,\n TableEditingConfig,\n TableExpandableConfig,\n TableGroupBy,\n TableGroupDescriptor,\n TableProps,\n TableRowKey,\n TableSelectionConfig,\n TableSort,\n TableSortState,\n TableStickyConfig,\n TableStickySide,\n TableTreeConfig,\n} from \"./Table.types\";\n// Chrome-shaped types remain importable from this module for the\n// composite consumers that still reference them (PR 4/4 of stage 4b\n// will move them into `composites/data-table/DataTable.types.ts`).\nexport type {\n TableBatchActions,\n TableBatchActionsConfig,\n TableBatchActionsContext,\n TableFilter,\n TableFilterBar,\n TableFilterItem,\n TableFilterOperator,\n TableFilterOption,\n TablePagination,\n TablePaginationConfig,\n TablePaginationCursorConfig,\n TablePaginationLoadMoreConfig,\n TablePaginationNumberedConfig,\n TablePaginationVariantConfig,\n TableToolbar,\n TableToolbarButtonConfig,\n TableToolbarColumnConfig,\n TableToolbarConfig,\n TableToolbarFilterConfig,\n TableToolbarSearchConfig,\n TableViewItem,\n TableViewSnapshot,\n TableViews,\n TableViewsConfig,\n} from \"./Table.types\";\n\nfunction resolveUpdater<T>(updater: Updater<T>, previous: T): T {\n return typeof updater === \"function\"\n ? (updater as (old: T) => T)(previous)\n : updater;\n}\n\nfunction resolveRowKey<TData>(\n row: TData,\n index: number,\n rowKey: TableRowKey<TData>,\n warnMissingRowKey: (rowKey: string) => void,\n) {\n if (typeof rowKey === \"function\") {\n const value = rowKey(row, index);\n return String(value);\n }\n if (\n typeof row === \"object\" &&\n row !== null &&\n Object.prototype.hasOwnProperty.call(row, rowKey)\n ) {\n const value = (row as Record<string, unknown>)[rowKey];\n if (value !== undefined && value !== null) return String(value);\n }\n warnMissingRowKey(rowKey);\n return String(index);\n}\n\nfunction resolveCellClass<TData>(\n value: string | ((row: Row<TData>) => string | undefined) | undefined,\n row: Row<TData>,\n) {\n return typeof value === \"function\" ? value(row) : value;\n}\n\nfunction resolveCellStyle<TData>(\n value:\n | CSSProperties\n | ((row: Row<TData>) => CSSProperties | undefined)\n | undefined,\n row: Row<TData>,\n) {\n return typeof value === \"function\" ? value(row) : value;\n}\n\nfunction getColumnKey<TData>(\n column: TableColumn<TData, unknown>,\n): string | undefined {\n const maybeAccessor = column as { accessorKey?: unknown; id?: string };\n if (typeof maybeAccessor.id === \"string\") return maybeAccessor.id;\n if (typeof maybeAccessor.accessorKey === \"string\")\n return maybeAccessor.accessorKey;\n return undefined;\n}\n\nfunction asSortArray(sort: TableSortState | undefined): TableSort[] {\n if (sort === undefined || sort === null) return [];\n return Array.isArray(sort) ? sort : [sort];\n}\n\nfunction findSortEntry(sort: TableSortState | undefined, key: string) {\n const list = asSortArray(sort);\n const index = list.findIndex((item) => item.key === key);\n return index === -1 ? undefined : { entry: list[index], index, list };\n}\n\n/** Single-click cycle: asc → desc → off. Replaces the head of the list. */\nfunction nextSingleSort(\n current: TableSortState | null | undefined,\n key: string,\n): TableSortState {\n const entry = findSortEntry(current, key);\n if (entry === undefined) return { key, direction: \"asc\" };\n if (entry.entry.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n}\n\n/** Shift-click: extend the list. Same key → cycle that entry's direction or drop it. */\nfunction nextMultiSort(\n current: TableSortState | null | undefined,\n key: string,\n): TableSortState {\n const list = asSortArray(current);\n const index = list.findIndex((item) => item.key === key);\n if (index === -1) {\n return [...list, { key, direction: \"asc\" }];\n }\n const existing = list[index];\n const next = [...list];\n if (existing.direction === \"asc\") {\n next[index] = { key, direction: \"desc\" };\n } else {\n next.splice(index, 1);\n }\n if (next.length === 0) return null;\n if (next.length === 1) return next[0];\n return next;\n}\n\nfunction resolveStickySide(\n config: TableStickyConfig | undefined,\n bp: Breakpoint,\n): TableStickySide | undefined {\n if (config === undefined || config === false) return undefined;\n if (typeof config === \"string\") return config;\n if (config.from !== undefined && !matchBreakpoint(bp, config.from))\n return undefined;\n return config.side;\n}\n\nfunction deriveColumnPinning<TData>(\n columns: TableColumn<TData, unknown>[],\n bp: Breakpoint,\n): ColumnPinningState {\n return columns.reduce<ColumnPinningState>(\n (state, column) => {\n const key = getColumnKey(column);\n if (key === undefined) return state;\n const side = resolveStickySide(column.meta?.sticky, bp);\n if (side === undefined) return state;\n return { ...state, [side]: [...(state[side] ?? []), key] };\n },\n { left: [], right: [] },\n );\n}\n\nfunction getColumnStyle<TData>(\n column: Column<TData, unknown>,\n extra?: CSSProperties,\n): CSSProperties {\n const pinned = column.getIsPinned();\n const size = column.columnDef.size;\n return {\n width: size !== undefined ? `${column.getSize()}px` : undefined,\n minWidth:\n column.columnDef.minSize !== undefined\n ? `${column.columnDef.minSize}px`\n : undefined,\n maxWidth:\n column.columnDef.maxSize !== undefined\n ? `${column.columnDef.maxSize}px`\n : undefined,\n position: pinned ? \"sticky\" : undefined,\n left: pinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: pinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n zIndex: pinned ? 2 : undefined,\n ...extra,\n };\n}\n\nexport function Table<TData>({\n columns,\n data,\n density,\n containerClassName,\n stickyHeader,\n rowKey = \"id\" as TableRowKey<TData>,\n getRowId,\n caption,\n defaultColumnVisibility,\n columnVisibility,\n onColumnVisibilityChange,\n sort,\n onSortChange,\n resizable,\n expandable,\n editing,\n groupBy,\n tree,\n onColumnPinningChange,\n selection,\n footer,\n empty,\n rowClassName,\n className,\n instance,\n ...rest\n}: TableProps<TData>) {\n const { t } = useTranslation();\n const warnedRowKeys = useRef(new Set<string>());\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<TableColumnVisibility>(\n () => columnVisibility ?? defaultColumnVisibility ?? {},\n );\n const effectiveColumnVisibility =\n columnVisibility ?? internalColumnVisibility;\n // Auto-pinning is derived from `meta.sticky` against the current\n // breakpoint, so `{ side: \"right\", from: \"md\" }` only sticks on md+.\n // User-toggled pins live in the `<DataTable>` composite.\n const bp = useBreakpoint();\n const autoColumnPinning = useMemo(\n () => deriveColumnPinning(columns, bp),\n [columns, bp],\n );\n const [userColumnPinning, setUserColumnPinning] =\n useState<ColumnPinningState>({ left: [], right: [] });\n const columnPinning = useMemo<ColumnPinningState>(() => {\n const dedupe = (list: string[]) => Array.from(new Set(list));\n return {\n left: dedupe([\n ...(autoColumnPinning.left ?? []),\n ...(userColumnPinning.left ?? []),\n ]),\n right: dedupe([\n ...(autoColumnPinning.right ?? []),\n ...(userColumnPinning.right ?? []),\n ]),\n };\n }, [autoColumnPinning, userColumnPinning]);\n const handleColumnPinningChange = (updater: Updater<ColumnPinningState>) => {\n const next = resolveUpdater(updater, columnPinning);\n const autoLeft = new Set(autoColumnPinning.left ?? []);\n const autoRight = new Set(autoColumnPinning.right ?? []);\n setUserColumnPinning({\n left: (next.left ?? []).filter((key) => !autoLeft.has(key)),\n right: (next.right ?? []).filter((key) => !autoRight.has(key)),\n });\n onColumnPinningChange?.(next);\n };\n // Expand-row + tree-row + editing internal state.\n const [internalExpandedRowKeys, setInternalExpandedRowKeys] = useState<\n string[]\n >(() => expandable?.defaultExpandedRowKeys ?? []);\n const expandedRowKeys =\n expandable?.expandedRowKeys ?? internalExpandedRowKeys;\n const expandedRowKeySet = new Set(expandedRowKeys);\n function toggleExpandedRow(rowId: string) {\n if (expandable === undefined) return;\n const allowMultiple = expandable.allowMultiple === true;\n const nextSet = new Set(expandedRowKeys);\n if (nextSet.has(rowId)) {\n nextSet.delete(rowId);\n } else {\n if (!allowMultiple) nextSet.clear();\n nextSet.add(rowId);\n }\n const next = Array.from(nextSet);\n if (expandable.expandedRowKeys === undefined)\n setInternalExpandedRowKeys(next);\n expandable.onExpandedRowsChange?.(next);\n }\n const [internalTreeExpandedNodes, setInternalTreeExpandedNodes] = useState<\n string[]\n >(() => tree?.defaultExpandedNodes ?? []);\n const treeExpandedNodes =\n tree?.expandedNodes ?? internalTreeExpandedNodes;\n const treeExpandedSet = new Set(treeExpandedNodes);\n function toggleTreeNode(nodeKey: string) {\n if (tree === undefined) return;\n const nextSet = new Set(treeExpandedNodes);\n if (nextSet.has(nodeKey)) nextSet.delete(nodeKey);\n else nextSet.add(nodeKey);\n const next = Array.from(nextSet);\n if (tree.expandedNodes === undefined) setInternalTreeExpandedNodes(next);\n tree.onExpandedNodesChange?.(next);\n }\n const dirtyRowSet = new Set(editing?.dirtyRowIds ?? []);\n const dirtyCellSet = new Set(editing?.dirtyCellIds ?? []);\n const resolveGetRowId =\n getRowId ??\n ((row: TData, index: number) =>\n resolveRowKey(row, index, rowKey, (missingRowKey) => {\n if (warnedRowKeys.current.has(missingRowKey)) return;\n warnedRowKeys.current.add(missingRowKey);\n console.warn(\n `[godx-ui/Table] rowKey \"${missingRowKey}\" was not found on a row. Pass rowKey or getRowId to provide a stable row id.`,\n );\n }));\n const handleColumnVisibilityChange = (updater: Updater<VisibilityState>) => {\n const next = resolveUpdater(updater, effectiveColumnVisibility);\n if (columnVisibility === undefined) setInternalColumnVisibility(next);\n onColumnVisibilityChange?.(next);\n };\n const tableState = useMemo(\n () => ({ columnPinning, columnVisibility: effectiveColumnVisibility }),\n [columnPinning, effectiveColumnVisibility],\n );\n // Always-call-the-hook pattern: the local `useReactTable` runs\n // unconditionally so the rules-of-hooks invariant holds. When an\n // external `instance` is supplied (typically by `<DataTable>` via\n // `useDataTable`) we defer to it for state + row model.\n const localTable = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getRowId: resolveGetRowId,\n enableColumnPinning: true,\n enableColumnResizing: resizable === true,\n columnResizeMode: \"onChange\",\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnPinningChange: handleColumnPinningChange,\n state: tableState,\n });\n const table: ReactTable<TData> = instance ?? localTable;\n const leafColumns = table.getVisibleLeafColumns();\n const hasFooter = leafColumns.some(\n (column) => column.columnDef.footer !== undefined,\n );\n\n // ── Selection wiring (checkbox column only) ──────────────────────\n const selectedRowKeySet = new Set(selection?.selectedRowKeys ?? []);\n const selectableRows = table\n .getRowModel()\n .rows.filter((row) => selection?.getCheckboxDisabled?.(row) !== true);\n const allVisibleSelected =\n selection !== undefined &&\n selectableRows.length > 0 &&\n selectableRows.every((row) => selectedRowKeySet.has(row.id));\n const selectAllVisible = () => {\n if (selection === undefined) return;\n const next = new Set(selection.selectedRowKeys);\n if (allVisibleSelected) selectableRows.forEach((row) => next.delete(row.id));\n else selectableRows.forEach((row) => next.add(row.id));\n selection.onSelectedRowKeysChange(Array.from(next));\n };\n\n const colSpan = Math.max(\n leafColumns.length +\n (selection === undefined ? 0 : 1) +\n (expandable === undefined ? 0 : 1),\n 1,\n );\n const emptyContent = empty ?? <Empty description={t(\"table.emptyDescription\")} />;\n\n function renderDataRow(row: Row<TData>): ReactNode {\n const isEditingRow = editing?.rowId === row.id;\n const isReadOnly = editing?.isRowReadOnly?.(row) === true;\n const isDirtyRow = dirtyRowSet.has(row.id);\n const customClass = resolveCellClass(rowClassName, row);\n const stateClass = cn(\n customClass,\n isEditingRow && \"is-editing\",\n isDirtyRow && !isEditingRow && \"is-dirty\",\n );\n const isExpanded = expandedRowKeySet.has(row.id);\n const canExpand =\n expandable !== undefined &&\n (expandable.rowExpandable === undefined ||\n expandable.rowExpandable(row));\n const rowNodes: ReactNode[] = [];\n rowNodes.push(\n <tr\n key={row.id}\n className={cn(stateClass, isExpanded && \"expanded\")}\n onDoubleClick={\n editing !== undefined && !isReadOnly && !isEditingRow\n ? () => editing.onStart?.(row.id)\n : undefined\n }\n data-row-id={row.id}\n >\n {selection !== undefined && (\n <td className=\"check\">\n <Checkbox\n aria-label={t(\"table.selectRow\", { row: row.id })}\n checked={selectedRowKeySet.has(row.id)}\n disabled={selection.getCheckboxDisabled?.(row)}\n onCheckedChange={(checked) => {\n const next = new Set(selection.selectedRowKeys);\n if (checked === true) next.add(row.id);\n else next.delete(row.id);\n selection.onSelectedRowKeysChange(Array.from(next));\n }}\n />\n </td>\n )}\n {expandable !== undefined && (\n <td className=\"expand-cell\" style={{ width: 32 }}>\n {canExpand && (\n <button\n type=\"button\"\n className={cn(\"expand-toggle\", isExpanded && \"open\")}\n aria-label={\n isExpanded ? t(\"table.collapseRow\") : t(\"table.expandRow\")\n }\n aria-expanded={isExpanded}\n onClick={() => toggleExpandedRow(row.id)}\n >\n ▶\n </button>\n )}\n </td>\n )}\n {row.getVisibleCells().map((cell) => {\n const meta = cell.column.columnDef.meta;\n const cellId = `${row.id}:${cell.column.id}`;\n const isDirtyCell = dirtyCellSet.has(cellId);\n const cellContent =\n isEditingRow && !isReadOnly && editing?.renderEditCell\n ? (editing.renderEditCell(cell.column.columnDef, row) ??\n flexRender(cell.column.columnDef.cell, cell.getContext()))\n : flexRender(cell.column.columnDef.cell, cell.getContext());\n return (\n <td\n key={cell.id}\n className={cn(\n meta?.className,\n cell.column.getIsPinned() &&\n `table-pinned-${cell.column.getIsPinned()}`,\n resolveCellClass(meta?.cellClassName, row),\n isDirtyCell && \"cell-dirty\",\n )}\n style={getColumnStyle(cell.column, {\n ...meta?.style,\n ...resolveCellStyle(meta?.cellStyle, row),\n })}\n >\n {cellContent}\n </td>\n );\n })}\n </tr>,\n );\n if (expandable !== undefined && isExpanded) {\n rowNodes.push(\n <tr key={`${row.id}:expand`} className=\"expand-panel\">\n <td colSpan={colSpan}>{expandable.renderExpandedRow(row)}</td>\n </tr>,\n );\n }\n return <Fragment key={`${row.id}:wrap`}>{rowNodes}</Fragment>;\n }\n\n function renderTreeRow(\n item: TData,\n depth: number,\n nodes: ReactNode[],\n ): void {\n const id = String(resolveGetRowId(item, nodes.length));\n const children = tree?.children(item);\n const hasChildren = (children?.length ?? 0) > 0;\n const isOpen = treeExpandedSet.has(id);\n const visibleColumns = table.getVisibleLeafColumns();\n nodes.push(\n <tr key={id} className={resolveCellClass(rowClassName, {\n id,\n original: item,\n getVisibleCells: () => [],\n } as unknown as Row<TData>)}>\n {visibleColumns.map((column, columnIndex) => {\n const meta = column.columnDef.meta;\n const isFirst = columnIndex === 0;\n const indents = isFirst && depth > 0\n ? Array.from({ length: depth }, (_, i) => (\n <span key={i} className=\"indent\" aria-hidden />\n ))\n : null;\n const twirl = isFirst && hasChildren ? (\n <button\n type=\"button\"\n className={cn(\"twirl-btn\", isOpen && \"open\")}\n aria-label={isOpen ? t(\"table.collapseRow\") : t(\"table.expandRow\")}\n aria-expanded={isOpen}\n onClick={() => toggleTreeNode(id)}\n >\n ▶\n </button>\n ) : isFirst ? (\n <span className=\"indent\" aria-hidden />\n ) : null;\n const accessor = (column.columnDef as { accessorKey?: string })\n .accessorKey;\n let content: ReactNode = null;\n if (typeof column.columnDef.cell === \"function\") {\n content = column.columnDef.cell({\n row: { original: item, id } as Row<TData>,\n column,\n table,\n getValue: () =>\n accessor !== undefined\n ? (item as Record<string, unknown>)[accessor]\n : undefined,\n renderValue: () =>\n accessor !== undefined\n ? (item as Record<string, unknown>)[accessor]\n : undefined,\n cell: {} as never,\n } as never);\n } else if (accessor !== undefined) {\n const raw = (item as Record<string, unknown>)[accessor];\n content = raw === undefined || raw === null ? \"\" : String(raw);\n }\n return (\n <td\n key={column.id}\n className={cn(\n meta?.className,\n column.getIsPinned() && `table-pinned-${column.getIsPinned()}`,\n )}\n style={getColumnStyle(column, { ...meta?.style })}\n >\n {indents}\n {twirl}\n {twirl !== null ? \" \" : null}\n {content}\n </td>\n );\n })}\n </tr>,\n );\n if (hasChildren && isOpen && tree !== undefined) {\n const maxDepth = tree.maxDepth ?? 8;\n if (depth + 1 <= maxDepth) {\n for (const child of children ?? []) {\n renderTreeRow(child, depth + 1, nodes);\n }\n }\n }\n }\n\n function renderBodyRows(): ReactNode {\n const rows = table.getRowModel().rows;\n if (rows.length === 0) {\n return (\n <tr>\n <td colSpan={colSpan} className=\"muted\">\n {emptyContent}\n </td>\n </tr>\n );\n }\n if (tree !== undefined) {\n const nodes: ReactNode[] = [];\n for (const item of data) renderTreeRow(item, 0, nodes);\n return nodes;\n }\n if (groupBy !== undefined) {\n const buckets = new Map<\n string,\n { descriptor: TableGroupDescriptor; rows: Row<TData>[] }\n >();\n const order: string[] = [];\n for (const row of rows) {\n const raw = groupBy(row.original);\n if (raw === undefined) continue;\n const descriptor: TableGroupDescriptor =\n typeof raw === \"string\" ? { key: raw, label: raw } : raw;\n const bucket = buckets.get(descriptor.key);\n if (bucket === undefined) {\n buckets.set(descriptor.key, { descriptor, rows: [row] });\n order.push(descriptor.key);\n } else {\n bucket.rows.push(row);\n }\n }\n const nodes: ReactNode[] = [];\n for (const key of order) {\n const bucket = buckets.get(key);\n if (bucket === undefined) continue;\n const isCollapsed = treeExpandedSet.has(`group:collapse:${key}`);\n nodes.push(\n <tr key={`group:${key}`} className=\"group-row\">\n <td colSpan={colSpan}>\n <button\n type=\"button\"\n className=\"twirl\"\n aria-label={\n isCollapsed\n ? t(\"table.expandRow\")\n : t(\"table.collapseRow\")\n }\n aria-expanded={!isCollapsed}\n onClick={() => toggleTreeNode(`group:collapse:${key}`)}\n style={{\n background: \"transparent\",\n border: 0,\n padding: 0,\n cursor: \"pointer\",\n font: \"inherit\",\n color: \"inherit\",\n }}\n >\n {isCollapsed ? \"▶\" : \"▼\"}\n </button>{\" \"}\n {bucket.descriptor.label}\n {bucket.descriptor.count !== undefined && (\n <span className=\"gcount\">{bucket.descriptor.count}</span>\n )}\n {bucket.descriptor.total !== undefined && (\n <span className=\"gtotal\">{bucket.descriptor.total}</span>\n )}\n </td>\n </tr>,\n );\n if (!isCollapsed) {\n for (const row of bucket.rows) {\n nodes.push(renderDataRow(row));\n }\n }\n }\n return nodes;\n }\n return rows.map((row) => renderDataRow(row));\n }\n\n return (\n <div\n className={cn(\"table-stack\", containerClassName)}\n data-density={density}\n >\n <div className=\"table-scroll\">\n <table\n data-density={density}\n data-sticky-header={stickyHeader ? \"true\" : undefined}\n className={cn(\"table\", className)}\n {...rest}\n >\n {caption !== undefined && <caption>{caption}</caption>}\n <thead data-sticky={stickyHeader ? \"true\" : undefined}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {selection !== undefined && (\n <th className=\"check\">\n <Checkbox\n aria-label={t(\"table.selectAllRows\")}\n checked={allVisibleSelected}\n onCheckedChange={selectAllVisible}\n />\n </th>\n )}\n {expandable !== undefined && (\n <th className=\"expand-col\" style={{ width: 32 }} />\n )}\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta;\n const columnKey = getColumnKey(header.column.columnDef);\n const isSortable =\n meta?.sortable === true &&\n columnKey !== undefined &&\n onSortChange !== undefined;\n const sortEntry =\n columnKey !== undefined\n ? findSortEntry(sort, columnKey)\n : undefined;\n const sortedDirection = sortEntry?.entry.direction;\n const multiSortIndex =\n sortEntry !== undefined && sortEntry.list.length > 1\n ? sortEntry.index + 1\n : undefined;\n const headerContent = header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n );\n const canResize =\n resizable === true && header.column.getCanResize();\n return (\n <th\n key={header.id}\n colSpan={header.colSpan}\n className={cn(\n meta?.className,\n meta?.headerClassName,\n header.column.getIsPinned() &&\n `table-pinned-${header.column.getIsPinned()}`,\n isSortable && \"sortable\",\n canResize && \"has-resize\",\n )}\n style={getColumnStyle(header.column, {\n ...meta?.style,\n ...meta?.headerStyle,\n })}\n aria-sort={\n sortedDirection === \"asc\"\n ? \"ascending\"\n : sortedDirection === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {isSortable && columnKey !== undefined ? (\n <button\n type=\"button\"\n className=\"table-sort-button\"\n onClick={(event) => {\n const next = event.shiftKey\n ? nextMultiSort(sort, columnKey)\n : nextSingleSort(sort, columnKey);\n onSortChange(next);\n }}\n >\n {headerContent}\n <span className=\"sort\" aria-hidden>\n <span\n className={\n sortedDirection === \"asc\" ? \"a on\" : \"a\"\n }\n >\n ▲\n </span>\n <span\n className={\n sortedDirection === \"desc\" ? \"d on\" : \"d\"\n }\n >\n ▼\n </span>\n </span>\n {multiSortIndex !== undefined && (\n <span className=\"multi\" aria-hidden>\n {multiSortIndex}\n </span>\n )}\n </button>\n ) : (\n headerContent\n )}\n {canResize && (\n <button\n type=\"button\"\n aria-label={t(\"table.resizeColumn\") || \"Resize column\"}\n className=\"resize\"\n data-resizing={\n header.column.getIsResizing() ? \"true\" : undefined\n }\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => header.column.resetSize()}\n />\n )}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody>{renderBodyRows()}</tbody>\n {hasFooter && (\n <tfoot>\n {table.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((footer) => {\n const meta = footer.column.columnDef.meta;\n return (\n <td\n key={footer.id}\n colSpan={footer.colSpan}\n className={cn(meta?.className)}\n style={{ ...meta?.style }}\n >\n {footer.isPlaceholder\n ? null\n : flexRender(\n footer.column.columnDef.footer,\n footer.getContext(),\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n {footer !== undefined && <div className=\"tbl-footer\">{footer}</div>}\n {editing !== undefined && dirtyRowSet.size > 0 && (\n <div className=\"tbl-footer\" data-state=\"dirty\">\n <span className=\"tbl-footer-icon\" aria-hidden>\n <svg\n width={13}\n height={13}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx={12} cy={12} r={10} />\n <line x1={12} y1={8} x2={12} y2={12} />\n <line x1={12} y1={16} x2={12.01} y2={16} />\n </svg>\n </span>\n <span>\n {editing.unsavedLabel?.(dirtyRowSet.size) ??\n t(\"table.unsavedChanges\", { count: dirtyRowSet.size })}\n </span>\n <span className=\"spacer\" />\n {editing.onCancelAll !== undefined && (\n <Button\n size=\"x-small\"\n variant=\"ghost\"\n onClick={editing.onCancelAll}\n >\n {editing.cancelAllLabel ?? t(\"table.cancelAll\")}\n </Button>\n )}\n {editing.onSaveAll !== undefined && (\n <Button size=\"x-small\" onClick={editing.onSaveAll}>\n {editing.saveAllLabel ?? t(\"table.saveAll\")}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef, useEffect, useState, type ChangeEvent, type FocusEvent } from \"react\"\nimport { cn } from \"../cn\"\n\nexport interface TimeInputProps {\n /** Current time value in `\"HH:mm\"` (24-hour) format. */\n value?: string\n /** Fired on blur with the validated `\"HH:mm\"` string. */\n onChange?: (time: string) => void\n /** Additional class name applied to the input element. */\n className?: string\n /** Disable input + propagate aria-disabled. */\n disabled?: boolean\n /** Optional placeholder (defaults to \"HH:mm\"). */\n placeholder?: string\n /** Optional id used for label association. */\n id?: string\n /** Optional name used in form submissions. */\n name?: string\n}\n\nconst TIME_PATTERN = /^([01]\\d|2[0-3]):[0-5]\\d$/\n\nfunction normalize(raw: string): string {\n // Strip whitespace + non-digits-or-colon. Accept either \"HH:mm\" or\n // \"HHmm\" / \"H:mm\" / \"Hmm\" and coerce into canonical \"HH:mm\". Returns\n // the original string when it can't be parsed — the caller decides\n // whether to surface aria-invalid.\n const cleaned = raw.trim()\n if (!cleaned) return \"\"\n if (TIME_PATTERN.test(cleaned)) return cleaned\n const digits = cleaned.replace(/[^0-9]/g, \"\")\n if (digits.length === 3 || digits.length === 4) {\n const hh = digits.slice(0, digits.length - 2).padStart(2, \"0\")\n const mm = digits.slice(-2)\n const candidate = `${hh}:${mm}`\n if (TIME_PATTERN.test(candidate)) return candidate\n }\n return raw\n}\n\n/**\n * TimeInput — narrow text input for HH:mm (24-hour) values.\n * Mirrors the public `@godxjp/ui@0.2.0` API so call sites don't change\n * when upgrading to v2. Visual contract lives in the `.time-input`\n * class in tokens.css.\n *\n * Validation: emits `onChange` with the normalized string on blur if\n * it parses, otherwise leaves the value untouched and surfaces\n * `aria-invalid` so the consumer can style the error state.\n */\nexport const TimeInput = forwardRef<HTMLInputElement, TimeInputProps>(\n function TimeInput(\n { value, onChange, className, disabled, placeholder = \"HH:mm\", id, name },\n ref,\n ) {\n const [draft, setDraft] = useState(value ?? \"\")\n\n useEffect(() => {\n setDraft(value ?? \"\")\n }, [value])\n\n const invalid = draft !== \"\" && !TIME_PATTERN.test(draft)\n\n return (\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n spellCheck={false}\n maxLength={5}\n id={id}\n name={name}\n disabled={disabled}\n placeholder={placeholder}\n value={draft}\n aria-invalid={invalid || undefined}\n className={cn(\"time-input\", className)}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setDraft(e.target.value)}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n const next = normalize(e.target.value)\n setDraft(next)\n if (TIME_PATTERN.test(next) && next !== value) onChange?.(next)\n }}\n />\n )\n },\n)\n","import { forwardRef } from \"react\"\nimport {\n Toaster as SonnerToaster,\n toast,\n type ToastClassnames,\n type ToasterProps,\n} from \"sonner\"\nimport { cn } from \"../cn\"\n\nexport { toast }\nexport type { ToasterProps }\n\nconst DEFAULT_TOAST_CLASSNAMES: ToastClassnames = {\n toast: \"toast\",\n title: \"toast-title\",\n description: \"toast-description\",\n loader: \"toast-loader\",\n closeButton: \"toast-close\",\n cancelButton: \"btn btn-secondary btn-sm toast-btn\",\n actionButton: \"btn btn-primary btn-sm toast-btn\",\n success: \"toast toast--success\",\n error: \"toast toast--error\",\n info: \"toast toast--info\",\n warning: \"toast toast--warning\",\n loading: \"toast toast--loading\",\n default: \"toast toast--default\",\n content: \"toast-content\",\n icon: \"toast-icon\",\n}\n\nfunction mergeToastClassNames(override?: ToastClassnames): ToastClassnames {\n if (!override) return DEFAULT_TOAST_CLASSNAMES\n const keys = new Set([\n ...Object.keys(DEFAULT_TOAST_CLASSNAMES),\n ...Object.keys(override),\n ] as (keyof ToastClassnames)[])\n const out: ToastClassnames = {}\n for (const key of keys) {\n const base = DEFAULT_TOAST_CLASSNAMES[key]\n const over = override[key]\n if (over !== undefined || base !== undefined) {\n out[key] = cn(base, over)\n }\n }\n return out\n}\n\n/**\n * Toast host — wraps `sonner` with token classes (`tokens.css` + optional\n * `sonner.css` import). Defaults to `toastOptions.unstyled` so visuals\n * come from `.toast*` atoms, not sonner’s default gray theme.\n */\nexport const Toaster = forwardRef<HTMLElement, ToasterProps>(function Toaster(\n { toastOptions, className, ...props },\n ref,\n) {\n return (\n <SonnerToaster\n ref={ref}\n className={cn(\"toaster\", className)}\n toastOptions={{\n unstyled: true,\n ...toastOptions,\n classNames: mergeToastClassNames(toastOptions?.classNames),\n }}\n {...props}\n />\n )\n})\n","import { forwardRef, useId, useMemo, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Watermark — repeating SVG-pattern overlay applied as a CSS\n * background image on a wrapper element. Tiled rotated text via\n * `<pattern>`-like SVG referenced through `background-image:url(…)`.\n *\n * Theme-aware: the SVG uses `fill='currentColor'`, and the wrapper\n * sets `color: var(--muted-foreground)` so dark / light / accent\n * axes flow through without per-instance overrides.\n *\n * Cardinal rules honoured:\n * §21 — colour reads from `var(--muted-foreground)` (theme axis).\n * §22 — no hardcoded colour literal in the SVG (currentColor).\n * §23 — no prop name collides with the locked vocabulary; the\n * API mirrors the same `content` / `rotate` / `gap` /\n * `fontSize` / `fontFamily` / `opacity` surface as the\n * design canon's watermark example.\n *\n * @example\n * <Watermark content=\"Famgia · Confidential\">\n * <Card>…</Card>\n * </Watermark>\n */\n\nexport interface WatermarkProps extends Omit<ComponentProps<\"div\">, \"content\"> {\n /** Single line or multi-line text. Empty → no watermark drawn. */\n content?: string | string[];\n /** Rotation in degrees. Default `-22`. */\n rotate?: number;\n /** Tile gap `[x, y]` in pixels. Default `[120, 80]`. */\n gap?: [number, number];\n /** Font size in pixels. Default `14`. */\n fontSize?: number;\n /** Font family — defaults to inherited system stack. */\n fontFamily?: string;\n /** Opacity 0-1. Default `0.12`. */\n opacity?: number;\n children?: ReactNode;\n}\n\nexport const Watermark = forwardRef<HTMLDivElement, WatermarkProps>(function Watermark(\n {\n content,\n rotate = -22,\n gap = [120, 80],\n fontSize = 14,\n fontFamily,\n opacity = 0.12,\n className,\n children,\n style,\n ...rest\n },\n ref,\n) {\n const id = useId();\n const patternId = `wm-${id.replace(/[:]/g, \"\")}`;\n void patternId;\n const lines = Array.isArray(content) ? content : content ? [content] : [];\n const [gx, gy] = gap;\n const w = gx;\n const h = gy;\n const cx = w / 2;\n const cy = h / 2;\n const lineHeight = fontSize * 1.4;\n const totalTextHeight = lines.length * lineHeight;\n const textStartY = cy - totalTextHeight / 2 + fontSize;\n\n const svg = useMemo(() => {\n const xmlns = \"http://www.w3.org/2000/svg\";\n return `<svg xmlns='${xmlns}' width='${w}' height='${h}'><g transform='rotate(${rotate} ${cx} ${cy})' fill='currentColor' font-family='${fontFamily ?? \"system-ui, sans-serif\"}' font-size='${fontSize}' opacity='${opacity}'>${lines\n .map(\n (l, i) =>\n `<text x='${cx}' y='${textStartY + i * lineHeight}' text-anchor='middle'>${escapeXml(l)}</text>`,\n )\n .join(\"\")}</g></svg>`;\n }, [w, h, cx, cy, rotate, fontFamily, fontSize, opacity, lines, textStartY, lineHeight]);\n\n const dataUrl = `url(\"data:image/svg+xml;utf8,${encodeURIComponent(svg)}\")`;\n\n return (\n <div\n ref={ref}\n className={cn(\"watermark\", className)}\n style={{\n position: \"relative\",\n backgroundImage: lines.length ? dataUrl : undefined,\n backgroundRepeat: \"repeat\",\n backgroundSize: `${w}px ${h}px`,\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nfunction escapeXml(s: string): string {\n return s.replace(\n /[<>&'\"]/g,\n (c) =>\n ({ \"<\": \"&lt;\", \">\": \"&gt;\", \"&\": \"&amp;\", \"'\": \"&apos;\", '\"': \"&quot;\" })[c]!,\n );\n}\n","import { useState, type ReactNode } from \"react\";\nimport { Popover } from \"../data-display/Popover\";\nimport { Button } from \"../general/Button\";\nimport { cn } from \"../cn\";\n\n/**\n * Popconfirm — inline confirmation popover anchored to its trigger.\n *\n * <Popconfirm\n * title=\"削除しますか?\"\n * description=\"このアイテムは復元できません。\"\n * confirmLabel=\"削除\"\n * confirmVariant=\"destructive\"\n * onConfirm={() => deleteItem()}\n * >\n * <Button variant=\"destructive\">削除</Button>\n * </Popconfirm>\n *\n * Distinct from AlertDialog / Modal (full-screen modal for\n * high-stakes decisions that need focus trap + scrim). Popconfirm\n * is a LIGHTWEIGHT inline confirm — the trigger stays in flow, the\n * popover anchors next to it, no overlay dim.\n *\n * Vocabulary (per cardinal rule 23 §B):\n * - `open` / `defaultOpen` / `onOpenChange` — Radix overlay state\n * - `placement` — popover anchor side\n * - `title` / `description` / `icon` slots\n * - `confirmVariant` — Button `variant` value (\"primary\" | \"destructive\")\n */\n\nexport interface PopconfirmProps {\n title: ReactNode;\n description?: ReactNode;\n confirmLabel?: ReactNode;\n cancelLabel?: ReactNode;\n /** Button variant for the confirm action (\"primary\" | \"destructive\"). */\n confirmVariant?: \"primary\" | \"destructive\";\n /** Leading icon shown beside the title. */\n icon?: ReactNode;\n onConfirm?: () => void;\n onCancel?: () => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** The trigger element (rendered via Radix `asChild`). */\n children?: ReactNode;\n /** Anchor side relative to the trigger. */\n placement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n className?: string;\n}\n\nconst DefaultIcon = () => (\n <svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.75}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <circle cx={12} cy={12} r={10} />\n <line x1={12} y1={8} x2={12} y2={12} />\n <line x1={12} y1={16} x2={12.01} y2={16} />\n </svg>\n);\n\nexport function Popconfirm({\n title,\n description,\n confirmLabel = \"OK\",\n cancelLabel = \"キャンセル\",\n confirmVariant = \"primary\",\n icon,\n onConfirm,\n onCancel,\n open,\n defaultOpen,\n onOpenChange,\n children,\n placement = \"top\",\n className,\n}: PopconfirmProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isControlled = open !== undefined;\n const currentOpen = isControlled ? open : internalOpen;\n const setOpen = (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n const handleCancel = () => {\n onCancel?.();\n setOpen(false);\n };\n const handleConfirm = () => {\n onConfirm?.();\n setOpen(false);\n };\n\n const iconColor =\n confirmVariant === \"destructive\" ? \"var(--destructive)\" : \"var(--warning)\";\n\n return (\n <Popover\n open={currentOpen}\n onOpenChange={setOpen}\n trigger={children}\n side={placement}\n align=\"center\"\n className={cn(\"popconfirm\", className)}\n >\n <div className=\"popconfirm-body\">\n <span className=\"popconfirm-icon\" style={{ color: iconColor }}>\n {icon ?? <DefaultIcon />}\n </span>\n <div className=\"popconfirm-text\">\n <div className=\"popconfirm-title\">{title}</div>\n {description && (\n <div className=\"popconfirm-desc\">{description}</div>\n )}\n </div>\n </div>\n <div className=\"popconfirm-actions\">\n <Button variant=\"ghost\" size=\"x-small\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n <Button\n variant={confirmVariant}\n size=\"x-small\"\n onClick={handleConfirm}\n >\n {confirmLabel}\n </Button>\n </div>\n </Popover>\n );\n}\n","import { forwardRef } from \"react\"\nimport type { HTMLAttributes, ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\nexport interface BreadcrumbOption {\n label: ReactNode\n href?: string\n current?: boolean\n}\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbOption[]\n separator?: ReactNode\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, items, separator = \"/\", ...props }, ref) => (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\"breadcrumb\", className)}\n {...props}\n >\n {items.map((item, index) => (\n <span key={`${item.href ?? \"crumb\"}-${index}`} className=\"breadcrumb-node\">\n {item.href ? (\n <a\n href={item.href}\n aria-current={item.current ? \"page\" : undefined}\n className={cn(\"breadcrumb-crumb\", item.current && \"current\")}\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current={item.current ? \"page\" : undefined}\n className={cn(\"breadcrumb-crumb\", item.current && \"current\")}\n >\n {item.label}\n </span>\n )}\n {index < items.length - 1 && (\n <span aria-hidden=\"true\" className=\"breadcrumb-sep\">\n {separator}\n </span>\n )}\n </span>\n ))}\n </nav>\n ),\n)\nBreadcrumb.displayName = \"Breadcrumb\"\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ComponentProps,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Anchor — in-page scroll-spy navigation.\n *\n * Data-driven API:\n * <Anchor items={[{ href: \"#intro\", label: \"Intro\" }, …]} />\n *\n * Vocabulary (§23.B):\n * - `orientation` — axis of stack (\"vertical\" default | \"horizontal\")\n * - `sticky` — pin-on-scroll boolean\n * - `offset` — pixel offset for IntersectionObserver root margin\n * - `value` / `defaultValue` / `onValueChange` — controlled/uncontrolled\n * active section (the active hash; mirrors Tabs/Select selection\n * vocabulary; auto-detected via IntersectionObserver when uncontrolled)\n */\n\nexport type AnchorOrientation = \"horizontal\" | \"vertical\";\n\nexport interface AnchorItem {\n href: string;\n label: ReactNode;\n}\n\nexport interface AnchorProps\n extends Omit<ComponentProps<\"nav\">, \"defaultValue\" | \"onChange\"> {\n orientation?: AnchorOrientation;\n sticky?: boolean;\n /** Pixel offset from the top of the viewport for scroll-spy detection. */\n offset?: number;\n items: AnchorItem[];\n /** Controlled active href (`#intro` etc.). */\n value?: string;\n /** Uncontrolled initial active href. */\n defaultValue?: string;\n onValueChange?: (href: string) => void;\n}\n\nexport const Anchor = forwardRef<HTMLElement, AnchorProps>(function Anchor(\n {\n orientation = \"vertical\",\n sticky,\n offset = 0,\n items,\n value,\n defaultValue,\n onValueChange,\n className,\n ...rest\n },\n ref,\n) {\n const [internalActive, setInternalActive] = useState<string | undefined>(\n defaultValue,\n );\n const active = value ?? internalActive;\n\n const hrefs = useMemo(() => items.map((i) => i.href), [items]);\n\n // Scroll-spy: watch each target section's visibility.\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const allHrefs = hrefs;\n\n const targets = allHrefs\n .map((h) => document.querySelector(h))\n .filter((el): el is Element => el !== null);\n if (!targets.length) return;\n\n const obs = new IntersectionObserver(\n (entries) => {\n const visible = entries\n .filter((e) => e.isIntersecting)\n .sort((a, b) => b.intersectionRatio - a.intersectionRatio);\n if (visible.length === 0) return;\n const hash = `#${visible[0].target.id}`;\n if (value === undefined) setInternalActive(hash);\n onValueChange?.(hash);\n },\n {\n rootMargin: `-${offset}px 0px -50% 0px`,\n threshold: [0.1, 0.5, 0.9],\n },\n );\n targets.forEach((t) => obs.observe(t));\n return () => obs.disconnect();\n }, [hrefs, offset, value, onValueChange]);\n\n const handleClick = useCallback(\n (e: MouseEvent<HTMLAnchorElement>, href: string) => {\n const el = document.querySelector(href);\n if (!el) return;\n e.preventDefault();\n // Use getBoundingClientRect + window.scrollY so the scroll\n // target is correct regardless of `offsetParent` — when\n // sections are nested inside a flex/grid container (e.g.\n // a docs layout with sidebar + content), `offsetTop` is\n // measured relative to that parent, not the document, so\n // window.scrollTo lands at the wrong place.\n const rect = (el as HTMLElement).getBoundingClientRect();\n const top = rect.top + window.scrollY - offset;\n window.scrollTo({ top, behavior: \"smooth\" });\n if (value === undefined) setInternalActive(href);\n onValueChange?.(href);\n },\n [offset, value, onValueChange],\n );\n\n return (\n <nav\n ref={ref}\n className={cn(\"anchor\", className)}\n data-orientation={orientation}\n data-sticky={sticky ? \"true\" : undefined}\n aria-orientation={orientation}\n {...rest}\n >\n {items.map((item) => {\n const isActive = active === item.href;\n return (\n <a\n key={item.href}\n href={item.href}\n className=\"anchor-link\"\n data-active={isActive ? \"true\" : undefined}\n aria-current={isActive ? \"location\" : undefined}\n onClick={(event) => handleClick(event, item.href)}\n >\n {item.label}\n </a>\n );\n })}\n </nav>\n );\n});\n","import { forwardRef, useState, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\nexport type MenuOrientation = \"horizontal\" | \"vertical\";\n\nexport interface MenuOption {\n value?: string;\n label?: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n extra?: ReactNode;\n type?: \"item\" | \"group\" | \"divider\";\n items?: MenuOption[];\n}\n\nexport interface MenuProps extends Omit<ComponentProps<\"ul\">, \"onChange\" | \"children\"> {\n orientation?: MenuOrientation;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n items: MenuOption[];\n}\n\nexport const Menu = forwardRef<HTMLUListElement, MenuProps>(function Menu(\n {\n orientation = \"vertical\",\n value,\n defaultValue,\n onValueChange,\n items,\n className,\n ...rest\n },\n ref,\n) {\n const [internal, setInternal] = useState<string | undefined>(defaultValue);\n const active = value ?? internal;\n const handleChange = (nextValue: string) => {\n if (value === undefined) setInternal(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <ul\n ref={ref}\n role=\"menu\"\n className={cn(\"menu\", className)}\n data-orientation={orientation}\n aria-orientation={orientation}\n {...rest}\n >\n {items.map((item, index) => {\n if (item.type === \"divider\") {\n return (\n <hr\n key={`divider-${index}`}\n role=\"separator\"\n className=\"menu-divider\"\n />\n );\n }\n if (item.type === \"group\") {\n return (\n <div\n key={`group-${index}`}\n role=\"group\"\n aria-label={typeof item.label === \"string\" ? item.label : undefined}\n >\n {item.label && <div className=\"menu-group-label\">{item.label}</div>}\n {item.items?.map((child) => (\n <MenuButton\n key={child.value}\n item={child}\n active={active}\n onValueChange={handleChange}\n />\n ))}\n </div>\n );\n }\n return (\n <MenuButton\n key={item.value ?? index}\n item={item}\n active={active}\n onValueChange={handleChange}\n />\n );\n })}\n </ul>\n );\n});\n\nfunction MenuButton({\n item,\n active,\n onValueChange,\n}: {\n item: MenuOption;\n active?: string;\n onValueChange: (value: string) => void;\n}) {\n const selected = item.value !== undefined && active === item.value;\n return (\n <li role=\"none\" style={{ display: \"contents\" }}>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"menu-item\"\n data-state={selected ? \"selected\" : undefined}\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n onClick={() => {\n if (!item.disabled && item.value !== undefined) onValueChange(item.value);\n }}\n >\n {item.icon && <span className=\"menu-item-icon\">{item.icon}</span>}\n <span className=\"menu-item-label\">{item.label}</span>\n {item.extra && <span className=\"menu-item-extra\">{item.extra}</span>}\n </button>\n </li>\n );\n}\n","import {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport {\n forwardRef,\n useMemo,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"../cn\";\n\n/**\n * Pagination — page jumper.\n *\n * <Pagination total={120} pageSize={10} defaultValue={1} onValueChange={…} />\n *\n * Three variants:\n * - `default` (pill bar) — freestanding pagination chips\n * - `simple` — only ‹ N/M ›\n * - `embedded` — table-footer layout (`info` + page-size changer +\n * numeric pager). Use when embedding inside a `<Table>` footer.\n *\n * Vocabulary (§23.B):\n * - `value` / `defaultValue` / `onValueChange` — current page (1-based)\n * - `pageSize` / `defaultPageSize` / `onPageSizeChange` — rows per page\n * - `size` — \"small\" | \"default\" — dimensional scale (default + simple)\n * - `variant` — visual treatment (above)\n * - `justify` — \"start\" | \"center\" | \"end\" | \"space-between\" (matches FlexJustify)\n * - `disabled` — interaction state\n * - `showTotal`, `showSizeChanger`, `showFirstLast`, `hideOnSinglePage`\n * — adjective-boolean toggles\n */\n\nexport type PaginationSize = \"small\" | \"default\";\nexport type PaginationVariant = \"default\" | \"simple\" | \"embedded\";\n/** Justify values match FlexJustify spelling (`\"space-between\"`) so the\n * vocabulary stays uniform across layout primitives. Pagination ships\n * 4 of FlexJustify's 6 values (no `space-around` / `space-evenly`). */\nexport type PaginationJustify =\n | \"start\"\n | \"center\"\n | \"end\"\n | \"space-between\";\n\nexport interface PaginationProps\n extends Omit<\n ComponentProps<\"nav\">,\n \"onChange\" | \"defaultValue\" | \"value\"\n > {\n /** Total row count. */\n total: number;\n /** Rows per page. Controlled or uncontrolled via `defaultPageSize`. */\n pageSize?: number;\n defaultPageSize?: number;\n onPageSizeChange?: (pageSize: number) => void;\n /** Current page (1-based). Controlled or uncontrolled via `defaultValue`. */\n value?: number;\n defaultValue?: number;\n onValueChange?: (page: number) => void;\n size?: PaginationSize;\n variant?: PaginationVariant;\n justify?: PaginationJustify;\n disabled?: boolean;\n /** Selectable page sizes when `showSizeChanger` is true. */\n pageSizeOptions?: number[];\n /** Render the page-size `<select>` (embedded variant only). */\n showSizeChanger?: boolean;\n /** Render first/last page chevron buttons (embedded variant). */\n showFirstLast?: boolean;\n /** Suppress render when total fits in a single page. */\n hideOnSinglePage?: boolean;\n /** Show total-row label. Accepts a render function for full control. */\n showTotal?: boolean | ((total: number, range: [number, number]) => ReactNode);\n /** Sibling pages either side of current (default 1). */\n siblings?: number;\n /** Pages anchored at each end before the ellipsis (default 1). */\n boundary?: number;\n /** Override page-size dropdown label (defaults to i18n `table.pageSize`). */\n pageSizeLabel?: ReactNode;\n /** Override first-page button aria-label. */\n firstPageLabel?: string;\n /** Override previous-page button aria-label. */\n previousPageLabel?: string;\n /** Override next-page button aria-label. */\n nextPageLabel?: string;\n /** Override last-page button aria-label. */\n lastPageLabel?: string;\n}\n\n/**\n * Laravel-style page range — first + last anchor pages, a window of\n * `sibling` pages around the current page, and `\"gap\"` markers\n * (rendered as `…`) where pages are elided. Exported for consumers\n * building custom paginators.\n *\n * computePageRange(1, 52) → [1, 2, 3, \"gap\", 52]\n * computePageRange(25, 52) → [1, \"gap\", 24, 25, 26, \"gap\", 52]\n * computePageRange(3, 6) → [1, 2, 3, 4, 5, 6]\n */\nexport function computePageRange(\n current: number,\n total: number,\n sibling = 1,\n boundary = 1,\n): Array<number | \"gap\"> {\n if (total <= 1) return [1];\n const windowSize = 2 * sibling + 1 + 2 * boundary + 2;\n if (total <= windowSize) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n const startPages = Array.from({ length: boundary }, (_, i) => i + 1);\n const endPages = Array.from(\n { length: boundary },\n (_, i) => total - boundary + 1 + i,\n );\n const siblingStart = Math.max(\n Math.min(current - sibling, total - boundary - 2 * sibling - 1),\n boundary + 2,\n );\n const siblingEnd = Math.min(\n Math.max(current + sibling, boundary + 2 * sibling + 2),\n endPages[0] - 2,\n );\n const items: Array<number | \"gap\"> = [];\n items.push(...startPages);\n if (siblingStart > boundary + 2) items.push(\"gap\");\n else if (boundary + 1 < endPages[0]) items.push(boundary + 1);\n for (let p = siblingStart; p <= siblingEnd; p++) items.push(p);\n if (siblingEnd < endPages[0] - 2) items.push(\"gap\");\n else if (endPages[0] - 1 > boundary) items.push(endPages[0] - 1);\n items.push(...endPages);\n return items;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n total,\n pageSize,\n defaultPageSize = 10,\n onPageSizeChange,\n value,\n defaultValue = 1,\n onValueChange,\n size = \"default\",\n variant = \"default\",\n justify = \"start\",\n disabled,\n pageSizeOptions = [10, 20, 50, 100],\n showSizeChanger = true,\n showFirstLast = false,\n hideOnSinglePage = false,\n showTotal,\n siblings = 1,\n boundary = 1,\n pageSizeLabel,\n firstPageLabel,\n previousPageLabel,\n nextPageLabel,\n lastPageLabel,\n className,\n ...rest\n },\n ref,\n ) {\n const { t } = useTranslation();\n const [internalPage, setInternalPage] = useState(defaultValue);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const effectivePageSize = pageSize ?? internalPageSize;\n const safePageSize = Math.max(effectivePageSize, 1);\n const safeTotal = Math.max(total, 0);\n const totalPages = Math.max(1, Math.ceil(safeTotal / safePageSize));\n const current = value ?? internalPage;\n const safeCurrent = Math.min(Math.max(1, current), totalPages);\n\n const range = useMemo(\n () => computePageRange(safeCurrent, totalPages, siblings, boundary),\n [safeCurrent, totalPages, siblings, boundary],\n );\n\n function goToPage(nextPage: number) {\n if (disabled) return;\n const clamped = Math.min(Math.max(1, nextPage), totalPages);\n if (clamped === safeCurrent) return;\n if (value === undefined) setInternalPage(clamped);\n onValueChange?.(clamped);\n }\n\n function changePageSize(nextPageSize: number) {\n if (disabled) return;\n if (pageSize === undefined) setInternalPageSize(nextPageSize);\n onPageSizeChange?.(nextPageSize);\n if (value === undefined) setInternalPage(1);\n onValueChange?.(1);\n }\n\n const start = safeTotal === 0 ? 0 : (safeCurrent - 1) * safePageSize + 1;\n const end = Math.min(safeCurrent * safePageSize, safeTotal);\n\n if (hideOnSinglePage && safeTotal <= safePageSize) return null;\n\n if (variant === \"embedded\") {\n const resolvedPageSizeOptions = Array.from(\n new Set([...pageSizeOptions, safePageSize]),\n ).sort((left, right) => left - right);\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn(\"pagination\", className)}\n data-variant=\"embedded\"\n data-size={size === \"small\" ? \"small\" : undefined}\n {...rest}\n >\n <div className=\"info\">\n {typeof showTotal === \"function\"\n ? showTotal(safeTotal, [start, end])\n : t(\"table.paginationTotal\", {\n start,\n end,\n total: safeTotal,\n })}\n </div>\n {showSizeChanger && (\n <div className=\"ps\">\n <span>{pageSizeLabel ?? t(\"table.pageSize\")}</span>\n <select\n aria-label={\n typeof pageSizeLabel === \"string\"\n ? pageSizeLabel\n : t(\"table.pageSize\")\n }\n value={safePageSize}\n disabled={disabled}\n onChange={(event) =>\n changePageSize(Number(event.target.value))\n }\n >\n {resolvedPageSizeOptions.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n )}\n <div className=\"spacer\" />\n <div className=\"pgn\">\n {showFirstLast && (\n <button\n type=\"button\"\n className={safeCurrent === 1 ? \"disabled\" : \"\"}\n disabled={disabled || safeCurrent === 1}\n onClick={() => goToPage(1)}\n aria-label={firstPageLabel ?? t(\"table.firstPage\")}\n >\n <ChevronsLeft aria-hidden focusable=\"false\" />\n </button>\n )}\n <button\n type=\"button\"\n className={safeCurrent === 1 ? \"disabled\" : \"\"}\n disabled={disabled || safeCurrent === 1}\n onClick={() => goToPage(safeCurrent - 1)}\n aria-label={previousPageLabel ?? t(\"table.previousPage\")}\n >\n <ChevronLeft aria-hidden focusable=\"false\" />\n </button>\n {range.map((item, index) =>\n item === \"gap\" ? (\n <span key={`gap-${index}`} className=\"gap\" aria-hidden>\n …\n </span>\n ) : (\n <button\n type=\"button\"\n key={item}\n className={item === safeCurrent ? \"on\" : \"\"}\n disabled={disabled}\n onClick={() => goToPage(item)}\n aria-current={item === safeCurrent ? \"page\" : undefined}\n >\n {item}\n </button>\n ),\n )}\n <button\n type=\"button\"\n className={safeCurrent === totalPages ? \"disabled\" : \"\"}\n disabled={disabled || safeCurrent === totalPages}\n onClick={() => goToPage(safeCurrent + 1)}\n aria-label={nextPageLabel ?? t(\"table.nextPage\")}\n >\n <ChevronRight aria-hidden focusable=\"false\" />\n </button>\n {showFirstLast && (\n <button\n type=\"button\"\n className={safeCurrent === totalPages ? \"disabled\" : \"\"}\n disabled={disabled || safeCurrent === totalPages}\n onClick={() => goToPage(totalPages)}\n aria-label={lastPageLabel ?? t(\"table.lastPage\")}\n >\n <ChevronsRight aria-hidden focusable=\"false\" />\n </button>\n )}\n </div>\n </nav>\n );\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn(\"pagination\", className)}\n data-size={size === \"small\" ? \"small\" : undefined}\n data-justify={justify === \"start\" ? undefined : justify}\n {...rest}\n >\n {showTotal && (\n <span className=\"pagination-total\">\n {typeof showTotal === \"function\"\n ? showTotal(safeTotal, [start, end])\n : `${start}–${end} / ${safeTotal}`}\n </span>\n )}\n <button\n type=\"button\"\n className=\"pagination-item\"\n aria-label={previousPageLabel ?? \"Previous page\"}\n onClick={() => goToPage(safeCurrent - 1)}\n disabled={disabled || safeCurrent === 1}\n >\n <ChevronLeft aria-hidden focusable=\"false\" />\n </button>\n {variant === \"simple\" ? (\n <span className=\"pagination-item\" aria-current=\"page\">\n {safeCurrent} / {totalPages}\n </span>\n ) : (\n range.map((p, idx) =>\n p === \"gap\" ? (\n <span key={`e${idx}`} className=\"pagination-ellipsis\" aria-hidden>\n …\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className=\"pagination-item\"\n data-state={p === safeCurrent ? \"selected\" : undefined}\n aria-current={p === safeCurrent ? \"page\" : undefined}\n onClick={() => goToPage(p)}\n disabled={disabled}\n >\n {p}\n </button>\n ),\n )\n )}\n <button\n type=\"button\"\n className=\"pagination-item\"\n aria-label={nextPageLabel ?? \"Next page\"}\n onClick={() => goToPage(safeCurrent + 1)}\n disabled={disabled || safeCurrent === totalPages}\n >\n <ChevronRight aria-hidden focusable=\"false\" />\n </button>\n </nav>\n );\n },\n);\n","import { forwardRef, type ComponentProps, type ReactNode } from \"react\"\nimport { cn } from \"../cn\"\n\nexport type StepsOrientation = \"horizontal\" | \"vertical\"\n\nexport interface StepsItem {\n title?: ReactNode\n description?: ReactNode\n icon?: ReactNode\n content?: ReactNode\n className?: string\n}\n\nexport interface StepsProps extends Omit<ComponentProps<\"ol\">, \"children\" | \"color\"> {\n items: StepsItem[]\n orientation?: StepsOrientation\n current?: number\n}\n\nconst CheckIcon = () => (\n <svg width={13} height={13} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n)\n\nexport const Steps = forwardRef<HTMLOListElement, StepsProps>(function Steps(\n { items, orientation = \"horizontal\", current = 0, className, ...rest },\n ref,\n) {\n const wrapper = orientation === \"vertical\" ? \"steps-v\" : \"steps-h\"\n return (\n <ol\n ref={ref}\n className={cn(wrapper, className)}\n data-orientation={orientation}\n aria-orientation={orientation}\n {...rest}\n >\n {items.map((item, index) => {\n const stateClass =\n index < current ? \"done\" : index === current ? \"cur\" : \"dis\"\n\n return (\n <li\n key={`${String(item.title ?? \"step\")}-${index}`}\n className={cn(\"step\", stateClass, item.className)}\n aria-current={stateClass === \"cur\" ? \"step\" : undefined}\n >\n <span className=\"node\">\n {item.icon ?? (stateClass === \"done\" ? <CheckIcon /> : index + 1)}\n </span>\n {orientation === \"vertical\" ? (\n <div className=\"step-body\">\n {item.title && <div className=\"lbl\">{item.title}</div>}\n {item.description && <div className=\"desc\">{item.description}</div>}\n {item.content}\n </div>\n ) : (\n <>\n {item.title && <span className=\"lbl\">{item.title}</span>}\n {item.description && <span className=\"sub\">{item.description}</span>}\n {item.content}\n </>\n )}\n </li>\n )\n })}\n </ol>\n )\n})\n","import { forwardRef, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\nimport type { FeedbackColorProp } from \"../../props\";\n\n/**\n * Progress — linear or circular progress indicator.\n *\n * Vocabulary (per cardinal rule 23 §B — concept-first):\n * - `value` / `max` — Radix-style numeric state (matches Tabs/Select).\n * - `variant` — `line` (default) or `circle`.\n * - `color` — semantic role (`default` / `info` / `success` /\n * `warning` / `destructive`).\n * - `size` — dimensional scale (`small` / `default` / `large`).\n * - `showInfo` — render the numeric label (default `true`).\n * - `strokeWidth` — circle stroke thickness in user units (default 6).\n * - `format` — custom label renderer; receives `(value, max)`.\n *\n * Line variant reuses the canonical `.prog` atom from\n * `shell/75-card-atoms.css`; circle variant renders an SVG sweep with\n * `currentColor` so the outer `.progress-color-*` class drives the\n * arc colour. ARIA: `role=\"progressbar\"` + `aria-valuenow/min/max`.\n */\n\nexport type ProgressVariant = \"line\" | \"circle\";\n/** Alias of the shared `FeedbackColorProp` — same shape as\n * AlertColor / ResultColor; kept as a named export for back-compat. */\nexport type ProgressColor = FeedbackColorProp;\nexport type ProgressSize = \"small\" | \"default\" | \"large\";\n\nexport interface ProgressProps extends Omit<ComponentProps<\"div\">, \"color\"> {\n /** Current progress value (0 – `max`). Defaults to 0. */\n value?: number;\n /** Maximum value. Defaults to 100. */\n max?: number;\n /** Visual shape — line bar or circular sweep. */\n variant?: ProgressVariant;\n /** Semantic colour role. */\n color?: ProgressColor;\n /** Dimensional scale. */\n size?: ProgressSize;\n /** Render the numeric label (defaults to true). */\n showInfo?: boolean;\n /** Circle stroke thickness (defaults to 6). */\n strokeWidth?: number;\n /** Custom label renderer. */\n format?: (value: number, max: number) => ReactNode;\n}\n\nconst COLOR_CLASS: Record<ProgressColor, string> = {\n default: \"\",\n info: \"progress-color-info\",\n success: \"progress-color-success\",\n warning: \"progress-color-warning\",\n destructive: \"progress-color-destructive\",\n};\n\nconst SIZE_CLASS: Record<ProgressSize, string> = {\n small: \"progress-size-small\",\n default: \"\",\n large: \"progress-size-large\",\n};\n\nfunction clampPct(value: number, max: number): number {\n if (max <= 0) return 0;\n const pct = (value / max) * 100;\n if (pct < 0) return 0;\n if (pct > 100) return 100;\n return pct;\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(\n {\n value = 0,\n max = 100,\n variant = \"line\",\n color = \"default\",\n size = \"default\",\n showInfo = true,\n strokeWidth = 6,\n format,\n className,\n ...rest\n },\n ref,\n ) {\n const pct = clampPct(value, max);\n const label: ReactNode = format\n ? format(value, max)\n : `${Math.round(pct)}%`;\n\n if (variant === \"circle\") {\n const r = 50 - strokeWidth / 2;\n const c = 2 * Math.PI * r;\n const dashOffset = c * (1 - pct / 100);\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(\n \"progress progress-circle\",\n COLOR_CLASS[color],\n SIZE_CLASS[size],\n className,\n )}\n {...rest}\n >\n <svg viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n <circle\n cx={50}\n cy={50}\n r={r}\n stroke=\"var(--secondary)\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n />\n <circle\n cx={50}\n cy={50}\n r={r}\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n strokeDasharray={c}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n transform=\"rotate(-90 50 50)\"\n />\n </svg>\n {showInfo ? <span className=\"progress-info\">{label}</span> : null}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(\n \"progress progress-line\",\n COLOR_CLASS[color],\n SIZE_CLASS[size],\n className,\n )}\n {...rest}\n >\n <div className=\"prog\">\n <i style={{ width: `${pct}%` }} />\n </div>\n {showInfo ? <span className=\"progress-info\">{label}</span> : null}\n </div>\n );\n },\n);\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * IconRow — `20px icon | content` two-column row used by detail panels\n * and create-event dialogs. Keeps icon glyphs aligned in a tight column\n * regardless of body height.\n *\n * @example\n * <IconRow icon={<Clock />}>\n * <div>10:00 – 11:00</div>\n * <div className=\"muted\">GMT+09</div>\n * </IconRow>\n */\nexport type IconRowAlign = \"top\" | \"center\";\n\nexport interface IconRowProps extends Omit<ComponentProps<\"div\">, \"children\"> {\n icon: ReactNode;\n align?: IconRowAlign;\n children?: ReactNode;\n}\n\nexport function IconRow({\n icon,\n align = \"top\",\n className,\n children,\n ...rest\n}: IconRowProps) {\n return (\n <div className={cn(\"icon-row\", className)} data-align={align} {...rest}>\n <span className=\"icon-row-icon\">{icon}</span>\n <div className=\"icon-row-body\">{children}</div>\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * AvatarStack — overlapping circular initials avatars with a `+N`\n * overflow chip. Border = `--background` to knock the avatars out of\n * the surface they sit on.\n *\n * @example\n * <AvatarStack\n * items={[{ id: \"y\", short: \"YT\", color: \"#1e50a2\", name: \"Yuki\" }]}\n * max={3}\n * />\n */\nexport interface AvatarStackItem {\n id: string;\n short: string;\n color: string;\n name?: string;\n}\n\nexport interface AvatarStackProps extends Omit<ComponentProps<\"div\">, \"children\"> {\n items: AvatarStackItem[];\n /** Maximum number of avatars before overflow chip. Default 3. */\n max?: number;\n /** Pixel size of each avatar. Default 22. */\n size?: number;\n}\n\nexport function AvatarStack({\n items,\n max = 3,\n size = 22,\n className,\n style,\n ...rest\n}: AvatarStackProps) {\n const visible = items.slice(0, max);\n const overflow = Math.max(0, items.length - visible.length);\n const fontPx = Math.max(8, Math.round(size * 0.43));\n return (\n <div className={cn(\"avatar-stack\", className)} style={style} {...rest}>\n {visible.map((item) => (\n <span\n key={item.id}\n className=\"avatar-stack-item\"\n title={item.name ?? item.short}\n style={{ background: item.color, width: size, height: size, fontSize: fontPx }}\n >\n {item.short}\n </span>\n ))}\n {overflow > 0 && (\n <span\n className=\"avatar-stack-item avatar-stack-overflow\"\n style={{ width: size, height: size, fontSize: fontPx }}\n >\n +{overflow}\n </span>\n )}\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../cn\";\n\n/**\n * ColorSwatchCheckbox — Google-Calendar-style \"color square = on/off\"\n * checkbox. Border paints in `color`; fill paints `color` when checked.\n * Hidden native `<input>` keeps it a real form control + a11y target.\n *\n * @example\n * <ColorSwatchCheckbox\n * color=\"#4c6cb3\"\n * label=\"godx-admin · Product\"\n * checked={shown}\n * onChange={(next) => setShown(next)}\n * />\n */\nexport interface ColorSwatchCheckboxProps\n extends Omit<ComponentProps<\"label\">, \"onChange\"> {\n color: string;\n label: string;\n checked: boolean;\n onChange?: (next: boolean) => void;\n /** Marks the row as read-only (renders an \"R\" hint instead of a swatch). */\n readonly?: boolean;\n disabled?: boolean;\n}\n\nexport function ColorSwatchCheckbox({\n color,\n label,\n checked,\n onChange,\n readonly = false,\n disabled = false,\n className,\n ...rest\n}: ColorSwatchCheckboxProps) {\n return (\n <label className={cn(\"swatch-check\", className)} {...rest}>\n <span\n className=\"swatch-check-box\"\n style={{\n color,\n background: checked ? color : \"transparent\",\n }}\n >\n {checked && (\n <Check size={10} strokeWidth={3} color=\"white\" aria-hidden=\"true\" />\n )}\n </span>\n <span className=\"swatch-check-name\">{label}</span>\n {readonly && (\n <span className=\"swatch-check-readonly\" title=\"read-only\">\n R\n </span>\n )}\n <input\n type=\"checkbox\"\n className=\"swatch-check-native\"\n checked={checked}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n </label>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * CalendarOption — color-swatch + name label used inside calendar\n * pickers (e.g. \"Save to which calendar\" select). Stays presentational;\n * the consuming select / dropdown handles state.\n */\nexport interface CalendarOptionProps extends ComponentProps<\"span\"> {\n color: string;\n name: string;\n /** Suffix label (e.g. \"(read-only)\"). */\n meta?: string;\n}\n\nexport function CalendarOption({\n color,\n name,\n meta,\n className,\n ...rest\n}: CalendarOptionProps) {\n return (\n <span className={cn(\"cal-opt\", className)} {...rest}>\n <span className=\"cal-opt-swatch\" style={{ background: color }} />\n <span className=\"cal-opt-name\">{name}</span>\n {meta && <span className=\"cal-opt-meta\">· {meta}</span>}\n </span>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../cn\";\n\n/**\n * AttendeeChip — pill with leading initials avatar + name + optional\n * remove (✕). Used in event composer attendee fields and similar\n * \"selected items\" chip arrays.\n */\nexport interface AttendeeChipProps extends ComponentProps<\"span\"> {\n name: string;\n short: string;\n color: string;\n onRemove?: () => void;\n}\n\nexport function AttendeeChip({\n name,\n short,\n color,\n onRemove,\n className,\n ...rest\n}: AttendeeChipProps) {\n return (\n <span className={cn(\"attendee-chip\", className)} {...rest}>\n <span className=\"attendee-chip-avatar\" style={{ background: color }}>\n {short}\n </span>\n <span className=\"attendee-chip-name\">{name}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"attendee-chip-close\"\n onClick={onRemove}\n aria-label={`Remove ${name}`}\n >\n <X size={11} aria-hidden=\"true\" />\n </button>\n )}\n </span>\n );\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * AttendeeListItem — row used in event-detail attendee lists. Avatar,\n * name, optional \"(you)\" marker, optional org line, optional trailing\n * status badge slot.\n */\nexport interface AttendeeListItemProps extends ComponentProps<\"div\"> {\n name: string;\n short: string;\n color: string;\n /** Display \"(you)\" suffix. */\n isSelf?: boolean;\n /** Show \"Organizer · \" prefix in the org line. */\n isOrganizer?: boolean;\n org?: string;\n /** Trailing slot — typically a small Badge. */\n status?: ReactNode;\n /** i18n override for \"(you)\" — defaults to en. */\n selfLabel?: string;\n organizerLabel?: string;\n}\n\nexport function AttendeeListItem({\n name,\n short,\n color,\n isSelf = false,\n isOrganizer = false,\n org,\n status,\n selfLabel = \"(you)\",\n organizerLabel = \"Organizer\",\n className,\n ...rest\n}: AttendeeListItemProps) {\n return (\n <div className={cn(\"attendee-row\", className)} {...rest}>\n <span className=\"attendee-row-avatar\" style={{ background: color }}>\n {short}\n </span>\n <div className=\"attendee-row-body\">\n <div className=\"attendee-row-name\">\n {name}\n {isSelf && <span className=\"attendee-row-me\">{selfLabel}</span>}\n </div>\n {(org || isOrganizer) && (\n <div className=\"attendee-row-org\">\n {isOrganizer ? `${organizerLabel} · ` : \"\"}\n {org}\n </div>\n )}\n </div>\n {status}\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * AllDayChip — solid-color rounded chip used for all-day events across\n * week-band, day-header strip, and month-cell rows.\n *\n * Sizes:\n * - `compact` — week-band / detail rows\n * - `month` — month-cell rows (slightly smaller radius + font)\n * - `pill` — day-view header (full pill radius, larger font)\n */\nexport type AllDayChipSize = \"compact\" | \"month\" | \"pill\";\n\nexport interface AllDayChipProps extends ComponentProps<\"button\"> {\n color: string;\n size?: AllDayChipSize;\n children: ComponentProps<\"button\">[\"children\"];\n}\n\nexport function AllDayChip({\n color,\n size = \"compact\",\n className,\n style,\n children,\n ...rest\n}: AllDayChipProps) {\n return (\n <button\n type=\"button\"\n className={cn(\"allday-chip\", className)}\n data-size={size}\n style={{ background: color, ...style }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * DayHeaderPill — small day-of-week label + 32px circular day-of-month\n * pill rendered above each Week-view column.\n *\n * default — neutral\n * today — filled accent + white number\n * selected — soft accent tint + accent number\n */\nexport type DayHeaderPillState = \"default\" | \"today\" | \"selected\";\n\nexport interface DayHeaderPillProps extends ComponentProps<\"div\"> {\n dow: string;\n day: number;\n state?: DayHeaderPillState;\n}\n\nexport function DayHeaderPill({\n dow,\n day,\n state = \"default\",\n className,\n ...rest\n}: DayHeaderPillProps) {\n return (\n <div className={cn(\"day-pill\", className)} data-state={state} {...rest}>\n <span className=\"day-pill-dow\">{dow}</span>\n <span className=\"day-pill-num\">{day}</span>\n </div>\n );\n}\n","// Time helpers shared by the calendar / scheduling primitives. These\n// stay generic (no event-shape assumptions) so other surfaces — a\n// rota planner, a focus-time visualiser — can reuse the same math.\n\n/**\n * Locale used by `fmtHour`. Adds the JA suffix style (`9時`) for `ja`\n * and keeps `HH:00` for everything else.\n */\nexport type TimeLocale = \"vi\" | \"ja\" | \"en\";\n\n/** Parse \"HH:MM\" into { h, m }. Tolerates missing minutes. */\nexport function parseHM(value: string): { h: number; m: number } {\n const [hStr, mStr] = value.split(\":\");\n const h = Number(hStr);\n const m = Number(mStr ?? \"0\");\n return { h: Number.isFinite(h) ? h : 0, m: Number.isFinite(m) ? m : 0 };\n}\n\n/** Pixel offset for a given clock time within a day-grid column. */\nexport function minToY(\n h: number,\n m: number,\n options: { dayStartH: number; pxPerMin: number },\n): number {\n return (h - options.dayStartH) * 60 * options.pxPerMin + m * options.pxPerMin;\n}\n\n/** Format an hour cell label per locale. */\nexport function fmtHour(h: number, locale: TimeLocale): string {\n if (locale === \"ja\") return `${h}時`;\n return `${String(h).padStart(2, \"0\")}:00`;\n}\n\n/** Default day-grid sizing the WeekView / DayView screens use. */\nexport const DEFAULT_GRID = {\n dayStartH: 6,\n dayEndH: 22,\n pxPerMin: 0.9, // 1 hour = 54 px\n} as const;\n\n/**\n * Build a 6×7 Mon-first month grid for (year, monthIdx1to12). Lead-in\n * cells from the previous month and tail cells from the next month are\n * flagged `dim: true`. Shared by MiniMonth + MonthView.\n */\nexport interface MonthCellRef {\n y: number;\n m: number;\n d: number;\n dim: boolean;\n}\nexport function buildMonthGrid(year: number, month: number): MonthCellRef[] {\n const first = new Date(year, month - 1, 1);\n const dow0 = (first.getDay() + 6) % 7;\n const daysInMonth = new Date(year, month, 0).getDate();\n const prevDays = new Date(year, month - 1, 0).getDate();\n const cells: MonthCellRef[] = [];\n for (let i = dow0 - 1; i >= 0; i--) {\n cells.push({ y: year, m: month - 1, d: prevDays - i, dim: true });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ y: year, m: month, d, dim: false });\n }\n let tail = 1;\n while (cells.length < 42) {\n cells.push({ y: year, m: month + 1, d: tail++, dim: true });\n }\n return cells;\n}\n\n/** YYYY-MM-DD key for a {y,m,d} triple. */\nexport function ymd(y: number, m: number, d: number): string {\n return `${y}-${String(m).padStart(2, \"0\")}-${String(d).padStart(2, \"0\")}`;\n}\n","import { useEffect, useState, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\nimport { DEFAULT_GRID, fmtHour, minToY, type TimeLocale } from \"./time\";\n\n/**\n * TimeGrid primitives — `GridColumn` (a day-of-events column with\n * hour-line dividers), `TimeGutter` (the labelled hour rail next to\n * it), and `NowLine` (auto-refreshing horizontal indicator at the\n * current time). All consume `--accent-color`, `--surface-*`, `--border`\n * via the `.tg-*` classes in shell.css; no service-specific tokens.\n *\n * @example\n * <div style={{ display: \"grid\", gridTemplateColumns: \"60px 1fr\" }}>\n * <TimeGutter dayStartH={6} dayEndH={22} pxPerMin={0.9} locale=\"vi\" />\n * <GridColumn dayStartH={6} dayEndH={22} pxPerMin={0.9} isToday>\n * <NowLine dayStartH={6} pxPerMin={0.9} />\n * <EventBlock ... />\n * </GridColumn>\n * </div>\n */\n\nexport interface GridColumnProps {\n /** Day-start hour (inclusive). Default 6. */\n dayStartH?: number;\n /** Day-end hour (exclusive). Default 22. */\n dayEndH?: number;\n /** Vertical pixels per minute. Default 0.9 (1h = 54px). */\n pxPerMin?: number;\n /** Tints column subtly when true. */\n isToday?: boolean;\n className?: string;\n style?: CSSProperties;\n children?: ReactNode;\n}\n\nexport function GridColumn({\n dayStartH = DEFAULT_GRID.dayStartH,\n dayEndH = DEFAULT_GRID.dayEndH,\n pxPerMin = DEFAULT_GRID.pxPerMin,\n isToday = false,\n className,\n style,\n children,\n}: GridColumnProps) {\n const rows: ReactNode[] = [];\n const rowHeight = 60 * pxPerMin;\n for (let h = dayStartH; h < dayEndH; h++) {\n rows.push(<div key={h} className=\"tg-hour-row\" style={{ height: rowHeight }} />);\n }\n return (\n <div\n className={cn(\"tg-col\", className)}\n data-today={isToday || undefined}\n style={style}\n >\n {rows}\n {children}\n </div>\n );\n}\n\nexport interface TimeGutterProps {\n dayStartH?: number;\n dayEndH?: number;\n pxPerMin?: number;\n locale?: TimeLocale;\n className?: string;\n}\n\nexport function TimeGutter({\n dayStartH = DEFAULT_GRID.dayStartH,\n dayEndH = DEFAULT_GRID.dayEndH,\n pxPerMin = DEFAULT_GRID.pxPerMin,\n locale = \"en\",\n className,\n}: TimeGutterProps) {\n const rows: ReactNode[] = [];\n const rowHeight = 60 * pxPerMin;\n for (let i = 0; i < dayEndH - dayStartH; i++) {\n rows.push(\n <div key={i} className=\"tg-hour-cell\" style={{ height: rowHeight }}>\n <span className=\"tg-hour-label\">\n {i === 0 ? \"\" : fmtHour(dayStartH + i, locale)}\n </span>\n </div>,\n );\n }\n return <div className={cn(\"tg-gutter\", className)}>{rows}</div>;\n}\n\nexport interface NowLineProps {\n /** Optional override; defaults to the live current time. */\n nowDate?: Date;\n dayStartH?: number;\n pxPerMin?: number;\n /** Auto-refresh interval in ms. Default 60_000 (1 minute). */\n refreshMs?: number;\n}\n\nexport function NowLine({\n nowDate,\n dayStartH = DEFAULT_GRID.dayStartH,\n pxPerMin = DEFAULT_GRID.pxPerMin,\n refreshMs = 60_000,\n}: NowLineProps) {\n const [tick, setTick] = useState(0);\n useEffect(() => {\n if (nowDate || refreshMs <= 0) return;\n const handle = window.setInterval(() => setTick((t) => t + 1), refreshMs);\n return () => window.clearInterval(handle);\n }, [nowDate, refreshMs]);\n\n const d = nowDate ?? new Date();\n void tick;\n const y = minToY(d.getHours(), d.getMinutes(), { dayStartH, pxPerMin });\n if (y < 0) return null;\n\n return (\n <>\n <div className=\"tg-now-dot\" style={{ top: y - 5 }} />\n <div className=\"tg-now-line\" style={{ top: y }} />\n </>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\nimport { DEFAULT_GRID, minToY, parseHM } from \"./time\";\nimport type { CalendarEvent, EventBlockVariant } from \"./types\";\n\n/**\n * EventBlock — absolutely-positioned timed-event chip inside a\n * `GridColumn`. Supports four visual treatments:\n *\n * - `solid` — saturated brand color (customer / external meets)\n * - `tint` — soft-mixed background (organizer / accepted)\n * - `tentative` — diagonal hatch over a soft tint\n * - `focus` — repeating subtle stripes (deep-work blocks)\n *\n * Multi-event overlap is handled by `lane` / `lanes` props (horizontal\n * slicing of the column). The selected state paints a 2px accent ring\n * via `--accent-color`.\n *\n * Service-agnostic: pass any `CalendarEvent`-shaped object + a `color`.\n */\nexport interface EventBlockProps {\n event: CalendarEvent;\n /** Event color (typically from the event's calendar). */\n color: string;\n variant?: EventBlockVariant;\n /** Whether the chip renders as the selected event (accent ring). */\n selected?: boolean;\n /** Horizontal lane index (0-based) for overlap layout. */\n lane?: number;\n /** Total lane count in the day. */\n lanes?: number;\n /** Day-grid configuration — must match the parent GridColumn. */\n dayStartH?: number;\n pxPerMin?: number;\n onClick?: (event: CalendarEvent) => void;\n /** Optional render-prop slot for trailing line (e.g. \"cá nhân\"). */\n footer?: ReactNode;\n className?: string;\n}\n\nexport function EventBlock({\n event,\n color,\n variant = \"tint\",\n selected = false,\n lane = 0,\n lanes = 1,\n dayStartH = DEFAULT_GRID.dayStartH,\n pxPerMin = DEFAULT_GRID.pxPerMin,\n onClick,\n footer,\n className,\n}: EventBlockProps) {\n const startVal = event.start ?? \"00:00\";\n const endVal = event.end ?? \"23:59\";\n const { h: sh, m: sm } = parseHM(startVal);\n const { h: eh, m: em } = parseHM(endVal);\n const top = minToY(sh, sm, { dayStartH, pxPerMin });\n const height = Math.max(20, minToY(eh, em, { dayStartH, pxPerMin }) - top - 1);\n const durationMin = eh * 60 + em - (sh * 60 + sm);\n const isShort = durationMin < 45;\n\n const bg =\n variant === \"focus\"\n ? `repeating-linear-gradient(135deg, ${color}24 0 6px, ${color}10 6px 12px)`\n : variant === \"tentative\"\n ? `repeating-linear-gradient(135deg, ${color}38 0 5px, transparent 5px 10px), color-mix(in oklch, ${color} 16%, var(--background))`\n : variant === \"solid\"\n ? color\n : `color-mix(in oklch, ${color} 18%, var(--background))`;\n\n const textColor = variant === \"solid\" ? \"white\" : color;\n\n const widthPct = `calc(${100 / Math.max(1, lanes)}% - 4px)`;\n const leftPct = `calc(${(100 * lane) / Math.max(1, lanes)}% + 2px)`;\n\n const style: CSSProperties = {\n top,\n height,\n left: leftPct,\n width: widthPct,\n background: bg,\n color: textColor,\n };\n\n return (\n <button\n type=\"button\"\n className={cn(\"event-block\", className)}\n data-short={isShort || undefined}\n data-selected={selected || undefined}\n data-variant={variant}\n style={style}\n onClick={() => onClick?.(event)}\n >\n <div style={{ display: \"flex\", gap: 4, alignItems: \"baseline\", minWidth: 0 }}>\n <span className=\"event-block-title\">{event.title}</span>\n </div>\n {!isShort && (\n <div className=\"event-block-meta\">\n {event.start}–{event.end}\n {event.location && (\n <span style={{ marginLeft: 6, opacity: 0.75 }}>· {event.location}</span>\n )}\n </div>\n )}\n {!isShort && footer && <div className=\"event-block-foot\">{footer}</div>}\n </button>\n );\n}\n\n/**\n * Naïve lane allocator for overlapping timed events on a single day.\n * Mutates / annotates input objects with `_lane` and `_lanes`; returns\n * the sorted array. Reused by Week + Day screens.\n */\nexport interface LanedEvent extends CalendarEvent {\n _lane: number;\n _lanes: number;\n}\n\nexport function layoutEvents(dayEvents: CalendarEvent[]): LanedEvent[] {\n const evs = [...dayEvents]\n .filter((e): e is CalendarEvent & { start: string; end: string } =>\n typeof e.start === \"string\" && typeof e.end === \"string\",\n )\n .sort((a, b) => a.start.localeCompare(b.start));\n const lanes: (CalendarEvent & { end: string })[][] = [];\n const annotated: LanedEvent[] = [];\n for (const e of evs) {\n let placed = false;\n for (let i = 0; i < lanes.length; i++) {\n const last = lanes[i][lanes[i].length - 1];\n if (last.end <= e.start) {\n lanes[i].push(e);\n annotated.push({ ...e, _lane: i, _lanes: 0 });\n placed = true;\n break;\n }\n }\n if (!placed) {\n lanes.push([e]);\n annotated.push({ ...e, _lane: lanes.length - 1, _lanes: 0 });\n }\n }\n const laneCount = Math.max(1, lanes.length);\n for (const a of annotated) a._lanes = laneCount;\n return annotated;\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * MonthCell — one day cell of a 6×7 month grid. Render-prop friendly:\n * the `events` slot is anything the caller wants (`EventPill` /\n * `AllDayChip` / their own render). Includes a \"+N more\" overflow row\n * helper.\n */\nexport interface MonthCellProps extends Omit<ComponentProps<\"div\">, \"children\"> {\n day: number;\n /** Is this the today cell? Paints the day-number with accent. */\n today?: boolean;\n /** Is this cell from a different month? Dimmed. */\n dim?: boolean;\n /** Sat/Sun cell — slight tint. */\n weekend?: boolean;\n /** Optional small header chip next to the number (e.g. \"Th. 5\" when day === 1). */\n monthLabel?: ReactNode;\n /** Events to render — typically EventPill / AllDayChip components. */\n events?: ReactNode;\n /** Number of additional events beyond what's rendered. */\n overflow?: number;\n /** Localised \"+N more\" label builder. */\n formatOverflow?: (n: number) => ReactNode;\n}\n\nexport function MonthCell({\n day,\n today = false,\n dim = false,\n weekend = false,\n monthLabel,\n events,\n overflow = 0,\n formatOverflow,\n className,\n ...rest\n}: MonthCellProps) {\n return (\n <div\n className={cn(\"month-cell\", className)}\n data-dim={dim || undefined}\n data-weekend={weekend || undefined}\n {...rest}\n >\n <div className=\"month-cell-head\">\n <span className=\"month-cell-num\" data-state={today ? \"today\" : undefined}>\n {day}\n </span>\n {monthLabel && <span className=\"month-cell-month-label\">{monthLabel}</span>}\n </div>\n <div className=\"month-cell-events\">\n {events}\n {overflow > 0 && (\n <span className=\"month-cell-more\">\n {formatOverflow ? formatOverflow(overflow) : `+ ${overflow} more`}\n </span>\n )}\n </div>\n </div>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * EventPill — single-line clickable row for month-cell event lists.\n * Layout: `dot · HH:MM · title`. For all-day variants, callers should\n * use `AllDayChip` instead (different visual).\n */\nexport interface EventPillProps extends ComponentProps<\"button\"> {\n color: string;\n time?: string;\n title: string;\n dim?: boolean;\n}\n\nexport function EventPill({\n color,\n time,\n title,\n dim = false,\n className,\n ...rest\n}: EventPillProps) {\n return (\n <button\n type=\"button\"\n className={cn(\"event-pill\", className)}\n data-dim={dim || undefined}\n {...rest}\n >\n <span className=\"event-pill-dot\" style={{ background: color }} />\n {time && <span className=\"event-pill-time\">{time}</span>}\n <span className=\"event-pill-title\">{title}</span>\n </button>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"../../cn\";\nimport { buildMonthGrid, ymd } from \"./time\";\n\n/**\n * MiniMonth — compact 6×7 month grid for sidebars and date pickers.\n * Mon-first, 22px-cell. Renders an event dot when `eventDots[ymd]` is\n * truthy and `--accent-color` for today/selected states.\n */\nexport interface MiniMonthYMD {\n y: number;\n m: number;\n d: number;\n}\n\nexport interface MiniMonthProps extends Omit<ComponentProps<\"div\">, \"onSelect\"> {\n /** Year of the grid. */\n year: number;\n /** Month (1–12) of the grid. */\n month: number;\n today: MiniMonthYMD;\n selected?: MiniMonthYMD;\n /** Map of YYYY-MM-DD → has-event boolean. */\n eventDots?: Record<string, boolean>;\n onSelect?: (ymd: MiniMonthYMD) => void;\n /** Day-of-week labels — Mon-first. Default JA single chars. */\n dowLabels?: readonly [string, string, string, string, string, string, string];\n}\n\nconst DEFAULT_DOWS = [\"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"] as const;\n\nexport function MiniMonth({\n year,\n month,\n today,\n selected,\n eventDots,\n onSelect,\n dowLabels = DEFAULT_DOWS,\n className,\n ...rest\n}: MiniMonthProps) {\n const cells = buildMonthGrid(year, month);\n return (\n <div className={cn(\"mini-month\", className)} {...rest}>\n {dowLabels.map((w, i) => (\n <div key={i} className=\"mini-month-dow\">\n {w}\n </div>\n ))}\n {cells.map((c, i) => {\n const isWeekend = i % 7 >= 5;\n const isToday = !c.dim && today.y === c.y && today.m === c.m && today.d === c.d;\n const isSel =\n !c.dim &&\n selected &&\n selected.y === c.y &&\n selected.m === c.m &&\n selected.d === c.d;\n const state = isToday ? \"today\" : isSel ? \"selected\" : undefined;\n const hasDot = !c.dim && eventDots ? Boolean(eventDots[ymd(c.y, c.m, c.d)]) : false;\n return (\n <button\n key={i}\n type=\"button\"\n className=\"mini-month-cell\"\n data-state={state}\n data-dim={c.dim || undefined}\n data-weekend={isWeekend || undefined}\n onClick={() => !c.dim && onSelect?.({ y: c.y, m: c.m, d: c.d })}\n disabled={c.dim}\n >\n <span>{c.d}</span>\n {hasDot && !isToday && <span className=\"mini-month-dot\" />}\n </button>\n );\n })}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * AvailabilityRow — one person × N time-slot row used in scheduling /\n * find-a-time grids. Generic over the slot dimension: `slots[i] = 0`\n * (free), `1` (tentative — hatched), `2` (busy — solid tint). An\n * optional `selectedRange` paints the picked-time overlay in accent.\n *\n * Two-cell grid: `personSlot | cellsSlot`, sized externally.\n */\nexport interface AvailabilityRowProps {\n /** Person slot — typically `<AttendeeListItem>` or a name + avatar. */\n person: ReactNode;\n /** 0 = free, 1 = tentative, 2 = busy — one per slot index. */\n slots: ReadonlyArray<0 | 1 | 2>;\n /** [startSlotInclusive, endSlotExclusive] — paints the accent overlay. */\n selectedRange?: [number, number] | null;\n className?: string;\n}\n\nexport function AvailabilityRow({\n person,\n slots,\n selectedRange,\n className,\n}: AvailabilityRowProps) {\n const slotCount = slots.length || 1;\n return (\n <div className={cn(\"avail-row\", className)}>\n <div className=\"avail-row-person\">{person}</div>\n <div\n className=\"avail-row-cells\"\n style={{ gridTemplateColumns: `repeat(${slotCount}, 1fr)` }}\n >\n {slots.map((v, i) => (\n <div key={i} className=\"avail-cell\" data-state={v} />\n ))}\n {selectedRange && (\n <div\n className=\"avail-row-overlay\"\n style={{\n left: `${(selectedRange[0] / slotCount) * 100}%`,\n width: `${((selectedRange[1] - selectedRange[0]) / slotCount) * 100}%`,\n }}\n />\n )}\n </div>\n </div>\n );\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"../../cn\";\n\n/**\n * SuggestedSlotCard — small button-shaped card surfacing a scheduling\n * recommendation. Two visual treatments: `default` (neutral border) and\n * `best` (accent border + accent text, e.g. \"all attendees free\").\n */\nexport interface SuggestedSlotCardProps extends ComponentProps<\"button\"> {\n label: ReactNode;\n meta?: ReactNode;\n /** Highlight as the best/recommended option. */\n best?: boolean;\n}\n\nexport function SuggestedSlotCard({\n label,\n meta,\n best = false,\n className,\n ...rest\n}: SuggestedSlotCardProps) {\n return (\n <button\n type=\"button\"\n className={cn(\"slot-card\", className)}\n data-best={best || undefined}\n {...rest}\n >\n <span className=\"slot-card-label\">{label}</span>\n {meta && <span className=\"slot-card-meta\">{meta}</span>}\n </button>\n );\n}\n","import {\n Button as RACButton,\n DateField as RACDateField,\n DateInput as RACDateInput,\n DatePicker as RACDatePicker,\n DateRangePicker as RACDateRangePicker,\n DateSegment as RACDateSegment,\n Dialog as RACDialog,\n FieldError as RACFieldError,\n Group as RACGroup,\n Label as RACLabel,\n Popover as RACPopover,\n Text as RACText,\n TimeField as RACTimeField,\n type DateValue,\n type DateFieldProps as RACDateFieldProps,\n type DatePickerProps as RACDatePickerProps,\n type DateRangePickerProps as RACDateRangePickerProps,\n type TimeFieldProps as RACTimeFieldProps,\n type TimeValue,\n} from \"react-aria-components\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { Calendar, RangeCalendar } from \"../data-display/Calendar\"\nimport { cn } from \"../cn\"\n\n/**\n * Date / time input primitives — segmented + popover combinations\n * built on Adobe React Aria Components. Mirrors the dxs-kintai\n * design-system patterns A–E from\n * `design-handoff/ui-system/dxs-kintai-design-system/project/preview/comp-datetimepicker.html`.\n *\n * Five exports:\n *\n * - `<DateField>` — segmented date input only (no popover).\n * - `<TimeField>` — segmented time input (HH:MM, optional seconds).\n * - `<DatePicker>` — single-date trigger + popover + Calendar.\n * - `<DateRangePicker>` — range trigger + popover + RangeCalendar.\n *\n * All four consume `@internationalized/date` values (CalendarDate,\n * Time, etc.) — convert to/from JS Date via `parseDate`, `parseTime`,\n * `today(getLocalTimeZone())` from `@internationalized/date`. The\n * segmented inputs are timezone-correct and locale-aware.\n *\n * Visual theming flows through the four theme axes\n * (`docs/specs/01-theme-axes.md`): `data-theme`, `data-accent`,\n * `data-density`, `data-font-size`.\n */\n\n// ─── DateField — segmented date input only ─────────────────────────\n\nexport interface DateFieldProps<T extends DateValue = DateValue>\n extends RACDateFieldProps<T> {\n label?: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function DateField<T extends DateValue = DateValue>({\n label,\n description,\n errorMessage,\n className,\n ...rest\n}: DateFieldProps<T>) {\n return (\n <RACDateField {...rest} className={cn(\"field\", className)}>\n {label != null && <RACLabel>{label}</RACLabel>}\n <RACDateInput className=\"dt-segments\">\n {(segment) => <RACDateSegment segment={segment} className=\"dt-seg\" />}\n </RACDateInput>\n {description != null && (\n <RACText slot=\"description\" className=\"help\">\n {description}\n </RACText>\n )}\n <RACFieldError className=\"help err\">{errorMessage}</RACFieldError>\n </RACDateField>\n )\n}\n\n// ─── TimeField — segmented time input ──────────────────────────────\n\nexport interface TimeFieldProps<T extends TimeValue = TimeValue>\n extends RACTimeFieldProps<T> {\n label?: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function TimeField<T extends TimeValue = TimeValue>({\n label,\n description,\n errorMessage,\n className,\n ...rest\n}: TimeFieldProps<T>) {\n return (\n <RACTimeField {...rest} className={cn(\"field\", className)}>\n {label != null && <RACLabel>{label}</RACLabel>}\n <RACDateInput className=\"dt-segments\">\n {(segment) => <RACDateSegment segment={segment} className=\"dt-seg\" />}\n </RACDateInput>\n {description != null && (\n <RACText slot=\"description\" className=\"help\">\n {description}\n </RACText>\n )}\n <RACFieldError className=\"help err\">{errorMessage}</RACFieldError>\n </RACTimeField>\n )\n}\n\n// ─── DatePicker — trigger + popover + Calendar ─────────────────────\n\nexport interface DatePickerProps<T extends DateValue = DateValue>\n extends RACDatePickerProps<T> {\n label?: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function DatePicker<T extends DateValue = DateValue>({\n label,\n description,\n errorMessage,\n className,\n ...rest\n}: DatePickerProps<T>) {\n return (\n <RACDatePicker {...rest} className={cn(\"field\", className)}>\n {label != null && <RACLabel>{label}</RACLabel>}\n <RACGroup className=\"dt-trigger\">\n <RACDateInput className=\"dt-segments dt-segments-inline\">\n {(segment) => <RACDateSegment segment={segment} className=\"dt-seg\" />}\n </RACDateInput>\n {/* Trigger button on the right uses a calendar icon\n * (Ant Design / shadcn convention). The previous `▾` chevron\n * read as a generic dropdown affordance — calendar matches the\n * primitive's purpose. */}\n <RACButton className=\"dt-trigger-btn\" aria-label=\"Open calendar\">\n <CalendarIcon aria-hidden size={14} strokeWidth={1.75} />\n </RACButton>\n </RACGroup>\n {description != null && (\n <RACText slot=\"description\" className=\"help\">\n {description}\n </RACText>\n )}\n <RACFieldError className=\"help err\">{errorMessage}</RACFieldError>\n <RACPopover className=\"dt-popover\">\n <RACDialog>\n <Calendar />\n </RACDialog>\n </RACPopover>\n </RACDatePicker>\n )\n}\n\n// ─── DateRangePicker — range trigger + popover + RangeCalendar ─────\n\nexport interface DateRangePickerProps<T extends DateValue = DateValue>\n extends RACDateRangePickerProps<T> {\n label?: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function DateRangePicker<T extends DateValue = DateValue>({\n label,\n description,\n errorMessage,\n className,\n ...rest\n}: DateRangePickerProps<T>) {\n return (\n <RACDateRangePicker {...rest} className={cn(\"field\", className)}>\n {label != null && <RACLabel>{label}</RACLabel>}\n <RACGroup className=\"dt-trigger\">\n <CalendarIcon aria-hidden size={14} strokeWidth={1.5} className=\"ico\" />\n <RACDateInput slot=\"start\" className=\"dt-segments dt-segments-inline\">\n {(segment) => <RACDateSegment segment={segment} className=\"dt-seg\" />}\n </RACDateInput>\n <span className=\"dt-sep\" aria-hidden>→</span>\n <RACDateInput slot=\"end\" className=\"dt-segments dt-segments-inline\">\n {(segment) => <RACDateSegment segment={segment} className=\"dt-seg\" />}\n </RACDateInput>\n <RACButton className=\"dt-trigger-btn\" aria-label=\"Open calendar\">\n <span aria-hidden>▾</span>\n </RACButton>\n </RACGroup>\n {description != null && (\n <RACText slot=\"description\" className=\"help\">\n {description}\n </RACText>\n )}\n <RACFieldError className=\"help err\">{errorMessage}</RACFieldError>\n <RACPopover className=\"dt-popover\">\n <RACDialog>\n <RangeCalendar />\n </RACDialog>\n </RACPopover>\n </RACDateRangePicker>\n )\n}\n","import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { ChevronLeft, ChevronRight, ChevronUp, ChevronDown } from \"lucide-react\";\nimport { cn } from \"../cn\";\n\n/**\n * Carousel — image / content slide deck.\n *\n * Pass `slides`, one ReactNode per slide. The track translates by\n * index along the configured `orientation`. Plain\n * React + CSS transform — no external dep. Autoplay pauses on hover\n * (mouseenter / mouseleave handlers; CSS `:hover` cannot reach JS).\n *\n * Prop vocabulary follows cardinal rule 23 §B: `value` /\n * `defaultValue` / `onValueChange` for selection state (current slide\n * index), `orientation`, `autoplay` (ms), `loop`, `arrows`, `dots`.\n * NEVER Ant's `activeKey` / `autoplaySpeed`.\n *\n */\n\nexport interface CarouselProps {\n /** Current slide index (0-based). */\n value?: number;\n /** Initial slide index when uncontrolled. */\n defaultValue?: number;\n onValueChange?: (index: number) => void;\n /** Auto-advance interval in ms. Omit / 0 to disable. */\n autoplay?: number;\n /** Wrap from last → first / first → last. Default true. */\n loop?: boolean;\n /** Show prev / next arrows. Default true. */\n arrows?: boolean;\n /** Show dot indicators. Default true. */\n dots?: boolean;\n /** Stack axis. Default \"horizontal\". */\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n slides: ReactNode[];\n}\n\nexport function Carousel({\n value: controlled,\n defaultValue = 0,\n onValueChange,\n autoplay,\n loop = true,\n arrows = true,\n dots = true,\n orientation = \"horizontal\",\n className,\n slides,\n}: CarouselProps) {\n const count = slides.length;\n\n const [internal, setInternal] = useState(defaultValue);\n const active = controlled ?? internal;\n\n const [paused, setPaused] = useState(false);\n\n const goTo = useCallback(\n (next: number) => {\n if (count === 0) return;\n let idx = next;\n if (loop) {\n idx = ((next % count) + count) % count;\n } else {\n idx = Math.max(0, Math.min(count - 1, next));\n }\n if (controlled === undefined) setInternal(idx);\n onValueChange?.(idx);\n },\n [controlled, count, loop, onValueChange],\n );\n\n const next = useCallback(() => goTo(active + 1), [active, goTo]);\n const prev = useCallback(() => goTo(active - 1), [active, goTo]);\n\n // Autoplay loop. Pause on hover (paused === true).\n const autoplayRef = useRef<ReturnType<typeof setInterval> | null>(null);\n useEffect(() => {\n if (!autoplay || autoplay <= 0 || paused || count < 2) return;\n autoplayRef.current = setInterval(() => {\n goTo(active + 1);\n }, autoplay);\n return () => {\n if (autoplayRef.current) clearInterval(autoplayRef.current);\n };\n }, [autoplay, paused, active, count, goTo]);\n\n const isVertical = orientation === \"vertical\";\n const trackStyle = isVertical\n ? { transform: `translateY(-${active * 100}%)`, flexDirection: \"column\" as const }\n : { transform: `translateX(-${active * 100}%)` };\n\n return (\n <div\n className={cn(\"carousel\", className)}\n data-orientation={orientation}\n role=\"region\"\n aria-roledescription=\"carousel\"\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n <div className=\"carousel-viewport\">\n <div className=\"carousel-track\" style={trackStyle}>\n {slides.map((slide, index) => (\n <div\n key={index}\n role=\"group\"\n aria-roledescription=\"slide\"\n className=\"carousel-slide\"\n >\n {slide}\n </div>\n ))}\n </div>\n </div>\n\n {arrows && count > 1 && (\n <>\n <button\n type=\"button\"\n className=\"carousel-arrow prev\"\n aria-label=\"Previous slide\"\n onClick={prev}\n disabled={!loop && active === 0}\n >\n {isVertical ? <ChevronUp size={16} /> : <ChevronLeft size={16} />}\n </button>\n <button\n type=\"button\"\n className=\"carousel-arrow next\"\n aria-label=\"Next slide\"\n onClick={next}\n disabled={!loop && active === count - 1}\n >\n {isVertical ? <ChevronDown size={16} /> : <ChevronRight size={16} />}\n </button>\n </>\n )}\n\n {dots && count > 1 && (\n <div className=\"carousel-dots\" role=\"tablist\" aria-label=\"Slides\">\n {slides.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-label={`Go to slide ${i + 1}`}\n aria-selected={i === active}\n data-active={i === active}\n className=\"carousel-dot\"\n onClick={() => goTo(i)}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","import { useCallback, useState, type ReactNode } from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { cn } from \"../cn\";\n\n/**\n * Collapse — accordion-style expandable panel group.\n *\n * Small uncontrolled-friendly implementation (Radix Accordion is not\n * in the locked stack today; if it is added later, swap the internals\n * without touching the public API). Prop vocabulary follows cardinal\n * rule 23 §B: `value` / `defaultValue` / `onValueChange` for\n * expansion state, `multiple` boolean, `variant` for visual treatment,\n * `size` for dimensional scale. NEVER `activeKey` / `accordion` /\n * `bordered`.\n *\n */\n\ntype CollapseValue = string | string[] | undefined;\n\nfunction normalize(value: CollapseValue, multiple: boolean): string[] {\n if (value === undefined) return [];\n if (Array.isArray(value)) return multiple ? value : value.slice(0, 1);\n return [value];\n}\n\nexport interface CollapseItem {\n value: string;\n title: ReactNode;\n extra?: ReactNode;\n disabled?: boolean;\n content?: ReactNode;\n}\n\nexport interface CollapseProps {\n /** Expanded panel key(s). String for single, string[] for multi. */\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n /** Allow multiple panels open simultaneously. Default false. */\n multiple?: boolean;\n /** Visual treatment. Default \"default\". */\n variant?: \"default\" | \"ghost\" | \"outlined\";\n /** Dimensional scale. Default \"default\". */\n size?: \"small\" | \"default\" | \"large\";\n /** Disable every panel. */\n disabled?: boolean;\n items: CollapseItem[];\n className?: string;\n}\n\nexport function Collapse({\n value: controlled,\n defaultValue,\n onValueChange,\n multiple = false,\n variant = \"default\",\n size = \"default\",\n disabled = false,\n items,\n className,\n}: CollapseProps) {\n const [internal, setInternal] = useState<string[]>(\n normalize(defaultValue, multiple),\n );\n const expanded =\n controlled !== undefined ? normalize(controlled, multiple) : internal;\n\n const toggle = useCallback(\n (panelValue: string) => {\n if (disabled) return;\n let nextList: string[];\n if (expanded.includes(panelValue)) {\n nextList = expanded.filter((v) => v !== panelValue);\n } else if (multiple) {\n nextList = [...expanded, panelValue];\n } else {\n nextList = [panelValue];\n }\n if (controlled === undefined) setInternal(nextList);\n onValueChange?.(multiple ? nextList : (nextList[0] ?? \"\"));\n },\n [controlled, disabled, expanded, multiple, onValueChange],\n );\n\n return (\n <div\n className={cn(\n \"collapse-root\",\n `collapse-variant-${variant}`,\n `collapse-size-${size}`,\n className,\n )}\n data-disabled={disabled || undefined}\n >\n {items.map((item) => {\n const isOpen = expanded.includes(item.value);\n const isDisabled = disabled || item.disabled;\n return (\n <div\n key={item.value}\n className=\"collapse-panel\"\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled || undefined}\n >\n <button\n type=\"button\"\n className=\"collapse-trigger\"\n aria-expanded={isOpen}\n aria-controls={`collapse-content-${item.value}`}\n disabled={isDisabled}\n onClick={() => toggle(item.value)}\n >\n <ChevronRight className=\"collapse-chevron\" size={14} aria-hidden />\n <span className=\"collapse-title\">{item.title}</span>\n {item.extra !== undefined && <span className=\"collapse-extra\">{item.extra}</span>}\n </button>\n {isOpen && (\n <div\n id={`collapse-content-${item.value}`}\n role=\"region\"\n className=\"collapse-content\"\n >\n {item.content}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","import { type ReactNode } from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * List — header + items + optional footer surface.\n *\n * Two consumption modes:\n *\n * Data-driven: pass `dataSource` + `renderItem`.\n *\n * Prop vocabulary follows cardinal rule 23 §B: `size` for dimensional\n * scale, `bordered` boolean for surface treatment, `cols` for grid\n * mode (column count). NEVER Ant's `itemLayout` / `grid` object —\n * `cols` is the one knob.\n *\n * @example data-driven\n * <List\n * dataSource={users}\n * renderItem={(u) => (\n * <UserRow avatar={<Avatar src={u.photo} />} title={u.name} description={u.role} />\n * )}\n * />\n *\n */\n\nexport interface ListProps<T = unknown> {\n /** Data array; required for data-driven mode. Omit when using children. */\n dataSource?: T[];\n /** Render fn for each datum. */\n renderItem?: (item: T, index: number) => ReactNode;\n /** Optional header content. */\n header?: ReactNode;\n /** Optional footer (e.g. pagination). */\n footer?: ReactNode;\n /** Title rendered above the list as a heading. */\n title?: ReactNode;\n /** Empty state when dataSource is empty (defaults to plain \"No data\"). */\n empty?: ReactNode;\n /** Dimensional scale. Default \"default\". */\n size?: \"small\" | \"default\" | \"large\";\n /** Wrap the list in a bordered surface. */\n bordered?: boolean;\n /** Show dividers between items. Defaults to true when `bordered`. */\n split?: boolean;\n /** Render a loading placeholder instead of items. */\n loading?: boolean;\n /** Grid mode — number of columns. Omit for list (1 column) layout. */\n cols?: number;\n className?: string;\n}\n\nexport function List<T = unknown>({\n dataSource,\n renderItem,\n header,\n footer,\n title,\n empty,\n size = \"default\",\n bordered = false,\n split,\n loading = false,\n cols,\n className,\n}: ListProps<T>) {\n const splitOn = split ?? bordered;\n\n const items: ReactNode = (() => {\n if (loading) {\n return <div className=\"list-loading\">Loading…</div>;\n }\n if (dataSource !== undefined) {\n if (dataSource.length === 0) {\n return (\n <div className=\"list-empty\">\n {empty ?? <span className=\"muted\">No data</span>}\n </div>\n );\n }\n if (!renderItem) return null;\n return dataSource.map((item, i) => {\n const node = renderItem(item, i);\n return (\n <li key={i} className=\"list-item\">\n {node}\n </li>\n );\n });\n }\n return null;\n })();\n\n const isGrid = typeof cols === \"number\" && cols > 1;\n\n return (\n <div\n className={cn(\n \"list\",\n `list-size-${size}`,\n isGrid && \"list-grid\",\n className,\n )}\n data-bordered={bordered || undefined}\n data-split={splitOn || undefined}\n data-cols={isGrid ? cols : undefined}\n >\n {title !== undefined && <div className=\"list-title\">{title}</div>}\n {header !== undefined && <div className=\"list-header\">{header}</div>}\n {isGrid ? (\n <ul className=\"list-items list-grid-inner\">{items}</ul>\n ) : (\n <ul className=\"list-items\">{items}</ul>\n )}\n {footer !== undefined && <div className=\"list-footer\">{footer}</div>}\n </div>\n );\n}\n","import {\n useCallback,\n useEffect,\n useState,\n type ComponentProps,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Image — `<img>` element with optional click-to-preview lightbox.\n *\n * Default opens a fullscreen overlay on click; Esc + outside-click +\n * the corner × button all close it. Loading / error states render\n * via the `placeholder` / `fallback` slots (skeleton-styled by\n * default through the canonical `.image-wrap` class chain in\n * `src/styles/shell/35-badge-tag-misc.css`).\n *\n * @example\n * <Image src=\"/photo.jpg\" alt=\"Sunset\" fit=\"cover\" preview />\n */\n\nexport interface ImageProps extends Omit<ComponentProps<\"img\">, \"loading\"> {\n src: string;\n alt: string;\n /** Click → fullscreen preview overlay. Default true. */\n preview?: boolean;\n /** Loading placeholder (default: skeleton block). */\n placeholder?: ReactNode;\n /** Fallback when src fails to load. */\n fallback?: ReactNode;\n /** Eager / lazy loading. Default \"lazy\". */\n loadStrategy?: \"eager\" | \"lazy\";\n /** Object-fit. Default \"cover\". */\n fit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n className?: string;\n style?: CSSProperties;\n}\n\nexport function Image({\n src,\n alt,\n preview = true,\n placeholder,\n fallback,\n loadStrategy = \"lazy\",\n fit = \"cover\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n ...rest\n}: ImageProps) {\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\n \"loading\",\n );\n const [open, setOpen] = useState(false);\n\n const handleLoad: ComponentProps<\"img\">[\"onLoad\"] = (event) => {\n setStatus(\"loaded\");\n onLoad?.(event);\n };\n const handleError: ComponentProps<\"img\">[\"onError\"] = (event) => {\n setStatus(\"error\");\n onError?.(event);\n };\n\n const handleClick: ComponentProps<\"img\">[\"onClick\"] = (event) => {\n onClick?.(event);\n if (preview && status === \"loaded\") {\n setOpen(true);\n }\n };\n\n const close = useCallback(() => setOpen(false), []);\n\n useEffect(() => {\n if (!open) return;\n const onKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") close();\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [open, close]);\n\n const showFallback = status === \"error\" && fallback !== undefined;\n const showPlaceholder = status === \"loading\" && placeholder !== undefined;\n\n return (\n <>\n <span\n className={cn(\"image-wrap\", className)}\n data-preview={preview ? \"true\" : \"false\"}\n data-status={status}\n style={style}\n >\n {showPlaceholder ? <span className=\"image-placeholder\">{placeholder}</span> : null}\n {showFallback ? (\n <span className=\"image-fallback\">{fallback}</span>\n ) : (\n <img\n src={src}\n alt={alt}\n loading={loadStrategy}\n style={{ objectFit: fit }}\n onLoad={handleLoad}\n onError={handleError}\n onClick={handleClick}\n {...rest}\n />\n )}\n </span>\n {open ? (\n <div\n className=\"image-preview-overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={alt}\n onClick={close}\n >\n <img\n src={src}\n alt={alt}\n onClick={(event) => event.stopPropagation()}\n />\n <button\n type=\"button\"\n className=\"image-preview-close\"\n aria-label=\"Close preview\"\n onClick={close}\n >\n ×\n </button>\n </div>\n ) : null}\n </>\n );\n}\n","import { useMemo, type ReactNode } from \"react\";\nimport QR from \"qrcode\";\nimport { cn } from \"../cn\";\n\n/**\n * QRCode — render a QR code as inline SVG.\n *\n * Uses the `qrcode` library to compute the matrix (no canvas / no\n * `dangerouslySetInnerHTML`); each dark cell becomes one `<rect>`.\n * Foreground colour defaults to `currentColor` so the QR theme\n * follows the surrounding text colour (cardinal rule 21 — theme\n * axis flows naturally).\n *\n * @example\n * <QRCode value=\"https://godx.jp\" />\n * <QRCode value=\"https://example\" size={240} icon={<Logo />} />\n */\n\nexport interface QRCodeProps {\n /** Text / URL to encode. */\n value: string;\n /** Output size in pixels. Default 160. */\n size?: number;\n /** Error correction level. Default \"M\". */\n errorLevel?: \"L\" | \"M\" | \"Q\" | \"H\";\n /** Foreground colour (defaults to `currentColor` — themeable). */\n color?: string;\n /** Background colour (defaults to `transparent`). */\n bgColor?: string;\n /** Optional icon overlay (logo in the centre). */\n icon?: ReactNode;\n /** Icon size in px. Default = 22% of `size`. */\n iconSize?: number;\n className?: string;\n}\n\nexport function QRCode({\n value,\n size = 160,\n errorLevel = \"M\",\n color = \"currentColor\",\n bgColor = \"transparent\",\n icon,\n iconSize,\n className,\n}: QRCodeProps) {\n const matrix = useMemo(() => {\n try {\n const qr = QR.create(value, { errorCorrectionLevel: errorLevel });\n return qr.modules;\n } catch {\n return null;\n }\n }, [value, errorLevel]);\n\n if (!matrix) {\n return (\n <span\n className={cn(\"qrcode\", className)}\n style={{ width: size, height: size }}\n aria-label=\"QR code unavailable\"\n />\n );\n }\n\n const { size: modules, data } = matrix;\n const cells: { x: number; y: number }[] = [];\n for (let y = 0; y < modules; y += 1) {\n for (let x = 0; x < modules; x += 1) {\n if (data[y * modules + x]) {\n cells.push({ x, y });\n }\n }\n }\n\n const overlayPx = iconSize ?? Math.round(size * 0.22);\n\n return (\n <span\n className={cn(\"qrcode\", className)}\n style={{ width: size, height: size }}\n >\n <svg\n viewBox={`0 0 ${modules} ${modules}`}\n width={size}\n height={size}\n shapeRendering=\"crispEdges\"\n role=\"img\"\n aria-label={value}\n >\n {bgColor !== \"transparent\" ? (\n <rect width={modules} height={modules} fill={bgColor} />\n ) : null}\n {cells.map((cell) => (\n <rect\n key={`${cell.x}-${cell.y}`}\n x={cell.x}\n y={cell.y}\n width={1}\n height={1}\n fill={color}\n />\n ))}\n </svg>\n {icon !== undefined ? (\n <span\n className=\"qrcode-icon\"\n style={{ width: overlayPx, height: overlayPx }}\n >\n {icon}\n </span>\n ) : null}\n </span>\n );\n}\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport {\n createContext,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../cn\";\n\n/**\n * Tooltip — Radix-backed floating label anchored to a trigger.\n *\n * Two equivalent consumption modes per cardinal rule 23 (concept-first\n * API + minimise sub-components) and rule 31 (no nested wrappers):\n *\n * 1. Data-driven (preferred) — pass `content`:\n *\n * <Tooltip content=\"保存します\" placement=\"top\">\n * <Button>保存</Button>\n * </Tooltip>\n *\n * Auto-wires the Radix Root + Trigger(asChild) + Content.\n *\n * Shared timing across the app is configured once on\n * `<GodxConfigProvider>` — the consumer never imports a separate\n * `TooltipProvider`. The provider internally mounts the Radix Provider\n * so every nested `<Tooltip>` picks up the same `delayDuration` /\n * `skipDelayDuration`. Per-tooltip overrides flow through the\n * `delayDuration` prop on `<Tooltip>` itself.\n *\n * Styled via the canonical `.tooltip-content` class from\n * `src/styles/shell/35-badge-tag-misc.css` (cardinal rule 21 — reads\n * tokens, honours every axis).\n */\n\n/**\n * Internal marker context — populated by `InternalTooltipProvider`\n * (mounted by `<GodxConfigProvider>`) so data-driven `<Tooltip>` calls\n * can detect they're already inside a Provider and skip\n * double-wrapping. Not exported.\n */\nconst TooltipProviderPresenceContext = createContext<boolean>(false);\n\ntype InternalTooltipProviderProps = ComponentPropsWithoutRef<\n typeof TooltipPrimitive.Provider\n>;\n\n/**\n * `InternalTooltipProvider` — wraps Radix's `Tooltip.Provider` AND\n * populates the internal presence-marker context so nested data-driven\n * `<Tooltip>` calls dedupe automatically.\n *\n * This is an internal surface (not exported from `@godxjp/ui`).\n * `<GodxConfigProvider>` mounts it once at the root so every consumer\n * gets shared tooltip timing without ever importing this directly.\n */\nexport function InternalTooltipProvider({\n children,\n ...rest\n}: InternalTooltipProviderProps) {\n return (\n <TooltipPrimitive.Provider {...rest}>\n <TooltipProviderPresenceContext.Provider value={true}>\n {children}\n </TooltipProviderPresenceContext.Provider>\n </TooltipPrimitive.Provider>\n );\n}\n\ninterface TooltipFloatingProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {}\n\nfunction TooltipFloating({ className, sideOffset = 4, ...rest }: TooltipFloatingProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n sideOffset={sideOffset}\n className={cn(\"tooltip-content\", className)}\n {...rest}\n />\n </TooltipPrimitive.Portal>\n );\n}\n\nexport interface TooltipProps {\n /** Tooltip text / content. When set, primitive auto-wires the\n * Radix Root + Trigger(asChild) + Content around the child trigger\n * element — the consumer just provides the trigger node. When\n * omitted, the primitive renders children without tooltip wiring. */\n content?: ReactNode;\n /** Trigger element (data-driven mode) OR Radix Root children\n * (compositional mode). */\n children?: ReactNode;\n /** Anchor side per cardinal rule 23 §B `placement` vocabulary.\n * Default `top`. Honoured only in data-driven mode. */\n placement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Open / close delay in ms. Default 200. Overrides the\n * app-wide default set on `<GodxConfigProvider>` for this single\n * tooltip; without an override the Provider's shared timing wins. */\n delayDuration?: number;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Tooltip({\n content,\n children,\n placement = \"top\",\n delayDuration = 200,\n open,\n defaultOpen,\n onOpenChange,\n}: TooltipProps) {\n const hasAncestorProvider = useContext(TooltipProviderPresenceContext);\n if (content === undefined) return <>{children}</>;\n // Data-driven — auto-wire Root + Trigger + Content. Wrap with an\n // ad-hoc Provider ONLY when there's no ancestor Provider (e.g.\n // isolated Storybook render without <GodxConfigProvider>); otherwise\n // the outer Provider's timing would be silently overridden\n // (cardinal rule 31 — no double-wrap).\n const root = (\n <TooltipPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipFloating side={placement}>{content}</TooltipFloating>\n </TooltipPrimitive.Root>\n );\n if (hasAncestorProvider) return root;\n return (\n <InternalTooltipProvider delayDuration={delayDuration}>\n {root}\n </InternalTooltipProvider>\n );\n}\n","// Module-level GodxConfig holder.\n//\n// Why a module-level holder, not just React context: axios instances\n// are created at module-load time (before React mounts), and axios\n// interceptors need to read config at REQUEST time — which is after\n// the React tree is up. A mutable holder solves both: the React\n// provider writes into it on mount + on every state change; the\n// interceptor reads via `getGodxConfig()` per request.\n//\n// The holder is the single source of truth at runtime. The React\n// state mirrors it for re-renders; outside of React, anyone (axios,\n// fetch wrapper, error reporter, telemetry, etc.) reads through the\n// `getGodxConfig()` getter.\n\nexport interface GodxConfig {\n /** BCP 47 language tag, e.g. \"ja\", \"en-US\". */\n locale: string;\n /** IANA time zone name, e.g. \"Asia/Tokyo\". */\n timezone: string;\n /**\n * Currency default for `formatCurrency()` calls that omit a code.\n * ISO 4217 — e.g. \"JPY\", \"USD\", \"VND\", \"PHP\". Optional; helpers\n * require an explicit currency when this is undefined.\n */\n currency?: string;\n}\n\nconst DEFAULT: GodxConfig = {\n locale: \"ja\",\n timezone: \"Asia/Tokyo\",\n};\n\nlet CURRENT: GodxConfig = { ...DEFAULT };\nconst subscribers = new Set<(c: GodxConfig) => void>();\n\nexport function getGodxConfig(): GodxConfig {\n return CURRENT;\n}\n\nexport function setGodxConfig(next: Partial<GodxConfig>): void {\n const merged: GodxConfig = { ...CURRENT, ...next };\n if (\n merged.locale === CURRENT.locale &&\n merged.timezone === CURRENT.timezone &&\n merged.currency === CURRENT.currency\n ) {\n return;\n }\n CURRENT = merged;\n for (const fn of subscribers) {\n try {\n fn(CURRENT);\n } catch {\n /* subscriber threw — swallow so other subscribers run */\n }\n }\n}\n\nexport function resetGodxConfig(defaults: GodxConfig = DEFAULT): void {\n setGodxConfig(defaults);\n}\n\nexport function subscribeGodxConfig(\n fn: (c: GodxConfig) => void,\n): () => void {\n subscribers.add(fn);\n return () => {\n subscribers.delete(fn);\n };\n}\n","// Locale + timezone-aware formatters.\n//\n// Per ADR 0005 the framework standardises on native `Intl` APIs for\n// formatting and `@internationalized/date` for value types. These\n// helpers accept the value shapes the framework can encounter in the\n// wild (native `Date`, ISO string, or any `@internationalized/date`\n// value) and resolve the locale + timezone from the\n// preferences holder.\n//\n// Non-React surface — callable from anywhere (axios interceptors,\n// React renders, event handlers, tests). The matching React hook is\n// `useFormatters()` in `src/hooks/useFormatters.ts`; it returns the\n// same surface bound to the live provider context.\n\nimport {\n type CalendarDate,\n type CalendarDateTime,\n type Time,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport { getGodxConfig } from \"../preferences/holder\";\n\n/** A value any framework primitive accepts as a date / time input. */\nexport type DateLike =\n | Date\n | string\n | number\n | CalendarDate\n | CalendarDateTime\n | ZonedDateTime;\n\n/** A value any framework primitive accepts as a time-only input. */\nexport type TimeLike = Date | string | number | Time | CalendarDateTime | ZonedDateTime;\n\nexport interface FormatOptions {\n /** BCP 47 locale override. Defaults to the preferences holder. */\n locale?: string;\n /** IANA timezone override. Defaults to the preferences holder. */\n timezone?: string;\n}\n\nexport interface FormatDateOptions extends FormatOptions, Intl.DateTimeFormatOptions {}\nexport interface FormatNumberOptions extends FormatOptions, Intl.NumberFormatOptions {}\nexport interface FormatCurrencyOptions extends FormatOptions, Intl.NumberFormatOptions {\n currency: string;\n}\n\nfunction resolveLocale(opts?: FormatOptions): string {\n return opts?.locale ?? getGodxConfig().locale;\n}\n\nfunction resolveTimezone(opts?: FormatOptions): string {\n return opts?.timezone ?? getGodxConfig().timezone;\n}\n\n/** Convert any DateLike value into a native `Date` for `Intl` use. */\nfunction toDate(value: DateLike): Date {\n if (value instanceof Date) return value;\n if (typeof value === \"number\") return new Date(value);\n if (typeof value === \"string\") return new Date(value);\n if (typeof value === \"object\" && value !== null && \"toDate\" in value) {\n const v = value as CalendarDate | CalendarDateTime | ZonedDateTime;\n return v.toDate(getGodxConfig().timezone);\n }\n throw new TypeError(`format helpers: unsupported value ${String(value)}`);\n}\n\n/** Drop format-specific opts before passing to Intl. */\nfunction extractIntlOpts<T extends FormatOptions>(opts: T | undefined): Omit<T, keyof FormatOptions> {\n if (!opts) return {} as Omit<T, keyof FormatOptions>;\n const { locale: _l, timezone: _t, ...rest } = opts;\n return rest as Omit<T, keyof FormatOptions>;\n}\n\n/** Format a date by locale + timezone. Defaults: medium date style. */\nexport function formatDate(value: DateLike, opts?: FormatDateOptions): string {\n const locale = resolveLocale(opts);\n const timezone = resolveTimezone(opts);\n const intlOpts: Intl.DateTimeFormatOptions = {\n dateStyle: \"medium\",\n ...extractIntlOpts(opts),\n timeZone: timezone,\n };\n return new Intl.DateTimeFormat(locale, intlOpts).format(toDate(value));\n}\n\n/** Format a time by locale + timezone. Defaults: short time. */\nexport function formatTime(value: DateLike, opts?: FormatDateOptions): string {\n const locale = resolveLocale(opts);\n const timezone = resolveTimezone(opts);\n const intlOpts: Intl.DateTimeFormatOptions = {\n timeStyle: \"short\",\n ...extractIntlOpts(opts),\n timeZone: timezone,\n };\n return new Intl.DateTimeFormat(locale, intlOpts).format(toDate(value));\n}\n\n/** Format both date + time. Defaults: medium date, short time. */\nexport function formatDateTime(value: DateLike, opts?: FormatDateOptions): string {\n const locale = resolveLocale(opts);\n const timezone = resolveTimezone(opts);\n const intlOpts: Intl.DateTimeFormatOptions = {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n ...extractIntlOpts(opts),\n timeZone: timezone,\n };\n return new Intl.DateTimeFormat(locale, intlOpts).format(toDate(value));\n}\n\n/** Format a number by locale. */\nexport function formatNumber(value: number, opts?: FormatNumberOptions): string {\n const locale = resolveLocale(opts);\n return new Intl.NumberFormat(locale, extractIntlOpts(opts)).format(value);\n}\n\n/** Format a currency amount. ISO 4217 currency code required. */\nexport function formatCurrency(value: number, opts: FormatCurrencyOptions): string {\n const locale = resolveLocale(opts);\n const intlOpts: Intl.NumberFormatOptions = {\n style: \"currency\",\n ...extractIntlOpts(opts),\n };\n return new Intl.NumberFormat(locale, intlOpts).format(value);\n}\n","// Locale-aware relative-time formatter.\n//\n// Wraps `Intl.RelativeTimeFormat` (browser-native, no library cost) with\n// the diff-bucket logic — second / minute / hour / day / week / month /\n// year — so consumers can pass a single date/time value and get\n// \"2時間前\" / \"2 hours ago\" / \"2 giờ trước\" / \"2 oras na nakalipas\" by\n// reading the active locale from the preferences holder.\n\nimport { type DateLike } from \"./format\";\nimport { getGodxConfig } from \"../preferences/holder\";\n\nexport interface RelativeOptions {\n /** BCP 47 locale override. Defaults to the preferences holder. */\n locale?: string;\n /** Reference moment. Defaults to \"now\". Useful for tests. */\n now?: Date | number;\n /** `Intl.RelativeTimeFormat` numeric style. Default `\"auto\"`. */\n numeric?: \"always\" | \"auto\";\n /** `Intl.RelativeTimeFormat` style. Default `\"long\"`. */\n style?: \"long\" | \"short\" | \"narrow\";\n}\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst WEEK = 7 * DAY;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nfunction toMs(value: DateLike): number {\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\") return new Date(value).getTime();\n if (typeof value === \"object\" && value !== null && \"toDate\" in value) {\n return value.toDate(getGodxConfig().timezone).getTime();\n }\n throw new TypeError(`formatRelative: unsupported value ${String(value)}`);\n}\n\n/**\n * Format the distance between `value` and `opts.now` (default: current\n * time) as a locale-aware string.\n *\n * Granularity tops out at \"year\". Anything longer than a year reports\n * \"in N years\" / \"N years ago\".\n */\nexport function formatRelative(value: DateLike, opts: RelativeOptions = {}): string {\n const locale = opts.locale ?? getGodxConfig().locale;\n const nowMs = opts.now instanceof Date ? opts.now.getTime() : (opts.now ?? Date.now());\n const valueMs = toMs(value);\n const diffMs = valueMs - nowMs;\n const abs = Math.abs(diffMs);\n\n let unit: Intl.RelativeTimeFormatUnit;\n let amount: number;\n\n if (abs < MINUTE) {\n unit = \"second\";\n amount = Math.round(diffMs / SECOND);\n } else if (abs < HOUR) {\n unit = \"minute\";\n amount = Math.round(diffMs / MINUTE);\n } else if (abs < DAY) {\n unit = \"hour\";\n amount = Math.round(diffMs / HOUR);\n } else if (abs < WEEK) {\n unit = \"day\";\n amount = Math.round(diffMs / DAY);\n } else if (abs < MONTH) {\n unit = \"week\";\n amount = Math.round(diffMs / WEEK);\n } else if (abs < YEAR) {\n unit = \"month\";\n amount = Math.round(diffMs / MONTH);\n } else {\n unit = \"year\";\n amount = Math.round(diffMs / YEAR);\n }\n\n return new Intl.RelativeTimeFormat(locale, {\n numeric: opts.numeric ?? \"auto\",\n style: opts.style ?? \"long\",\n }).format(amount, unit);\n}\n","// React hook — locale + timezone-bound formatter surface.\n//\n// Reads from `<GodxConfigProvider>` so components re-render when the\n// active locale or timezone changes. Returns a memoised object whose\n// methods always resolve to the current context values.\n//\n// Mirrors the surface of `src/i18n/format.ts` + `src/i18n/relative.ts`\n// — the non-React calls accept explicit `{ locale, timezone }` opts;\n// the hook fills them in from context.\n\nimport { useMemo, useSyncExternalStore } from \"react\";\nimport { getGodxConfig, subscribeGodxConfig } from \"../preferences/holder\";\nimport {\n formatCurrency as fnFormatCurrency,\n formatDate as fnFormatDate,\n formatDateTime as fnFormatDateTime,\n formatNumber as fnFormatNumber,\n formatTime as fnFormatTime,\n type DateLike,\n type FormatCurrencyOptions,\n type FormatDateOptions,\n type FormatNumberOptions,\n} from \"../i18n/format\";\nimport {\n formatRelative as fnFormatRelative,\n type RelativeOptions,\n} from \"../i18n/relative\";\n\nexport interface Formatters {\n /** Active locale (BCP 47). */\n locale: string;\n /** Active IANA timezone. */\n timezone: string;\n formatDate: (value: DateLike, opts?: Omit<FormatDateOptions, \"locale\" | \"timezone\">) => string;\n formatTime: (value: DateLike, opts?: Omit<FormatDateOptions, \"locale\" | \"timezone\">) => string;\n formatDateTime: (value: DateLike, opts?: Omit<FormatDateOptions, \"locale\" | \"timezone\">) => string;\n formatRelative: (value: DateLike, opts?: Omit<RelativeOptions, \"locale\">) => string;\n formatNumber: (value: number, opts?: Omit<FormatNumberOptions, \"locale\">) => string;\n formatCurrency: (value: number, opts: Omit<FormatCurrencyOptions, \"locale\">) => string;\n}\n\nexport function useFormatters(): Formatters {\n // Subscribes to the module-level holder so this hook also works when\n // no `<GodxConfigProvider>` is mounted (e.g. isolated Storybook\n // renders). The holder's initial value matches the provider's\n // initial value — locale/timezone fall through `Intl` defaults.\n const { locale, timezone } = useSyncExternalStore(\n subscribeGodxConfig,\n getGodxConfig,\n getGodxConfig,\n );\n\n return useMemo<Formatters>(\n () => ({\n locale,\n timezone,\n formatDate: (value, opts) => fnFormatDate(value, { ...opts, locale, timezone }),\n formatTime: (value, opts) => fnFormatTime(value, { ...opts, locale, timezone }),\n formatDateTime: (value, opts) =>\n fnFormatDateTime(value, { ...opts, locale, timezone }),\n formatRelative: (value, opts) => fnFormatRelative(value, { ...opts, locale }),\n formatNumber: (value, opts) => fnFormatNumber(value, { ...opts, locale }),\n formatCurrency: (value, opts) =>\n fnFormatCurrency(value, { ...opts, locale }),\n }),\n [locale, timezone],\n );\n}\n","import { type ReactNode } from \"react\";\nimport {\n type CalendarDate,\n type CalendarDateTime,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport { cn } from \"../cn\";\nimport { useFormatters } from \"../../hooks/useFormatters\";\nimport type { ColorProp } from \"../../props\";\n\n/**\n * Timeline — chronological event rail.\n *\n * Data-driven API (cardinal rule 23 + rule 31 — no parallel\n * sub-component primitives). Consumers pass an `items` array; the\n * primitive renders the rail end-to-end. Per-item customisation\n * flows through optional `renderItem` for advanced cases.\n *\n * Three visual variants, each backed by an existing CSS atom shipped\n * with the dxs-kintai card canon (`src/styles/shell/80-card-sections.css`):\n *\n * - `\"list\"` (default) — vertical rail with markers, `.tl-list` + `.tl-item`.\n * - `\"branching\"` — approval pipeline with left timestamp, dot, body.\n * `.tl-br` + `.row`.\n * - `\"feed\"` — social-style avatar feed. `.tl-feed` + `.item`.\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `variant` — visual treatment (\"list\" | \"branching\" | \"feed\").\n * - `color` per item — semantic role of the marker.\n * - `current` per item — boolean, marks the active item.\n * - `animate` per item — pulsing ring around the marker.\n * - NEVER `mode` / `position` / `type` / `dot` / `pending` synonyms\n * (cardinal rule 32 — a separate `pending` prop is redundant when\n * a regular item with `animate: true` covers the same need).\n *\n * @example Data-driven (preferred)\n * <Timeline\n * items={[\n * { color: \"success\", title: \"申請\", time: \"09:30\" },\n * { color: \"primary\", current: true, animate: true, title: \"承認待ち\" },\n * ]}\n * />\n *\n * @example With renderItem (full custom)\n * <Timeline\n * items={events}\n * renderItem={(it) => <RichRow data={it} />}\n * />\n */\n\nexport type TimelineVariant = \"list\" | \"branching\" | \"feed\";\n\n/** Identical to `TagPresetColor` — the framework's semantic palette\n * minus `\"secondary\"` (which is Typography's text-dimming slot).\n * Aliased so any colour added to `ColorProp` lights up here too. */\nexport type TimelineColor = Exclude<ColorProp, \"secondary\">;\n\nexport interface TimelineItem {\n /** Stable key for React reconciliation. Defaults to the item index\n * but consumers should pass a real id for lists that re-order. */\n key?: string | number;\n /** Semantic role of the marker. Default \"default\". */\n color?: TimelineColor;\n /** Heavier outline on the marker — typically the active step. */\n current?: boolean;\n /** Pulsing ring around the marker — typically paired with\n * `current: true` on an in-progress item. Honours\n * `prefers-reduced-motion` (rule 6 a11y baseline). */\n animate?: boolean;\n /** Time / timestamp slot — right-side label in `branching`, inline\n * `.ts` in `list`, inline `.ts` in `feed`. Accepts a temporal value\n * (`Date`, ISO string, or any `@internationalized/date` value) — in\n * that case the active provider's locale + timezone format it via\n * `useFormatters` (`format` or `relative` controlled by the\n * Timeline `timeFormat` prop). Pass `ReactNode` to opt out. */\n time?:\n | ReactNode\n | Date\n | CalendarDate\n | CalendarDateTime\n | ZonedDateTime;\n /** Avatar slot — `feed` variant only. */\n avatar?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n /** Extra content rendered after `title` + `description`. */\n children?: ReactNode;\n /** Per-item class merged onto the row. */\n className?: string;\n}\n\nexport interface TimelineProps {\n /** Items to render. Each row is a single object — no sub-component\n * ceremony. */\n items: TimelineItem[];\n /** Custom row renderer. When set, takes priority over the default\n * variant rendering — receives the item + the active variant +\n * index, returns the full row JSX. */\n renderItem?: (item: TimelineItem, variant: TimelineVariant, index: number) => ReactNode;\n /** Visual variant. Default `list`. */\n variant?: TimelineVariant;\n /** Render items last-first. */\n reverse?: boolean;\n /** Show the vertical connector line that joins markers. Default\n * `true` for `list` + `branching`; ignored by `feed` (feed has no\n * connector by design). */\n connector?: boolean;\n /** How to render temporal `time` values. `\"relative\"` (default for\n * `feed`) renders \"2 時間前\" / \"2 hours ago\" via `useFormatters`.\n * `\"datetime\"` renders an absolute \"MMM d, HH:mm\" style. `\"time\"`\n * renders the time-of-day portion only. Ignored when `time` is a\n * `ReactNode` (string / JSX). */\n timeFormat?: \"relative\" | \"datetime\" | \"date\" | \"time\";\n className?: string;\n}\n\ntype TimeFormat = NonNullable<TimelineProps[\"timeFormat\"]>;\ntype TemporalValue =\n | Date\n | CalendarDate\n | CalendarDateTime\n | ZonedDateTime;\n\nfunction isTemporal(value: unknown): value is TemporalValue {\n if (value instanceof Date) return true;\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"toDate\" in value &&\n typeof (value as { toDate: unknown }).toDate === \"function\"\n ) {\n return true;\n }\n return false;\n}\n\n// Pure helper — given the formatter surface (resolved once in Timeline)\n// + a TimelineItem.time value + the active `timeFormat` mode, return\n// the renderable node. ReactNode values pass through untouched.\nfunction formatTimeNode(\n value: TimelineItem[\"time\"],\n format: TimeFormat,\n fmt: ReturnType<typeof useFormatters>,\n): ReactNode {\n if (!isTemporal(value)) return value as ReactNode;\n switch (format) {\n case \"relative\":\n return fmt.formatRelative(value);\n case \"date\":\n return fmt.formatDate(value);\n case \"time\":\n return fmt.formatTime(value);\n case \"datetime\":\n default:\n return fmt.formatDateTime(value);\n }\n}\n\n// Map the semantic color vocabulary onto the canonical .tl-* atom\n// hues shipped with the card design system. Atoms cover a subset;\n// the rest fall back to the neutral marker.\nfunction colorClass(color: TimelineColor = \"default\"): string {\n switch (color) {\n case \"success\":\n return \"success\";\n case \"primary\":\n return \"primary\";\n case \"attention\":\n return \"attention\";\n case \"warning\":\n return \"warning\";\n case \"destructive\":\n case \"info\":\n case \"default\":\n default:\n return \"\";\n }\n}\n\nfunction defaultRender(\n item: TimelineItem,\n variant: TimelineVariant,\n timeFormat: TimeFormat,\n fmt: ReturnType<typeof useFormatters>,\n): ReactNode {\n const hue = colorClass(item.color);\n const time = formatTimeNode(item.time, timeFormat, fmt);\n\n if (variant === \"branching\") {\n return (\n <div\n className={cn(\n \"row\",\n hue,\n item.current && \"current\",\n item.animate && \"animate\",\n item.className,\n )}\n >\n <span className=\"when\">{time}</span>\n <div className=\"node\" aria-hidden />\n <div className=\"body\">\n {item.title !== undefined && <div className=\"t\">{item.title}</div>}\n {item.description !== undefined && (\n <div className=\"d\">{item.description}</div>\n )}\n {item.children}\n </div>\n </div>\n );\n }\n\n if (variant === \"feed\") {\n return (\n <div className={cn(\"item\", item.className)}>\n {item.avatar}\n <div className=\"body\">\n <div className=\"h\">\n {item.title !== undefined && <b>{item.title}</b>}\n {time !== undefined && <span className=\"ts\">{time}</span>}\n </div>\n {item.description !== undefined && (\n <div className=\"d\">{item.description}</div>\n )}\n {item.children}\n </div>\n </div>\n );\n }\n\n // Default — list variant.\n return (\n <li\n className={cn(\n \"tl-item\",\n hue,\n item.current && \"current\",\n item.animate && \"animate\",\n item.className,\n )}\n >\n {(item.title !== undefined || time !== undefined) && (\n <div className=\"t-h\">\n {item.title !== undefined && <span>{item.title}</span>}\n {time !== undefined && <span className=\"ts\">{time}</span>}\n </div>\n )}\n {item.description !== undefined && <div className=\"t-d\">{item.description}</div>}\n {item.children}\n </li>\n );\n}\n\nexport function Timeline({\n items,\n renderItem,\n variant = \"list\",\n reverse = false,\n connector = true,\n timeFormat,\n className,\n}: TimelineProps) {\n const ordered = reverse ? items.slice().reverse() : items;\n const fmt = useFormatters();\n // Feed reads as a social timeline so default to \"X時間前\" relative\n // time; list + branching default to absolute \"datetime\" output.\n const effectiveFormat: TimeFormat =\n timeFormat ?? (variant === \"feed\" ? \"relative\" : \"datetime\");\n\n const rows = ordered.map((item, i) => {\n const key = item.key ?? i;\n const node = renderItem\n ? renderItem(item, variant, i)\n : defaultRender(item, variant, effectiveFormat, fmt);\n // Wrap to attach the key in a generic way regardless of returned tag.\n return <RowKey key={key}>{node}</RowKey>;\n });\n\n const className_ = cn(\n variant === \"list\" && \"tl-list\",\n variant === \"branching\" && \"tl-br\",\n variant === \"feed\" && \"tl-feed\",\n // Connector toggle — `feed` variant has no connector by design,\n // so the prop is meaningful only for `list` + `branching`.\n !connector && variant !== \"feed\" && \"tl-no-connector\",\n className,\n );\n\n return variant === \"list\" ? (\n <ul className={className_}>{rows}</ul>\n ) : (\n <div className={className_}>{rows}</div>\n );\n}\n\n/** Internal helper — React needs the key on the element returned by\n * `.map()`. `RowKey` is a transparent wrapper that lets us assign the\n * key without forcing the renderer to do so. Returns the child verbatim\n * via Fragment so it doesn't alter the DOM. */\nfunction RowKey({ children }: { children: ReactNode }): ReactNode {\n return <>{children}</>;\n}\n","import { forwardRef, useMemo, useState, type ReactNode } from \"react\"\nimport {\n Button as AriaButton,\n Checkbox as AriaCheckbox,\n SelectionIndicator,\n Tree as AriaTree,\n TreeItem as AriaTreeItem,\n TreeItemContent,\n type Key,\n type Selection,\n} from \"react-aria-components\"\nimport { ChevronRight } from \"lucide-react\"\nimport { cn } from \"../cn\"\n\n/**\n * Tree — standalone hierarchical view (no popover).\n *\n * React Aria-backed sibling of `<TreeSelect>` — same recursive shape,\n * but renders inline with ARIA tree keyboard navigation and selection.\n * Useful for org charts, file explorers, category navigators where the\n * tree IS the surface (not a dropdown).\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `value` / `defaultValue` / `onValueChange` — Radix-style selection\n * (single: `string`; multiple: `string[]`).\n * - `multiple` — boolean (NEVER `mode=\"multiple\"`).\n * - `expandedKeys` / `defaultExpandedKeys` / `onExpandedKeysChange`\n * — expansion state.\n * - `checkable` — render checkboxes alongside labels.\n * - `showLine` — render connector guides.\n * - `density` — local row spacing override for tree-heavy surfaces.\n *\n * @example\n * <Tree\n * treeData={[\n * { key: \"eng\", title: \"エンジニアリング\", children: [\n * { key: \"fe\", title: \"Frontend\" },\n * { key: \"be\", title: \"Backend\" },\n * ]},\n * ]}\n * defaultExpandedKeys={[\"eng\"]}\n * />\n */\n\nexport interface TreeNode {\n key: string\n title: ReactNode\n icon?: ReactNode\n disabled?: boolean\n selectable?: boolean\n children?: TreeNode[]\n}\n\nexport interface TreeRenderItemState {\n node: TreeNode\n isExpanded: boolean\n isSelected: boolean\n isDisabled: boolean\n hasChildren: boolean\n level: number\n}\n\nexport type TreeDensity = \"compact\" | \"default\" | \"comfortable\"\n\nexport interface TreeProps {\n treeData: TreeNode[]\n /** Selected key(s). */\n value?: string | string[]\n defaultValue?: string | string[]\n onValueChange?: (value: string | string[]) => void\n /** Allow multi-select. */\n multiple?: boolean\n /** Initially-expanded node keys. */\n defaultExpandedKeys?: string[]\n /** Controlled expanded keys. */\n expandedKeys?: string[]\n onExpandedKeysChange?: (keys: string[]) => void\n /** Render checkboxes (multi-select via checkbox). Implies `multiple`. */\n checkable?: boolean\n /** Render connector lines between depths. */\n showLine?: boolean\n /** Local row spacing override. Defaults to the page density. */\n density?: TreeDensity\n /** Override the row's icon + label content without replacing the ARIA tree. */\n renderItem?: (state: TreeRenderItemState) => ReactNode\n className?: string\n}\n\nfunction normalizeIn(raw: string | string[] | undefined): string[] {\n if (raw === undefined) return []\n return Array.isArray(raw) ? raw : raw ? [raw] : []\n}\n\ninterface NodeRowProps {\n node: TreeNode\n checkable: boolean\n depth: number\n guides: boolean[]\n isLast: boolean\n renderItem?: TreeProps[\"renderItem\"]\n}\n\nfunction NodeRow({ node, checkable, depth, guides, isLast, renderItem }: NodeRowProps): ReactNode {\n const hasChildren = !!node.children && node.children.length > 0\n const childGuides = depth === 0 ? [] : [...guides, !isLast]\n return (\n <AriaTreeItem\n className=\"tree-node\"\n id={node.key}\n textValue={String(node.title)}\n isDisabled={node.disabled}\n >\n <TreeItemContent>\n {({ hasChildItems, isExpanded, isSelected, isDisabled, level }) => {\n const content = renderItem?.({\n node,\n isExpanded,\n isSelected,\n isDisabled,\n hasChildren: hasChildItems,\n level,\n }) ?? (\n <>\n {node.icon !== undefined && (\n <span className=\"tree-icon\" aria-hidden>\n {node.icon}\n </span>\n )}\n <span className=\"tree-label\">{node.title}</span>\n </>\n )\n\n return (\n <>\n <span className=\"tree-guides\" aria-hidden>\n {guides.map((continues, index) => (\n <span\n key={index}\n className=\"tree-guide\"\n data-continuation={continues ? \"true\" : undefined}\n />\n ))}\n {depth > 0 && (\n <span\n className=\"tree-guide tree-guide-branch\"\n data-last={isLast ? \"true\" : undefined}\n />\n )}\n </span>\n {hasChildItems ? (\n <AriaButton slot=\"chevron\" className=\"tree-toggle\">\n <ChevronRight aria-hidden className=\"tree-toggle-icon\" />\n </AriaButton>\n ) : (\n <span className=\"tree-toggle\" aria-hidden />\n )}\n {checkable ? (\n <AriaCheckbox slot=\"selection\" className=\"tree-checkbox\" />\n ) : (\n <SelectionIndicator className=\"tree-selection\" />\n )}\n <span className=\"tree-row-content\">{content}</span>\n </>\n )\n }}\n </TreeItemContent>\n {hasChildren\n ? node.children!.map((child, index) => (\n <NodeRow\n key={child.key}\n node={child}\n checkable={checkable}\n depth={depth + 1}\n guides={childGuides}\n isLast={index === node.children!.length - 1}\n renderItem={renderItem}\n />\n ))\n : null}\n </AriaTreeItem>\n )\n}\n\nfunction collectKeys(nodes: TreeNode[], predicate: (node: TreeNode) => boolean): string[] {\n const out: string[] = []\n const walk = (items: TreeNode[]) => {\n for (const item of items) {\n if (predicate(item)) out.push(item.key)\n if (item.children) walk(item.children)\n }\n }\n walk(nodes)\n return out\n}\n\nfunction selectionFromKeys(keys: Iterable<Key> | \"all\"): string[] {\n if (keys === \"all\") return []\n return Array.from(keys, String)\n}\n\nexport const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(\n {\n treeData,\n value,\n defaultValue,\n onValueChange,\n multiple = false,\n defaultExpandedKeys,\n expandedKeys,\n onExpandedKeysChange,\n checkable = false,\n showLine = false,\n density,\n renderItem,\n className,\n },\n ref,\n) {\n const isMulti = multiple || checkable\n const isControlled = value !== undefined\n const [internal, setInternal] = useState<string[]>(normalizeIn(defaultValue))\n const selectedKeys = isControlled ? normalizeIn(value) : internal\n\n const disabledKeys = useMemo(\n () => collectKeys(treeData, (node) => node.disabled === true),\n [treeData],\n )\n\n const selectableKeys = useMemo(\n () => new Set(collectKeys(treeData, (node) => node.selectable !== false)),\n [treeData],\n )\n\n const handleSelectionChange = (keys: Selection) => {\n const next = selectionFromKeys(keys).filter((key) => selectableKeys.has(key))\n const nextValue = isMulti ? next : next.slice(0, 1)\n if (!isControlled) setInternal(nextValue)\n if (isMulti) onValueChange?.(nextValue)\n else onValueChange?.(nextValue[0] ?? \"\")\n }\n\n const handleExpandedChange = (keys: Set<Key>) => {\n onExpandedKeysChange?.(Array.from(keys, String))\n }\n\n return (\n <AriaTree\n ref={ref}\n aria-label=\"Tree\"\n className={cn(\"tree\", className)}\n data-show-line={showLine ? \"true\" : undefined}\n data-density={density}\n selectionMode={isMulti ? \"multiple\" : \"single\"}\n selectionBehavior={checkable ? \"toggle\" : \"replace\"}\n selectedKeys={new Set(selectedKeys)}\n onSelectionChange={handleSelectionChange}\n disabledKeys={disabledKeys}\n expandedKeys={expandedKeys}\n defaultExpandedKeys={expandedKeys === undefined ? defaultExpandedKeys : undefined}\n onExpandedChange={handleExpandedChange}\n >\n {treeData.map((node, index) => (\n <NodeRow\n key={node.key}\n node={node}\n checkable={checkable}\n depth={0}\n guides={[]}\n isLast={index === treeData.length - 1}\n renderItem={renderItem}\n />\n ))}\n </AriaTree>\n )\n})\n","import {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type RefObject,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Button } from \"../general/Button\";\nimport { cn } from \"../cn\";\n\n/**\n * Tour — multi-step product walkthrough.\n *\n * Overlays the viewport, highlights a target through a true cutout,\n * advances step-by-step. The callout positions near the target's\n * bounding rect (or page-centre when `placement=\"center\"`).\n *\n * Vocabulary (cardinal rule 23 §B):\n * - `open` / `defaultOpen` / `onOpenChange` — Radix-style visibility.\n * - `current` / `defaultCurrent` / `onCurrentChange` — active step.\n * - `placement` — positional anchor of the callout.\n *\n * @example\n * <Tour\n * defaultOpen\n * steps={[\n * { target: \"#new-btn\", title: \"新規作成\", description: \"…\" },\n * { target: \"#filter\", title: \"絞り込み\" },\n * ]}\n * />\n */\n\nexport type TourPlacement = \"top\" | \"right\" | \"bottom\" | \"left\" | \"center\";\n\nexport interface TourStep {\n /** CSS selector OR ref to highlight. Omit / `null` → centred. */\n target?: string | RefObject<HTMLElement | null>;\n title: ReactNode;\n description?: ReactNode;\n /** Callout placement relative to the target. Default \"bottom\". */\n placement?: TourPlacement;\n}\n\nexport interface TourLabels {\n prev?: string;\n next?: string;\n finish?: string;\n skip?: string;\n}\n\nconst DEFAULT_LABELS: Required<TourLabels> = {\n prev: \"Back\",\n next: \"Next\",\n finish: \"Finish\",\n skip: \"Skip\",\n};\n\nexport interface TourProps {\n steps: TourStep[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Controlled current step (0-based). */\n current?: number;\n defaultCurrent?: number;\n onCurrentChange?: (step: number) => void;\n /** Called when the user clicks Finish on the last step. */\n onFinish?: () => void;\n /** Called when the user dismisses (Skip / Esc). */\n onClose?: () => void;\n /** Override button strings. */\n labels?: TourLabels;\n className?: string;\n}\n\ninterface CalloutPosition {\n top: number;\n left: number;\n}\n\nconst CALLOUT_GAP = 12;\nconst CALLOUT_WIDTH = 320;\nconst CALLOUT_HEIGHT_ESTIMATE = 160;\nconst TARGET_PADDING = 4;\n\nfunction resolveTarget(\n target: TourStep[\"target\"],\n): HTMLElement | null {\n if (!target) return null;\n if (typeof target === \"string\") {\n return document.querySelector<HTMLElement>(target);\n }\n return target.current ?? null;\n}\n\nfunction computeCalloutPos(\n rect: DOMRect,\n placement: TourPlacement,\n): CalloutPosition {\n const viewportW =\n typeof window !== \"undefined\" ? window.innerWidth : 1280;\n const viewportH =\n typeof window !== \"undefined\" ? window.innerHeight : 800;\n\n let top = 0;\n let left = 0;\n switch (placement) {\n case \"top\":\n top = rect.top - CALLOUT_HEIGHT_ESTIMATE - CALLOUT_GAP;\n left = rect.left + rect.width / 2 - CALLOUT_WIDTH / 2;\n break;\n case \"right\":\n top = rect.top + rect.height / 2 - CALLOUT_HEIGHT_ESTIMATE / 2;\n left = rect.right + CALLOUT_GAP;\n break;\n case \"left\":\n top = rect.top + rect.height / 2 - CALLOUT_HEIGHT_ESTIMATE / 2;\n left = rect.left - CALLOUT_WIDTH - CALLOUT_GAP;\n break;\n case \"bottom\":\n default:\n top = rect.bottom + CALLOUT_GAP;\n left = rect.left + rect.width / 2 - CALLOUT_WIDTH / 2;\n break;\n }\n\n // Clamp inside the viewport.\n top = Math.max(8, Math.min(viewportH - CALLOUT_HEIGHT_ESTIMATE - 8, top));\n left = Math.max(8, Math.min(viewportW - CALLOUT_WIDTH - 8, left));\n return { top, left };\n}\n\nexport function Tour({\n steps,\n open,\n defaultOpen = false,\n onOpenChange,\n current,\n defaultCurrent = 0,\n onCurrentChange,\n onFinish,\n onClose,\n labels,\n className,\n}: TourProps) {\n const isOpenControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(defaultOpen);\n const isOpen = isOpenControlled ? !!open : internalOpen;\n\n const isStepControlled = current !== undefined;\n const [internalStep, setInternalStep] = useState<number>(defaultCurrent);\n const stepIndex = isStepControlled\n ? Math.max(0, Math.min(steps.length - 1, current ?? 0))\n : Math.max(0, Math.min(steps.length - 1, internalStep));\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const setStep = useCallback(\n (next: number) => {\n if (!isStepControlled) setInternalStep(next);\n onCurrentChange?.(next);\n },\n [isStepControlled, onCurrentChange],\n );\n\n const resolvedLabels = useMemo<Required<TourLabels>>(\n () => ({ ...DEFAULT_LABELS, ...(labels ?? {}) }),\n [labels],\n );\n\n const step = steps[stepIndex];\n const placement: TourPlacement = step?.placement ?? \"bottom\";\n const isFirst = stepIndex === 0;\n const isLast = stepIndex === steps.length - 1;\n\n const [pos, setPos] = useState<CalloutPosition | null>(null);\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null);\n const rafRef = useRef<number | null>(null);\n const reactMaskId = useId();\n const maskId = `tour-mask-${reactMaskId.replace(/:/g, \"\")}`;\n\n const recompute = useCallback(() => {\n if (!isOpen || !step) {\n setPos(null);\n setTargetRect(null);\n return;\n }\n if (placement === \"center\" || step.target == null) {\n setPos(null);\n setTargetRect(null);\n return;\n }\n const el = resolveTarget(step.target);\n if (!el) {\n setPos(null);\n setTargetRect(null);\n return;\n }\n const rect = el.getBoundingClientRect();\n setTargetRect(rect);\n setPos(computeCalloutPos(rect, placement));\n }, [isOpen, placement, step]);\n\n useEffect(() => {\n if (!isOpen) return;\n recompute();\n const onScroll = () => {\n if (rafRef.current != null) cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(recompute);\n };\n window.addEventListener(\"scroll\", onScroll, true);\n window.addEventListener(\"resize\", onScroll);\n return () => {\n window.removeEventListener(\"scroll\", onScroll, true);\n window.removeEventListener(\"resize\", onScroll);\n if (rafRef.current != null) cancelAnimationFrame(rafRef.current);\n };\n }, [isOpen, recompute]);\n\n const handleClose = useCallback(() => {\n setOpen(false);\n onClose?.();\n }, [setOpen, onClose]);\n\n const handleNext = useCallback(() => {\n if (isLast) {\n setOpen(false);\n onFinish?.();\n return;\n }\n setStep(stepIndex + 1);\n }, [isLast, stepIndex, setStep, setOpen, onFinish]);\n\n const handlePrev = useCallback(() => {\n if (isFirst) return;\n setStep(stepIndex - 1);\n }, [isFirst, stepIndex, setStep]);\n\n useEffect(() => {\n if (!isOpen) return;\n const onKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") handleClose();\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [isOpen, handleClose]);\n\n if (!isOpen || !step || typeof document === \"undefined\") return null;\n\n const calloutStyle =\n pos !== null\n ? { top: pos.top, left: pos.left }\n : ({} as Record<string, never>);\n\n const highlightStyle =\n targetRect !== null\n ? {\n top: targetRect.top - TARGET_PADDING,\n left: targetRect.left - TARGET_PADDING,\n width: targetRect.width + TARGET_PADDING * 2,\n height: targetRect.height + TARGET_PADDING * 2,\n }\n : null;\n\n return createPortal(\n <div\n className={cn(\"tour-overlay\", className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"tour-callout-title\"\n >\n <svg className=\"tour-mask\" aria-hidden onClick={handleClose}>\n <defs>\n <mask id={maskId}>\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n {highlightStyle !== null && (\n <rect\n className=\"tour-mask-cutout\"\n x={highlightStyle.left}\n y={highlightStyle.top}\n width={highlightStyle.width}\n height={highlightStyle.height}\n rx={8}\n ry={8}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n className=\"tour-mask-scrim\"\n width=\"100%\"\n height=\"100%\"\n mask={`url(#${maskId})`}\n />\n </svg>\n {highlightStyle !== null && (\n <div\n className=\"tour-highlight\"\n aria-hidden\n style={highlightStyle}\n />\n )}\n <div\n className={cn(\n \"tour-callout\",\n pos === null && \"tour-callout-center\",\n )}\n style={calloutStyle}\n data-placement={placement}\n >\n <div className=\"tour-callout-title\" id=\"tour-callout-title\">\n {step.title}\n </div>\n {step.description !== undefined && (\n <div className=\"tour-callout-desc\">{step.description}</div>\n )}\n <div className=\"tour-callout-footer\">\n <span className=\"tour-callout-progress\">\n {stepIndex + 1} / {steps.length}\n </span>\n <div className=\"tour-callout-actions\">\n <Button variant=\"ghost\" size=\"small\" onClick={handleClose}>\n {resolvedLabels.skip}\n </Button>\n {!isFirst && (\n <Button variant=\"secondary\" size=\"small\" onClick={handlePrev}>\n {resolvedLabels.prev}\n </Button>\n )}\n <Button variant=\"primary\" size=\"small\" onClick={handleNext}>\n {isLast ? resolvedLabels.finish : resolvedLabels.next}\n </Button>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n}\n"]}