@waypointjs/builder 0.1.2 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1076 -414
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +1078 -416
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme.ts","../src/store/builder-store.ts","../src/components/ExternalVariablePanel.tsx","../src/hooks/useAllFieldPaths.ts","../src/components/ConditionBuilder.tsx","../src/components/DependsOnInput.tsx","../src/components/Modal.tsx","../src/components/FieldEditor.tsx","../src/utils/step-dependencies.ts","../src/components/FieldList.tsx","../src/components/PreviewPanel.tsx","../src/components/StepEditor.tsx","../src/components/StepList.tsx","../src/components/Toolbar.tsx","../src/components/WaypointBuilder.tsx"],"names":["jsxs","jsx","useState","styles","useEffect","inputStyle","StepList","e","useRef"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @waypointjs/builder — Theming\n *\n * All design tokens used by the builder UI.\n * Pass a partial `WaypointTheme` to `<WaypointBuilder theme={...} />` to override any token.\n *\n * Built-in themes: `DEFAULT_THEME` (light) and `DARK_THEME`.\n */\n\n// ---------------------------------------------------------------------------\n// Type\n// ---------------------------------------------------------------------------\n\nexport interface WaypointTheme {\n // ── Primary accent ─────────────────────────────────────────────────────\n /** Main brand color — buttons, selected state accent. Default: #6366f1 */\n primary?: string;\n /** Darker shade of primary — hover states, dep badge text. Default: #4338ca */\n primaryDark?: string;\n /** Light primary background — dep badges, type badges. Default: #e0e7ff */\n primaryBg?: string;\n /** Very light primary — selected card background. Default: #ede9fe */\n primaryMuted?: string;\n /** Primary border — selected card outline. Default: #a78bfa */\n primaryBorder?: string;\n\n // ── Toolbar ────────────────────────────────────────────────────────────\n /** Toolbar background. Default: #111827 */\n toolbarBg?: string;\n /** Toolbar bottom border. Default: #1f2937 */\n toolbarBorder?: string;\n /** Toolbar logo / accent color. Default: #a78bfa */\n toolbarLogo?: string;\n /** Toolbar primary text color. Default: #f9fafb */\n toolbarText?: string;\n /** Toolbar muted text (buttons). Default: #d1d5db */\n toolbarTextMuted?: string;\n /** Toolbar subtle text (separator). Default: #4b5563 */\n toolbarTextSubtle?: string;\n\n // ── Canvas & surfaces ──────────────────────────────────────────────────\n /** Main background (panels, dropdowns). Default: #ffffff */\n canvas?: string;\n /** Subtle surface (card backgrounds, inputs). Default: #f9fafb */\n surface?: string;\n /** Slightly darker surface (hover, alternate rows). Default: #f3f4f6 */\n surfaceMuted?: string;\n /** Alternative surface (code blocks, preview bg). Default: #f1f5f9 */\n surfaceAlt?: string;\n\n // ── Borders ────────────────────────────────────────────────────────────\n /** Default border color. Default: #e5e7eb */\n border?: string;\n /** Muted border (inputs, selects). Default: #d1d5db */\n borderMuted?: string;\n\n // ── Text ───────────────────────────────────────────────────────────────\n /** Primary text. Default: #111827 */\n text?: string;\n /** Secondary text (labels, sub-headings). Default: #374151 */\n textSecondary?: string;\n /** Muted text (helper labels). Default: #6b7280 */\n textMuted?: string;\n /** Subtle text (metadata, hints). Default: #9ca3af */\n textSubtle?: string;\n /** Monospace / code text. Default: #475569 */\n textMono?: string;\n\n // ── Semantic — danger ──────────────────────────────────────────────────\n /** Danger foreground. Default: #ef4444 */\n danger?: string;\n /** Darker danger text. Default: #dc2626 */\n dangerText?: string;\n /** Danger background (very light). Default: #fef2f2 */\n dangerBg?: string;\n /** Danger background (strong). Default: #fee2e2 */\n dangerBgStrong?: string;\n /** Danger border. Default: #fecaca */\n dangerBorder?: string;\n\n // ── Semantic — warning ─────────────────────────────────────────────────\n /** Warning text / badge foreground. Default: #d97706 */\n warning?: string;\n /** Warning strong (dirty dot). Default: #f59e0b */\n warningStrong?: string;\n /** Warning background. Default: #fef3c7 */\n warningBg?: string;\n\n // ── Semantic — success ─────────────────────────────────────────────────\n /** Success text. Default: #059669 */\n success?: string;\n /** Success background. Default: #d1fae5 */\n successBg?: string;\n\n // ── Semantic — info ────────────────────────────────────────────────────\n /** Info icon / text. Default: #3b82f6 */\n info?: string;\n /** Info text (used-by ref chips). Default: #3b82f6 */\n infoText?: string;\n /** Info background (light). Default: #eff6ff */\n infoBg?: string;\n /** Info background (strong, ref chip bg). Default: #eff6ff */\n infoBgStrong?: string;\n /** Info border. Default: #bfdbfe */\n infoBorder?: string;\n\n // ── Typography & shape ─────────────────────────────────────────────────\n /** Font stack. Default: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif */\n font?: string;\n /** Base border radius. Default: 6px */\n radius?: string;\n /** Large border radius (cards, modals). Default: 8px */\n radiusLg?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Default (light) theme\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_THEME: Required<WaypointTheme> = {\n primary: \"#6366f1\",\n primaryDark: \"#4338ca\",\n primaryBg: \"#e0e7ff\",\n primaryMuted: \"#ede9fe\",\n primaryBorder: \"#a78bfa\",\n\n toolbarBg: \"#111827\",\n toolbarBorder: \"#1f2937\",\n toolbarLogo: \"#a78bfa\",\n toolbarText: \"#f9fafb\",\n toolbarTextMuted: \"#d1d5db\",\n toolbarTextSubtle: \"#4b5563\",\n\n canvas: \"#ffffff\",\n surface: \"#f9fafb\",\n surfaceMuted: \"#f3f4f6\",\n surfaceAlt: \"#f1f5f9\",\n\n border: \"#e5e7eb\",\n borderMuted: \"#d1d5db\",\n\n text: \"#111827\",\n textSecondary: \"#374151\",\n textMuted: \"#6b7280\",\n textSubtle: \"#9ca3af\",\n textMono: \"#475569\",\n\n danger: \"#ef4444\",\n dangerText: \"#dc2626\",\n dangerBg: \"#fef2f2\",\n dangerBgStrong: \"#fee2e2\",\n dangerBorder: \"#fecaca\",\n\n warning: \"#d97706\",\n warningStrong: \"#f59e0b\",\n warningBg: \"#fef3c7\",\n\n success: \"#059669\",\n successBg: \"#d1fae5\",\n\n info: \"#3b82f6\",\n infoText: \"#3b82f6\",\n infoBg: \"#eff6ff\",\n infoBgStrong: \"#eff6ff\",\n infoBorder: \"#bfdbfe\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// Dark theme\n// ---------------------------------------------------------------------------\n\nexport const DARK_THEME: Required<WaypointTheme> = {\n primary: \"#818cf8\",\n primaryDark: \"#6366f1\",\n primaryBg: \"#1e1b4b\",\n primaryMuted: \"#1e1b4b\",\n primaryBorder: \"#6366f1\",\n\n toolbarBg: \"#0a0a0a\",\n toolbarBorder: \"#1a1a1a\",\n toolbarLogo: \"#818cf8\",\n toolbarText: \"#f1f5f9\",\n toolbarTextMuted: \"#9ca3af\",\n toolbarTextSubtle: \"#374151\",\n\n canvas: \"#141414\",\n surface: \"#1e1e1e\",\n surfaceMuted: \"#2a2a2a\",\n surfaceAlt: \"#242424\",\n\n border: \"#2e2e2e\",\n borderMuted: \"#404040\",\n\n text: \"#f1f5f9\",\n textSecondary: \"#e2e8f0\",\n textMuted: \"#94a3b8\",\n textSubtle: \"#64748b\",\n textMono: \"#94a3b8\",\n\n danger: \"#f87171\",\n dangerText: \"#fca5a5\",\n dangerBg: \"#1c0a0a\",\n dangerBgStrong: \"#2d1515\",\n dangerBorder: \"#7f1d1d\",\n\n warning: \"#fbbf24\",\n warningStrong: \"#fbbf24\",\n warningBg: \"#1a1000\",\n\n success: \"#34d399\",\n successBg: \"#052e16\",\n\n info: \"#60a5fa\",\n infoText: \"#93c5fd\",\n infoBg: \"#0a1628\",\n infoBgStrong: \"#0f1f3d\",\n infoBorder: \"#1e3a5f\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// CSS variable builder\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a WaypointTheme (merged with defaults) into a React inline style object\n * containing all CSS custom properties (`--wp-*`).\n *\n * Apply this to the root element of `<WaypointBuilder />`.\n */\nexport function buildThemeVars(theme: WaypointTheme = {}): React.CSSProperties {\n const t: Required<WaypointTheme> = { ...DEFAULT_THEME, ...theme };\n\n return {\n \"--wp-primary\": t.primary,\n \"--wp-primary-dark\": t.primaryDark,\n \"--wp-primary-bg\": t.primaryBg,\n \"--wp-primary-muted\": t.primaryMuted,\n \"--wp-primary-border\": t.primaryBorder,\n\n \"--wp-toolbar-bg\": t.toolbarBg,\n \"--wp-toolbar-border\": t.toolbarBorder,\n \"--wp-toolbar-logo\": t.toolbarLogo,\n \"--wp-toolbar-text\": t.toolbarText,\n \"--wp-toolbar-text-muted\": t.toolbarTextMuted,\n \"--wp-toolbar-text-subtle\": t.toolbarTextSubtle,\n\n \"--wp-canvas\": t.canvas,\n \"--wp-surface\": t.surface,\n \"--wp-surface-muted\": t.surfaceMuted,\n \"--wp-surface-alt\": t.surfaceAlt,\n\n \"--wp-border\": t.border,\n \"--wp-border-muted\": t.borderMuted,\n\n \"--wp-text\": t.text,\n \"--wp-text-secondary\": t.textSecondary,\n \"--wp-text-muted\": t.textMuted,\n \"--wp-text-subtle\": t.textSubtle,\n \"--wp-text-mono\": t.textMono,\n\n \"--wp-danger\": t.danger,\n \"--wp-danger-text\": t.dangerText,\n \"--wp-danger-bg\": t.dangerBg,\n \"--wp-danger-bg-strong\": t.dangerBgStrong,\n \"--wp-danger-border\": t.dangerBorder,\n\n \"--wp-warning\": t.warning,\n \"--wp-warning-strong\": t.warningStrong,\n \"--wp-warning-bg\": t.warningBg,\n\n \"--wp-success\": t.success,\n \"--wp-success-bg\": t.successBg,\n\n \"--wp-info\": t.info,\n \"--wp-info-text\": t.infoText,\n \"--wp-info-bg\": t.infoBg,\n \"--wp-info-bg-strong\": t.infoBgStrong,\n \"--wp-info-border\": t.infoBorder,\n\n \"--wp-font\": t.font,\n \"--wp-radius\": t.radius,\n \"--wp-radius-lg\": t.radiusLg,\n } as React.CSSProperties;\n}\n","import { create } from \"zustand\";\nimport type {\n ConditionGroup,\n CustomTypeDefinition,\n ExternalVariable,\n FieldDefinition,\n PersistenceMode,\n StepDefinition,\n WaypointSchema,\n} from \"@waypointjs/core\";\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\nexport interface BuilderState {\n /** The schema being edited */\n schema: WaypointSchema;\n /** Currently selected step id */\n selectedStepId: string | null;\n /** Currently selected field id (within selectedStep) */\n selectedFieldId: string | null;\n /** Whether the schema has unsaved changes */\n isDirty: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Actions\n// ---------------------------------------------------------------------------\n\nexport interface BuilderActions {\n // Schema\n loadSchema: (schema: WaypointSchema) => void;\n resetSchema: () => void;\n\n // Steps\n addStep: (step?: Partial<Omit<StepDefinition, \"id\">>) => string;\n updateStep: (stepId: string, updates: Partial<Omit<StepDefinition, \"id\">>) => void;\n removeStep: (stepId: string) => void;\n reorderSteps: (fromIndex: number, toIndex: number) => void;\n selectStep: (stepId: string | null) => void;\n\n // Fields\n addField: (stepId: string, field?: Partial<Omit<FieldDefinition, \"id\">>) => string;\n updateField: (stepId: string, fieldId: string, updates: Partial<Omit<FieldDefinition, \"id\">>) => void;\n removeField: (stepId: string, fieldId: string) => void;\n reorderFields: (stepId: string, fromIndex: number, toIndex: number) => void;\n selectField: (fieldId: string | null) => void;\n\n // Step conditions\n setStepCondition: (stepId: string, condition: ConditionGroup | undefined) => void;\n\n // Field conditions\n setFieldCondition: (stepId: string, fieldId: string, condition: ConditionGroup | undefined) => void;\n\n // External variables\n addExternalVariable: (variable: Omit<ExternalVariable, \"usedIn\">) => void;\n updateExternalVariable: (varId: string, updates: Partial<ExternalVariable>) => void;\n removeExternalVariable: (varId: string) => void;\n\n // Custom types\n addCustomType: (type: CustomTypeDefinition) => void;\n updateCustomType: (typeId: string, updates: Partial<CustomTypeDefinition>) => void;\n removeCustomType: (typeId: string) => void;\n\n // Persistence\n setPersistenceMode: (mode: PersistenceMode) => void;\n}\n\nexport type BuilderStore = BuilderState & BuilderActions;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction generateId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction makeDefaultSchema(): WaypointSchema {\n return {\n version: \"1\",\n id: generateId(\"journey\"),\n name: \"My Journey\",\n steps: [],\n externalVariables: [],\n customTypes: [],\n persistenceMode: \"zustand\",\n };\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport const useBuilderStore = create<BuilderStore>((set, _get) => ({\n schema: makeDefaultSchema(),\n selectedStepId: null,\n selectedFieldId: null,\n isDirty: false,\n\n // --- Schema ---\n\n loadSchema: (schema) =>\n set({ schema, selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n resetSchema: () =>\n set({ schema: makeDefaultSchema(), selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n // --- Steps ---\n\n addStep: (partial = {}) => {\n const id = generateId(\"step\");\n const step: StepDefinition = {\n id,\n title: partial.title ?? \"New Step\",\n url: partial.url ?? `/${id}`,\n fields: partial.fields ?? [],\n ...partial,\n };\n set((s) => ({\n schema: { ...s.schema, steps: [...s.schema.steps, step] },\n selectedStepId: id,\n selectedFieldId: null,\n isDirty: true,\n }));\n return id;\n },\n\n updateStep: (stepId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, ...updates } : step\n ),\n },\n isDirty: true,\n })),\n\n removeStep: (stepId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.filter((step) => step.id !== stepId),\n },\n selectedStepId: s.selectedStepId === stepId ? null : s.selectedStepId,\n selectedFieldId: s.selectedStepId === stepId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderSteps: (fromIndex, toIndex) =>\n set((s) => {\n const steps = [...s.schema.steps];\n const [moved] = steps.splice(fromIndex, 1);\n steps.splice(toIndex, 0, moved);\n return { schema: { ...s.schema, steps }, isDirty: true };\n }),\n\n selectStep: (stepId) =>\n set({ selectedStepId: stepId, selectedFieldId: null }),\n\n // --- Fields ---\n\n addField: (stepId, partial = {}) => {\n const id = generateId(\"field\");\n const field: FieldDefinition = {\n id,\n type: partial.type ?? \"text\",\n label: partial.label ?? \"New Field\",\n ...partial,\n };\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: [...step.fields, field] }\n : step\n ),\n },\n selectedFieldId: id,\n isDirty: true,\n }));\n return id;\n },\n\n updateField: (stepId, fieldId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, ...updates } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n removeField: (stepId, fieldId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: step.fields.filter((f) => f.id !== fieldId) }\n : step\n ),\n },\n selectedFieldId: s.selectedFieldId === fieldId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n reorderFields: (stepId, fromIndex, toIndex) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) => {\n if (step.id !== stepId) return step;\n const fields = [...step.fields];\n const [moved] = fields.splice(fromIndex, 1);\n fields.splice(toIndex, 0, moved);\n return { ...step, fields };\n }),\n },\n isDirty: true,\n })),\n\n selectField: (fieldId) => set({ selectedFieldId: fieldId }),\n\n // --- Step conditions ---\n\n setStepCondition: (stepId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, visibleWhen: condition } : step\n ),\n },\n isDirty: true,\n })),\n\n // --- Field conditions ---\n\n setFieldCondition: (stepId, fieldId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, visibleWhen: condition } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n // --- External variables ---\n\n addExternalVariable: (variable) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: [\n ...(s.schema.externalVariables ?? []),\n { ...variable, usedIn: [] },\n ],\n },\n isDirty: true,\n })),\n\n updateExternalVariable: (varId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).map((v) =>\n v.id === varId ? { ...v, ...updates } : v\n ),\n },\n isDirty: true,\n })),\n\n removeExternalVariable: (varId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).filter(\n (v) => v.id !== varId\n ),\n },\n isDirty: true,\n })),\n\n // --- Custom types ---\n\n addCustomType: (type) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: [...(s.schema.customTypes ?? []), type],\n },\n isDirty: true,\n })),\n\n updateCustomType: (typeId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).map((t) =>\n t.id === typeId ? { ...t, ...updates } : t\n ),\n },\n isDirty: true,\n })),\n\n removeCustomType: (typeId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).filter((t) => t.id !== typeId),\n },\n isDirty: true,\n })),\n\n // --- Persistence ---\n\n setPersistenceMode: (mode) =>\n set((s) => ({\n schema: { ...s.schema, persistenceMode: mode },\n isDirty: true,\n })),\n}));\n","\"use client\";\n\nimport type { ExternalVariable } from \"@waypointjs/core\";\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype VarType = ExternalVariable[\"type\"];\n\ninterface FormState {\n id: string;\n label: string;\n type: VarType;\n blocking: boolean;\n}\n\nconst BLANK_FORM: FormState = { id: \"\", label: \"\", type: \"string\", blocking: false };\n\n// ---------------------------------------------------------------------------\n// ExternalVariablePanel\n// ---------------------------------------------------------------------------\n\nexport function ExternalVariablePanel() {\n const { schema, addExternalVariable, updateExternalVariable, removeExternalVariable } = useBuilderStore();\n const variables = schema.externalVariables ?? [];\n\n const [isAdding, setIsAdding] = useState(false);\n const [editingId, setEditingId] = useState<string | null>(null);\n const [form, setForm] = useState<FormState>(BLANK_FORM);\n const [error, setError] = useState<string | null>(null);\n\n // Compute which vars are actually referenced in the schema\n const usageMap = computeUsageMap(schema.steps ?? []);\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n function startAdd() {\n setIsAdding(true);\n setEditingId(null);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function startEdit(v: ExternalVariable) {\n setEditingId(v.id);\n setIsAdding(false);\n setForm({ id: v.id, label: v.label, type: v.type, blocking: v.blocking });\n setError(null);\n }\n\n function cancelForm() {\n setIsAdding(false);\n setEditingId(null);\n setError(null);\n }\n\n function validateForm(): string | null {\n if (!form.id.trim()) return \"ID is required\";\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(form.id.trim())) return \"ID must be alphanumeric (no spaces)\";\n if (!form.label.trim()) return \"Label is required\";\n if (isAdding && variables.some((v) => v.id === form.id.trim())) return `ID \"${form.id}\" already exists`;\n return null;\n }\n\n function submitAdd() {\n const err = validateForm();\n if (err) { setError(err); return; }\n addExternalVariable({ id: form.id.trim(), label: form.label.trim(), type: form.type, blocking: form.blocking });\n setIsAdding(false);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function submitEdit() {\n const err = validateForm();\n if (err) { setError(err); return; }\n if (!editingId) return;\n updateExternalVariable(editingId, { label: form.label.trim(), type: form.type, blocking: form.blocking });\n setEditingId(null);\n setError(null);\n }\n\n function remove(id: string) {\n removeExternalVariable(id);\n if (editingId === id) { setEditingId(null); setError(null); }\n }\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n return (\n <div style={panelStyle}>\n {/* Header */}\n <div style={headerStyle}>\n <span style={titleStyle}>External Variables</span>\n {!isAdding && (\n <button style={addBtnStyle} onClick={startAdd} title=\"Add external variable\">\n + Add\n </button>\n )}\n </div>\n\n {/* Empty state */}\n {variables.length === 0 && !isAdding && (\n <p style={emptyStyle}>\n No external variables declared.<br />\n External vars are injected at runtime<br />\n (e.g. <code style={codeStyle}>$ext.userId</code>).\n </p>\n )}\n\n {/* Variable list */}\n {variables.map((v) => {\n const refs = usageMap.get(v.id) ?? [];\n const isBeingEdited = editingId === v.id;\n\n return (\n <div key={v.id} style={{ ...varRowStyle, ...(isBeingEdited ? varRowActiveStyle : {}) }}>\n {isBeingEdited ? (\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitEdit}\n onCancel={cancelForm}\n submitLabel=\"Save\"\n idReadOnly\n />\n ) : (\n <>\n <div style={varMainStyle}>\n <div style={varTopRowStyle}>\n <span style={varIdStyle}>${`ext.${v.id}`}</span>\n <div style={badgeRowStyle}>\n <TypeBadge type={v.type} />\n {v.blocking && <span style={blockingBadgeStyle}>blocking</span>}\n </div>\n </div>\n <span style={varLabelStyle}>{v.label}</span>\n {refs.length > 0 && (\n <div style={refsStyle}>\n {refs.map((ref, i) => (\n <span key={i} style={refChipStyle}>{ref}</span>\n ))}\n </div>\n )}\n </div>\n <div style={varActionsStyle}>\n <button style={actionBtnStyle} onClick={() => startEdit(v)}>Edit</button>\n <button style={{ ...actionBtnStyle, color: \"#ef4444\" }} title=\"Remove variable\" onClick={() => remove(v.id)}>✕</button>\n </div>\n </>\n )}\n </div>\n );\n })}\n\n {/* Add form */}\n {isAdding && (\n <div style={{ ...varRowStyle, ...varRowActiveStyle }}>\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitAdd}\n onCancel={cancelForm}\n submitLabel=\"Add\"\n />\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// VarForm — inline form for add/edit\n// ---------------------------------------------------------------------------\n\ninterface VarFormProps {\n form: FormState;\n onChange: (f: FormState) => void;\n error: string | null;\n onSubmit: () => void;\n onCancel: () => void;\n submitLabel: string;\n idReadOnly?: boolean;\n}\n\nfunction VarForm({ form, onChange, error, onSubmit, onCancel, submitLabel, idReadOnly }: VarFormProps) {\n function set(key: keyof FormState, value: unknown) {\n onChange({ ...form, [key]: value });\n }\n\n return (\n <div style={formStyle}>\n {/* ID */}\n <label style={formLabelStyle}>ID</label>\n <input\n style={{ ...inputStyle, ...(idReadOnly ? { background: \"#f9fafb\", color: \"#6b7280\" } : {}) }}\n value={form.id}\n onChange={(e) => set(\"id\", e.target.value)}\n placeholder=\"e.g. userId\"\n readOnly={idReadOnly}\n />\n\n {/* Label */}\n <label style={formLabelStyle}>Label</label>\n <input\n style={inputStyle}\n value={form.label}\n onChange={(e) => set(\"label\", e.target.value)}\n placeholder=\"Human-readable description\"\n />\n\n {/* Type */}\n <label style={formLabelStyle}>Type</label>\n <select style={selectStyle} value={form.type} onChange={(e) => set(\"type\", e.target.value as VarType)}>\n <option value=\"string\">string</option>\n <option value=\"number\">number</option>\n <option value=\"boolean\">boolean</option>\n <option value=\"object\">object</option>\n </select>\n\n {/* Blocking */}\n <label style={checkboxRowStyle}>\n <input\n type=\"checkbox\"\n checked={form.blocking}\n onChange={(e) => set(\"blocking\", e.target.checked)}\n style={{ marginRight: 6 }}\n />\n <span style={formLabelStyle}>Blocking — throw if missing at runtime</span>\n </label>\n\n {/* Error */}\n {error && <p style={errorStyle}>{error}</p>}\n\n {/* Actions */}\n <div style={formActionsStyle}>\n <button style={cancelBtnStyle} onClick={onCancel}>Cancel</button>\n <button style={submitBtnStyle} onClick={onSubmit}>{submitLabel}</button>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TypeBadge\n// ---------------------------------------------------------------------------\n\nfunction TypeBadge({ type }: { type: VarType }) {\n const colors: Record<VarType, string> = {\n string: \"#d1fae5\",\n number: \"#dbeafe\",\n boolean: \"#fef3c7\",\n object: \"#f3e8ff\",\n };\n return (\n <span style={{ ...typeBadgeStyle, background: colors[type] ?? \"#f3f4f6\" }}>{type}</span>\n );\n}\n\n// ---------------------------------------------------------------------------\n// computeUsageMap — scan all steps/fields for $ext.varId references\n// ---------------------------------------------------------------------------\n\nimport type { StepDefinition, ConditionGroup } from \"@waypointjs/core\";\n\nfunction computeUsageMap(steps: StepDefinition[]): Map<string, string[]> {\n const map = new Map<string, string[]>();\n\n function addRef(varId: string, label: string) {\n const existing = map.get(varId) ?? [];\n if (!existing.includes(label)) existing.push(label);\n map.set(varId, existing);\n }\n\n function scanPaths(paths: string[] | undefined, context: string) {\n for (const path of paths ?? []) {\n if (path.startsWith(\"$ext.\")) addRef(path.slice(5), context);\n }\n }\n\n function scanCondition(group: ConditionGroup | undefined, context: string) {\n if (!group) return;\n for (const rule of group.rules ?? []) {\n if (rule.field.startsWith(\"$ext.\")) addRef(rule.field.slice(5), context);\n }\n for (const nested of group.groups ?? []) scanCondition(nested, context);\n }\n\n for (const step of steps) {\n scanCondition(step.visibleWhen, step.title);\n for (const field of step.fields ?? []) {\n scanPaths(field.dependsOn, `${step.title} › ${field.label}`);\n scanCondition(field.visibleWhen, `${step.title} › ${field.label}`);\n }\n }\n\n return map;\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"8px 0\",\n gap: 0,\n};\n\nconst headerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"6px 12px 8px\",\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 700,\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n};\n\nconst addBtnStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#6366f1\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"2px 4px\",\n};\n\nconst emptyStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#9ca3af\",\n padding: \"8px 12px 12px\",\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst codeStyle: React.CSSProperties = {\n fontFamily: \"monospace\",\n background: \"#f3f4f6\",\n borderRadius: 3,\n padding: \"1px 3px\",\n};\n\nconst varRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 6,\n padding: \"8px 12px\",\n borderTop: \"1px solid #f3f4f6\",\n};\n\nconst varRowActiveStyle: React.CSSProperties = {\n background: \"#f9fafb\",\n};\n\nconst varMainStyle: React.CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n};\n\nconst varTopRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n flexWrap: \"wrap\",\n};\n\nconst varIdStyle: React.CSSProperties = {\n fontSize: 11,\n fontFamily: \"monospace\",\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst badgeRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 4,\n flexWrap: \"wrap\",\n};\n\nconst typeBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n color: \"#374151\",\n};\n\nconst blockingBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"#fee2e2\",\n color: \"#dc2626\",\n};\n\nconst varLabelStyle: React.CSSProperties = {\n fontSize: 12,\n color: \"#6b7280\",\n marginTop: 1,\n};\n\nconst refsStyle: React.CSSProperties = {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 4,\n};\n\nconst refChipStyle: React.CSSProperties = {\n fontSize: 10,\n padding: \"1px 6px\",\n borderRadius: 4,\n background: \"#eff6ff\",\n color: \"#3b82f6\",\n border: \"1px solid #bfdbfe\",\n};\n\nconst varActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 2,\n flexShrink: 0,\n};\n\nconst actionBtnStyle: React.CSSProperties = {\n fontSize: 11,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"#6b7280\",\n padding: \"2px 4px\",\n};\n\n// Form styles\nconst formStyle: React.CSSProperties = {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n};\n\nconst formLabelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst inputStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"5px 8px\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\",\n};\n\nconst selectStyle: React.CSSProperties = {\n ...inputStyle,\n};\n\nconst checkboxRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#ef4444\",\n margin: 0,\n padding: \"4px 8px\",\n background: \"#fef2f2\",\n borderRadius: 4,\n border: \"1px solid #fca5a5\",\n};\n\nconst formActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 6,\n justifyContent: \"flex-end\",\n marginTop: 2,\n};\n\nconst cancelBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 10px\",\n background: \"none\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#374151\",\n};\n\nconst submitBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 12px\",\n background: \"#6366f1\",\n border: \"none\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#fff\",\n fontWeight: 600,\n};\n","import { useBuilderStore } from \"../store/builder-store\";\n\nexport interface FieldPath {\n path: string; // e.g. \"personal.age\" or \"$ext.isPremium\"\n label: string; // e.g. \"Personal → Age\" or \"Ext: isPremium\"\n stepId?: string;\n fieldId?: string;\n isExternal?: boolean;\n}\n\n/**\n * Returns all field paths available across the entire journey tree,\n * including external variables. Used for autocomplete and condition builders.\n */\nexport function useAllFieldPaths(excludeStepId?: string, excludeFieldId?: string): FieldPath[] {\n const { schema } = useBuilderStore();\n const paths: FieldPath[] = [];\n\n for (const step of schema.steps) {\n for (const field of step.fields) {\n if (step.id === excludeStepId && field.id === excludeFieldId) continue;\n paths.push({\n path: `${step.id}.${field.id}`,\n label: `${step.title} → ${field.label}`,\n stepId: step.id,\n fieldId: field.id,\n });\n }\n }\n\n for (const extVar of schema.externalVariables ?? []) {\n paths.push({\n path: `$ext.${extVar.id}`,\n label: `Ext: ${extVar.label}`,\n isExternal: true,\n });\n }\n\n return paths;\n}\n","\"use client\";\n\nimport { type ConditionGroup, type ConditionOperator, type ConditionRule } from \"@waypointjs/core\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\nconst OPERATORS: { value: ConditionOperator; label: string; hasValue: boolean }[] = [\n { value: \"equals\", label: \"equals\", hasValue: true },\n { value: \"notEquals\", label: \"not equals\", hasValue: true },\n { value: \"greaterThan\", label: \">\", hasValue: true },\n { value: \"greaterThanOrEqual\", label: \">=\", hasValue: true },\n { value: \"lessThan\", label: \"<\", hasValue: true },\n { value: \"lessThanOrEqual\", label: \"<=\", hasValue: true },\n { value: \"contains\", label: \"contains\", hasValue: true },\n { value: \"notContains\", label: \"not contains\", hasValue: true },\n { value: \"in\", label: \"in (comma list)\", hasValue: true },\n { value: \"notIn\", label: \"not in (comma list)\", hasValue: true },\n { value: \"matches\", label: \"matches regex\", hasValue: true },\n { value: \"exists\", label: \"exists\", hasValue: false },\n { value: \"notExists\", label: \"not exists\", hasValue: false },\n];\n\ninterface ConditionBuilderProps {\n value: ConditionGroup | undefined;\n onChange: (value: ConditionGroup | undefined) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function ConditionBuilder({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: ConditionBuilderProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n\n const group: ConditionGroup = value ?? { combinator: \"and\", rules: [] };\n\n const updateRule = (index: number, updates: Partial<ConditionRule>) => {\n const rules = group.rules.map((r, i) => (i === index ? { ...r, ...updates } : r));\n onChange({ ...group, rules });\n };\n\n const addRule = () => {\n const firstPath = allPaths[0]?.path ?? \"\";\n onChange({\n ...group,\n rules: [...group.rules, { field: firstPath, operator: \"equals\", value: \"\" }],\n });\n };\n\n const removeRule = (index: number) => {\n const rules = group.rules.filter((_, i) => i !== index);\n if (rules.length === 0) { onChange(undefined); return; }\n onChange({ ...group, rules });\n };\n\n return (\n <div style={styles.container}>\n {/* Combinator toggle */}\n {group.rules.length > 1 && (\n <div style={styles.combinatorRow}>\n <span style={styles.combinatorLabel}>Match</span>\n {([\"and\", \"or\"] as const).map((c) => (\n <button\n key={c}\n style={{\n ...styles.combinatorBtn,\n ...(group.combinator === c ? styles.combinatorActive : {}),\n }}\n onClick={() => onChange({ ...group, combinator: c })}\n >\n {c.toUpperCase()}\n </button>\n ))}\n <span style={styles.combinatorLabel}>rules</span>\n </div>\n )}\n\n {/* Empty state */}\n {group.rules.length === 0 && (\n <div style={styles.empty}>\n No conditions — this step/field is always visible.\n </div>\n )}\n\n {/* Rules */}\n {group.rules.map((rule, index) => {\n const opDef = OPERATORS.find((o) => o.value === rule.operator);\n return (\n <div key={index} style={styles.rule}>\n {/* Field selector */}\n <select\n style={styles.select}\n value={rule.field}\n onChange={(e) => updateRule(index, { field: e.target.value })}\n >\n {allPaths.length === 0 && (\n <option value=\"\">No fields available</option>\n )}\n {allPaths.map((p) => (\n <option key={p.path} value={p.path}>{p.label}</option>\n ))}\n </select>\n\n {/* Operator selector */}\n <select\n style={{ ...styles.select, width: 140 }}\n value={rule.operator}\n onChange={(e) =>\n updateRule(index, { operator: e.target.value as ConditionOperator })\n }\n >\n {OPERATORS.map((o) => (\n <option key={o.value} value={o.value}>{o.label}</option>\n ))}\n </select>\n\n {/* Value */}\n {opDef?.hasValue && (\n <input\n style={styles.valueInput}\n placeholder=\"value\"\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n />\n )}\n\n <button style={styles.removeBtn} onClick={() => removeRule(index)}>✕</button>\n </div>\n );\n })}\n\n <button style={styles.addBtn} onClick={addRule}>\n + Add rule\n </button>\n\n {/* Preview */}\n {group.rules.length > 0 && (\n <div style={styles.preview}>\n <span style={styles.previewLabel}>Preview</span>\n <pre style={styles.previewCode}>{JSON.stringify(group, null, 2)}</pre>\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", gap: 10 },\n combinatorRow: { display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 4 },\n combinatorLabel: { fontSize: 12, color: \"var(--wp-text-muted)\" },\n combinatorBtn: {\n fontSize: 11, fontWeight: 700, padding: \"3px 10px\", borderRadius: 5,\n border: \"1px solid var(--wp-border-muted)\", background: \"var(--wp-surface)\",\n cursor: \"pointer\", color: \"var(--wp-text-secondary)\",\n },\n combinatorActive: {\n background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"1px solid var(--wp-primary)\",\n },\n empty: { fontSize: 13, color: \"var(--wp-text-subtle)\", textAlign: \"center\", padding: \"12px 0\" },\n rule: {\n display: \"flex\", alignItems: \"center\", gap: 8,\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", padding: \"8px 10px\",\n },\n select: {\n flex: 1, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n minWidth: 0,\n },\n valueInput: {\n width: 100, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n removeBtn: {\n border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\",\n cursor: \"pointer\", fontSize: 13, flexShrink: 0,\n },\n addBtn: {\n fontSize: 12, padding: \"6px 12px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500, alignSelf: \"flex-start\",\n color: \"var(--wp-text-secondary)\",\n },\n preview: { marginTop: 4 },\n previewLabel: {\n fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\",\n textTransform: \"uppercase\", display: \"block\", marginBottom: 4,\n },\n previewCode: {\n fontSize: 10, background: \"var(--wp-surface-alt)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\", padding: 8, overflow: \"auto\", maxHeight: 120,\n margin: 0, color: \"var(--wp-text-mono)\",\n },\n};\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\ninterface DependsOnInputProps {\n value: string[];\n onChange: (paths: string[]) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function DependsOnInput({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: DependsOnInputProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const available = allPaths.filter(\n (p) => !value.includes(p.path) &&\n (p.path.toLowerCase().includes(query.toLowerCase()) ||\n p.label.toLowerCase().includes(query.toLowerCase()))\n );\n\n const add = (path: string) => {\n onChange([...value, path]);\n setQuery(\"\");\n setOpen(false);\n inputRef.current?.focus();\n };\n\n const remove = (path: string) => {\n onChange(value.filter((p) => p !== path));\n };\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const getLabel = (path: string) =>\n allPaths.find((p) => p.path === path)?.label ?? path;\n\n const isExternal = (path: string) => path.startsWith(\"$ext.\");\n\n return (\n <div ref={containerRef} style={styles.container}>\n {/* Selected tags */}\n <div style={styles.tags}>\n {value.map((path) => (\n <span key={path} style={{ ...styles.tag, ...(isExternal(path) ? styles.tagExt : {}) }}>\n {getLabel(path)}\n <button style={styles.tagRemove} onClick={() => remove(path)}>✕</button>\n </span>\n ))}\n\n {/* Input */}\n <input\n ref={inputRef}\n style={styles.input}\n placeholder={value.length === 0 ? \"Search fields or $ext vars…\" : \"Add more…\"}\n value={query}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onFocus={() => setOpen(true)}\n />\n </div>\n\n {/* Dropdown */}\n {open && (\n <div style={styles.dropdown}>\n {available.length === 0 && (\n <div style={styles.noResults}>\n {allPaths.length === 0\n ? \"No fields available in the tree yet.\"\n : \"No matching fields.\"}\n </div>\n )}\n {available.map((p) => (\n <button\n key={p.path}\n style={styles.option}\n onMouseDown={(e) => { e.preventDefault(); add(p.path); }}\n >\n <span style={styles.optionLabel}>{p.label}</span>\n <span style={styles.optionPath}>{p.path}</span>\n </button>\n ))}\n </div>\n )}\n\n {value.length > 0 && (\n <div style={styles.hint}>\n This field will be blocked until all dependencies have a value.\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { position: \"relative\" },\n tags: {\n display: \"flex\", flexWrap: \"wrap\", gap: 4,\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n padding: \"4px 6px\", background: \"var(--wp-canvas)\", minHeight: 34, alignItems: \"center\",\n },\n tag: {\n display: \"flex\", alignItems: \"center\", gap: 4,\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n tagExt: { background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\" },\n tagRemove: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n color: \"inherit\", fontSize: 10, padding: 0, lineHeight: 1,\n },\n input: {\n flex: 1, minWidth: 140, fontSize: 12, border: \"none\",\n outline: \"none\", background: \"transparent\", padding: \"2px 4px\",\n color: \"var(--wp-text)\",\n },\n dropdown: {\n position: \"absolute\", top: \"calc(100% + 4px)\", left: 0, right: 0,\n background: \"var(--wp-canvas)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", boxShadow: \"0 4px 16px rgba(0,0,0,0.1)\",\n zIndex: 100, maxHeight: 200, overflowY: \"auto\",\n },\n noResults: { padding: \"10px 12px\", fontSize: 12, color: \"var(--wp-text-subtle)\", textAlign: \"center\" },\n option: {\n width: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"8px 12px\", border: \"none\", background: \"transparent\",\n cursor: \"pointer\", textAlign: \"left\", gap: 8,\n },\n optionLabel: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n optionPath: { fontSize: 10, fontFamily: \"monospace\", color: \"var(--wp-text-subtle)\" },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\", marginTop: 4 },\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\ninterface ModalProps {\n title: string;\n onClose: () => void;\n children: React.ReactNode;\n width?: number;\n}\n\nexport function Modal({ title, onClose, children, width = 560 }: ModalProps) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => { if (e.key === \"Escape\") onClose(); };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [onClose]);\n\n return (\n <div style={styles.overlay} onClick={onClose}>\n <div style={{ ...styles.panel, width }} onClick={(e) => e.stopPropagation()}>\n <div style={styles.header}>\n <span style={styles.title}>{title}</span>\n <button style={styles.closeBtn} onClick={onClose}>✕</button>\n </div>\n <div style={styles.body}>{children}</div>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n overlay: {\n position: \"fixed\", inset: 0, background: \"rgba(0,0,0,0.4)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n zIndex: 1000,\n },\n panel: {\n background: \"var(--wp-canvas)\", borderRadius: 12,\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2)\",\n display: \"flex\", flexDirection: \"column\", maxHeight: \"80vh\", overflow: \"hidden\",\n },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"14px 20px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n closeBtn: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n fontSize: 14, color: \"var(--wp-text-subtle)\", padding: 4,\n },\n body: { overflowY: \"auto\", padding: 20, color: \"var(--wp-text)\" },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport type { ValidationRule, ValidationRuleType } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { DependsOnInput } from \"./DependsOnInput\";\nimport { Modal } from \"./Modal\";\n\nconst VALIDATION_TYPES: { type: ValidationRuleType; label: string; hasValue: boolean }[] = [\n { type: \"required\", label: \"Required\", hasValue: false },\n { type: \"min\", label: \"Min value\", hasValue: true },\n { type: \"max\", label: \"Max value\", hasValue: true },\n { type: \"minLength\", label: \"Min length\", hasValue: true },\n { type: \"maxLength\", label: \"Max length\", hasValue: true },\n { type: \"email\", label: \"Email format\", hasValue: false },\n { type: \"url\", label: \"URL format\", hasValue: false },\n { type: \"regex\", label: \"Regex pattern\", hasValue: true },\n];\n\nexport function FieldEditor() {\n const {\n schema, selectedStepId, selectedFieldId,\n updateField, setFieldCondition,\n } = useBuilderStore();\n\n const [newValidationType, setNewValidationType] = useState<ValidationRuleType>(\"required\");\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n const field = step?.fields.find((f) => f.id === selectedFieldId);\n\n if (!field || !step) {\n return (\n <div style={styles.empty}>\n Select a field in the middle panel to edit its properties.\n </div>\n );\n }\n\n const validation = field.validation ?? [];\n const isRequired = validation.some((v) => v.type === \"required\");\n const hasCondition = !!field.visibleWhen;\n const ruleCount = field.visibleWhen?.rules.length ?? 0;\n\n const updateValidationRule = (index: number, updates: Partial<ValidationRule>) => {\n const updated = validation.map((v, i) => (i === index ? { ...v, ...updates } : v));\n updateField(step.id, field.id, { validation: updated });\n };\n\n const removeValidationRule = (index: number) => {\n const updated = validation.filter((_, i) => i !== index);\n updateField(step.id, field.id, { validation: updated.length ? updated : undefined });\n };\n\n const addValidationRule = () => {\n const newRule: ValidationRule = {\n type: newValidationType,\n message: `${newValidationType} error`,\n };\n updateField(step.id, field.id, { validation: [...validation, newRule] });\n };\n\n const handleDependsOnChange = (paths: string[]) => {\n updateField(step.id, field.id, { dependsOn: paths.length ? paths : undefined });\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerLeft}>\n <span style={styles.headerTitle}>Field Editor</span>\n {!isRequired && <span style={styles.optionalBadge}>optional</span>}\n {isRequired && <span style={styles.requiredBadge}>required</span>}\n </div>\n <div style={styles.fieldId}>id: {field.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Label */}\n <div style={styles.group}>\n <label style={styles.label}>Label</label>\n <input\n style={styles.input}\n value={field.label}\n onChange={(e) => updateField(step.id, field.id, { label: e.target.value })}\n />\n </div>\n\n {/* Placeholder */}\n <div style={styles.group}>\n <label style={styles.label}>Placeholder</label>\n <input\n style={styles.input}\n value={field.placeholder ?? \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { placeholder: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Default value */}\n <div style={styles.group}>\n <label style={styles.label}>Default value</label>\n <input\n style={styles.input}\n value={field.defaultValue != null ? String(field.defaultValue) : \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { defaultValue: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Depends on */}\n <div style={styles.group}>\n <label style={styles.label}>Depends on</label>\n <DependsOnInput\n value={field.dependsOn ?? []}\n onChange={handleDependsOnChange}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {field.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>Field is conditional</span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button style={styles.editConditionBtn} onClick={() => setConditionModalOpen(true)}>\n {hasCondition ? \"Edit\" : \"Add\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setFieldCondition(step.id, field.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n\n <div style={styles.divider} />\n\n {/* Validation rules */}\n <div style={styles.sectionTitle}>\n Validation\n {!isRequired && (\n <span style={styles.optionalHint}>\n — no \"required\" rule → field is optional\n </span>\n )}\n </div>\n\n {validation.length === 0 && (\n <div style={styles.noRules}>No rules · field is optional by default.</div>\n )}\n\n {validation.map((rule, index) => {\n const def = VALIDATION_TYPES.find((vt) => vt.type === rule.type);\n return (\n <div key={index} style={styles.ruleCard}>\n <div style={styles.ruleHeader}>\n <span\n style={{\n ...styles.ruleBadge,\n ...(rule.type === \"required\" ? styles.requiredRuleBadge : {}),\n }}\n >\n {rule.type}\n </span>\n <button style={styles.removeRuleBtn} onClick={() => removeValidationRule(index)}>\n ✕\n </button>\n </div>\n {def?.hasValue && (\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Value</label>\n <input\n style={styles.ruleInput}\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateValidationRule(index, { value: e.target.value })}\n />\n </div>\n )}\n <div style={styles.ruleRow}>\n <label style={styles.ruleLabel}>Error message</label>\n <input\n style={styles.ruleInput}\n value={rule.message}\n onChange={(e) => updateValidationRule(index, { message: e.target.value })}\n />\n </div>\n </div>\n );\n })}\n\n <div style={styles.addRule}>\n <select\n style={styles.ruleSelect}\n value={newValidationType}\n onChange={(e) => setNewValidationType(e.target.value as ValidationRuleType)}\n >\n {VALIDATION_TYPES.map((vt) => (\n <option key={vt.type} value={vt.type}>{vt.label}</option>\n ))}\n </select>\n <button style={styles.addRuleBtn} onClick={addValidationRule}>\n + Add rule\n </button>\n </div>\n </div>\n\n {/* Field condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${field.label}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this field is visible within its step.\n </p>\n <ConditionBuilder\n value={field.visibleWhen}\n onChange={(c) => setFieldCondition(step.id, field.id, c)}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n <div style={styles.modalFooter}>\n <button style={styles.modalCloseBtn} onClick={() => setConditionModalOpen(false)}>\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerLeft: { display: \"flex\", alignItems: \"center\", gap: 8 },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n optionalBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 4,\n },\n requiredBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 4,\n },\n fieldId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: { display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8 },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n sectionTitle: { fontSize: 12, fontWeight: 700, color: \"var(--wp-text-secondary)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n optionalHint: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontWeight: 400, textTransform: \"none\", letterSpacing: 0 },\n noRules: { fontSize: 12, color: \"var(--wp-text-subtle)\" },\n ruleCard: {\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\", borderRadius: \"var(--wp-radius-lg)\",\n padding: 10, display: \"flex\", flexDirection: \"column\", gap: 8,\n },\n ruleHeader: { display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\" },\n ruleBadge: {\n fontSize: 11, fontWeight: 700, color: \"var(--wp-primary-dark)\", background: \"var(--wp-primary-bg)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n requiredRuleBadge: { background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\" },\n removeRuleBtn: { border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\", cursor: \"pointer\", fontSize: 12 },\n ruleRow: { display: \"flex\", flexDirection: \"column\", gap: 3 },\n ruleLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\", textTransform: \"uppercase\" },\n ruleInput: {\n fontSize: 12, padding: \"4px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: 4, outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRule: { display: \"flex\", gap: 8, alignItems: \"center\" },\n ruleSelect: {\n flex: 1, fontSize: 12, padding: \"5px 6px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n addRuleBtn: {\n fontSize: 12, padding: \"5px 10px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n fontWeight: 500, whiteSpace: \"nowrap\", color: \"var(--wp-text-secondary)\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","import type { ConditionGroup, WaypointSchema } from \"@waypointjs/core\";\n\n/**\n * For a given step, returns the set of step IDs it depends on.\n * A step depends on another when any of its fields:\n * - has a `dependsOn` path referencing that step (\"otherId.fieldId\")\n * - has a `visibleWhen` condition rule referencing that step\n * Or when the step itself has a `visibleWhen` condition referencing that step.\n */\n\nfunction extractStepIdsFromCondition(\n group: ConditionGroup | undefined,\n ownStepId: string\n): Set<string> {\n const ids = new Set<string>();\n if (!group) return ids;\n\n for (const rule of group.rules) {\n if (rule.field.startsWith(\"$ext.\")) continue;\n const dotIndex = rule.field.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = rule.field.slice(0, dotIndex);\n if (refStep !== ownStepId) ids.add(refStep);\n }\n\n for (const subGroup of group.groups ?? []) {\n for (const id of extractStepIdsFromCondition(subGroup, ownStepId)) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/** Returns a map: stepId → Set<stepId it depends on> */\nexport function computeStepDependencies(\n schema: WaypointSchema\n): Map<string, Set<string>> {\n const deps = new Map<string, Set<string>>();\n\n for (const step of schema.steps) {\n const required = new Set<string>();\n\n // Step-level condition\n for (const id of extractStepIdsFromCondition(step.visibleWhen, step.id)) {\n required.add(id);\n }\n\n // Field-level\n for (const field of step.fields) {\n // dependsOn paths\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== step.id) required.add(refStep);\n }\n\n // visibleWhen condition\n for (const id of extractStepIdsFromCondition(field.visibleWhen, step.id)) {\n required.add(id);\n }\n }\n\n deps.set(step.id, required);\n }\n\n return deps;\n}\n\n/**\n * Given the current step order and the dependency map,\n * returns whether moving the step at `fromIndex` to `toIndex` is valid.\n *\n * A move is invalid if it would place a step BEFORE one of its dependencies.\n */\nexport function isMoveValid(\n steps: WaypointSchema[\"steps\"],\n deps: Map<string, Set<string>>,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n // Simulate the new order\n const reordered = [...steps];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((s, i) => [s.id, i]));\n\n for (const step of reordered) {\n const stepIndex = indexById.get(step.id)!;\n const required = deps.get(step.id) ?? new Set();\n\n for (const depId of required) {\n const depIndex = indexById.get(depId);\n if (depIndex === undefined) continue; // dep step not in schema (external?)\n\n if (depIndex > stepIndex) {\n const depTitle = reordered.find((s) => s.id === depId)?.title ?? depId;\n return {\n valid: false,\n reason: `\"${step.title}\" depends on \"${depTitle}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n// ---------------------------------------------------------------------------\n// Field-level dependency helpers (within a single step)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns whether moving a field from `fromIndex` to `toIndex` within a step\n * is valid given intra-step `dependsOn` references.\n *\n * Only considers dependencies between fields within the same step\n * (cross-step deps are already enforced at the step level).\n */\nexport function isFieldMoveValid(\n fields: WaypointSchema[\"steps\"][number][\"fields\"],\n stepId: string,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n const reordered = [...fields];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((f, i) => [f.id, i]));\n\n for (const field of reordered) {\n const fieldIndex = indexById.get(field.id)!;\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== stepId) continue; // cross-step dep, not relevant here\n const refFieldId = path.slice(dotIndex + 1);\n const depIndex = indexById.get(refFieldId);\n if (depIndex === undefined) continue;\n if (depIndex > fieldIndex) {\n const depLabel = reordered.find((f) => f.id === refFieldId)?.label ?? refFieldId;\n return {\n valid: false,\n reason: `\"${field.label}\" depends on \"${depLabel}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n/**\n * Returns the human-readable label for a step's dependencies (other step titles).\n */\nexport function getStepDependencyLabels(\n stepId: string,\n deps: Map<string, Set<string>>,\n schema: WaypointSchema\n): string[] {\n const required = deps.get(stepId) ?? new Set();\n return [...required]\n .map((id) => schema.steps.find((s) => s.id === id)?.title ?? id)\n .filter(Boolean);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { isFieldMoveValid } from \"../utils/step-dependencies\";\n\nconst FIELD_TYPES = [\n \"text\", \"number\", \"email\", \"password\", \"tel\", \"url\",\n \"textarea\", \"select\", \"multiselect\", \"checkbox\", \"radio\", \"date\", \"file\",\n];\n\nexport function FieldList() {\n const {\n schema, selectedStepId, selectedFieldId,\n addField, removeField, updateField, selectField, reorderFields,\n } = useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n const allDependencyTargets = new Set<string>();\n for (const s of schema.steps) {\n for (const f of s.fields) {\n for (const dep of f.dependsOn ?? []) {\n allDependencyTargets.add(dep);\n }\n }\n }\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step on the left to manage its fields.\n </div>\n );\n }\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isFieldMoveValid(step.fields, step.id, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderFields(step.id, fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div>\n <div style={styles.stepTitle}>{step.title}</div>\n <div style={styles.stepSub}>{step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}</div>\n </div>\n <button style={styles.addBtn} onClick={() => addField(step.id)}>\n + Add field\n </button>\n </div>\n\n {moveError && (\n <div style={styles.errorBanner}>\n <span>⚠</span> {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {step.fields.length === 0 && (\n <div style={styles.emptyFields}>No fields yet. Click \"Add field\" to start.</div>\n )}\n {step.fields.map((field, index) => {\n const isSelected = field.id === selectedFieldId;\n const isRequired = field.validation?.some((v) => v.type === \"required\") ?? false;\n const hasCondition = !!field.visibleWhen;\n const hasDeps = (field.dependsOn?.length ?? 0) > 0;\n const isUsedAsDep = allDependencyTargets.has(`${step.id}.${field.id}`);\n\n const canMoveUp = index > 0 &&\n isFieldMoveValid(step.fields, step.id, index, index - 1).valid;\n const canMoveDown = index < step.fields.length - 1 &&\n isFieldMoveValid(step.fields, step.id, index, index + 1).valid;\n\n const intraStepDeps = (field.dependsOn ?? [])\n .filter((p) => p.startsWith(`${step.id}.`))\n .map((p) => {\n const fieldId = p.slice(step.id.length + 1);\n return step.fields.find((f) => f.id === fieldId)?.label ?? fieldId;\n });\n\n const intraStepDependents = step.fields.filter((f) =>\n f.id !== field.id &&\n (f.dependsOn ?? []).includes(`${step.id}.${field.id}`)\n );\n\n return (\n <div\n key={field.id}\n style={{ ...styles.card, ...(isSelected ? styles.cardSelected : {}) }}\n onClick={() => selectField(field.id)}\n >\n <div style={styles.cardTop}>\n <div style={styles.cardLeft}>\n <span style={styles.typeBadge}>{field.type}</span>\n <span style={styles.fieldLabel}>{field.label}</span>\n </div>\n <div style={styles.cardRight}>\n <select\n style={styles.typeSelect}\n value={field.type}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => updateField(step.id, field.id, { type: e.target.value })}\n >\n {FIELD_TYPES.map((t) => (\n <option key={t} value={t}>{t}</option>\n ))}\n </select>\n {index > 0 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveUp ? {} : styles.iconBtnBlocked) }}\n title={canMoveUp ? \"Move up\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index - 1); }}\n >↑</button>\n )}\n {index < step.fields.length - 1 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveDown ? {} : styles.iconBtnBlocked) }}\n title={canMoveDown ? \"Move down\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index + 1); }}\n >↓</button>\n )}\n <button\n style={{ ...styles.iconBtn, color: \"var(--wp-danger)\" }}\n title=\"Remove field\"\n onClick={(e) => { e.stopPropagation(); removeField(step.id, field.id); }}\n >✕</button>\n </div>\n </div>\n\n {/* Badges */}\n <div style={styles.badges}>\n {!isRequired && <span style={styles.badgeOptional}>optional</span>}\n {isRequired && <span style={styles.badgeRequired}>required</span>}\n {hasCondition && <span style={styles.badgeCondition}>conditional</span>}\n {hasDeps && <span style={styles.badgeDep}>depends on {field.dependsOn!.length}</span>}\n {isUsedAsDep && <span style={styles.badgeUsed}>← dependency</span>}\n </div>\n\n {/* Intra-step dependency info */}\n {intraStepDeps.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {intraStepDeps.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {intraStepDependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {intraStepDependents.map((f) => (\n <span key={f.id} style={styles.depBadgeUsed}>{f.label}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n emptyFields: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n stepTitle: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n stepSub: { fontSize: 11, color: \"var(--wp-text-subtle)\", marginTop: 2 },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardTop: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 },\n cardRight: { display: \"flex\", alignItems: \"center\", gap: 4, flexShrink: 0 },\n typeBadge: {\n fontSize: 10, background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\",\n padding: \"2px 7px\", borderRadius: 4, fontWeight: 600, flexShrink: 0,\n },\n fieldLabel: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\",\n overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\",\n },\n typeSelect: {\n fontSize: 11, border: \"1px solid var(--wp-border)\", borderRadius: 4,\n padding: \"2px 4px\", background: \"var(--wp-canvas)\", cursor: \"pointer\",\n color: \"var(--wp-text-secondary)\",\n },\n iconBtn: {\n width: 22, height: 22, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 11, color: \"var(--wp-text-subtle)\",\n },\n iconBtnBlocked: { color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4 },\n badges: { display: \"flex\", flexWrap: \"wrap\", gap: 4 },\n badgeOptional: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeRequired: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeCondition: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeDep: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeUsed: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { useState } from \"react\";\nimport type { StoreApi } from \"zustand\";\nimport { useWaypoint, useWaypointStep } from \"@waypointjs/react\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\nimport { resolveTree, getNextStep, getPreviousStep } from \"@waypointjs/core\";\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedField } from \"@waypointjs/core\";\n\ninterface PreviewPanelProps {\n store: StoreApi<WaypointRuntimeStore>;\n schema: WaypointSchema;\n onEdit?: () => void;\n}\n\nexport function PreviewPanel({ store, schema }: PreviewPanelProps) {\n const [done, setDone] = useState(false);\n\n const { tree, currentStep, progress } = useWaypoint(store);\n const stepId = currentStep?.definition.id ?? \"\";\n const { fields, stepData, setFieldValue } = useWaypointStep(store, stepId);\n\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n function handleNext() {\n // 1. Validate required fields\n const newErrors: Record<string, string> = {};\n for (const field of fields) {\n const isRequired = field.definition.validation?.some((r) => r.type === \"required\");\n if (isRequired) {\n const val = stepData[field.definition.id];\n if (val === undefined || val === null || val === \"\" || val === false) {\n const rule = field.definition.validation?.find((r) => r.type === \"required\");\n newErrors[field.definition.id] = rule?.message ?? \"Ce champ est requis\";\n }\n }\n }\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n setErrors({});\n\n // 2. Snapshot old step IDs\n const oldIds = tree.steps.map((s) => s.definition.id).join(\",\");\n\n // 3. Save current step data\n store.getState().setStepData(stepId, stepData);\n\n // 4. Re-resolve tree with new data\n const newData = store.getState().data;\n const newTree = resolveTree(schema, newData, {});\n const newIds = newTree.steps.map((s) => s.definition.id).join(\",\");\n\n // 5. Truncate history if tree changed\n if (oldIds !== newIds) {\n store.getState().truncateHistoryAt(stepId);\n }\n\n // 6. Navigate\n const next = getNextStep(newTree.steps, stepId);\n if (next) {\n store.getState().setCurrentStep(next.definition.id);\n } else {\n setDone(true);\n }\n }\n\n function handlePrev() {\n const prev = getPreviousStep(tree.steps, stepId);\n if (prev) store.getState().setCurrentStep(prev.definition.id);\n }\n\n function handleRestart() {\n store.getState().init(schema);\n setDone(false);\n setErrors({});\n }\n\n // Compute step index for status icons\n const currentIdx = tree.steps.findIndex(\n (s) => s.definition.id === currentStep?.definition.id\n );\n\n if (done) {\n return (\n <div style={styles.panel}>\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n <div style={styles.divider} />\n <div style={styles.rightCol}>\n <div style={styles.doneScreen}>\n <div style={styles.doneIcon}>✓</div>\n <div style={styles.doneTitle}>Parcours terminé !</div>\n <p style={styles.doneText}>\n Toutes les étapes ont été complétées avec succès.\n </p>\n <button style={styles.primaryBtn} onClick={handleRestart}>\n Recommencer\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.panel}>\n {/* Left column — step list */}\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Right column — step renderer */}\n <div style={styles.rightCol}>\n <div style={styles.stepRenderer}>\n {/* Progress bar */}\n <div style={styles.progressTrack}>\n <div style={{ ...styles.progressFill, width: `${progress}%` }} />\n </div>\n\n {/* Step title */}\n <h2 style={styles.stepTitle}>\n {currentStep?.definition.title ?? \"\"}\n </h2>\n\n {/* Fields */}\n <div style={styles.fieldsContainer}>\n {fields.map((field) => (\n <FieldRenderer\n key={field.definition.id}\n field={field}\n value={stepData[field.definition.id]}\n error={errors[field.definition.id]}\n onChange={(val) => {\n setFieldValue(field.definition.id, val);\n if (errors[field.definition.id]) {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[field.definition.id];\n return next;\n });\n }\n }}\n />\n ))}\n </div>\n\n {/* Navigation */}\n <div style={styles.navRow}>\n {currentIdx > 0 && (\n <button style={styles.secondaryBtn} onClick={handlePrev}>\n ← Précédent\n </button>\n )}\n <button style={{ ...styles.primaryBtn, marginLeft: \"auto\" }} onClick={handleNext}>\n {getNextStep(tree.steps, stepId) ? \"Continuer →\" : \"Terminer ✓\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StepList sub-component\n// ---------------------------------------------------------------------------\n\ninterface StepListProps {\n tree: { steps: { definition: { id: string; title: string } }[]; hiddenSteps: { definition: { id: string; title: string } }[] };\n currentIdx: number;\n onSelect: (id: string) => void;\n}\n\nfunction StepList({ tree, currentIdx, onSelect }: StepListProps) {\n const allSteps = [\n ...tree.steps.map((s) => ({ ...s, hidden: false })),\n ...tree.hiddenSteps.map((s) => ({ ...s, hidden: true })),\n ];\n\n return (\n <div style={styles.stepList}>\n <div style={styles.stepListTitle}>Étapes</div>\n {allSteps.map((step) => {\n const isVisible = !step.hidden;\n const visIdx = tree.steps.findIndex((s) => s.definition.id === step.definition.id);\n let status: \"done\" | \"current\" | \"upcoming\" | \"hidden\" = \"hidden\";\n if (isVisible) {\n if (visIdx < currentIdx) status = \"done\";\n else if (visIdx === currentIdx) status = \"current\";\n else status = \"upcoming\";\n }\n\n return (\n <div\n key={step.definition.id}\n style={{\n ...styles.stepItem,\n ...(status === \"current\" ? styles.stepItemCurrent : {}),\n ...(status === \"hidden\" ? styles.stepItemHidden : {}),\n cursor: status === \"done\" ? \"pointer\" : \"default\",\n }}\n onClick={() => {\n if (status === \"done\") onSelect(step.definition.id);\n }}\n >\n <span style={styles.stepStatus}>\n {status === \"done\" && \"✓\"}\n {status === \"current\" && \"→\"}\n {status === \"upcoming\" && \"○\"}\n {status === \"hidden\" && \"–\"}\n </span>\n <span style={styles.stepName}>{step.definition.title}</span>\n {status === \"hidden\" && <span style={styles.hiddenBadge}>hidden</span>}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// FieldRenderer sub-component\n// ---------------------------------------------------------------------------\n\ninterface FieldRendererProps {\n field: ResolvedField;\n value: unknown;\n error?: string;\n onChange: (val: unknown) => void;\n}\n\nfunction FieldRenderer({ field, value, error, onChange }: FieldRendererProps) {\n const { definition } = field;\n const inputStyle = { ...styles.input, ...(error ? styles.inputError : {}) };\n\n return (\n <div style={styles.fieldGroup}>\n <label style={styles.label}>\n {definition.label}\n {definition.validation?.some((r) => r.type === \"required\") && (\n <span style={styles.required}> *</span>\n )}\n </label>\n\n {(definition.type === \"text\" ||\n definition.type === \"email\" ||\n definition.type === \"tel\" ||\n definition.type === \"password\" ||\n definition.type === \"url\" ||\n definition.type === \"number\" ||\n definition.type === \"date\") && (\n <input\n type={definition.type}\n style={inputStyle}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"textarea\" && (\n <textarea\n style={{ ...inputStyle, minHeight: 80, resize: \"vertical\" }}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"select\" && (\n <select\n style={inputStyle}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">— Choisir —</option>\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"multiselect\" && (\n <select\n style={{ ...inputStyle, minHeight: 80 }}\n multiple\n value={(value as string[]) ?? []}\n onChange={(e) => {\n const selected = Array.from(e.target.selectedOptions).map((o) => o.value);\n onChange(selected);\n }}\n >\n {definition.options?.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"radio\" && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {definition.options?.map((opt) => (\n <label key={String(opt.value)} style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"radio\"\n name={definition.id}\n value={String(opt.value)}\n checked={value === String(opt.value)}\n onChange={() => onChange(String(opt.value))}\n />\n {opt.label}\n </label>\n ))}\n </div>\n )}\n\n {definition.type === \"checkbox\" && (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n {definition.placeholder ?? definition.label}\n </label>\n )}\n\n {error && <div style={styles.errorMsg}>{error}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst styles: Record<string, React.CSSProperties> = {\n panel: {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n },\n leftCol: {\n width: 220,\n flexShrink: 0,\n overflowY: \"auto\",\n borderRight: \"1px solid var(--wp-border)\",\n background: \"var(--wp-panel-bg)\",\n },\n divider: {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n },\n rightCol: {\n flex: 1,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"32px 24px\",\n },\n stepRenderer: {\n width: \"100%\",\n maxWidth: 520,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n },\n progressTrack: {\n height: 4,\n background: \"var(--wp-border)\",\n borderRadius: 2,\n overflow: \"hidden\",\n },\n progressFill: {\n height: \"100%\",\n background: \"var(--wp-primary)\",\n borderRadius: 2,\n transition: \"width 0.3s ease\",\n },\n stepTitle: {\n fontSize: 20,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n margin: 0,\n },\n fieldsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n },\n fieldGroup: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n label: {\n fontSize: 13,\n fontWeight: 600,\n color: \"var(--wp-text)\",\n },\n required: {\n color: \"var(--wp-danger)\",\n },\n input: {\n fontSize: 13,\n padding: \"8px 10px\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\",\n color: \"var(--wp-text)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n },\n inputError: {\n borderColor: \"var(--wp-danger)\",\n },\n errorMsg: {\n fontSize: 11,\n color: \"var(--wp-danger)\",\n marginTop: 2,\n },\n navRow: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n paddingTop: 8,\n },\n primaryBtn: {\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 20px\",\n background: \"var(--wp-primary)\",\n color: \"var(--wp-canvas)\",\n border: \"none\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n secondaryBtn: {\n fontSize: 13,\n fontWeight: 500,\n padding: \"9px 16px\",\n background: \"transparent\",\n color: \"var(--wp-text-muted)\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n // Step list\n stepList: {\n padding: \"16px 12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n stepListTitle: {\n fontSize: 11,\n fontWeight: 700,\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.5px\",\n marginBottom: 8,\n },\n stepItem: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"6px 8px\",\n borderRadius: 6,\n fontSize: 12,\n color: \"var(--wp-text-muted)\",\n },\n stepItemCurrent: {\n background: \"var(--wp-primary-subtle, rgba(99,102,241,0.08))\",\n color: \"var(--wp-primary)\",\n fontWeight: 600,\n },\n stepItemHidden: {\n opacity: 0.45,\n },\n stepStatus: {\n fontSize: 11,\n width: 14,\n flexShrink: 0,\n textAlign: \"center\" as const,\n },\n stepName: {\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\" as const,\n },\n hiddenBadge: {\n fontSize: 9,\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"var(--wp-border)\",\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.3px\",\n flexShrink: 0,\n },\n // Done screen\n doneScreen: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: 12,\n paddingTop: 60,\n textAlign: \"center\" as const,\n },\n doneIcon: {\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n background: \"var(--wp-success-subtle, rgba(34,197,94,0.1))\",\n color: \"var(--wp-success, #22c55e)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n fontWeight: 700,\n },\n doneTitle: {\n fontSize: 22,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n },\n doneText: {\n fontSize: 14,\n color: \"var(--wp-text-muted)\",\n margin: 0,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { Modal } from \"./Modal\";\n\nexport function StepEditor() {\n const { schema, selectedStepId, updateStep, setStepCondition } = useBuilderStore();\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step to configure its properties.\n </div>\n );\n }\n\n const hasCondition = !!step.visibleWhen;\n const ruleCount = step.visibleWhen?.rules.length ?? 0;\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerTitle}>Step Config</div>\n <div style={styles.stepId}>id: {step.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Title */}\n <div style={styles.group}>\n <label style={styles.label}>Title</label>\n <input\n style={styles.input}\n value={step.title}\n placeholder=\"Step title\"\n onChange={(e) => updateStep(step.id, { title: e.target.value })}\n />\n </div>\n\n {/* URL */}\n <div style={styles.group}>\n <label style={styles.label}>URL</label>\n <input\n style={styles.input}\n value={step.url}\n placeholder=\"/onboarding/step-name\"\n onChange={(e) => updateStep(step.id, { url: e.target.value })}\n />\n <div style={styles.hint}>Supports {\"{{PARAM}}\"} placeholders</div>\n </div>\n\n {/* Resume */}\n <div style={styles.checkRow}>\n <input\n type=\"checkbox\"\n id={`resume-${step.id}`}\n checked={!!step.enableResumeFromHere}\n onChange={(e) =>\n updateStep(step.id, { enableResumeFromHere: e.target.checked || undefined })\n }\n />\n <label htmlFor={`resume-${step.id}`} style={styles.checkLabel}>\n Resume from this step\n </label>\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {step.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>\n Step is conditional\n </span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button\n style={styles.editConditionBtn}\n onClick={() => setConditionModalOpen(true)}\n >\n {hasCondition ? \"Edit\" : \"Add condition\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setStepCondition(step.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${step.title}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this step is visible. Leave empty to always show it.\n </p>\n <ConditionBuilder\n value={step.visibleWhen}\n onChange={(c) => setStepCondition(step.id, c)}\n />\n <div style={styles.modalFooter}>\n <button\n style={styles.modalCloseBtn}\n onClick={() => setConditionModalOpen(false)}\n >\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n stepId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\" },\n checkRow: { display: \"flex\", alignItems: \"center\", gap: 8 },\n checkLabel: { fontSize: 13, color: \"var(--wp-text-secondary)\" },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: {\n display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8,\n },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport {\n computeStepDependencies,\n getStepDependencyLabels,\n isMoveValid,\n} from \"../utils/step-dependencies\";\n\nexport function StepList() {\n const { schema, selectedStepId, addStep, removeStep, selectStep, reorderSteps } =\n useBuilderStore();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const steps = schema.steps;\n const deps = computeStepDependencies(schema);\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isMoveValid(steps, deps, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderSteps(fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <span style={styles.title}>Steps ({steps.length})</span>\n <button style={styles.addBtn} onClick={() => addStep()}>\n + Add step\n </button>\n </div>\n\n {/* Dependency violation error */}\n {moveError && (\n <div style={styles.errorBanner}>\n <span style={styles.errorIcon}>⚠</span>\n {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {steps.length === 0 && (\n <div style={styles.empty}>No steps yet. Click \"Add step\" to start.</div>\n )}\n\n {steps.map((step, index) => {\n const isSelected = step.id === selectedStepId;\n const hasCondition = !!step.visibleWhen;\n const depLabels = getStepDependencyLabels(step.id, deps, schema);\n\n const canMoveUp =\n index > 0 && isMoveValid(steps, deps, index, index - 1).valid;\n const canMoveDown =\n index < steps.length - 1 &&\n isMoveValid(steps, deps, index, index + 1).valid;\n\n const dependents = steps.filter((s) =>\n (deps.get(s.id) ?? new Set()).has(step.id)\n );\n\n return (\n <div\n key={step.id}\n style={{\n ...styles.card,\n ...(isSelected ? styles.cardSelected : {}),\n }}\n onClick={() => selectStep(step.id)}\n >\n <div style={styles.cardMain}>\n <div style={styles.cardLeft}>\n <div style={styles.cardIndex}>{index + 1}</div>\n <div style={{ minWidth: 0 }}>\n <div style={styles.cardTitle}>{step.title}</div>\n <div style={styles.cardMeta}>\n {step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}\n {hasCondition && (\n <span style={styles.conditionBadge}>conditional</span>\n )}\n </div>\n </div>\n </div>\n\n <div style={styles.cardActions}>\n {index > 0 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveUp ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveUp\n ? \"Move up\"\n : `Can't move up — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index - 1);\n }}\n >\n ↑\n </button>\n )}\n {index < steps.length - 1 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveDown ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveDown\n ? \"Move down\"\n : `Can't move down — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index + 1);\n }}\n >\n ↓\n </button>\n )}\n <button\n style={{ ...styles.iconBtn, ...styles.deleteBtn }}\n title=\"Remove step\"\n onClick={(e) => {\n e.stopPropagation();\n removeStep(step.id);\n }}\n >\n ✕\n </button>\n </div>\n </div>\n\n {/* Dependency info */}\n {depLabels.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {depLabels.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {dependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {dependents.map((s) => (\n <span key={s.id} style={styles.depBadgeUsed}>{s.title}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 600, fontSize: 13, color: \"var(--wp-text-secondary)\" },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n errorIcon: { fontSize: 14 },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n empty: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", transition: \"all 0.1s\",\n display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardMain: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 0, flex: 1 },\n cardIndex: {\n width: 24, height: 24, borderRadius: \"50%\", background: \"var(--wp-border)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n fontSize: 11, fontWeight: 700, color: \"var(--wp-text-muted)\", flexShrink: 0,\n },\n cardTitle: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n cardMeta: {\n fontSize: 11, color: \"var(--wp-text-subtle)\", display: \"flex\",\n alignItems: \"center\", gap: 6, marginTop: 2,\n },\n conditionBadge: {\n fontSize: 10, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"1px 6px\", borderRadius: 4, fontWeight: 600,\n },\n cardActions: { display: \"flex\", gap: 4, flexShrink: 0 },\n iconBtn: {\n width: 24, height: 24, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 12, color: \"var(--wp-text-subtle)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n },\n iconBtnBlocked: {\n color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4,\n },\n deleteBtn: { color: \"var(--wp-danger)\" },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { validateSchema } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\ninterface ToolbarProps {\n onSave?: (schema: ReturnType<typeof useBuilderStore.getState>[\"schema\"]) => void | Promise<void>;\n previewMode?: boolean;\n onTest?: () => void;\n}\n\nexport function Toolbar({ onSave, previewMode, onTest }: ToolbarProps) {\n const { schema, isDirty, resetSchema } = useBuilderStore();\n\n const handleExport = () => {\n const json = JSON.stringify(schema, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${schema.id}.waypoint.json`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleImport = () => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n try {\n const parsed = JSON.parse(ev.target?.result as string);\n const result = validateSchema(parsed);\n if (!result.valid) {\n alert(`Invalid schema:\\n\\n${result.errors.map((e) => `• ${e}`).join(\"\\n\")}`);\n return;\n }\n useBuilderStore.getState().loadSchema(parsed);\n } catch {\n alert(\"Invalid JSON file — could not parse\");\n }\n };\n reader.readAsText(file);\n };\n input.click();\n };\n\n if (previewMode) {\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <button\n style={{ ...styles.btn, ...styles.editBtn }}\n onClick={onTest}\n >\n ← Éditer\n </button>\n </div>\n <div style={styles.right}>\n <span style={{ fontSize: 12, color: \"var(--wp-text-muted)\", fontStyle: \"italic\" }}>\n Mode aperçu\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <input\n style={styles.journeyName}\n value={schema.name}\n placeholder=\"Journey name\"\n onChange={(e) =>\n useBuilderStore.setState((s) => ({\n schema: { ...s.schema, name: e.target.value },\n isDirty: true,\n }))\n }\n />\n {isDirty && <span style={styles.dirtyDot} title=\"Unsaved changes\" />}\n </div>\n\n <div style={styles.right}>\n {onTest && (\n <button style={{ ...styles.btn, ...styles.testBtn }} onClick={onTest}>\n ▶ Tester\n </button>\n )}\n <button style={styles.btn} onClick={handleImport}>Import</button>\n <button style={styles.btn} onClick={handleExport}>Export JSON</button>\n {onSave && (\n <button\n style={{ ...styles.btn, ...styles.saveBtn }}\n onClick={() => onSave(schema)}\n >\n Save\n </button>\n )}\n <button\n style={{ ...styles.btn, color: \"var(--wp-danger)\" }}\n onClick={() => {\n if (confirm(\"Reset the journey? All changes will be lost.\")) resetSchema();\n }}\n >\n Reset\n </button>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n toolbar: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"0 16px\", height: 48, background: \"var(--wp-toolbar-bg)\",\n borderBottom: \"1px solid var(--wp-toolbar-border)\", flexShrink: 0,\n },\n left: { display: \"flex\", alignItems: \"center\", gap: 8 },\n logo: { fontSize: 14, fontWeight: 800, color: \"var(--wp-toolbar-logo)\", letterSpacing: \"-0.5px\" },\n separator: { color: \"var(--wp-toolbar-text-subtle)\", fontSize: 16 },\n journeyName: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-toolbar-text)\",\n background: \"transparent\", border: \"none\", outline: \"none\",\n borderBottom: \"1px solid transparent\",\n },\n dirtyDot: {\n width: 6, height: 6, borderRadius: \"50%\", background: \"var(--wp-warning-strong)\",\n flexShrink: 0,\n },\n right: { display: \"flex\", alignItems: \"center\", gap: 8 },\n btn: {\n fontSize: 12, padding: \"5px 12px\", border: \"1px solid var(--wp-toolbar-border)\",\n background: \"transparent\", color: \"var(--wp-toolbar-text-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500,\n },\n saveBtn: { background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\", border: \"1px solid var(--wp-primary)\" },\n testBtn: { background: \"var(--wp-success, #22c55e)\", color: \"#fff\", border: \"1px solid var(--wp-success, #22c55e)\", fontWeight: 600 },\n editBtn: { background: \"transparent\", color: \"var(--wp-toolbar-text)\", border: \"none\", fontWeight: 600, cursor: \"pointer\", fontSize: 13, padding: \"5px 0\" },\n};\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { createRuntimeStore } from \"@waypointjs/core\";\nimport type { RuntimeStore } from \"@waypointjs/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { buildThemeVars, type WaypointTheme } from \"../theme\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { ExternalVariablePanel } from \"./ExternalVariablePanel\";\nimport { FieldEditor } from \"./FieldEditor\";\nimport { FieldList } from \"./FieldList\";\nimport { PreviewPanel } from \"./PreviewPanel\";\nimport { StepEditor } from \"./StepEditor\";\nimport { StepList } from \"./StepList\";\nimport { Toolbar } from \"./Toolbar\";\n\nexport interface WaypointBuilderProps {\n /** Initial schema to load into the builder */\n defaultValue?: WaypointSchema;\n /** Called whenever the schema changes */\n onChange?: (schema: WaypointSchema) => void;\n /** Called when the user clicks \"Save\" */\n onSave?: (schema: WaypointSchema) => void | Promise<void>;\n /** Theme override — partial or full WaypointTheme */\n theme?: WaypointTheme;\n /** CSS class applied to the root element */\n className?: string;\n /** Inline style applied to the root element */\n style?: React.CSSProperties;\n}\n\nexport function WaypointBuilder({\n defaultValue,\n onChange,\n onSave,\n theme,\n className,\n style,\n}: WaypointBuilderProps) {\n const { loadSchema, schema } = useBuilderStore();\n const [previewMode, setPreviewMode] = useState(false);\n\n // Preview store — singleton, no localStorage persistence\n const previewStoreRef = useRef<RuntimeStore | null>(null);\n if (previewStoreRef.current === null) {\n previewStoreRef.current = createRuntimeStore();\n }\n\n useEffect(() => {\n if (defaultValue) loadSchema(defaultValue);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n onChange?.(schema);\n }, [schema, onChange]);\n\n function handleTest() {\n previewStoreRef.current!.getState().init(schema);\n setPreviewMode(true);\n }\n\n const themeVars = buildThemeVars(theme);\n\n return (\n <div className={className} style={{ ...rootStyle, ...themeVars, ...style }}>\n <Toolbar\n onSave={!previewMode && onSave ? () => onSave(schema) : undefined}\n previewMode={previewMode}\n onTest={previewMode ? () => setPreviewMode(false) : handleTest}\n />\n {previewMode ? (\n <PreviewPanel\n store={previewStoreRef.current}\n schema={schema}\n onEdit={() => setPreviewMode(false)}\n />\n ) : (\n <div style={layoutStyle}>\n {/* Column 1 — Steps + External Variables */}\n <div style={colStyle}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 280 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 2 — Fields */}\n <div style={colStyle}>\n <FieldList />\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 3 — Step config + Field editor */}\n <div style={{ ...colStyle, flex: 1.2, display: \"flex\", flexDirection: \"column\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst rootStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n background: \"var(--wp-canvas)\",\n borderRadius: 12,\n border: \"1px solid var(--wp-border)\",\n overflow: \"hidden\",\n fontFamily: \"var(--wp-font)\",\n};\n\nconst layoutStyle: React.CSSProperties = {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n};\n\nconst colStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n minWidth: 0,\n};\n\nconst dividerStyle: React.CSSProperties = {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme.ts","../src/store/builder-store.ts","../src/context.ts","../src/components/ExternalVariablePanel.tsx","../src/hooks/useAllFieldPaths.ts","../src/components/ConditionBuilder.tsx","../src/components/ValidationBuilder.tsx","../src/components/DependsOnInput.tsx","../src/components/Modal.tsx","../src/components/FieldEditor.tsx","../src/utils/step-dependencies.ts","../src/components/FieldList.tsx","../src/components/PreviewPanel.tsx","../src/components/StepEditor.tsx","../src/components/StepList.tsx","../src/components/Toolbar.tsx","../src/components/WaypointBuilder.tsx"],"names":["jsxs","jsx","styles","useState","useEffect","inputStyle","StepList","e","useRef","Fragment"],"mappings":";;;;;;;;;;AAuHO,IAAM,aAAA,GAAyC;AAAA,EACpD,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EAEf,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,gBAAA,EAAkB,SAAA;AAAA,EAClB,iBAAA,EAAmB,SAAA;AAAA,EAEnB,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EAEZ,MAAA,EAAQ,SAAA;AAAA,EACR,WAAA,EAAa,SAAA;AAAA,EAEb,IAAA,EAAM,SAAA;AAAA,EACN,aAAA,EAAe,SAAA;AAAA,EACf,SAAA,EAAW,SAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EAEV,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc,SAAA;AAAA,EAEd,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe,SAAA;AAAA,EACf,SAAA,EAAW,SAAA;AAAA,EAEX,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EAEX,IAAA,EAAM,SAAA;AAAA,EACN,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EAEZ,IAAA,EAAM,2DAAA;AAAA,EACN,MAAA,EAAQ,KAAA;AAAA,EACR,QAAA,EAAU;AACZ;AAMO,IAAM,UAAA,GAAsC;AAAA,EACjD,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAW,SAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EAEf,SAAA,EAAW,SAAA;AAAA,EACX,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,SAAA;AAAA,EACb,gBAAA,EAAkB,SAAA;AAAA,EAClB,iBAAA,EAAmB,SAAA;AAAA,EAEnB,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EAEZ,MAAA,EAAQ,SAAA;AAAA,EACR,WAAA,EAAa,SAAA;AAAA,EAEb,IAAA,EAAM,SAAA;AAAA,EACN,aAAA,EAAe,SAAA;AAAA,EACf,SAAA,EAAW,SAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EAEV,MAAA,EAAQ,SAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EAAgB,SAAA;AAAA,EAChB,YAAA,EAAc,SAAA;AAAA,EAEd,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe,SAAA;AAAA,EACf,SAAA,EAAW,SAAA;AAAA,EAEX,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EAEX,IAAA,EAAM,SAAA;AAAA,EACN,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EAEZ,IAAA,EAAM,2DAAA;AAAA,EACN,MAAA,EAAQ,KAAA;AAAA,EACR,QAAA,EAAU;AACZ;AAYO,SAAS,cAAA,CAAe,KAAA,GAAuB,EAAC,EAAwB;AAC7E,EAAA,MAAM,CAAA,GAA6B,EAAE,GAAG,aAAA,EAAe,GAAG,KAAA,EAAM;AAEhE,EAAA,OAAO;AAAA,IACL,gBAAgB,CAAA,CAAE,OAAA;AAAA,IAClB,qBAAqB,CAAA,CAAE,WAAA;AAAA,IACvB,mBAAmB,CAAA,CAAE,SAAA;AAAA,IACrB,sBAAsB,CAAA,CAAE,YAAA;AAAA,IACxB,uBAAuB,CAAA,CAAE,aAAA;AAAA,IAEzB,mBAAmB,CAAA,CAAE,SAAA;AAAA,IACrB,uBAAuB,CAAA,CAAE,aAAA;AAAA,IACzB,qBAAqB,CAAA,CAAE,WAAA;AAAA,IACvB,qBAAqB,CAAA,CAAE,WAAA;AAAA,IACvB,2BAA2B,CAAA,CAAE,gBAAA;AAAA,IAC7B,4BAA4B,CAAA,CAAE,iBAAA;AAAA,IAE9B,eAAe,CAAA,CAAE,MAAA;AAAA,IACjB,gBAAgB,CAAA,CAAE,OAAA;AAAA,IAClB,sBAAsB,CAAA,CAAE,YAAA;AAAA,IACxB,oBAAoB,CAAA,CAAE,UAAA;AAAA,IAEtB,eAAe,CAAA,CAAE,MAAA;AAAA,IACjB,qBAAqB,CAAA,CAAE,WAAA;AAAA,IAEvB,aAAa,CAAA,CAAE,IAAA;AAAA,IACf,uBAAuB,CAAA,CAAE,aAAA;AAAA,IACzB,mBAAmB,CAAA,CAAE,SAAA;AAAA,IACrB,oBAAoB,CAAA,CAAE,UAAA;AAAA,IACtB,kBAAkB,CAAA,CAAE,QAAA;AAAA,IAEpB,eAAe,CAAA,CAAE,MAAA;AAAA,IACjB,oBAAoB,CAAA,CAAE,UAAA;AAAA,IACtB,kBAAkB,CAAA,CAAE,QAAA;AAAA,IACpB,yBAAyB,CAAA,CAAE,cAAA;AAAA,IAC3B,sBAAsB,CAAA,CAAE,YAAA;AAAA,IAExB,gBAAgB,CAAA,CAAE,OAAA;AAAA,IAClB,uBAAuB,CAAA,CAAE,aAAA;AAAA,IACzB,mBAAmB,CAAA,CAAE,SAAA;AAAA,IAErB,gBAAgB,CAAA,CAAE,OAAA;AAAA,IAClB,mBAAmB,CAAA,CAAE,SAAA;AAAA,IAErB,aAAa,CAAA,CAAE,IAAA;AAAA,IACf,kBAAkB,CAAA,CAAE,QAAA;AAAA,IACpB,gBAAgB,CAAA,CAAE,MAAA;AAAA,IAClB,uBAAuB,CAAA,CAAE,YAAA;AAAA,IACzB,oBAAoB,CAAA,CAAE,UAAA;AAAA,IAEtB,aAAa,CAAA,CAAE,IAAA;AAAA,IACf,eAAe,CAAA,CAAE,MAAA;AAAA,IACjB,kBAAkB,CAAA,CAAE;AAAA,GACtB;AACF;ACtNA,SAAS,WAAW,MAAA,EAAwB;AAC1C,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAC5D;AAEA,SAAS,iBAAA,GAAoC;AAC3C,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,GAAA;AAAA,IACT,EAAA,EAAI,WAAW,SAAS,CAAA;AAAA,IACxB,IAAA,EAAM,YAAA;AAAA,IACN,OAAO,EAAC;AAAA,IACR,mBAAmB,EAAC;AAAA,IACpB,aAAa,EAAC;AAAA,IACd,eAAA,EAAiB;AAAA,GACnB;AACF;AAMO,IAAM,eAAA,GAAkB,MAAA,CAAqB,CAAC,GAAA,EAAK,IAAA,MAAU;AAAA,EAClE,QAAQ,iBAAA,EAAkB;AAAA,EAC1B,cAAA,EAAgB,IAAA;AAAA,EAChB,eAAA,EAAiB,IAAA;AAAA,EACjB,OAAA,EAAS,KAAA;AAAA;AAAA,EAIT,UAAA,EAAY,CAAC,MAAA,KACX,GAAA,CAAI,EAAE,MAAA,EAAQ,cAAA,EAAgB,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,EAE7E,WAAA,EAAa,MACX,GAAA,CAAI,EAAE,MAAA,EAAQ,iBAAA,EAAkB,EAAG,cAAA,EAAgB,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAAA;AAAA,EAIlG,OAAA,EAAS,CAAC,OAAA,GAAU,EAAC,KAAM;AACzB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,IAAA,GAAuB;AAAA,MAC3B,EAAA;AAAA,MACA,KAAA,EAAO,QAAQ,KAAA,IAAS,UAAA;AAAA,MACxB,GAAA,EAAK,OAAA,CAAQ,GAAA,IAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MAC1B,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,EAAC;AAAA,MAC3B,GAAG;AAAA,KACL;AACA,IAAA,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACV,MAAA,EAAQ,EAAE,GAAG,CAAA,CAAE,MAAA,EAAQ,KAAA,EAAO,CAAC,GAAG,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA,EAAE;AAAA,MACxD,cAAA,EAAgB,EAAA;AAAA,MAChB,eAAA,EAAiB,IAAA;AAAA,MACjB,OAAA,EAAS;AAAA,KACX,CAAE,CAAA;AACF,IAAA,OAAO,EAAA;AAAA,EACT,CAAA;AAAA,EAEA,YAAY,CAAC,MAAA,EAAQ,OAAA,KACnB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACzB,IAAA,CAAK,EAAA,KAAO,MAAA,GAAS,EAAE,GAAG,IAAA,EAAM,GAAG,OAAA,EAAQ,GAAI;AAAA;AACjD,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,UAAA,EAAY,CAAC,MAAA,KACX,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,EAAE,MAAA,CAAO,KAAA,CAAM,OAAO,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM;AAAA,KAC3D;AAAA,IACA,cAAA,EAAgB,CAAA,CAAE,cAAA,KAAmB,MAAA,GAAS,OAAO,CAAA,CAAE,cAAA;AAAA,IACvD,eAAA,EAAiB,CAAA,CAAE,cAAA,KAAmB,MAAA,GAAS,OAAO,CAAA,CAAE,eAAA;AAAA,IACxD,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,aAAA,EAAe,CAAC,MAAA,KAAW;AACzB,IAAA,MAAM,QAAQ,IAAA,EAAK;AACnB,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AAC3D,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,MAAM,SAAA,GAAY,WAAW,MAAM,CAAA;AAGnC,IAAA,MAAM,aAAqC,EAAC;AAC5C,IAAA,KAAA,MAAW,CAAA,IAAK,KAAK,MAAA,EAAQ;AAC3B,MAAA,UAAA,CAAW,CAAA,CAAE,EAAE,CAAA,GAAI,UAAA,CAAW,OAAO,CAAA;AAAA,IACvC;AAGA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACxC,GAAG,CAAA;AAAA,MACH,EAAA,EAAI,UAAA,CAAW,CAAA,CAAE,EAAE,CAAA;AAAA,MACnB,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,GAAA,CAAI,CAAC,GAAA,KAAQ;AACnC,QAAA,IAAI,GAAA,CAAI,UAAA,CAAW,CAAA,EAAG,MAAM,GAAG,CAAA,EAAG;AAChC,UAAA,MAAM,UAAA,GAAa,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,SAAS,CAAC,CAAA;AAC9C,UAAA,MAAM,UAAA,GAAa,WAAW,UAAU,CAAA;AACxC,UAAA,OAAO,UAAA,GAAa,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,GAAK,GAAA;AAAA,QACrD;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAC;AAAA,KACH,CAAE,CAAA;AAEF,IAAA,MAAM,OAAA,GAA0B;AAAA,MAC9B,GAAG,IAAA;AAAA,MACH,EAAA,EAAI,SAAA;AAAA,MACJ,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,OAAA,CAAA;AAAA,MACpB,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,KAAA,CAAA;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,KAAA,CAAM,UAAU,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AACrE,IAAA,MAAM,QAAA,GAAW,CAAC,GAAG,KAAA,CAAM,OAAO,KAAK,CAAA;AACvC,IAAA,QAAA,CAAS,MAAA,CAAO,SAAA,GAAY,CAAA,EAAG,CAAA,EAAG,OAAO,CAAA;AAEzC,IAAA,GAAA,CAAI;AAAA,MACF,QAAQ,EAAE,GAAG,KAAA,CAAM,MAAA,EAAQ,OAAO,QAAA,EAAS;AAAA,MAC3C,cAAA,EAAgB,SAAA;AAAA,MAChB,eAAA,EAAiB,IAAA;AAAA,MACjB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH,CAAA;AAAA,EAEA,cAAc,CAAC,SAAA,EAAW,OAAA,KACxB,GAAA,CAAI,CAAC,CAAA,KAAM;AACT,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,CAAA,CAAE,OAAO,KAAK,CAAA;AAChC,IAAA,MAAM,CAAC,KAAK,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,WAAW,CAAC,CAAA;AACzC,IAAA,KAAA,CAAM,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,KAAK,CAAA;AAC9B,IAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG,OAAA,EAAS,IAAA,EAAK;AAAA,EACzD,CAAC,CAAA;AAAA,EAEH,UAAA,EAAY,CAAC,MAAA,KACX,GAAA,CAAI,EAAE,cAAA,EAAgB,MAAA,EAAQ,eAAA,EAAiB,IAAA,EAAM,CAAA;AAAA;AAAA,EAIvD,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,GAAU,EAAC,KAAM;AAClC,IAAA,MAAM,EAAA,GAAK,WAAW,OAAO,CAAA;AAC7B,IAAA,MAAM,KAAA,GAAyB;AAAA,MAC7B,EAAA;AAAA,MACA,IAAA,EAAM,QAAQ,IAAA,IAAQ,MAAA;AAAA,MACtB,KAAA,EAAO,QAAQ,KAAA,IAAS,WAAA;AAAA,MACxB,GAAG;AAAA,KACL;AACA,IAAA,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,GAAG,CAAA,CAAE,MAAA;AAAA,QACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,UAAI,CAAC,IAAA,KACzB,IAAA,CAAK,EAAA,KAAO,SACR,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,CAAC,GAAG,IAAA,CAAK,MAAA,EAAQ,KAAK,GAAE,GAC3C;AAAA;AACN,OACF;AAAA,MACA,eAAA,EAAiB,EAAA;AAAA,MACjB,OAAA,EAAS;AAAA,KACX,CAAE,CAAA;AACF,IAAA,OAAO,EAAA;AAAA,EACT,CAAA;AAAA,EAEA,aAAa,CAAC,MAAA,EAAQ,SAAS,OAAA,KAC7B,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACzB,IAAA,CAAK,EAAA,KAAO,MAAA,GACR;AAAA,UACE,GAAG,IAAA;AAAA,UACH,MAAA,EAAQ,KAAK,MAAA,CAAO,GAAA;AAAA,YAAI,CAAC,CAAA,KACvB,CAAA,CAAE,EAAA,KAAO,OAAA,GAAU,EAAE,GAAG,CAAA,EAAG,GAAG,OAAA,EAAQ,GAAI;AAAA;AAC5C,SACF,GACA;AAAA;AACN,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,aAAa,CAAC,MAAA,EAAQ,OAAA,KACpB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACzB,IAAA,CAAK,OAAO,MAAA,GACR,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,OAAO,CAAC,CAAA,KAAM,EAAE,EAAA,KAAO,OAAO,GAAE,GAC/D;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB,CAAA,CAAE,eAAA,KAAoB,OAAA,GAAU,OAAO,CAAA,CAAE,eAAA;AAAA,IAC1D,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,cAAA,EAAgB,CAAC,MAAA,EAAQ,OAAA,KAAY;AACnC,IAAA,MAAM,QAAQ,IAAA,EAAK;AACnB,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AAC3D,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,OAAO,CAAA;AACtD,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAM,UAAA,GAAa,WAAW,OAAO,CAAA;AACrC,IAAA,MAAM,QAAA,GAA4B;AAAA,MAChC,GAAG,KAAA;AAAA,MACH,EAAA,EAAI,UAAA;AAAA,MACJ,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,OAAA;AAAA,KACvB;AAEA,IAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,OAAO,CAAA;AAChE,IAAA,MAAM,SAAA,GAAY,CAAC,GAAG,IAAA,CAAK,MAAM,CAAA;AACjC,IAAA,SAAA,CAAU,MAAA,CAAO,UAAA,GAAa,CAAA,EAAG,CAAA,EAAG,QAAQ,CAAA;AAE5C,IAAA,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,GAAG,CAAA,CAAE,MAAA;AAAA,QACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,UAAI,CAAC,EAAA,KACzB,EAAA,CAAG,EAAA,KAAO,MAAA,GAAS,EAAE,GAAG,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAU,GAAI;AAAA;AACpD,OACF;AAAA,MACA,eAAA,EAAiB,UAAA;AAAA,MACjB,OAAA,EAAS;AAAA,KACX,CAAE,CAAA;AAAA,EACJ,CAAA;AAAA,EAEA,eAAe,CAAC,MAAA,EAAQ,WAAW,OAAA,KACjC,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,OAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAClC,QAAA,IAAI,IAAA,CAAK,EAAA,KAAO,MAAA,EAAQ,OAAO,IAAA;AAC/B,QAAA,MAAM,MAAA,GAAS,CAAC,GAAG,IAAA,CAAK,MAAM,CAAA;AAC9B,QAAA,MAAM,CAAC,KAAK,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,WAAW,CAAC,CAAA;AAC1C,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,KAAK,CAAA;AAC/B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAO;AAAA,MAC3B,CAAC;AAAA,KACH;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,aAAa,CAAC,OAAA,KAAY,IAAI,EAAE,eAAA,EAAiB,SAAS,CAAA;AAAA;AAAA,EAI1D,kBAAkB,CAAC,MAAA,EAAQ,SAAA,KACzB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACzB,IAAA,CAAK,EAAA,KAAO,MAAA,GAAS,EAAE,GAAG,IAAA,EAAM,WAAA,EAAa,SAAA,EAAU,GAAI;AAAA;AAC7D,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA;AAAA,EAIJ,mBAAmB,CAAC,MAAA,EAAQ,SAAS,SAAA,KACnC,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACzB,IAAA,CAAK,EAAA,KAAO,MAAA,GACR;AAAA,UACE,GAAG,IAAA;AAAA,UACH,MAAA,EAAQ,KAAK,MAAA,CAAO,GAAA;AAAA,YAAI,CAAC,CAAA,KACvB,CAAA,CAAE,EAAA,KAAO,OAAA,GAAU,EAAE,GAAG,CAAA,EAAG,WAAA,EAAa,SAAA,EAAU,GAAI;AAAA;AACxD,SACF,GACA;AAAA;AACN,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA;AAAA,EAIJ,mBAAA,EAAqB,CAAC,QAAA,KACpB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,iBAAA,EAAmB;AAAA,QACjB,GAAI,CAAA,CAAE,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAAA,QACnC,EAAE,GAAG,QAAA,EAAU,MAAA,EAAQ,EAAC;AAAE;AAC5B,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,wBAAwB,CAAC,KAAA,EAAO,OAAA,KAC9B,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,iBAAA,EAAA,CAAoB,CAAA,CAAE,MAAA,CAAO,iBAAA,IAAqB,EAAC,EAAG,GAAA;AAAA,QAAI,CAAC,CAAA,KACzD,CAAA,CAAE,EAAA,KAAO,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,GAAG,OAAA,EAAQ,GAAI;AAAA;AAC1C,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,sBAAA,EAAwB,CAAC,KAAA,KACvB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,iBAAA,EAAA,CAAoB,CAAA,CAAE,MAAA,CAAO,iBAAA,IAAqB,EAAC,EAAG,MAAA;AAAA,QACpD,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA;AAAA,EAIJ,aAAA,EAAe,CAAC,IAAA,KACd,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,WAAA,EAAa,CAAC,GAAI,CAAA,CAAE,OAAO,WAAA,IAAe,IAAK,IAAI;AAAA,KACrD;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,kBAAkB,CAAC,MAAA,EAAQ,OAAA,KACzB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,WAAA,EAAA,CAAc,CAAA,CAAE,MAAA,CAAO,WAAA,IAAe,EAAC,EAAG,GAAA;AAAA,QAAI,CAAC,CAAA,KAC7C,CAAA,CAAE,EAAA,KAAO,MAAA,GAAS,EAAE,GAAG,CAAA,EAAG,GAAG,OAAA,EAAQ,GAAI;AAAA;AAC3C,KACF;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA,EAEJ,gBAAA,EAAkB,CAAC,MAAA,KACjB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,GAAG,CAAA,CAAE,MAAA;AAAA,MACL,WAAA,EAAA,CAAc,CAAA,CAAE,MAAA,CAAO,WAAA,IAAe,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM;AAAA,KACzE;AAAA,IACA,OAAA,EAAS;AAAA,GACX,CAAE,CAAA;AAAA;AAAA,EAIJ,kBAAA,EAAoB,CAAC,IAAA,KACnB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACV,QAAQ,EAAE,GAAG,CAAA,CAAE,MAAA,EAAQ,iBAAiB,IAAA,EAAK;AAAA,IAC7C,OAAA,EAAS;AAAA,GACX,CAAE;AACN,CAAA,CAAE;ACnaK,IAAM,sBAAA,GAAyB,cAAc,KAAK,CAAA;AAElD,SAAS,kBAAA,GAA8B;AAC5C,EAAA,OAAO,WAAW,sBAAsB,CAAA;AAC1C;AAEO,IAAM,yBAAA,GAA4B,aAAA,CAAsC,EAAE,CAAA;AAE1E,SAAS,qBAAA,GAAgD;AAC9D,EAAA,OAAO,WAAW,yBAAyB,CAAA;AAC7C;AAEO,IAAM,2BAAA,GAA8B,aAAA,CAA8B,EAAE,CAAA;AAEpE,SAAS,uBAAA,GAA0C;AACxD,EAAA,OAAO,WAAW,2BAA2B,CAAA;AAC/C;ACCA,IAAM,UAAA,GAAwB;AAAA,EAC5B,EAAA,EAAI,EAAA;AAAA,EACJ,KAAA,EAAO,EAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU;AACZ,CAAA;AAMO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,mBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,MACE,eAAA,EAAgB;AACpB,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAE/C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAoB,UAAU,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AAGtD,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA;AAMnD,EAAA,SAAS,QAAA,GAAW;AAClB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,OAAA,CAAQ,UAAU,CAAA;AAClB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,UAAU,CAAA,EAAqB;AACtC,IAAA,YAAA,CAAa,EAAE,EAAE,CAAA;AACjB,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,OAAA,CAAQ,EAAE,EAAA,EAAI,CAAA,CAAE,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,IAAA,EAAM,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAA,CAAE,UAAU,CAAA;AACxE,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,YAAA,GAA8B;AACrC,IAAA,IAAI,CAAC,IAAA,CAAK,EAAA,CAAG,IAAA,IAAQ,OAAO,gBAAA;AAC5B,IAAA,IAAI,CAAC,0BAAA,CAA2B,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,MAAM,CAAA;AACjD,MAAA,OAAO,qCAAA;AACT,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,IAAA,IAAQ,OAAO,mBAAA;AAC/B,IAAA,IAAI,QAAA,IAAY,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAA,KAAO,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAA;AAC3D,MAAA,OAAO,CAAA,IAAA,EAAO,KAAK,EAAE,CAAA,gBAAA,CAAA;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,SAAS,SAAA,GAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,QAAA,CAAS,GAAG,CAAA;AACZ,MAAA;AAAA,IACF;AACA,IAAA,mBAAA,CAAoB;AAAA,MAClB,EAAA,EAAI,IAAA,CAAK,EAAA,CAAG,IAAA,EAAK;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK;AAAA,MACvB,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,UAAU,IAAA,CAAK;AAAA,KAChB,CAAA;AACD,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,OAAA,CAAQ,UAAU,CAAA;AAClB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,QAAA,CAAS,GAAG,CAAA;AACZ,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,sBAAA,CAAuB,SAAA,EAAW;AAAA,MAChC,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK;AAAA,MACvB,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,UAAU,IAAA,CAAK;AAAA,KAChB,CAAA;AACD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,OAAO,EAAA,EAAY;AAC1B,IAAA,sBAAA,CAAuB,EAAE,CAAA;AACzB,IAAA,IAAI,cAAc,EAAA,EAAI;AACpB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf;AAAA,EACF;AAMA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,UAAA,EAEV,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EACV,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,oBAAA,EAAkB,CAAA;AAAA,MAC1C,CAAC,QAAA,IAAY,CAAC,QAAA,oBACb,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,WAAA;AAAA,UACP,OAAA,EAAS,QAAA;AAAA,UACT,KAAA,EAAM,uBAAA;AAAA,UACP,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EAEJ,CAAA;AAAA,IAGC,SAAA,CAAU,WAAW,CAAA,IAAK,CAAC,4BAC1B,IAAA,CAAC,GAAA,EAAA,EAAE,OAAO,UAAA,EAAY,QAAA,EAAA;AAAA,MAAA,iCAAA;AAAA,0BAEnB,IAAA,EAAA,EAAG,CAAA;AAAA,MAAE,uCAAA;AAAA,0BAEL,IAAA,EAAA,EAAG,CAAA;AAAA,MAAE,QAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,SAAA,EAAW,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,MAAO;AAAA,KAAA,EAClD,CAAA;AAAA,IAID,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM;AACpB,MAAA,MAAM,OAAO,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,EAAE,KAAK,EAAC;AACpC,MAAA,MAAM,aAAA,GAAgB,cAAc,CAAA,CAAE,EAAA;AAEtC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO;AAAA,YACL,GAAG,WAAA;AAAA,YACH,GAAI,aAAA,GAAgB,iBAAA,GAAoB;AAAC,WAC3C;AAAA,UAEC,QAAA,EAAA,aAAA,mBACC,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,QAAA,EAAU,OAAA;AAAA,cACV,KAAA;AAAA,cACA,QAAA,EAAU,UAAA;AAAA,cACV,QAAA,EAAU,UAAA;AAAA,cACV,WAAA,EAAY,MAAA;AAAA,cACZ,UAAA,EAAU;AAAA;AAAA,8BAGZ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,YAAA,EACV,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,cAAA,EACV,QAAA,EAAA;AAAA,gCAAA,IAAA,CAAC,MAAA,EAAA,EAAK,OAAO,UAAA,EAAY,QAAA,EAAA;AAAA,kBAAA,GAAA;AAAA,kBAAE,CAAA,IAAA,EAAO,EAAE,EAAE,CAAA;AAAA,iBAAA,EAAG,CAAA;AAAA,gCACzC,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,aAAA,EACV,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AAAA,kBACxB,EAAE,QAAA,oBACD,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,oBAAoB,QAAA,EAAA,UAAA,EAAQ;AAAA,iBAAA,EAE7C;AAAA,eAAA,EACF,CAAA;AAAA,8BACA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,aAAA,EAAgB,YAAE,KAAA,EAAM,CAAA;AAAA,cACpC,KAAK,MAAA,GAAS,CAAA,wBACZ,KAAA,EAAA,EAAI,KAAA,EAAO,WACT,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,yBACb,MAAA,EAAA,EAAa,KAAA,EAAO,cAClB,QAAA,EAAA,GAAA,EAAA,EADQ,CAEX,CACD,CAAA,EACH;AAAA,aAAA,EAEJ,CAAA;AAAA,YACC,CAAC,QAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,eAAA,EACV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,QAAA,EAAA,EAAO,OAAO,cAAA,EAAgB,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,GAAG,QAAA,EAAA,MAAA,EAE5D,CAAA;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,OAAO,SAAA,EAAU;AAAA,kBAC7C,KAAA,EAAM,iBAAA;AAAA,kBACN,OAAA,EAAS,MAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA;AAAA,kBAC3B,QAAA,EAAA;AAAA;AAAA;AAED,aAAA,EACF;AAAA,WAAA,EAEJ;AAAA,SAAA;AAAA,QArDG,CAAA,CAAE;AAAA,OAuDT;AAAA,IAEJ,CAAC,CAAA;AAAA,IAGA,QAAA,wBACE,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,GAAG,iBAAA,EAAkB,EACjD,QAAA,kBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,QAAA,EAAU,OAAA;AAAA,QACV,KAAA;AAAA,QACA,QAAA,EAAU,SAAA;AAAA,QACV,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAY;AAAA;AAAA,KACd,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAgBA,SAAS,OAAA,CAAQ;AAAA,EACf,IAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,SAAS,GAAA,CAAI,KAAsB,KAAA,EAAgB;AACjD,IAAA,QAAA,CAAS,EAAE,GAAG,IAAA,EAAM,CAAC,GAAG,GAAG,OAAO,CAAA;AAAA,EACpC;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,SAAA,EAEV,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,oBAChC,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,GAAG,UAAA;AAAA,UACH,GAAI,aAAa,EAAE,UAAA,EAAY,WAAW,KAAA,EAAO,SAAA,KAAc;AAAC,SAClE;AAAA,QACA,OAAO,IAAA,CAAK,EAAA;AAAA,QACZ,UAAU,CAAC,CAAA,KAAM,IAAI,IAAA,EAAM,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACzC,WAAA,EAAY,aAAA;AAAA,QACZ,QAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBAGA,GAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,oBACnC,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,UAAA;AAAA,QACP,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,UAAU,CAAC,CAAA,KAAM,IAAI,OAAA,EAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAC5C,WAAA,EAAY;AAAA;AAAA,KACd;AAAA,oBAGA,GAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,oBAClC,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,WAAA;AAAA,QACP,OAAO,IAAA,CAAK,IAAA;AAAA,QACZ,UAAU,CAAC,CAAA,KAAM,IAAI,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAgB,CAAA;AAAA,QAEtD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,0BAC7B,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,0BAC7B,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAA,EAAU,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,0BAC/B,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA;AAAA,KAC/B;AAAA,oBAGA,IAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,gBAAA,EACZ,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,SAAS,IAAA,CAAK,QAAA;AAAA,UACd,UAAU,CAAC,CAAA,KAAM,IAAI,UAAA,EAAY,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,UACjD,KAAA,EAAO,EAAE,WAAA,EAAa,CAAA;AAAE;AAAA,OAC1B;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,cAAA,EAAgB,QAAA,EAAA,6CAAA,EAE7B;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,KAAA,oBAAS,GAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,YAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAGvC,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,gBAAA,EACV,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,OAAA,EAAS,UAAU,QAAA,EAAA,QAAA,EAElD,CAAA;AAAA,0BACC,QAAA,EAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,OAAA,EAAS,UACrC,QAAA,EAAA,WAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAMA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAK,EAAsB;AAC9C,EAAA,MAAM,MAAA,GAAkC;AAAA,IACtC,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AACA,EAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,UAAA,EAAY,MAAA,CAAO,IAAI,CAAA,IAAK,SAAA,EAAU,EACrE,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ;AAQA,SAAS,gBAAgB,KAAA,EAAgD;AACvE,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAsB;AAEtC,EAAA,SAAS,MAAA,CAAO,OAAe,KAAA,EAAe;AAC5C,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,CAAI,KAAK,KAAK,EAAC;AACpC,IAAA,IAAI,CAAC,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,EAAG,QAAA,CAAS,KAAK,KAAK,CAAA;AAClD,IAAA,GAAA,CAAI,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,EACzB;AAEA,EAAA,SAAS,SAAA,CAAU,OAA6B,OAAA,EAAiB;AAC/D,IAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,IAAS,EAAC,EAAG;AAC9B,MAAA,IAAI,IAAA,CAAK,WAAW,OAAO,CAAA,SAAU,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,IAC7D;AAAA,EACF;AAEA,EAAA,SAAS,aAAA,CAAc,OAAmC,OAAA,EAAiB;AACzE,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG;AACpC,MAAA,IAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,IACzE;AACA,IAAA,KAAA,MAAW,UAAU,KAAA,CAAM,MAAA,IAAU,EAAC,EAAG,aAAA,CAAc,QAAQ,OAAO,CAAA;AAAA,EACxE;AAEA,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,aAAA,CAAc,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,KAAK,CAAA;AAC1C,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,MAAA,IAAU,EAAC,EAAG;AACrC,MAAA,SAAA,CAAU,KAAA,CAAM,WAAW,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,QAAA,EAAM,KAAA,CAAM,KAAK,CAAA,CAAE,CAAA;AAC3D,MAAA,aAAA,CAAc,KAAA,CAAM,aAAa,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,QAAA,EAAM,KAAA,CAAM,KAAK,CAAA,CAAE,CAAA;AAAA,IACnE;AAAA,EACF;AAEA,EAAA,OAAO,GAAA;AACT;AAMA,IAAM,UAAA,GAAkC;AAAA,EACtC,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,OAAA,EAAS,OAAA;AAAA,EACT,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,UAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe;AACjB,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY,MAAA;AAAA,EACZ,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,UAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS,eAAA;AAAA,EACT,UAAA,EAAY,GAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,SAAA,GAAiC;AAAA,EACrC,UAAA,EAAY,WAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,CAAA;AAAA,EACd,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,CAAA;AAAA,EACL,OAAA,EAAS,UAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,iBAAA,GAAyC;AAAA,EAC7C,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,YAAA,GAAoC;AAAA,EACxC,IAAA,EAAM,CAAA;AAAA,EACN,QAAA,EAAU,CAAA;AAAA,EACV,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK,CAAA;AAAA,EACL,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,UAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,WAAA;AAAA,EACZ,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAqC;AAAA,EACzC,OAAA,EAAS,MAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,CAAA;AAAA,EACd,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,kBAAA,GAA0C;AAAA,EAC9C,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,CAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAqC;AAAA,EACzC,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,SAAA,GAAiC;AAAA,EACrC,OAAA,EAAS,MAAA;AAAA,EACT,QAAA,EAAU,MAAA;AAAA,EACV,GAAA,EAAK,CAAA;AAAA,EACL,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,YAAA,GAAoC;AAAA,EACxC,QAAA,EAAU,EAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,YAAA,EAAc,CAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,eAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,MAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,MAAA;AAAA,EACZ,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAGA,IAAM,SAAA,GAAiC;AAAA,EACrC,KAAA,EAAO,MAAA;AAAA,EACP,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,UAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,EAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,OAAA,EAAS,MAAA;AAAA,EACT,KAAA,EAAO,MAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,GAAG;AACL,CAAA;AAEA,IAAM,gBAAA,GAAwC;AAAA,EAC5C,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,UAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc,CAAA;AAAA,EACd,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,gBAAA,GAAwC;AAAA,EAC5C,OAAA,EAAS,MAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,cAAA,EAAgB,UAAA;AAAA,EAChB,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,EAAA;AAAA,EACV,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY,MAAA;AAAA,EACZ,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,cAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,EAAA;AAAA,EACV,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,MAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;;;AC3kBO,SAAS,gBAAA,CAAiB,eAAwB,cAAA,EAAsC;AAC7F,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,eAAA,EAAgB;AACnC,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAC9C,EAAA,MAAM,QAAqB,EAAC;AAE5B,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,KAAA,EAAO;AAC/B,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,MAAA,EAAQ;AAC/B,MAAA,IAAI,IAAA,CAAK,EAAA,KAAO,aAAA,IAAiB,KAAA,CAAM,OAAO,cAAA,EAAgB;AAG9D,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,QAAA,OAAA,GAAU,aAAA,CAAc,KAAK,CAAC,CAAA,KAAM,EAAE,EAAA,KAAO,KAAA,CAAM,cAAc,CAAA,EAAG,MAAA;AAAA,MACtE,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ;AAChC,QAAA,OAAA,GAAU,KAAA,CAAM,OAAA;AAAA,MAClB;AAEA,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,MAAM,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,MAAM,EAAE,CAAA,CAAA;AAAA,QAC5B,OAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,QAAA,EAAM,MAAM,KAAK,CAAA,CAAA;AAAA,QACrC,QAAQ,IAAA,CAAK,EAAA;AAAA,QACb,SAAS,KAAA,CAAM,EAAA;AAAA,QACf;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,MAAA,IAAU,MAAA,CAAO,iBAAA,IAAqB,EAAC,EAAG;AACnD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAA,EAAM,CAAA,KAAA,EAAQ,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,MACvB,KAAA,EAAO,CAAA,KAAA,EAAQ,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,MAC3B,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,KAAA;AACT;AChDA,IAAM,SAAA,GAA8E;AAAA,EAClF,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,EACnD,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,UAAU,IAAA,EAAK;AAAA,EAC1D,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,GAAA,EAAK,UAAU,IAAA,EAAK;AAAA,EACnD,EAAE,KAAA,EAAO,oBAAA,EAAsB,KAAA,EAAO,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,EAC3D,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,UAAU,IAAA,EAAK;AAAA,EAChD,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,EACxD,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAU,IAAA,EAAK;AAAA,EACvD,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,cAAA,EAAgB,UAAU,IAAA,EAAK;AAAA,EAC9D,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,iBAAA,EAAmB,UAAU,IAAA,EAAK;AAAA,EACxD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,qBAAA,EAAuB,UAAU,IAAA,EAAK;AAAA,EAC/D,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,EAC3D,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,KAAA,EAAM;AAAA,EACpD,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,UAAU,KAAA,EAAM;AAAA,EAC3D,EAAE,OAAO,QAAA,EAAU,KAAA,EAAO,cAAc,QAAA,EAAU,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,EACrE,EAAE,OAAO,WAAA,EAAa,KAAA,EAAO,eAAe,QAAA,EAAU,IAAA,EAAM,QAAQ,IAAA;AACtE,CAAA;AASO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,aAAA,EAAe,cAAc,CAAA;AAC/D,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAE9C,EAAA,MAAM,QAAwB,KAAA,IAAS,EAAE,YAAY,KAAA,EAAO,KAAA,EAAO,EAAC,EAAE;AAEtE,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,EAAe,OAAA,KAAoC;AACrE,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,GAAG,OAAA,KAAY,CAAE,CAAA;AAChF,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,CAAC,CAAA,EAAG,IAAA,IAAQ,EAAA;AACvC,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,KAAA;AAAA,MACH,KAAA,EAAO,CAAC,GAAG,KAAA,CAAM,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,EAAA,EAAI;AAAA,KAC5E,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AACtD,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AAAE,MAAA,QAAA,CAAS,MAAS,CAAA;AAAG,MAAA;AAAA,IAAQ;AACvD,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACEA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,OAAO,SAAA,EAEhB,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,KAAA,CAAM,SAAS,CAAA,oBACpBA,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,OAAO,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,iBAAiB,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,MACxC,CAAC,KAAA,EAAO,IAAI,EAAY,GAAA,CAAI,CAAC,sBAC7BA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO;AAAA,YACL,GAAG,MAAA,CAAO,aAAA;AAAA,YACV,GAAI,KAAA,CAAM,UAAA,KAAe,CAAA,GAAI,MAAA,CAAO,mBAAmB;AAAC,WAC1D;AAAA,UACA,OAAA,EAAS,MAAM,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,GAAG,CAAA;AAAA,UAElD,YAAE,WAAA;AAAY,SAAA;AAAA,QAPV;AAAA,OASR,CAAA;AAAA,sBACDA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,iBAAiB,QAAA,EAAA,OAAA,EAAK;AAAA,KAAA,EAC5C,CAAA;AAAA,IAID,KAAA,CAAM,KAAA,CAAM,MAAA,KAAW,CAAA,oBACtBA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,QAAA,EAAA,yDAAA,EAE1B,CAAA;AAAA,IAID,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAChC,MAAA,MAAM,KAAA,GAAQ,UAAU,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,KAAK,QAAQ,CAAA;AAC7D,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAgB,KAAA,EAAO,OAAO,IAAA,EAE7B,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,MAAA,CAAO,MAAA;AAAA,YACd,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,YAE3D,QAAA,EAAA;AAAA,cAAA,QAAA,CAAS,WAAW,CAAA,oBACnBC,IAAC,QAAA,EAAA,EAAO,KAAA,EAAM,IAAG,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,cAErC,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,qBACbA,GAAAA,CAAC,QAAA,EAAA,EAAoB,KAAA,EAAO,CAAA,CAAE,IAAA,EAAO,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAA1B,CAAA,CAAE,IAA8B,CAC9C;AAAA;AAAA;AAAA,SACH;AAAA,wBAGAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,GAAG,MAAA,CAAO,MAAA,EAAQ,OAAO,GAAA,EAAI;AAAA,YACtC,OAAO,IAAA,CAAK,QAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KACT,UAAA,CAAW,KAAA,EAAO,EAAE,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,KAAA,EAA4B,CAAA;AAAA,YAGpE,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,qBACdA,GAAAA,CAAC,QAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAA5B,CAAA,CAAE,KAAgC,CAChD;AAAA;AAAA,SACH;AAAA,QAGC,KAAA,EAAO,QAAA,KACN,KAAA,CAAM,MAAA,mBACJD,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,GAAG,MAAA,CAAO,MAAA,EAAQ,OAAO,GAAA,EAAI;AAAA,YACtC,OAAO,IAAA,CAAK,KAAA,IAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA;AAAA,YACjD,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,YAE5D,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,yBAAA,EAAa,CAAA;AAAA,cAC7B,aAAA,CAAc,GAAA,CAAI,CAAC,EAAA,qBAClBA,GAAAA,CAAC,QAAA,EAAA,EAAmB,KAAA,EAAO,EAAA,CAAG,EAAA,EAAK,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAAzB,EAAA,CAAG,EAA4B,CAC7C;AAAA;AAAA;AAAA,4BAGHD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,OAAO,UAAA,EACjB,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAO,MAAA,CAAO,UAAA;AAAA,cACd,WAAA,EAAY,OAAA;AAAA,cACZ,OAAO,IAAA,CAAK,KAAA,IAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA;AAAA,cACjD,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA,WAC9D;AAAA,UACC,aAAA,CAAc,MAAA,GAAS,CAAA,oBACtBD,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAO,MAAA,CAAO,UAAA;AAAA,cACd,KAAA,EAAM,2BAAA;AAAA,cACN,KAAA,EAAM,EAAA;AAAA,cACN,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,IAAI,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,cACjE,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAC,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,gBACjB,aAAA,CAAc,IAAI,CAAC,EAAA,qBAClBA,GAAAA,CAAC,UAAA,EAAA,EAAqB,KAAA,EAAO,EAAA,CAAG,KAAA,EAC7B,QAAA,EAAA,EAAA,CAAG,OAAO,GAAA,CAAI,CAAC,sBACdD,IAAAA,CAAC,YAA6B,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,EAChD,QAAA,EAAA;AAAA,kBAAA,CAAA,CAAE,KAAA;AAAA,kBAAM,IAAA;AAAA,kBAAG,CAAA,CAAE,KAAA;AAAA,kBAAM;AAAA,iBAAA,EAAA,EADT,MAAA,CAAO,EAAE,KAAK,CAE3B,CACD,CAAA,EAAA,EALY,EAAA,CAAG,EAMlB,CACD;AAAA;AAAA;AAAA;AACH,SAAA,EAEJ,CAAA,CAAA;AAAA,wBAIJC,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA,EAAG,QAAA,EAAA,QAAA,EAAC;AAAA,OAAA,EAAA,EA1E5D,KA2EV,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBAEDA,IAAC,QAAA,EAAA,EAAO,KAAA,EAAO,OAAO,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAA,EAAA,YAAA,EAEhD,CAAA;AAAA,IAGC,KAAA,CAAM,MAAM,MAAA,GAAS,CAAA,oBACpBD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,MAAA,CAAO,OAAA,EACjB,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,cAAc,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,MAAA,CAAO,WAAA,EAAc,QAAA,EAAA,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA,EAAE;AAAA,KAAA,EAClE;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEA,IAAM,MAAA,GAA8C;AAAA,EAClD,WAAW,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,EAAA,EAAG;AAAA,EAC/D,aAAA,EAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,YAAA,EAAc,CAAA,EAAE;AAAA,EAChF,eAAA,EAAiB,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,sBAAA,EAAuB;AAAA,EAC/D,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,UAAA;AAAA,IAAY,YAAA,EAAc,CAAA;AAAA,IAClE,MAAA,EAAQ,kCAAA;AAAA,IAAoC,UAAA,EAAY,mBAAA;AAAA,IACxD,MAAA,EAAQ,SAAA;AAAA,IAAW,KAAA,EAAO;AAAA,GAC5B;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IACxC,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,uBAAA,EAAyB,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,QAAA,EAAS;AAAA,EAC9F,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK,CAAA;AAAA,IAC5C,UAAA,EAAY,mBAAA;AAAA,IAAqB,MAAA,EAAQ,4BAAA;AAAA,IACzC,YAAA,EAAc,qBAAA;AAAA,IAAuB,OAAA,EAAS;AAAA,GAChD;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,CAAA;AAAA,IAAG,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAChC,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO,gBAAA;AAAA,IACvC,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,GAAA;AAAA,IAAK,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IACnC,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO;AAAA,GACzC;AAAA,EACA,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IAAe,KAAA,EAAO,kBAAA;AAAA,IAClD,MAAA,EAAQ,SAAA;AAAA,IAAW,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY;AAAA,GAC/C;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,yBAAA;AAAA,IAC/C,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY,GAAA;AAAA,IAAK,SAAA,EAAW,YAAA;AAAA,IAC/C,KAAA,EAAO;AAAA,GACT;AAAA,EACA,YAAY,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC5D,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAAW,MAAA,EAAQ,kCAAA;AAAA,IAC1C,YAAA,EAAc,kBAAA;AAAA,IAAoB,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO,mBAAA;AAAA,IACzE,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACjC;AAAA,EACA,OAAA,EAAS,EAAE,SAAA,EAAW,CAAA,EAAE;AAAA,EACxB,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,KAAA,EAAO,uBAAA;AAAA,IACtC,aAAA,EAAe,WAAA;AAAA,IAAa,OAAA,EAAS,OAAA;AAAA,IAAS,YAAA,EAAc;AAAA,GAC9D;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,uBAAA;AAAA,IAAyB,MAAA,EAAQ,4BAAA;AAAA,IAC3D,YAAA,EAAc,kBAAA;AAAA,IAAoB,OAAA,EAAS,CAAA;AAAA,IAAG,QAAA,EAAU,MAAA;AAAA,IAAQ,SAAA,EAAW,GAAA;AAAA,IAC3E,MAAA,EAAQ,CAAA;AAAA,IAAG,KAAA,EAAO;AAAA;AAEtB,CAAA;AC/OA,IAAM,gBAAA,GAAqF;AAAA,EACzF,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAU,KAAA,EAAM;AAAA,EACvD,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,UAAU,IAAA,EAAK;AAAA,EAClD,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,UAAU,IAAA,EAAK;AAAA,EAClD,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,UAAU,IAAA,EAAK;AAAA,EACzD,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,UAAU,IAAA,EAAK;AAAA,EACzD,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,cAAA,EAAgB,UAAU,KAAA,EAAM;AAAA,EACxD,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,YAAA,EAAc,UAAU,KAAA,EAAM;AAAA,EACpD,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,EACxD,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,IAAA,EAAK;AAAA,EAClD,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,UAAU,IAAA,EAAK;AAAA,EACzD,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,GAAA,EAAK,UAAU,IAAA,EAAK;AAAA,EAClD,EAAE,IAAA,EAAM,oBAAA,EAAsB,KAAA,EAAO,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,EAC1D,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,GAAA,EAAK,UAAU,IAAA,EAAK;AAAA,EAC/C,EAAE,IAAA,EAAM,iBAAA,EAAmB,KAAA,EAAO,IAAA,EAAM,UAAU,IAAA,EAAK;AAAA,EACvD,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAU,IAAA,EAAK;AAAA,EACtD,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,cAAA,EAAgB,UAAU,IAAA,EAAK;AAAA,EAC7D,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,eAAA,EAAiB,UAAU,IAAA,EAAK;AAAA,EAC1D,EAAE,MAAM,QAAA,EAAU,KAAA,EAAO,cAAc,QAAA,EAAU,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,EACpE,EAAE,MAAM,WAAA,EAAa,KAAA,EAAO,eAAe,QAAA,EAAU,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,EACxE,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,kBAAA,EAAoB,UAAU,KAAA;AACzD,CAAA;AAOO,SAAS,iBAAA,CAAkB,EAAE,KAAA,EAAO,QAAA,EAAS,EAA2B;AAC7E,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAE9C,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,EAAe,OAAA,KAAqC;AACtE,IAAA,QAAA,CAAS,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,MAAO,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,GAAG,OAAA,EAAQ,GAAI,CAAE,CAAC,CAAA;AAAA,EACxE,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,QAAA,CAAS,CAAC,GAAG,KAAA,EAAO,EAAE,MAAM,UAAA,EAAY,OAAA,EAAS,wBAAA,EAA0B,CAAC,CAAA;AAAA,EAC9E,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,QAAA,CAAS,MAAM,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAC,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EAChB,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,MAAA,KAAW,qBAChBD,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,+CAAA,EAAwC,CAAA;AAAA,IAGnE,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,MAAA,MAAM,GAAA,GAAM,iBAAiB,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,KAAK,IAAI,CAAA;AAC7D,MAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAgB,KAAA,EAAOE,QAAO,IAAA,EAE7B,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,UAAA;AAAA,YACd,OAAO,IAAA,CAAK,IAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,KAAA,EAA6B,CAAA;AAAA,YAEhF,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,CAAC,CAAA,qBACrBD,GAAAA,CAAC,QAAA,EAAA,EAAoB,KAAA,EAAO,CAAA,CAAE,IAAA,EAAO,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAA1B,CAAA,CAAE,IAA8B,CAC9C;AAAA;AAAA,SACH;AAAA,QAGC,GAAA,EAAK,QAAA,KACJ,GAAA,CAAI,MAAA,mBACFD,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,GAAGE,OAAAA,CAAO,UAAA,EAAY,MAAM,WAAA,EAAY;AAAA,YACjD,OAAO,IAAA,CAAK,KAAA,IAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA;AAAA,YACjD,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,YAE5D,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,yBAAA,EAAa,CAAA;AAAA,cAC7B,aAAA,CAAc,GAAA,CAAI,CAAC,EAAA,qBAClBA,GAAAA,CAAC,QAAA,EAAA,EAAmB,KAAA,EAAO,EAAA,CAAG,EAAA,EAAK,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAAzB,EAAA,CAAG,EAA4B,CAC7C;AAAA;AAAA;AAAA,4BAGHD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,UAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,UAAA;AAAA,cACd,WAAA,EAAY,OAAA;AAAA,cACZ,OAAO,IAAA,CAAK,KAAA,IAAS,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA;AAAA,cACjD,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA,WAC9D;AAAA,UACC,aAAA,CAAc,MAAA,GAAS,CAAA,oBACtBF,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOE,OAAAA,CAAO,UAAA;AAAA,cACd,KAAA,EAAM,2BAAA;AAAA,cACN,KAAA,EAAM,EAAA;AAAA,cACN,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,IAAI,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,UAAA,CAAW,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,cACjE,CAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,gBACjB,aAAA,CAAc,IAAI,CAAC,EAAA,qBAClBA,GAAAA,CAAC,UAAA,EAAA,EAAqB,KAAA,EAAO,EAAA,CAAG,KAAA,EAC7B,QAAA,EAAA,EAAA,CAAG,OAAO,GAAA,CAAI,CAAC,sBACdD,IAAAA,CAAC,YAA6B,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,EAChD,QAAA,EAAA;AAAA,kBAAA,CAAA,CAAE,KAAA;AAAA,kBAAM,IAAA;AAAA,kBAAG,CAAA,CAAE,KAAA;AAAA,kBAAM;AAAA,iBAAA,EAAA,EADT,MAAA,CAAO,EAAE,KAAK,CAE3B,CACD,CAAA,EAAA,EALY,EAAA,CAAG,EAMlB,CACD;AAAA;AAAA;AAAA;AACH,SAAA,EAEJ,CAAA,CAAA;AAAA,QAKH,IAAA,CAAK,IAAA,KAAS,QAAA,oBACbC,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,UAAA;AAAA,YACd,WAAA,EAAY,aAAA;AAAA,YACZ,KAAA,EAAO,KAAK,iBAAA,IAAqB,EAAA;AAAA,YACjC,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,iBAAA,EAAmB,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA,SAC1E;AAAA,wBAIFD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,YAAA;AAAA,YACd,WAAA,EAAY,eAAA;AAAA,YACZ,OAAO,IAAA,CAAK,OAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,KAAA,EAAO,EAAE,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA,SAChE;AAAA,wBAEAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAAW,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA,EAAG,QAAA,EAAA,QAAA,EAAC;AAAA,OAAA,EAAA,EA5E5D,KA6EV,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBAEDD,IAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,QAAO,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAA,EAAA,YAAA,EAEhD;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,WAAW,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,EAAA,EAAG;AAAA,EAC/D,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,uBAAA,EAAyB,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,QAAA,EAAS;AAAA,EAC9F,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK,CAAA;AAAA,IAC5C,UAAA,EAAY,mBAAA;AAAA,IAAqB,MAAA,EAAQ,4BAAA;AAAA,IACzC,YAAA,EAAc,qBAAA;AAAA,IAAuB,OAAA,EAAS;AAAA,GAChD;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,WAAA;AAAA,IAAa,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAC1C,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO;AAAA,GACzC;AAAA,EACA,YAAY,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC5D,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IAAI,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAClC,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO;AAAA,GACzC;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAAW,MAAA,EAAQ,kCAAA;AAAA,IAC1C,YAAA,EAAc,kBAAA;AAAA,IAAoB,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO,mBAAA;AAAA,IACzE,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACjC;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IAAG,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAChC,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO,gBAAA;AAAA,IACvC,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IAAe,KAAA,EAAO,kBAAA;AAAA,IAClD,MAAA,EAAQ,SAAA;AAAA,IAAW,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY;AAAA,GAC/C;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,yBAAA;AAAA,IAC/C,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY,GAAA;AAAA,IAAK,SAAA,EAAW,YAAA;AAAA,IAC/C,KAAA,EAAO;AAAA;AAEX,CAAA;AC7KO,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,aAAA,EAAe,cAAc,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAEhD,EAAA,MAAM,YAAY,QAAA,CAAS,MAAA;AAAA,IACzB,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,QAAA,CAAS,EAAE,IAAI,CAAA,KAC1B,CAAA,CAAE,IAAA,CAAK,WAAA,EAAY,CAAE,SAAS,KAAA,CAAM,WAAA,EAAa,CAAA,IAChD,CAAA,CAAE,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,KAAA,CAAM,WAAA,EAAa,CAAA;AAAA,GACxD;AAEA,EAAA,MAAM,GAAA,GAAM,CAAC,IAAA,KAAiB;AAC5B,IAAA,QAAA,CAAS,CAAC,GAAG,KAAA,EAAO,IAAI,CAAC,CAAA;AACzB,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,QAAA,CAAS,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,MAAA,IAAI,CAAC,aAAa,OAAA,EAAS,QAAA,CAAS,EAAE,MAAc,CAAA,UAAW,KAAK,CAAA;AAAA,IACtE,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;AAAA,EAChE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAChB,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,IAAI,CAAA,EAAG,KAAA,IAAS,IAAA;AAElD,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAiB,IAAA,CAAK,WAAW,OAAO,CAAA;AAE5D,EAAA,uBACEH,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,YAAA,EAAc,KAAA,EAAOE,QAAO,SAAA,EAEpC,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,IAAA,EAChB,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,IAAI,CAAC,IAAA,qBACVF,IAAAA,CAAC,MAAA,EAAA,EAAgB,OAAO,EAAE,GAAGE,QAAO,GAAA,EAAK,GAAI,WAAW,IAAI,CAAA,GAAIA,QAAO,MAAA,GAAS,IAAI,EACjF,QAAA,EAAA;AAAA,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,wBACdD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAAW,OAAA,EAAS,MAAM,MAAA,CAAO,IAAI,CAAA,EAAG,QAAA,EAAA,QAAA,EAAC;AAAA,OAAA,EAAA,EAFtD,IAGX,CACD,CAAA;AAAA,sBAGDD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,OAAOC,OAAAA,CAAO,KAAA;AAAA,UACd,WAAA,EAAa,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,kCAAA,GAAgC,gBAAA;AAAA,UAClE,KAAA,EAAO,KAAA;AAAA,UACP,QAAA,EAAU,CAAC,CAAA,KAAM;AAAE,YAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAG,YAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC5D,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,IAGC,wBACCF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,QAAA,EAChB,QAAA,EAAA;AAAA,MAAA,SAAA,CAAU,MAAA,KAAW,CAAA,oBACpBD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAChB,QAAA,EAAA,QAAA,CAAS,MAAA,KAAW,CAAA,GACjB,sCAAA,GACA,qBAAA,EACN,CAAA;AAAA,MAED,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,qBACdF,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,OAAOE,OAAAA,CAAO,MAAA;AAAA,UACd,WAAA,EAAa,CAAC,CAAA,KAAM;AAAE,YAAA,CAAA,CAAE,cAAA,EAAe;AAAG,YAAA,GAAA,CAAI,EAAE,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAEvD,QAAA,EAAA;AAAA,4BAAAD,IAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,WAAA,EAAc,YAAE,KAAA,EAAM,CAAA;AAAA,4BAC1CD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAOC,OAAAA,CAAO,UAAA,EAAa,YAAE,IAAA,EAAK;AAAA;AAAA,SAAA;AAAA,QALnC,CAAA,CAAE;AAAA,OAOV;AAAA,KAAA,EACH,CAAA;AAAA,IAGD,KAAA,CAAM,SAAS,CAAA,oBACdD,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,IAAA,EAAM,QAAA,EAAA,iEAAA,EAEzB;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,SAAA,EAAW,EAAE,QAAA,EAAU,UAAA,EAAW;AAAA,EAClC,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IAAQ,QAAA,EAAU,MAAA;AAAA,IAAQ,GAAA,EAAK,CAAA;AAAA,IACxC,MAAA,EAAQ,kCAAA;AAAA,IAAoC,YAAA,EAAc,kBAAA;AAAA,IAC1D,OAAA,EAAS,SAAA;AAAA,IAAW,UAAA,EAAY,kBAAA;AAAA,IAAoB,SAAA,EAAW,EAAA;AAAA,IAAI,UAAA,EAAY;AAAA,GACjF;AAAA,EACA,GAAA,EAAK;AAAA,IACH,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK,CAAA;AAAA,IAC5C,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IAA0B,YAAA,EAAc;AAAA,GACrF;AAAA,EACA,MAAA,EAAQ,EAAE,UAAA,EAAY,sBAAA,EAAwB,OAAO,mBAAA,EAAoB;AAAA,EACzE,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IAAe,MAAA,EAAQ,SAAA;AAAA,IACnD,KAAA,EAAO,SAAA;AAAA,IAAW,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,CAAA;AAAA,IAAG,UAAA,EAAY;AAAA,GAC1D;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IAAG,QAAA,EAAU,GAAA;AAAA,IAAK,QAAA,EAAU,EAAA;AAAA,IAAI,MAAA,EAAQ,MAAA;AAAA,IAC9C,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IAAe,OAAA,EAAS,SAAA;AAAA,IACrD,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,UAAA;AAAA,IAAY,GAAA,EAAK,kBAAA;AAAA,IAAoB,IAAA,EAAM,CAAA;AAAA,IAAG,KAAA,EAAO,CAAA;AAAA,IAC/D,UAAA,EAAY,kBAAA;AAAA,IAAoB,MAAA,EAAQ,4BAAA;AAAA,IACxC,YAAA,EAAc,qBAAA;AAAA,IAAuB,SAAA,EAAW,4BAAA;AAAA,IAChD,MAAA,EAAQ,GAAA;AAAA,IAAK,SAAA,EAAW,GAAA;AAAA,IAAK,SAAA,EAAW;AAAA,GAC1C;AAAA,EACA,SAAA,EAAW,EAAE,OAAA,EAAS,WAAA,EAAa,UAAU,EAAA,EAAI,KAAA,EAAO,uBAAA,EAAyB,SAAA,EAAW,QAAA,EAAS;AAAA,EACrG,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IAAQ,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,eAAA;AAAA,IACtE,OAAA,EAAS,UAAA;AAAA,IAAY,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IACjD,MAAA,EAAQ,SAAA;AAAA,IAAW,SAAA,EAAW,MAAA;AAAA,IAAQ,GAAA,EAAK;AAAA,GAC7C;AAAA,EACA,aAAa,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,GAAA,EAAK,OAAO,gBAAA,EAAiB;AAAA,EACtE,YAAY,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,WAAA,EAAa,OAAO,uBAAA,EAAwB;AAAA,EACpF,MAAM,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,WAAW,CAAA;AACnE,CAAA;ACtIO,SAAS,MAAM,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,KAAA,GAAQ,KAAI,EAAe;AAC3E,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AAAE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,EAAQ;AAAA,IAAG,CAAA;AAC3E,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,uBACEH,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,OAAA,EAAS,OAAA,EACnC,QAAA,kBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,GAAGE,OAAAA,CAAO,KAAA,EAAO,KAAA,EAAM,EAAG,SAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB,EACxE,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,MAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAClCD,IAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,QAAO,QAAA,EAAU,OAAA,EAAS,SAAS,QAAA,EAAA,QAAA,EAAC;AAAA,KAAA,EACrD,CAAA;AAAA,oBACAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,MAAO,QAAA,EAAS;AAAA,GAAA,EACrC,CAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IAAS,KAAA,EAAO,CAAA;AAAA,IAAG,UAAA,EAAY,iBAAA;AAAA,IACzC,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,QAAA;AAAA,IACvD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,kBAAA;AAAA,IAAoB,YAAA,EAAc,EAAA;AAAA,IAC9C,SAAA,EAAW,6BAAA;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IAAQ,aAAA,EAAe,QAAA;AAAA,IAAU,SAAA,EAAW,MAAA;AAAA,IAAQ,QAAA,EAAU;AAAA,GACzE;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,eAAA;AAAA,IACvD,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc;AAAA,GACtC;AAAA,EACA,OAAO,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,EAAA,EAAI,OAAO,gBAAA,EAAiB;AAAA,EAChE,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IAAe,MAAA,EAAQ,SAAA;AAAA,IACnD,QAAA,EAAU,EAAA;AAAA,IAAI,KAAA,EAAO,uBAAA;AAAA,IAAyB,OAAA,EAAS;AAAA,GACzD;AAAA,EACA,MAAM,EAAE,SAAA,EAAW,QAAQ,OAAA,EAAS,EAAA,EAAI,OAAO,gBAAA;AACjD,CAAA;ACzCA,IAAM,gBAAA,GAAmB,CAAC,QAAA,EAAU,aAAA,EAAe,OAAO,CAAA;AAEnD,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IAAQ,cAAA;AAAA,IAAgB,eAAA;AAAA,IACxB,WAAA;AAAA,IAAa;AAAA,MACX,eAAA,EAAgB;AACpB,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAE9C,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIC,SAAS,KAAK,CAAA;AAClE,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAEpE,EAAA,MAAM,IAAA,GAAO,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,cAAc,CAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,eAAe,CAAA;AAE/D,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,IAAA,EAAM;AACnB,IAAA,uBACEF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,4DAAA,EAE1B,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,UAAA,IAAc,EAAC;AACxC,EAAA,MAAM,aAAa,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,UAAU,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,KAAA,CAAM,WAAA;AAC7B,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,WAAA,EAAa,KAAA,CAAM,MAAA,IAAU,CAAA;AAErD,EAAA,MAAM,sBAAA,GAAyB,CAAC,KAAA,KAA4B;AAC1D,IAAA,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,EAAE,YAAY,KAAA,CAAM,MAAA,GAAS,KAAA,GAAQ,MAAA,EAAW,CAAA;AAAA,EACjF,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAoB;AACjD,IAAA,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,EAAE,WAAW,KAAA,CAAM,MAAA,GAAS,KAAA,GAAQ,MAAA,EAAW,CAAA;AAAA,EAChF,CAAA;AAEA,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,MAAA,EACjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,UAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,aAAa,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,QAC5C,CAAC,8BAAcD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,QAC1D,8BAAcD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,UAAA,EAAQ;AAAA,OAAA,EAC5D,CAAA;AAAA,sBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,OAAA,EAAS,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,QAAK,KAAA,CAAM;AAAA,OAAA,EAAG;AAAA,KAAA,EAC5C,CAAA;AAAA,oBAEAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,IAAA,EAEjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACjCD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,KAAA;AAAA,YACd,OAAO,KAAA,CAAM,KAAA;AAAA,YACb,QAAA,EAAU,CAAC,CAAA,KAAM,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,OAAO;AAAA;AAAA;AAC3E,OAAA,EACF,CAAA;AAAA,sBAGAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,wBACvCD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,KAAA;AAAA,YACd,KAAA,EAAO,MAAM,WAAA,IAAe,EAAA;AAAA,YAC5B,WAAA,EAAY,UAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KACT,WAAA,CAAY,KAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,EAAE,WAAA,EAAa,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,QAAW;AAAA;AAAA;AAE/E,OAAA,EACF,CAAA;AAAA,sBAGAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,wBACzCD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,KAAA;AAAA,YACd,OAAO,KAAA,CAAM,YAAA,IAAgB,OAAO,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA,GAAI,EAAA;AAAA,YACjE,WAAA,EAAY,UAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KACT,WAAA,CAAY,KAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI,EAAE,YAAA,EAAc,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,QAAW;AAAA;AAAA;AAEhF,OAAA,EACF,CAAA;AAAA,MAGC,gBAAA,CAAiB,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,IAAK,aAAA,CAAc,MAAA,GAAS,CAAA,oBAC/DF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,wBAC1CF,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAOE,OAAAA,CAAO,KAAA;AAAA,YACd,QAAA,EAAU,QAAA;AAAA,YACV,KAAA,EAAO,MAAM,cAAA,IAAkB,EAAA;AAAA,YAC/B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,MAAM,MAAA,GAAS,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,MAAA;AACjC,cAAA,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI;AAAA,gBAC7B,cAAA,EAAgB,MAAA;AAAA;AAAA,gBAEhB,OAAA,EAAS,MAAA,GAAS,MAAA,GAAY,KAAA,CAAM;AAAA,eACrC,CAAA;AAAA,YACH,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,iCAAA,EAAqB,CAAA;AAAA,cACrC,aAAA,CAAc,IAAI,CAAC,EAAA,qBAClBD,IAAAA,CAAC,QAAA,EAAA,EAAmB,KAAA,EAAO,EAAA,CAAG,EAAA,EAC3B,QAAA,EAAA;AAAA,gBAAA,EAAA,CAAG,KAAA;AAAA,gBAAM,IAAA;AAAA,gBAAG,GAAG,MAAA,CAAO,MAAA;AAAA,gBAAO;AAAA,eAAA,EAAA,EADnB,EAAA,CAAG,EAEhB,CACD;AAAA;AAAA;AAAA,SACH;AAAA,QACC,KAAA,CAAM,kCACLC,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,UACf,QAAA,EAAA,CAAA,MAAM;AACN,UAAA,MAAM,EAAA,GAAK,cAAc,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,MAAM,cAAc,CAAA;AAClE,UAAA,OAAO,qBACLF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,QAAO,SAAA,EAAW,QAAA,EAAA;AAAA,YAAA,SAAA;AAAA,YAC1B,EAAA,CAAG,KAAA;AAAA,YAAM,QAAA;AAAA,YAAI,GAAG,MAAA,CAAO,MAAA;AAAA,YAAO;AAAA,WAAA,EACnC,oBAEAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,QAAO,WAAA,EAAa,QAAA,EAAA;AAAA,YAAA,eAAA;AAAA,YAAS,KAAA,CAAM,cAAA;AAAA,YAAe;AAAA,WAAA,EAAW,CAAA;AAAA,QAE9E,IAAG,EACL;AAAA,OAAA,EAEJ,CAAA;AAAA,sBAIFF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,wBACtCD,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,KAAA,CAAM,SAAA,IAAa,EAAC;AAAA,YAC3B,QAAA,EAAU,qBAAA;AAAA,YACV,eAAe,IAAA,CAAK,EAAA;AAAA,YACpB,gBAAgB,KAAA,CAAM;AAAA;AAAA;AACxB,OAAA,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,CAAA;AAAA,sBAG5BF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,YAAA,EACjB,QAAA,EAAA;AAAA,wBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,aAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,UAC7C,+BACCF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,4BAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,cAAA,EACjB,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,cAAU,OAAA;AAAA,cAAM,SAAA,KAAc,IAAI,GAAA,GAAM,EAAA;AAAA,cAAG,QAAA;AAAA,cAAI,KAAA,CAAM,WAAA,CAAa,UAAA,CAAW,WAAA;AAAY,aAAA,EAC5F,CAAA;AAAA,4BACAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,sBAAA,EAAoB;AAAA,WAAA,EACzD,oBAEAD,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,gBAAA,EAAc;AAAA,SAAA,EAEpD,CAAA;AAAA,wBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,gBAAA,EAAkB,OAAA,EAAS,MAAM,qBAAA,CAAsB,IAAI,CAAA,EAC9E,QAAA,EAAA,YAAA,GAAe,MAAA,GAAS,KAAA,EAC3B,CAAA;AAAA,UACC,gCACCD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,iBAAA;AAAA,cACd,SAAS,MAAM,iBAAA,CAAkB,KAAK,EAAA,EAAI,KAAA,CAAM,IAAI,MAAS,CAAA;AAAA,cAC9D,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,CAAA;AAAA,sBAG5BF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,YAAA,EACjB,QAAA,EAAA;AAAA,wBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,aAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,UACnC,UAAA,CAAW,SAAS,CAAA,mBACnBF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,4BAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,eAAA,EACjB,QAAA,EAAA;AAAA,cAAA,UAAA,CAAW,MAAA;AAAA,cAAO,OAAA;AAAA,cAAM,UAAA,CAAW,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,cACxD,aAAa,gBAAA,GAAgB;AAAA,aAAA,EAChC,CAAA;AAAA,4BACAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,QAAO,aAAA,EACjB,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,EAC1C;AAAA,WAAA,EACF,oBAEAD,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,iCAAA,EAA4B;AAAA,SAAA,EAElE,CAAA;AAAA,wBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,kBAAkB,OAAA,EAAS,MAAM,sBAAA,CAAuB,IAAI,CAAA,EAC/E,QAAA,EAAA,UAAA,CAAW,MAAA,GAAS,CAAA,GAAI,SAAS,KAAA,EACpC,CAAA;AAAA,UACC,UAAA,CAAW,MAAA,GAAS,CAAA,oBACnBD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,iBAAA;AAAA,cACd,OAAA,EAAS,MAAM,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,MAAM,EAAA,EAAI,EAAE,UAAA,EAAY,MAAA,EAAW,CAAA;AAAA,cACxE,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EAEJ;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,uCACCF,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,mBAAA,EAAiB,KAAA,CAAM,KAAK,CAAA,CAAA,CAAA;AAAA,QACnC,OAAA,EAAS,MAAM,sBAAA,CAAuB,KAAK,CAAA;AAAA,QAC3C,KAAA,EAAO,GAAA;AAAA,QAEP,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,wFAAA,EAE5B,CAAA;AAAA,0BACAD,GAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,UAAA;AAAA,cACP,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAOC,OAAAA,CAAO,WAAA,EACjB,0BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,eAAe,OAAA,EAAS,MAAM,uBAAuB,KAAK,CAAA,EAAG,kBAEnF,CAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAID,sCACCF,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,kBAAA,EAAgB,KAAA,CAAM,KAAK,CAAA,CAAA,CAAA;AAAA,QAClC,OAAA,EAAS,MAAM,qBAAA,CAAsB,KAAK,CAAA;AAAA,QAC1C,KAAA,EAAO,GAAA;AAAA,QAEP,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,oDAAA,EAE5B,CAAA;AAAA,0BACAD,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,OAAO,KAAA,CAAM,WAAA;AAAA,cACb,QAAA,EAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,KAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,cACvD,eAAe,IAAA,CAAK,EAAA;AAAA,cACpB,gBAAgB,KAAA,CAAM;AAAA;AAAA,WACxB;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAOC,OAAAA,CAAO,WAAA,EACjB,0BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,eAAe,OAAA,EAAS,MAAM,sBAAsB,KAAK,CAAA,EAAG,kBAElF,CAAA,EACF;AAAA;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,SAAA,EAAW,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAS;AAAA,EAC1F,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,QAAA;AAAA,IACvD,MAAA,EAAQ,MAAA;AAAA,IAAQ,KAAA,EAAO,uBAAA;AAAA,IAAyB,QAAA,EAAU,EAAA;AAAA,IAAI,SAAA,EAAW,QAAA;AAAA,IAAU,OAAA,EAAS;AAAA,GAC9F;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc,4BAAA;AAAA,IACpC,OAAA,EAAS,MAAA;AAAA,IAAQ,cAAA,EAAgB,eAAA;AAAA,IAAiB,UAAA,EAAY;AAAA,GAChE;AAAA,EACA,YAAY,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC5D,aAAa,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,EAAA,EAAI,OAAO,gBAAA,EAAiB;AAAA,EACtE,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,yBAAA;AAAA,IAA2B,KAAA,EAAO,uBAAA;AAAA,IAAyB,YAAA,EAAc;AAAA,GACvF;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,4BAAA;AAAA,IAA8B,KAAA,EAAO,kBAAA;AAAA,IAAoB,YAAA,EAAc;AAAA,GACrF;AAAA,EACA,SAAS,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,YAAY,WAAA,EAAY;AAAA,EACjF,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAS,EAAA,EAAI,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,EAAA,EAAG;AAAA,EACnG,OAAO,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC1D,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,KAAA,EAAO,sBAAA,EAAwB,aAAA,EAAe,WAAA,EAAa,aAAA,EAAe,QAAA,EAAS;AAAA,EAC3H,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAAW,MAAA,EAAQ,kCAAA;AAAA,IAC1C,YAAA,EAAc,kBAAA;AAAA,IAAoB,OAAA,EAAS,MAAA;AAAA,IAC3C,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO;AAAA,GACzC;AAAA,EACA,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,EAAG,YAAY,kBAAA,EAAmB;AAAA,EACrD,YAAA,EAAc,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,YAAA,EAAc,cAAA,EAAgB,eAAA,EAAiB,GAAA,EAAK,CAAA,EAAE;AAAA,EACnG,aAAA,EAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,EAC3E,kBAAkB,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAClE,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAC1E,OAAA,EAAS,SAAA;AAAA,IAAW,YAAA,EAAc;AAAA,GACpC;AAAA,EACA,aAAA,EAAe,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,uBAAA,EAAwB;AAAA,EAC9D,eAAe,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,WAAW,QAAA,EAAS;AAAA,EACnF,gBAAA,EAAkB,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,UAAA,EAAY,YAAA,EAAc,SAAA,EAAW,EAAA,EAAG;AAAA,EACpG,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACnF;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,4BAAA;AAAA,IAA8B,KAAA,EAAO,kBAAA;AAAA,IACpF,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ;AAAA,GAC5D;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IAC1E,OAAA,EAAS,SAAA;AAAA,IAAW,YAAA,EAAc;AAAA,GACpC;AAAA,EACA,QAAA,EAAU,EAAE,SAAA,EAAW,CAAA,EAAE;AAAA,EACzB,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,qBAAA;AAAA,IAAuB,YAAA,EAAc;AAAA,GAC/E;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAAqB,YAAA,EAAc;AAAA,GAChF;AAAA,EACA,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,sBAAA,EAAwB,YAAA,EAAc,EAAA,EAAI,SAAA,EAAW,CAAA,EAAE;AAAA,EACzF,aAAa,EAAE,SAAA,EAAW,IAAI,OAAA,EAAS,MAAA,EAAQ,gBAAgB,UAAA,EAAW;AAAA,EAC1E,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,qBAAA;AAAA,IAAuB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA;AAExF,CAAA;;;AClUA,SAAS,2BAAA,CACP,OACA,SAAA,EACa;AACb,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,EAAA,IAAI,CAAC,OAAO,OAAO,GAAA;AAEnB,EAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,EAAG;AACpC,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AACvC,IAAA,IAAI,aAAa,EAAA,EAAI;AACrB,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,GAAG,QAAQ,CAAA;AAC5C,IAAA,IAAI,OAAA,KAAY,SAAA,EAAW,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAAA,EAC5C;AAEA,EAAA,KAAA,MAAW,QAAA,IAAY,KAAA,CAAM,MAAA,IAAU,EAAC,EAAG;AACzC,IAAA,KAAA,MAAW,EAAA,IAAM,2BAAA,CAA4B,QAAA,EAAU,SAAS,CAAA,EAAG;AACjE,MAAA,GAAA,CAAI,IAAI,EAAE,CAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,OAAO,GAAA;AACT;AAGO,SAAS,wBACd,MAAA,EAC0B;AAC1B,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAyB;AAE1C,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,KAAA,EAAO;AAC/B,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AAGjC,IAAA,KAAA,MAAW,MAAM,2BAAA,CAA4B,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,EAAE,CAAA,EAAG;AACvE,MAAA,QAAA,CAAS,IAAI,EAAE,CAAA;AAAA,IACjB;AAGA,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,MAAA,EAAQ;AAE/B,MAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,SAAA,IAAa,EAAC,EAAG;AACxC,QAAA,IAAI,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AAC9B,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACjC,QAAA,IAAI,aAAa,EAAA,EAAI;AACrB,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AACtC,QAAA,IAAI,OAAA,KAAY,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,IAAI,OAAO,CAAA;AAAA,MAC/C;AAGA,MAAA,KAAA,MAAW,MAAM,2BAAA,CAA4B,KAAA,CAAM,WAAA,EAAa,IAAA,CAAK,EAAE,CAAA,EAAG;AACxE,QAAA,QAAA,CAAS,IAAI,EAAE,CAAA;AAAA,MACjB;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,QAAQ,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,IAAA;AACT;AAQO,SAAS,WAAA,CACd,KAAA,EACA,IAAA,EACA,SAAA,EACA,OAAA,EACqC;AACrC,EAAA,IAAI,SAAA,KAAc,OAAA,EAAS,OAAO,EAAE,OAAO,IAAA,EAAK;AAGhD,EAAA,MAAM,SAAA,GAAY,CAAC,GAAG,KAAK,CAAA;AAC3B,EAAA,MAAM,CAAC,KAAK,CAAA,GAAI,SAAA,CAAU,MAAA,CAAO,WAAW,CAAC,CAAA;AAC7C,EAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,KAAK,CAAA;AAElC,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAE5D,EAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,IAAA,MAAM,SAAA,GAAY,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AACvC,IAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,KAAK,EAAE,CAAA,wBAAS,GAAA,EAAI;AAE9C,IAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,CAAI,KAAK,CAAA;AACpC,MAAA,IAAI,aAAa,MAAA,EAAW;AAE5B,MAAA,IAAI,WAAW,SAAA,EAAW;AACxB,QAAA,MAAM,QAAA,GAAW,UAAU,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,KAAK,CAAA,EAAG,KAAA,IAAS,KAAA;AACjE,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,KAAA;AAAA,UACP,MAAA,EAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,iBAAiB,QAAQ,CAAA,uBAAA;AAAA,SACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AACvB;AAaO,SAAS,gBAAA,CACd,MAAA,EACA,MAAA,EACA,SAAA,EACA,OAAA,EACqC;AACrC,EAAA,IAAI,SAAA,KAAc,OAAA,EAAS,OAAO,EAAE,OAAO,IAAA,EAAK;AAEhD,EAAA,MAAM,SAAA,GAAY,CAAC,GAAG,MAAM,CAAA;AAC5B,EAAA,MAAM,CAAC,KAAK,CAAA,GAAI,SAAA,CAAU,MAAA,CAAO,WAAW,CAAC,CAAA;AAC7C,EAAA,SAAA,CAAU,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,KAAK,CAAA;AAElC,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAE5D,EAAA,KAAA,MAAW,SAAS,SAAA,EAAW;AAC7B,IAAA,MAAM,UAAA,GAAa,SAAA,CAAU,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AACzC,IAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,SAAA,IAAa,EAAC,EAAG;AACxC,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AAC9B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACjC,MAAA,IAAI,aAAa,EAAA,EAAI;AACrB,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AACtC,MAAA,IAAI,YAAY,MAAA,EAAQ;AACxB,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,CAAC,CAAA;AAC1C,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,CAAI,UAAU,CAAA;AACzC,MAAA,IAAI,aAAa,MAAA,EAAW;AAC5B,MAAA,IAAI,WAAW,UAAA,EAAY;AACzB,QAAA,MAAM,QAAA,GAAW,UAAU,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,UAAU,CAAA,EAAG,KAAA,IAAS,UAAA;AACtE,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,KAAA;AAAA,UACP,MAAA,EAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,KAAK,iBAAiB,QAAQ,CAAA,uBAAA;AAAA,SAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AACvB;AAKO,SAAS,uBAAA,CACd,MAAA,EACA,IAAA,EACA,MAAA,EACU;AACV,EAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,wBAAS,GAAA,EAAI;AAC7C,EAAA,OAAO,CAAC,GAAG,QAAQ,CAAA,CAChB,IAAI,CAAC,EAAA,KAAO,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA,EAAG,SAAS,EAAE,CAAA,CAC9D,OAAO,OAAO,CAAA;AACnB;ACvKA,IAAM,WAAA,GAAc;AAAA,EAClB,MAAA;AAAA,EAAQ,QAAA;AAAA,EAAU,OAAA;AAAA,EAAS,UAAA;AAAA,EAAY,KAAA;AAAA,EAAO,KAAA;AAAA,EAC9C,UAAA;AAAA,EAAY,QAAA;AAAA,EAAU,aAAA;AAAA,EAAe,UAAA;AAAA,EAAY,OAAA;AAAA,EAAS,MAAA;AAAA,EAAQ;AACpE,CAAA;AAEO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IAAQ,cAAA;AAAA,IAAgB,eAAA;AAAA,IACxB,QAAA;AAAA,IAAU,WAAA;AAAA,IAAa,cAAA;AAAA,IAAgB,WAAA;AAAA,IAAa,WAAA;AAAA,IAAa;AAAA,MAC/D,eAAA,EAAgB;AACpB,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,iBAAiB,qBAAA,EAAsB;AAC7C,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAE9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,IAAA,GAAO,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,cAAc,CAAA;AAE7D,EAAA,MAAM,oBAAA,uBAA2B,GAAA,EAAY;AAC7C,EAAA,KAAA,MAAW,CAAA,IAAK,OAAO,KAAA,EAAO;AAC5B,IAAA,KAAA,MAAW,CAAA,IAAK,EAAE,MAAA,EAAQ;AACxB,MAAA,KAAA,MAAW,GAAA,IAAO,CAAA,CAAE,SAAA,IAAa,EAAC,EAAG;AACnC,QAAA,oBAAA,CAAqB,IAAI,GAAG,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,uBACEF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,iDAAA,EAE1B,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAmB,OAAA,KAAoB;AACtD,IAAA,MAAM,QAAQ,gBAAA,CAAiB,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAA,EAAI,WAAW,OAAO,CAAA;AACvE,IAAA,IAAI,CAAC,MAAM,KAAA,EAAO;AAChB,MAAA,YAAA,CAAa,KAAA,CAAM,UAAU,cAAc,CAAA;AAC3C,MAAA,UAAA,CAAW,MAAM,YAAA,CAAa,IAAI,CAAA,EAAG,GAAI,CAAA;AACzC,MAAA;AAAA,IACF;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,aAAA,CAAc,IAAA,CAAK,EAAA,EAAI,SAAA,EAAW,OAAO,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,MAAA,EACjB,QAAA,EAAA;AAAA,sBAAAF,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAAY,eAAK,KAAA,EAAM,CAAA;AAAA,wBAC1CF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,OAAA,EAAU,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,UAAO,QAAA;AAAA,UAAO,IAAA,CAAK,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM;AAAA,SAAA,EAAG;AAAA,OAAA,EAC7F,CAAA;AAAA,MACC,CAAC,QAAA,oBACAD,GAAAA,CAAC,YAAO,KAAA,EAAOC,OAAAA,CAAO,MAAA,EAAQ,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE,GAAG,QAAA,EAAA,aAAA,EAEhE;AAAA,KAAA,EAEJ,CAAA;AAAA,IAEC,6BACCF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,WAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAK,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,MAAO,GAAA;AAAA,MAAE;AAAA,KAAA,EAClB,CAAA;AAAA,oBAGFD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,IAAA,EAChB,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,oBACtBD,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,WAAA,EAAa,QAAA,EAAA,4CAAA,EAA0C,CAAA;AAAA,MAE3E,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AACjC,QAAA,MAAM,UAAA,GAAa,MAAM,EAAA,KAAO,eAAA;AAChC,QAAA,MAAM,UAAA,GAAa,MAAM,UAAA,EAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,UAAU,CAAA,IAAK,KAAA;AAC3E,QAAA,MAAM,YAAA,GAAe,CAAC,CAAC,KAAA,CAAM,WAAA;AAC7B,QAAA,MAAM,OAAA,GAAA,CAAW,KAAA,CAAM,SAAA,EAAW,MAAA,IAAU,CAAA,IAAK,CAAA;AACjD,QAAA,MAAM,OAAA,GAAU,KAAA,CAAM,cAAA,GAClB,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,KAAA,CAAM,cAAc,CAAA,GACvD,MAAA;AACJ,QAAA,MAAM,WAAA,GAAc,qBAAqB,GAAA,CAAI,CAAA,EAAG,KAAK,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,EAAE,CAAA,CAAE,CAAA;AAErE,QAAA,MAAM,SAAA,GAAY,KAAA,GAAQ,CAAA,IACxB,gBAAA,CAAiB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA;AAC3D,QAAA,MAAM,WAAA,GAAc,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,IAC/C,gBAAA,CAAiB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA;AAE3D,QAAA,MAAM,iBAAiB,KAAA,CAAM,SAAA,IAAa,EAAC,EACxC,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,CAAA,EAAG,KAAK,EAAE,CAAA,CAAA,CAAG,CAAC,CAAA,CACzC,GAAA,CAAI,CAAC,CAAA,KAAM;AACV,UAAA,MAAM,UAAU,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,SAAS,CAAC,CAAA;AAC1C,UAAA,OAAO,IAAA,CAAK,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,OAAO,CAAA,EAAG,KAAA,IAAS,OAAA;AAAA,QAC7D,CAAC,CAAA;AAEH,QAAA,MAAM,mBAAA,GAAsB,KAAK,MAAA,CAAO,MAAA;AAAA,UAAO,CAAC,CAAA,KAC9C,CAAA,CAAE,EAAA,KAAO,KAAA,CAAM,OACd,CAAA,CAAE,SAAA,IAAa,EAAC,EAAG,SAAS,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,EAAE,CAAA,CAAE;AAAA,SACvD;AAEA,QAAA,uBACEF,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,EAAE,GAAGE,OAAAA,CAAO,IAAA,EAAM,GAAI,UAAA,GAAaA,OAAAA,CAAO,YAAA,GAAe,EAAC,EAAG;AAAA,YACpE,OAAA,EAAS,MAAM,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA;AAAA,YAEnC,QAAA,EAAA;AAAA,8BAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,OAAA,EACjB,QAAA,EAAA;AAAA,gCAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,QAAA,EACf,QAAA,EAAA;AAAA,kBAAA,CAAA,MAAM;AACN,oBAAA,MAAM,EAAA,GAAK,eAAe,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,MAAM,IAAI,CAAA;AACzD,oBAAA,uBACED,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,GAAGC,OAAAA,CAAO,SAAA,EAAW,GAAI,EAAA,GAAKA,OAAAA,CAAO,eAAA,GAAkB,EAAC,EAAG,EACvE,QAAA,EAAA,EAAA,GAAK,CAAA,EAAG,EAAA,CAAG,IAAA,GAAO,EAAA,CAAG,IAAA,GAAO,GAAA,GAAM,EAAE,CAAA,EAAG,EAAA,CAAG,KAAK,CAAA,CAAA,GAAK,KAAA,CAAM,IAAA,EAC7D,CAAA;AAAA,kBAEJ,CAAA,GAAG;AAAA,kCACHD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAOC,OAAAA,CAAO,UAAA,EAAa,gBAAM,KAAA,EAAM;AAAA,iBAAA,EAC/C,CAAA;AAAA,gCACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EAChB,QAAA,EAAA;AAAA,kBAAA,CAAC,4BACAF,IAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAOE,OAAAA,CAAO,UAAA;AAAA,sBACd,OAAO,KAAA,CAAM,IAAA;AAAA,sBACb,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,sBAClC,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,wBAAA,MAAM,OAAA,GAAU,EAAE,MAAA,CAAO,KAAA;AACzB,wBAAA,MAAM,aAAa,cAAA,CAAe,IAAA,CAAK,CAAC,EAAA,KAAO,EAAA,CAAG,OAAO,OAAO,CAAA;AAChE,wBAAA,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAA,EAAI;AAAA,0BAC7B,IAAA,EAAM,OAAA;AAAA,0BACN,GAAI,YAAY,iBAAA,GACZ,EAAE,YAAY,UAAA,CAAW,iBAAA,KACzB;AAAC,yBACN,CAAA;AAAA,sBACH,CAAA;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,qBAChBD,GAAAA,CAAC,YAAe,KAAA,EAAO,CAAA,EAAI,QAAA,EAAA,CAAA,EAAA,EAAd,CAAgB,CAC9B,CAAA;AAAA,wBACA,eAAe,MAAA,GAAS,CAAA,oBACvBA,GAAAA,CAAC,cAAS,KAAA,EAAM,QAAA,EACb,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,qBACnBD,KAAC,QAAA,EAAA,EAAmB,KAAA,EAAO,GAAG,EAAA,EAC3B,QAAA,EAAA;AAAA,0BAAA,EAAA,CAAG,IAAA,GAAO,CAAA,EAAG,EAAA,CAAG,IAAI,CAAA,CAAA,CAAA,GAAM,EAAA;AAAA,0BAAI,EAAA,CAAG;AAAA,yBAAA,EAAA,EADvB,EAAA,CAAG,EAEhB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,mBAEJ;AAAA,kBAED,CAAC,QAAA,IAAY,KAAA,GAAQ,CAAA,oBACpBC,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO,EAAE,GAAGC,OAAAA,CAAO,OAAA,EAAS,GAAI,SAAA,GAAY,EAAC,GAAIA,OAAAA,CAAO,cAAA,EAAgB;AAAA,sBACxE,KAAA,EAAO,YAAY,SAAA,GAAY,6CAAA;AAAA,sBAC/B,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,wBAAA,OAAA,CAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,sBAAG,CAAA;AAAA,sBACnE,QAAA,EAAA;AAAA;AAAA,mBAAC;AAAA,kBAEH,CAAC,QAAA,IAAY,KAAA,GAAQ,KAAK,MAAA,CAAO,MAAA,GAAS,qBACzCD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO,EAAE,GAAGC,OAAAA,CAAO,OAAA,EAAS,GAAI,WAAA,GAAc,EAAC,GAAIA,OAAAA,CAAO,cAAA,EAAgB;AAAA,sBAC1E,KAAA,EAAO,cAAc,WAAA,GAAc,6CAAA;AAAA,sBACnC,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,wBAAA,OAAA,CAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,sBAAG,CAAA;AAAA,sBACnE,QAAA,EAAA;AAAA;AAAA,mBAAC;AAAA,kBAEH,CAAC,4BACAD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAOC,OAAAA,CAAO,OAAA;AAAA,sBACd,KAAA,EAAM,iBAAA;AAAA,sBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,wBAAA,cAAA,CAAe,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAE,CAAA;AAAA,sBAAG,CAAA;AAAA,sBAC3E,QAAA,EAAA;AAAA;AAAA,mBAAC;AAAA,kBAEH,CAAC,4BACAD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAO,EAAE,GAAGC,OAAAA,CAAO,OAAA,EAAS,OAAO,kBAAA,EAAmB;AAAA,sBACtD,KAAA,EAAM,cAAA;AAAA,sBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,wBAAA,WAAA,CAAY,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,EAAE,CAAA;AAAA,sBAAG,CAAA;AAAA,sBACxE,QAAA,EAAA;AAAA;AAAA;AAAC,iBAAA,EAEN;AAAA,eAAA,EACF,CAAA;AAAA,8BAGAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EAChB,QAAA,EAAA;AAAA,gBAAA,CAAC,8BAAcD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,gBAC1D,8BAAcD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,gBACzD,gCAAgBD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,gBAAgB,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,gBAC/D,2BAAWF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,QAAO,QAAA,EAAU,QAAA,EAAA;AAAA,kBAAA,aAAA;AAAA,kBAAY,MAAM,SAAA,CAAW;AAAA,iBAAA,EAAO,CAAA;AAAA,gBAC7E,+BAAeD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,mBAAA,EAAY,CAAA;AAAA,gBAC1D,MAAM,cAAA,oBACLF,KAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,QAAO,SAAA,EAAW,QAAA,EAAA;AAAA,kBAAA,SAAA;AAAA,kBAC1B,OAAA,GAAU,OAAA,CAAQ,KAAA,GAAQ,KAAA,CAAM;AAAA,iBAAA,EACrC;AAAA,eAAA,EAEJ,CAAA;AAAA,cAGC,aAAA,CAAc,SAAS,CAAA,oBACtBF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EACjB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,UAAU,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,gBACnC,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,qBAClBD,GAAAA,CAAC,MAAA,EAAA,EAAiB,KAAA,EAAOC,OAAAA,CAAO,QAAA,EAAW,QAAA,EAAA,KAAA,EAAA,EAAhC,KAAsC,CAClD;AAAA,eAAA,EACH,CAAA;AAAA,cAED,mBAAA,CAAoB,SAAS,CAAA,oBAC5BF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EACjB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,cAAc,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,gBACzC,mBAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,qBACxBD,GAAAA,CAAC,MAAA,EAAA,EAAgB,KAAA,EAAOC,OAAAA,CAAO,YAAA,EAAe,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAArC,CAAA,CAAE,EAAyC,CACvD;AAAA,eAAA,EACH;AAAA;AAAA,WAAA;AAAA,UA3GG,KAAA,CAAM;AAAA,SA6Gb;AAAA,MAEJ,CAAC;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,WAAW,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,QAAQ,MAAA,EAAO;AAAA,EACtE,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,QAAA;AAAA,IACvD,MAAA,EAAQ,MAAA;AAAA,IAAQ,KAAA,EAAO,uBAAA;AAAA,IAAyB,QAAA,EAAU,EAAA;AAAA,IAAI,SAAA,EAAW,QAAA;AAAA,IAAU,OAAA,EAAS;AAAA,GAC9F;AAAA,EACA,WAAA,EAAa,EAAE,OAAA,EAAS,EAAA,EAAI,WAAW,QAAA,EAAU,KAAA,EAAO,uBAAA,EAAyB,QAAA,EAAU,EAAA,EAAG;AAAA,EAC9F,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,eAAA;AAAA,IACvD,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc;AAAA,GACtC;AAAA,EACA,WAAW,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,EAAA,EAAI,OAAO,gBAAA,EAAiB;AAAA,EACpE,SAAS,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,WAAW,CAAA,EAAE;AAAA,EACtE,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACnF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ,WAAA;AAAA,IAAa,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,qBAAA;AAAA,IACtD,MAAA,EAAQ,mCAAA;AAAA,IAAqC,YAAA,EAAc,qBAAA;AAAA,IAAuB,QAAA,EAAU,EAAA;AAAA,IAC5F,KAAA,EAAO,uBAAA;AAAA,IAAyB,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK;AAAA,GAC9E;AAAA,EACA,MAAM,EAAE,IAAA,EAAM,GAAG,SAAA,EAAW,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,EAC/C,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc,qBAAA;AAAA,IAAuB,YAAA,EAAc,CAAA;AAAA,IACzE,MAAA,EAAQ,uBAAA;AAAA,IAAyB,MAAA,EAAQ,SAAA;AAAA,IACzC,UAAA,EAAY,mBAAA;AAAA,IAAqB,OAAA,EAAS,MAAA;AAAA,IAAQ,aAAA,EAAe,QAAA;AAAA,IAAU,GAAA,EAAK;AAAA,GAClF;AAAA,EACA,YAAA,EAAc,EAAE,UAAA,EAAY,yBAAA,EAA2B,QAAQ,oCAAA,EAAqC;AAAA,EACpG,SAAS,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,gBAAgB,eAAA,EAAgB;AAAA,EAClF,QAAA,EAAU,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE;AAAA,EACvE,SAAA,EAAW,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,UAAA,EAAY,CAAA,EAAE;AAAA,EAC1E,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IACzD,OAAA,EAAS,SAAA;AAAA,IAAW,YAAA,EAAc,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,UAAA,EAAY;AAAA,GACpE;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO;AAAA,GAC7C;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,KAAA,EAAO,gBAAA;AAAA,IACtC,QAAA,EAAU,QAAA;AAAA,IAAU,YAAA,EAAc,UAAA;AAAA,IAAY,UAAA,EAAY;AAAA,GAC5D;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IAAI,MAAA,EAAQ,4BAAA;AAAA,IAA8B,YAAA,EAAc,CAAA;AAAA,IAClE,OAAA,EAAS,SAAA;AAAA,IAAW,UAAA,EAAY,kBAAA;AAAA,IAAoB,MAAA,EAAQ,SAAA;AAAA,IAC5D,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,EAAA;AAAA,IAAI,MAAA,EAAQ,EAAA;AAAA,IAAI,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IACnD,MAAA,EAAQ,SAAA;AAAA,IAAW,YAAA,EAAc,CAAA;AAAA,IAAG,QAAA,EAAU,EAAA;AAAA,IAAI,KAAA,EAAO;AAAA,GAC3D;AAAA,EACA,gBAAgB,EAAE,KAAA,EAAO,0BAA0B,MAAA,EAAQ,aAAA,EAAe,SAAS,GAAA,EAAI;AAAA,EACvF,QAAQ,EAAE,OAAA,EAAS,QAAQ,QAAA,EAAU,MAAA,EAAQ,KAAK,CAAA,EAAE;AAAA,EACpD,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,yBAAA;AAAA,IAA2B,KAAA,EAAO,uBAAA;AAAA,IAAyB,YAAA,EAAc,CAAA;AAAA,IAAG,aAAA,EAAe;AAAA,GACzG;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,4BAAA;AAAA,IAA8B,KAAA,EAAO,kBAAA;AAAA,IAAoB,YAAA,EAAc,CAAA;AAAA,IAAG,aAAA,EAAe;AAAA,GACvG;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAAqB,YAAA,EAAc,CAAA;AAAA,IAAG,aAAA,EAAe;AAAA,GAClG;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IAA0B,YAAA,EAAc,CAAA;AAAA,IAAG,aAAA,EAAe;AAAA,GACvG;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAAqB,YAAA,EAAc,CAAA;AAAA,IAAG,aAAA,EAAe;AAAA,GAClG;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IAAG,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACvC,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,qBAAA;AAAA,IAAuB,YAAA,EAAc;AAAA,GAC/E;AAAA,EACA,MAAA,EAAQ,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAE;AAAA,EAC1E,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,GAAA,EAAK,KAAA,EAAO,sBAAA,EAAwB,aAAA,EAAe,WAAA,EAAY;AAAA,EACrG,YAAA,EAAc,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,GAAA,EAAK,KAAA,EAAO,mBAAA,EAAqB,aAAA,EAAe,WAAA,EAAY;AAAA,EACtG,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IAA0B,YAAA,EAAc;AAAA,GACrF;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAAqB,YAAA,EAAc;AAAA;AAElF,CAAA;ACxSO,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,MAAA,EAAQ,eAAc,EAAsB;AAChF,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,SAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,UAAS,GAAI,WAAA,CAAY,OAAO,aAAa,CAAA;AACxE,EAAA,MAAM,MAAA,GAAS,WAAA,EAAa,UAAA,CAAW,EAAA,IAAM,EAAA;AAC7C,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,eAAc,GAAI,eAAA,CAAgB,OAAO,MAAM,CAAA;AAEzE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,QAAAA,CAAiC,EAAE,CAAA;AAG/D,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAChD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAkC,MAAM;AACtE,IAAA,MAAM,UAAmC,EAAC;AAC1C,IAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,MAAA,OAAA,CAAQ,CAAA,CAAE,EAAE,CAAA,GAAI,CAAA,CAAE,IAAA,KAAS,YAAY,KAAA,GAAQ,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,CAAA,GAAI,EAAA;AAAA,IAC3E;AACA,IAAA,OAAO,OAAA;AAAA,EACT,CAAC,CAAA;AAGD,EAAAC,UAAU,MAAM;AACd,IAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACrD,MAAA,KAAA,CAAM,QAAA,EAAS,CAAE,cAAA,CAAe,KAAA,EAAO,KAAK,CAAA;AAAA,IAC9C;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,SAAS,mBAAA,CAAoB,OAAe,KAAA,EAAgB;AAC1D,IAAA,WAAA,CAAY,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,KAAA,EAAM,CAAE,CAAA;AAAA,EACrD;AAEA,EAAA,SAAS,UAAA,GAAa;AAEpB,IAAA,MAAM,YAAoC,EAAC;AAC3C,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,UAAA,GAAa,MAAM,UAAA,CAAW,UAAA,EAAY,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,UAAU,CAAA;AACjF,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,GAAA,GAAM,QAAA,CAAS,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA;AACxC,QAAA,IAAI,QAAQ,MAAA,IAAa,GAAA,KAAQ,QAAQ,GAAA,KAAQ,EAAA,IAAM,QAAQ,KAAA,EAAO;AACpE,UAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAW,UAAA,EAAY,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,UAAU,CAAA;AAC3E,UAAA,SAAA,CAAU,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA,GAAI,MAAM,OAAA,IAAW,qBAAA;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,SAAS,CAAA,EAAG;AACrC,MAAA,SAAA,CAAU,SAAS,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,SAAA,CAAU,EAAE,CAAA;AAGZ,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAG9D,IAAA,KAAA,CAAM,QAAA,EAAS,CAAE,WAAA,CAAY,MAAA,EAAQ,QAAQ,CAAA;AAG7C,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,QAAA,EAAS,CAAE,IAAA;AACjC,IAAA,MAAM,OAAA,GAAU,YAAY,MAAA,EAAQ,OAAA,EAAS,MAAM,QAAA,EAAS,CAAE,cAAc,aAAa,CAAA;AACzF,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAGjE,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,KAAA,CAAM,QAAA,EAAS,CAAE,iBAAA,CAAkB,MAAM,CAAA;AAAA,IAC3C;AAGA,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA;AAC9C,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,KAAA,CAAM,QAAA,EAAS,CAAE,cAAA,CAAe,IAAA,CAAK,WAAW,EAAE,CAAA;AAAA,IACpD,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd;AAAA,EACF;AAEA,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,MAAM,CAAA;AAC/C,IAAA,IAAI,MAAM,KAAA,CAAM,QAAA,GAAW,cAAA,CAAe,IAAA,CAAK,WAAW,EAAE,CAAA;AAAA,EAC9D;AAEA,EAAA,SAAS,aAAA,GAAgB;AACvB,IAAA,KAAA,CAAM,QAAA,EAAS,CAAE,IAAA,CAAK,MAAM,CAAA;AAE5B,IAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACrD,MAAA,KAAA,CAAM,QAAA,EAAS,CAAE,cAAA,CAAe,KAAA,EAAO,KAAK,CAAA;AAAA,IAC9C;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,SAAA,CAAU,EAAE,CAAA;AAAA,EACd;AAGA,EAAA,MAAM,UAAA,GAAa,KAAK,KAAA,CAAM,SAAA;AAAA,IAC5B,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAA,KAAO,aAAa,UAAA,CAAW;AAAA,GACrD;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEJ,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,OAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAU,CAAC,EAAA,KAAO,MAAM,QAAA,EAAS,CAAE,eAAe,EAAE;AAAA;AAAA,SACtD;AAAA,QACC,UAAA,CAAW,MAAA,GAAS,CAAA,oBACnBA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,UAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EAEJ,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,CAAA;AAAA,sBAC5BD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,QAAA,EACjB,QAAA,kBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,UAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,UAAU,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,wBAC9BD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,uBAAA,EAAkB,CAAA;AAAA,wBAChDD,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAOC,OAAAA,CAAO,UAAU,QAAA,EAAA,qEAAA,EAE3B,CAAA;AAAA,wBACAD,IAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,QAAO,UAAA,EAAY,OAAA,EAAS,eAAe,QAAA,EAAA,aAAA,EAE1D;AAAA,OAAA,EACF,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,YAAS,KAAA,EAAc,CAAA;AAAA,oBAGxBD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,OAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAU,CAAC,EAAA,KAAO,MAAM,QAAA,EAAS,CAAE,eAAe,EAAE;AAAA;AAAA,OACtD;AAAA,MACC,UAAA,CAAW,MAAA,GAAS,CAAA,oBACnBA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,UAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EAEJ,CAAA;AAAA,oBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,CAAA;AAAA,oBAG5BD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,QAAA,EACjB,QAAA,kBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,YAAA,EAEjB,QAAA,EAAA;AAAA,sBAAAD,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,aAAA,EACjB,QAAA,kBAAAD,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAGC,QAAO,YAAA,EAAc,KAAA,EAAO,GAAG,QAAQ,CAAA,CAAA,CAAA,IAAO,CAAA,EACjE,CAAA;AAAA,sBAGAD,IAAC,IAAA,EAAA,EAAG,KAAA,EAAOC,QAAO,SAAA,EACf,QAAA,EAAA,WAAA,EAAa,UAAA,CAAW,KAAA,IAAS,EAAA,EACpC,CAAA;AAAA,sBAGAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,iBAChB,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXD,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UAEC,KAAA;AAAA,UACA,KAAA,EAAO,QAAA,CAAS,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA;AAAA,UACnC,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA;AAAA,UACjC,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,YAAA,aAAA,CAAc,KAAA,CAAM,UAAA,CAAW,EAAA,EAAI,GAAG,CAAA;AACtC,YAAA,IAAI,MAAA,CAAO,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA,EAAG;AAC/B,cAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,gBAAA,MAAM,IAAA,GAAO,EAAE,GAAG,IAAA,EAAK;AACvB,gBAAA,OAAO,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA;AAC/B,gBAAA,OAAO,IAAA;AAAA,cACT,CAAC,CAAA;AAAA,YACH;AAAA,UACF;AAAA,SAAA;AAAA,QAbK,MAAM,UAAA,CAAW;AAAA,OAezB,CAAA,EACH,CAAA;AAAA,sBAGAD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EAChB,QAAA,EAAA;AAAA,QAAA,UAAA,GAAa,CAAA,oBACZD,GAAAA,CAAC,QAAA,EAAA,EAAO,OAAOC,OAAAA,CAAO,YAAA,EAAc,OAAA,EAAS,UAAA,EAAY,QAAA,EAAA,wBAAA,EAEzD,CAAA;AAAA,wBAEFD,GAAAA,CAAC,QAAA,EAAA,EAAO,OAAO,EAAE,GAAGC,QAAO,UAAA,EAAY,UAAA,EAAY,QAAO,EAAG,OAAA,EAAS,YACnE,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,OAAO,MAAM,CAAA,GAAI,qBAAgB,iBAAA,EACrD;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAYA,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,UAAA,EAAY,UAAS,EAAkB;AAC/D,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,GAAG,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,KAAA,EAAM,CAAE,CAAA;AAAA,IAClD,GAAG,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,CAAE;AAAA,GACzD;AAEA,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,QAAA,EACjB,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,WAAA,EAAM,CAAA;AAAA,IACvC,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS;AACtB,MAAA,MAAM,SAAA,GAAY,CAAC,IAAA,CAAK,MAAA;AACxB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAA,KAAO,IAAA,CAAK,UAAA,CAAW,EAAE,CAAA;AACjF,MAAA,IAAI,MAAA,GAAqD,QAAA;AACzD,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,IAAI,MAAA,GAAS,YAAY,MAAA,GAAS,MAAA;AAAA,aAAA,IACzB,MAAA,KAAW,YAAY,MAAA,GAAS,SAAA;AAAA,aACpC,MAAA,GAAS,UAAA;AAAA,MAChB;AAEA,MAAA,uBACEF,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO;AAAA,YACL,GAAGE,OAAAA,CAAO,QAAA;AAAA,YACV,GAAI,MAAA,KAAW,SAAA,GAAYA,OAAAA,CAAO,kBAAkB,EAAC;AAAA,YACrD,GAAI,MAAA,KAAW,QAAA,GAAWA,OAAAA,CAAO,iBAAiB,EAAC;AAAA,YACnD,MAAA,EAAQ,MAAA,KAAW,MAAA,GAAS,SAAA,GAAY;AAAA,WAC1C;AAAA,UACA,SAAS,MAAM;AACb,YAAA,IAAI,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,IAAA,CAAK,WAAW,EAAE,CAAA;AAAA,UACpD,CAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,UAAA,EACjB,QAAA,EAAA;AAAA,cAAA,MAAA,KAAW,MAAA,IAAU,QAAA;AAAA,cACrB,WAAW,SAAA,IAAa,QAAA;AAAA,cACxB,WAAW,UAAA,IAAc,QAAA;AAAA,cACzB,WAAW,QAAA,IAAY;AAAA,aAAA,EAC1B,CAAA;AAAA,4BACAD,IAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,QAAO,QAAA,EAAW,QAAA,EAAA,IAAA,CAAK,WAAW,KAAA,EAAM,CAAA;AAAA,YACpD,MAAA,KAAW,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,aAAa,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QAlB1D,KAAK,UAAA,CAAW;AAAA,OAmBvB;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAcA,SAAS,YAAA,CAAa,EAAE,UAAA,EAAY,QAAA,EAAU,UAAS,EAAsB;AAC3E,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,cAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAK,QAAA,EAAA,2BAAA,EAAoB,CAAA;AAAA,sBAC1BA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,aAAA,EAAW;AAAA,KAAA,EAChD,CAAA;AAAA,IACC,UAAA,CAAW,IAAI,CAAC,CAAA,qBACfF,IAAAA,CAAC,KAAA,EAAA,EAAe,KAAA,EAAOE,OAAAA,CAAO,UAAA,EAC5B,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,YAAA,EACjB,QAAA,EAAA;AAAA,wBAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,SAAA,EAAW,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,CAAA,IAAA,EAAO,EAAE,EAAE,CAAA;AAAA,SAAA,EAAG,CAAA;AAAA,QAC9C,CAAA,CAAE,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,mBAAmB,QAAA,EAAA,GAAA,EAAC;AAAA,OAAA,EACzD,CAAA;AAAA,MACC,CAAA,CAAE,SAAS,SAAA,mBACVF,KAAC,OAAA,EAAA,EAAM,KAAA,EAAOE,QAAO,YAAA,EACnB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,UAAA;AAAA,YACL,OAAA,EAAS,OAAA,CAAQ,QAAA,CAAS,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,YAC/B,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,EAAE,EAAA,EAAI,CAAA,CAAE,OAAO,OAAO;AAAA;AAAA,SAClD;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,sBAAA,IACjC,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,EAAE,CAAC,CAAA,EACxB;AAAA,OAAA,EACF,oBAEAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,OAAOC,OAAAA,CAAO,SAAA;AAAA,UACd,IAAA,EAAM,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,QAAA,GAAW,MAAA;AAAA,UACvC,OAAO,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,EAAE,KAAK,EAAE,CAAA;AAAA,UAClC,aAAa,CAAA,CAAE,KAAA;AAAA,UACf,UAAU,CAAC,CAAA,KACT,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,MAAA,CAAO,EAAE,MAAA,CAAO,KAAK,CAAA,GAAI,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA;AAEhF,KAAA,EAAA,EAzBM,CAAA,CAAE,EA2BZ,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;AAaA,SAAS,cAAc,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,UAAS,EAAuB;AAC5E,EAAA,MAAM,EAAE,YAAW,GAAI,KAAA;AACvB,EAAA,MAAM,OAAA,GAA0B,KAAA,CAAM,eAAA,IAAmB,UAAA,CAAW,WAAW,EAAC;AAChF,EAAA,MAAMG,WAAAA,GAAa,EAAE,GAAGH,OAAAA,CAAO,KAAA,EAAO,GAAI,KAAA,GAAQA,OAAAA,CAAO,UAAA,GAAa,EAAC,EAAG;AAE1E,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,UAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOE,OAAAA,CAAO,KAAA,EAClB,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,KAAA;AAAA,MACX,UAAA,CAAW,UAAA,EAAY,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,UAAU,CAAA,oBACvDD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,UAAU,QAAA,EAAA,IAAA,EAAE;AAAA,KAAA,EAEpC,CAAA;AAAA,IAAA,CAEE,UAAA,CAAW,SAAS,MAAA,IACpB,UAAA,CAAW,SAAS,OAAA,IACpB,UAAA,CAAW,SAAS,KAAA,IACpB,UAAA,CAAW,SAAS,UAAA,IACpB,UAAA,CAAW,SAAS,KAAA,IACpB,UAAA,CAAW,SAAS,QAAA,IACpB,UAAA,CAAW,IAAA,KAAS,MAAA,qBACpBD,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,KAAA,EAAOI,WAAAA;AAAA,QACP,OAAQ,KAAA,IAAoB,EAAA;AAAA,QAC5B,aAAa,UAAA,CAAW,WAAA;AAAA,QACxB,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA,KAC1C;AAAA,IAGD,UAAA,CAAW,IAAA,KAAS,UAAA,oBACnBJ,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAO,EAAE,GAAGI,aAAY,SAAA,EAAW,EAAA,EAAI,QAAQ,UAAA,EAAW;AAAA,QAC1D,OAAQ,KAAA,IAAoB,EAAA;AAAA,QAC5B,aAAa,UAAA,CAAW,WAAA;AAAA,QACxB,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA,KAC1C;AAAA,IAGD,UAAA,CAAW,IAAA,KAAS,QAAA,oBACnBL,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAOK,WAAAA;AAAA,QACP,OAAQ,KAAA,IAAoB,EAAA;AAAA,QAC5B,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,uBAAA,EAAW,CAAA;AAAA,UAC3B,QAAQ,GAAA,CAAI,CAAC,wBACZA,GAAAA,CAAC,YAA+B,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,KAAK,GACpD,QAAA,EAAA,GAAA,CAAI,KAAA,EAAA,EADM,OAAO,GAAA,CAAI,KAAK,CAE7B,CACD;AAAA;AAAA;AAAA,KACH;AAAA,IAGD,UAAA,CAAW,IAAA,KAAS,aAAA,oBACnBA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,GAAGI,WAAAA,EAAY,WAAW,EAAA,EAAG;AAAA,QACtC,QAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAQ,SAAsB,EAAC;AAAA,QAC/B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,UAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA;AACxE,UAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,QACnB,CAAA;AAAA,QAEC,kBAAQ,GAAA,CAAI,CAAC,wBACZJ,GAAAA,CAAC,YAA+B,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,KAAK,GACpD,QAAA,EAAA,GAAA,CAAI,KAAA,EAAA,EADM,OAAO,GAAA,CAAI,KAAK,CAE7B,CACD;AAAA;AAAA,KACH;AAAA,IAGD,UAAA,CAAW,IAAA,KAAS,OAAA,oBACnBA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,CAAA,IAC1D,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACZD,IAAAA,CAAC,OAAA,EAAA,EAA8B,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAG,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,IAAG,EACrH,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,MAAM,UAAA,CAAW,EAAA;AAAA,UACjB,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA;AAAA,UACvB,OAAA,EAAS,KAAA,KAAU,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA;AAAA,UACnC,UAAU,MAAM,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,KAAK,CAAC;AAAA;AAAA,OAC5C;AAAA,MACC,GAAA,CAAI;AAAA,KAAA,EAAA,EARK,MAAA,CAAO,GAAA,CAAI,KAAK,CAS5B,CACD,CAAA,EACH,CAAA;AAAA,IAGD,WAAW,IAAA,KAAS,UAAA,oBACnBD,IAAAA,CAAC,OAAA,EAAA,EAAM,OAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,UAAU,GAAA,EAAK,CAAA,EAAG,QAAQ,SAAA,EAAW,QAAA,EAAU,IAAG,EAC7F,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,UACtB,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,OAAO;AAAA;AAAA,OAC5C;AAAA,MACC,UAAA,CAAW,eAAe,UAAA,CAAW;AAAA,KAAA,EACxC,CAAA;AAAA,IAGD,yBAASA,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,UAAW,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChD,CAAA;AAEJ;AAMA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,CAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,WAAA,EAAa,4BAAA;AAAA,IACb,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,kBAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,MAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ,CAAA;AAAA,IACR,UAAA,EAAY,kBAAA;AAAA,IACZ,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,MAAA,EAAQ,MAAA;AAAA,IACR,UAAA,EAAY,mBAAA;AAAA,IACZ,YAAA,EAAc,CAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,gBAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IACV,OAAA,EAAS,UAAA;AAAA,IACT,MAAA,EAAQ,4BAAA;AAAA,IACR,YAAA,EAAc,kBAAA;AAAA,IACd,UAAA,EAAY,kBAAA;AAAA,IACZ,KAAA,EAAO,gBAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,UAAA,EAAY;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,kBAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,OAAA,EAAS,UAAA;AAAA,IACT,UAAA,EAAY,mBAAA;AAAA,IACZ,KAAA,EAAO,kBAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,YAAA,EAAc,kBAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,OAAA,EAAS,UAAA;AAAA,IACT,UAAA,EAAY,aAAA;AAAA,IACZ,KAAA,EAAO,sBAAA;AAAA,IACP,MAAA,EAAQ,4BAAA;AAAA,IACR,YAAA,EAAc,kBAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,WAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,sBAAA;AAAA,IACP,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,iDAAA;AAAA,IACZ,KAAA,EAAO,mBAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IACP,UAAA,EAAY,CAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,QAAA;AAAA,IACV,YAAA,EAAc,UAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,UAAA,EAAY,kBAAA;AAAA,IACZ,KAAA,EAAO,sBAAA;AAAA,IACP,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,4BAAA;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,sBAAA;AAAA,IACP,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,mBAAA;AAAA,IACP,aAAA,EAAe,MAAA;AAAA,IACf,UAAA,EAAY,sBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK;AAAA,GACP;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY,4BAAA;AAAA,IACZ,KAAA,EAAO,kBAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,kCAAA;AAAA,IACR,YAAA,EAAc,kBAAA;AAAA,IACd,UAAA,EAAY,kBAAA;AAAA,IACZ,KAAA,EAAO,gBAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACV;AAAA;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK,EAAA;AAAA,IACL,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY,+CAAA;AAAA,IACZ,KAAA,EAAO,4BAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,SAAA,EAAW;AAAA,IACT,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,sBAAA;AAAA,IACP,MAAA,EAAQ;AAAA;AAEZ,CAAA;AC5sBO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAA,EAAgB,UAAA,EAAY,gBAAA,KAAqB,eAAA,EAAgB;AACjF,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIC,SAAS,KAAK,CAAA;AAElE,EAAA,MAAM,IAAA,GAAO,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,cAAc,CAAA;AAE7D,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,uBACEF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,4CAAA,EAE1B,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,IAAA,CAAK,WAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,WAAA,EAAa,KAAA,CAAM,MAAA,IAAU,CAAA;AAEpD,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,MAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,aAAa,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC3CF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EAAQ,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,QAAK,IAAA,CAAK;AAAA,OAAA,EAAG;AAAA,KAAA,EAC1C,CAAA;AAAA,oBAEAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,IAAA,EAEjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACjCD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,KAAA;AAAA,YACd,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,WAAA,EAAY,YAAA;AAAA,YACZ,QAAA;AAAA,YACA,QAAA,EAAU,QAAA,GAAW,MAAA,GAAY,CAAC,CAAA,KAAM,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,OAAO;AAAA;AAAA;AACvF,OAAA,EACF,CAAA;AAAA,sBAGAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,KAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,wBAC/BD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAOC,OAAAA,CAAO,KAAA;AAAA,YACd,OAAO,IAAA,CAAK,GAAA;AAAA,YACZ,WAAA,EAAY,uBAAA;AAAA,YACZ,QAAA;AAAA,YACA,QAAA,EAAU,QAAA,GAAW,MAAA,GAAY,CAAC,CAAA,KAAM,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,EAAE,GAAA,EAAK,CAAA,CAAE,MAAA,CAAO,OAAO;AAAA;AAAA,SACrF;AAAA,wBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,IAAA,EAAM,QAAA,EAAA;AAAA,UAAA,WAAA;AAAA,UAAU,WAAA;AAAA,UAAY;AAAA,SAAA,EAAa;AAAA,OAAA,EAC9D,CAAA;AAAA,sBAGAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,QAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,UAAA;AAAA,YACL,EAAA,EAAI,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,YACrB,OAAA,EAAS,CAAC,CAAC,IAAA,CAAK,oBAAA;AAAA,YAChB,QAAA,EAAU,QAAA;AAAA,YACV,QAAA,EAAU,QAAA,GAAW,MAAA,GAAY,CAAC,MAChC,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,EAAE,oBAAA,EAAsB,CAAA,CAAE,MAAA,CAAO,OAAA,IAAW,QAAW;AAAA;AAAA,SAE/E;AAAA,wBACAA,GAAAA,CAAC,OAAA,EAAA,EAAM,OAAA,EAAS,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,UAAA,EAAY,QAAA,EAAA,uBAAA,EAE/D;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,QAAO,OAAA,EAAS,CAAA;AAAA,sBAG5BF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,YAAA,EACjB,QAAA,EAAA;AAAA,wBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,aAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,UAC7C,+BACCF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,4BAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,cAAA,EACjB,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,cAAU,OAAA;AAAA,cAAM,SAAA,KAAc,IAAI,GAAA,GAAM,EAAA;AAAA,cAAG,QAAA;AAAA,cAAI,IAAA,CAAK,WAAA,CAAa,UAAA,CAAW,WAAA;AAAY,aAAA,EAC3F,CAAA;AAAA,4BACAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,qBAAA,EAEnC;AAAA,WAAA,EACF,oBAEAD,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,eAAe,QAAA,EAAA,gBAAA,EAAc;AAAA,SAAA,EAEpD,CAAA;AAAA,QACC,CAAC,QAAA,oBACAF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,gBAAA,EACjB,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,gBAAA;AAAA,cACd,OAAA,EAAS,MAAM,qBAAA,CAAsB,IAAI,CAAA;AAAA,cAExC,yBAAe,MAAA,GAAS;AAAA;AAAA,WAC3B;AAAA,UACC,gCACCD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,iBAAA;AAAA,cACd,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAA,CAAK,IAAI,MAAS,CAAA;AAAA,cACnD,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EAEJ;AAAA,OAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,sCACCF,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,kBAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA;AAAA,QACjC,OAAA,EAAS,MAAM,qBAAA,CAAsB,KAAK,CAAA;AAAA,QAC1C,KAAA,EAAO,GAAA;AAAA,QAEP,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,kEAAA,EAE5B,CAAA;AAAA,0BACAD,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,OAAO,IAAA,CAAK,WAAA;AAAA,cACZ,UAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAC;AAAA;AAAA,WAC9C;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,aACjB,QAAA,kBAAAD,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAOC,OAAAA,CAAO,aAAA;AAAA,cACd,OAAA,EAAS,MAAM,qBAAA,CAAsB,KAAK,CAAA;AAAA,cAC3C,QAAA,EAAA;AAAA;AAAA,WAED,EACF;AAAA;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,SAAA,EAAW,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAS;AAAA,EAC1F,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,QAAA;AAAA,IACvD,MAAA,EAAQ,MAAA;AAAA,IAAQ,KAAA,EAAO,uBAAA;AAAA,IAAyB,QAAA,EAAU,EAAA;AAAA,IAAI,SAAA,EAAW,QAAA;AAAA,IAAU,OAAA,EAAS;AAAA,GAC9F;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc,4BAAA;AAAA,IACpC,OAAA,EAAS,MAAA;AAAA,IAAQ,cAAA,EAAgB,eAAA;AAAA,IAAiB,UAAA,EAAY;AAAA,GAChE;AAAA,EACA,aAAa,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,EAAA,EAAI,OAAO,gBAAA,EAAiB;AAAA,EACtE,QAAQ,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,YAAY,WAAA,EAAY;AAAA,EAChF,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAS,EAAA,EAAI,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,EAAA,EAAG;AAAA,EACnG,OAAO,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC1D,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,KAAA,EAAO,sBAAA,EAAwB,aAAA,EAAe,WAAA,EAAa,aAAA,EAAe,QAAA,EAAS;AAAA,EAC3H,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IAAW,MAAA,EAAQ,kCAAA;AAAA,IAC1C,YAAA,EAAc,kBAAA;AAAA,IAAoB,OAAA,EAAS,MAAA;AAAA,IAC3C,UAAA,EAAY,kBAAA;AAAA,IAAoB,KAAA,EAAO;AAAA,GACzC;AAAA,EACA,IAAA,EAAM,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,uBAAA,EAAwB;AAAA,EACrD,UAAU,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAC1D,UAAA,EAAY,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,0BAAA,EAA2B;AAAA,EAC9D,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,EAAG,YAAY,kBAAA,EAAmB;AAAA,EACrD,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,YAAA;AAAA,IAAc,cAAA,EAAgB,eAAA;AAAA,IAAiB,GAAA,EAAK;AAAA,GACnF;AAAA,EACA,aAAA,EAAe,EAAE,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,EAC3E,kBAAkB,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EAClE,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAC1E,OAAA,EAAS,SAAA;AAAA,IAAW,YAAA,EAAc;AAAA,GACpC;AAAA,EACA,aAAA,EAAe,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,uBAAA,EAAwB;AAAA,EAC9D,eAAe,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,uBAAA,EAAyB,WAAW,QAAA,EAAS;AAAA,EACnF,gBAAA,EAAkB,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,UAAA,EAAY,YAAA,EAAc,SAAA,EAAW,EAAA,EAAG;AAAA,EACpG,gBAAA,EAAkB;AAAA,IAChB,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACnF;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,4BAAA;AAAA,IAA8B,KAAA,EAAO,kBAAA;AAAA,IACpF,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ;AAAA,GAC5D;AAAA,EACA,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,sBAAA,EAAwB,YAAA,EAAc,EAAA,EAAI,SAAA,EAAW,CAAA,EAAE;AAAA,EACzF,aAAa,EAAE,SAAA,EAAW,IAAI,OAAA,EAAS,MAAA,EAAQ,gBAAgB,UAAA,EAAW;AAAA,EAC1E,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,qBAAA;AAAA,IAAuB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA;AAExF,CAAA;ACtLO,SAASI,SAAAA,GAAW;AACzB,EAAA,MAAM,EAAE,QAAQ,cAAA,EAAgB,OAAA,EAAS,YAAY,aAAA,EAAe,UAAA,EAAY,YAAA,EAAa,GAC3F,eAAA,EAAgB;AAClB,EAAA,MAAM,WAAW,kBAAA,EAAmB;AAEpC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIH,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,EAAA,MAAM,IAAA,GAAO,wBAAwB,MAAM,CAAA;AAE3C,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAmB,OAAA,KAAoB;AACtD,IAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,EAAO,IAAA,EAAM,WAAW,OAAO,CAAA;AACzD,IAAA,IAAI,CAAC,MAAM,KAAA,EAAO;AAChB,MAAA,YAAA,CAAa,KAAA,CAAM,UAAU,cAAc,CAAA;AAC3C,MAAA,UAAA,CAAW,MAAM,YAAA,CAAa,IAAI,CAAA,EAAG,GAAI,CAAA;AACzC,MAAA;AAAA,IACF;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,uBACEH,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,SAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,MAAA,EACjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOE,OAAAA,CAAO,KAAA,EAAO,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAQ,KAAA,CAAM,MAAA;AAAA,QAAO;AAAA,OAAA,EAAC,CAAA;AAAA,MAChD,CAAC,QAAA,oBACAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,OAAAA,CAAO,MAAA,EAAQ,OAAA,EAAS,MAAM,OAAA,EAAQ,EAAG,QAAA,EAAA,YAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,IAGC,6BACCF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,WAAA,EACjB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,WAAW,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,MAC/B;AAAA,KAAA,EACH,CAAA;AAAA,oBAGFF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,IAAA,EAChB,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,MAAA,KAAW,qBAChBD,GAAAA,CAAC,SAAI,KAAA,EAAOC,OAAAA,CAAO,OAAO,QAAA,EAAA,0CAAA,EAAwC,CAAA;AAAA,MAGnE,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,QAAA,MAAM,UAAA,GAAa,KAAK,EAAA,KAAO,cAAA;AAC/B,QAAA,MAAM,YAAA,GAAe,CAAC,CAAC,IAAA,CAAK,WAAA;AAC5B,QAAA,MAAM,SAAA,GAAY,uBAAA,CAAwB,IAAA,CAAK,EAAA,EAAI,MAAM,MAAM,CAAA;AAE/D,QAAA,MAAM,SAAA,GACJ,QAAQ,CAAA,IAAK,WAAA,CAAY,OAAO,IAAA,EAAM,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA;AAC1D,QAAA,MAAM,WAAA,GACJ,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,IACvB,WAAA,CAAY,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA;AAE7C,QAAA,MAAM,aAAa,KAAA,CAAM,MAAA;AAAA,UAAO,CAAC,CAAA,KAAA,CAC9B,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA,oBAAK,IAAI,GAAA,EAAI,EAAG,GAAA,CAAI,IAAA,CAAK,EAAE;AAAA,SAC3C;AAEA,QAAA,uBACEF,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,GAAGE,OAAAA,CAAO,IAAA;AAAA,cACV,GAAI,UAAA,GAAaA,OAAAA,CAAO,YAAA,GAAe;AAAC,aAC1C;AAAA,YACA,OAAA,EAAS,MAAM,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,YAEjC,QAAA,EAAA;AAAA,8BAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,QAAA,EACjB,QAAA,EAAA;AAAA,gCAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,OAAAA,CAAO,QAAA,EACjB,QAAA,EAAA;AAAA,kCAAAD,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAAY,kBAAQ,CAAA,EAAE,CAAA;AAAA,kCACzCF,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,QAAA,EAAU,GAAE,EACxB,QAAA,EAAA;AAAA,oCAAAC,IAAC,KAAA,EAAA,EAAI,KAAA,EAAOC,OAAAA,CAAO,SAAA,EAAY,eAAK,KAAA,EAAM,CAAA;AAAA,oCAC1CF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,QAAA,EAChB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,sBAAO,QAAA;AAAA,sBAAO,IAAA,CAAK,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,sBAC3D,gCACCD,GAAAA,CAAC,UAAK,KAAA,EAAOC,OAAAA,CAAO,gBAAgB,QAAA,EAAA,aAAA,EAAW;AAAA,qBAAA,EAEnD;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF,CAAA;AAAA,gBAEC,CAAC,QAAA,oBACAF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,WAAA,EAChB,QAAA,EAAA;AAAA,kBAAA,KAAA,GAAQ,qBACPD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,GAAGC,OAAAA,CAAO,OAAA;AAAA,wBACV,GAAI,SAAA,GAAY,EAAC,GAAIA,OAAAA,CAAO;AAAA,uBAC9B;AAAA,sBACA,KAAA,EACE,YACI,SAAA,GACA,CAAA,8CAAA,CAAA;AAAA,sBAEN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,OAAA,CAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,sBAC1B,CAAA;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kBAED,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,oBACtBD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,GAAGC,OAAAA,CAAO,OAAA;AAAA,wBACV,GAAI,WAAA,GAAc,EAAC,GAAIA,OAAAA,CAAO;AAAA,uBAChC;AAAA,sBACA,KAAA,EACE,cACI,WAAA,GACA,CAAA,gDAAA,CAAA;AAAA,sBAEN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,OAAA,CAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,sBAC1B,CAAA;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCAEFD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAOC,OAAAA,CAAO,OAAA;AAAA,sBACd,KAAA,EAAM,gBAAA;AAAA,sBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,aAAA,CAAc,KAAK,EAAE,CAAA;AAAA,sBACvB,CAAA;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCACAD,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAO,EAAE,GAAGC,QAAO,OAAA,EAAS,GAAGA,QAAO,SAAA,EAAU;AAAA,sBAChD,KAAA,EAAM,aAAA;AAAA,sBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAAA,sBACpB,CAAA;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA;AAED,iBAAA,EACF;AAAA,eAAA,EAEJ,CAAA;AAAA,cAGC,SAAA,CAAU,SAAS,CAAA,oBAClBF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EACjB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,UAAU,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,gBACnC,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,qBACdD,GAAAA,CAAC,MAAA,EAAA,EAAiB,KAAA,EAAOC,OAAAA,CAAO,QAAA,EAAW,QAAA,EAAA,KAAA,EAAA,EAAhC,KAAsC,CAClD;AAAA,eAAA,EACH,CAAA;AAAA,cAED,UAAA,CAAW,SAAS,CAAA,oBACnBF,KAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAO,MAAA,EACjB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,OAAAA,CAAO,cAAc,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,gBACzC,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,qBACfD,GAAAA,CAAC,MAAA,EAAA,EAAgB,KAAA,EAAOC,OAAAA,CAAO,YAAA,EAAe,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAArC,CAAA,CAAE,EAAyC,CACvD;AAAA,eAAA,EACH;AAAA;AAAA,WAAA;AAAA,UApGG,IAAA,CAAK;AAAA,SAsGZ;AAAA,MAEJ,CAAC;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,OAAAA,GAA8C;AAAA,EAClD,WAAW,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,QAAQ,MAAA,EAAO;AAAA,EACtE,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,eAAA;AAAA,IACvD,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc;AAAA,GACtC;AAAA,EACA,OAAO,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,EAAA,EAAI,OAAO,0BAAA,EAA2B;AAAA,EAC1E,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,mBAAA;AAAA,IAAqB,KAAA,EAAO,kBAAA;AAAA,IAC3E,MAAA,EAAQ,MAAA;AAAA,IAAQ,YAAA,EAAc,kBAAA;AAAA,IAAoB,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACnF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ,WAAA;AAAA,IAAa,OAAA,EAAS,UAAA;AAAA,IAAY,UAAA,EAAY,qBAAA;AAAA,IACtD,MAAA,EAAQ,mCAAA;AAAA,IAAqC,YAAA,EAAc,qBAAA;AAAA,IAAuB,QAAA,EAAU,EAAA;AAAA,IAC5F,KAAA,EAAO,uBAAA;AAAA,IAAyB,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK;AAAA,GAC9E;AAAA,EACA,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAG;AAAA,EAC1B,MAAM,EAAE,IAAA,EAAM,GAAG,SAAA,EAAW,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,EAC/C,KAAA,EAAO,EAAE,OAAA,EAAS,EAAA,EAAI,WAAW,QAAA,EAAU,KAAA,EAAO,uBAAA,EAAyB,QAAA,EAAU,EAAA,EAAG;AAAA,EACxF,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,WAAA;AAAA,IAAa,YAAA,EAAc,qBAAA;AAAA,IAAuB,YAAA,EAAc,CAAA;AAAA,IACzE,MAAA,EAAQ,uBAAA;AAAA,IAAyB,MAAA,EAAQ,SAAA;AAAA,IACzC,UAAA,EAAY,mBAAA;AAAA,IAAqB,UAAA,EAAY,UAAA;AAAA,IAC7C,OAAA,EAAS,MAAA;AAAA,IAAQ,aAAA,EAAe,QAAA;AAAA,IAAU,GAAA,EAAK;AAAA,GACjD;AAAA,EACA,YAAA,EAAc,EAAE,UAAA,EAAY,yBAAA,EAA2B,QAAQ,oCAAA,EAAqC;AAAA,EACpG,UAAU,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,gBAAgB,eAAA,EAAgB;AAAA,EACnF,QAAA,EAAU,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,EAAA,EAAI,QAAA,EAAU,CAAA,EAAG,IAAA,EAAM,CAAA,EAAE;AAAA,EACjF,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,EAAA;AAAA,IAAI,MAAA,EAAQ,EAAA;AAAA,IAAI,YAAA,EAAc,KAAA;AAAA,IAAO,UAAA,EAAY,kBAAA;AAAA,IACxD,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,QAAA;AAAA,IACvD,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,KAAA,EAAO,sBAAA;AAAA,IAAwB,UAAA,EAAY;AAAA,GAC5E;AAAA,EACA,WAAW,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,GAAA,EAAK,OAAO,gBAAA,EAAiB;AAAA,EACpE,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IAAI,KAAA,EAAO,uBAAA;AAAA,IAAyB,OAAA,EAAS,MAAA;AAAA,IACvD,UAAA,EAAY,QAAA;AAAA,IAAU,GAAA,EAAK,CAAA;AAAA,IAAG,SAAA,EAAW;AAAA,GAC3C;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IACzD,OAAA,EAAS,SAAA;AAAA,IAAW,YAAA,EAAc,CAAA;AAAA,IAAG,UAAA,EAAY;AAAA,GACnD;AAAA,EACA,aAAa,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,CAAA,EAAG,YAAY,CAAA,EAAE;AAAA,EACtD,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,EAAA;AAAA,IAAI,MAAA,EAAQ,EAAA;AAAA,IAAI,MAAA,EAAQ,MAAA;AAAA,IAAQ,UAAA,EAAY,aAAA;AAAA,IACnD,MAAA,EAAQ,SAAA;AAAA,IAAW,YAAA,EAAc,CAAA;AAAA,IAAG,QAAA,EAAU,EAAA;AAAA,IAAI,KAAA,EAAO,uBAAA;AAAA,IACzD,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB;AAAA,GACzD;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,wBAAA;AAAA,IAA0B,MAAA,EAAQ,aAAA;AAAA,IAAe,OAAA,EAAS;AAAA,GACnE;AAAA,EACA,SAAA,EAAW,EAAE,KAAA,EAAO,kBAAA,EAAmB;AAAA,EACvC,MAAA,EAAQ,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAE;AAAA,EAC1E,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,GAAA,EAAK,KAAA,EAAO,sBAAA,EAAwB,aAAA,EAAe,WAAA,EAAY;AAAA,EACrG,YAAA,EAAc,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,GAAA,EAAK,KAAA,EAAO,mBAAA,EAAqB,aAAA,EAAe,WAAA,EAAY;AAAA,EACtG,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,wBAAA;AAAA,IAA0B,YAAA,EAAc;AAAA,GACrF;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,OAAA,EAAS,SAAA;AAAA,IACxC,UAAA,EAAY,sBAAA;AAAA,IAAwB,KAAA,EAAO,mBAAA;AAAA,IAAqB,YAAA,EAAc;AAAA;AAElF,CAAA;AC3OO,SAAS,QAAQ,EAAE,MAAA,EAAQ,aAAa,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAiB;AACzF,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,WAAA,KAAgB,eAAA,EAAgB;AAEzD,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,MAAM,CAAC,CAAA;AAC3C,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,kBAAA,EAAoB,CAAA;AAC1D,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,CAAA,EAAG,MAAA,CAAO,EAAE,CAAA,cAAA,CAAA;AACzB,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,IAAA,KAAA,CAAM,IAAA,GAAO,MAAA;AACb,IAAA,KAAA,CAAM,MAAA,GAAS,OAAA;AACf,IAAA,KAAA,CAAM,QAAA,GAAW,CAAC,CAAA,KAAM;AACtB,MAAA,MAAM,IAAA,GAAQ,CAAA,CAAE,MAAA,CAA4B,KAAA,GAAQ,CAAC,CAAA;AACrD,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,MAAA,MAAA,CAAO,MAAA,GAAS,CAAC,EAAA,KAAO;AACtB,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,QAAQ,MAAgB,CAAA;AACrD,UAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,UAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,YAAA,KAAA,CAAM,CAAA;;AAAA,EAAsB,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAACK,EAAAA,KAAM,CAAA,OAAA,EAAKA,EAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAC3E,YAAA;AAAA,UACF;AACA,UAAA,eAAA,CAAgB,QAAA,EAAS,CAAE,UAAA,CAAW,MAAM,CAAA;AAAA,QAC9C,CAAA,CAAA,MAAQ;AACN,UAAA,KAAA,CAAM,0CAAqC,CAAA;AAAA,QAC7C;AAAA,MACF,CAAA;AACA,MAAA,MAAA,CAAO,WAAW,IAAI,CAAA;AAAA,IACxB,CAAA;AACA,IAAA,KAAA,CAAM,KAAA,EAAM;AAAA,EACd,CAAA;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,uBACEP,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,SAAO,OAAA,EACjB,QAAA,EAAA;AAAA,sBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAAA,CAAO,IAAA,EACjB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,QAAAA,CAAO,MAAM,QAAA,EAAA,iBAAA,EAAU,CAAA;AAAA,wBACpCD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,QAAAA,CAAO,WAAW,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,wBAChCD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,GAAGC,SAAO,GAAA,EAAK,GAAGA,SAAO,OAAA,EAAQ;AAAA,YAC1C,OAAA,EAAS,MAAA;AAAA,YACV,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,sBACAD,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAOC,QAAAA,CAAO,KAAA,EACjB,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,EAAE,QAAA,EAAU,IAAI,KAAA,EAAO,sBAAA,EAAwB,WAAW,QAAA,EAAS,EAAG,4BAEnF,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,SAAO,OAAA,EACjB,QAAA,EAAA;AAAA,oBAAAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,QAAAA,CAAO,IAAA,EAChB,QAAA,EAAA;AAAA,MAAA,CAAC,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAOC,QAAAA,CAAO,MAAM,QAAA,EAAA,iBAAA,EAAU,CAAA;AAAA,MACjD,CAAC,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAOC,QAAAA,CAAO,WAAW,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,sBAC9CD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,GAAGC,QAAAA,CAAO,WAAA;AAAA,YACV,GAAI,WAAW,EAAE,QAAA,EAAU,KAAK,QAAA,EAAU,EAAA,KAAO;AAAC,WACpD;AAAA,UACA,OAAO,MAAA,CAAO,IAAA;AAAA,UACd,WAAA,EAAY,cAAA;AAAA,UACZ,UAAU,CAAC,CAAA,KACT,eAAA,CAAgB,QAAA,CAAS,CAAC,CAAA,MAAO;AAAA,YAC/B,MAAA,EAAQ,EAAE,GAAG,CAAA,CAAE,QAAQ,IAAA,EAAM,CAAA,CAAE,OAAO,KAAA,EAAM;AAAA,YAC5C,OAAA,EAAS;AAAA,WACX,CAAE;AAAA;AAAA,OAEN;AAAA,MACC,OAAA,oBAAWD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAOC,QAAAA,CAAO,QAAA,EAAU,OAAM,iBAAA,EAAkB;AAAA,KAAA,EACpE,CAAA;AAAA,oBAEAF,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAOE,SAAO,KAAA,EAChB,QAAA,EAAA;AAAA,MAAA,QAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAOC,QAAAA,CAAO,eAAe,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,MAE7C,CAAC,YAAY,MAAA,oBACZD,IAAC,QAAA,EAAA,EAAO,KAAA,EAAO,EAAE,GAAGC,QAAAA,CAAO,KAAK,GAAGA,QAAAA,CAAO,SAAQ,EAAG,OAAA,EAAS,QAAQ,KAAA,EAAM,QAAA,EACzE,QAAA,EAAA,QAAA,GAAW,QAAA,GAAM,eAAA,EACpB,CAAA;AAAA,MAED,CAAC,QAAA,oBACAD,GAAAA,CAAC,YAAO,KAAA,EAAOC,QAAAA,CAAO,GAAA,EAAK,OAAA,EAAS,YAAA,EAAc,KAAA,EAAM,QAAA,EACrD,QAAA,EAAA,QAAA,GAAW,WAAM,QAAA,EACpB,CAAA;AAAA,sBAEFD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAOC,QAAAA,CAAO,GAAA,EAAK,OAAA,EAAS,YAAA,EAAc,KAAA,EAAM,aAAA,EACrD,QAAA,EAAA,QAAA,GAAW,QAAA,GAAM,aAAA,EACpB,CAAA;AAAA,MACC,CAAC,QAAA,IAAY,MAAA,oBACZD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,EAAE,GAAGC,SAAO,GAAA,EAAK,GAAGA,SAAO,OAAA,EAAQ;AAAA,UAC1C,OAAA,EAAS,MAAM,MAAA,CAAO,MAAM,CAAA;AAAA,UAC5B,KAAA,EAAM,MAAA;AAAA,UAEL,qBAAW,QAAA,GAAM;AAAA;AAAA,OACpB;AAAA,MAED,CAAC,4BACAD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,EAAE,GAAGC,QAAAA,CAAO,GAAA,EAAK,OAAO,kBAAA,EAAmB;AAAA,UAClD,KAAA,EAAM,OAAA;AAAA,UACN,SAAS,MAAM;AACb,YAAA,IAAI,OAAA,CAAQ,8CAA8C,CAAA,EAAG,WAAA,EAAY;AAAA,UAC3E,CAAA;AAAA,UAEC,qBAAW,QAAA,GAAM;AAAA;AAAA;AACpB,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAMA,QAAAA,GAA8C;AAAA,EAClD,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IAAQ,UAAA,EAAY,QAAA;AAAA,IAAU,cAAA,EAAgB,eAAA;AAAA,IACvD,OAAA,EAAS,QAAA;AAAA,IAAU,MAAA,EAAQ,EAAA;AAAA,IAAI,UAAA,EAAY,sBAAA;AAAA,IAC3C,YAAA,EAAc,oCAAA;AAAA,IAAsC,UAAA,EAAY;AAAA,GAClE;AAAA,EACA,MAAM,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EACtD,IAAA,EAAM,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,GAAA,EAAK,KAAA,EAAO,wBAAA,EAA0B,aAAA,EAAe,QAAA,EAAS;AAAA,EAChG,SAAA,EAAW,EAAE,KAAA,EAAO,+BAAA,EAAiC,UAAU,EAAA,EAAG;AAAA,EAClE,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,KAAA,EAAO,wBAAA;AAAA,IACtC,UAAA,EAAY,aAAA;AAAA,IAAe,MAAA,EAAQ,MAAA;AAAA,IAAQ,OAAA,EAAS,MAAA;AAAA,IACpD,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,CAAA;AAAA,IAAG,MAAA,EAAQ,CAAA;AAAA,IAAG,YAAA,EAAc,KAAA;AAAA,IAAO,UAAA,EAAY,0BAAA;AAAA,IACtD,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAO,EAAE,OAAA,EAAS,QAAQ,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA,EAAE;AAAA,EACvD,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,EAAA;AAAA,IAAI,OAAA,EAAS,UAAA;AAAA,IAAY,MAAA,EAAQ,oCAAA;AAAA,IAC3C,UAAA,EAAY,aAAA;AAAA,IAAe,KAAA,EAAO,8BAAA;AAAA,IAAgC,YAAA,EAAc,kBAAA;AAAA,IAChF,MAAA,EAAQ,SAAA;AAAA,IAAW,UAAA,EAAY;AAAA,GACjC;AAAA,EACA,SAAS,EAAE,UAAA,EAAY,qBAAqB,KAAA,EAAO,kBAAA,EAAoB,QAAQ,6BAAA,EAA8B;AAAA,EAC7G,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,EAAA;AAAA,IAAI,UAAA,EAAY,GAAA;AAAA,IAAK,KAAA,EAAO,uBAAA;AAAA,IACtC,UAAA,EAAY,mBAAA;AAAA,IAAqB,MAAA,EAAQ,4BAAA;AAAA,IACzC,YAAA,EAAc,kBAAA;AAAA,IAAoB,OAAA,EAAS;AAAA,GAC7C;AAAA,EACA,OAAA,EAAS,EAAE,UAAA,EAAY,4BAAA,EAA8B,OAAO,MAAA,EAAQ,MAAA,EAAQ,sCAAA,EAAwC,UAAA,EAAY,GAAA,EAAI;AAAA,EACpI,OAAA,EAAS,EAAE,UAAA,EAAY,aAAA,EAAe,OAAO,wBAAA,EAA0B,MAAA,EAAQ,MAAA,EAAQ,UAAA,EAAY,KAAK,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,EAAA,EAAI,SAAS,OAAA;AACpJ,CAAA;ACjIO,SAAS,eAAA,CAAgB;AAAA,EAC9B,YAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,iBAAiB,EAAC;AAAA,EAClB,gBAAgB;AAClB,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,UAAA,EAAY,MAAA,EAAQ,cAAA,EAAgB,eAAA,KAAoB,eAAA,EAAgB;AAChF,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAoB,OAAO,CAAA;AAG7D,EAAA,MAAM,eAAA,GAAkBK,OAA4B,IAAI,CAAA;AACxD,EAAA,IAAI,eAAA,CAAgB,YAAY,IAAA,EAAM;AACpC,IAAA,eAAA,CAAgB,UAAU,kBAAA,EAAmB;AAAA,EAC/C;AAEA,EAAAJ,UAAU,MAAM;AACd,IAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,CAAY,MAAA,CAAO,aAAa,GAAG,CAAA;AACvD,IAAA,KAAA,EAAM;AACN,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,KAAK,CAAA;AACvC,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,KAAK,CAAA;AAAA,EACzD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,YAAA,aAAyB,YAAY,CAAA;AAAA,EAC3C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAA,UAAU,MAAM;AACd,IAAA,QAAA,GAAW,MAAM,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAGrB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,QAAA,IAAY,cAAA,EAAgB,YAAA,CAAa,QAAQ,CAAA;AAAA,EACvD,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAGnB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,QAAA,IAAY,eAAA,EAAiB,YAAA,CAAa,QAAQ,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,eAAA,CAAgB,OAAA,CAAS,QAAA,EAAS,CAAE,IAAA,CAAK,MAAM,CAAA;AAC/C,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB;AAEA,EAAA,MAAM,SAAA,GAAY,eAAe,KAAK,CAAA;AAEtC,EAAA,uBACEH,GAAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,QAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,gBAC3C,QAAA,kBAAAA,GAAAA,CAAC,2BAAA,CAA4B,QAAA,EAA5B,EAAqC,KAAA,EAAO,aAAA,EAC7C,QAAA,kBAAAD,KAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,GAAG,SAAA,EAAW,GAAG,OAAM,EACvE,QAAA,EAAA;AAAA,oBAAAC,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA,EAAQ,CAAC,WAAA,IAAe,CAAC,YAAY,MAAA,GAAS,MAAM,MAAA,CAAO,MAAM,CAAA,GAAI,MAAA;AAAA,QACrE,WAAA;AAAA,QACA,MAAA,EAAQ,CAAC,QAAA,GAAY,WAAA,GAAc,MAAM,cAAA,CAAe,KAAK,IAAI,UAAA,GAAc;AAAA;AAAA,KACjF;AAAA,IACC,8BACCA,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAO,eAAA,CAAgB,OAAA;AAAA,QACvB,MAAA;AAAA,QACA,aAAA;AAAA,QACA,MAAA,EAAQ,MAAM,cAAA,CAAe,KAAK;AAAA;AAAA,KACpC,GACE,QAAA,mBACFD,IAAAA,CAAAS,UAAA,EAEE,QAAA,EAAA;AAAA,sBAAAT,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,QAAA,EAAU,OAAA,EAAS,SAAA,KAAc,OAAA,GAAU,MAAA,GAAS,MAAA,EAAO,EAC1E,QAAA,EAAA;AAAA,wBAAAC,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,GAAG,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAS,EAClF,0BAAAA,GAAAA,CAACK,SAAAA,EAAA,EAAS,CAAA,EACZ,CAAA;AAAA,wBACAL,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAW,4BAAA,EAA8B,UAAA,EAAY,CAAA,EAAG,QAAA,EAAU,QAAQ,SAAA,EAAW,GAAA,IACjG,QAAA,kBAAAA,GAAAA,CAAC,yBAAsB,CAAA,EACzB;AAAA,OAAA,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,QAAA,EAAU,OAAA,EAAS,SAAA,KAAc,QAAA,GAAW,SAAS,MAAA,EAAO,EAC3E,QAAA,kBAAAA,GAAAA,CAAC,aAAU,CAAA,EACb,CAAA;AAAA,sBAGAD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,QAAA,EAAU,OAAA,EAAS,SAAA,KAAc,QAAA,GAAW,MAAA,GAAS,MAAA,EAAO,EAC3E,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,YAAA,EAAc,4BAAA,EAA8B,QAAA,EAAU,QAAA,EAAS,EACpF,QAAA,kBAAAA,GAAAA,CAAC,cAAW,CAAA,EACd,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS,EACxC,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EACf;AAAA,OAAA,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAA,EACR,QAAA,EAAA,CAAC,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA,CAAkB,GAAA,CAAI,CAAC,wBACnDD,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,GAAI,SAAA,KAAc,GAAA,GAAM,iBAAA,GAAoB,EAAC,EAAG;AAAA,UACzE,OAAA,EAAS,MAAM,YAAA,CAAa,GAAG,CAAA;AAAA,UAE/B,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAG,EACzB,QAAA,EAAA,GAAA,KAAQ,OAAA,GAAU,QAAA,GAAM,GAAA,KAAQ,QAAA,GAAW,WAAM,QAAA,EACpD,CAAA;AAAA,4BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,aAAA,EAAe,YAAA,EAAa,EACvE,QAAA,EAAA,GAAA,EACH;AAAA;AAAA,SAAA;AAAA,QATK;AAAA,OAWR,CAAA,EACH;AAAA,KAAA,EACF,CAAA,mBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,WAAA,EAEV,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,QAAA,EACV,QAAA,EAAA;AAAA,wBAAAC,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,GAAG,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,eAAe,QAAA,EAAS,EAClF,0BAAAA,GAAAA,CAACK,SAAAA,EAAA,EAAS,CAAA,EACZ,CAAA;AAAA,wBACAL,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAW,4BAAA,EAA8B,UAAA,EAAY,CAAA,EAAG,QAAA,EAAU,QAAQ,SAAA,EAAW,GAAA,IACjG,QAAA,kBAAAA,GAAAA,CAAC,yBAAsB,CAAA,EACzB;AAAA,OAAA,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,YAAA,EAAc,CAAA;AAAA,sBAG1BA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,UACV,QAAA,kBAAAA,GAAAA,CAAC,aAAU,CAAA,EACb,CAAA;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,YAAA,EAAc,CAAA;AAAA,sBAG1BD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,UAAS,EAC7E,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,YAAA,EAAc,4BAAA,EAA8B,QAAA,EAAU,QAAA,EAAS,EACpF,QAAA,kBAAAA,GAAAA,CAAC,cAAW,CAAA,EACd,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS,EACxC,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EACf;AAAA,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACA,GACA,CAAA,EACA,CAAA;AAEJ;AAEA,IAAM,SAAA,GAAiC;AAAA,EACrC,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,MAAA,EAAQ,MAAA;AAAA,EACR,UAAA,EAAY,kBAAA;AAAA,EACZ,YAAA,EAAc,EAAA;AAAA,EACd,MAAA,EAAQ,4BAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,OAAA,EAAS,MAAA;AAAA,EACT,IAAA,EAAM,CAAA;AAAA,EACN,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,QAAA,GAAgC;AAAA,EACpC,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,QAAA,EAAU,QAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,YAAA,GAAoC;AAAA,EACxC,KAAA,EAAO,CAAA;AAAA,EACP,UAAA,EAAY,kBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,OAAA,EAAS,MAAA;AAAA,EACT,SAAA,EAAW,4BAAA;AAAA,EACX,UAAA,EAAY,sBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,WAAA,GAAmC;AAAA,EACvC,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,QAAA;AAAA,EAChB,GAAA,EAAK,CAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,UAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAO,uBAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,iBAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,mBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA","file":"index.js","sourcesContent":["/**\n * @waypointjs/builder — Theming\n *\n * All design tokens used by the builder UI.\n * Pass a partial `WaypointTheme` to `<WaypointBuilder theme={...} />` to override any token.\n *\n * Built-in themes: `DEFAULT_THEME` (light) and `DARK_THEME`.\n */\n\n// ---------------------------------------------------------------------------\n// Type\n// ---------------------------------------------------------------------------\n\nexport interface WaypointTheme {\n // ── Primary accent ─────────────────────────────────────────────────────\n /** Main brand color — buttons, selected state accent. Default: #6366f1 */\n primary?: string;\n /** Darker shade of primary — hover states, dep badge text. Default: #4338ca */\n primaryDark?: string;\n /** Light primary background — dep badges, type badges. Default: #e0e7ff */\n primaryBg?: string;\n /** Very light primary — selected card background. Default: #ede9fe */\n primaryMuted?: string;\n /** Primary border — selected card outline. Default: #a78bfa */\n primaryBorder?: string;\n\n // ── Toolbar ────────────────────────────────────────────────────────────\n /** Toolbar background. Default: #111827 */\n toolbarBg?: string;\n /** Toolbar bottom border. Default: #1f2937 */\n toolbarBorder?: string;\n /** Toolbar logo / accent color. Default: #a78bfa */\n toolbarLogo?: string;\n /** Toolbar primary text color. Default: #f9fafb */\n toolbarText?: string;\n /** Toolbar muted text (buttons). Default: #d1d5db */\n toolbarTextMuted?: string;\n /** Toolbar subtle text (separator). Default: #4b5563 */\n toolbarTextSubtle?: string;\n\n // ── Canvas & surfaces ──────────────────────────────────────────────────\n /** Main background (panels, dropdowns). Default: #ffffff */\n canvas?: string;\n /** Subtle surface (card backgrounds, inputs). Default: #f9fafb */\n surface?: string;\n /** Slightly darker surface (hover, alternate rows). Default: #f3f4f6 */\n surfaceMuted?: string;\n /** Alternative surface (code blocks, preview bg). Default: #f1f5f9 */\n surfaceAlt?: string;\n\n // ── Borders ────────────────────────────────────────────────────────────\n /** Default border color. Default: #e5e7eb */\n border?: string;\n /** Muted border (inputs, selects). Default: #d1d5db */\n borderMuted?: string;\n\n // ── Text ───────────────────────────────────────────────────────────────\n /** Primary text. Default: #111827 */\n text?: string;\n /** Secondary text (labels, sub-headings). Default: #374151 */\n textSecondary?: string;\n /** Muted text (helper labels). Default: #6b7280 */\n textMuted?: string;\n /** Subtle text (metadata, hints). Default: #9ca3af */\n textSubtle?: string;\n /** Monospace / code text. Default: #475569 */\n textMono?: string;\n\n // ── Semantic — danger ──────────────────────────────────────────────────\n /** Danger foreground. Default: #ef4444 */\n danger?: string;\n /** Darker danger text. Default: #dc2626 */\n dangerText?: string;\n /** Danger background (very light). Default: #fef2f2 */\n dangerBg?: string;\n /** Danger background (strong). Default: #fee2e2 */\n dangerBgStrong?: string;\n /** Danger border. Default: #fecaca */\n dangerBorder?: string;\n\n // ── Semantic — warning ─────────────────────────────────────────────────\n /** Warning text / badge foreground. Default: #d97706 */\n warning?: string;\n /** Warning strong (dirty dot). Default: #f59e0b */\n warningStrong?: string;\n /** Warning background. Default: #fef3c7 */\n warningBg?: string;\n\n // ── Semantic — success ─────────────────────────────────────────────────\n /** Success text. Default: #059669 */\n success?: string;\n /** Success background. Default: #d1fae5 */\n successBg?: string;\n\n // ── Semantic — info ────────────────────────────────────────────────────\n /** Info icon / text. Default: #3b82f6 */\n info?: string;\n /** Info text (used-by ref chips). Default: #3b82f6 */\n infoText?: string;\n /** Info background (light). Default: #eff6ff */\n infoBg?: string;\n /** Info background (strong, ref chip bg). Default: #eff6ff */\n infoBgStrong?: string;\n /** Info border. Default: #bfdbfe */\n infoBorder?: string;\n\n // ── Typography & shape ─────────────────────────────────────────────────\n /** Font stack. Default: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif */\n font?: string;\n /** Base border radius. Default: 6px */\n radius?: string;\n /** Large border radius (cards, modals). Default: 8px */\n radiusLg?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Default (light) theme\n// ---------------------------------------------------------------------------\n\nexport const DEFAULT_THEME: Required<WaypointTheme> = {\n primary: \"#6366f1\",\n primaryDark: \"#4338ca\",\n primaryBg: \"#e0e7ff\",\n primaryMuted: \"#ede9fe\",\n primaryBorder: \"#a78bfa\",\n\n toolbarBg: \"#111827\",\n toolbarBorder: \"#1f2937\",\n toolbarLogo: \"#a78bfa\",\n toolbarText: \"#f9fafb\",\n toolbarTextMuted: \"#d1d5db\",\n toolbarTextSubtle: \"#4b5563\",\n\n canvas: \"#ffffff\",\n surface: \"#f9fafb\",\n surfaceMuted: \"#f3f4f6\",\n surfaceAlt: \"#f1f5f9\",\n\n border: \"#e5e7eb\",\n borderMuted: \"#d1d5db\",\n\n text: \"#111827\",\n textSecondary: \"#374151\",\n textMuted: \"#6b7280\",\n textSubtle: \"#9ca3af\",\n textMono: \"#475569\",\n\n danger: \"#ef4444\",\n dangerText: \"#dc2626\",\n dangerBg: \"#fef2f2\",\n dangerBgStrong: \"#fee2e2\",\n dangerBorder: \"#fecaca\",\n\n warning: \"#d97706\",\n warningStrong: \"#f59e0b\",\n warningBg: \"#fef3c7\",\n\n success: \"#059669\",\n successBg: \"#d1fae5\",\n\n info: \"#3b82f6\",\n infoText: \"#3b82f6\",\n infoBg: \"#eff6ff\",\n infoBgStrong: \"#eff6ff\",\n infoBorder: \"#bfdbfe\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// Dark theme\n// ---------------------------------------------------------------------------\n\nexport const DARK_THEME: Required<WaypointTheme> = {\n primary: \"#818cf8\",\n primaryDark: \"#6366f1\",\n primaryBg: \"#1e1b4b\",\n primaryMuted: \"#1e1b4b\",\n primaryBorder: \"#6366f1\",\n\n toolbarBg: \"#0a0a0a\",\n toolbarBorder: \"#1a1a1a\",\n toolbarLogo: \"#818cf8\",\n toolbarText: \"#f1f5f9\",\n toolbarTextMuted: \"#9ca3af\",\n toolbarTextSubtle: \"#374151\",\n\n canvas: \"#141414\",\n surface: \"#1e1e1e\",\n surfaceMuted: \"#2a2a2a\",\n surfaceAlt: \"#242424\",\n\n border: \"#2e2e2e\",\n borderMuted: \"#404040\",\n\n text: \"#f1f5f9\",\n textSecondary: \"#e2e8f0\",\n textMuted: \"#94a3b8\",\n textSubtle: \"#64748b\",\n textMono: \"#94a3b8\",\n\n danger: \"#f87171\",\n dangerText: \"#fca5a5\",\n dangerBg: \"#1c0a0a\",\n dangerBgStrong: \"#2d1515\",\n dangerBorder: \"#7f1d1d\",\n\n warning: \"#fbbf24\",\n warningStrong: \"#fbbf24\",\n warningBg: \"#1a1000\",\n\n success: \"#34d399\",\n successBg: \"#052e16\",\n\n info: \"#60a5fa\",\n infoText: \"#93c5fd\",\n infoBg: \"#0a1628\",\n infoBgStrong: \"#0f1f3d\",\n infoBorder: \"#1e3a5f\",\n\n font: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n radius: \"6px\",\n radiusLg: \"8px\",\n};\n\n// ---------------------------------------------------------------------------\n// CSS variable builder\n// ---------------------------------------------------------------------------\n\n/**\n * Converts a WaypointTheme (merged with defaults) into a React inline style object\n * containing all CSS custom properties (`--wp-*`).\n *\n * Apply this to the root element of `<WaypointBuilder />`.\n */\nexport function buildThemeVars(theme: WaypointTheme = {}): React.CSSProperties {\n const t: Required<WaypointTheme> = { ...DEFAULT_THEME, ...theme };\n\n return {\n \"--wp-primary\": t.primary,\n \"--wp-primary-dark\": t.primaryDark,\n \"--wp-primary-bg\": t.primaryBg,\n \"--wp-primary-muted\": t.primaryMuted,\n \"--wp-primary-border\": t.primaryBorder,\n\n \"--wp-toolbar-bg\": t.toolbarBg,\n \"--wp-toolbar-border\": t.toolbarBorder,\n \"--wp-toolbar-logo\": t.toolbarLogo,\n \"--wp-toolbar-text\": t.toolbarText,\n \"--wp-toolbar-text-muted\": t.toolbarTextMuted,\n \"--wp-toolbar-text-subtle\": t.toolbarTextSubtle,\n\n \"--wp-canvas\": t.canvas,\n \"--wp-surface\": t.surface,\n \"--wp-surface-muted\": t.surfaceMuted,\n \"--wp-surface-alt\": t.surfaceAlt,\n\n \"--wp-border\": t.border,\n \"--wp-border-muted\": t.borderMuted,\n\n \"--wp-text\": t.text,\n \"--wp-text-secondary\": t.textSecondary,\n \"--wp-text-muted\": t.textMuted,\n \"--wp-text-subtle\": t.textSubtle,\n \"--wp-text-mono\": t.textMono,\n\n \"--wp-danger\": t.danger,\n \"--wp-danger-text\": t.dangerText,\n \"--wp-danger-bg\": t.dangerBg,\n \"--wp-danger-bg-strong\": t.dangerBgStrong,\n \"--wp-danger-border\": t.dangerBorder,\n\n \"--wp-warning\": t.warning,\n \"--wp-warning-strong\": t.warningStrong,\n \"--wp-warning-bg\": t.warningBg,\n\n \"--wp-success\": t.success,\n \"--wp-success-bg\": t.successBg,\n\n \"--wp-info\": t.info,\n \"--wp-info-text\": t.infoText,\n \"--wp-info-bg\": t.infoBg,\n \"--wp-info-bg-strong\": t.infoBgStrong,\n \"--wp-info-border\": t.infoBorder,\n\n \"--wp-font\": t.font,\n \"--wp-radius\": t.radius,\n \"--wp-radius-lg\": t.radiusLg,\n } as React.CSSProperties;\n}\n","import { create } from \"zustand\";\nimport type {\n ConditionGroup,\n CustomTypeDefinition,\n ExternalVariable,\n FieldDefinition,\n PersistenceMode,\n StepDefinition,\n WaypointSchema,\n} from \"@waypointjs/core\";\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\nexport interface BuilderState {\n /** The schema being edited */\n schema: WaypointSchema;\n /** Currently selected step id */\n selectedStepId: string | null;\n /** Currently selected field id (within selectedStep) */\n selectedFieldId: string | null;\n /** Whether the schema has unsaved changes */\n isDirty: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Actions\n// ---------------------------------------------------------------------------\n\nexport interface BuilderActions {\n // Schema\n loadSchema: (schema: WaypointSchema) => void;\n resetSchema: () => void;\n\n // Steps\n addStep: (step?: Partial<Omit<StepDefinition, \"id\">>) => string;\n updateStep: (stepId: string, updates: Partial<Omit<StepDefinition, \"id\">>) => void;\n removeStep: (stepId: string) => void;\n duplicateStep: (stepId: string) => void;\n reorderSteps: (fromIndex: number, toIndex: number) => void;\n selectStep: (stepId: string | null) => void;\n\n // Fields\n addField: (stepId: string, field?: Partial<Omit<FieldDefinition, \"id\">>) => string;\n updateField: (stepId: string, fieldId: string, updates: Partial<Omit<FieldDefinition, \"id\">>) => void;\n removeField: (stepId: string, fieldId: string) => void;\n duplicateField: (stepId: string, fieldId: string) => void;\n reorderFields: (stepId: string, fromIndex: number, toIndex: number) => void;\n selectField: (fieldId: string | null) => void;\n\n // Step conditions\n setStepCondition: (stepId: string, condition: ConditionGroup | undefined) => void;\n\n // Field conditions\n setFieldCondition: (stepId: string, fieldId: string, condition: ConditionGroup | undefined) => void;\n\n // External variables\n addExternalVariable: (variable: Omit<ExternalVariable, \"usedIn\">) => void;\n updateExternalVariable: (varId: string, updates: Partial<ExternalVariable>) => void;\n removeExternalVariable: (varId: string) => void;\n\n // Custom types\n addCustomType: (type: CustomTypeDefinition) => void;\n updateCustomType: (typeId: string, updates: Partial<CustomTypeDefinition>) => void;\n removeCustomType: (typeId: string) => void;\n\n // Persistence\n setPersistenceMode: (mode: PersistenceMode) => void;\n}\n\nexport type BuilderStore = BuilderState & BuilderActions;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction generateId(prefix: string): string {\n return `${prefix}_${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction makeDefaultSchema(): WaypointSchema {\n return {\n version: \"1\",\n id: generateId(\"journey\"),\n name: \"My Journey\",\n steps: [],\n externalVariables: [],\n customTypes: [],\n persistenceMode: \"zustand\",\n };\n}\n\n// ---------------------------------------------------------------------------\n// Store\n// ---------------------------------------------------------------------------\n\nexport const useBuilderStore = create<BuilderStore>((set, _get) => ({\n schema: makeDefaultSchema(),\n selectedStepId: null,\n selectedFieldId: null,\n isDirty: false,\n\n // --- Schema ---\n\n loadSchema: (schema) =>\n set({ schema, selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n resetSchema: () =>\n set({ schema: makeDefaultSchema(), selectedStepId: null, selectedFieldId: null, isDirty: false }),\n\n // --- Steps ---\n\n addStep: (partial = {}) => {\n const id = generateId(\"step\");\n const step: StepDefinition = {\n id,\n title: partial.title ?? \"New Step\",\n url: partial.url ?? `/${id}`,\n fields: partial.fields ?? [],\n ...partial,\n };\n set((s) => ({\n schema: { ...s.schema, steps: [...s.schema.steps, step] },\n selectedStepId: id,\n selectedFieldId: null,\n isDirty: true,\n }));\n return id;\n },\n\n updateStep: (stepId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, ...updates } : step\n ),\n },\n isDirty: true,\n })),\n\n removeStep: (stepId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.filter((step) => step.id !== stepId),\n },\n selectedStepId: s.selectedStepId === stepId ? null : s.selectedStepId,\n selectedFieldId: s.selectedStepId === stepId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n duplicateStep: (stepId) => {\n const state = _get();\n const step = state.schema.steps.find((s) => s.id === stepId);\n if (!step) return;\n\n const newStepId = generateId(\"step\");\n\n // Map old field IDs → new field IDs\n const fieldIdMap: Record<string, string> = {};\n for (const f of step.fields) {\n fieldIdMap[f.id] = generateId(\"field\");\n }\n\n // Clone fields with new IDs and remap intra-step dependsOn\n const newFields = step.fields.map((f) => ({\n ...f,\n id: fieldIdMap[f.id],\n dependsOn: f.dependsOn?.map((dep) => {\n if (dep.startsWith(`${stepId}.`)) {\n const oldFieldId = dep.slice(stepId.length + 1);\n const newFieldId = fieldIdMap[oldFieldId];\n return newFieldId ? `${newStepId}.${newFieldId}` : dep;\n }\n return dep;\n }),\n }));\n\n const newStep: StepDefinition = {\n ...step,\n id: newStepId,\n title: `${step.title} (copy)`,\n url: `${step.url}-copy`,\n fields: newFields,\n };\n\n const stepIndex = state.schema.steps.findIndex((s) => s.id === stepId);\n const newSteps = [...state.schema.steps];\n newSteps.splice(stepIndex + 1, 0, newStep);\n\n set({\n schema: { ...state.schema, steps: newSteps },\n selectedStepId: newStepId,\n selectedFieldId: null,\n isDirty: true,\n });\n },\n\n reorderSteps: (fromIndex, toIndex) =>\n set((s) => {\n const steps = [...s.schema.steps];\n const [moved] = steps.splice(fromIndex, 1);\n steps.splice(toIndex, 0, moved);\n return { schema: { ...s.schema, steps }, isDirty: true };\n }),\n\n selectStep: (stepId) =>\n set({ selectedStepId: stepId, selectedFieldId: null }),\n\n // --- Fields ---\n\n addField: (stepId, partial = {}) => {\n const id = generateId(\"field\");\n const field: FieldDefinition = {\n id,\n type: partial.type ?? \"text\",\n label: partial.label ?? \"New Field\",\n ...partial,\n };\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: [...step.fields, field] }\n : step\n ),\n },\n selectedFieldId: id,\n isDirty: true,\n }));\n return id;\n },\n\n updateField: (stepId, fieldId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, ...updates } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n removeField: (stepId, fieldId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? { ...step, fields: step.fields.filter((f) => f.id !== fieldId) }\n : step\n ),\n },\n selectedFieldId: s.selectedFieldId === fieldId ? null : s.selectedFieldId,\n isDirty: true,\n })),\n\n duplicateField: (stepId, fieldId) => {\n const state = _get();\n const step = state.schema.steps.find((s) => s.id === stepId);\n if (!step) return;\n const field = step.fields.find((f) => f.id === fieldId);\n if (!field) return;\n\n const newFieldId = generateId(\"field\");\n const newField: FieldDefinition = {\n ...field,\n id: newFieldId,\n label: `${field.label} (copy)`,\n };\n\n const fieldIndex = step.fields.findIndex((f) => f.id === fieldId);\n const newFields = [...step.fields];\n newFields.splice(fieldIndex + 1, 0, newField);\n\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((st) =>\n st.id === stepId ? { ...st, fields: newFields } : st\n ),\n },\n selectedFieldId: newFieldId,\n isDirty: true,\n }));\n },\n\n reorderFields: (stepId, fromIndex, toIndex) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) => {\n if (step.id !== stepId) return step;\n const fields = [...step.fields];\n const [moved] = fields.splice(fromIndex, 1);\n fields.splice(toIndex, 0, moved);\n return { ...step, fields };\n }),\n },\n isDirty: true,\n })),\n\n selectField: (fieldId) => set({ selectedFieldId: fieldId }),\n\n // --- Step conditions ---\n\n setStepCondition: (stepId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId ? { ...step, visibleWhen: condition } : step\n ),\n },\n isDirty: true,\n })),\n\n // --- Field conditions ---\n\n setFieldCondition: (stepId, fieldId, condition) =>\n set((s) => ({\n schema: {\n ...s.schema,\n steps: s.schema.steps.map((step) =>\n step.id === stepId\n ? {\n ...step,\n fields: step.fields.map((f) =>\n f.id === fieldId ? { ...f, visibleWhen: condition } : f\n ),\n }\n : step\n ),\n },\n isDirty: true,\n })),\n\n // --- External variables ---\n\n addExternalVariable: (variable) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: [\n ...(s.schema.externalVariables ?? []),\n { ...variable, usedIn: [] },\n ],\n },\n isDirty: true,\n })),\n\n updateExternalVariable: (varId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).map((v) =>\n v.id === varId ? { ...v, ...updates } : v\n ),\n },\n isDirty: true,\n })),\n\n removeExternalVariable: (varId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n externalVariables: (s.schema.externalVariables ?? []).filter(\n (v) => v.id !== varId\n ),\n },\n isDirty: true,\n })),\n\n // --- Custom types ---\n\n addCustomType: (type) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: [...(s.schema.customTypes ?? []), type],\n },\n isDirty: true,\n })),\n\n updateCustomType: (typeId, updates) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).map((t) =>\n t.id === typeId ? { ...t, ...updates } : t\n ),\n },\n isDirty: true,\n })),\n\n removeCustomType: (typeId) =>\n set((s) => ({\n schema: {\n ...s.schema,\n customTypes: (s.schema.customTypes ?? []).filter((t) => t.id !== typeId),\n },\n isDirty: true,\n })),\n\n // --- Persistence ---\n\n setPersistenceMode: (mode) =>\n set((s) => ({\n schema: { ...s.schema, persistenceMode: mode },\n isDirty: true,\n })),\n}));\n","import { createContext, useContext } from \"react\";\nimport type { CustomTypeDefinition, ExternalEnum } from \"@waypointjs/core\";\n\nexport const BuilderReadOnlyContext = createContext(false);\n\nexport function useBuilderReadOnly(): boolean {\n return useContext(BuilderReadOnlyContext);\n}\n\nexport const BuilderCustomTypesContext = createContext<CustomTypeDefinition[]>([]);\n\nexport function useBuilderCustomTypes(): CustomTypeDefinition[] {\n return useContext(BuilderCustomTypesContext);\n}\n\nexport const BuilderExternalEnumsContext = createContext<ExternalEnum[]>([]);\n\nexport function useBuilderExternalEnums(): ExternalEnum[] {\n return useContext(BuilderExternalEnumsContext);\n}\n","\"use client\";\n\nimport type { ExternalVariable } from \"@waypointjs/core\";\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderReadOnly } from \"../context\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype VarType = ExternalVariable[\"type\"];\n\ninterface FormState {\n id: string;\n label: string;\n type: VarType;\n blocking: boolean;\n}\n\nconst BLANK_FORM: FormState = {\n id: \"\",\n label: \"\",\n type: \"string\",\n blocking: false,\n};\n\n// ---------------------------------------------------------------------------\n// ExternalVariablePanel\n// ---------------------------------------------------------------------------\n\nexport function ExternalVariablePanel() {\n const {\n schema,\n addExternalVariable,\n updateExternalVariable,\n removeExternalVariable,\n } = useBuilderStore();\n const readOnly = useBuilderReadOnly();\n const variables = schema.externalVariables ?? [];\n\n const [isAdding, setIsAdding] = useState(false);\n const [editingId, setEditingId] = useState<string | null>(null);\n const [form, setForm] = useState<FormState>(BLANK_FORM);\n const [error, setError] = useState<string | null>(null);\n\n // Compute which vars are actually referenced in the schema\n const usageMap = computeUsageMap(schema.steps ?? []);\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n function startAdd() {\n setIsAdding(true);\n setEditingId(null);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function startEdit(v: ExternalVariable) {\n setEditingId(v.id);\n setIsAdding(false);\n setForm({ id: v.id, label: v.label, type: v.type, blocking: v.blocking });\n setError(null);\n }\n\n function cancelForm() {\n setIsAdding(false);\n setEditingId(null);\n setError(null);\n }\n\n function validateForm(): string | null {\n if (!form.id.trim()) return \"ID is required\";\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(form.id.trim()))\n return \"ID must be alphanumeric (no spaces)\";\n if (!form.label.trim()) return \"Label is required\";\n if (isAdding && variables.some((v) => v.id === form.id.trim()))\n return `ID \"${form.id}\" already exists`;\n return null;\n }\n\n function submitAdd() {\n const err = validateForm();\n if (err) {\n setError(err);\n return;\n }\n addExternalVariable({\n id: form.id.trim(),\n label: form.label.trim(),\n type: form.type,\n blocking: form.blocking,\n });\n setIsAdding(false);\n setForm(BLANK_FORM);\n setError(null);\n }\n\n function submitEdit() {\n const err = validateForm();\n if (err) {\n setError(err);\n return;\n }\n if (!editingId) return;\n updateExternalVariable(editingId, {\n label: form.label.trim(),\n type: form.type,\n blocking: form.blocking,\n });\n setEditingId(null);\n setError(null);\n }\n\n function remove(id: string) {\n removeExternalVariable(id);\n if (editingId === id) {\n setEditingId(null);\n setError(null);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n return (\n <div style={panelStyle}>\n {/* Header */}\n <div style={headerStyle}>\n <span style={titleStyle}>External Variables</span>\n {!readOnly && !isAdding && (\n <button\n style={addBtnStyle}\n onClick={startAdd}\n title=\"Add external variable\"\n >\n + Add\n </button>\n )}\n </div>\n\n {/* Empty state */}\n {variables.length === 0 && !isAdding && (\n <p style={emptyStyle}>\n No external variables declared.\n <br />\n External vars are injected at runtime\n <br />\n (e.g. <code style={codeStyle}>$ext.userId</code>).\n </p>\n )}\n\n {/* Variable list */}\n {variables.map((v) => {\n const refs = usageMap.get(v.id) ?? [];\n const isBeingEdited = editingId === v.id;\n\n return (\n <div\n key={v.id}\n style={{\n ...varRowStyle,\n ...(isBeingEdited ? varRowActiveStyle : {}),\n }}\n >\n {isBeingEdited ? (\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitEdit}\n onCancel={cancelForm}\n submitLabel=\"Save\"\n idReadOnly\n />\n ) : (\n <>\n <div style={varMainStyle}>\n <div style={varTopRowStyle}>\n <span style={varIdStyle}>${`ext.${v.id}`}</span>\n <div style={badgeRowStyle}>\n <TypeBadge type={v.type} />\n {v.blocking && (\n <span style={blockingBadgeStyle}>blocking</span>\n )}\n </div>\n </div>\n <span style={varLabelStyle}>{v.label}</span>\n {refs.length > 0 && (\n <div style={refsStyle}>\n {refs.map((ref, i) => (\n <span key={i} style={refChipStyle}>\n {ref}\n </span>\n ))}\n </div>\n )}\n </div>\n {!readOnly && (\n <div style={varActionsStyle}>\n <button style={actionBtnStyle} onClick={() => startEdit(v)}>\n Edit\n </button>\n <button\n style={{ ...actionBtnStyle, color: \"#ef4444\" }}\n title=\"Remove variable\"\n onClick={() => remove(v.id)}\n >\n ✕\n </button>\n </div>\n )}\n </>\n )}\n </div>\n );\n })}\n\n {/* Add form */}\n {isAdding && (\n <div style={{ ...varRowStyle, ...varRowActiveStyle }}>\n <VarForm\n form={form}\n onChange={setForm}\n error={error}\n onSubmit={submitAdd}\n onCancel={cancelForm}\n submitLabel=\"Add\"\n />\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// VarForm — inline form for add/edit\n// ---------------------------------------------------------------------------\n\ninterface VarFormProps {\n form: FormState;\n onChange: (f: FormState) => void;\n error: string | null;\n onSubmit: () => void;\n onCancel: () => void;\n submitLabel: string;\n idReadOnly?: boolean;\n}\n\nfunction VarForm({\n form,\n onChange,\n error,\n onSubmit,\n onCancel,\n submitLabel,\n idReadOnly,\n}: VarFormProps) {\n function set(key: keyof FormState, value: unknown) {\n onChange({ ...form, [key]: value });\n }\n\n return (\n <div style={formStyle}>\n {/* ID */}\n <label style={formLabelStyle}>ID</label>\n <input\n style={{\n ...inputStyle,\n ...(idReadOnly ? { background: \"#f9fafb\", color: \"#6b7280\" } : {}),\n }}\n value={form.id}\n onChange={(e) => set(\"id\", e.target.value)}\n placeholder=\"e.g. userId\"\n readOnly={idReadOnly}\n />\n\n {/* Label */}\n <label style={formLabelStyle}>Label</label>\n <input\n style={inputStyle}\n value={form.label}\n onChange={(e) => set(\"label\", e.target.value)}\n placeholder=\"Human-readable description\"\n />\n\n {/* Type */}\n <label style={formLabelStyle}>Type</label>\n <select\n style={selectStyle}\n value={form.type}\n onChange={(e) => set(\"type\", e.target.value as VarType)}\n >\n <option value=\"string\">string</option>\n <option value=\"number\">number</option>\n <option value=\"boolean\">boolean</option>\n <option value=\"object\">object</option>\n </select>\n\n {/* Blocking */}\n <label style={checkboxRowStyle}>\n <input\n type=\"checkbox\"\n checked={form.blocking}\n onChange={(e) => set(\"blocking\", e.target.checked)}\n style={{ marginRight: 6 }}\n />\n <span style={formLabelStyle}>\n Blocking — throw if missing at runtime\n </span>\n </label>\n\n {/* Error */}\n {error && <p style={errorStyle}>{error}</p>}\n\n {/* Actions */}\n <div style={formActionsStyle}>\n <button style={cancelBtnStyle} onClick={onCancel}>\n Cancel\n </button>\n <button style={submitBtnStyle} onClick={onSubmit}>\n {submitLabel}\n </button>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TypeBadge\n// ---------------------------------------------------------------------------\n\nfunction TypeBadge({ type }: { type: VarType }) {\n const colors: Record<VarType, string> = {\n string: \"#d1fae5\",\n number: \"#dbeafe\",\n boolean: \"#fef3c7\",\n object: \"#f3e8ff\",\n };\n return (\n <span style={{ ...typeBadgeStyle, background: colors[type] ?? \"#f3f4f6\" }}>\n {type}\n </span>\n );\n}\n\n// ---------------------------------------------------------------------------\n// computeUsageMap — scan all steps/fields for $ext.varId references\n// ---------------------------------------------------------------------------\n\nimport type { StepDefinition, ConditionGroup } from \"@waypointjs/core\";\n\nfunction computeUsageMap(steps: StepDefinition[]): Map<string, string[]> {\n const map = new Map<string, string[]>();\n\n function addRef(varId: string, label: string) {\n const existing = map.get(varId) ?? [];\n if (!existing.includes(label)) existing.push(label);\n map.set(varId, existing);\n }\n\n function scanPaths(paths: string[] | undefined, context: string) {\n for (const path of paths ?? []) {\n if (path.startsWith(\"$ext.\")) addRef(path.slice(5), context);\n }\n }\n\n function scanCondition(group: ConditionGroup | undefined, context: string) {\n if (!group) return;\n for (const rule of group.rules ?? []) {\n if (rule.field.startsWith(\"$ext.\")) addRef(rule.field.slice(5), context);\n }\n for (const nested of group.groups ?? []) scanCondition(nested, context);\n }\n\n for (const step of steps) {\n scanCondition(step.visibleWhen, step.title);\n for (const field of step.fields ?? []) {\n scanPaths(field.dependsOn, `${step.title} › ${field.label}`);\n scanCondition(field.visibleWhen, `${step.title} › ${field.label}`);\n }\n }\n\n return map;\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst panelStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"8px 0\",\n gap: 0,\n};\n\nconst headerStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"6px 12px 8px\",\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 700,\n color: \"#9ca3af\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n};\n\nconst addBtnStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#6366f1\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"2px 4px\",\n};\n\nconst emptyStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#9ca3af\",\n padding: \"8px 12px 12px\",\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst codeStyle: React.CSSProperties = {\n fontFamily: \"monospace\",\n background: \"#f97316\",\n color: \"#070714\",\n borderRadius: 3,\n padding: \"1px 3px\",\n};\n\nconst varRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 6,\n padding: \"8px 12px\",\n borderTop: \"1px solid #f3f4f6\",\n};\n\nconst varRowActiveStyle: React.CSSProperties = {\n background: \"#f9fafb\",\n};\n\nconst varMainStyle: React.CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n};\n\nconst varTopRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n flexWrap: \"wrap\",\n};\n\nconst varIdStyle: React.CSSProperties = {\n fontSize: 11,\n fontFamily: \"monospace\",\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst badgeRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 4,\n flexWrap: \"wrap\",\n};\n\nconst typeBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n color: \"#374151\",\n};\n\nconst blockingBadgeStyle: React.CSSProperties = {\n fontSize: 10,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"#fee2e2\",\n color: \"#dc2626\",\n};\n\nconst varLabelStyle: React.CSSProperties = {\n fontSize: 12,\n color: \"#6b7280\",\n marginTop: 1,\n};\n\nconst refsStyle: React.CSSProperties = {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 4,\n};\n\nconst refChipStyle: React.CSSProperties = {\n fontSize: 10,\n padding: \"1px 6px\",\n borderRadius: 4,\n background: \"#eff6ff\",\n color: \"#3b82f6\",\n border: \"1px solid #bfdbfe\",\n};\n\nconst varActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 2,\n flexShrink: 0,\n};\n\nconst actionBtnStyle: React.CSSProperties = {\n fontSize: 11,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"#6b7280\",\n padding: \"2px 4px\",\n};\n\n// Form styles\nconst formStyle: React.CSSProperties = {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 6,\n};\n\nconst formLabelStyle: React.CSSProperties = {\n fontSize: 11,\n fontWeight: 600,\n color: \"#374151\",\n};\n\nconst inputStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"5px 8px\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\",\n};\n\nconst selectStyle: React.CSSProperties = {\n ...inputStyle,\n};\n\nconst checkboxRowStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: 11,\n color: \"#ef4444\",\n margin: 0,\n padding: \"4px 8px\",\n background: \"#fef2f2\",\n borderRadius: 4,\n border: \"1px solid #fca5a5\",\n};\n\nconst formActionsStyle: React.CSSProperties = {\n display: \"flex\",\n gap: 6,\n justifyContent: \"flex-end\",\n marginTop: 2,\n};\n\nconst cancelBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 10px\",\n background: \"none\",\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#374151\",\n};\n\nconst submitBtnStyle: React.CSSProperties = {\n fontSize: 12,\n padding: \"4px 12px\",\n background: \"#6366f1\",\n border: \"none\",\n borderRadius: 6,\n cursor: \"pointer\",\n color: \"#fff\",\n fontWeight: 600,\n};\n","import type { SelectOption } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderExternalEnums } from \"../context\";\n\nexport interface FieldPath {\n path: string; // e.g. \"personal.age\" or \"$ext.isPremium\"\n label: string; // e.g. \"Personal → Age\" or \"Ext: isPremium\"\n stepId?: string;\n fieldId?: string;\n isExternal?: boolean;\n /** Resolved options (from externalEnumId or hardcoded options) — used by ConditionBuilder */\n options?: SelectOption[];\n}\n\n/**\n * Returns all field paths available across the entire journey tree,\n * including external variables. Used for autocomplete and condition builders.\n */\nexport function useAllFieldPaths(excludeStepId?: string, excludeFieldId?: string): FieldPath[] {\n const { schema } = useBuilderStore();\n const externalEnums = useBuilderExternalEnums();\n const paths: FieldPath[] = [];\n\n for (const step of schema.steps) {\n for (const field of step.fields) {\n if (step.id === excludeStepId && field.id === excludeFieldId) continue;\n\n // Resolve options: prefer externalEnumId, fall back to hardcoded options\n let options: SelectOption[] | undefined;\n if (field.externalEnumId) {\n options = externalEnums.find((e) => e.id === field.externalEnumId)?.values;\n } else if (field.options?.length) {\n options = field.options;\n }\n\n paths.push({\n path: `${step.id}.${field.id}`,\n label: `${step.title} → ${field.label}`,\n stepId: step.id,\n fieldId: field.id,\n options,\n });\n }\n }\n\n for (const extVar of schema.externalVariables ?? []) {\n paths.push({\n path: `$ext.${extVar.id}`,\n label: `Ext: ${extVar.label}`,\n isExternal: true,\n });\n }\n\n return paths;\n}\n","\"use client\";\n\nimport { type ConditionGroup, type ConditionOperator, type ConditionRule } from \"@waypointjs/core\";\nimport { useBuilderExternalEnums } from \"../context\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\nconst OPERATORS: { value: ConditionOperator; label: string; hasValue: boolean }[] = [\n { value: \"equals\", label: \"equals\", hasValue: true },\n { value: \"notEquals\", label: \"not equals\", hasValue: true },\n { value: \"greaterThan\", label: \">\", hasValue: true },\n { value: \"greaterThanOrEqual\", label: \">=\", hasValue: true },\n { value: \"lessThan\", label: \"<\", hasValue: true },\n { value: \"lessThanOrEqual\", label: \"<=\", hasValue: true },\n { value: \"contains\", label: \"contains\", hasValue: true },\n { value: \"notContains\", label: \"not contains\", hasValue: true },\n { value: \"in\", label: \"in (comma list)\", hasValue: true },\n { value: \"notIn\", label: \"not in (comma list)\", hasValue: true },\n { value: \"matches\", label: \"matches regex\", hasValue: true },\n { value: \"exists\", label: \"exists\", hasValue: false },\n { value: \"notExists\", label: \"not exists\", hasValue: false },\n { value: \"inEnum\", label: \"is in enum\", hasValue: true, isEnum: true },\n { value: \"notInEnum\", label: \"not in enum\", hasValue: true, isEnum: true },\n] as { value: ConditionOperator; label: string; hasValue: boolean; isEnum?: boolean }[];\n\ninterface ConditionBuilderProps {\n value: ConditionGroup | undefined;\n onChange: (value: ConditionGroup | undefined) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function ConditionBuilder({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: ConditionBuilderProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n const externalEnums = useBuilderExternalEnums();\n\n const group: ConditionGroup = value ?? { combinator: \"and\", rules: [] };\n\n const updateRule = (index: number, updates: Partial<ConditionRule>) => {\n const rules = group.rules.map((r, i) => (i === index ? { ...r, ...updates } : r));\n onChange({ ...group, rules });\n };\n\n const addRule = () => {\n const firstPath = allPaths[0]?.path ?? \"\";\n onChange({\n ...group,\n rules: [...group.rules, { field: firstPath, operator: \"equals\", value: \"\" }],\n });\n };\n\n const removeRule = (index: number) => {\n const rules = group.rules.filter((_, i) => i !== index);\n if (rules.length === 0) { onChange(undefined); return; }\n onChange({ ...group, rules });\n };\n\n return (\n <div style={styles.container}>\n {/* Combinator toggle */}\n {group.rules.length > 1 && (\n <div style={styles.combinatorRow}>\n <span style={styles.combinatorLabel}>Match</span>\n {([\"and\", \"or\"] as const).map((c) => (\n <button\n key={c}\n style={{\n ...styles.combinatorBtn,\n ...(group.combinator === c ? styles.combinatorActive : {}),\n }}\n onClick={() => onChange({ ...group, combinator: c })}\n >\n {c.toUpperCase()}\n </button>\n ))}\n <span style={styles.combinatorLabel}>rules</span>\n </div>\n )}\n\n {/* Empty state */}\n {group.rules.length === 0 && (\n <div style={styles.empty}>\n No conditions — this step/field is always visible.\n </div>\n )}\n\n {/* Rules */}\n {group.rules.map((rule, index) => {\n const opDef = OPERATORS.find((o) => o.value === rule.operator);\n return (\n <div key={index} style={styles.rule}>\n {/* Field selector */}\n <select\n style={styles.select}\n value={rule.field}\n onChange={(e) => updateRule(index, { field: e.target.value })}\n >\n {allPaths.length === 0 && (\n <option value=\"\">No fields available</option>\n )}\n {allPaths.map((p) => (\n <option key={p.path} value={p.path}>{p.label}</option>\n ))}\n </select>\n\n {/* Operator selector */}\n <select\n style={{ ...styles.select, width: 140 }}\n value={rule.operator}\n onChange={(e) =>\n updateRule(index, { operator: e.target.value as ConditionOperator })\n }\n >\n {OPERATORS.map((o) => (\n <option key={o.value} value={o.value}>{o.label}</option>\n ))}\n </select>\n\n {/* Value — enum ref selector OR text input + optional enum value picker */}\n {opDef?.hasValue && (\n opDef.isEnum ? (\n <select\n style={{ ...styles.select, width: 140 }}\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n >\n <option value=\"\">— pick enum —</option>\n {externalEnums.map((en) => (\n <option key={en.id} value={en.id}>{en.label}</option>\n ))}\n </select>\n ) : (\n <div style={styles.valueGroup}>\n <input\n style={styles.valueInput}\n placeholder=\"value\"\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n />\n {externalEnums.length > 0 && (\n <select\n style={styles.enumPicker}\n title=\"Pick a value from an enum\"\n value=\"\"\n onChange={(e) => {\n if (e.target.value) updateRule(index, { value: e.target.value });\n }}\n >\n <option value=\"\">⊞</option>\n {externalEnums.map((en) => (\n <optgroup key={en.id} label={en.label}>\n {en.values.map((v) => (\n <option key={String(v.value)} value={String(v.value)}>\n {v.label} ({v.value})\n </option>\n ))}\n </optgroup>\n ))}\n </select>\n )}\n </div>\n )\n )}\n\n <button style={styles.removeBtn} onClick={() => removeRule(index)}>✕</button>\n </div>\n );\n })}\n\n <button style={styles.addBtn} onClick={addRule}>\n + Add rule\n </button>\n\n {/* Preview */}\n {group.rules.length > 0 && (\n <div style={styles.preview}>\n <span style={styles.previewLabel}>Preview</span>\n <pre style={styles.previewCode}>{JSON.stringify(group, null, 2)}</pre>\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", gap: 10 },\n combinatorRow: { display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 4 },\n combinatorLabel: { fontSize: 12, color: \"var(--wp-text-muted)\" },\n combinatorBtn: {\n fontSize: 11, fontWeight: 700, padding: \"3px 10px\", borderRadius: 5,\n border: \"1px solid var(--wp-border-muted)\", background: \"var(--wp-surface)\",\n cursor: \"pointer\", color: \"var(--wp-text-secondary)\",\n },\n combinatorActive: {\n background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"1px solid var(--wp-primary)\",\n },\n empty: { fontSize: 13, color: \"var(--wp-text-subtle)\", textAlign: \"center\", padding: \"12px 0\" },\n rule: {\n display: \"flex\", alignItems: \"center\", gap: 8,\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", padding: \"8px 10px\",\n },\n select: {\n flex: 1, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n minWidth: 0,\n },\n valueInput: {\n width: 100, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n removeBtn: {\n border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\",\n cursor: \"pointer\", fontSize: 13, flexShrink: 0,\n },\n addBtn: {\n fontSize: 12, padding: \"6px 12px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500, alignSelf: \"flex-start\",\n color: \"var(--wp-text-secondary)\",\n },\n valueGroup: { display: \"flex\", alignItems: \"center\", gap: 4 },\n enumPicker: {\n fontSize: 11, padding: \"4px 4px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", background: \"var(--wp-canvas)\", color: \"var(--wp-primary)\",\n cursor: \"pointer\", flexShrink: 0,\n },\n preview: { marginTop: 4 },\n previewLabel: {\n fontSize: 10, fontWeight: 600, color: \"var(--wp-text-subtle)\",\n textTransform: \"uppercase\", display: \"block\", marginBottom: 4,\n },\n previewCode: {\n fontSize: 10, background: \"var(--wp-surface-alt)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\", padding: 8, overflow: \"auto\", maxHeight: 120,\n margin: 0, color: \"var(--wp-text-mono)\",\n },\n};\n","\"use client\";\n\nimport type { ValidationRule, ValidationRuleType } from \"@waypointjs/core\";\nimport { useBuilderExternalEnums } from \"../context\";\n\nconst VALIDATION_RULES: { type: ValidationRuleType; label: string; hasValue: boolean }[] = [\n { type: \"required\", label: \"Required\", hasValue: false },\n { type: \"min\", label: \"Min value\", hasValue: true },\n { type: \"max\", label: \"Max value\", hasValue: true },\n { type: \"minLength\", label: \"Min length\", hasValue: true },\n { type: \"maxLength\", label: \"Max length\", hasValue: true },\n { type: \"email\", label: \"Email format\", hasValue: false },\n { type: \"url\", label: \"URL format\", hasValue: false },\n { type: \"regex\", label: \"Matches regex\", hasValue: true },\n { type: \"equals\", label: \"equals\", hasValue: true },\n { type: \"notEquals\", label: \"not equals\", hasValue: true },\n { type: \"greaterThan\", label: \">\", hasValue: true },\n { type: \"greaterThanOrEqual\", label: \">=\", hasValue: true },\n { type: \"lessThan\", label: \"<\", hasValue: true },\n { type: \"lessThanOrEqual\", label: \"<=\", hasValue: true },\n { type: \"contains\", label: \"contains\", hasValue: true },\n { type: \"notContains\", label: \"not contains\", hasValue: true },\n { type: \"matches\", label: \"matches regex\", hasValue: true },\n { type: \"inEnum\", label: \"is in enum\", hasValue: true, isEnum: true },\n { type: \"notInEnum\", label: \"not in enum\", hasValue: true, isEnum: true },\n { type: \"custom\", label: \"Custom validator\", hasValue: false },\n] as { type: ValidationRuleType; label: string; hasValue: boolean; isEnum?: boolean }[];\n\ninterface ValidationBuilderProps {\n value: ValidationRule[];\n onChange: (value: ValidationRule[]) => void;\n}\n\nexport function ValidationBuilder({ value, onChange }: ValidationBuilderProps) {\n const externalEnums = useBuilderExternalEnums();\n\n const updateRule = (index: number, updates: Partial<ValidationRule>) => {\n onChange(value.map((r, i) => (i === index ? { ...r, ...updates } : r)));\n };\n\n const addRule = () => {\n onChange([...value, { type: \"required\", message: \"This field is required\" }]);\n };\n\n const removeRule = (index: number) => {\n onChange(value.filter((_, i) => i !== index));\n };\n\n return (\n <div style={styles.container}>\n {value.length === 0 && (\n <div style={styles.empty}>No rules — field is optional by default.</div>\n )}\n\n {value.map((rule, index) => {\n const def = VALIDATION_RULES.find((r) => r.type === rule.type);\n return (\n <div key={index} style={styles.rule}>\n {/* Type/operator selector */}\n <select\n style={styles.typeSelect}\n value={rule.type}\n onChange={(e) => updateRule(index, { type: e.target.value as ValidationRuleType })}\n >\n {VALIDATION_RULES.map((r) => (\n <option key={r.type} value={r.type}>{r.label}</option>\n ))}\n </select>\n\n {/* Value — enum ref selector OR text input + optional enum value picker */}\n {def?.hasValue && (\n def.isEnum ? (\n <select\n style={{ ...styles.typeSelect, flex: \"0 0 140px\" }}\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n >\n <option value=\"\">— pick enum —</option>\n {externalEnums.map((en) => (\n <option key={en.id} value={en.id}>{en.label}</option>\n ))}\n </select>\n ) : (\n <div style={styles.valueGroup}>\n <input\n style={styles.valueInput}\n placeholder=\"value\"\n value={rule.value != null ? String(rule.value) : \"\"}\n onChange={(e) => updateRule(index, { value: e.target.value })}\n />\n {externalEnums.length > 0 && (\n <select\n style={styles.enumPicker}\n title=\"Pick a value from an enum\"\n value=\"\"\n onChange={(e) => {\n if (e.target.value) updateRule(index, { value: e.target.value });\n }}\n >\n <option value=\"\">⊞</option>\n {externalEnums.map((en) => (\n <optgroup key={en.id} label={en.label}>\n {en.values.map((v) => (\n <option key={String(v.value)} value={String(v.value)}>\n {v.label} ({v.value})\n </option>\n ))}\n </optgroup>\n ))}\n </select>\n )}\n </div>\n )\n )}\n\n {/* Custom validator ID */}\n {rule.type === \"custom\" && (\n <input\n style={styles.valueInput}\n placeholder=\"validatorId\"\n value={rule.customValidatorId ?? \"\"}\n onChange={(e) => updateRule(index, { customValidatorId: e.target.value })}\n />\n )}\n\n {/* Error message */}\n <input\n style={styles.messageInput}\n placeholder=\"error message\"\n value={rule.message}\n onChange={(e) => updateRule(index, { message: e.target.value })}\n />\n\n <button style={styles.removeBtn} onClick={() => removeRule(index)}>✕</button>\n </div>\n );\n })}\n\n <button style={styles.addBtn} onClick={addRule}>\n + Add rule\n </button>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", gap: 10 },\n empty: { fontSize: 13, color: \"var(--wp-text-subtle)\", textAlign: \"center\", padding: \"12px 0\" },\n rule: {\n display: \"flex\", alignItems: \"center\", gap: 8,\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", padding: \"8px 10px\",\n },\n typeSelect: {\n flex: \"0 0 150px\", fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n valueGroup: { display: \"flex\", alignItems: \"center\", gap: 4 },\n valueInput: {\n width: 90, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n enumPicker: {\n fontSize: 11, padding: \"4px 4px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", background: \"var(--wp-canvas)\", color: \"var(--wp-primary)\",\n cursor: \"pointer\", flexShrink: 0,\n },\n messageInput: {\n flex: 1, fontSize: 12, padding: \"5px 6px\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n minWidth: 0,\n },\n removeBtn: {\n border: \"none\", background: \"transparent\", color: \"var(--wp-danger)\",\n cursor: \"pointer\", fontSize: 13, flexShrink: 0,\n },\n addBtn: {\n fontSize: 12, padding: \"6px 12px\", background: \"var(--wp-surface-muted)\",\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500, alignSelf: \"flex-start\",\n color: \"var(--wp-text-secondary)\",\n },\n};\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { useAllFieldPaths } from \"../hooks/useAllFieldPaths\";\n\ninterface DependsOnInputProps {\n value: string[];\n onChange: (paths: string[]) => void;\n excludeStepId?: string;\n excludeFieldId?: string;\n}\n\nexport function DependsOnInput({\n value,\n onChange,\n excludeStepId,\n excludeFieldId,\n}: DependsOnInputProps) {\n const allPaths = useAllFieldPaths(excludeStepId, excludeFieldId);\n const [query, setQuery] = useState(\"\");\n const [open, setOpen] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const available = allPaths.filter(\n (p) => !value.includes(p.path) &&\n (p.path.toLowerCase().includes(query.toLowerCase()) ||\n p.label.toLowerCase().includes(query.toLowerCase()))\n );\n\n const add = (path: string) => {\n onChange([...value, path]);\n setQuery(\"\");\n setOpen(false);\n inputRef.current?.focus();\n };\n\n const remove = (path: string) => {\n onChange(value.filter((p) => p !== path));\n };\n\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const getLabel = (path: string) =>\n allPaths.find((p) => p.path === path)?.label ?? path;\n\n const isExternal = (path: string) => path.startsWith(\"$ext.\");\n\n return (\n <div ref={containerRef} style={styles.container}>\n {/* Selected tags */}\n <div style={styles.tags}>\n {value.map((path) => (\n <span key={path} style={{ ...styles.tag, ...(isExternal(path) ? styles.tagExt : {}) }}>\n {getLabel(path)}\n <button style={styles.tagRemove} onClick={() => remove(path)}>✕</button>\n </span>\n ))}\n\n {/* Input */}\n <input\n ref={inputRef}\n style={styles.input}\n placeholder={value.length === 0 ? \"Search fields or $ext vars…\" : \"Add more…\"}\n value={query}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onFocus={() => setOpen(true)}\n />\n </div>\n\n {/* Dropdown */}\n {open && (\n <div style={styles.dropdown}>\n {available.length === 0 && (\n <div style={styles.noResults}>\n {allPaths.length === 0\n ? \"No fields available in the tree yet.\"\n : \"No matching fields.\"}\n </div>\n )}\n {available.map((p) => (\n <button\n key={p.path}\n style={styles.option}\n onMouseDown={(e) => { e.preventDefault(); add(p.path); }}\n >\n <span style={styles.optionLabel}>{p.label}</span>\n <span style={styles.optionPath}>{p.path}</span>\n </button>\n ))}\n </div>\n )}\n\n {value.length > 0 && (\n <div style={styles.hint}>\n This field will be blocked until all dependencies have a value.\n </div>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { position: \"relative\" },\n tags: {\n display: \"flex\", flexWrap: \"wrap\", gap: 4,\n border: \"1px solid var(--wp-border-muted)\", borderRadius: \"var(--wp-radius)\",\n padding: \"4px 6px\", background: \"var(--wp-canvas)\", minHeight: 34, alignItems: \"center\",\n },\n tag: {\n display: \"flex\", alignItems: \"center\", gap: 4,\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n tagExt: { background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\" },\n tagRemove: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n color: \"inherit\", fontSize: 10, padding: 0, lineHeight: 1,\n },\n input: {\n flex: 1, minWidth: 140, fontSize: 12, border: \"none\",\n outline: \"none\", background: \"transparent\", padding: \"2px 4px\",\n color: \"var(--wp-text)\",\n },\n dropdown: {\n position: \"absolute\", top: \"calc(100% + 4px)\", left: 0, right: 0,\n background: \"var(--wp-canvas)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius-lg)\", boxShadow: \"0 4px 16px rgba(0,0,0,0.1)\",\n zIndex: 100, maxHeight: 200, overflowY: \"auto\",\n },\n noResults: { padding: \"10px 12px\", fontSize: 12, color: \"var(--wp-text-subtle)\", textAlign: \"center\" },\n option: {\n width: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"8px 12px\", border: \"none\", background: \"transparent\",\n cursor: \"pointer\", textAlign: \"left\", gap: 8,\n },\n optionLabel: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n optionPath: { fontSize: 10, fontFamily: \"monospace\", color: \"var(--wp-text-subtle)\" },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\", marginTop: 4 },\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\ninterface ModalProps {\n title: string;\n onClose: () => void;\n children: React.ReactNode;\n width?: number;\n}\n\nexport function Modal({ title, onClose, children, width = 560 }: ModalProps) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => { if (e.key === \"Escape\") onClose(); };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [onClose]);\n\n return (\n <div style={styles.overlay} onClick={onClose}>\n <div style={{ ...styles.panel, width }} onClick={(e) => e.stopPropagation()}>\n <div style={styles.header}>\n <span style={styles.title}>{title}</span>\n <button style={styles.closeBtn} onClick={onClose}>✕</button>\n </div>\n <div style={styles.body}>{children}</div>\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n overlay: {\n position: \"fixed\", inset: 0, background: \"rgba(0,0,0,0.4)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n zIndex: 1000,\n },\n panel: {\n background: \"var(--wp-canvas)\", borderRadius: 12,\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2)\",\n display: \"flex\", flexDirection: \"column\", maxHeight: \"80vh\", overflow: \"hidden\",\n },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"14px 20px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n closeBtn: {\n border: \"none\", background: \"transparent\", cursor: \"pointer\",\n fontSize: 14, color: \"var(--wp-text-subtle)\", padding: 4,\n },\n body: { overflowY: \"auto\", padding: 20, color: \"var(--wp-text)\" },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport type { ValidationRule } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderExternalEnums, useBuilderReadOnly } from \"../context\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { ValidationBuilder } from \"./ValidationBuilder\";\nimport { DependsOnInput } from \"./DependsOnInput\";\nimport { Modal } from \"./Modal\";\n\nconst ENUM_FIELD_TYPES = [\"select\", \"multiselect\", \"radio\"];\n\nexport function FieldEditor() {\n const {\n schema, selectedStepId, selectedFieldId,\n updateField, setFieldCondition,\n } = useBuilderStore();\n const readOnly = useBuilderReadOnly();\n const externalEnums = useBuilderExternalEnums();\n\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n const [validationModalOpen, setValidationModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n const field = step?.fields.find((f) => f.id === selectedFieldId);\n\n if (!field || !step) {\n return (\n <div style={styles.empty}>\n Select a field in the middle panel to edit its properties.\n </div>\n );\n }\n\n const validation = field.validation ?? [];\n const isRequired = validation.some((v) => v.type === \"required\");\n const hasCondition = !!field.visibleWhen;\n const ruleCount = field.visibleWhen?.rules.length ?? 0;\n\n const handleValidationChange = (rules: ValidationRule[]) => {\n updateField(step.id, field.id, { validation: rules.length ? rules : undefined });\n };\n\n const handleDependsOnChange = (paths: string[]) => {\n updateField(step.id, field.id, { dependsOn: paths.length ? paths : undefined });\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerLeft}>\n <span style={styles.headerTitle}>Field Editor</span>\n {!isRequired && <span style={styles.optionalBadge}>optional</span>}\n {isRequired && <span style={styles.requiredBadge}>required</span>}\n </div>\n <div style={styles.fieldId}>id: {field.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Label */}\n <div style={styles.group}>\n <label style={styles.label}>Label</label>\n <input\n style={styles.input}\n value={field.label}\n onChange={(e) => updateField(step.id, field.id, { label: e.target.value })}\n />\n </div>\n\n {/* Placeholder */}\n <div style={styles.group}>\n <label style={styles.label}>Placeholder</label>\n <input\n style={styles.input}\n value={field.placeholder ?? \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { placeholder: e.target.value || undefined })\n }\n />\n </div>\n\n {/* Default value */}\n <div style={styles.group}>\n <label style={styles.label}>Default value</label>\n <input\n style={styles.input}\n value={field.defaultValue != null ? String(field.defaultValue) : \"\"}\n placeholder=\"Optional\"\n onChange={(e) =>\n updateField(step.id, field.id, { defaultValue: e.target.value || undefined })\n }\n />\n </div>\n\n {/* External enum — shown for select/multiselect/radio when externalEnums are available */}\n {ENUM_FIELD_TYPES.includes(field.type) && externalEnums.length > 0 && (\n <div style={styles.group}>\n <label style={styles.label}>Options source</label>\n <select\n style={styles.input}\n disabled={readOnly}\n value={field.externalEnumId ?? \"\"}\n onChange={(e) => {\n const enumId = e.target.value || undefined;\n updateField(step.id, field.id, {\n externalEnumId: enumId,\n // Clear hardcoded options when switching to an enum\n options: enumId ? undefined : field.options,\n });\n }}\n >\n <option value=\"\">— Hardcoded options —</option>\n {externalEnums.map((en) => (\n <option key={en.id} value={en.id}>\n {en.label} ({en.values.length} items)\n </option>\n ))}\n </select>\n {field.externalEnumId && (\n <div style={styles.enumInfo}>\n {(() => {\n const en = externalEnums.find((e) => e.id === field.externalEnumId);\n return en ? (\n <span style={styles.enumBadge}>\n ⊞ {en.label} · {en.values.length} options\n </span>\n ) : (\n <span style={styles.enumMissing}>⚠ Enum \"{field.externalEnumId}\" not found</span>\n );\n })()}\n </div>\n )}\n </div>\n )}\n\n {/* Depends on */}\n <div style={styles.group}>\n <label style={styles.label}>Depends on</label>\n <DependsOnInput\n value={field.dependsOn ?? []}\n onChange={handleDependsOnChange}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {field.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>Field is conditional</span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button style={styles.editConditionBtn} onClick={() => setConditionModalOpen(true)}>\n {hasCondition ? \"Edit\" : \"Add\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setFieldCondition(step.id, field.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n\n <div style={styles.divider} />\n\n {/* Validation — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Validation</div>\n {validation.length > 0 ? (\n <div style={styles.conditionSummary}>\n <span style={styles.validationBadge}>\n {validation.length} rule{validation.length !== 1 ? \"s\" : \"\"}\n {isRequired ? \" · required\" : \"\"}\n </span>\n <span style={styles.conditionDesc}>\n {validation.map((r) => r.type).join(\", \")}\n </span>\n </div>\n ) : (\n <div style={styles.conditionNone}>No rules · field is optional</div>\n )}\n </div>\n <div style={styles.conditionActions}>\n <button style={styles.editConditionBtn} onClick={() => setValidationModalOpen(true)}>\n {validation.length > 0 ? \"Edit\" : \"Add\"}\n </button>\n {validation.length > 0 && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => updateField(step.id, field.id, { validation: undefined })}\n >\n Clear\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* Validation modal */}\n {validationModalOpen && (\n <Modal\n title={`Validation — \"${field.label}\"`}\n onClose={() => setValidationModalOpen(false)}\n width={680}\n >\n <p style={styles.modalHint}>\n Define validation rules for this field. All rules must pass for the field to be valid.\n </p>\n <ValidationBuilder\n value={validation}\n onChange={handleValidationChange}\n />\n <div style={styles.modalFooter}>\n <button style={styles.modalCloseBtn} onClick={() => setValidationModalOpen(false)}>\n Done\n </button>\n </div>\n </Modal>\n )}\n\n {/* Field condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${field.label}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this field is visible within its step.\n </p>\n <ConditionBuilder\n value={field.visibleWhen}\n onChange={(c) => setFieldCondition(step.id, field.id, c)}\n excludeStepId={step.id}\n excludeFieldId={field.id}\n />\n <div style={styles.modalFooter}>\n <button style={styles.modalCloseBtn} onClick={() => setConditionModalOpen(false)}>\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerLeft: { display: \"flex\", alignItems: \"center\", gap: 8 },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n optionalBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 4,\n },\n requiredBadge: {\n fontSize: 10, fontWeight: 600, padding: \"2px 7px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 4,\n },\n fieldId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: { display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8 },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n validationBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n enumInfo: { marginTop: 4 },\n enumBadge: {\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-info-bg)\", color: \"var(--wp-info-text)\", borderRadius: 4,\n },\n enumMissing: {\n fontSize: 11, fontWeight: 600, padding: \"2px 8px\",\n background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\", borderRadius: 4,\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","import type { ConditionGroup, WaypointSchema } from \"@waypointjs/core\";\n\n/**\n * For a given step, returns the set of step IDs it depends on.\n * A step depends on another when any of its fields:\n * - has a `dependsOn` path referencing that step (\"otherId.fieldId\")\n * - has a `visibleWhen` condition rule referencing that step\n * Or when the step itself has a `visibleWhen` condition referencing that step.\n */\n\nfunction extractStepIdsFromCondition(\n group: ConditionGroup | undefined,\n ownStepId: string\n): Set<string> {\n const ids = new Set<string>();\n if (!group) return ids;\n\n for (const rule of group.rules) {\n if (rule.field.startsWith(\"$ext.\")) continue;\n const dotIndex = rule.field.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = rule.field.slice(0, dotIndex);\n if (refStep !== ownStepId) ids.add(refStep);\n }\n\n for (const subGroup of group.groups ?? []) {\n for (const id of extractStepIdsFromCondition(subGroup, ownStepId)) {\n ids.add(id);\n }\n }\n\n return ids;\n}\n\n/** Returns a map: stepId → Set<stepId it depends on> */\nexport function computeStepDependencies(\n schema: WaypointSchema\n): Map<string, Set<string>> {\n const deps = new Map<string, Set<string>>();\n\n for (const step of schema.steps) {\n const required = new Set<string>();\n\n // Step-level condition\n for (const id of extractStepIdsFromCondition(step.visibleWhen, step.id)) {\n required.add(id);\n }\n\n // Field-level\n for (const field of step.fields) {\n // dependsOn paths\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== step.id) required.add(refStep);\n }\n\n // visibleWhen condition\n for (const id of extractStepIdsFromCondition(field.visibleWhen, step.id)) {\n required.add(id);\n }\n }\n\n deps.set(step.id, required);\n }\n\n return deps;\n}\n\n/**\n * Given the current step order and the dependency map,\n * returns whether moving the step at `fromIndex` to `toIndex` is valid.\n *\n * A move is invalid if it would place a step BEFORE one of its dependencies.\n */\nexport function isMoveValid(\n steps: WaypointSchema[\"steps\"],\n deps: Map<string, Set<string>>,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n // Simulate the new order\n const reordered = [...steps];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((s, i) => [s.id, i]));\n\n for (const step of reordered) {\n const stepIndex = indexById.get(step.id)!;\n const required = deps.get(step.id) ?? new Set();\n\n for (const depId of required) {\n const depIndex = indexById.get(depId);\n if (depIndex === undefined) continue; // dep step not in schema (external?)\n\n if (depIndex > stepIndex) {\n const depTitle = reordered.find((s) => s.id === depId)?.title ?? depId;\n return {\n valid: false,\n reason: `\"${step.title}\" depends on \"${depTitle}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n// ---------------------------------------------------------------------------\n// Field-level dependency helpers (within a single step)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns whether moving a field from `fromIndex` to `toIndex` within a step\n * is valid given intra-step `dependsOn` references.\n *\n * Only considers dependencies between fields within the same step\n * (cross-step deps are already enforced at the step level).\n */\nexport function isFieldMoveValid(\n fields: WaypointSchema[\"steps\"][number][\"fields\"],\n stepId: string,\n fromIndex: number,\n toIndex: number\n): { valid: boolean; reason?: string } {\n if (fromIndex === toIndex) return { valid: true };\n\n const reordered = [...fields];\n const [moved] = reordered.splice(fromIndex, 1);\n reordered.splice(toIndex, 0, moved);\n\n const indexById = new Map(reordered.map((f, i) => [f.id, i]));\n\n for (const field of reordered) {\n const fieldIndex = indexById.get(field.id)!;\n for (const path of field.dependsOn ?? []) {\n if (path.startsWith(\"$ext.\")) continue;\n const dotIndex = path.indexOf(\".\");\n if (dotIndex === -1) continue;\n const refStep = path.slice(0, dotIndex);\n if (refStep !== stepId) continue; // cross-step dep, not relevant here\n const refFieldId = path.slice(dotIndex + 1);\n const depIndex = indexById.get(refFieldId);\n if (depIndex === undefined) continue;\n if (depIndex > fieldIndex) {\n const depLabel = reordered.find((f) => f.id === refFieldId)?.label ?? refFieldId;\n return {\n valid: false,\n reason: `\"${field.label}\" depends on \"${depLabel}\" which must come first`,\n };\n }\n }\n }\n\n return { valid: true };\n}\n\n/**\n * Returns the human-readable label for a step's dependencies (other step titles).\n */\nexport function getStepDependencyLabels(\n stepId: string,\n deps: Map<string, Set<string>>,\n schema: WaypointSchema\n): string[] {\n const required = deps.get(stepId) ?? new Set();\n return [...required]\n .map((id) => schema.steps.find((s) => s.id === id)?.title ?? id)\n .filter(Boolean);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderReadOnly, useBuilderCustomTypes, useBuilderExternalEnums } from \"../context\";\nimport { isFieldMoveValid } from \"../utils/step-dependencies\";\n\nconst FIELD_TYPES = [\n \"text\", \"number\", \"email\", \"password\", \"tel\", \"url\",\n \"textarea\", \"select\", \"multiselect\", \"checkbox\", \"radio\", \"date\", \"file\",\n];\n\nexport function FieldList() {\n const {\n schema, selectedStepId, selectedFieldId,\n addField, removeField, duplicateField, updateField, selectField, reorderFields,\n } = useBuilderStore();\n const readOnly = useBuilderReadOnly();\n const appCustomTypes = useBuilderCustomTypes();\n const externalEnums = useBuilderExternalEnums();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n const allDependencyTargets = new Set<string>();\n for (const s of schema.steps) {\n for (const f of s.fields) {\n for (const dep of f.dependsOn ?? []) {\n allDependencyTargets.add(dep);\n }\n }\n }\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step on the left to manage its fields.\n </div>\n );\n }\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isFieldMoveValid(step.fields, step.id, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderFields(step.id, fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div>\n <div style={styles.stepTitle}>{step.title}</div>\n <div style={styles.stepSub}>{step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}</div>\n </div>\n {!readOnly && (\n <button style={styles.addBtn} onClick={() => addField(step.id)}>\n + Add field\n </button>\n )}\n </div>\n\n {moveError && (\n <div style={styles.errorBanner}>\n <span>⚠</span> {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {step.fields.length === 0 && (\n <div style={styles.emptyFields}>No fields yet. Click \"Add field\" to start.</div>\n )}\n {step.fields.map((field, index) => {\n const isSelected = field.id === selectedFieldId;\n const isRequired = field.validation?.some((v) => v.type === \"required\") ?? false;\n const hasCondition = !!field.visibleWhen;\n const hasDeps = (field.dependsOn?.length ?? 0) > 0;\n const enumDef = field.externalEnumId\n ? externalEnums.find((e) => e.id === field.externalEnumId)\n : undefined;\n const isUsedAsDep = allDependencyTargets.has(`${step.id}.${field.id}`);\n\n const canMoveUp = index > 0 &&\n isFieldMoveValid(step.fields, step.id, index, index - 1).valid;\n const canMoveDown = index < step.fields.length - 1 &&\n isFieldMoveValid(step.fields, step.id, index, index + 1).valid;\n\n const intraStepDeps = (field.dependsOn ?? [])\n .filter((p) => p.startsWith(`${step.id}.`))\n .map((p) => {\n const fieldId = p.slice(step.id.length + 1);\n return step.fields.find((f) => f.id === fieldId)?.label ?? fieldId;\n });\n\n const intraStepDependents = step.fields.filter((f) =>\n f.id !== field.id &&\n (f.dependsOn ?? []).includes(`${step.id}.${field.id}`)\n );\n\n return (\n <div\n key={field.id}\n style={{ ...styles.card, ...(isSelected ? styles.cardSelected : {}) }}\n onClick={() => selectField(field.id)}\n >\n <div style={styles.cardTop}>\n <div style={styles.cardLeft}>\n {(() => {\n const ct = appCustomTypes.find((c) => c.id === field.type);\n return (\n <span style={{ ...styles.typeBadge, ...(ct ? styles.typeBadgeCustom : {}) }}>\n {ct ? `${ct.icon ? ct.icon + \" \" : \"\"}${ct.label}` : field.type}\n </span>\n );\n })()}\n <span style={styles.fieldLabel}>{field.label}</span>\n </div>\n <div style={styles.cardRight}>\n {!readOnly && (\n <select\n style={styles.typeSelect}\n value={field.type}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) => {\n const newType = e.target.value;\n const customType = appCustomTypes.find((ct) => ct.id === newType);\n updateField(step.id, field.id, {\n type: newType,\n ...(customType?.defaultValidation\n ? { validation: customType.defaultValidation }\n : {}),\n });\n }}\n >\n {FIELD_TYPES.map((t) => (\n <option key={t} value={t}>{t}</option>\n ))}\n {appCustomTypes.length > 0 && (\n <optgroup label=\"Custom\">\n {appCustomTypes.map((ct) => (\n <option key={ct.id} value={ct.id}>\n {ct.icon ? `${ct.icon} ` : \"\"}{ct.label}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n )}\n {!readOnly && index > 0 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveUp ? {} : styles.iconBtnBlocked) }}\n title={canMoveUp ? \"Move up\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index - 1); }}\n >↑</button>\n )}\n {!readOnly && index < step.fields.length - 1 && (\n <button\n style={{ ...styles.iconBtn, ...(canMoveDown ? {} : styles.iconBtnBlocked) }}\n title={canMoveDown ? \"Move down\" : \"Can't move — dependency order required\"}\n onClick={(e) => { e.stopPropagation(); tryMove(index, index + 1); }}\n >↓</button>\n )}\n {!readOnly && (\n <button\n style={styles.iconBtn}\n title=\"Duplicate field\"\n onClick={(e) => { e.stopPropagation(); duplicateField(step.id, field.id); }}\n >⧉</button>\n )}\n {!readOnly && (\n <button\n style={{ ...styles.iconBtn, color: \"var(--wp-danger)\" }}\n title=\"Remove field\"\n onClick={(e) => { e.stopPropagation(); removeField(step.id, field.id); }}\n >✕</button>\n )}\n </div>\n </div>\n\n {/* Badges */}\n <div style={styles.badges}>\n {!isRequired && <span style={styles.badgeOptional}>optional</span>}\n {isRequired && <span style={styles.badgeRequired}>required</span>}\n {hasCondition && <span style={styles.badgeCondition}>conditional</span>}\n {hasDeps && <span style={styles.badgeDep}>depends on {field.dependsOn!.length}</span>}\n {isUsedAsDep && <span style={styles.badgeUsed}>← dependency</span>}\n {field.externalEnumId && (\n <span style={styles.badgeEnum}>\n ⊞ {enumDef ? enumDef.label : field.externalEnumId}\n </span>\n )}\n </div>\n\n {/* Intra-step dependency info */}\n {intraStepDeps.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {intraStepDeps.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {intraStepDependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {intraStepDependents.map((f) => (\n <span key={f.id} style={styles.depBadgeUsed}>{f.label}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n emptyFields: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n stepTitle: { fontWeight: 700, fontSize: 14, color: \"var(--wp-text)\" },\n stepSub: { fontSize: 11, color: \"var(--wp-text-subtle)\", marginTop: 2 },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardTop: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 },\n cardRight: { display: \"flex\", alignItems: \"center\", gap: 4, flexShrink: 0 },\n typeBadge: {\n fontSize: 10, background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\",\n padding: \"2px 7px\", borderRadius: 4, fontWeight: 600, flexShrink: 0,\n },\n typeBadgeCustom: {\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\",\n },\n fieldLabel: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\",\n overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\",\n },\n typeSelect: {\n fontSize: 11, border: \"1px solid var(--wp-border)\", borderRadius: 4,\n padding: \"2px 4px\", background: \"var(--wp-canvas)\", cursor: \"pointer\",\n color: \"var(--wp-text-secondary)\",\n },\n iconBtn: {\n width: 22, height: 22, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 11, color: \"var(--wp-text-subtle)\",\n },\n iconBtnBlocked: { color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4 },\n badges: { display: \"flex\", flexWrap: \"wrap\", gap: 4 },\n badgeOptional: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-surface-muted)\", color: \"var(--wp-text-subtle)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeRequired: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeCondition: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeDep: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeUsed: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 3, textTransform: \"uppercase\",\n },\n badgeEnum: {\n fontSize: 9, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-info-bg)\", color: \"var(--wp-info-text)\", borderRadius: 3,\n },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { useState, useEffect } from \"react\";\nimport type { StoreApi } from \"zustand\";\nimport { useWaypoint, useWaypointStep } from \"@waypointjs/react\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\nimport { resolveTree, getNextStep, getPreviousStep } from \"@waypointjs/core\";\nimport type { ExternalEnum, WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedField, SelectOption } from \"@waypointjs/core\";\nimport { DevPanel } from \"@waypointjs/devtools\";\n\ninterface PreviewPanelProps {\n store: StoreApi<WaypointRuntimeStore>;\n schema: WaypointSchema;\n externalEnums?: ExternalEnum[];\n onEdit?: () => void;\n}\n\nexport function PreviewPanel({ store, schema, externalEnums }: PreviewPanelProps) {\n const [done, setDone] = useState(false);\n\n const { tree, currentStep, progress } = useWaypoint(store, externalEnums);\n const stepId = currentStep?.definition.id ?? \"\";\n const { fields, stepData, setFieldValue } = useWaypointStep(store, stepId);\n\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n // External variable mocks — initialized with defaults based on type\n const extVarDefs = schema.externalVariables ?? [];\n const [mockVars, setMockVars] = useState<Record<string, unknown>>(() => {\n const initial: Record<string, unknown> = {};\n for (const v of extVarDefs) {\n initial[v.id] = v.type === \"boolean\" ? false : v.type === \"number\" ? 0 : \"\";\n }\n return initial;\n });\n\n // Sync mockVars → store whenever they change\n useEffect(() => {\n for (const [varId, value] of Object.entries(mockVars)) {\n store.getState().setExternalVar(varId, value);\n }\n }, [mockVars]); // eslint-disable-line react-hooks/exhaustive-deps\n\n function handleMockVarChange(varId: string, value: unknown) {\n setMockVars((prev) => ({ ...prev, [varId]: value }));\n }\n\n function handleNext() {\n // 1. Validate required fields\n const newErrors: Record<string, string> = {};\n for (const field of fields) {\n const isRequired = field.definition.validation?.some((r) => r.type === \"required\");\n if (isRequired) {\n const val = stepData[field.definition.id];\n if (val === undefined || val === null || val === \"\" || val === false) {\n const rule = field.definition.validation?.find((r) => r.type === \"required\");\n newErrors[field.definition.id] = rule?.message ?? \"Ce champ est requis\";\n }\n }\n }\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n setErrors({});\n\n // 2. Snapshot old step IDs\n const oldIds = tree.steps.map((s) => s.definition.id).join(\",\");\n\n // 3. Save current step data\n store.getState().setStepData(stepId, stepData);\n\n // 4. Re-resolve tree with new data\n const newData = store.getState().data;\n const newTree = resolveTree(schema, newData, store.getState().externalVars, externalEnums);\n const newIds = newTree.steps.map((s) => s.definition.id).join(\",\");\n\n // 5. Truncate history if tree changed\n if (oldIds !== newIds) {\n store.getState().truncateHistoryAt(stepId);\n }\n\n // 6. Navigate\n const next = getNextStep(newTree.steps, stepId);\n if (next) {\n store.getState().setCurrentStep(next.definition.id);\n } else {\n setDone(true);\n }\n }\n\n function handlePrev() {\n const prev = getPreviousStep(tree.steps, stepId);\n if (prev) store.getState().setCurrentStep(prev.definition.id);\n }\n\n function handleRestart() {\n store.getState().init(schema);\n // Re-apply mock vars after init (init clears externalVars)\n for (const [varId, value] of Object.entries(mockVars)) {\n store.getState().setExternalVar(varId, value);\n }\n setDone(false);\n setErrors({});\n }\n\n // Compute step index for status icons\n const currentIdx = tree.steps.findIndex(\n (s) => s.definition.id === currentStep?.definition.id\n );\n\n if (done) {\n return (\n <div style={styles.panel}>\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n {extVarDefs.length > 0 && (\n <MockVarPanel\n extVarDefs={extVarDefs}\n mockVars={mockVars}\n onChange={handleMockVarChange}\n />\n )}\n </div>\n <div style={styles.divider} />\n <div style={styles.rightCol}>\n <div style={styles.doneScreen}>\n <div style={styles.doneIcon}>✓</div>\n <div style={styles.doneTitle}>Parcours terminé !</div>\n <p style={styles.doneText}>\n Toutes les étapes ont été complétées avec succès.\n </p>\n <button style={styles.primaryBtn} onClick={handleRestart}>\n Recommencer\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.panel}>\n <DevPanel store={store} />\n\n {/* Left column — step list + mock vars */}\n <div style={styles.leftCol}>\n <StepList\n tree={tree}\n currentIdx={currentIdx}\n onSelect={(id) => store.getState().setCurrentStep(id)}\n />\n {extVarDefs.length > 0 && (\n <MockVarPanel\n extVarDefs={extVarDefs}\n mockVars={mockVars}\n onChange={handleMockVarChange}\n />\n )}\n </div>\n\n <div style={styles.divider} />\n\n {/* Right column — step renderer */}\n <div style={styles.rightCol}>\n <div style={styles.stepRenderer}>\n {/* Progress bar */}\n <div style={styles.progressTrack}>\n <div style={{ ...styles.progressFill, width: `${progress}%` }} />\n </div>\n\n {/* Step title */}\n <h2 style={styles.stepTitle}>\n {currentStep?.definition.title ?? \"\"}\n </h2>\n\n {/* Fields */}\n <div style={styles.fieldsContainer}>\n {fields.map((field) => (\n <FieldRenderer\n key={field.definition.id}\n field={field}\n value={stepData[field.definition.id]}\n error={errors[field.definition.id]}\n onChange={(val) => {\n setFieldValue(field.definition.id, val);\n if (errors[field.definition.id]) {\n setErrors((prev) => {\n const next = { ...prev };\n delete next[field.definition.id];\n return next;\n });\n }\n }}\n />\n ))}\n </div>\n\n {/* Navigation */}\n <div style={styles.navRow}>\n {currentIdx > 0 && (\n <button style={styles.secondaryBtn} onClick={handlePrev}>\n ← Précédent\n </button>\n )}\n <button style={{ ...styles.primaryBtn, marginLeft: \"auto\" }} onClick={handleNext}>\n {getNextStep(tree.steps, stepId) ? \"Continuer →\" : \"Terminer ✓\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StepList sub-component\n// ---------------------------------------------------------------------------\n\ninterface StepListProps {\n tree: { steps: { definition: { id: string; title: string } }[]; hiddenSteps: { definition: { id: string; title: string } }[] };\n currentIdx: number;\n onSelect: (id: string) => void;\n}\n\nfunction StepList({ tree, currentIdx, onSelect }: StepListProps) {\n const allSteps = [\n ...tree.steps.map((s) => ({ ...s, hidden: false })),\n ...tree.hiddenSteps.map((s) => ({ ...s, hidden: true })),\n ];\n\n return (\n <div style={styles.stepList}>\n <div style={styles.stepListTitle}>Étapes</div>\n {allSteps.map((step) => {\n const isVisible = !step.hidden;\n const visIdx = tree.steps.findIndex((s) => s.definition.id === step.definition.id);\n let status: \"done\" | \"current\" | \"upcoming\" | \"hidden\" = \"hidden\";\n if (isVisible) {\n if (visIdx < currentIdx) status = \"done\";\n else if (visIdx === currentIdx) status = \"current\";\n else status = \"upcoming\";\n }\n\n return (\n <div\n key={step.definition.id}\n style={{\n ...styles.stepItem,\n ...(status === \"current\" ? styles.stepItemCurrent : {}),\n ...(status === \"hidden\" ? styles.stepItemHidden : {}),\n cursor: status === \"done\" ? \"pointer\" : \"default\",\n }}\n onClick={() => {\n if (status === \"done\") onSelect(step.definition.id);\n }}\n >\n <span style={styles.stepStatus}>\n {status === \"done\" && \"✓\"}\n {status === \"current\" && \"→\"}\n {status === \"upcoming\" && \"○\"}\n {status === \"hidden\" && \"–\"}\n </span>\n <span style={styles.stepName}>{step.definition.title}</span>\n {status === \"hidden\" && <span style={styles.hiddenBadge}>hidden</span>}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MockVarPanel sub-component\n// ---------------------------------------------------------------------------\n\nimport type { ExternalVariable } from \"@waypointjs/core\";\n\ninterface MockVarPanelProps {\n extVarDefs: ExternalVariable[];\n mockVars: Record<string, unknown>;\n onChange: (varId: string, value: unknown) => void;\n}\n\nfunction MockVarPanel({ extVarDefs, mockVars, onChange }: MockVarPanelProps) {\n return (\n <div style={styles.mockPanel}>\n <div style={styles.mockPanelTitle}>\n <span>⚡ External Variables</span>\n <span style={styles.mockPanelHint}>mock values</span>\n </div>\n {extVarDefs.map((v) => (\n <div key={v.id} style={styles.mockVarRow}>\n <div style={styles.mockVarLabel}>\n <span style={styles.mockVarId}>${`ext.${v.id}`}</span>\n {v.blocking && <span style={styles.mockBlockingBadge}>!</span>}\n </div>\n {v.type === \"boolean\" ? (\n <label style={styles.mockCheckRow}>\n <input\n type=\"checkbox\"\n checked={Boolean(mockVars[v.id])}\n onChange={(e) => onChange(v.id, e.target.checked)}\n />\n <span style={{ fontSize: 11, color: \"var(--wp-text-muted)\" }}>\n {String(mockVars[v.id])}\n </span>\n </label>\n ) : (\n <input\n style={styles.mockInput}\n type={v.type === \"number\" ? \"number\" : \"text\"}\n value={String(mockVars[v.id] ?? \"\")}\n placeholder={v.label}\n onChange={(e) =>\n onChange(v.id, v.type === \"number\" ? Number(e.target.value) : e.target.value)\n }\n />\n )}\n </div>\n ))}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// FieldRenderer sub-component\n// ---------------------------------------------------------------------------\n\ninterface FieldRendererProps {\n field: ResolvedField;\n value: unknown;\n error?: string;\n onChange: (val: unknown) => void;\n}\n\nfunction FieldRenderer({ field, value, error, onChange }: FieldRendererProps) {\n const { definition } = field;\n const options: SelectOption[] = field.resolvedOptions ?? definition.options ?? [];\n const inputStyle = { ...styles.input, ...(error ? styles.inputError : {}) };\n\n return (\n <div style={styles.fieldGroup}>\n <label style={styles.label}>\n {definition.label}\n {definition.validation?.some((r) => r.type === \"required\") && (\n <span style={styles.required}> *</span>\n )}\n </label>\n\n {(definition.type === \"text\" ||\n definition.type === \"email\" ||\n definition.type === \"tel\" ||\n definition.type === \"password\" ||\n definition.type === \"url\" ||\n definition.type === \"number\" ||\n definition.type === \"date\") && (\n <input\n type={definition.type}\n style={inputStyle}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"textarea\" && (\n <textarea\n style={{ ...inputStyle, minHeight: 80, resize: \"vertical\" }}\n value={(value as string) ?? \"\"}\n placeholder={definition.placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n\n {definition.type === \"select\" && (\n <select\n style={inputStyle}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">— Choisir —</option>\n {options.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"multiselect\" && (\n <select\n style={{ ...inputStyle, minHeight: 80 }}\n multiple\n value={(value as string[]) ?? []}\n onChange={(e) => {\n const selected = Array.from(e.target.selectedOptions).map((o) => o.value);\n onChange(selected);\n }}\n >\n {options.map((opt) => (\n <option key={String(opt.value)} value={String(opt.value)}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n\n {definition.type === \"radio\" && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {options.map((opt) => (\n <label key={String(opt.value)} style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"radio\"\n name={definition.id}\n value={String(opt.value)}\n checked={value === String(opt.value)}\n onChange={() => onChange(String(opt.value))}\n />\n {opt.label}\n </label>\n ))}\n </div>\n )}\n\n {definition.type === \"checkbox\" && (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: 8, cursor: \"pointer\", fontSize: 13 }}>\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n {definition.placeholder ?? definition.label}\n </label>\n )}\n\n {error && <div style={styles.errorMsg}>{error}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nconst styles: Record<string, React.CSSProperties> = {\n panel: {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n },\n leftCol: {\n width: 220,\n flexShrink: 0,\n overflowY: \"auto\",\n borderRight: \"1px solid var(--wp-border)\",\n background: \"var(--wp-panel-bg)\",\n },\n divider: {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n },\n rightCol: {\n flex: 1,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"32px 24px\",\n },\n stepRenderer: {\n width: \"100%\",\n maxWidth: 520,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 20,\n },\n progressTrack: {\n height: 4,\n background: \"var(--wp-border)\",\n borderRadius: 2,\n overflow: \"hidden\",\n },\n progressFill: {\n height: \"100%\",\n background: \"var(--wp-primary)\",\n borderRadius: 2,\n transition: \"width 0.3s ease\",\n },\n stepTitle: {\n fontSize: 20,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n margin: 0,\n },\n fieldsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n },\n fieldGroup: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n label: {\n fontSize: 13,\n fontWeight: 600,\n color: \"var(--wp-text)\",\n },\n required: {\n color: \"var(--wp-danger)\",\n },\n input: {\n fontSize: 13,\n padding: \"8px 10px\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\",\n color: \"var(--wp-text)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n },\n inputError: {\n borderColor: \"var(--wp-danger)\",\n },\n errorMsg: {\n fontSize: 11,\n color: \"var(--wp-danger)\",\n marginTop: 2,\n },\n navRow: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n paddingTop: 8,\n },\n primaryBtn: {\n fontSize: 13,\n fontWeight: 600,\n padding: \"9px 20px\",\n background: \"var(--wp-primary)\",\n color: \"var(--wp-canvas)\",\n border: \"none\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n secondaryBtn: {\n fontSize: 13,\n fontWeight: 500,\n padding: \"9px 16px\",\n background: \"transparent\",\n color: \"var(--wp-text-muted)\",\n border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\",\n },\n // Step list\n stepList: {\n padding: \"16px 12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n },\n stepListTitle: {\n fontSize: 11,\n fontWeight: 700,\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.5px\",\n marginBottom: 8,\n },\n stepItem: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"6px 8px\",\n borderRadius: 6,\n fontSize: 12,\n color: \"var(--wp-text-muted)\",\n },\n stepItemCurrent: {\n background: \"var(--wp-primary-subtle, rgba(99,102,241,0.08))\",\n color: \"var(--wp-primary)\",\n fontWeight: 600,\n },\n stepItemHidden: {\n opacity: 0.45,\n },\n stepStatus: {\n fontSize: 11,\n width: 14,\n flexShrink: 0,\n textAlign: \"center\" as const,\n },\n stepName: {\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\" as const,\n },\n hiddenBadge: {\n fontSize: 9,\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: 4,\n background: \"var(--wp-border)\",\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.3px\",\n flexShrink: 0,\n },\n // Mock var panel\n mockPanel: {\n borderTop: \"1px solid var(--wp-border)\",\n padding: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n },\n mockPanelTitle: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: 11,\n fontWeight: 700,\n color: \"var(--wp-text-muted)\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.5px\",\n marginBottom: 4,\n },\n mockPanelHint: {\n fontSize: 9,\n fontWeight: 500,\n color: \"var(--wp-warning)\",\n textTransform: \"none\" as const,\n background: \"var(--wp-warning-bg)\",\n padding: \"1px 5px\",\n borderRadius: 4,\n },\n mockVarRow: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n gap: 3,\n },\n mockVarLabel: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n },\n mockVarId: {\n fontSize: 10,\n fontFamily: \"monospace\",\n fontWeight: 600,\n color: \"var(--wp-text-secondary)\",\n },\n mockBlockingBadge: {\n fontSize: 9,\n fontWeight: 700,\n width: 13,\n height: 13,\n borderRadius: \"50%\",\n background: \"var(--wp-danger-bg-strong)\",\n color: \"var(--wp-danger)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n } as React.CSSProperties,\n mockInput: {\n fontSize: 11,\n padding: \"4px 6px\",\n border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\",\n background: \"var(--wp-canvas)\",\n color: \"var(--wp-text)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n },\n mockCheckRow: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n cursor: \"pointer\",\n },\n // Done screen\n doneScreen: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: 12,\n paddingTop: 60,\n textAlign: \"center\" as const,\n },\n doneIcon: {\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n background: \"var(--wp-success-subtle, rgba(34,197,94,0.1))\",\n color: \"var(--wp-success, #22c55e)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 28,\n fontWeight: 700,\n },\n doneTitle: {\n fontSize: 22,\n fontWeight: 700,\n color: \"var(--wp-text)\",\n },\n doneText: {\n fontSize: 14,\n color: \"var(--wp-text-muted)\",\n margin: 0,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderReadOnly } from \"../context\";\nimport { ConditionBuilder } from \"./ConditionBuilder\";\nimport { Modal } from \"./Modal\";\n\nexport function StepEditor() {\n const { schema, selectedStepId, updateStep, setStepCondition } = useBuilderStore();\n const readOnly = useBuilderReadOnly();\n const [conditionModalOpen, setConditionModalOpen] = useState(false);\n\n const step = schema.steps.find((s) => s.id === selectedStepId);\n\n if (!step) {\n return (\n <div style={styles.empty}>\n Select a step to configure its properties.\n </div>\n );\n }\n\n const hasCondition = !!step.visibleWhen;\n const ruleCount = step.visibleWhen?.rules.length ?? 0;\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <div style={styles.headerTitle}>Step Config</div>\n <div style={styles.stepId}>id: {step.id}</div>\n </div>\n\n <div style={styles.body}>\n {/* Title */}\n <div style={styles.group}>\n <label style={styles.label}>Title</label>\n <input\n style={styles.input}\n value={step.title}\n placeholder=\"Step title\"\n readOnly={readOnly}\n onChange={readOnly ? undefined : (e) => updateStep(step.id, { title: e.target.value })}\n />\n </div>\n\n {/* URL */}\n <div style={styles.group}>\n <label style={styles.label}>URL</label>\n <input\n style={styles.input}\n value={step.url}\n placeholder=\"/onboarding/step-name\"\n readOnly={readOnly}\n onChange={readOnly ? undefined : (e) => updateStep(step.id, { url: e.target.value })}\n />\n <div style={styles.hint}>Supports {\"{{PARAM}}\"} placeholders</div>\n </div>\n\n {/* Resume */}\n <div style={styles.checkRow}>\n <input\n type=\"checkbox\"\n id={`resume-${step.id}`}\n checked={!!step.enableResumeFromHere}\n disabled={readOnly}\n onChange={readOnly ? undefined : (e) =>\n updateStep(step.id, { enableResumeFromHere: e.target.checked || undefined })\n }\n />\n <label htmlFor={`resume-${step.id}`} style={styles.checkLabel}>\n Resume from this step\n </label>\n </div>\n\n <div style={styles.divider} />\n\n {/* Visibility condition — summary */}\n <div style={styles.conditionRow}>\n <div style={styles.conditionInfo}>\n <div style={styles.label}>Visibility condition</div>\n {hasCondition ? (\n <div style={styles.conditionSummary}>\n <span style={styles.conditionBadge}>\n {ruleCount} rule{ruleCount !== 1 ? \"s\" : \"\"} · {step.visibleWhen!.combinator.toUpperCase()}\n </span>\n <span style={styles.conditionDesc}>\n Step is conditional\n </span>\n </div>\n ) : (\n <div style={styles.conditionNone}>Always visible</div>\n )}\n </div>\n {!readOnly && (\n <div style={styles.conditionActions}>\n <button\n style={styles.editConditionBtn}\n onClick={() => setConditionModalOpen(true)}\n >\n {hasCondition ? \"Edit\" : \"Add condition\"}\n </button>\n {hasCondition && (\n <button\n style={styles.clearConditionBtn}\n onClick={() => setStepCondition(step.id, undefined)}\n >\n Clear\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Condition modal */}\n {conditionModalOpen && (\n <Modal\n title={`Condition — \"${step.title}\"`}\n onClose={() => setConditionModalOpen(false)}\n width={620}\n >\n <p style={styles.modalHint}>\n Define when this step is visible. Leave empty to always show it.\n </p>\n <ConditionBuilder\n value={step.visibleWhen}\n onChange={(c) => setStepCondition(step.id, c)}\n />\n <div style={styles.modalFooter}>\n <button\n style={styles.modalCloseBtn}\n onClick={() => setConditionModalOpen(false)}\n >\n Done\n </button>\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\", overflow: \"hidden\" },\n empty: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n height: \"100%\", color: \"var(--wp-text-subtle)\", fontSize: 13, textAlign: \"center\", padding: 32,\n },\n header: {\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\",\n },\n headerTitle: { fontWeight: 700, fontSize: 13, color: \"var(--wp-text)\" },\n stepId: { fontSize: 10, color: \"var(--wp-text-subtle)\", fontFamily: \"monospace\" },\n body: { flex: 1, overflowY: \"auto\", padding: 16, display: \"flex\", flexDirection: \"column\", gap: 12 },\n group: { display: \"flex\", flexDirection: \"column\", gap: 4 },\n label: { fontSize: 11, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\", letterSpacing: \"0.05em\" },\n input: {\n fontSize: 13, padding: \"6px 8px\", border: \"1px solid var(--wp-border-muted)\",\n borderRadius: \"var(--wp-radius)\", outline: \"none\",\n background: \"var(--wp-canvas)\", color: \"var(--wp-text)\",\n },\n hint: { fontSize: 10, color: \"var(--wp-text-subtle)\" },\n checkRow: { display: \"flex\", alignItems: \"center\", gap: 8 },\n checkLabel: { fontSize: 13, color: \"var(--wp-text-secondary)\" },\n divider: { height: 1, background: \"var(--wp-border)\" },\n conditionRow: {\n display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: 8,\n },\n conditionInfo: { display: \"flex\", flexDirection: \"column\", gap: 6, flex: 1 },\n conditionSummary: { display: \"flex\", alignItems: \"center\", gap: 8 },\n conditionBadge: {\n fontSize: 11, fontWeight: 700, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"2px 8px\", borderRadius: 4,\n },\n conditionDesc: { fontSize: 11, color: \"var(--wp-text-subtle)\" },\n conditionNone: { fontSize: 12, color: \"var(--wp-text-subtle)\", fontStyle: \"italic\" },\n conditionActions: { display: \"flex\", gap: 6, flexShrink: 0, alignItems: \"flex-start\", marginTop: 16 },\n editConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n clearConditionBtn: {\n fontSize: 11, padding: \"4px 10px\", background: \"var(--wp-danger-bg-strong)\", color: \"var(--wp-danger)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\",\n },\n modalHint: { fontSize: 13, color: \"var(--wp-text-muted)\", marginBottom: 16, marginTop: 0 },\n modalFooter: { marginTop: 20, display: \"flex\", justifyContent: \"flex-end\" },\n modalCloseBtn: {\n fontSize: 13, padding: \"7px 20px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius-lg)\", cursor: \"pointer\", fontWeight: 600,\n },\n};\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { useBuilderReadOnly } from \"../context\";\nimport {\n computeStepDependencies,\n getStepDependencyLabels,\n isMoveValid,\n} from \"../utils/step-dependencies\";\n\nexport function StepList() {\n const { schema, selectedStepId, addStep, removeStep, duplicateStep, selectStep, reorderSteps } =\n useBuilderStore();\n const readOnly = useBuilderReadOnly();\n\n const [moveError, setMoveError] = useState<string | null>(null);\n\n const steps = schema.steps;\n const deps = computeStepDependencies(schema);\n\n const tryMove = (fromIndex: number, toIndex: number) => {\n const check = isMoveValid(steps, deps, fromIndex, toIndex);\n if (!check.valid) {\n setMoveError(check.reason ?? \"Invalid move\");\n setTimeout(() => setMoveError(null), 3000);\n return;\n }\n setMoveError(null);\n reorderSteps(fromIndex, toIndex);\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <span style={styles.title}>Steps ({steps.length})</span>\n {!readOnly && (\n <button style={styles.addBtn} onClick={() => addStep()}>\n + Add step\n </button>\n )}\n </div>\n\n {/* Dependency violation error */}\n {moveError && (\n <div style={styles.errorBanner}>\n <span style={styles.errorIcon}>⚠</span>\n {moveError}\n </div>\n )}\n\n <div style={styles.list}>\n {steps.length === 0 && (\n <div style={styles.empty}>No steps yet. Click \"Add step\" to start.</div>\n )}\n\n {steps.map((step, index) => {\n const isSelected = step.id === selectedStepId;\n const hasCondition = !!step.visibleWhen;\n const depLabels = getStepDependencyLabels(step.id, deps, schema);\n\n const canMoveUp =\n index > 0 && isMoveValid(steps, deps, index, index - 1).valid;\n const canMoveDown =\n index < steps.length - 1 &&\n isMoveValid(steps, deps, index, index + 1).valid;\n\n const dependents = steps.filter((s) =>\n (deps.get(s.id) ?? new Set()).has(step.id)\n );\n\n return (\n <div\n key={step.id}\n style={{\n ...styles.card,\n ...(isSelected ? styles.cardSelected : {}),\n }}\n onClick={() => selectStep(step.id)}\n >\n <div style={styles.cardMain}>\n <div style={styles.cardLeft}>\n <div style={styles.cardIndex}>{index + 1}</div>\n <div style={{ minWidth: 0 }}>\n <div style={styles.cardTitle}>{step.title}</div>\n <div style={styles.cardMeta}>\n {step.fields.length} field{step.fields.length !== 1 ? \"s\" : \"\"}\n {hasCondition && (\n <span style={styles.conditionBadge}>conditional</span>\n )}\n </div>\n </div>\n </div>\n\n {!readOnly && (\n <div style={styles.cardActions}>\n {index > 0 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveUp ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveUp\n ? \"Move up\"\n : `Can't move up — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index - 1);\n }}\n >\n ↑\n </button>\n )}\n {index < steps.length - 1 && (\n <button\n style={{\n ...styles.iconBtn,\n ...(canMoveDown ? {} : styles.iconBtnBlocked),\n }}\n title={\n canMoveDown\n ? \"Move down\"\n : `Can't move down — dependency order required`\n }\n onClick={(e) => {\n e.stopPropagation();\n tryMove(index, index + 1);\n }}\n >\n ↓\n </button>\n )}\n <button\n style={styles.iconBtn}\n title=\"Duplicate step\"\n onClick={(e) => {\n e.stopPropagation();\n duplicateStep(step.id);\n }}\n >\n ⧉\n </button>\n <button\n style={{ ...styles.iconBtn, ...styles.deleteBtn }}\n title=\"Remove step\"\n onClick={(e) => {\n e.stopPropagation();\n removeStep(step.id);\n }}\n >\n ✕\n </button>\n </div>\n )}\n </div>\n\n {/* Dependency info */}\n {depLabels.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabel}>needs:</span>\n {depLabels.map((label) => (\n <span key={label} style={styles.depBadge}>{label}</span>\n ))}\n </div>\n )}\n {dependents.length > 0 && (\n <div style={styles.depRow}>\n <span style={styles.depLabelUsed}>used by:</span>\n {dependents.map((s) => (\n <span key={s.id} style={styles.depBadgeUsed}>{s.title}</span>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n container: { display: \"flex\", flexDirection: \"column\", height: \"100%\" },\n header: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"12px 16px\", borderBottom: \"1px solid var(--wp-border)\",\n },\n title: { fontWeight: 600, fontSize: 13, color: \"var(--wp-text-secondary)\" },\n addBtn: {\n fontSize: 12, padding: \"4px 10px\", background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\",\n border: \"none\", borderRadius: \"var(--wp-radius)\", cursor: \"pointer\", fontWeight: 500,\n },\n errorBanner: {\n margin: \"8px 8px 0\", padding: \"8px 12px\", background: \"var(--wp-danger-bg)\",\n border: \"1px solid var(--wp-danger-border)\", borderRadius: \"var(--wp-radius-lg)\", fontSize: 12,\n color: \"var(--wp-danger-text)\", display: \"flex\", alignItems: \"center\", gap: 6,\n },\n errorIcon: { fontSize: 14 },\n list: { flex: 1, overflowY: \"auto\", padding: 8 },\n empty: { padding: 24, textAlign: \"center\", color: \"var(--wp-text-subtle)\", fontSize: 13 },\n card: {\n padding: \"10px 12px\", borderRadius: \"var(--wp-radius-lg)\", marginBottom: 4,\n border: \"1px solid transparent\", cursor: \"pointer\",\n background: \"var(--wp-surface)\", transition: \"all 0.1s\",\n display: \"flex\", flexDirection: \"column\", gap: 6,\n },\n cardSelected: { background: \"var(--wp-primary-muted)\", border: \"1px solid var(--wp-primary-border)\" },\n cardMain: { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\n cardLeft: { display: \"flex\", alignItems: \"center\", gap: 10, minWidth: 0, flex: 1 },\n cardIndex: {\n width: 24, height: 24, borderRadius: \"50%\", background: \"var(--wp-border)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n fontSize: 11, fontWeight: 700, color: \"var(--wp-text-muted)\", flexShrink: 0,\n },\n cardTitle: { fontSize: 13, fontWeight: 600, color: \"var(--wp-text)\" },\n cardMeta: {\n fontSize: 11, color: \"var(--wp-text-subtle)\", display: \"flex\",\n alignItems: \"center\", gap: 6, marginTop: 2,\n },\n conditionBadge: {\n fontSize: 10, background: \"var(--wp-warning-bg)\", color: \"var(--wp-warning)\",\n padding: \"1px 6px\", borderRadius: 4, fontWeight: 600,\n },\n cardActions: { display: \"flex\", gap: 4, flexShrink: 0 },\n iconBtn: {\n width: 24, height: 24, border: \"none\", background: \"transparent\",\n cursor: \"pointer\", borderRadius: 4, fontSize: 12, color: \"var(--wp-text-subtle)\",\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n },\n iconBtnBlocked: {\n color: \"var(--wp-border-muted)\", cursor: \"not-allowed\", opacity: 0.4,\n },\n deleteBtn: { color: \"var(--wp-danger)\" },\n depRow: { display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: 4 },\n depLabel: { fontSize: 10, fontWeight: 600, color: \"var(--wp-text-muted)\", textTransform: \"uppercase\" },\n depLabelUsed: { fontSize: 10, fontWeight: 600, color: \"var(--wp-success)\", textTransform: \"uppercase\" },\n depBadge: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-primary-bg)\", color: \"var(--wp-primary-dark)\", borderRadius: 4,\n },\n depBadgeUsed: {\n fontSize: 10, fontWeight: 600, padding: \"1px 6px\",\n background: \"var(--wp-success-bg)\", color: \"var(--wp-success)\", borderRadius: 4,\n },\n};\n","import { validateSchema } from \"@waypointjs/core\";\nimport { useBuilderStore } from \"../store/builder-store\";\n\ninterface ToolbarProps {\n onSave?: (schema: ReturnType<typeof useBuilderStore.getState>[\"schema\"]) => void | Promise<void>;\n previewMode?: boolean;\n onTest?: () => void;\n isMobile?: boolean;\n readOnly?: boolean;\n}\n\nexport function Toolbar({ onSave, previewMode, onTest, isMobile, readOnly }: ToolbarProps) {\n const { schema, isDirty, resetSchema } = useBuilderStore();\n\n const handleExport = () => {\n const json = JSON.stringify(schema, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${schema.id}.waypoint.json`;\n a.click();\n URL.revokeObjectURL(url);\n };\n\n const handleImport = () => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n try {\n const parsed = JSON.parse(ev.target?.result as string);\n const result = validateSchema(parsed);\n if (!result.valid) {\n alert(`Invalid schema:\\n\\n${result.errors.map((e) => `• ${e}`).join(\"\\n\")}`);\n return;\n }\n useBuilderStore.getState().loadSchema(parsed);\n } catch {\n alert(\"Invalid JSON file — could not parse\");\n }\n };\n reader.readAsText(file);\n };\n input.click();\n };\n\n if (previewMode) {\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n <span style={styles.logo}>◈ waypoint</span>\n <span style={styles.separator}>/</span>\n <button\n style={{ ...styles.btn, ...styles.editBtn }}\n onClick={onTest}\n >\n ← Éditer\n </button>\n </div>\n <div style={styles.right}>\n <span style={{ fontSize: 12, color: \"var(--wp-text-muted)\", fontStyle: \"italic\" }}>\n Mode aperçu\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div style={styles.toolbar}>\n <div style={styles.left}>\n {!isMobile && <span style={styles.logo}>◈ waypoint</span>}\n {!isMobile && <span style={styles.separator}>/</span>}\n <input\n style={{\n ...styles.journeyName,\n ...(isMobile ? { maxWidth: 120, fontSize: 12 } : {}),\n }}\n value={schema.name}\n placeholder=\"Journey name\"\n onChange={(e) =>\n useBuilderStore.setState((s) => ({\n schema: { ...s.schema, name: e.target.value },\n isDirty: true,\n }))\n }\n />\n {isDirty && <span style={styles.dirtyDot} title=\"Unsaved changes\" />}\n </div>\n\n <div style={styles.right}>\n {readOnly && (\n <span style={styles.readOnlyBadge}>View only</span>\n )}\n {!readOnly && onTest && (\n <button style={{ ...styles.btn, ...styles.testBtn }} onClick={onTest} title=\"Tester\">\n {isMobile ? \"▶\" : \"▶ Tester\"}\n </button>\n )}\n {!readOnly && (\n <button style={styles.btn} onClick={handleImport} title=\"Import\">\n {isMobile ? \"↓\" : \"Import\"}\n </button>\n )}\n <button style={styles.btn} onClick={handleExport} title=\"Export JSON\">\n {isMobile ? \"↑\" : \"Export JSON\"}\n </button>\n {!readOnly && onSave && (\n <button\n style={{ ...styles.btn, ...styles.saveBtn }}\n onClick={() => onSave(schema)}\n title=\"Save\"\n >\n {isMobile ? \"✓\" : \"Save\"}\n </button>\n )}\n {!readOnly && (\n <button\n style={{ ...styles.btn, color: \"var(--wp-danger)\" }}\n title=\"Reset\"\n onClick={() => {\n if (confirm(\"Reset the journey? All changes will be lost.\")) resetSchema();\n }}\n >\n {isMobile ? \"⟳\" : \"Reset\"}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nconst styles: Record<string, React.CSSProperties> = {\n toolbar: {\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n padding: \"0 16px\", height: 48, background: \"var(--wp-toolbar-bg)\",\n borderBottom: \"1px solid var(--wp-toolbar-border)\", flexShrink: 0,\n },\n left: { display: \"flex\", alignItems: \"center\", gap: 8 },\n logo: { fontSize: 14, fontWeight: 800, color: \"var(--wp-toolbar-logo)\", letterSpacing: \"-0.5px\" },\n separator: { color: \"var(--wp-toolbar-text-subtle)\", fontSize: 16 },\n journeyName: {\n fontSize: 13, fontWeight: 600, color: \"var(--wp-toolbar-text)\",\n background: \"transparent\", border: \"none\", outline: \"none\",\n borderBottom: \"1px solid transparent\",\n },\n dirtyDot: {\n width: 6, height: 6, borderRadius: \"50%\", background: \"var(--wp-warning-strong)\",\n flexShrink: 0,\n },\n right: { display: \"flex\", alignItems: \"center\", gap: 8 },\n btn: {\n fontSize: 12, padding: \"5px 12px\", border: \"1px solid var(--wp-toolbar-border)\",\n background: \"transparent\", color: \"var(--wp-toolbar-text-muted)\", borderRadius: \"var(--wp-radius)\",\n cursor: \"pointer\", fontWeight: 500,\n },\n saveBtn: { background: \"var(--wp-primary)\", color: \"var(--wp-canvas)\", border: \"1px solid var(--wp-primary)\" },\n readOnlyBadge: {\n fontSize: 11, fontWeight: 600, color: \"var(--wp-text-subtle)\",\n background: \"var(--wp-surface)\", border: \"1px solid var(--wp-border)\",\n borderRadius: \"var(--wp-radius)\", padding: \"3px 8px\",\n },\n testBtn: { background: \"var(--wp-success, #22c55e)\", color: \"#fff\", border: \"1px solid var(--wp-success, #22c55e)\", fontWeight: 600 },\n editBtn: { background: \"transparent\", color: \"var(--wp-toolbar-text)\", border: \"none\", fontWeight: 600, cursor: \"pointer\", fontSize: 13, padding: \"5px 0\" },\n};\n","\"use client\";\n\nimport type { WaypointSchema, CustomTypeDefinition, ExternalEnum } from \"@waypointjs/core\";\nimport { createRuntimeStore } from \"@waypointjs/core\";\nimport type { RuntimeStore } from \"@waypointjs/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { buildThemeVars, type WaypointTheme } from \"../theme\";\nimport { useBuilderStore } from \"../store/builder-store\";\nimport { BuilderReadOnlyContext, BuilderCustomTypesContext, BuilderExternalEnumsContext } from \"../context\";\nimport { ExternalVariablePanel } from \"./ExternalVariablePanel\";\nimport { FieldEditor } from \"./FieldEditor\";\nimport { FieldList } from \"./FieldList\";\nimport { PreviewPanel } from \"./PreviewPanel\";\nimport { StepEditor } from \"./StepEditor\";\nimport { StepList } from \"./StepList\";\nimport { Toolbar } from \"./Toolbar\";\n\ntype MobileTab = \"steps\" | \"fields\" | \"config\";\n\nexport interface WaypointBuilderProps {\n /** Initial schema to load into the builder */\n defaultValue?: WaypointSchema;\n /** Called whenever the schema changes */\n onChange?: (schema: WaypointSchema) => void;\n /** Called when the user clicks \"Save\" */\n onSave?: (schema: WaypointSchema) => void | Promise<void>;\n /** Theme override — partial or full WaypointTheme */\n theme?: WaypointTheme;\n /** CSS class applied to the root element */\n className?: string;\n /** Inline style applied to the root element */\n style?: React.CSSProperties;\n /** Disable all editing — view-only mode */\n readOnly?: boolean;\n /** Custom field types provided by the host app — appear in the field type dropdown */\n appCustomTypes?: CustomTypeDefinition[];\n /** External enum lists — select/multiselect/radio fields can reference them by id */\n externalEnums?: ExternalEnum[];\n}\n\nexport function WaypointBuilder({\n defaultValue,\n onChange,\n onSave,\n theme,\n className,\n style,\n readOnly = false,\n appCustomTypes = [],\n externalEnums = [],\n}: WaypointBuilderProps) {\n const { loadSchema, schema, selectedStepId, selectedFieldId } = useBuilderStore();\n const [previewMode, setPreviewMode] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n const [activeTab, setActiveTab] = useState<MobileTab>(\"steps\");\n\n // Preview store — singleton, no localStorage persistence\n const previewStoreRef = useRef<RuntimeStore | null>(null);\n if (previewStoreRef.current === null) {\n previewStoreRef.current = createRuntimeStore();\n }\n\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth < 640);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, []);\n\n useEffect(() => {\n if (defaultValue) loadSchema(defaultValue);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n onChange?.(schema);\n }, [schema, onChange]);\n\n // Auto-navigate on mobile: selecting a step → Fields tab\n useEffect(() => {\n if (isMobile && selectedStepId) setActiveTab(\"fields\");\n }, [selectedStepId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Auto-navigate on mobile: selecting a field → Config tab\n useEffect(() => {\n if (isMobile && selectedFieldId) setActiveTab(\"config\");\n }, [selectedFieldId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n function handleTest() {\n previewStoreRef.current!.getState().init(schema);\n setPreviewMode(true);\n }\n\n const themeVars = buildThemeVars(theme);\n\n return (\n <BuilderReadOnlyContext.Provider value={readOnly}>\n <BuilderCustomTypesContext.Provider value={appCustomTypes}>\n <BuilderExternalEnumsContext.Provider value={externalEnums}>\n <div className={className} style={{ ...rootStyle, ...themeVars, ...style }}>\n <Toolbar\n isMobile={isMobile}\n readOnly={readOnly}\n onSave={!previewMode && !readOnly && onSave ? () => onSave(schema) : undefined}\n previewMode={previewMode}\n onTest={!readOnly ? (previewMode ? () => setPreviewMode(false) : handleTest) : undefined}\n />\n {previewMode ? (\n <PreviewPanel\n store={previewStoreRef.current}\n schema={schema}\n externalEnums={externalEnums}\n onEdit={() => setPreviewMode(false)}\n />\n ) : isMobile ? (\n <>\n {/* Steps panel */}\n <div style={{ ...colStyle, display: activeTab === \"steps\" ? \"flex\" : \"none\" }}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 200 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Fields panel */}\n <div style={{ ...colStyle, display: activeTab === \"fields\" ? \"flex\" : \"none\" }}>\n <FieldList />\n </div>\n\n {/* Config panel */}\n <div style={{ ...colStyle, display: activeTab === \"config\" ? \"flex\" : \"none\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n\n {/* Bottom tab bar */}\n <div style={tabBarStyle}>\n {([\"steps\", \"fields\", \"config\"] as MobileTab[]).map((tab) => (\n <button\n key={tab}\n style={{ ...tabBtnStyle, ...(activeTab === tab ? tabBtnActiveStyle : {}) }}\n onClick={() => setActiveTab(tab)}\n >\n <span style={{ fontSize: 14 }}>\n {tab === \"steps\" ? \"⚡\" : tab === \"fields\" ? \"⊞\" : \"⚙\"}\n </span>\n <span style={{ fontSize: 11, fontWeight: 600, textTransform: \"capitalize\" }}>\n {tab}\n </span>\n </button>\n ))}\n </div>\n </>\n ) : (\n <div style={layoutStyle}>\n {/* Column 1 — Steps + External Variables */}\n <div style={colStyle}>\n <div style={{ flex: 1, overflow: \"hidden\", display: \"flex\", flexDirection: \"column\" }}>\n <StepList />\n </div>\n <div style={{ borderTop: \"1px solid var(--wp-border)\", flexShrink: 0, overflow: \"auto\", maxHeight: 280 }}>\n <ExternalVariablePanel />\n </div>\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 2 — Fields */}\n <div style={colStyle}>\n <FieldList />\n </div>\n\n {/* Divider */}\n <div style={dividerStyle} />\n\n {/* Column 3 — Step config + Field editor */}\n <div style={{ ...colStyle, flex: 1.2, display: \"flex\", flexDirection: \"column\" }}>\n <div style={{ flex: 1, borderBottom: \"1px solid var(--wp-border)\", overflow: \"hidden\" }}>\n <StepEditor />\n </div>\n <div style={{ flex: 1, overflow: \"hidden\" }}>\n <FieldEditor />\n </div>\n </div>\n </div>\n )}\n </div>\n </BuilderExternalEnumsContext.Provider>\n </BuilderCustomTypesContext.Provider>\n </BuilderReadOnlyContext.Provider>\n );\n}\n\nconst rootStyle: React.CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n background: \"var(--wp-canvas)\",\n borderRadius: 12,\n border: \"1px solid var(--wp-border)\",\n overflow: \"hidden\",\n fontFamily: \"var(--wp-font)\",\n};\n\nconst layoutStyle: React.CSSProperties = {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n};\n\nconst colStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n minWidth: 0,\n};\n\nconst dividerStyle: React.CSSProperties = {\n width: 1,\n background: \"var(--wp-border)\",\n flexShrink: 0,\n};\n\nconst tabBarStyle: React.CSSProperties = {\n display: \"flex\",\n borderTop: \"1px solid var(--wp-border)\",\n background: \"var(--wp-toolbar-bg)\",\n flexShrink: 0,\n};\n\nconst tabBtnStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 3,\n padding: \"8px 4px\",\n border: \"none\",\n background: \"transparent\",\n color: \"var(--wp-text-subtle)\",\n cursor: \"pointer\",\n};\n\nconst tabBtnActiveStyle: React.CSSProperties = {\n color: \"var(--wp-primary)\",\n borderTop: \"2px solid var(--wp-primary)\",\n};\n"]}
|