@invinite-org/chartlang-adapter-kit 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -0
- package/dist/capabilities/capabilities.d.ts +9 -7
- package/dist/capabilities/capabilities.d.ts.map +1 -1
- package/dist/capabilities/capabilities.js +14 -8
- package/dist/capabilities/capabilities.js.map +1 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validation/validateEmission.d.ts.map +1 -1
- package/dist/validation/validateEmission.js +47 -0
- package/dist/validation/validateEmission.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateEmission.js","sourceRoot":"","sources":["../../src/validation/validateEmission.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport { DRAWING_KINDS, type DrawingKind } from \"@invinite-org/chartlang-core\";\n\nimport type { DiagnosticCode } from \"../types.js\";\n\n/**\n * Successful validation. `e` was a well-formed Phase-1 emission and is\n * safe to forward across the structured-clone boundary.\n *\n * @since 0.1\n * @stable\n * @example\n * const r: ValidationOk = { ok: true };\n */\nexport type ValidationOk = { readonly ok: true };\n\n/**\n * Failed validation. `code` is `\"malformed-emission\"` for shape errors\n * and `\"unsupported-drawing-kind\"` for the Phase-1 drawing stub.\n *\n * @since 0.1\n * @stable\n * @example\n * const r: ValidationFail = {\n * ok: false,\n * code: \"malformed-emission\",\n * message: \"not an object\",\n * };\n */\nexport type ValidationFail = {\n readonly ok: false;\n readonly code: DiagnosticCode;\n readonly message: string;\n};\n\n/**\n * Discriminated union returned by {@link validateEmission}.\n *\n * @since 0.1\n * @stable\n * @example\n * declare const r: ValidationResult;\n * if (r.ok) {\n * // pass through\n * } else {\n * console.error(r.code, r.message);\n * }\n */\nexport type ValidationResult = ValidationOk | ValidationFail;\n\nconst VALID_PLOT_STYLE_KINDS: ReadonlySet<string> = new Set([\n \"line\",\n \"step-line\",\n \"horizontal-line\",\n \"histogram\",\n \"area\",\n \"filled-band\",\n \"label\",\n \"marker\",\n \"shape\",\n \"character\",\n \"arrow\",\n \"candle-override\",\n \"bar-override\",\n \"bg-color\",\n \"bar-color\",\n \"horizontal-histogram\",\n]);\n\nconst VALID_LINE_STYLES: ReadonlySet<string> = new Set([\"solid\", \"dashed\", \"dotted\"]);\n\nconst VALID_MARKER_SHAPES: ReadonlySet<string> = new Set([\n \"circle\",\n \"triangle-up\",\n \"triangle-down\",\n \"square\",\n \"diamond\",\n]);\n\nconst VALID_SHAPE_GLYPHS: ReadonlySet<string> = new Set([\n \"circle\",\n \"triangle-up\",\n \"triangle-down\",\n \"square\",\n \"diamond\",\n \"cross\",\n \"xcross\",\n \"flag\",\n]);\n\nconst VALID_PLOT_LOCATIONS: ReadonlySet<string> = new Set([\"above\", \"below\", \"absolute\"]);\n\nconst VALID_ARROW_DIRECTIONS: ReadonlySet<string> = new Set([\"up\", \"down\"]);\n\nconst VALID_LABEL_POSITIONS: ReadonlySet<string> = new Set([\"above\", \"below\", \"anchor\"]);\n\nconst MAX_LABEL_LENGTH = 128;\n\nconst VALID_ALERT_SEVERITIES: ReadonlySet<string> = new Set([\"info\", \"warning\", \"critical\"]);\n\nconst VALID_LOG_LEVELS: ReadonlySet<string> = new Set([\"info\", \"warn\", \"error\"]);\n\nconst VALID_ALERT_CHANNELS: ReadonlySet<string> = new Set([\n \"log\",\n \"toast\",\n \"webhook\",\n \"email\",\n \"sms\",\n \"push\",\n]);\n\nconst VALID_DIAGNOSTIC_SEVERITIES: ReadonlySet<string> = new Set([\"info\", \"warning\", \"error\"]);\n\nconst VALID_DRAWING_KINDS: ReadonlySet<string> = new Set<string>(DRAWING_KINDS);\n\nconst VALID_DRAWING_OPS: ReadonlySet<string> = new Set([\"create\", \"update\", \"remove\"]);\n\nconst VALID_DIAGNOSTIC_CODES: ReadonlySet<string> = new Set<DiagnosticCode>([\n \"unsupported-plot-kind\",\n \"unsupported-drawing-kind\",\n \"unsupported-alert-channel\",\n \"unsupported-pane\",\n \"unsupported-interval\",\n \"multi-timeframe-not-supported\",\n \"unknown-secondary-stream\",\n \"lookback-exceeded\",\n \"drawing-budget-exceeded\",\n \"dropped-by-policy\",\n \"input-coercion-failed\",\n \"alert-conditions-not-supported\",\n \"unknown-alert-condition\",\n \"alert-rate-limited\",\n \"runtime-cpu-budget-exceeded\",\n \"runtime-memory-budget-exceeded\",\n \"runtime-log-budget-exceeded\",\n \"malformed-log-meta\",\n \"runtime-error-thrown\",\n \"session-info-missing\",\n \"fixed-range-inverted\",\n \"state-snapshot-restored\",\n \"state-snapshot-future-dated\",\n \"state-snapshot-malformed\",\n \"state-snapshot-save-failed\",\n \"malformed-emission\",\n \"dep-error\",\n \"dep-cycle\",\n \"dep-unknown-output\",\n \"dep-invalid-input-override\",\n \"dep-dynamic\",\n \"dep-output-not-titled\",\n]);\n\nfunction bad(message: string, code: DiagnosticCode = \"malformed-emission\"): ValidationFail {\n return { ok: false, code, message };\n}\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n if (typeof v !== \"object\" || v === null) return false;\n const proto = Object.getPrototypeOf(v);\n return proto === Object.prototype || proto === null;\n}\n\nfunction isFiniteNumber(v: unknown): v is number {\n return typeof v === \"number\" && Number.isFinite(v);\n}\n\nfunction isNonNegativeInteger(v: unknown): v is number {\n return typeof v === \"number\" && Number.isInteger(v) && v >= 0;\n}\n\nfunction isNonEmptyString(v: unknown): v is string {\n return typeof v === \"string\" && v.length > 0;\n}\n\n/**\n * Walk a `meta` payload and reject any non-JSON-friendly element. Per\n * PLAN §7.3 universal payload rules: forbid `Map`, `Set`, `Date`,\n * `RegExp`, `bigint`, `Function`, `Symbol`, `undefined`, class\n * instances, and non-finite numbers anywhere in the tree.\n */\nfunction walkMeta(v: unknown, path: string): ValidationResult {\n if (v === null) return { ok: true };\n const t = typeof v;\n if (t === \"boolean\" || t === \"string\") return { ok: true };\n if (t === \"number\") {\n if (!Number.isFinite(v as number)) {\n return bad(`${path}: non-finite number`);\n }\n return { ok: true };\n }\n if (t === \"undefined\") return bad(`${path}: undefined values are forbidden`);\n if (t === \"bigint\") return bad(`${path}: bigint is forbidden`);\n if (t === \"function\") return bad(`${path}: function is forbidden`);\n if (t === \"symbol\") return bad(`${path}: symbol is forbidden`);\n // typeof === \"object\" from here.\n if (Array.isArray(v)) {\n for (let i = 0; i < v.length; i++) {\n const r = walkMeta(v[i], `${path}[${i}]`);\n if (!r.ok) return r;\n }\n return { ok: true };\n }\n if (!isPlainObject(v)) {\n return bad(`${path}: only plain objects are allowed`);\n }\n for (const key of Object.keys(v)) {\n // Use `Reflect.get` and a try/catch so a throwing-getter on the\n // meta payload (constructed via `Object.defineProperty(..., {\n // get() { throw … }})` either deliberately or by accident at a\n // serialisation boundary) converts to a `malformed-emission`\n // diagnostic instead of crashing the host.\n let child: unknown;\n try {\n child = Reflect.get(v, key);\n } catch {\n return bad(`${path}.${key}: getter threw during traversal`);\n }\n const r = walkMeta(child, `${path}.${key}`);\n if (!r.ok) return r;\n }\n return { ok: true };\n}\n\nfunction validateLineLikeStyle(style: Record<string, unknown>): ValidationResult {\n const lineWidth = style.lineWidth;\n if (!isFiniteNumber(lineWidth) || lineWidth <= 0) {\n return bad(\"style.lineWidth: must be a finite positive number\");\n }\n const lineStyle = style.lineStyle;\n if (typeof lineStyle !== \"string\" || !VALID_LINE_STYLES.has(lineStyle)) {\n return bad(`style.lineStyle: '${String(lineStyle)}' is not a valid line style`);\n }\n return { ok: true };\n}\n\nfunction validateAreaStyle(style: Record<string, unknown>): ValidationResult {\n const lineCheck = validateLineLikeStyle(style);\n if (!lineCheck.ok) return lineCheck;\n const fillAlpha = style.fillAlpha;\n if (!isFiniteNumber(fillAlpha) || fillAlpha < 0 || fillAlpha > 1) {\n return bad(\"style.fillAlpha: must be a finite number in [0, 1]\");\n }\n return { ok: true };\n}\n\nfunction validateHistogramStyle(style: Record<string, unknown>): ValidationResult {\n const baseline = style.baseline;\n if (!isFiniteNumber(baseline)) {\n return bad(\"style.baseline: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction validateFilledBandStyle(style: Record<string, unknown>): ValidationResult {\n const upper = style.upper;\n if (upper !== null && !isFiniteNumber(upper)) {\n return bad(\"style.upper: must be a finite number or null\");\n }\n const lower = style.lower;\n if (lower !== null && !isFiniteNumber(lower)) {\n return bad(\"style.lower: must be a finite number or null\");\n }\n if (upper === null && lower === null) {\n return bad(\"style.upper / style.lower: at least one bound must be non-null\");\n }\n const alpha = style.alpha;\n if (!isFiniteNumber(alpha) || alpha < 0 || alpha > 1) {\n return bad(\"style.alpha: must be a finite number in [0, 1]\");\n }\n return { ok: true };\n}\n\nfunction validateLabelStyle(style: Record<string, unknown>): ValidationResult {\n const text = style.text;\n if (typeof text !== \"string\" || text.length === 0) {\n return bad(\"style.text: must be a non-empty string\");\n }\n if (text.length > MAX_LABEL_LENGTH) {\n return bad(`style.text: must be at most ${MAX_LABEL_LENGTH} characters`);\n }\n const position = style.position;\n if (typeof position !== \"string\" || !VALID_LABEL_POSITIONS.has(position)) {\n return bad(`style.position: '${String(position)}' is not a valid label position`);\n }\n return { ok: true };\n}\n\nfunction validateMarkerStyle(style: Record<string, unknown>): ValidationResult {\n const shape = style.shape;\n if (typeof shape !== \"string\" || !VALID_MARKER_SHAPES.has(shape)) {\n return bad(`style.shape: '${String(shape)}' is not a valid marker shape`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return { ok: true };\n}\n\nfunction validateOptionalLocation(style: Record<string, unknown>): ValidationResult {\n const location = style.location;\n if (\n location !== undefined &&\n (typeof location !== \"string\" || !VALID_PLOT_LOCATIONS.has(location))\n ) {\n return bad(`style.location: '${String(location)}' is not a valid plot location`);\n }\n return { ok: true };\n}\n\nfunction validatePlotShapeStyle(style: Record<string, unknown>): ValidationResult {\n const shape = style.shape;\n if (typeof shape !== \"string\" || !VALID_SHAPE_GLYPHS.has(shape)) {\n return bad(`style.shape: '${String(shape)}' is not a valid shape glyph`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return validateOptionalLocation(style);\n}\n\nfunction validateCharacterStyle(style: Record<string, unknown>): ValidationResult {\n const char = style.char;\n if (typeof char !== \"string\" || char.length === 0) {\n return bad(\"style.char: must be a non-empty string\");\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return validateOptionalLocation(style);\n}\n\nfunction validateArrowStyle(style: Record<string, unknown>): ValidationResult {\n const direction = style.direction;\n if (typeof direction !== \"string\" || !VALID_ARROW_DIRECTIONS.has(direction)) {\n return bad(`style.direction: '${String(direction)}' is not a valid arrow direction`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return { ok: true };\n}\n\nfunction validateColor(value: unknown, path: string): ValidationResult {\n if (typeof value !== \"string\" || value.length === 0) {\n return bad(`${path}: must be a non-empty string`);\n }\n return { ok: true };\n}\n\nfunction validateCandleOverrideStyle(style: Record<string, unknown>): ValidationResult {\n const bull = validateColor(style.bull, \"style.bull\");\n if (!bull.ok) return bull;\n const bear = validateColor(style.bear, \"style.bear\");\n if (!bear.ok) return bear;\n if (style.doji !== undefined) {\n return validateColor(style.doji, \"style.doji\");\n }\n return { ok: true };\n}\n\nfunction validateSingleColorStyle(style: Record<string, unknown>, path: string): ValidationResult {\n return validateColor(style.color, path);\n}\n\nfunction validateBgColorStyle(style: Record<string, unknown>): ValidationResult {\n const color = validateSingleColorStyle(style, \"style.color\");\n if (!color.ok) return color;\n const transp = style.transp;\n if (transp !== undefined && (!isFiniteNumber(transp) || transp < 0 || transp > 100)) {\n return bad(\"style.transp: must be a finite number in [0, 100]\");\n }\n return { ok: true };\n}\n\nfunction validateHorizontalHistogramStyle(style: Record<string, unknown>): ValidationResult {\n const buckets = style.buckets;\n if (!Array.isArray(buckets)) {\n return bad(\"style.buckets: must be an array\");\n }\n for (let i = 0; i < buckets.length; i++) {\n const bucket = buckets[i];\n if (!isPlainObject(bucket)) {\n return bad(`style.buckets[${i}]: must be an object`);\n }\n if (!isFiniteNumber(bucket.price)) {\n return bad(`style.buckets[${i}].price: must be a finite number`);\n }\n if (!isFiniteNumber(bucket.volume) || bucket.volume < 0) {\n return bad(`style.buckets[${i}].volume: must be a finite non-negative number`);\n }\n if (bucket.color !== undefined) {\n const color = validateColor(bucket.color, `style.buckets[${i}].color`);\n if (!color.ok) return color;\n }\n }\n return { ok: true };\n}\n\nfunction validatePlotStyle(style: unknown): ValidationResult {\n if (!isPlainObject(style)) return bad(\"style: not an object\");\n const kind = style.kind;\n if (typeof kind !== \"string\" || !VALID_PLOT_STYLE_KINDS.has(kind)) {\n return bad(`style.kind: '${String(kind)}' is not a known plot kind`);\n }\n switch (kind) {\n case \"line\":\n case \"step-line\":\n case \"horizontal-line\":\n return validateLineLikeStyle(style);\n case \"histogram\":\n return validateHistogramStyle(style);\n case \"area\":\n return validateAreaStyle(style);\n case \"filled-band\":\n return validateFilledBandStyle(style);\n case \"label\":\n return validateLabelStyle(style);\n case \"marker\":\n return validateMarkerStyle(style);\n case \"shape\":\n return validatePlotShapeStyle(style);\n case \"character\":\n return validateCharacterStyle(style);\n case \"arrow\":\n return validateArrowStyle(style);\n case \"candle-override\":\n return validateCandleOverrideStyle(style);\n case \"bar-override\":\n case \"bar-color\":\n return validateSingleColorStyle(style, \"style.color\");\n case \"bg-color\":\n return validateBgColorStyle(style);\n case \"horizontal-histogram\":\n return validateHorizontalHistogramStyle(style);\n /* v8 ignore next 2 -- kind is already gated by VALID_PLOT_STYLE_KINDS */\n default:\n return bad(`style.kind: '${kind}' has no validator`);\n }\n}\n\nfunction validatePlotEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.slotId)) return bad(\"plot.slotId: must be a non-empty string\");\n if (typeof e.title !== \"string\") return bad(\"plot.title: must be a string\");\n const styleResult = validatePlotStyle(e.style);\n if (!styleResult.ok) return styleResult;\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"plot.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) return bad(\"plot.time: must be a finite number\");\n const value = e.value;\n if (value !== null && !isFiniteNumber(value)) {\n return bad(\"plot.value: must be a finite number or null\");\n }\n const color = e.color;\n if (color !== null && typeof color !== \"string\") {\n return bad(\"plot.color: must be a string or null\");\n }\n if (!isPlainObject(e.meta)) return bad(\"plot.meta: must be a plain object\");\n const metaResult = walkMeta(e.meta, \"plot.meta\");\n if (!metaResult.ok) return metaResult;\n if (typeof e.pane !== \"string\") return bad(\"plot.pane: must be a string\");\n if (e.visible !== undefined && typeof e.visible !== \"boolean\") {\n return bad(\"plot.visible: must be a boolean\");\n }\n return { ok: true };\n}\n\nfunction validateAlertEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.slotId)) return bad(\"alert.slotId: must be a non-empty string\");\n const severity = e.severity;\n if (typeof severity !== \"string\" || !VALID_ALERT_SEVERITIES.has(severity)) {\n return bad(`alert.severity: '${String(severity)}' is not a valid severity`);\n }\n if (!isNonEmptyString(e.message)) {\n return bad(\"alert.message: must be a non-empty string\");\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"alert.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) return bad(\"alert.time: must be a finite number\");\n if (!isPlainObject(e.meta)) return bad(\"alert.meta: must be a plain object\");\n const metaResult = walkMeta(e.meta, \"alert.meta\");\n if (!metaResult.ok) return metaResult;\n const channels = e.channels;\n if (!Array.isArray(channels)) return bad(\"alert.channels: must be an array\");\n for (let i = 0; i < channels.length; i++) {\n const c = channels[i];\n if (typeof c !== \"string\" || !VALID_ALERT_CHANNELS.has(c)) {\n return bad(`alert.channels[${i}]: '${String(c)}' is not a valid alert channel`);\n }\n }\n if (!isNonEmptyString(e.dedupeKey)) {\n return bad(\"alert.dedupeKey: must be a non-empty string\");\n }\n return { ok: true };\n}\n\nfunction validateAlertConditionEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.conditionId)) {\n return bad(\"alert-condition.conditionId: must be a non-empty string\");\n }\n if (typeof e.title !== \"string\") {\n return bad(\"alert-condition.title: must be a string\");\n }\n if (typeof e.description !== \"string\") {\n return bad(\"alert-condition.description: must be a string\");\n }\n if (typeof e.defaultMessage !== \"string\") {\n return bad(\"alert-condition.defaultMessage: must be a string\");\n }\n if (typeof e.fired !== \"boolean\") {\n return bad(\"alert-condition.fired: must be a boolean\");\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"alert-condition.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"alert-condition.time: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction validateLogEmission(e: Record<string, unknown>): ValidationResult {\n const level = e.level;\n if (typeof level !== \"string\" || !VALID_LOG_LEVELS.has(level)) {\n return bad(`log.level: '${String(level)}' is not a valid log level`);\n }\n if (!isNonEmptyString(e.message)) {\n return bad(\"log.message: must be a non-empty string\");\n }\n const meta = e.meta;\n if (meta !== undefined) {\n if (!isPlainObject(meta)) return bad(\"log.meta: must be a plain object\");\n const metaResult = walkMeta(meta, \"log.meta\");\n if (!metaResult.ok) return metaResult;\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"log.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"log.time: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction isWorldPoint(v: unknown): v is { time: number; price: number } {\n if (!isPlainObject(v)) return false;\n return isFiniteNumber(v.time) && isFiniteNumber(v.price);\n}\n\nfunction validateAnchorFixed(v: unknown, path: string, count: number): ValidationResult {\n if (!Array.isArray(v) || v.length !== count) {\n return bad(`${path}: must be a ${count}-element WorldPoint tuple`);\n }\n for (let i = 0; i < count; i++) {\n if (!isWorldPoint(v[i])) {\n return bad(`${path}[${i}]: not a WorldPoint (need finite time + price)`);\n }\n }\n return { ok: true };\n}\n\nfunction validateAnchorPair(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 2);\n}\n\nfunction validateAnchorTriple(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 3);\n}\n\nfunction validateAnchorQuad(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 4);\n}\n\nfunction validateAnchorQuint(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 5);\n}\n\nfunction validateAnchorHept(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 7);\n}\n\nfunction validateOptionalLabels(v: unknown, path: string, expectedCount: number): ValidationResult {\n if (v === undefined) return { ok: true };\n if (!Array.isArray(v) || v.length !== expectedCount) {\n return bad(`${path}: must be an array of ${expectedCount} strings`);\n }\n for (let i = 0; i < expectedCount; i++) {\n if (typeof v[i] !== \"string\") {\n return bad(`${path}[${i}]: must be a string`);\n }\n }\n return { ok: true };\n}\n\nfunction validateAnchorVariable(\n v: unknown,\n path: string,\n min: number,\n max: number,\n): ValidationResult {\n if (!Array.isArray(v) || v.length < min || v.length > max) {\n return bad(`${path}: must be an array of ${min}..${max} WorldPoints`);\n }\n for (let i = 0; i < v.length; i++) {\n if (!isWorldPoint(v[i])) {\n return bad(`${path}[${i}]: not a WorldPoint (need finite time + price)`);\n }\n }\n return { ok: true };\n}\n\nfunction validateLineDrawStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.lineWidth !== undefined && (!isFiniteNumber(s.lineWidth) || s.lineWidth <= 0)) {\n return bad(`${path}.lineWidth: must be a finite positive number`);\n }\n if (s.lineStyle !== undefined && !VALID_LINE_STYLES.has(String(s.lineStyle))) {\n return bad(`${path}.lineStyle: '${String(s.lineStyle)}' is not a valid line style`);\n }\n if (s.extendLeft !== undefined && typeof s.extendLeft !== \"boolean\") {\n return bad(`${path}.extendLeft: must be a boolean`);\n }\n if (s.extendRight !== undefined && typeof s.extendRight !== \"boolean\") {\n return bad(`${path}.extendRight: must be a boolean`);\n }\n return { ok: true };\n}\n\nfunction validateShapeStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.stroke !== undefined && typeof s.stroke !== \"string\") {\n return bad(`${path}.stroke: must be a string`);\n }\n if (s.fill !== undefined && typeof s.fill !== \"string\") {\n return bad(`${path}.fill: must be a string`);\n }\n if (s.lineWidth !== undefined && (!isFiniteNumber(s.lineWidth) || s.lineWidth <= 0)) {\n return bad(`${path}.lineWidth: must be a finite positive number`);\n }\n if (s.lineStyle !== undefined && !VALID_LINE_STYLES.has(String(s.lineStyle))) {\n return bad(`${path}.lineStyle: '${String(s.lineStyle)}' is not a valid line style`);\n }\n if (\n s.fillAlpha !== undefined &&\n (!isFiniteNumber(s.fillAlpha) || s.fillAlpha < 0 || s.fillAlpha > 1)\n ) {\n return bad(`${path}.fillAlpha: must be a finite number in [0, 1]`);\n }\n return { ok: true };\n}\n\nfunction validateDrawingMeta(state: Record<string, unknown>): ValidationResult {\n if (state.name !== undefined && typeof state.name !== \"string\") {\n return bad(\"drawing.state.name: must be a string\");\n }\n if (state.visible !== undefined && typeof state.visible !== \"boolean\") {\n return bad(\"drawing.state.visible: must be a boolean\");\n }\n return { ok: true };\n}\n\nfunction validateLineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHorizontalLineState(state: Record<string, unknown>): ValidationResult {\n if (!isFiniteNumber(state.price)) return bad(\"drawing.state.price: must be a finite number\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHorizontalRayState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateVerticalLineState(state: Record<string, unknown>): ValidationResult {\n if (!isFiniteNumber(state.time)) return bad(\"drawing.state.time: must be a finite number\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCrossLineState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTrendAngleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRectangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRotatedRectangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTriangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nconst POLYLINE_MIN_ANCHORS = 3;\nconst POLYLINE_MAX_ANCHORS = 20;\n\nfunction validatePolylineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n POLYLINE_MIN_ANCHORS,\n POLYLINE_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCircleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateEllipseState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePathOpts(s: unknown, path: string): ValidationResult {\n const lineCheck = validateLineDrawStyle(s, path);\n if (!lineCheck.ok) return lineCheck;\n // validateLineDrawStyle proved `s` is a plain object.\n const obj = s as Record<string, unknown>;\n if (obj.closed !== undefined && typeof obj.closed !== \"boolean\") {\n return bad(`${path}.closed: must be a boolean`);\n }\n return { ok: true };\n}\n\nconst PATH_MIN_ANCHORS = 2;\nconst PATH_MAX_ANCHORS = 20;\n\nfunction validatePathState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n PATH_MIN_ANCHORS,\n PATH_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validatePathOpts(state.style, \"drawing.state.style\");\n}\n\nconst VALID_TEXT_SIZES: ReadonlySet<string> = new Set([\"tiny\", \"small\", \"normal\", \"large\", \"huge\"]);\n\nconst VALID_TEXT_HALIGN: ReadonlySet<string> = new Set([\"left\", \"center\", \"right\"]);\n\nconst VALID_TEXT_VALIGN: ReadonlySet<string> = new Set([\"top\", \"middle\", \"bottom\"]);\n\nconst VALID_TABLE_POSITIONS: ReadonlySet<string> = new Set([\n \"top-left\",\n \"top-center\",\n \"top-right\",\n \"middle-left\",\n \"middle-center\",\n \"middle-right\",\n \"bottom-left\",\n \"bottom-center\",\n \"bottom-right\",\n]);\n\nfunction validateTextOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.size !== undefined && !VALID_TEXT_SIZES.has(String(s.size))) {\n return bad(`${path}.size: '${String(s.size)}' is not a valid text size`);\n }\n if (s.halign !== undefined && !VALID_TEXT_HALIGN.has(String(s.halign))) {\n return bad(`${path}.halign: '${String(s.halign)}' is not a valid halign`);\n }\n if (s.valign !== undefined && !VALID_TEXT_VALIGN.has(String(s.valign))) {\n return bad(`${path}.valign: '${String(s.valign)}' is not a valid valign`);\n }\n if (s.bgColor !== undefined && typeof s.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateMarkerState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n if (state.text !== undefined && typeof state.text !== \"string\") {\n return bad(\"drawing.state.text: must be a string\");\n }\n if (state.value !== undefined && !isFiniteNumber(state.value)) {\n return bad(\"drawing.state.value: must be a finite number\");\n }\n return validateTextOpts(state.style, \"drawing.state.style\");\n}\n\nconst FREEHAND_MIN_ANCHORS = 2;\nconst FREEHAND_MAX_ANCHORS = 500;\n\nfunction validateHighlighterStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (typeof s.color !== \"string\") return bad(`${path}.color: must be a string`);\n if (!isFiniteNumber(s.alpha) || s.alpha < 0 || s.alpha > 1) {\n return bad(`${path}.alpha: must be a finite number in [0, 1]`);\n }\n return { ok: true };\n}\n\nfunction validateBrushStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (typeof s.stroke !== \"string\") return bad(`${path}.stroke: must be a string`);\n if (typeof s.fill !== \"string\") return bad(`${path}.fill: must be a string`);\n return { ok: true };\n}\n\nfunction validateArcState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCurveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateDoubleCurveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePenState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHighlighterState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateHighlighterStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateBrushState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateBrushStyle(state.style, \"drawing.state.style\");\n}\n\nconst TEXT_BODY_MAX_LENGTH = 256;\n\nfunction validateArrowOpts(s: unknown, path: string): ValidationResult {\n const lineCheck = validateLineDrawStyle(s, path);\n if (!lineCheck.ok) return lineCheck;\n // validateLineDrawStyle proved `s` is a plain object.\n const obj = s as Record<string, unknown>;\n if (obj.label !== undefined && typeof obj.label !== \"string\") {\n return bad(`${path}.label: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateArrowMarkerOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.text !== undefined && typeof s.text !== \"string\") {\n return bad(`${path}.text: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateTextState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n // walkMeta catches non-JsonValue payloads (bigint / function / symbol /\n // undefined / non-finite number) anywhere on `body`; a bare string is\n // a valid JsonValue and passes through. The kind-specific\n // non-empty / length cap follows so the wire-shape error message stays\n // specific.\n const bodyMetaCheck = walkMeta(state.body, \"drawing.state.body\");\n if (!bodyMetaCheck.ok) return bodyMetaCheck;\n if (typeof state.body !== \"string\") {\n return bad(\"drawing.state.body: must be a string\");\n }\n if (state.body.length === 0) {\n return bad(\"drawing.state.body: must be a non-empty string\");\n }\n if (state.body.length > TEXT_BODY_MAX_LENGTH) {\n return bad(`drawing.state.body: must be at most ${TEXT_BODY_MAX_LENGTH} characters`);\n }\n return validateTextOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateArrowOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkerState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkUpState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkDownState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nconst VALID_REGRESSION_SOURCES: ReadonlySet<string> = new Set([\n \"close\",\n \"open\",\n \"high\",\n \"low\",\n \"hl2\",\n \"hlc3\",\n \"ohlc4\",\n \"hlcc4\",\n]);\n\nfunction validateRegressionTrendOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.source !== undefined && !VALID_REGRESSION_SOURCES.has(String(s.source))) {\n return bad(`${path}.source: '${String(s.source)}' is not a valid source`);\n }\n if (s.stdevMultiplier !== undefined) {\n if (!isFiniteNumber(s.stdevMultiplier) || s.stdevMultiplier < 0) {\n return bad(`${path}.stdevMultiplier: must be a non-negative finite number`);\n }\n }\n if (s.showUpperBand !== undefined && typeof s.showUpperBand !== \"boolean\") {\n return bad(`${path}.showUpperBand: must be a boolean`);\n }\n if (s.showLowerBand !== undefined && typeof s.showLowerBand !== \"boolean\") {\n return bad(`${path}.showLowerBand: must be a boolean`);\n }\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateTrendChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateFlatTopBottomState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateDisjointChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRegressionTrendState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const anchors = state.anchors as ReadonlyArray<{ time: number; price: number }>;\n if (!(anchors[0].time < anchors[1].time)) {\n return bad(\"drawing.state.anchors: anchors[0].time must be < anchors[1].time\");\n }\n return validateRegressionTrendOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.levels !== undefined) {\n if (!Array.isArray(s.levels)) {\n return bad(`${path}.levels: must be an array of finite numbers`);\n }\n if (s.levels.length === 0) {\n return bad(`${path}.levels: must contain at least one level`);\n }\n for (let i = 0; i < s.levels.length; i++) {\n if (!isFiniteNumber(s.levels[i])) {\n return bad(`${path}.levels[${i}]: must be a finite number`);\n }\n }\n }\n if (s.showLabels !== undefined && typeof s.showLabels !== \"boolean\") {\n return bad(`${path}.showLabels: must be a boolean`);\n }\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.extendLeft !== undefined && typeof s.extendLeft !== \"boolean\") {\n return bad(`${path}.extendLeft: must be a boolean`);\n }\n if (s.extendRight !== undefined && typeof s.extendRight !== \"boolean\") {\n return bad(`${path}.extendRight: must be a boolean`);\n }\n return { ok: true };\n}\n\nfunction validateFibRetracementState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTrendExtensionState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTimeZoneState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibWedgeState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpeedFanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpeedArcsState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpiralState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibCirclesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTrendTimeState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannBoxState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannSquareFixedState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannSquareState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannFanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nconst PITCHFORK_VARIANTS: ReadonlySet<string> = new Set([\n \"standard\",\n \"schiff\",\n \"modifiedSchiff\",\n \"inside\",\n]);\n\nfunction validatePitchforkState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n if (typeof state.variant !== \"string\" || !PITCHFORK_VARIANTS.has(state.variant)) {\n return bad(\n `drawing.state.variant: '${String(state.variant)}' must be 'standard' | 'schiff' | 'modifiedSchiff' | 'inside'`,\n );\n }\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePitchfanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateXabcdPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCypherPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHeadAndShouldersState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateAbcdPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTrianglePatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateThreeDrivesPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottImpulseWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 5);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottCorrectionWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 3);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottTriangleWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 5);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottDoubleComboState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 7);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottTripleComboState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 7);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCyclicLinesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTimeCyclesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateSineLineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nconst MAX_CHILD_HANDLE_IDS = 100;\n\nfunction validateChildHandleIds(v: unknown, path: string): ValidationResult {\n if (!Array.isArray(v)) {\n return bad(`${path}: must be an array of handle id strings`);\n }\n if (v.length > MAX_CHILD_HANDLE_IDS) {\n return bad(`${path}: must be at most ${MAX_CHILD_HANDLE_IDS} entries`);\n }\n for (let i = 0; i < v.length; i++) {\n if (typeof v[i] !== \"string\") {\n return bad(`${path}[${i}]: must be a string`);\n }\n }\n return { ok: true };\n}\n\nfunction validateFrameOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.label !== undefined && typeof s.label !== \"string\") {\n return bad(`${path}.label: must be a string`);\n }\n if (s.bgColor !== undefined && typeof s.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateGroupState(state: Record<string, unknown>): ValidationResult {\n return validateChildHandleIds(state.childHandleIds, \"drawing.state.childHandleIds\");\n}\n\nfunction validateFrameState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const childCheck = validateChildHandleIds(state.childHandleIds, \"drawing.state.childHandleIds\");\n if (!childCheck.ok) return childCheck;\n return validateFrameOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateTableCell(cell: unknown, path: string): ValidationResult {\n if (!isPlainObject(cell)) return bad(`${path}: must be a plain object`);\n if (typeof cell.text !== \"string\") return bad(`${path}.text: must be a string`);\n if (cell.bgColor !== undefined && typeof cell.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n if (cell.textColor !== undefined && typeof cell.textColor !== \"string\") {\n return bad(`${path}.textColor: must be a string`);\n }\n if (cell.textHalign !== undefined && !VALID_TEXT_HALIGN.has(String(cell.textHalign))) {\n return bad(`${path}.textHalign: '${String(cell.textHalign)}' is not a valid halign`);\n }\n if (cell.textValign !== undefined && !VALID_TEXT_VALIGN.has(String(cell.textValign))) {\n return bad(`${path}.textValign: '${String(cell.textValign)}' is not a valid valign`);\n }\n if (cell.textSize !== undefined && !VALID_TEXT_SIZES.has(String(cell.textSize))) {\n return bad(`${path}.textSize: '${String(cell.textSize)}' is not a valid text size`);\n }\n return { ok: true };\n}\n\nfunction validateTableState(state: Record<string, unknown>): ValidationResult {\n const position = state.position;\n if (typeof position !== \"string\" || !VALID_TABLE_POSITIONS.has(position)) {\n return bad(`drawing.state.position: '${String(position)}' is not a valid table position`);\n }\n const cells = state.cells;\n if (!Array.isArray(cells) || cells.length === 0) {\n return bad(\"drawing.state.cells: must be a non-empty 2D array\");\n }\n for (let rowIndex = 0; rowIndex < cells.length; rowIndex++) {\n const row = cells[rowIndex];\n if (!Array.isArray(row) || row.length === 0) {\n return bad(`drawing.state.cells[${rowIndex}]: must be a non-empty array`);\n }\n for (let columnIndex = 0; columnIndex < row.length; columnIndex++) {\n const cellCheck = validateTableCell(\n row[columnIndex],\n `drawing.state.cells[${rowIndex}][${columnIndex}]`,\n );\n if (!cellCheck.ok) return cellCheck;\n }\n }\n const hasBorderColor = state.borderColor !== undefined;\n const hasBorderWidth = state.borderWidth !== undefined;\n if (hasBorderColor !== hasBorderWidth) {\n return bad(\"drawing.state.borderColor/borderWidth: must be provided together\");\n }\n if (hasBorderColor) {\n const colorCheck = validateColor(state.borderColor, \"drawing.state.borderColor\");\n if (!colorCheck.ok) return colorCheck;\n if (!isFiniteNumber(state.borderWidth) || state.borderWidth <= 0) {\n return bad(\"drawing.state.borderWidth: must be a finite positive number\");\n }\n }\n if (state.frame !== undefined) {\n if (!isPlainObject(state.frame)) return bad(\"drawing.state.frame: must be a plain object\");\n const colorCheck = validateColor(state.frame.color, \"drawing.state.frame.color\");\n if (!colorCheck.ok) return colorCheck;\n if (!isFiniteNumber(state.frame.width) || state.frame.width <= 0) {\n return bad(\"drawing.state.frame.width: must be a finite positive number\");\n }\n }\n return { ok: true };\n}\n\n/**\n * Per-kind state dispatch. Exhaustive over the `DrawingKind` union: the\n * switch has no `default` arm, so adding a kind to `DrawingKind`\n * produces a compile error here and forces a matching validator arm.\n * Wire-shape checks (`handleId` / `op` / `bar` / `time` /\n * `state.kind === drawingKind`) run for every kind via\n * {@link validateDrawingEmission} before this dispatch is reached.\n */\nfunction validateStateByKind(kind: DrawingKind, state: Record<string, unknown>): ValidationResult {\n switch (kind) {\n case \"line\":\n return validateLineState(state);\n case \"horizontal-line\":\n return validateHorizontalLineState(state);\n case \"horizontal-ray\":\n return validateHorizontalRayState(state);\n case \"vertical-line\":\n return validateVerticalLineState(state);\n case \"cross-line\":\n return validateCrossLineState(state);\n case \"trend-angle\":\n return validateTrendAngleState(state);\n case \"rectangle\":\n return validateRectangleState(state);\n case \"rotated-rectangle\":\n return validateRotatedRectangleState(state);\n case \"triangle\":\n return validateTriangleState(state);\n case \"polyline\":\n return validatePolylineState(state);\n case \"circle\":\n return validateCircleState(state);\n case \"ellipse\":\n return validateEllipseState(state);\n case \"path\":\n return validatePathState(state);\n case \"marker\":\n return validateMarkerState(state);\n case \"arc\":\n return validateArcState(state);\n case \"curve\":\n return validateCurveState(state);\n case \"double-curve\":\n return validateDoubleCurveState(state);\n case \"pen\":\n return validatePenState(state);\n case \"highlighter\":\n return validateHighlighterState(state);\n case \"brush\":\n return validateBrushState(state);\n case \"text\":\n return validateTextState(state);\n case \"arrow\":\n return validateArrowState(state);\n case \"arrow-marker\":\n return validateArrowMarkerState(state);\n case \"arrow-mark-up\":\n return validateArrowMarkUpState(state);\n case \"arrow-mark-down\":\n return validateArrowMarkDownState(state);\n case \"trend-channel\":\n return validateTrendChannelState(state);\n case \"flat-top-bottom\":\n return validateFlatTopBottomState(state);\n case \"disjoint-channel\":\n return validateDisjointChannelState(state);\n case \"regression-trend\":\n return validateRegressionTrendState(state);\n case \"fib-retracement\":\n return validateFibRetracementState(state);\n case \"fib-trend-extension\":\n return validateFibTrendExtensionState(state);\n case \"fib-channel\":\n return validateFibChannelState(state);\n case \"fib-time-zone\":\n return validateFibTimeZoneState(state);\n case \"fib-wedge\":\n return validateFibWedgeState(state);\n case \"fib-speed-fan\":\n return validateFibSpeedFanState(state);\n case \"fib-speed-arcs\":\n return validateFibSpeedArcsState(state);\n case \"fib-spiral\":\n return validateFibSpiralState(state);\n case \"fib-circles\":\n return validateFibCirclesState(state);\n case \"fib-trend-time\":\n return validateFibTrendTimeState(state);\n case \"gann-box\":\n return validateGannBoxState(state);\n case \"gann-square-fixed\":\n return validateGannSquareFixedState(state);\n case \"gann-square\":\n return validateGannSquareState(state);\n case \"gann-fan\":\n return validateGannFanState(state);\n case \"pitchfork\":\n return validatePitchforkState(state);\n case \"pitchfan\":\n return validatePitchfanState(state);\n case \"xabcd-pattern\":\n return validateXabcdPatternState(state);\n case \"cypher-pattern\":\n return validateCypherPatternState(state);\n case \"head-and-shoulders\":\n return validateHeadAndShouldersState(state);\n case \"abcd-pattern\":\n return validateAbcdPatternState(state);\n case \"triangle-pattern\":\n return validateTrianglePatternState(state);\n case \"three-drives-pattern\":\n return validateThreeDrivesPatternState(state);\n case \"elliott-impulse-wave\":\n return validateElliottImpulseWaveState(state);\n case \"elliott-correction-wave\":\n return validateElliottCorrectionWaveState(state);\n case \"elliott-triangle-wave\":\n return validateElliottTriangleWaveState(state);\n case \"elliott-double-combo\":\n return validateElliottDoubleComboState(state);\n case \"elliott-triple-combo\":\n return validateElliottTripleComboState(state);\n case \"cyclic-lines\":\n return validateCyclicLinesState(state);\n case \"time-cycles\":\n return validateTimeCyclesState(state);\n case \"sine-line\":\n return validateSineLineState(state);\n case \"group\":\n return validateGroupState(state);\n case \"frame\":\n return validateFrameState(state);\n case \"table\":\n return validateTableState(state);\n }\n}\n\nfunction validateDrawingEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.handleId)) {\n return bad(\"drawing.handleId: must be a non-empty string\");\n }\n const drawingKind = e.drawingKind;\n if (typeof drawingKind !== \"string\" || !VALID_DRAWING_KINDS.has(drawingKind)) {\n return {\n ok: false,\n code: \"unsupported-drawing-kind\",\n message: `drawing.drawingKind: '${String(drawingKind)}' is not a known DrawingKind`,\n };\n }\n if (typeof e.op !== \"string\" || !VALID_DRAWING_OPS.has(e.op)) {\n return bad(`drawing.op: '${String(e.op)}' must be 'create' | 'update' | 'remove'`);\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"drawing.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"drawing.time: must be a finite number\");\n }\n const state = e.state;\n if (!isPlainObject(state)) {\n return bad(\"drawing.state: must be a plain object\");\n }\n if (state.kind !== drawingKind) {\n return bad(\n `drawing.state.kind: '${String(state.kind)}' must equal drawing.drawingKind '${drawingKind}'`,\n );\n }\n const metaCheck = validateDrawingMeta(state);\n if (!metaCheck.ok) return metaCheck;\n return validateStateByKind(drawingKind as DrawingKind, state);\n}\n\nfunction validateDiagnostic(e: Record<string, unknown>): ValidationResult {\n const severity = e.severity;\n if (typeof severity !== \"string\" || !VALID_DIAGNOSTIC_SEVERITIES.has(severity)) {\n return bad(`diagnostic.severity: '${String(severity)}' is not a valid severity`);\n }\n const code = e.code;\n if (typeof code !== \"string\" || !VALID_DIAGNOSTIC_CODES.has(code)) {\n return bad(`diagnostic.code: '${String(code)}' is not a known DiagnosticCode`);\n }\n if (typeof e.message !== \"string\") return bad(\"diagnostic.message: must be a string\");\n const slotId = e.slotId;\n if (slotId !== null && typeof slotId !== \"string\") {\n return bad(\"diagnostic.slotId: must be a string or null\");\n }\n const bar = e.bar;\n if (bar !== null && !isNonNegativeInteger(bar)) {\n return bad(\"diagnostic.bar: must be a non-negative integer or null\");\n }\n return { ok: true };\n}\n\n/**\n * Hand-rolled validator covering every Phase-1 / Phase-2 / Phase-3\n * emission shape. Returns `{ ok: true }` for well-formed payloads and\n * `{ ok: false, code, message }` otherwise. Hosts and adapters call\n * this at every structured-clone boundary (Worker `postMessage`,\n * QuickJS membrane) per PLAN §7.3.\n *\n * Phase 3 widens the drawing dispatch from an unconditional Phase-1\n * stub to a per-kind validator: unknown `drawingKind` returns\n * `unsupported-drawing-kind`; malformed payloads of a known kind\n * return `malformed-emission`. Tasks 6–18 each ADD their kind\n * validators to the dispatch as ports land.\n *\n * @since 0.1\n * @stable\n * @example\n * import { validateEmission } from \"@invinite-org/chartlang-adapter-kit\";\n *\n * const r = validateEmission({ kind: \"plot\" });\n * if (!r.ok) {\n * console.error(r.code, r.message);\n * }\n */\nexport function validateEmission(e: unknown): ValidationResult {\n if (!isPlainObject(e)) {\n return bad(\"emission: not a plain object\");\n }\n if (!(\"kind\" in e)) {\n return bad(\"emission: missing 'kind' discriminant\");\n }\n const kind = e.kind;\n switch (kind) {\n case \"plot\":\n return validatePlotEmission(e);\n case \"alert\":\n return validateAlertEmission(e);\n case \"alert-condition\":\n return validateAlertConditionEmission(e);\n case \"log\":\n return validateLogEmission(e);\n case \"drawing\":\n return validateDrawingEmission(e);\n case \"diagnostic\":\n return validateDiagnostic(e);\n default:\n return bad(`emission.kind: '${String(kind)}' is not a known emission kind`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"validateEmission.js","sourceRoot":"","sources":["../../src/validation/validateEmission.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,aAAa,EAAoB,MAAM,8BAA8B,CAAC;AAiD/E,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACxD,MAAM;IACN,WAAW;IACX,iBAAiB;IACjB,WAAW;IACX,MAAM;IACN,aAAa;IACb,OAAO;IACP,QAAQ;IACR,OAAO;IACP,WAAW;IACX,OAAO;IACP,iBAAiB;IACjB,cAAc;IACd,UAAU;IACV,WAAW;IACX,sBAAsB;CACzB,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEtF,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,eAAe;IACf,QAAQ;IACR,SAAS;CACZ,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACpD,QAAQ;IACR,aAAa;IACb,eAAe;IACf,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAE1F,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7F,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjF,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IACtD,KAAK;IACL,OAAO;IACP,SAAS;IACT,OAAO;IACP,KAAK;IACL,MAAM;CACT,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/F,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AAEhF,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvF,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAiB;IACxE,uBAAuB;IACvB,0BAA0B;IAC1B,2BAA2B;IAC3B,kBAAkB;IAClB,sBAAsB;IACtB,+BAA+B;IAC/B,0BAA0B;IAC1B,mBAAmB;IACnB,yBAAyB;IACzB,mBAAmB;IACnB,uBAAuB;IACvB,gCAAgC;IAChC,yBAAyB;IACzB,oBAAoB;IACpB,6BAA6B;IAC7B,gCAAgC;IAChC,6BAA6B;IAC7B,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,yBAAyB;IACzB,6BAA6B;IAC7B,0BAA0B;IAC1B,4BAA4B;IAC5B,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,oBAAoB;IACpB,4BAA4B;IAC5B,aAAa;IACb,uBAAuB;CAC1B,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,OAAe,EAAE,OAAuB,oBAAoB;IACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAC9B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAU;IACpC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,CAAU,EAAE,IAAY;IACtC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;IACnB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAW,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAC/D,iCAAiC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,gEAAgE;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,6DAA6D;QAC7D,2CAA2C;QAC3C,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,iCAAiC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACrE,OAAO,GAAG,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA8B;IACrD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC,gEAAgE,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,GAAG,CAAC,gDAAgD,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,+BAA+B,gBAAgB,aAAa,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IACI,QAAQ,KAAK,SAAS;QACtB,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACvE,CAAC;QACC,OAAO,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,OAAO,GAAG,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,IAAY;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA8B;IAC/D,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B,EAAE,IAAY;IAC1E,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IACxD,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QAClF,OAAO,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,gCAAgC,CAAC,KAA8B;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,GAAG,CAAC,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;QAChC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzE,CAAC;IACD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,iBAAiB;YAClB,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,WAAW;YACZ,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,MAAM;YACP,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,QAAQ;YACT,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,OAAO;YACR,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,WAAW;YACZ,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,iBAAiB;YAClB,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,cAAc,CAAC;QACpB,KAAK,WAAW;YACZ,OAAO,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC1D,KAAK,UAAU;YACX,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,sBAAsB;YACvB,OAAO,gCAAgC,CAAC,KAAK,CAAC,CAAC;QACnD,yEAAyE;QACzE;YACI,OAAO,GAAG,CAAC,gBAAgB,IAAI,oBAAoB,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,CAA0B;IACpD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAAC,CAA0B;IACrD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,OAAO,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC/E,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,GAAG,CAAC,kBAAkB,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,8BAA8B,CAAC,CAA0B;IAC9D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,kDAAkD,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,CAA0B;IACnD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,CAAU;IAC5B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAU,EAAE,IAAY,EAAE,KAAa;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,GAAG,IAAI,eAAe,KAAK,2BAA2B,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAY;IAChD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAU,EAAE,IAAY;IAClD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAY;IAChD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAU,EAAE,IAAY;IACjD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAY;IAChD,OAAO,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAU,EAAE,IAAY,EAAE,aAAqB;IAC3E,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,aAAa,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAC3B,CAAU,EACV,IAAY,EACZ,GAAW,EACX,GAAW;IAEX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACxD,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,GAAG,KAAK,GAAG,cAAc,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAU,EAAE,IAAY;IACnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,GAAG,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,GAAG,CAAC,GAAG,IAAI,gBAAgB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,GAAG,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAY;IAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,GAAG,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,GAAG,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,GAAG,CAAC,GAAG,IAAI,gBAAgB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACxF,CAAC;IACD,IACI,CAAC,CAAC,SAAS,KAAK,SAAS;QACzB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EACtE,CAAC;QACC,OAAO,GAAG,CAAC,GAAG,IAAI,+CAA+C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACvD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA8B;IACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA8B;IAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC7F,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAC9D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC7D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3F,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,6BAA6B,CAAC,KAA8B;IACjE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,YAAY,GAAG,sBAAsB,CACvC,KAAK,CAAC,OAAO,EACb,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,CACvB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU,EAAE,IAAY;IAC9C,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,sDAAsD;IACtD,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9D,OAAO,GAAG,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAS,iBAAiB,CAAC,KAA8B;IACrD,MAAM,YAAY,GAAG,sBAAsB,CACvC,KAAK,CAAC,OAAO,EACb,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,CACnB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,wBAAwB,CAAC,CAAU,EAAE,IAAY;IACtD,wEAAwE;IACxE,8DAA8D;IAC9D,4EAA4E;IAC5E,wDAAwD;IACxD,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,sDAAsD;IACtD,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACjD,CAAC;IACD,IACI,GAAG,CAAC,SAAS,KAAK,SAAS;QAC3B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAC5E,CAAC;QACC,OAAO,GAAG,CAAC,GAAG,IAAI,+CAA+C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,wEAAwE;AACxE,6EAA6E;AAC7E,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,UAAU,GAAG,sBAAsB,CACrC,KAAK,CAAC,KAAK,EACX,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CAC3B,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,UAAU,GAAG,sBAAsB,CACrC,KAAK,CAAC,KAAK,EACX,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CAC3B,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpG,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpF,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpF,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IACvD,UAAU;IACV,YAAY;IACZ,WAAW;IACX,aAAa;IACb,eAAe;IACf,cAAc;IACd,aAAa;IACb,eAAe;IACf,cAAc;CACjB,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,CAAU,EAAE,IAAY;IAC9C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC,GAAG,IAAI,WAAW,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,GAAG,CAAC,GAAG,IAAI,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,GAAG,CAAC,GAAG,IAAI,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACvD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,wBAAwB,CAAC,CAAU,EAAE,IAAY;IACtD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAC/E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,CAAC,GAAG,IAAI,2CAA2C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,IAAY;IAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAC7E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACpD,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACpD,MAAM,YAAY,GAAG,sBAAsB,CACvC,KAAK,CAAC,OAAO,EACb,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,CACvB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,sBAAsB,CACvC,KAAK,CAAC,OAAO,EACb,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,CACvB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,YAAY,GAAG,sBAAsB,CACvC,KAAK,CAAC,OAAO,EACb,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,CACvB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,iBAAiB,CAAC,CAAU,EAAE,IAAY;IAC/C,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,sDAAsD;IACtD,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAAC,CAAU,EAAE,IAAY;IACrD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA8B;IACrD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,wEAAwE;IACxE,sEAAsE;IACtE,0DAA0D;IAC1D,uEAAuE;IACvE,YAAY;IACZ,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC;IAC5C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,gDAAgD,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,uCAAuC,oBAAoB,aAAa,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAC9D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC1D,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;CACV,CAAC,CAAC;AAEH,SAAS,2BAA2B,CAAC,CAAU,EAAE,IAAY;IACzD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,GAAG,CAAC,GAAG,IAAI,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,GAAG,CAAC,GAAG,IAAI,wDAAwD,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IACD,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,GAAG,CAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,GAAG,CAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC7D,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAC9D,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA8B;IAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA8B;IAChE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAyD,CAAC;IAChF,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,kEAAkE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,2BAA2B,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,CAAU,EAAE,IAAY;IAC7C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,GAAG,IAAI,6CAA6C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,4BAA4B,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,GAAG,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,GAAG,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,GAAG,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA8B;IAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,8BAA8B,CAAC,KAA8B;IAClE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC7D,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA8B;IAChE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACpD,UAAU;IACV,QAAQ;IACR,gBAAgB;IAChB,QAAQ;CACX,CAAC,CAAC;AAEH,SAAS,sBAAsB,CAAC,KAA8B;IAC1D,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,OAAO,GAAG,CACN,2BAA2B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,+DAA+D,CAClH,CAAC;IACN,CAAC;IACD,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC7D,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,6BAA6B,CAAC,KAA8B;IACjE,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA8B;IAChE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,+BAA+B,CAAC,KAA8B;IACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,+BAA+B,CAAC,KAA8B;IACnE,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kCAAkC,CAAC,KAA8B;IACtE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gCAAgC,CAAC,KAA8B;IACpE,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,+BAA+B,CAAC,KAA8B;IACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,+BAA+B,CAAC,KAA8B;IACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC5D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IACzD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,sBAAsB,CAAC,CAAU,EAAE,IAAY;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,GAAG,IAAI,qBAAqB,oBAAoB,UAAU,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU,EAAE,IAAY;IAC/C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,OAAO,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAChG,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa,EAAE,IAAY;IAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACxE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,GAAG,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,GAAG,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,GAAG,CAAC,GAAG,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,GAAG,CAAC,GAAG,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,GAAG,CAAC,GAAG,IAAI,eAAe,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO,GAAG,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,uBAAuB,QAAQ,8BAA8B,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,iBAAiB,CAC/B,GAAG,CAAC,WAAW,CAAC,EAChB,uBAAuB,QAAQ,KAAK,WAAW,GAAG,CACrD,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;QACxC,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC;IACvD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC;IACvD,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,kEAAkE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,IAAiB,EAAE,KAA8B;IAC1E,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM;YACP,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,iBAAiB;YAClB,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,gBAAgB;YACjB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,eAAe;YAChB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,YAAY;YACb,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,WAAW;YACZ,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,mBAAmB;YACpB,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,UAAU;YACX,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,UAAU;YACX,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,QAAQ;YACT,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,SAAS;YACV,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,MAAM;YACP,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,cAAc;YACf,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,QAAQ;YACT,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,KAAK;YACN,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,cAAc;YACf,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,KAAK;YACN,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,aAAa;YACd,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,MAAM;YACP,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,cAAc;YACf,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,eAAe;YAChB,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,iBAAiB;YAClB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,eAAe;YAChB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,iBAAiB;YAClB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,kBAAkB;YACnB,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,kBAAkB;YACnB,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,iBAAiB;YAClB,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,qBAAqB;YACtB,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,eAAe;YAChB,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,WAAW;YACZ,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,eAAe;YAChB,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,gBAAgB;YACjB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,YAAY;YACb,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,gBAAgB;YACjB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,UAAU;YACX,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,mBAAmB;YACpB,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,UAAU;YACX,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,WAAW;YACZ,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,UAAU;YACX,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,eAAe;YAChB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,gBAAgB;YACjB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,oBAAoB;YACrB,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,cAAc;YACf,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,kBAAkB;YACnB,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,sBAAsB;YACvB,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,sBAAsB;YACvB,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,yBAAyB;YAC1B,OAAO,kCAAkC,CAAC,KAAK,CAAC,CAAC;QACrD,KAAK,uBAAuB;YACxB,OAAO,gCAAgC,CAAC,KAAK,CAAC,CAAC;QACnD,KAAK,sBAAsB;YACvB,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,sBAAsB;YACvB,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAClD,KAAK,cAAc;YACf,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,aAAa;YACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,WAAW;YACZ,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,OAAO;YACR,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,CAA0B;IACvD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IAClC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3E,OAAO;YACH,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,yBAAyB,MAAM,CAAC,WAAW,CAAC,8BAA8B;SACtF,CAAC;IACN,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,0CAA0C,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,GAAG,CACN,wBAAwB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,WAAW,GAAG,CAChG,CAAC;IACN,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,mBAAmB,CAAC,WAA0B,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,kBAAkB,CAAC,CAA0B;IAClD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7E,OAAO,GAAG,CAAC,yBAAyB,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IAClB,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACvC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM;YACP,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,OAAO;YACR,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,iBAAiB;YAClB,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,KAAK;YACN,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,SAAS;YACV,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,YAAY;YACb,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACjC;YACI,OAAO,GAAG,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACpF,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport { DRAWING_KINDS, type DrawingKind } from \"@invinite-org/chartlang-core\";\n\nimport type { DiagnosticCode } from \"../types.js\";\n\n/**\n * Successful validation. `e` was a well-formed Phase-1 emission and is\n * safe to forward across the structured-clone boundary.\n *\n * @since 0.1\n * @stable\n * @example\n * const r: ValidationOk = { ok: true };\n */\nexport type ValidationOk = { readonly ok: true };\n\n/**\n * Failed validation. `code` is `\"malformed-emission\"` for shape errors\n * and `\"unsupported-drawing-kind\"` for the Phase-1 drawing stub.\n *\n * @since 0.1\n * @stable\n * @example\n * const r: ValidationFail = {\n * ok: false,\n * code: \"malformed-emission\",\n * message: \"not an object\",\n * };\n */\nexport type ValidationFail = {\n readonly ok: false;\n readonly code: DiagnosticCode;\n readonly message: string;\n};\n\n/**\n * Discriminated union returned by {@link validateEmission}.\n *\n * @since 0.1\n * @stable\n * @example\n * declare const r: ValidationResult;\n * if (r.ok) {\n * // pass through\n * } else {\n * console.error(r.code, r.message);\n * }\n */\nexport type ValidationResult = ValidationOk | ValidationFail;\n\nconst VALID_PLOT_STYLE_KINDS: ReadonlySet<string> = new Set([\n \"line\",\n \"step-line\",\n \"horizontal-line\",\n \"histogram\",\n \"area\",\n \"filled-band\",\n \"label\",\n \"marker\",\n \"shape\",\n \"character\",\n \"arrow\",\n \"candle-override\",\n \"bar-override\",\n \"bg-color\",\n \"bar-color\",\n \"horizontal-histogram\",\n]);\n\nconst VALID_LINE_STYLES: ReadonlySet<string> = new Set([\"solid\", \"dashed\", \"dotted\"]);\n\nconst VALID_MARKER_SHAPES: ReadonlySet<string> = new Set([\n \"circle\",\n \"triangle-up\",\n \"triangle-down\",\n \"square\",\n \"diamond\",\n]);\n\nconst VALID_SHAPE_GLYPHS: ReadonlySet<string> = new Set([\n \"circle\",\n \"triangle-up\",\n \"triangle-down\",\n \"square\",\n \"diamond\",\n \"cross\",\n \"xcross\",\n \"flag\",\n]);\n\nconst VALID_PLOT_LOCATIONS: ReadonlySet<string> = new Set([\"above\", \"below\", \"absolute\"]);\n\nconst VALID_ARROW_DIRECTIONS: ReadonlySet<string> = new Set([\"up\", \"down\"]);\n\nconst VALID_LABEL_POSITIONS: ReadonlySet<string> = new Set([\"above\", \"below\", \"anchor\"]);\n\nconst MAX_LABEL_LENGTH = 128;\n\nconst VALID_ALERT_SEVERITIES: ReadonlySet<string> = new Set([\"info\", \"warning\", \"critical\"]);\n\nconst VALID_LOG_LEVELS: ReadonlySet<string> = new Set([\"info\", \"warn\", \"error\"]);\n\nconst VALID_ALERT_CHANNELS: ReadonlySet<string> = new Set([\n \"log\",\n \"toast\",\n \"webhook\",\n \"email\",\n \"sms\",\n \"push\",\n]);\n\nconst VALID_DIAGNOSTIC_SEVERITIES: ReadonlySet<string> = new Set([\"info\", \"warning\", \"error\"]);\n\nconst VALID_DRAWING_KINDS: ReadonlySet<string> = new Set<string>(DRAWING_KINDS);\n\nconst VALID_DRAWING_OPS: ReadonlySet<string> = new Set([\"create\", \"update\", \"remove\"]);\n\nconst VALID_DIAGNOSTIC_CODES: ReadonlySet<string> = new Set<DiagnosticCode>([\n \"unsupported-plot-kind\",\n \"unsupported-drawing-kind\",\n \"unsupported-alert-channel\",\n \"unsupported-pane\",\n \"unsupported-interval\",\n \"multi-timeframe-not-supported\",\n \"unknown-secondary-stream\",\n \"lookback-exceeded\",\n \"drawing-budget-exceeded\",\n \"dropped-by-policy\",\n \"input-coercion-failed\",\n \"alert-conditions-not-supported\",\n \"unknown-alert-condition\",\n \"alert-rate-limited\",\n \"runtime-cpu-budget-exceeded\",\n \"runtime-memory-budget-exceeded\",\n \"runtime-log-budget-exceeded\",\n \"malformed-log-meta\",\n \"runtime-error-thrown\",\n \"session-info-missing\",\n \"fixed-range-inverted\",\n \"state-snapshot-restored\",\n \"state-snapshot-future-dated\",\n \"state-snapshot-malformed\",\n \"state-snapshot-save-failed\",\n \"malformed-emission\",\n \"dep-error\",\n \"dep-cycle\",\n \"dep-unknown-output\",\n \"dep-invalid-input-override\",\n \"dep-dynamic\",\n \"dep-output-not-titled\",\n]);\n\nfunction bad(message: string, code: DiagnosticCode = \"malformed-emission\"): ValidationFail {\n return { ok: false, code, message };\n}\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n if (typeof v !== \"object\" || v === null) return false;\n const proto = Object.getPrototypeOf(v);\n return proto === Object.prototype || proto === null;\n}\n\nfunction isFiniteNumber(v: unknown): v is number {\n return typeof v === \"number\" && Number.isFinite(v);\n}\n\nfunction isNonNegativeInteger(v: unknown): v is number {\n return typeof v === \"number\" && Number.isInteger(v) && v >= 0;\n}\n\nfunction isNonEmptyString(v: unknown): v is string {\n return typeof v === \"string\" && v.length > 0;\n}\n\n/**\n * Walk a `meta` payload and reject any non-JSON-friendly element. Per\n * PLAN §7.3 universal payload rules: forbid `Map`, `Set`, `Date`,\n * `RegExp`, `bigint`, `Function`, `Symbol`, `undefined`, class\n * instances, and non-finite numbers anywhere in the tree.\n */\nfunction walkMeta(v: unknown, path: string): ValidationResult {\n if (v === null) return { ok: true };\n const t = typeof v;\n if (t === \"boolean\" || t === \"string\") return { ok: true };\n if (t === \"number\") {\n if (!Number.isFinite(v as number)) {\n return bad(`${path}: non-finite number`);\n }\n return { ok: true };\n }\n if (t === \"undefined\") return bad(`${path}: undefined values are forbidden`);\n if (t === \"bigint\") return bad(`${path}: bigint is forbidden`);\n if (t === \"function\") return bad(`${path}: function is forbidden`);\n if (t === \"symbol\") return bad(`${path}: symbol is forbidden`);\n // typeof === \"object\" from here.\n if (Array.isArray(v)) {\n for (let i = 0; i < v.length; i++) {\n const r = walkMeta(v[i], `${path}[${i}]`);\n if (!r.ok) return r;\n }\n return { ok: true };\n }\n if (!isPlainObject(v)) {\n return bad(`${path}: only plain objects are allowed`);\n }\n for (const key of Object.keys(v)) {\n // Use `Reflect.get` and a try/catch so a throwing-getter on the\n // meta payload (constructed via `Object.defineProperty(..., {\n // get() { throw … }})` either deliberately or by accident at a\n // serialisation boundary) converts to a `malformed-emission`\n // diagnostic instead of crashing the host.\n let child: unknown;\n try {\n child = Reflect.get(v, key);\n } catch {\n return bad(`${path}.${key}: getter threw during traversal`);\n }\n const r = walkMeta(child, `${path}.${key}`);\n if (!r.ok) return r;\n }\n return { ok: true };\n}\n\nfunction validateLineLikeStyle(style: Record<string, unknown>): ValidationResult {\n const lineWidth = style.lineWidth;\n if (!isFiniteNumber(lineWidth) || lineWidth <= 0) {\n return bad(\"style.lineWidth: must be a finite positive number\");\n }\n const lineStyle = style.lineStyle;\n if (typeof lineStyle !== \"string\" || !VALID_LINE_STYLES.has(lineStyle)) {\n return bad(`style.lineStyle: '${String(lineStyle)}' is not a valid line style`);\n }\n return { ok: true };\n}\n\nfunction validateAreaStyle(style: Record<string, unknown>): ValidationResult {\n const lineCheck = validateLineLikeStyle(style);\n if (!lineCheck.ok) return lineCheck;\n const fillAlpha = style.fillAlpha;\n if (!isFiniteNumber(fillAlpha) || fillAlpha < 0 || fillAlpha > 1) {\n return bad(\"style.fillAlpha: must be a finite number in [0, 1]\");\n }\n return { ok: true };\n}\n\nfunction validateHistogramStyle(style: Record<string, unknown>): ValidationResult {\n const baseline = style.baseline;\n if (!isFiniteNumber(baseline)) {\n return bad(\"style.baseline: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction validateFilledBandStyle(style: Record<string, unknown>): ValidationResult {\n const upper = style.upper;\n if (upper !== null && !isFiniteNumber(upper)) {\n return bad(\"style.upper: must be a finite number or null\");\n }\n const lower = style.lower;\n if (lower !== null && !isFiniteNumber(lower)) {\n return bad(\"style.lower: must be a finite number or null\");\n }\n if (upper === null && lower === null) {\n return bad(\"style.upper / style.lower: at least one bound must be non-null\");\n }\n const alpha = style.alpha;\n if (!isFiniteNumber(alpha) || alpha < 0 || alpha > 1) {\n return bad(\"style.alpha: must be a finite number in [0, 1]\");\n }\n return { ok: true };\n}\n\nfunction validateLabelStyle(style: Record<string, unknown>): ValidationResult {\n const text = style.text;\n if (typeof text !== \"string\" || text.length === 0) {\n return bad(\"style.text: must be a non-empty string\");\n }\n if (text.length > MAX_LABEL_LENGTH) {\n return bad(`style.text: must be at most ${MAX_LABEL_LENGTH} characters`);\n }\n const position = style.position;\n if (typeof position !== \"string\" || !VALID_LABEL_POSITIONS.has(position)) {\n return bad(`style.position: '${String(position)}' is not a valid label position`);\n }\n return { ok: true };\n}\n\nfunction validateMarkerStyle(style: Record<string, unknown>): ValidationResult {\n const shape = style.shape;\n if (typeof shape !== \"string\" || !VALID_MARKER_SHAPES.has(shape)) {\n return bad(`style.shape: '${String(shape)}' is not a valid marker shape`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return { ok: true };\n}\n\nfunction validateOptionalLocation(style: Record<string, unknown>): ValidationResult {\n const location = style.location;\n if (\n location !== undefined &&\n (typeof location !== \"string\" || !VALID_PLOT_LOCATIONS.has(location))\n ) {\n return bad(`style.location: '${String(location)}' is not a valid plot location`);\n }\n return { ok: true };\n}\n\nfunction validatePlotShapeStyle(style: Record<string, unknown>): ValidationResult {\n const shape = style.shape;\n if (typeof shape !== \"string\" || !VALID_SHAPE_GLYPHS.has(shape)) {\n return bad(`style.shape: '${String(shape)}' is not a valid shape glyph`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return validateOptionalLocation(style);\n}\n\nfunction validateCharacterStyle(style: Record<string, unknown>): ValidationResult {\n const char = style.char;\n if (typeof char !== \"string\" || char.length === 0) {\n return bad(\"style.char: must be a non-empty string\");\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return validateOptionalLocation(style);\n}\n\nfunction validateArrowStyle(style: Record<string, unknown>): ValidationResult {\n const direction = style.direction;\n if (typeof direction !== \"string\" || !VALID_ARROW_DIRECTIONS.has(direction)) {\n return bad(`style.direction: '${String(direction)}' is not a valid arrow direction`);\n }\n const size = style.size;\n if (!isFiniteNumber(size) || size <= 0) {\n return bad(\"style.size: must be a finite positive number\");\n }\n return { ok: true };\n}\n\nfunction validateColor(value: unknown, path: string): ValidationResult {\n if (typeof value !== \"string\" || value.length === 0) {\n return bad(`${path}: must be a non-empty string`);\n }\n return { ok: true };\n}\n\nfunction validateCandleOverrideStyle(style: Record<string, unknown>): ValidationResult {\n const bull = validateColor(style.bull, \"style.bull\");\n if (!bull.ok) return bull;\n const bear = validateColor(style.bear, \"style.bear\");\n if (!bear.ok) return bear;\n if (style.doji !== undefined) {\n return validateColor(style.doji, \"style.doji\");\n }\n return { ok: true };\n}\n\nfunction validateSingleColorStyle(style: Record<string, unknown>, path: string): ValidationResult {\n return validateColor(style.color, path);\n}\n\nfunction validateBgColorStyle(style: Record<string, unknown>): ValidationResult {\n const color = validateSingleColorStyle(style, \"style.color\");\n if (!color.ok) return color;\n const transp = style.transp;\n if (transp !== undefined && (!isFiniteNumber(transp) || transp < 0 || transp > 100)) {\n return bad(\"style.transp: must be a finite number in [0, 100]\");\n }\n return { ok: true };\n}\n\nfunction validateHorizontalHistogramStyle(style: Record<string, unknown>): ValidationResult {\n const buckets = style.buckets;\n if (!Array.isArray(buckets)) {\n return bad(\"style.buckets: must be an array\");\n }\n for (let i = 0; i < buckets.length; i++) {\n const bucket = buckets[i];\n if (!isPlainObject(bucket)) {\n return bad(`style.buckets[${i}]: must be an object`);\n }\n if (!isFiniteNumber(bucket.price)) {\n return bad(`style.buckets[${i}].price: must be a finite number`);\n }\n if (!isFiniteNumber(bucket.volume) || bucket.volume < 0) {\n return bad(`style.buckets[${i}].volume: must be a finite non-negative number`);\n }\n if (bucket.color !== undefined) {\n const color = validateColor(bucket.color, `style.buckets[${i}].color`);\n if (!color.ok) return color;\n }\n }\n return { ok: true };\n}\n\nfunction validatePlotStyle(style: unknown): ValidationResult {\n if (!isPlainObject(style)) return bad(\"style: not an object\");\n const kind = style.kind;\n if (typeof kind !== \"string\" || !VALID_PLOT_STYLE_KINDS.has(kind)) {\n return bad(`style.kind: '${String(kind)}' is not a known plot kind`);\n }\n switch (kind) {\n case \"line\":\n case \"step-line\":\n case \"horizontal-line\":\n return validateLineLikeStyle(style);\n case \"histogram\":\n return validateHistogramStyle(style);\n case \"area\":\n return validateAreaStyle(style);\n case \"filled-band\":\n return validateFilledBandStyle(style);\n case \"label\":\n return validateLabelStyle(style);\n case \"marker\":\n return validateMarkerStyle(style);\n case \"shape\":\n return validatePlotShapeStyle(style);\n case \"character\":\n return validateCharacterStyle(style);\n case \"arrow\":\n return validateArrowStyle(style);\n case \"candle-override\":\n return validateCandleOverrideStyle(style);\n case \"bar-override\":\n case \"bar-color\":\n return validateSingleColorStyle(style, \"style.color\");\n case \"bg-color\":\n return validateBgColorStyle(style);\n case \"horizontal-histogram\":\n return validateHorizontalHistogramStyle(style);\n /* v8 ignore next 2 -- kind is already gated by VALID_PLOT_STYLE_KINDS */\n default:\n return bad(`style.kind: '${kind}' has no validator`);\n }\n}\n\nfunction validatePlotEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.slotId)) return bad(\"plot.slotId: must be a non-empty string\");\n if (typeof e.title !== \"string\") return bad(\"plot.title: must be a string\");\n const styleResult = validatePlotStyle(e.style);\n if (!styleResult.ok) return styleResult;\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"plot.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) return bad(\"plot.time: must be a finite number\");\n const value = e.value;\n if (value !== null && !isFiniteNumber(value)) {\n return bad(\"plot.value: must be a finite number or null\");\n }\n const color = e.color;\n if (color !== null && typeof color !== \"string\") {\n return bad(\"plot.color: must be a string or null\");\n }\n if (!isPlainObject(e.meta)) return bad(\"plot.meta: must be a plain object\");\n const metaResult = walkMeta(e.meta, \"plot.meta\");\n if (!metaResult.ok) return metaResult;\n if (typeof e.pane !== \"string\") return bad(\"plot.pane: must be a string\");\n if (e.visible !== undefined && typeof e.visible !== \"boolean\") {\n return bad(\"plot.visible: must be a boolean\");\n }\n if (e.xShift !== undefined && !Number.isInteger(e.xShift)) {\n return bad(\"plot.xShift: must be an integer\");\n }\n if (e.z !== undefined && !isFiniteNumber(e.z)) {\n return bad(\"plot.z: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction validateAlertEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.slotId)) return bad(\"alert.slotId: must be a non-empty string\");\n const severity = e.severity;\n if (typeof severity !== \"string\" || !VALID_ALERT_SEVERITIES.has(severity)) {\n return bad(`alert.severity: '${String(severity)}' is not a valid severity`);\n }\n if (!isNonEmptyString(e.message)) {\n return bad(\"alert.message: must be a non-empty string\");\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"alert.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) return bad(\"alert.time: must be a finite number\");\n if (!isPlainObject(e.meta)) return bad(\"alert.meta: must be a plain object\");\n const metaResult = walkMeta(e.meta, \"alert.meta\");\n if (!metaResult.ok) return metaResult;\n const channels = e.channels;\n if (!Array.isArray(channels)) return bad(\"alert.channels: must be an array\");\n for (let i = 0; i < channels.length; i++) {\n const c = channels[i];\n if (typeof c !== \"string\" || !VALID_ALERT_CHANNELS.has(c)) {\n return bad(`alert.channels[${i}]: '${String(c)}' is not a valid alert channel`);\n }\n }\n if (!isNonEmptyString(e.dedupeKey)) {\n return bad(\"alert.dedupeKey: must be a non-empty string\");\n }\n return { ok: true };\n}\n\nfunction validateAlertConditionEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.conditionId)) {\n return bad(\"alert-condition.conditionId: must be a non-empty string\");\n }\n if (typeof e.title !== \"string\") {\n return bad(\"alert-condition.title: must be a string\");\n }\n if (typeof e.description !== \"string\") {\n return bad(\"alert-condition.description: must be a string\");\n }\n if (typeof e.defaultMessage !== \"string\") {\n return bad(\"alert-condition.defaultMessage: must be a string\");\n }\n if (typeof e.fired !== \"boolean\") {\n return bad(\"alert-condition.fired: must be a boolean\");\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"alert-condition.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"alert-condition.time: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction validateLogEmission(e: Record<string, unknown>): ValidationResult {\n const level = e.level;\n if (typeof level !== \"string\" || !VALID_LOG_LEVELS.has(level)) {\n return bad(`log.level: '${String(level)}' is not a valid log level`);\n }\n if (!isNonEmptyString(e.message)) {\n return bad(\"log.message: must be a non-empty string\");\n }\n const meta = e.meta;\n if (meta !== undefined) {\n if (!isPlainObject(meta)) return bad(\"log.meta: must be a plain object\");\n const metaResult = walkMeta(meta, \"log.meta\");\n if (!metaResult.ok) return metaResult;\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"log.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"log.time: must be a finite number\");\n }\n return { ok: true };\n}\n\nfunction isWorldPoint(v: unknown): v is { time: number; price: number } {\n if (!isPlainObject(v)) return false;\n return isFiniteNumber(v.time) && isFiniteNumber(v.price);\n}\n\nfunction validateAnchorFixed(v: unknown, path: string, count: number): ValidationResult {\n if (!Array.isArray(v) || v.length !== count) {\n return bad(`${path}: must be a ${count}-element WorldPoint tuple`);\n }\n for (let i = 0; i < count; i++) {\n if (!isWorldPoint(v[i])) {\n return bad(`${path}[${i}]: not a WorldPoint (need finite time + price)`);\n }\n }\n return { ok: true };\n}\n\nfunction validateAnchorPair(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 2);\n}\n\nfunction validateAnchorTriple(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 3);\n}\n\nfunction validateAnchorQuad(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 4);\n}\n\nfunction validateAnchorQuint(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 5);\n}\n\nfunction validateAnchorHept(v: unknown, path: string): ValidationResult {\n return validateAnchorFixed(v, path, 7);\n}\n\nfunction validateOptionalLabels(v: unknown, path: string, expectedCount: number): ValidationResult {\n if (v === undefined) return { ok: true };\n if (!Array.isArray(v) || v.length !== expectedCount) {\n return bad(`${path}: must be an array of ${expectedCount} strings`);\n }\n for (let i = 0; i < expectedCount; i++) {\n if (typeof v[i] !== \"string\") {\n return bad(`${path}[${i}]: must be a string`);\n }\n }\n return { ok: true };\n}\n\nfunction validateAnchorVariable(\n v: unknown,\n path: string,\n min: number,\n max: number,\n): ValidationResult {\n if (!Array.isArray(v) || v.length < min || v.length > max) {\n return bad(`${path}: must be an array of ${min}..${max} WorldPoints`);\n }\n for (let i = 0; i < v.length; i++) {\n if (!isWorldPoint(v[i])) {\n return bad(`${path}[${i}]: not a WorldPoint (need finite time + price)`);\n }\n }\n return { ok: true };\n}\n\nfunction validateLineDrawStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.lineWidth !== undefined && (!isFiniteNumber(s.lineWidth) || s.lineWidth <= 0)) {\n return bad(`${path}.lineWidth: must be a finite positive number`);\n }\n if (s.lineStyle !== undefined && !VALID_LINE_STYLES.has(String(s.lineStyle))) {\n return bad(`${path}.lineStyle: '${String(s.lineStyle)}' is not a valid line style`);\n }\n if (s.extendLeft !== undefined && typeof s.extendLeft !== \"boolean\") {\n return bad(`${path}.extendLeft: must be a boolean`);\n }\n if (s.extendRight !== undefined && typeof s.extendRight !== \"boolean\") {\n return bad(`${path}.extendRight: must be a boolean`);\n }\n return { ok: true };\n}\n\nfunction validateShapeStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.stroke !== undefined && typeof s.stroke !== \"string\") {\n return bad(`${path}.stroke: must be a string`);\n }\n if (s.fill !== undefined && typeof s.fill !== \"string\") {\n return bad(`${path}.fill: must be a string`);\n }\n if (s.lineWidth !== undefined && (!isFiniteNumber(s.lineWidth) || s.lineWidth <= 0)) {\n return bad(`${path}.lineWidth: must be a finite positive number`);\n }\n if (s.lineStyle !== undefined && !VALID_LINE_STYLES.has(String(s.lineStyle))) {\n return bad(`${path}.lineStyle: '${String(s.lineStyle)}' is not a valid line style`);\n }\n if (\n s.fillAlpha !== undefined &&\n (!isFiniteNumber(s.fillAlpha) || s.fillAlpha < 0 || s.fillAlpha > 1)\n ) {\n return bad(`${path}.fillAlpha: must be a finite number in [0, 1]`);\n }\n return { ok: true };\n}\n\nfunction validateDrawingMeta(state: Record<string, unknown>): ValidationResult {\n if (state.name !== undefined && typeof state.name !== \"string\") {\n return bad(\"drawing.state.name: must be a string\");\n }\n if (state.visible !== undefined && typeof state.visible !== \"boolean\") {\n return bad(\"drawing.state.visible: must be a boolean\");\n }\n return { ok: true };\n}\n\nfunction validateLineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHorizontalLineState(state: Record<string, unknown>): ValidationResult {\n if (!isFiniteNumber(state.price)) return bad(\"drawing.state.price: must be a finite number\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHorizontalRayState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateVerticalLineState(state: Record<string, unknown>): ValidationResult {\n if (!isFiniteNumber(state.time)) return bad(\"drawing.state.time: must be a finite number\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCrossLineState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTrendAngleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRectangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRotatedRectangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTriangleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nconst POLYLINE_MIN_ANCHORS = 3;\nconst POLYLINE_MAX_ANCHORS = 20;\n\nfunction validatePolylineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n POLYLINE_MIN_ANCHORS,\n POLYLINE_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCircleState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateEllipseState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateShapeStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePathOpts(s: unknown, path: string): ValidationResult {\n const lineCheck = validateLineDrawStyle(s, path);\n if (!lineCheck.ok) return lineCheck;\n // validateLineDrawStyle proved `s` is a plain object.\n const obj = s as Record<string, unknown>;\n if (obj.closed !== undefined && typeof obj.closed !== \"boolean\") {\n return bad(`${path}.closed: must be a boolean`);\n }\n return { ok: true };\n}\n\nconst PATH_MIN_ANCHORS = 2;\nconst PATH_MAX_ANCHORS = 20;\n\nfunction validatePathState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n PATH_MIN_ANCHORS,\n PATH_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validatePathOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFillBetweenStyle(s: unknown, path: string): ValidationResult {\n // `color` / `lineWidth` / `lineStyle` share the LineDrawStyle contract;\n // delegate so the shared checks cannot drift (same pattern as\n // `validatePathOpts`). FillBetweenStyle has no `extendLeft` / `extendRight`\n // fields, so those LineDrawStyle checks pass vacuously.\n const lineCheck = validateLineDrawStyle(s, path);\n if (!lineCheck.ok) return lineCheck;\n // validateLineDrawStyle proved `s` is a plain object.\n const obj = s as Record<string, unknown>;\n if (obj.fill !== undefined && typeof obj.fill !== \"string\") {\n return bad(`${path}.fill: must be a string`);\n }\n if (\n obj.fillAlpha !== undefined &&\n (!isFiniteNumber(obj.fillAlpha) || obj.fillAlpha < 0 || obj.fillAlpha > 1)\n ) {\n return bad(`${path}.fillAlpha: must be a finite number in [0, 1]`);\n }\n return { ok: true };\n}\n\n// A fill-between band is a series-growth primitive: the canonical idiom\n// accumulates one `WorldPoint` per bar into each edge and re-emits the whole\n// ribbon every step (see `examples/scripts/fill-between-band.chart.ts`), unlike\n// the discrete `path` / `polyline` tools that cap at 20. The upper bound here\n// must therefore cover a full chart history — sized to the 10 000-bar bundled\n// golden fixture so a band spanning the entire dataset is not silently dropped.\nconst FILL_BETWEEN_MIN_ANCHORS = 2;\nconst FILL_BETWEEN_MAX_ANCHORS = 10_000;\n\nfunction validateFillBetweenState(state: Record<string, unknown>): ValidationResult {\n const edgeACheck = validateAnchorVariable(\n state.edgeA,\n \"drawing.state.edgeA\",\n FILL_BETWEEN_MIN_ANCHORS,\n FILL_BETWEEN_MAX_ANCHORS,\n );\n if (!edgeACheck.ok) return edgeACheck;\n const edgeBCheck = validateAnchorVariable(\n state.edgeB,\n \"drawing.state.edgeB\",\n FILL_BETWEEN_MIN_ANCHORS,\n FILL_BETWEEN_MAX_ANCHORS,\n );\n if (!edgeBCheck.ok) return edgeBCheck;\n return validateFillBetweenStyle(state.style, \"drawing.state.style\");\n}\n\nconst VALID_TEXT_SIZES: ReadonlySet<string> = new Set([\"tiny\", \"small\", \"normal\", \"large\", \"huge\"]);\n\nconst VALID_TEXT_HALIGN: ReadonlySet<string> = new Set([\"left\", \"center\", \"right\"]);\n\nconst VALID_TEXT_VALIGN: ReadonlySet<string> = new Set([\"top\", \"middle\", \"bottom\"]);\n\nconst VALID_TABLE_POSITIONS: ReadonlySet<string> = new Set([\n \"top-left\",\n \"top-center\",\n \"top-right\",\n \"middle-left\",\n \"middle-center\",\n \"middle-right\",\n \"bottom-left\",\n \"bottom-center\",\n \"bottom-right\",\n]);\n\nfunction validateTextOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.size !== undefined && !VALID_TEXT_SIZES.has(String(s.size))) {\n return bad(`${path}.size: '${String(s.size)}' is not a valid text size`);\n }\n if (s.halign !== undefined && !VALID_TEXT_HALIGN.has(String(s.halign))) {\n return bad(`${path}.halign: '${String(s.halign)}' is not a valid halign`);\n }\n if (s.valign !== undefined && !VALID_TEXT_VALIGN.has(String(s.valign))) {\n return bad(`${path}.valign: '${String(s.valign)}' is not a valid valign`);\n }\n if (s.bgColor !== undefined && typeof s.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateMarkerState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n if (state.text !== undefined && typeof state.text !== \"string\") {\n return bad(\"drawing.state.text: must be a string\");\n }\n if (state.value !== undefined && !isFiniteNumber(state.value)) {\n return bad(\"drawing.state.value: must be a finite number\");\n }\n return validateTextOpts(state.style, \"drawing.state.style\");\n}\n\nconst FREEHAND_MIN_ANCHORS = 2;\nconst FREEHAND_MAX_ANCHORS = 500;\n\nfunction validateHighlighterStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (typeof s.color !== \"string\") return bad(`${path}.color: must be a string`);\n if (!isFiniteNumber(s.alpha) || s.alpha < 0 || s.alpha > 1) {\n return bad(`${path}.alpha: must be a finite number in [0, 1]`);\n }\n return { ok: true };\n}\n\nfunction validateBrushStyle(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (typeof s.stroke !== \"string\") return bad(`${path}.stroke: must be a string`);\n if (typeof s.fill !== \"string\") return bad(`${path}.fill: must be a string`);\n return { ok: true };\n}\n\nfunction validateArcState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCurveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateDoubleCurveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePenState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHighlighterState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateHighlighterStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateBrushState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorVariable(\n state.anchors,\n \"drawing.state.anchors\",\n FREEHAND_MIN_ANCHORS,\n FREEHAND_MAX_ANCHORS,\n );\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateBrushStyle(state.style, \"drawing.state.style\");\n}\n\nconst TEXT_BODY_MAX_LENGTH = 256;\n\nfunction validateArrowOpts(s: unknown, path: string): ValidationResult {\n const lineCheck = validateLineDrawStyle(s, path);\n if (!lineCheck.ok) return lineCheck;\n // validateLineDrawStyle proved `s` is a plain object.\n const obj = s as Record<string, unknown>;\n if (obj.label !== undefined && typeof obj.label !== \"string\") {\n return bad(`${path}.label: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateArrowMarkerOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.text !== undefined && typeof s.text !== \"string\") {\n return bad(`${path}.text: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateTextState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n // walkMeta catches non-JsonValue payloads (bigint / function / symbol /\n // undefined / non-finite number) anywhere on `body`; a bare string is\n // a valid JsonValue and passes through. The kind-specific\n // non-empty / length cap follows so the wire-shape error message stays\n // specific.\n const bodyMetaCheck = walkMeta(state.body, \"drawing.state.body\");\n if (!bodyMetaCheck.ok) return bodyMetaCheck;\n if (typeof state.body !== \"string\") {\n return bad(\"drawing.state.body: must be a string\");\n }\n if (state.body.length === 0) {\n return bad(\"drawing.state.body: must be a non-empty string\");\n }\n if (state.body.length > TEXT_BODY_MAX_LENGTH) {\n return bad(`drawing.state.body: must be at most ${TEXT_BODY_MAX_LENGTH} characters`);\n }\n return validateTextOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateArrowOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkerState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkUpState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateArrowMarkDownState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateArrowMarkerOpts(state.style, \"drawing.state.style\");\n}\n\nconst VALID_REGRESSION_SOURCES: ReadonlySet<string> = new Set([\n \"close\",\n \"open\",\n \"high\",\n \"low\",\n \"hl2\",\n \"hlc3\",\n \"ohlc4\",\n \"hlcc4\",\n]);\n\nfunction validateRegressionTrendOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.source !== undefined && !VALID_REGRESSION_SOURCES.has(String(s.source))) {\n return bad(`${path}.source: '${String(s.source)}' is not a valid source`);\n }\n if (s.stdevMultiplier !== undefined) {\n if (!isFiniteNumber(s.stdevMultiplier) || s.stdevMultiplier < 0) {\n return bad(`${path}.stdevMultiplier: must be a non-negative finite number`);\n }\n }\n if (s.showUpperBand !== undefined && typeof s.showUpperBand !== \"boolean\") {\n return bad(`${path}.showUpperBand: must be a boolean`);\n }\n if (s.showLowerBand !== undefined && typeof s.showLowerBand !== \"boolean\") {\n return bad(`${path}.showLowerBand: must be a boolean`);\n }\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateTrendChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateFlatTopBottomState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateDisjointChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateRegressionTrendState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const anchors = state.anchors as ReadonlyArray<{ time: number; price: number }>;\n if (!(anchors[0].time < anchors[1].time)) {\n return bad(\"drawing.state.anchors: anchors[0].time must be < anchors[1].time\");\n }\n return validateRegressionTrendOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.levels !== undefined) {\n if (!Array.isArray(s.levels)) {\n return bad(`${path}.levels: must be an array of finite numbers`);\n }\n if (s.levels.length === 0) {\n return bad(`${path}.levels: must contain at least one level`);\n }\n for (let i = 0; i < s.levels.length; i++) {\n if (!isFiniteNumber(s.levels[i])) {\n return bad(`${path}.levels[${i}]: must be a finite number`);\n }\n }\n }\n if (s.showLabels !== undefined && typeof s.showLabels !== \"boolean\") {\n return bad(`${path}.showLabels: must be a boolean`);\n }\n if (s.color !== undefined && typeof s.color !== \"string\") {\n return bad(`${path}.color: must be a string`);\n }\n if (s.extendLeft !== undefined && typeof s.extendLeft !== \"boolean\") {\n return bad(`${path}.extendLeft: must be a boolean`);\n }\n if (s.extendRight !== undefined && typeof s.extendRight !== \"boolean\") {\n return bad(`${path}.extendRight: must be a boolean`);\n }\n return { ok: true };\n}\n\nfunction validateFibRetracementState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTrendExtensionState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibChannelState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTimeZoneState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibWedgeState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpeedFanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpeedArcsState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibSpiralState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibCirclesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateFibTrendTimeState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateFibOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannBoxState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannSquareFixedState(state: Record<string, unknown>): ValidationResult {\n if (!isWorldPoint(state.anchor)) return bad(\"drawing.state.anchor: not a WorldPoint\");\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannSquareState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateGannFanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nconst PITCHFORK_VARIANTS: ReadonlySet<string> = new Set([\n \"standard\",\n \"schiff\",\n \"modifiedSchiff\",\n \"inside\",\n]);\n\nfunction validatePitchforkState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n if (typeof state.variant !== \"string\" || !PITCHFORK_VARIANTS.has(state.variant)) {\n return bad(\n `drawing.state.variant: '${String(state.variant)}' must be 'standard' | 'schiff' | 'modifiedSchiff' | 'inside'`,\n );\n }\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validatePitchfanState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateXabcdPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCypherPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateHeadAndShouldersState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateAbcdPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuad(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTrianglePatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateThreeDrivesPatternState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottImpulseWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 5);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottCorrectionWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorTriple(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 3);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottTriangleWaveState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorQuint(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 5);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottDoubleComboState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 7);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateElliottTripleComboState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorHept(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const labelsCheck = validateOptionalLabels(state.labels, \"drawing.state.labels\", 7);\n if (!labelsCheck.ok) return labelsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateCyclicLinesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateTimeCyclesState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nfunction validateSineLineState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n return validateLineDrawStyle(state.style, \"drawing.state.style\");\n}\n\nconst MAX_CHILD_HANDLE_IDS = 100;\n\nfunction validateChildHandleIds(v: unknown, path: string): ValidationResult {\n if (!Array.isArray(v)) {\n return bad(`${path}: must be an array of handle id strings`);\n }\n if (v.length > MAX_CHILD_HANDLE_IDS) {\n return bad(`${path}: must be at most ${MAX_CHILD_HANDLE_IDS} entries`);\n }\n for (let i = 0; i < v.length; i++) {\n if (typeof v[i] !== \"string\") {\n return bad(`${path}[${i}]: must be a string`);\n }\n }\n return { ok: true };\n}\n\nfunction validateFrameOpts(s: unknown, path: string): ValidationResult {\n if (!isPlainObject(s)) return bad(`${path}: must be a plain object`);\n if (s.label !== undefined && typeof s.label !== \"string\") {\n return bad(`${path}.label: must be a string`);\n }\n if (s.bgColor !== undefined && typeof s.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n return { ok: true };\n}\n\nfunction validateGroupState(state: Record<string, unknown>): ValidationResult {\n return validateChildHandleIds(state.childHandleIds, \"drawing.state.childHandleIds\");\n}\n\nfunction validateFrameState(state: Record<string, unknown>): ValidationResult {\n const anchorsCheck = validateAnchorPair(state.anchors, \"drawing.state.anchors\");\n if (!anchorsCheck.ok) return anchorsCheck;\n const childCheck = validateChildHandleIds(state.childHandleIds, \"drawing.state.childHandleIds\");\n if (!childCheck.ok) return childCheck;\n return validateFrameOpts(state.style, \"drawing.state.style\");\n}\n\nfunction validateTableCell(cell: unknown, path: string): ValidationResult {\n if (!isPlainObject(cell)) return bad(`${path}: must be a plain object`);\n if (typeof cell.text !== \"string\") return bad(`${path}.text: must be a string`);\n if (cell.bgColor !== undefined && typeof cell.bgColor !== \"string\") {\n return bad(`${path}.bgColor: must be a string`);\n }\n if (cell.textColor !== undefined && typeof cell.textColor !== \"string\") {\n return bad(`${path}.textColor: must be a string`);\n }\n if (cell.textHalign !== undefined && !VALID_TEXT_HALIGN.has(String(cell.textHalign))) {\n return bad(`${path}.textHalign: '${String(cell.textHalign)}' is not a valid halign`);\n }\n if (cell.textValign !== undefined && !VALID_TEXT_VALIGN.has(String(cell.textValign))) {\n return bad(`${path}.textValign: '${String(cell.textValign)}' is not a valid valign`);\n }\n if (cell.textSize !== undefined && !VALID_TEXT_SIZES.has(String(cell.textSize))) {\n return bad(`${path}.textSize: '${String(cell.textSize)}' is not a valid text size`);\n }\n return { ok: true };\n}\n\nfunction validateTableState(state: Record<string, unknown>): ValidationResult {\n const position = state.position;\n if (typeof position !== \"string\" || !VALID_TABLE_POSITIONS.has(position)) {\n return bad(`drawing.state.position: '${String(position)}' is not a valid table position`);\n }\n const cells = state.cells;\n if (!Array.isArray(cells) || cells.length === 0) {\n return bad(\"drawing.state.cells: must be a non-empty 2D array\");\n }\n for (let rowIndex = 0; rowIndex < cells.length; rowIndex++) {\n const row = cells[rowIndex];\n if (!Array.isArray(row) || row.length === 0) {\n return bad(`drawing.state.cells[${rowIndex}]: must be a non-empty array`);\n }\n for (let columnIndex = 0; columnIndex < row.length; columnIndex++) {\n const cellCheck = validateTableCell(\n row[columnIndex],\n `drawing.state.cells[${rowIndex}][${columnIndex}]`,\n );\n if (!cellCheck.ok) return cellCheck;\n }\n }\n const hasBorderColor = state.borderColor !== undefined;\n const hasBorderWidth = state.borderWidth !== undefined;\n if (hasBorderColor !== hasBorderWidth) {\n return bad(\"drawing.state.borderColor/borderWidth: must be provided together\");\n }\n if (hasBorderColor) {\n const colorCheck = validateColor(state.borderColor, \"drawing.state.borderColor\");\n if (!colorCheck.ok) return colorCheck;\n if (!isFiniteNumber(state.borderWidth) || state.borderWidth <= 0) {\n return bad(\"drawing.state.borderWidth: must be a finite positive number\");\n }\n }\n if (state.frame !== undefined) {\n if (!isPlainObject(state.frame)) return bad(\"drawing.state.frame: must be a plain object\");\n const colorCheck = validateColor(state.frame.color, \"drawing.state.frame.color\");\n if (!colorCheck.ok) return colorCheck;\n if (!isFiniteNumber(state.frame.width) || state.frame.width <= 0) {\n return bad(\"drawing.state.frame.width: must be a finite positive number\");\n }\n }\n return { ok: true };\n}\n\n/**\n * Per-kind state dispatch. Exhaustive over the `DrawingKind` union: the\n * switch has no `default` arm, so adding a kind to `DrawingKind`\n * produces a compile error here and forces a matching validator arm.\n * Wire-shape checks (`handleId` / `op` / `bar` / `time` /\n * `state.kind === drawingKind`) run for every kind via\n * {@link validateDrawingEmission} before this dispatch is reached.\n */\nfunction validateStateByKind(kind: DrawingKind, state: Record<string, unknown>): ValidationResult {\n switch (kind) {\n case \"line\":\n return validateLineState(state);\n case \"horizontal-line\":\n return validateHorizontalLineState(state);\n case \"horizontal-ray\":\n return validateHorizontalRayState(state);\n case \"vertical-line\":\n return validateVerticalLineState(state);\n case \"cross-line\":\n return validateCrossLineState(state);\n case \"trend-angle\":\n return validateTrendAngleState(state);\n case \"rectangle\":\n return validateRectangleState(state);\n case \"rotated-rectangle\":\n return validateRotatedRectangleState(state);\n case \"triangle\":\n return validateTriangleState(state);\n case \"polyline\":\n return validatePolylineState(state);\n case \"circle\":\n return validateCircleState(state);\n case \"ellipse\":\n return validateEllipseState(state);\n case \"path\":\n return validatePathState(state);\n case \"fill-between\":\n return validateFillBetweenState(state);\n case \"marker\":\n return validateMarkerState(state);\n case \"arc\":\n return validateArcState(state);\n case \"curve\":\n return validateCurveState(state);\n case \"double-curve\":\n return validateDoubleCurveState(state);\n case \"pen\":\n return validatePenState(state);\n case \"highlighter\":\n return validateHighlighterState(state);\n case \"brush\":\n return validateBrushState(state);\n case \"text\":\n return validateTextState(state);\n case \"arrow\":\n return validateArrowState(state);\n case \"arrow-marker\":\n return validateArrowMarkerState(state);\n case \"arrow-mark-up\":\n return validateArrowMarkUpState(state);\n case \"arrow-mark-down\":\n return validateArrowMarkDownState(state);\n case \"trend-channel\":\n return validateTrendChannelState(state);\n case \"flat-top-bottom\":\n return validateFlatTopBottomState(state);\n case \"disjoint-channel\":\n return validateDisjointChannelState(state);\n case \"regression-trend\":\n return validateRegressionTrendState(state);\n case \"fib-retracement\":\n return validateFibRetracementState(state);\n case \"fib-trend-extension\":\n return validateFibTrendExtensionState(state);\n case \"fib-channel\":\n return validateFibChannelState(state);\n case \"fib-time-zone\":\n return validateFibTimeZoneState(state);\n case \"fib-wedge\":\n return validateFibWedgeState(state);\n case \"fib-speed-fan\":\n return validateFibSpeedFanState(state);\n case \"fib-speed-arcs\":\n return validateFibSpeedArcsState(state);\n case \"fib-spiral\":\n return validateFibSpiralState(state);\n case \"fib-circles\":\n return validateFibCirclesState(state);\n case \"fib-trend-time\":\n return validateFibTrendTimeState(state);\n case \"gann-box\":\n return validateGannBoxState(state);\n case \"gann-square-fixed\":\n return validateGannSquareFixedState(state);\n case \"gann-square\":\n return validateGannSquareState(state);\n case \"gann-fan\":\n return validateGannFanState(state);\n case \"pitchfork\":\n return validatePitchforkState(state);\n case \"pitchfan\":\n return validatePitchfanState(state);\n case \"xabcd-pattern\":\n return validateXabcdPatternState(state);\n case \"cypher-pattern\":\n return validateCypherPatternState(state);\n case \"head-and-shoulders\":\n return validateHeadAndShouldersState(state);\n case \"abcd-pattern\":\n return validateAbcdPatternState(state);\n case \"triangle-pattern\":\n return validateTrianglePatternState(state);\n case \"three-drives-pattern\":\n return validateThreeDrivesPatternState(state);\n case \"elliott-impulse-wave\":\n return validateElliottImpulseWaveState(state);\n case \"elliott-correction-wave\":\n return validateElliottCorrectionWaveState(state);\n case \"elliott-triangle-wave\":\n return validateElliottTriangleWaveState(state);\n case \"elliott-double-combo\":\n return validateElliottDoubleComboState(state);\n case \"elliott-triple-combo\":\n return validateElliottTripleComboState(state);\n case \"cyclic-lines\":\n return validateCyclicLinesState(state);\n case \"time-cycles\":\n return validateTimeCyclesState(state);\n case \"sine-line\":\n return validateSineLineState(state);\n case \"group\":\n return validateGroupState(state);\n case \"frame\":\n return validateFrameState(state);\n case \"table\":\n return validateTableState(state);\n }\n}\n\nfunction validateDrawingEmission(e: Record<string, unknown>): ValidationResult {\n if (!isNonEmptyString(e.handleId)) {\n return bad(\"drawing.handleId: must be a non-empty string\");\n }\n const drawingKind = e.drawingKind;\n if (typeof drawingKind !== \"string\" || !VALID_DRAWING_KINDS.has(drawingKind)) {\n return {\n ok: false,\n code: \"unsupported-drawing-kind\",\n message: `drawing.drawingKind: '${String(drawingKind)}' is not a known DrawingKind`,\n };\n }\n if (typeof e.op !== \"string\" || !VALID_DRAWING_OPS.has(e.op)) {\n return bad(`drawing.op: '${String(e.op)}' must be 'create' | 'update' | 'remove'`);\n }\n if (!isNonNegativeInteger(e.bar)) {\n return bad(\"drawing.bar: must be a non-negative integer\");\n }\n if (!isFiniteNumber(e.time)) {\n return bad(\"drawing.time: must be a finite number\");\n }\n const state = e.state;\n if (!isPlainObject(state)) {\n return bad(\"drawing.state: must be a plain object\");\n }\n if (state.kind !== drawingKind) {\n return bad(\n `drawing.state.kind: '${String(state.kind)}' must equal drawing.drawingKind '${drawingKind}'`,\n );\n }\n if (e.z !== undefined && !isFiniteNumber(e.z)) {\n return bad(\"drawing.z: must be a finite number\");\n }\n const metaCheck = validateDrawingMeta(state);\n if (!metaCheck.ok) return metaCheck;\n return validateStateByKind(drawingKind as DrawingKind, state);\n}\n\nfunction validateDiagnostic(e: Record<string, unknown>): ValidationResult {\n const severity = e.severity;\n if (typeof severity !== \"string\" || !VALID_DIAGNOSTIC_SEVERITIES.has(severity)) {\n return bad(`diagnostic.severity: '${String(severity)}' is not a valid severity`);\n }\n const code = e.code;\n if (typeof code !== \"string\" || !VALID_DIAGNOSTIC_CODES.has(code)) {\n return bad(`diagnostic.code: '${String(code)}' is not a known DiagnosticCode`);\n }\n if (typeof e.message !== \"string\") return bad(\"diagnostic.message: must be a string\");\n const slotId = e.slotId;\n if (slotId !== null && typeof slotId !== \"string\") {\n return bad(\"diagnostic.slotId: must be a string or null\");\n }\n const bar = e.bar;\n if (bar !== null && !isNonNegativeInteger(bar)) {\n return bad(\"diagnostic.bar: must be a non-negative integer or null\");\n }\n return { ok: true };\n}\n\n/**\n * Hand-rolled validator covering every Phase-1 / Phase-2 / Phase-3\n * emission shape. Returns `{ ok: true }` for well-formed payloads and\n * `{ ok: false, code, message }` otherwise. Hosts and adapters call\n * this at every structured-clone boundary (Worker `postMessage`,\n * QuickJS membrane) per PLAN §7.3.\n *\n * Phase 3 widens the drawing dispatch from an unconditional Phase-1\n * stub to a per-kind validator: unknown `drawingKind` returns\n * `unsupported-drawing-kind`; malformed payloads of a known kind\n * return `malformed-emission`. Tasks 6–18 each ADD their kind\n * validators to the dispatch as ports land.\n *\n * @since 0.1\n * @stable\n * @example\n * import { validateEmission } from \"@invinite-org/chartlang-adapter-kit\";\n *\n * const r = validateEmission({ kind: \"plot\" });\n * if (!r.ok) {\n * console.error(r.code, r.message);\n * }\n */\nexport function validateEmission(e: unknown): ValidationResult {\n if (!isPlainObject(e)) {\n return bad(\"emission: not a plain object\");\n }\n if (!(\"kind\" in e)) {\n return bad(\"emission: missing 'kind' discriminant\");\n }\n const kind = e.kind;\n switch (kind) {\n case \"plot\":\n return validatePlotEmission(e);\n case \"alert\":\n return validateAlertEmission(e);\n case \"alert-condition\":\n return validateAlertConditionEmission(e);\n case \"log\":\n return validateLogEmission(e);\n case \"drawing\":\n return validateDrawingEmission(e);\n case \"diagnostic\":\n return validateDiagnostic(e);\n default:\n return bad(`emission.kind: '${String(kind)}' is not a known emission kind`);\n }\n}\n"]}
|