@disclosureos/records 2.0.0-beta.1 → 2.0.0-beta.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/experimental/v2/primitives.ts","../../../src/experimental/v2/observation-schema.ts","../../../src/experimental/v2/observation.ts","../../../src/experimental/v2/claim-history-schema.ts","../../../src/experimental/v2/claim-history.ts","../../../src/experimental/v2/utc.ts","../../../src/source/types.ts","../../../src/source/credibility.ts","../../../src/source/reference.ts","../../../src/shared/confidence-level.ts","../../../src/observation/domains.ts","../../../src/geo/location.ts","../../../src/source/sensor/types.ts","../../../src/temporal/time-of-day.ts","../../../src/experimental/v2/context-schema.ts","../../../src/experimental/v2/context.ts","../../../src/experimental/v2/context-claim-history-schema.ts","../../../src/experimental/v2/context-claim-history.ts"],"names":["ref","target","text","z","valueRef","sourceRefs","envelope","pointer","product","id","values","sourceRef","provenance","key","entity","relative","period","claimRef","inputRef","common","assessment","point"],"mappings":"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","file":"index.js","sourcesContent":["/** Experimental RFC 0002/0003 building blocks. Not the v2 Observation contract. */\nimport { z } from 'zod';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst identifier = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);\nconst sourceRef = z.string().regex(/^(source|product):[^\\s:]+$/);\nconst valueRef = z.string().regex(/^(source|product|assertion):[^\\s:]+$/);\nconst sourceRefs = z.array(valueRef).min(1);\n\n// Match the JSON Schema date-time contract: seconds and a complete UTC offset\n// are required; fractional digits remain optional and are preserved verbatim.\nexport const instantString = z.iso.datetime({ offset: true }).regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/)\n .regex(/(?:Z|[+-][0-9]{2}:[0-9]{2})(?![\\s\\S])/);\n\nexport const EventTimePointSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('year'), value: z.string().regex(/^(?!0000)[0-9]{4}$/) }),\n z.strictObject({ kind: z.literal('month'), value: z.string().regex(/^(?!0000)[0-9]{4}-(0[1-9]|1[0-2])$/) }),\n z.strictObject({ kind: z.literal('date'), value: z.iso.date().regex(/^(?!0000)/) }),\n z.strictObject({ kind: z.literal('instant'), value: instantString, timeScale: z.literal('UTC') }),\n]);\n\nexport const EventTimeIntervalSchema = z.strictObject({\n kind: z.literal('interval'), start: EventTimePointSchema, end: EventTimePointSchema,\n});\nexport const EventTimeValueSchema = z.union([EventTimePointSchema, EventTimeIntervalSchema]);\n\nconst assertionRef = z.string().regex(/^assertion:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const ValueSelectionSchema = z.strictObject({\n assertionRef,\n consideredAssertionRefs: z.array(assertionRef).min(1),\n methodRef: z.string().regex(/^method:[^\\s:]+(?![\\s\\S])/),\n methodVersion: text,\n evaluatedBy: text,\n evaluatedAt: instantString,\n rationale: text,\n});\n\nexport const PositionValueSchema = z.strictObject({\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n datum: z.literal('WGS84'),\n});\n\nfunction envelope<T extends z.ZodType>(value: T) {\n return z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('known'), value, sourceRefs, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('approximate'), value, sourceRefs, precision: text, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('unknown'), reason: z.enum(['not_recorded', 'not_collected', 'unavailable']) }),\n z.strictObject({ state: z.literal('redacted'), reason: text }),\n ]);\n}\n\nexport const EventTimeSchema = envelope(EventTimeValueSchema);\nexport const PositionSchema = envelope(PositionValueSchema);\n\n// A pointer is empty or begins with '/', followed by characters or valid tilde escapes.\n// Slash is ordinary content after the first separator: do not repeat token groups.\n// The final lookahead enforces absolute end, including a trailing newline.\nexport const SourceProvenanceSchema = z.strictObject({\n sourceRef,\n sourceDigest: z.strictObject({ algorithm: z.literal('sha256'), value: z.string().regex(/^[a-f0-9]{64}$/) }).optional(),\n locator: z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('page'), page: z.number().int().min(1) }),\n z.strictObject({ kind: z.literal('time_range'), startSeconds: z.number().min(0), endSeconds: z.number().min(0) }),\n z.strictObject({ kind: z.literal('json_pointer'), pointer: z.string().regex(/^(?:\\/(?:[^~]|~[01])*)?(?![\\s\\S])/) }),\n ]).optional(),\n attributedTo: text.optional(),\n extractedBy: text.optional(),\n});\n\nexport const ValueAssertionSchema = z.discriminatedUnion('field', [\n z.strictObject({ id: identifier, field: z.literal('eventTime'), value: EventTimeValueSchema, provenance: SourceProvenanceSchema }),\n z.strictObject({ id: identifier, field: z.literal('position'), value: PositionValueSchema, provenance: SourceProvenanceSchema }),\n]);\n\n/** Testable container for value primitives, not an Observation or public projection API. */\nexport const PrimitiveRecordSchema = z.strictObject({\n id: identifier,\n eventTime: EventTimeSchema,\n position: PositionSchema,\n assertions: z.array(ValueAssertionSchema).optional(),\n});\n\nexport type EventTimeValue = z.infer<typeof EventTimeValueSchema>;\nexport type EventTimePoint = z.infer<typeof EventTimePointSchema>;\nexport type EventTimeInterval = z.infer<typeof EventTimeIntervalSchema>;\nexport type ValueSelection = z.infer<typeof ValueSelectionSchema>;\nexport type PositionValue = z.infer<typeof PositionValueSchema>;\nexport type EventTime = z.infer<typeof EventTimeSchema>;\nexport type Position = z.infer<typeof PositionSchema>;\nexport type SourceProvenance = z.infer<typeof SourceProvenanceSchema>;\nexport type ValueAssertion = z.infer<typeof ValueAssertionSchema>;\nexport type PrimitiveRecord = z.infer<typeof PrimitiveRecordSchema>;\n\nexport interface PrimitiveIssue {\n code: 'STRUCT.VALUE' | 'REF.UNIQUE_ID' | 'REF.FIELD_MISMATCH' | 'REF.LOCAL_RESOLUTION' | 'TIME.INTERVAL'\n | 'TIME.PRECISION_MISMATCH' | 'TIME.INSTANT' | 'SELECTION.VALUE_MISMATCH' | 'SELECTION.INPUTS' | 'SELECTION.SOURCE_REF';\n stage: 'structural' | 'semantic';\n pointer: string;\n message: string;\n}\nexport type PrimitiveParseResult = {\n success: true; data: PrimitiveRecord; issues: PrimitiveIssue[]; uncheckedRefs: string[];\n} | {\n success: false; issues: PrimitiveIssue[]; uncheckedRefs: string[];\n};\n\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\n\n// Date.parse is used only for whole seconds and UTC-offset normalization.\n// Fractional digits remain strings, so sub-millisecond order is never rounded away.\nfunction instantParts(value: string): { milliseconds: number; fraction: string } {\n const dot = value.indexOf('.', 10);\n if (dot === -1) return { milliseconds: Date.parse(value), fraction: '' };\n let end = dot + 1;\n while (end < value.length && value[end]! >= '0' && value[end]! <= '9') end++;\n return { milliseconds: Date.parse(value.slice(0, dot) + value.slice(end)), fraction: value.slice(dot + 1, end) };\n}\n\nexport function comparePoints(start: EventTimePoint, end: EventTimePoint): number {\n if (start.kind !== 'instant' || end.kind !== 'instant') return start.value < end.value ? -1 : start.value > end.value ? 1 : 0;\n const a = instantParts(start.value);\n const b = instantParts(end.value);\n if (!Number.isFinite(a.milliseconds) || !Number.isFinite(b.milliseconds)) return NaN;\n if (a.milliseconds !== b.milliseconds) return a.milliseconds < b.milliseconds ? -1 : 1;\n const digits = Math.max(a.fraction.length, b.fraction.length);\n const af = a.fraction.padEnd(digits, '0');\n const bf = b.fraction.padEnd(digits, '0');\n return af < bf ? -1 : af > bf ? 1 : 0;\n}\n\nexport function checkTime(value: EventTimeValue, path: string, issues: PrimitiveIssue[]): void {\n if (value.kind === 'instant' && !Number.isFinite(instantParts(value.value).milliseconds)) {\n issues.push({ code: 'TIME.INSTANT', stage: 'semantic', pointer: path, message: 'Instant cannot be resolved with its declared UTC offset.' });\n }\n if (value.kind !== 'interval') return;\n checkTime(value.start, `${path}/start`, issues);\n checkTime(value.end, `${path}/end`, issues);\n if (value.start.kind !== value.end.kind) {\n issues.push({ code: 'TIME.PRECISION_MISMATCH', stage: 'semantic', pointer: path, message: 'Interval endpoints must use the same kind of calendar precision or both be instants.' });\n } else if (comparePoints(value.start, value.end) > 0) {\n issues.push({ code: 'TIME.INTERVAL', stage: 'semantic', pointer: `${path}/end`, message: 'Interval end precedes its start.' });\n }\n}\n\n/** Structural and local-reference checks only. External references/digests are never fetched or verified. */\nexport function parsePrimitiveRecord(input: unknown): PrimitiveParseResult {\n const result = PrimitiveRecordSchema.safeParse(input);\n if (!result.success) return { success: false, uncheckedRefs: [], issues: result.error.issues.map(issue => ({\n code: 'STRUCT.VALUE', stage: 'structural', pointer: pointer(issue.path), message: issue.message,\n })) };\n const data = result.data;\n const issues: PrimitiveIssue[] = [];\n const unchecked = new Set<string>();\n const assertions = new Map<string, ValueAssertion>();\n for (const [index, assertion] of (data.assertions ?? []).entries()) {\n if (assertions.has(assertion.id)) issues.push({ code: 'REF.UNIQUE_ID', stage: 'semantic', pointer: `/assertions/${index}/id`, message: 'Assertion ID is duplicated.' });\n else assertions.set(assertion.id, assertion);\n unchecked.add(assertion.provenance.sourceRef);\n if (assertion.field === 'eventTime') checkTime(assertion.value, `/assertions/${index}/value`, issues);\n const locator = assertion.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) issues.push({ code: 'TIME.INTERVAL', stage: 'semantic', pointer: `/assertions/${index}/provenance/locator/endSeconds`, message: 'Locator end precedes its start.' });\n }\n for (const field of ['eventTime', 'position'] as const) {\n const value = data[field];\n if (value.state !== 'known' && value.state !== 'approximate') continue;\n if (field === 'eventTime' && (data.eventTime.state === 'known' || data.eventTime.state === 'approximate')) checkTime(data.eventTime.value, '/eventTime/value', issues);\n for (const [index, ref] of value.sourceRefs.entries()) {\n if (!ref.startsWith('assertion:')) { unchecked.add(ref); continue; }\n const target = assertions.get(ref.slice('assertion:'.length));\n if (!target) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `/${field}/sourceRefs/${index}`, message: 'Local assertion does not exist.' });\n else if (target.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `/${field}/sourceRefs/${index}`, message: 'Assertion concerns a different field.' });\n }\n const selection = value.selection;\n if (!selection) continue;\n const path = `/${field}/selection`;\n unchecked.add(selection.methodRef);\n if (!Number.isFinite(instantParts(selection.evaluatedAt).milliseconds)) issues.push({ code: 'TIME.INSTANT', stage: 'semantic', pointer: `${path}/evaluatedAt`, message: 'Selection timestamp cannot be resolved with its declared UTC offset.' });\n if (!selection.consideredAssertionRefs.includes(selection.assertionRef)) issues.push({ code: 'SELECTION.INPUTS', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion must be among the considered inputs.' });\n if (!value.sourceRefs.includes(selection.assertionRef)) issues.push({ code: 'SELECTION.SOURCE_REF', stage: 'semantic', pointer: `/${field}/sourceRefs`, message: 'Field provenance must cite the selected assertion.' });\n const refs = new Set<string>();\n for (const [index, ref] of selection.consideredAssertionRefs.entries()) {\n if (refs.has(ref)) issues.push({ code: 'REF.UNIQUE_ID', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion is repeated.' });\n refs.add(ref);\n const target = assertions.get(ref.slice('assertion:'.length));\n if (!target) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion does not exist.' });\n else if (target.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion concerns a different field.' });\n }\n const selected = assertions.get(selection.assertionRef.slice('assertion:'.length));\n if (!selected) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion does not exist.' });\n else if (selected.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion concerns a different field.' });\n // Both values have passed the same strict schema, which fixes their key order.\n // Selection copies a source value verbatim; it is not a derivation or normalization.\n else if (JSON.stringify(selected.value) !== JSON.stringify(value.value)) issues.push({ code: 'SELECTION.VALUE_MISMATCH', stage: 'semantic', pointer: `/${field}/value`, message: 'Selected value must equal the cited source value; derived values need a separate contract.' });\n }\n return issues.length ? { success: false, issues, uncheckedRefs: [...unchecked] }\n : { success: true, data, issues, uncheckedRefs: [...unchecked] };\n}\n\nexport const PRIMITIVES_SCHEMA_ID = 'urn:disclosureos:experimental:records-v2-primitives:0.2.0';\n/** Plain JSON; Zod instances remain inside records. Semantic checks are separate. */\nexport function primitivesJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(PrimitiveRecordSchema, { target: 'draft-2020-12' }), $id: PRIMITIVES_SCHEMA_ID };\n}\n","import { z } from 'zod';\nimport { EventTimeValueSchema, PositionValueSchema, SourceProvenanceSchema, ValueSelectionSchema, instantString } from './primitives';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kinds: readonly string[]) => z.string().regex(new RegExp(`^(?:${kinds.join('|')}):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst sourceProductRef = ref(['source', 'product']);\nconst valueRef = ref(['source', 'product', 'assertion']);\nconst sourceRefs = z.array(valueRef).min(1);\nconst access = z.enum(['public', 'restricted', 'withheld', 'unknown']);\nconst digest = z.strictObject({ algorithm: z.literal('sha256'), value: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/) });\n\nconst quantified = { magnitude: z.number().min(0), unit: text, sourceRefs: z.array(sourceProductRef).min(1) };\nexport const QuantitativeUncertaintySchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('unknown'), reason: z.enum(['not_reported', 'not_characterized', 'unavailable']) }),\n z.strictObject({ kind: z.literal('standard'), ...quantified }),\n z.strictObject({ kind: z.literal('expanded'), ...quantified, coverageFactor: z.number().positive(), coverageProbability: z.number().gt(0).lte(1).optional() }),\n z.strictObject({ kind: z.literal('bound'), ...quantified }),\n]);\nexport const MeasuredQuantitySchema = z.strictObject({\n value: z.number(), unit: text, uncertainty: QuantitativeUncertaintySchema,\n});\n\nconst definition = z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('identified'), authority: text, code: text, revision: text.optional() }),\n z.strictObject({ state: z.literal('described'), description: text }),\n z.strictObject({ state: z.literal('unknown'), reason: text }),\n]);\nexport const ReferenceFrameSchema = z.discriminatedUnion('kind', [\n z.strictObject({ id, kind: z.literal('geodetic'), definition, angularUnit: z.literal('deg'), vertical: z.strictObject({ definition, unit: text }).optional() }),\n z.strictObject({ id, kind: z.literal('cartesian'), definition, unit: text }),\n]);\nexport const FramedPositionSchema = z.discriminatedUnion('kind', [\n PositionValueSchema.omit({ datum: true }).extend({\n kind: z.literal('geodetic'), frameRef: ref(['frame']), altitude: MeasuredQuantitySchema.optional(),\n uncertainty: z.strictObject({ latitude: QuantitativeUncertaintySchema, longitude: QuantitativeUncertaintySchema }).optional(),\n }),\n z.strictObject({ kind: z.literal('cartesian'), frameRef: ref(['frame']), x: MeasuredQuantitySchema, y: MeasuredQuantitySchema, z: MeasuredQuantitySchema }),\n]);\n\nfunction envelope<T extends z.ZodType>(value: T) {\n return z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('known'), value, sourceRefs, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('approximate'), value, sourceRefs, selection: ValueSelectionSchema.optional(), precision: text }),\n z.strictObject({ state: z.literal('unknown'), reason: z.enum(['not_recorded', 'not_collected', 'unavailable']) }),\n z.strictObject({ state: z.literal('redacted'), reason: text }),\n ]);\n}\nconst timeEnvelope = envelope(EventTimeValueSchema);\n// Time uncertainty is an observation about timing, distinct from calendar granularity.\nexport const ObservationTimeSchema = z.discriminatedUnion('state', [\n timeEnvelope.options[0].extend({ uncertainty: QuantitativeUncertaintySchema.optional() }),\n timeEnvelope.options[1].extend({ uncertainty: QuantitativeUncertaintySchema.optional() }),\n timeEnvelope.options[2],\n timeEnvelope.options[3],\n]);\nexport const ObservationPositionSchema = envelope(FramedPositionSchema);\n\nexport const ObservationSourceSchema = z.strictObject({\n id, kind: z.enum(['document', 'testimony', 'instrument_data', 'other', 'unknown']),\n access, title: text.optional(), uri: z.url().optional(), digest: digest.optional(),\n});\nconst product = { id, format: text, access, uri: z.url().optional(), digest: digest.optional() };\nexport const ObservationProductSchema = z.discriminatedUnion('kind', [\n z.strictObject({ ...product, kind: z.literal('raw'), sourceRefs: z.array(ref(['source'])).min(1) }),\n z.strictObject({ ...product, kind: z.literal('derived'), generatedBy: ref(['process']) }),\n]);\nexport const ObservationMethodSchema = z.strictObject({ id, version: text, description: text.optional(), uri: z.url().optional() });\nconst provenance = SourceProvenanceSchema.extend({ sourceRef: sourceProductRef, sourceDigest: digest.optional() });\nexport const ObservationAssertionSchema = z.discriminatedUnion('field', [\n z.strictObject({ id, field: z.literal('eventTime'), value: EventTimeValueSchema, provenance }),\n z.strictObject({ id, field: z.literal('position'), value: FramedPositionSchema, provenance }),\n z.strictObject({ id, field: z.literal('measurement'), measurementId: id, value: MeasuredQuantitySchema, provenance }),\n]);\nexport const ObservationMeasurementSchema = z.strictObject({\n id, quantity: text, value: MeasuredQuantitySchema, sourceRefs,\n frameRef: ref(['frame']).optional(), selection: ValueSelectionSchema.optional(),\n});\nexport const ProcessingActivitySchema = z.strictObject({\n id, methodRef: ref(['method']), methodVersion: text, performedBy: text, performedAt: instantString,\n inputRefs: z.array(valueRef).min(1), outputRefs: z.array(ref(['product'])).min(1),\n});\n\nexport const EXPERIMENTAL_OBSERVATION_SCHEMA_ID = 'urn:disclosureos:experimental:observation:0.1.0';\nexport const ExperimentalObservationSchema = z.strictObject({\n kind: z.literal('observation'), schemaVersion: z.literal('0.1.0'), id,\n status: z.enum(['draft', 'published', 'withdrawn']), createdAt: instantString, updatedAt: instantString,\n summary: text.optional(), eventTime: ObservationTimeSchema, position: ObservationPositionSchema,\n sources: z.array(ObservationSourceSchema), products: z.array(ObservationProductSchema), methods: z.array(ObservationMethodSchema),\n frames: z.array(ReferenceFrameSchema), assertions: z.array(ObservationAssertionSchema),\n measurements: z.array(ObservationMeasurementSchema), processing: z.array(ProcessingActivitySchema),\n extensions: z.record(z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/), z.json()).optional(),\n});\n\nexport type QuantitativeUncertainty = z.infer<typeof QuantitativeUncertaintySchema>;\nexport type MeasuredQuantity = z.infer<typeof MeasuredQuantitySchema>;\nexport type ReferenceFrame = z.infer<typeof ReferenceFrameSchema>;\nexport type FramedPosition = z.infer<typeof FramedPositionSchema>;\nexport type ObservationAssertion = z.infer<typeof ObservationAssertionSchema>;\nexport type ProcessingActivity = z.infer<typeof ProcessingActivitySchema>;\nexport type ExperimentalObservation = z.infer<typeof ExperimentalObservationSchema>;\n\nexport function experimentalObservationJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(ExperimentalObservationSchema, { target: 'draft-2020-12' }), $id: EXPERIMENTAL_OBSERVATION_SCHEMA_ID };\n}\n","import { ExperimentalObservationSchema } from './observation-schema';\nimport type { ExperimentalObservation, FramedPosition, MeasuredQuantity, QuantitativeUncertainty } from './observation-schema';\nimport { checkTime, comparePoints } from './primitives';\nimport type { EventTimeValue, PrimitiveIssue, ValueSelection } from './primitives';\n\nexport type ObservationIssueCode = PrimitiveIssue['code'] | 'METHOD.VERSION_MISMATCH' | 'UNIT.MISMATCH'\n | 'FRAME.KIND_MISMATCH' | 'FRAME.VERTICAL_REFERENCE' | 'SELECTION.REQUIRED' | 'TIME.RECORD_ORDER'\n | 'PROCESS.OUTPUT_MISMATCH' | 'SOURCE.DIGEST_MISMATCH' | 'PROCESS.CYCLE';\n\nexport interface ObservationIssue {\n code: ObservationIssueCode;\n stage: 'structural' | 'semantic';\n severity: 'error';\n pointer: string;\n message: string;\n}\nexport interface ObservationChecks {\n structural: 'passed' | 'failed';\n semantic: 'passed' | 'failed' | 'not_checked';\n profile: 'not_checked';\n external: 'not_checked';\n}\nexport type ObservationParseResult = {\n success: true; data: ExperimentalObservation; issues: ObservationIssue[]; checks: ObservationChecks; uncheckedRefs: string[];\n} | {\n success: false; issues: ObservationIssue[]; checks: ObservationChecks; uncheckedRefs: string[];\n};\n\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\nconst key = (ref: string) => ref.slice(ref.indexOf(':') + 1);\n\n/** Validates declared metadata and local lineage. Never fetches URLs or certifies profiles. */\nexport function parseExperimentalObservation(input: unknown): ObservationParseResult {\n const parsed = ExperimentalObservationSchema.safeParse(input);\n if (!parsed.success) return {\n success: false, checks: { structural: 'failed', semantic: 'not_checked', profile: 'not_checked', external: 'not_checked' }, uncheckedRefs: [],\n issues: parsed.error.issues.map(issue => ({ code: 'STRUCT.VALUE', stage: 'structural', severity: 'error', pointer: pointer(issue.path), message: issue.message })),\n };\n const data = parsed.data;\n const issues: ObservationIssue[] = [];\n const graph = new Map<string, Set<string>>();\n const problem = (code: ObservationIssueCode, path: string, message: string) => issues.push({ code, stage: 'semantic', severity: 'error', pointer: path, message });\n function index<T extends { id: string }>(items: T[], prefix: string, collection: string): Map<string, T> {\n const result = new Map<string, T>();\n for (const [i, item] of items.entries()) {\n if (result.has(item.id)) problem('REF.UNIQUE_ID', `/${collection}/${i}/id`, `Duplicate ${prefix} ID.`);\n else { result.set(item.id, item); graph.set(`${prefix}:${item.id}`, new Set()); }\n }\n return result;\n }\n const sources = index(data.sources, 'source', 'sources');\n const products = index(data.products, 'product', 'products');\n const methods = index(data.methods, 'method', 'methods');\n const frames = index(data.frames, 'frame', 'frames');\n const assertions = index(data.assertions, 'assertion', 'assertions');\n index(data.measurements, 'measurement', 'measurements');\n const processes = index(data.processing, 'process', 'processing');\n const processOutputs = new Map(data.processing.map(process => [process.id, new Set(process.outputRefs)]));\n\n function resolve(ref: string, path: string, owner?: string): boolean {\n if (!graph.has(ref)) { problem('REF.LOCAL_RESOLUTION', path, `Undeclared local reference: ${ref}`); return false; }\n if (owner) graph.get(owner)?.add(ref);\n return true;\n }\n function references(refs: string[], path: string, owner?: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of refs.entries()) {\n if (seen.has(ref)) problem('REF.UNIQUE_ID', `${path}/${i}`, 'Reference is repeated.');\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n function method(ref: string, version: string, path: string, owner?: string): void {\n if (resolve(ref, `${path}/methodRef`, owner) && methods.get(key(ref))?.version !== version) {\n problem('METHOD.VERSION_MISMATCH', `${path}/methodVersion`, 'Method version differs from the local declaration.');\n }\n }\n function time(value: EventTimeValue, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(value, path, local);\n for (const issue of local) problem(issue.code, issue.pointer, issue.message);\n }\n function instant(value: string, path: string): void { time({ kind: 'instant', value, timeScale: 'UTC' }, path); }\n function uncertainty(value: QuantitativeUncertainty, expectedUnit: string | readonly string[], path: string, owner?: string): void {\n if (value.kind === 'unknown') return;\n const units = typeof expectedUnit === 'string' ? [expectedUnit] : expectedUnit;\n if (!units.includes(value.unit)) problem('UNIT.MISMATCH', `${path}/unit`, 'Uncertainty unit does not match the declared quantity; no conversion is inferred.');\n references(value.sourceRefs, `${path}/sourceRefs`, owner);\n }\n function quantity(value: MeasuredQuantity, path: string, owner?: string, expectedUnit?: string): void {\n if (expectedUnit !== undefined && value.unit !== expectedUnit) problem('UNIT.MISMATCH', `${path}/unit`, 'Quantity unit differs from its reference frame.');\n uncertainty(value.uncertainty, value.unit, `${path}/uncertainty`, owner);\n }\n function position(value: FramedPosition, path: string, owner?: string): void {\n resolve(value.frameRef, `${path}/frameRef`, owner);\n const frame = frames.get(key(value.frameRef));\n if (frame && frame.kind !== value.kind) problem('FRAME.KIND_MISMATCH', `${path}/frameRef`, 'Position and reference frame use different coordinate systems.');\n if (value.kind === 'geodetic') {\n if (value.uncertainty) {\n uncertainty(value.uncertainty.latitude, 'deg', `${path}/uncertainty/latitude`, owner);\n uncertainty(value.uncertainty.longitude, 'deg', `${path}/uncertainty/longitude`, owner);\n }\n if (value.altitude) {\n if (frame?.kind === 'geodetic' && !frame.vertical) problem('FRAME.VERTICAL_REFERENCE', `${path}/altitude`, 'Altitude requires an explicit vertical reference and unit.');\n quantity(value.altitude, `${path}/altitude`, owner, frame?.kind === 'geodetic' ? frame.vertical?.unit : undefined);\n }\n } else {\n for (const axis of ['x', 'y', 'z'] as const) quantity(value[axis], `${path}/${axis}`, owner, frame?.kind === 'cartesian' ? frame.unit : undefined);\n }\n }\n function matchesField(ref: string, field: 'eventTime' | 'position' | 'measurement', measurementId?: string): boolean {\n const assertion = assertions.get(key(ref));\n return assertion?.field === field && (assertion.field !== 'measurement' || assertion.measurementId === measurementId);\n }\n function fieldReferences(refs: string[], field: 'eventTime' | 'position' | 'measurement', path: string, owner?: string, measurementId?: string): void {\n references(refs, path, owner);\n for (const [i, ref] of refs.entries()) {\n if (ref.startsWith('assertion:') && assertions.has(key(ref)) && !matchesField(ref, field, measurementId)) problem('REF.FIELD_MISMATCH', `${path}/${i}`, 'Assertion concerns a different field or measurement.');\n }\n }\n function selection(value: ValueSelection | undefined, selectedValue: unknown, refs: string[], field: 'eventTime' | 'position' | 'measurement', path: string, owner?: string, measurementId?: string): void {\n if (!value) {\n if (refs.some(ref => ref.startsWith('assertion:'))) problem('SELECTION.REQUIRED', `${path}/selection`, 'A curated value citing local assertions requires an explicit selection record.');\n return;\n }\n const selectionPath = `${path}/selection`;\n instant(value.evaluatedAt, `${selectionPath}/evaluatedAt`);\n method(value.methodRef, value.methodVersion, selectionPath, owner);\n fieldReferences(value.consideredAssertionRefs, field, `${selectionPath}/consideredAssertionRefs`, owner, measurementId);\n resolve(value.assertionRef, `${selectionPath}/assertionRef`, owner);\n if (!value.consideredAssertionRefs.includes(value.assertionRef)) problem('SELECTION.INPUTS', `${selectionPath}/assertionRef`, 'Selected assertion must be among considered inputs.');\n if (!refs.includes(value.assertionRef)) problem('SELECTION.SOURCE_REF', `${path}/sourceRefs`, 'Field must cite the selected assertion.');\n const target = assertions.get(key(value.assertionRef));\n if (target && !matchesField(value.assertionRef, field, measurementId)) problem('REF.FIELD_MISMATCH', `${selectionPath}/assertionRef`, 'Selected assertion concerns a different field or measurement.');\n else if (target && JSON.stringify(target.value) !== JSON.stringify(selectedValue)) problem('SELECTION.VALUE_MISMATCH', `${path}/value`, 'Selection must copy the cited assertion value exactly; processing is declared separately.');\n }\n\n instant(data.createdAt, '/createdAt');\n instant(data.updatedAt, '/updatedAt');\n if (comparePoints({ kind: 'instant', value: data.createdAt, timeScale: 'UTC' }, { kind: 'instant', value: data.updatedAt, timeScale: 'UTC' }) > 0) problem('TIME.RECORD_ORDER', '/updatedAt', 'Record update precedes record creation.');\n\n for (const [i, product] of data.products.entries()) {\n const owner = `product:${product.id}`;\n if (product.kind === 'raw') references(product.sourceRefs, `/products/${i}/sourceRefs`, owner);\n else {\n resolve(product.generatedBy, `/products/${i}/generatedBy`, owner);\n const producer = processes.get(key(product.generatedBy));\n if (producer && !processOutputs.get(producer.id)?.has(owner)) problem('PROCESS.OUTPUT_MISMATCH', `/products/${i}/generatedBy`, 'Producer does not list this derived product as an output.');\n }\n }\n for (const [i, assertion] of data.assertions.entries()) {\n const path = `/assertions/${i}`;\n const owner = `assertion:${assertion.id}`;\n resolve(assertion.provenance.sourceRef, `${path}/provenance/sourceRef`, owner);\n const origin = assertion.provenance.sourceRef.startsWith('source:') ? sources.get(key(assertion.provenance.sourceRef)) : products.get(key(assertion.provenance.sourceRef));\n if (assertion.provenance.sourceDigest && origin?.digest && assertion.provenance.sourceDigest.value !== origin.digest.value) problem('SOURCE.DIGEST_MISMATCH', `${path}/provenance/sourceDigest`, 'Declared digest differs from the inventory declaration; neither has been verified against bytes.');\n const locator = assertion.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) problem('TIME.INTERVAL', `${path}/provenance/locator/endSeconds`, 'Locator end precedes its start.');\n if (assertion.field === 'eventTime') time(assertion.value, `${path}/value`);\n else if (assertion.field === 'position') position(assertion.value, `${path}/value`, owner);\n else {\n // This is the subject of the assertion, not a processing dependency.\n resolve(`measurement:${assertion.measurementId}`, `${path}/measurementId`);\n quantity(assertion.value, `${path}/value`, owner);\n }\n }\n if (data.eventTime.state === 'known' || data.eventTime.state === 'approximate') {\n time(data.eventTime.value, '/eventTime/value');\n fieldReferences(data.eventTime.sourceRefs, 'eventTime', '/eventTime/sourceRefs');\n if (data.eventTime.uncertainty) uncertainty(data.eventTime.uncertainty, ['s', 'ms', 'us', 'ns'], '/eventTime/uncertainty');\n selection(data.eventTime.selection, data.eventTime.value, data.eventTime.sourceRefs, 'eventTime', '/eventTime');\n }\n if (data.position.state === 'known' || data.position.state === 'approximate') {\n position(data.position.value, '/position/value');\n fieldReferences(data.position.sourceRefs, 'position', '/position/sourceRefs');\n selection(data.position.selection, data.position.value, data.position.sourceRefs, 'position', '/position');\n }\n for (const [i, measurement] of data.measurements.entries()) {\n const path = `/measurements/${i}`;\n const owner = `measurement:${measurement.id}`;\n if (measurement.frameRef) resolve(measurement.frameRef, `${path}/frameRef`, owner);\n quantity(measurement.value, `${path}/value`, owner);\n fieldReferences(measurement.sourceRefs, 'measurement', `${path}/sourceRefs`, owner, measurement.id);\n selection(measurement.selection, measurement.value, measurement.sourceRefs, 'measurement', path, owner, measurement.id);\n }\n for (const [i, process] of data.processing.entries()) {\n const path = `/processing/${i}`;\n const owner = `process:${process.id}`;\n instant(process.performedAt, `${path}/performedAt`);\n method(process.methodRef, process.methodVersion, path, owner);\n references(process.inputRefs, `${path}/inputRefs`, owner);\n // Outputs are reverse edges of product.generatedBy, not input dependencies.\n references(process.outputRefs, `${path}/outputRefs`);\n for (const [j, ref] of process.outputRefs.entries()) {\n const product = products.get(key(ref));\n if (product && (product.kind !== 'derived' || product.generatedBy !== owner)) problem('PROCESS.OUTPUT_MISMATCH', `${path}/outputRefs/${j}`, 'Output must be a derived product identifying this producer.');\n }\n }\n\n // Iterative topological check avoids recursion limits on long processing histories.\n const indegrees = new Map([...graph.keys()].map(ref => [ref, 0]));\n for (const dependencies of graph.values()) for (const ref of dependencies) indegrees.set(ref, (indegrees.get(ref) ?? 0) + 1);\n const queue = [...indegrees].filter(([, degree]) => degree === 0).map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++) {\n for (const dependency of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(dependency)! - 1;\n indegrees.set(dependency, degree);\n if (degree === 0) queue.push(dependency);\n }\n }\n if (queue.length !== graph.size) problem('PROCESS.CYCLE', '/processing', 'Local processing/provenance dependencies contain a cycle.');\n\n const checks: ObservationChecks = { structural: 'passed', semantic: issues.length ? 'failed' : 'passed', profile: 'not_checked', external: 'not_checked' };\n const uncheckedRefs = [...sources.keys()].map(id => `source:${id}`).concat(\n [...products.keys()].map(id => `product:${id}`), [...methods.keys()].map(id => `method:${id}`), [...frames.keys()].map(id => `frame:${id}`),\n );\n return issues.length ? { success: false, issues, checks, uncheckedRefs } : { success: true, data, issues, checks, uncheckedRefs };\n}\n","import { z } from 'zod';\nimport { ExperimentalObservationSchema, ObservationAssertionSchema } from './observation-schema';\nimport { instantString } from './primitives';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst claimRef = z.string().regex(/^claim:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst inputRef = z.string().regex(/^(?:claim|source|product|assertion|measurement):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const ClaimSubjectSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('observation') }),\n z.strictObject({ kind: z.literal('measurement'), measurementId: id }),\n]);\nconst common = {\n id, recordedAt: instantString, topic: text, subject: ClaimSubjectSchema,\n supersedes: z.array(claimRef).min(1).optional(),\n};\nexport const SourceStatementSchema = z.strictObject({\n ...common, kind: z.literal('source_assertion'), text,\n reportedLevel: text.optional(), provenance: ObservationAssertionSchema.options[0].shape.provenance,\n});\nconst assessment = { ...common, kind: z.literal('assessment'), inputRefs: z.array(inputRef), rationale: text };\nexport const UnassessedClaimSchema = z.strictObject({ ...assessment, status: z.literal('unassessed') });\nexport const AssessedClaimSchema = z.strictObject({\n ...assessment, status: z.literal('assessed'),\n outcome: z.enum(['reported', 'confirmed', 'absent', 'inconclusive']),\n evaluatedBy: text, evaluatedAt: instantString,\n methodRef: z.string().regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/), methodVersion: text,\n confidence: z.number().min(0).max(1).optional(),\n});\nexport const HistoricalClaimSchema = z.union([SourceStatementSchema, UnassessedClaimSchema, AssessedClaimSchema]);\nexport const EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID = 'urn:disclosureos:experimental:claim-history:0.1.0';\nexport const CLAIM_HISTORY_RULESET_VERSION = '0.1.0';\n/** Separate review envelope: the embedded Observation keeps its immutable 0.1.0 contract. */\nexport const ExperimentalClaimHistorySchema = z.strictObject({\n kind: z.literal('claim_history'), schemaVersion: z.literal('0.1.0'), id,\n observation: ExperimentalObservationSchema, claims: z.array(HistoricalClaimSchema),\n extensions: ExperimentalObservationSchema.shape.extensions,\n});\nexport type ClaimSubject = z.infer<typeof ClaimSubjectSchema>;\nexport type SourceStatement = z.infer<typeof SourceStatementSchema>;\nexport type UnassessedClaim = z.infer<typeof UnassessedClaimSchema>;\nexport type AssessedClaim = z.infer<typeof AssessedClaimSchema>;\nexport type HistoricalClaim = z.infer<typeof HistoricalClaimSchema>;\nexport type ExperimentalClaimHistory = z.infer<typeof ExperimentalClaimHistorySchema>;\nexport function experimentalClaimHistoryJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(ExperimentalClaimHistorySchema, { target: 'draft-2020-12' }), $id: EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID };\n}\n","import { ExperimentalClaimHistorySchema, EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID, CLAIM_HISTORY_RULESET_VERSION } from './claim-history-schema';\nimport type { ExperimentalClaimHistory, HistoricalClaim } from './claim-history-schema';\nimport { parseExperimentalObservation } from './observation';\nimport type { ObservationChecks, ObservationIssueCode } from './observation';\nimport { checkTime, comparePoints } from './primitives';\nimport type { PrimitiveIssue } from './primitives';\n\nexport type ClaimHistoryIssueCode = ObservationIssueCode | 'CLAIM.SUPERSESSION_SCOPE' | 'CLAIM.REVISION_ORDER'\n | 'CLAIM.DEPENDENCY_CYCLE' | 'CLAIM.EVALUATION_ORDER' | 'CLAIM.REVISION_ATTRIBUTION';\nexport interface ClaimHistoryIssue {\n code: ClaimHistoryIssueCode; stage: 'structural' | 'semantic'; severity: 'error'; pointer: string; message: string;\n}\nexport interface ClaimHistoryValidation {\n checks: ObservationChecks;\n issues: ClaimHistoryIssue[];\n uncheckedRefs: string[];\n contract: { kind: 'claim_history'; schemaId: typeof EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID; rulesetVersion: typeof CLAIM_HISTORY_RULESET_VERSION };\n}\nexport type ClaimHistoryParseResult = ClaimHistoryValidation & (\n { success: true; data: ExperimentalClaimHistory; currentClaimRefs: string[] } | { success: false }\n);\nconst point = (value: string) => ({ kind: 'instant' as const, value, timeScale: 'UTC' as const });\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\n\n/** Checks declared claim history only. Current means not superseded, never scientifically verified. */\nexport function parseExperimentalClaimHistory(input: unknown): ClaimHistoryParseResult {\n const contract: ClaimHistoryValidation['contract'] = { kind: 'claim_history', schemaId: EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID, rulesetVersion: CLAIM_HISTORY_RULESET_VERSION };\n const parsed = ExperimentalClaimHistorySchema.safeParse(input);\n if (!parsed.success) return {\n success: false, contract, checks: { structural: 'failed', semantic: 'not_checked', profile: 'not_checked', external: 'not_checked' }, uncheckedRefs: [],\n issues: parsed.error.issues.map(issue => ({ code: 'STRUCT.VALUE', stage: 'structural', severity: 'error', pointer: pointer(issue.path), message: issue.message })),\n };\n const data = parsed.data;\n const observationResult = parseExperimentalObservation(data.observation);\n const issues: ClaimHistoryIssue[] = observationResult.issues.map(issue => ({ ...issue, pointer: `/observation${issue.pointer}` }));\n const problem = (code: ClaimHistoryIssueCode, path: string, message: string) => issues.push({ code, stage: 'semantic', severity: 'error', pointer: path, message });\n const claims = new Map<string, HistoricalClaim>();\n const graph = new Map<string, Set<string>>();\n const superseded = new Set<string>();\n const sources = new Map(data.observation.sources.map(item => [`source:${item.id}`, item]));\n const products = new Map(data.observation.products.map(item => [`product:${item.id}`, item]));\n const methods = new Map(data.observation.methods.map(item => [`method:${item.id}`, item]));\n const measurements = new Set(data.observation.measurements.map(item => `measurement:${item.id}`));\n const available = new Set([\n ...sources.keys(), ...products.keys(), ...measurements,\n ...data.observation.assertions.map(item => `assertion:${item.id}`),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const ref = `claim:${claim.id}`;\n if (claims.has(ref)) problem('REF.UNIQUE_ID', `/claims/${i}/id`, 'Duplicate claim ID; each revision must have its own ID.');\n else { claims.set(ref, claim); graph.set(ref, new Set()); available.add(ref); }\n }\n function instant(value: string, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(point(value), path, local);\n for (const issue of local) problem(issue.code, issue.pointer, issue.message);\n }\n function resolve(ref: string, path: string, owner?: string): void {\n if (!available.has(ref)) problem('REF.LOCAL_RESOLUTION', path, `Undeclared local reference: ${ref}`);\n else if (owner && claims.has(ref)) graph.get(owner)?.add(ref);\n }\n function refs(values: string[], path: string, owner: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of values.entries()) {\n if (seen.has(ref)) problem('REF.UNIQUE_ID', `${path}/${i}`, 'Reference is repeated.');\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n for (const [i, claim] of data.claims.entries()) {\n const path = `/claims/${i}`;\n const owner = `claim:${claim.id}`;\n instant(claim.recordedAt, `${path}/recordedAt`);\n if (claim.subject.kind === 'measurement') resolve(`measurement:${claim.subject.measurementId}`, `${path}/subject/measurementId`);\n if (claim.supersedes) {\n refs(claim.supersedes, `${path}/supersedes`, owner);\n for (const [j, ref] of claim.supersedes.entries()) {\n const previous = claims.get(ref);\n if (!previous) continue;\n superseded.add(ref);\n if (previous.kind !== claim.kind || previous.topic !== claim.topic || JSON.stringify(previous.subject) !== JSON.stringify(claim.subject)) {\n problem('CLAIM.SUPERSESSION_SCOPE', `${path}/supersedes/${j}`, 'A revision must retain the claim kind, topic, and subject. Record a different claim separately.');\n }\n if (previous.kind === 'assessment' && previous.status === 'assessed' && claim.kind === 'assessment'\n && (claim.status !== 'assessed' || previous.evaluatedBy !== claim.evaluatedBy)) {\n problem('CLAIM.REVISION_ATTRIBUTION', `${path}/supersedes/${j}`, 'An assessed revision must retain its evaluator; other evaluators record independent assessments.');\n }\n if (comparePoints(point(previous.recordedAt), point(claim.recordedAt)) > 0) {\n problem('CLAIM.REVISION_ORDER', `${path}/recordedAt`, 'A revision cannot be recorded before the statement it supersedes.');\n }\n }\n }\n if (claim.kind === 'source_assertion') {\n resolve(claim.provenance.sourceRef, `${path}/provenance/sourceRef`);\n const source = sources.get(claim.provenance.sourceRef) ?? products.get(claim.provenance.sourceRef);\n if (source?.digest && claim.provenance.sourceDigest && source.digest.value !== claim.provenance.sourceDigest.value) {\n problem('SOURCE.DIGEST_MISMATCH', `${path}/provenance/sourceDigest`, 'Digest differs from the inventory declaration; neither is verified against bytes.');\n }\n const locator = claim.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) problem('TIME.INTERVAL', `${path}/provenance/locator/endSeconds`, 'Locator end precedes its start.');\n } else {\n refs(claim.inputRefs, `${path}/inputRefs`, owner);\n if (claim.status === 'assessed') {\n instant(claim.evaluatedAt, `${path}/evaluatedAt`);\n if (comparePoints(point(claim.evaluatedAt), point(claim.recordedAt)) > 0) problem('CLAIM.EVALUATION_ORDER', `${path}/evaluatedAt`, 'Evaluation cannot occur after the assessment was recorded.');\n const method = methods.get(claim.methodRef);\n if (!method) problem('REF.LOCAL_RESOLUTION', `${path}/methodRef`, 'Assessment method is not declared in the Observation inventory.');\n else if (method.version !== claim.methodVersion) problem('METHOD.VERSION_MISMATCH', `${path}/methodVersion`, 'Assessment method version differs from its inventory declaration.');\n }\n }\n }\n // Supersession and claim inputs form one dependency graph. Array order is irrelevant.\n const indegrees = new Map([...graph.keys()].map(ref => [ref, 0]));\n for (const edges of graph.values()) for (const ref of edges) indegrees.set(ref, indegrees.get(ref)! + 1);\n const queue = [...indegrees].filter(([, degree]) => degree === 0).map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++) for (const ref of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(ref)! - 1;\n indegrees.set(ref, degree);\n if (degree === 0) queue.push(ref);\n }\n if (queue.length !== graph.size) problem('CLAIM.DEPENDENCY_CYCLE', '/claims', 'Claim inputs and supersession must form an acyclic history.');\n const validation: ClaimHistoryValidation = {\n contract, issues, uncheckedRefs: observationResult.uncheckedRefs,\n checks: { structural: 'passed', semantic: issues.length ? 'failed' : 'passed', profile: 'not_checked', external: 'not_checked' },\n };\n return issues.length ? { ...validation, success: false } : {\n ...validation, success: true, data,\n currentClaimRefs: [...claims.keys()].filter(ref => !superseded.has(ref)),\n };\n}\n","import { comparePoints, instantString } from './primitives';\n/** Exact ordering of valid UTC-offset instants; undefined for invalid or unresolvable input. */\nexport function compareUtcInstants(left: string, right: string): -1 | 0 | 1 | undefined {\n if (!instantString.safeParse(left).success || !instantString.safeParse(right).success) return undefined;\n const result = comparePoints({kind:'instant',value:left,timeScale:'UTC'}, {kind:'instant',value:right,timeScale:'UTC'});\n return result === -1 || result === 0 || result === 1 ? result : undefined;\n}\n","import { z } from 'zod';\n\nexport const SourceTypeSchema = z\n .enum([\n 'foia',\n 'official_report',\n 'official_statement',\n 'congressional_testimony',\n 'congressional_report',\n 'military_document',\n 'intelligence_document',\n 'whistleblower',\n 'firsthand_witness',\n 'secondhand_account',\n 'news_article',\n 'documentary',\n 'interview',\n 'book',\n 'academic_paper',\n 'investigation_report',\n 'database_entry',\n 'social_media',\n 'website',\n 'other',\n ])\n .describe('Kind of source backing an observation (document, testimony, media, etc.).');\n\nexport type SourceType = z.infer<typeof SourceTypeSchema>;\n","import { z } from 'zod';\n\nexport const SourceCredibilitySchema = z\n .enum(['official', 'verified', 'credible', 'unverified', 'questionable', 'disputed', 'unknown'])\n .describe('Trust tier of a source — an orthogonal axis to confidence and temporal certainty.');\n\nexport type SourceCredibility = z.infer<typeof SourceCredibilitySchema>;\n","import { z } from 'zod';\nimport { SourceTypeSchema } from './types';\nimport { SourceCredibilitySchema } from './credibility';\n\nexport const SourceReferenceSchema = z\n .object({\n sourceId: z.string().describe('Stable unique identifier for this source.'),\n type: SourceTypeSchema,\n title: z.string().describe('Title of the source document, article, or material.'),\n author: z.string().optional().describe('Author of the source material.'),\n organization: z.string().optional().describe('Organization that produced or published the source.'),\n date: z.string().optional().describe('Publication or creation date of the source (ISO date).'),\n url: z.string().optional().describe('Link to the source material.'),\n archiveUrl: z.string().optional().describe('Archived copy of the source (e.g. Wayback Machine), in case the original disappears.'),\n reference: z\n .string()\n .optional()\n .describe('Citation locator within the source (e.g. page number, document section).'),\n credibility: SourceCredibilitySchema,\n isPrimarySource: z\n .boolean()\n .optional()\n .describe('Whether this is a primary source (original document/recording) rather than secondary reporting.'),\n classificationLevel: z\n .string()\n .optional()\n .describe('Government classification of the source, if it was ever classified.'),\n notes: z.string().optional().describe('Free-text context about the source.'),\n })\n .meta({ id: 'SourceReference' })\n .describe('A citation/source backing an observation, with its credibility tier.');\n\nexport type SourceReference = z.infer<typeof SourceReferenceSchema>;\n","import { z } from 'zod';\n\n/**\n * The single qualitative confidence magnitude for the ecosystem.\n * Merges the former `ConfidenceLevel` (investigation) and `CredibilityRating`\n * (testimony) — which were byte-identical — plus the inline high/medium/low\n * scales in `provenance/digital`.\n *\n * Distinct from `SourceCredibility` (trust tier), `TemporalCertainty` (time\n * precision), and `AssessmentLevel` (evidentiary tier) — those are the other\n * three orthogonal axes and are intentionally NOT merged here.\n */\nexport const ConfidenceLevelSchema = z\n .enum(['very_high', 'high', 'moderate', 'low', 'very_low', 'unassessed'])\n .describe('Qualitative confidence magnitude.');\n\nexport type ConfidenceLevel = z.infer<typeof ConfidenceLevelSchema>;\n\nexport const CONFIDENCE_LEVELS = ConfidenceLevelSchema.options;\n\nexport function isConfidenceLevel(value: unknown): value is ConfidenceLevel {\n return ConfidenceLevelSchema.safeParse(value).success;\n}\n","import { z } from 'zod';\nimport { SourceReferenceSchema } from '../source/reference';\n// `ConfidenceLevel` (investigation confidence) is the single shared qualitative\n// scale; imported here to keep one source of truth (DRY #1).\nimport { ConfidenceLevelSchema } from '../shared';\n\nexport const ObjectShapeSchema = z\n .enum([\n 'sphere', 'orb', 'disc', 'saucer', 'oval', 'egg',\n 'cylinder', 'cigar', 'tic_tac',\n 'triangle', 'delta', 'boomerang', 'chevron',\n 'diamond', 'rectangle', 'square', 'cube',\n 'cross', 'star',\n 'amorphous', 'changing', 'light_only',\n 'other', 'unknown',\n ])\n .describe('Reported shape of the observed object.');\n\nexport type ObjectShape = z.infer<typeof ObjectShapeSchema>;\n\nexport const ObjectCharacteristicsSchema = z\n .object({\n shape: ObjectShapeSchema.optional(),\n size: z.string().optional().describe('Apparent size as reported (e.g. \"size of a commercial airliner\").'),\n sizeMeters: z.number().optional().describe('Estimated size of the object, in meters.'),\n color: z.string().optional().describe('Primary color of the object as reported.'),\n secondaryColors: z.array(z.string()).optional().describe('Additional colors observed on the object.'),\n luminosity: z\n .string()\n .optional()\n .describe('Light emission as reported (e.g. \"glowing white\", \"self-luminous\", \"no lights\").'),\n sound: z.string().optional().describe('Whether and what sound the object produced (e.g. \"silent\", \"humming\").'),\n soundDescription: z.string().optional().describe('Fuller free-text description of any sound.'),\n surfaceDetails: z\n .string()\n .optional()\n .describe('Visible surface features (e.g. \"metallic, seamless, no rivets or seams\").'),\n numberObserved: z.number().optional().describe('How many objects were observed.'),\n formation: z\n .string()\n .optional()\n .describe('Geometric arrangement when multiple objects were observed (e.g. \"triangular formation\").'),\n structuralFeatures: z\n .array(z.string())\n .optional()\n .describe('Distinct structural elements reported (e.g. \"dome\", \"portholes\", \"appendages\").'),\n })\n .meta({ id: 'ObjectCharacteristics' })\n .describe('Physical description of the observed object(s).');\n\nexport type ObjectCharacteristics = z.infer<typeof ObjectCharacteristicsSchema>;\n\nexport const ManeuverTypeSchema = z\n .enum([\n 'hover', 'instant_acceleration', 'instant_stop',\n 'right_angle_turn', 'zigzag', 'pendulum',\n 'split', 'merge', 'disappear', 'appear',\n 'transmedium_entry', 'transmedium_exit',\n 'vertical_ascent', 'vertical_descent',\n 'rotation', 'wobble',\n 'other',\n ])\n .describe('A distinctive movement/maneuver exhibited by the object.');\n\nexport type ManeuverType = z.infer<typeof ManeuverTypeSchema>;\n\nexport const MovementSchema = z\n .object({\n speed: z.string().optional().describe('Speed as reported (e.g. \"faster than any known aircraft\").'),\n speedKmh: z.number().optional().describe('Estimated speed, in kilometers per hour.'),\n altitude: z.string().optional().describe('Altitude as reported (e.g. \"treetop level\", \"very high\").'),\n altitudeMeters: z.number().optional().describe('Estimated altitude of the object, in meters.'),\n heading: z.number().optional().describe('Direction of travel, in compass degrees (0–360).'),\n flightPath: z\n .string()\n .optional()\n .describe('Narrative of the object\\u2019s path through the encounter (e.g. \"descended from 80,000 ft to sea level\").'),\n maneuvers: z.array(ManeuverTypeSchema).optional().describe('Distinctive maneuvers exhibited, from the typed vocabulary.'),\n maneuverDescriptions: z\n .array(z.string())\n .optional()\n .describe('Free-text descriptions elaborating on the typed maneuvers.'),\n radarData: z.boolean().optional().describe('Whether the movement was tracked on radar.'),\n infraredSignature: z.boolean().optional().describe('Whether the object showed an infrared signature.'),\n trajectory: z.string().optional().describe('Overall trajectory summary (e.g. \"erratic\", \"straight and level\").'),\n })\n .meta({ id: 'Movement' })\n .describe('How the object moved — kinematics and notable maneuvers.');\n\nexport type Movement = z.infer<typeof MovementSchema>;\n\nexport const InvestigationSchema = z\n .object({\n investigatingBody: z\n .string()\n .optional()\n .describe('Primary organization that investigated (e.g. \"AARO\", \"Project Blue Book\").'),\n investigatingBodies: z\n .array(z.string())\n .optional()\n .describe('All organizations that investigated, when more than one.'),\n caseNumber: z.string().optional().describe('Case or file number assigned by the investigating body.'),\n investigationDate: z.string().optional().describe('When the investigation was conducted (ISO date).'),\n conclusion: z.string().optional().describe('Official conclusion reached (e.g. \"unidentified\", \"weather balloon\").'),\n confidence: ConfidenceLevelSchema.optional(),\n methodologies: z\n .array(z.string())\n .optional()\n .describe('Methods used (e.g. \"witness interviews\", \"radar data analysis\").'),\n findings: z.string().optional().describe('Summary of what the investigation found.'),\n recommendations: z.string().optional().describe('Recommendations issued by the investigation.'),\n })\n .meta({ id: 'Investigation' })\n .describe('Official/independent investigation of the observation.');\n\nexport type Investigation = z.infer<typeof InvestigationSchema>;\n\nexport const WitnessesSchema = z\n .object({\n count: z.number().optional().describe('Total number of witnesses.'),\n categories: z\n .array(z.string())\n .optional()\n .describe('Kinds of witnesses present (e.g. \"military pilots\", \"radar operators\", \"civilians\").'),\n militaryWitnesses: z.boolean().optional().describe('Whether any witnesses were military personnel.'),\n aviationWitnesses: z\n .boolean()\n .optional()\n .describe('Whether any witnesses were pilots or aviation professionals.'),\n multipleIndependent: z\n .boolean()\n .optional()\n .describe('Whether independent witnesses observed from separate vantage points.'),\n professionalObservers: z\n .boolean()\n .optional()\n .describe('Whether any witnesses were trained observers (pilots, astronomers, military).'),\n descriptions: z.array(z.string()).optional().describe('Brief summaries of individual witness accounts.'),\n })\n .meta({ id: 'Witnesses' })\n .describe('Aggregate summary of who witnessed the observation.');\n\nexport type Witnesses = z.infer<typeof WitnessesSchema>;\n\nexport const ResponseImpactSchema = z\n .object({\n officialResponse: z\n .string()\n .optional()\n .describe('How officials responded (statements, denials, acknowledgments).'),\n mediaAttention: z.boolean().optional().describe('Whether the observation received media coverage.'),\n publicImpact: z.string().optional().describe('Effect on public awareness or discourse.'),\n policyImpact: z\n .string()\n .optional()\n .describe('Policy consequences (e.g. hearings, legislation, reporting-process changes).'),\n militaryResponse: z\n .string()\n .optional()\n .describe('Military actions taken (e.g. intercept scrambled, alert status changed).'),\n coverUpAlleged: z\n .boolean()\n .optional()\n .describe('Whether suppression or concealment of the event has been alleged.'),\n })\n .meta({ id: 'ResponseImpact' })\n .describe('Official, media, and public response to the observation.');\n\nexport type ResponseImpact = z.infer<typeof ResponseImpactSchema>;\n\nexport const EnvironmentSchema = z\n .object({\n weather: z.string().optional().describe('General weather conditions (e.g. \"clear\", \"overcast\").'),\n visibility: z.string().optional().describe('Visibility conditions (e.g. \"unlimited\", \"10 miles\", \"hazy\").'),\n cloudCover: z.string().optional().describe('Cloud cover description (e.g. \"scattered at 5,000 ft\").'),\n windSpeed: z.string().optional().describe('Wind conditions as reported.'),\n temperature: z.number().optional().describe('Air temperature, in degrees Celsius.'),\n humidity: z.number().optional().describe('Relative humidity, as a percentage (0–100).'),\n celestialConditions: z\n .string()\n .optional()\n .describe('Sky conditions relevant to identification (e.g. visible planets, meteor showers, satellites).'),\n moonPhase: z.string().optional().describe('Moon phase description at the time of observation.'),\n precipitation: z.string().optional().describe('Precipitation at the time of observation, if any.'),\n })\n .meta({ id: 'Environment' })\n .describe('Environmental and weather conditions at the time of observation.');\n\nexport type Environment = z.infer<typeof EnvironmentSchema>;\n\nexport const RelationKindSchema = z\n .enum([\n 'corroborates',\n 'contradicts',\n 'duplicate_of',\n 'same_object',\n 'supersedes',\n 'superseded_by',\n 're_analysis_of',\n 'part_of',\n ])\n .describe('How one observation relates to another (typed edge vocabulary).');\n\nexport type RelationKind = z.infer<typeof RelationKindSchema>;\n\nexport const RelationEdgeSchema = z\n .object({\n kind: RelationKindSchema,\n targetId: z.string().min(1).describe('The `Observation.id` this edge points at.'),\n note: z.string().optional().describe('Free-text context for why the link exists.'),\n })\n .meta({ id: 'RelationEdge' })\n .describe('A typed link from this observation to another.');\n\nexport type RelationEdge = z.infer<typeof RelationEdgeSchema>;\n\nexport const RelationsSchema = z\n .object({\n /** Typed edges to other observations — the standardized way to link records. */\n edges: z\n .array(RelationEdgeSchema)\n .optional()\n .describe('Typed edges to other observations — the standardized way to link records.'),\n /** Named grouping into a flap (a localized cluster of sightings). */\n flap: z.string().optional().describe('Named grouping into a flap (a localized cluster of sightings).'),\n /** Named grouping into a wave (a broad temporal surge of sightings). */\n wave: z.string().optional().describe('Named grouping into a wave (a broad temporal surge of sightings).'),\n /** Named grouping into an ad-hoc cluster. */\n cluster: z.string().optional().describe('Named grouping into an ad-hoc cluster.'),\n /** @deprecated Use typed `edges` with `kind: 'corroborates' | 'same_object' | …`. */\n relatedObservationIds: z\n .array(z.string())\n .optional()\n .describe('Deprecated — use typed `edges` with `kind: \"corroborates\" | \"same_object\" | …`.'),\n /** @deprecated Use typed `edges` with `kind: 'supersedes' | 're_analysis_of' | …`. */\n precedingEvents: z\n .array(z.string())\n .optional()\n .describe('Deprecated — use typed `edges` with `kind: \"supersedes\" | \"re_analysis_of\" | …`.'),\n /** @deprecated Use typed `edges`. */\n followingEvents: z.array(z.string()).optional().describe('Deprecated — use typed `edges`.'),\n })\n .meta({ id: 'Relations' })\n .describe('Typed links to related observations, plus flap/wave/cluster groupings.');\n\nexport type Relations = z.infer<typeof RelationsSchema>;\n\nexport const AviationSchema = z\n .object({\n aircraftType: z.string().optional().describe('Type of aircraft involved (e.g. \"F/A-18F Super Hornet\").'),\n aircraftDesignation: z.string().optional().describe('Military designation or tail number of the aircraft.'),\n squadron: z.string().optional().describe('Squadron or unit the aircraft belonged to.'),\n flightMission: z.string().optional().describe('Mission being flown at the time (e.g. \"training exercise\", \"combat air patrol\").'),\n altitude: z.number().optional().describe('Aircraft altitude during the encounter, in meters.'),\n speed: z.number().optional().describe('Aircraft speed during the encounter, in kilometers per hour.'),\n heading: z.number().optional().describe('Aircraft heading during the encounter, in compass degrees (0–360).'),\n radarContact: z.boolean().optional().describe('Whether the aircraft\\u2019s radar held contact with the object.'),\n weaponsSystemEngaged: z\n .boolean()\n .optional()\n .describe('Whether a weapons system locked onto or tracked the object.'),\n interceptAttempted: z.boolean().optional().describe('Whether an intercept of the object was attempted.'),\n })\n .meta({ id: 'Aviation' })\n .describe('Aviation context when the observation involved aircraft.');\n\nexport type Aviation = z.infer<typeof AviationSchema>;\n\nexport const SourceDataSchema = z\n .object({\n primarySource: SourceReferenceSchema.optional(),\n sources: z.array(SourceReferenceSchema).optional(),\n originalClassification: z\n .string()\n .optional()\n .describe('Original government classification of the source material (e.g. \"SECRET\").'),\n declassificationDate: z.string().optional().describe('When the source material was declassified (ISO date).'),\n foiaRequestId: z.string().optional().describe('FOIA request number that produced the source material.'),\n archiveLocation: z\n .string()\n .optional()\n .describe('Physical or digital archive where the source material resides.'),\n })\n .meta({ id: 'SourceData' })\n .describe(\n 'Where the observation data came from. Forensic custody/authenticity now lives in the optional `Observation.provenance` slot (@disclosureos/records/extensions/provenance).',\n );\n\nexport type SourceData = z.infer<typeof SourceDataSchema>;\n\n// Re-export the shared qualitative confidence scale under the historical name\n// so existing `domains` consumers keep resolving `ConfidenceLevel` here.\nexport type { ConfidenceLevel } from '../shared';\n","import { z } from 'zod';\n\nexport const CoordinatePrecisionSchema = z\n .enum(['exact', 'address', 'locality', 'region', 'approximate', 'unknown'])\n .describe('How precisely a coordinate is known.');\n\nexport type CoordinatePrecision = z.infer<typeof CoordinatePrecisionSchema>;\n\nexport const SiteTypeSchema = z\n .enum([\n 'military_air_base',\n 'military_naval_base',\n 'military_army_base',\n 'military_missile_site',\n 'military_radar_station',\n 'military_research_facility',\n 'military_training_area',\n 'military_other',\n 'nuclear_power_plant',\n 'nuclear_weapons_storage',\n 'nuclear_research_facility',\n 'nuclear_waste_storage',\n 'nuclear_other',\n 'civilian_airport',\n 'private_airfield',\n 'heliport',\n 'seaport',\n 'offshore_platform',\n 'naval_vessel',\n 'government_facility',\n 'embassy',\n 'intelligence_facility',\n 'power_plant',\n 'dam',\n 'telecommunications',\n 'water_treatment',\n 'research_facility',\n 'test_range',\n 'space_station',\n 'archaeological_site',\n 'volcano',\n 'command_center',\n 'residential',\n 'commercial',\n 'industrial',\n 'agricultural',\n 'wilderness',\n 'ocean',\n 'lake',\n 'mountain',\n 'desert',\n 'forest',\n 'urban',\n 'suburban',\n 'rural',\n 'other',\n 'unknown',\n ])\n .describe('Category of site at or near the observation location (military, nuclear, civilian, natural, etc.).');\n\nexport type SiteType = z.infer<typeof SiteTypeSchema>;\n\nexport const TerrainTypeSchema = z\n .enum([\n 'ocean',\n 'coastal',\n 'lake',\n 'river',\n 'wetland',\n 'plains',\n 'hills',\n 'mountains',\n 'desert',\n 'forest',\n 'jungle',\n 'tundra',\n 'arctic',\n 'urban',\n 'suburban',\n 'rural',\n 'underground',\n 'underwater',\n 'airborne',\n 'space',\n 'unknown',\n ])\n .describe('Physical terrain at the observation location.');\n\nexport type TerrainType = z.infer<typeof TerrainTypeSchema>;\n\nexport const AirspaceClassSchema = z\n .enum([\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'G',\n 'restricted',\n 'prohibited',\n 'warning',\n 'moa',\n 'alert',\n 'cfa',\n 'national_security',\n 'tfr',\n 'international',\n 'unknown',\n ])\n .describe('Airspace classification over the location (ICAO classes plus special-use airspace).');\n\nexport type AirspaceClass = z.infer<typeof AirspaceClassSchema>;\n\nexport const LocationSensitivitySchema = z\n .enum(['critical', 'high', 'moderate', 'standard', 'none'])\n .describe('How sensitive the location is (e.g. proximity to critical infrastructure).');\n\nexport type LocationSensitivity = z.infer<typeof LocationSensitivitySchema>;\n\nexport const ProximitySiteSchema = z\n .object({\n siteType: SiteTypeSchema,\n siteName: z.string().optional().describe('Name of the nearby site (e.g. \"Naval Air Station Oceana\").'),\n distanceKm: z.number().describe('Distance from the observation location, in kilometers.'),\n bearing: z.number().optional().describe('Compass bearing from the observation location to the site, in degrees (0–360).'),\n })\n .meta({ id: 'ProximitySite' })\n .describe('A site of interest near the observation and its distance/bearing.');\n\nexport type ProximitySite = z.infer<typeof ProximitySiteSchema>;\n\nexport const LocationDataSchema = z\n .object({\n id: z.string().min(1).describe('Stable unique identifier for this location.'),\n name: z.string().min(1).describe('Human-readable place name (e.g. \"Off the coast of San Diego\").'),\n country: z.string().min(1).describe('Country where the observation occurred.'),\n countryCode: z.string().optional().describe('ISO 3166-1 alpha-2 country code (e.g. \"US\").'),\n region: z.string().optional().describe('State, province, or administrative region.'),\n city: z.string().optional().describe('Nearest city or town.'),\n address: z.string().optional().describe('Street address, when the location is that precise.'),\n longitude: z.number().min(-180).max(180).describe('Longitude in decimal degrees (WGS 84).'),\n latitude: z.number().min(-90).max(90).describe('Latitude in decimal degrees (WGS 84).'),\n coordinatePrecision: CoordinatePrecisionSchema.optional(),\n coordinatePrecisionMeters: z\n .number()\n .optional()\n .describe('Numeric uncertainty radius of the coordinates, in meters.'),\n coordinatesApproximate: z\n .boolean()\n .optional()\n .describe('Whether the coordinates are an approximation rather than a measured fix.'),\n elevationMeters: z.number().optional().describe('Ground elevation at the location, in meters above sea level.'),\n elevationSource: z\n .enum(['gps', 'map', 'estimated', 'unknown'])\n .optional()\n .describe('How the elevation value was obtained.'),\n siteType: SiteTypeSchema,\n secondarySiteTypes: z\n .array(SiteTypeSchema)\n .optional()\n .describe('Additional site categories that also apply to the location.'),\n terrain: TerrainTypeSchema.optional(),\n airspaceClass: AirspaceClassSchema.optional(),\n locationSensitivity: LocationSensitivitySchema.optional(),\n proximitySites: z\n .array(ProximitySiteSchema)\n .optional()\n .describe('Named sites of interest near the observation, with distance and bearing.'),\n nearestMilitaryKm: z\n .number()\n .optional()\n .describe('Distance to the nearest military installation, in kilometers.'),\n nearestNuclearKm: z.number().optional().describe('Distance to the nearest nuclear facility, in kilometers.'),\n nearestAirportKm: z.number().optional().describe('Distance to the nearest airport, in kilometers.'),\n waterDepthMeters: z\n .number()\n .optional()\n .describe('Water depth at the location for maritime observations, in meters.'),\n vesselName: z.string().optional().describe('Name of the vessel the observer was aboard, if any.'),\n vesselType: z.string().optional().describe('Type of vessel (e.g. \"aircraft carrier\", \"fishing trawler\").'),\n aircraftType: z.string().optional().describe('Type of aircraft the observer was aboard, if any.'),\n aircraftCallsign: z.string().optional().describe('Callsign of the observer\\u2019s aircraft.'),\n flightNumber: z.string().optional().describe('Commercial flight number, for airline observations.'),\n observerAltitudeMeters: z\n .number()\n .optional()\n .describe('Altitude of an airborne observer at the time of observation, in meters.'),\n })\n .meta({ id: 'LocationData' })\n .describe('Where an observation occurred — identity, coordinates, site classification, and proximity context.');\n\nexport type LocationData = z.infer<typeof LocationDataSchema>;\n","import { z } from 'zod';\n\nexport const DetectionMethodSchema = z\n .enum([\n 'radar_primary',\n 'radar_secondary',\n 'radar_doppler',\n 'radar_phased_array',\n 'infrared_flir',\n 'infrared_other',\n 'electro_optical',\n 'visual_camera',\n 'satellite_imagery',\n 'sonar_active',\n 'sonar_passive',\n 'electromagnetic',\n 'radiation_detector',\n 'magnetometer',\n 'gravimeter',\n 'acoustic',\n 'seismic',\n 'lidar',\n 'spectroscopic',\n 'radio_frequency',\n 'particle',\n 'gnss',\n 'time_reference',\n 'chemical',\n 'inertial',\n 'physiological',\n 'pressure',\n 'multiple',\n 'other',\n 'unknown',\n ])\n .describe('How a sensor detected the object.');\n\nexport type DetectionMethod = z.infer<typeof DetectionMethodSchema>;\n\nexport const SensorTypeSchema = z\n .enum([\n 'military_radar',\n 'civilian_radar',\n 'airborne_radar',\n 'shipborne_radar',\n 'ground_radar',\n 'flir',\n 'eo_sensor',\n 'satellite',\n 'sonar',\n 'electromagnetic_sensor',\n 'radiation_sensor',\n 'civilian_camera',\n 'security_camera',\n 'dashcam',\n 'phone_camera',\n 'infrasonic_sensor',\n 'ultrasonic_sensor',\n 'adsb_receiver',\n 'rf_spectrum_analyzer',\n 'passive_radar',\n 'particle_detector',\n 'atomic_clock',\n 'gnss_receiver',\n 'fluxgate_magnetometer',\n 'air_quality_sensor',\n 'barometer',\n 'lightning_detector',\n 'imu',\n 'eeg',\n 'gsr',\n 'pulse_oximeter',\n 'pupillometer',\n 'hardware_rng',\n 'other',\n ])\n .describe('Class of sensor that produced a reading.');\n\nexport type SensorType = z.infer<typeof SensorTypeSchema>;\n\nexport const SensorReadingSchema = z\n .object({\n id: z.string().min(1).describe('Stable id, addressable by a claim `evidenceRef` (\"sensor:<id>\").'),\n sensorType: SensorTypeSchema,\n detectionMethod: DetectionMethodSchema,\n sensorRef: z\n .string()\n .optional()\n .describe(\n 'Reference to a published sensor-manifest entry (\"<org-slug>:<sensor-id>\", e.g. \"eldaeon:dionysus-passive-radar\") carrying the instrument\\u2019s full spec, timing, and calibration provenance.',\n ),\n platform: z\n .string()\n .optional()\n .describe('Platform carrying the sensor (e.g. \"USS Princeton\", \"F/A-18F\").'),\n operator: z.string().optional().describe('Person or unit operating the sensor.'),\n timestamp: z.string().optional().describe('When the reading was recorded (ISO timestamp).'),\n duration: z.number().optional().describe('How long the sensor held contact, in seconds.'),\n rawDataAvailable: z.boolean().optional().describe('Whether the raw sensor data still exists and is obtainable.'),\n calibrated: z.boolean().optional().describe('Whether the sensor was calibrated at the time of the reading.'),\n readings: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Sensor-specific measured values, keyed by measurement name.'),\n notes: z.string().optional().describe('Free-text context about the reading.'),\n })\n .meta({ id: 'SensorReading' })\n .describe('A single sensor reading and its provenance.');\n\nexport type SensorReading = z.infer<typeof SensorReadingSchema>;\n\nexport const SensorEvidenceDataSchema = z\n .object({\n sensors: z.array(SensorReadingSchema),\n multiSensorCorrelation: z\n .boolean()\n .optional()\n .describe('Whether independent sensors corroborated the same object.'),\n dataRetentionStatus: z\n .enum(['available', 'archived', 'destroyed', 'classified', 'unknown'])\n .optional()\n .describe('Current status of the underlying sensor data.'),\n anomalies: z\n .array(z.string())\n .optional()\n .describe('Anomalies in the sensor data itself (e.g. \"jamming indications\", \"signal dropout\").'),\n })\n .meta({ id: 'SensorEvidenceData' })\n .describe('Instrument-recorded evidence for an observation (radar, FLIR, EO, etc.).');\n\nexport type SensorEvidenceData = z.infer<typeof SensorEvidenceDataSchema>;\n","import { z } from 'zod';\n\n/** Twilight-aware time-of-day bucket for an observation. */\nexport const TimeOfDaySchema = z\n .enum([\n 'astronomical_dawn',\n 'nautical_dawn',\n 'civil_dawn',\n 'sunrise',\n 'morning',\n 'noon',\n 'afternoon',\n 'sunset',\n 'civil_dusk',\n 'nautical_dusk',\n 'astronomical_dusk',\n 'night',\n 'unknown',\n ])\n .describe('Twilight-aware time-of-day bucket for an observation.');\n\nexport type TimeOfDay = z.infer<typeof TimeOfDaySchema>;\n","import { z } from \"zod\";\nimport {\n ObjectShapeSchema,\n ManeuverTypeSchema,\n} from \"../../observation/domains\";\nimport {\n SiteTypeSchema,\n TerrainTypeSchema,\n AirspaceClassSchema,\n CoordinatePrecisionSchema,\n LocationSensitivitySchema,\n} from \"../../geo/location\";\nimport {\n SensorTypeSchema,\n DetectionMethodSchema,\n SensorEvidenceDataSchema,\n} from \"../../source/sensor/types\";\nimport { TimeOfDaySchema } from \"../../temporal/time-of-day\";\nimport {\n EventTimeValueSchema,\n EventTimePointSchema,\n SourceProvenanceSchema,\n instantString,\n} from \"./primitives\";\nimport {\n FramedPositionSchema,\n EXPERIMENTAL_OBSERVATION_SCHEMA_ID,\n} from \"./observation-schema\";\n\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst sourceRef = z\n .string()\n .regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const OBSERVATION_CONTEXT_SCHEMA_ID =\n \"urn:disclosureos:experimental:observation-context:0.1.0\";\nexport const DocumentSnapshotRefSchema = z.strictObject({\n documentId: id.describe(\"ID inside the supplied document; not a URL.\"),\n schemaId: text.describe(\"Exact document contract identity.\"),\n sha256: z\n .string()\n .regex(/^[a-f0-9]{64}(?![\\s\\S])/)\n .describe(\"SHA-256 of exact supplied document bytes.\"),\n});\nexport const ObservationSnapshotRefSchema = DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(EXPERIMENTAL_OBSERVATION_SCHEMA_ID),\n});\nconst provenance = SourceProvenanceSchema.extend({ sourceRef });\nfunction values<T extends z.ZodType>(schema: T) {\n return z\n .array(\n z.strictObject({\n id: id.describe(\n \"Assertion identity within this entity, independent of array order.\",\n ),\n content: z.union([\n z.strictObject({\n state: z.literal(\"known\"),\n value: schema,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"approximate\"),\n value: schema,\n precision: text,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"unknown\"),\n reason: z.enum([\"not_recorded\", \"not_collected\", \"unavailable\"]),\n }),\n z.strictObject({ state: z.literal(\"redacted\"), reason: text }),\n z.strictObject({\n state: z.literal(\"unmapped\"),\n originalWording: text,\n provenance,\n }),\n ]),\n }),\n )\n .min(1)\n .optional();\n}\nconst strings = z.array(text).min(1);\nconst localTime = z.strictObject({\n clock: z.string().regex(/^([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/),\n timezone: text.optional(),\n utcOffset: z\n .string()\n .regex(/^[+-](0[0-9]|1[0-4]):[0-5][0-9]$/)\n .optional(),\n daylightSaving: z.boolean().optional(),\n});\nconst period = z.union([\n z.strictObject({\n kind: z.literal(\"quarter\"),\n year: z.number().int().min(1).max(9999),\n quarter: z.number().int().min(1).max(4),\n }),\n z.strictObject({\n kind: z.enum([\"decade\", \"century\"]),\n startYear: z.number().int().min(1).max(9999),\n endYear: z.number().int().min(1).max(9999),\n }),\n]);\nconst calendarEndpoint = z.strictObject({\n value: z.union([EventTimePointSchema, period]),\n certainty: z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n display: text.optional(),\n notes: text.optional(),\n});\nconst calendarRange = z.strictObject({\n start: calendarEndpoint,\n end: calendarEndpoint,\n type: z.enum([\n \"span\",\n \"uncertainty\",\n \"active_period\",\n \"investigation_period\",\n \"observation_window\",\n ]),\n inclusiveEnd: z.boolean(),\n display: text.optional(),\n});\nconst relative = z.strictObject({\n anchorTemporalId: id,\n relation: z.enum([\"before\", \"after\", \"during\", \"around\"]),\n offset: z\n .strictObject({\n value: z.number().min(0),\n unit: z.enum([\n \"seconds\",\n \"minutes\",\n \"hours\",\n \"days\",\n \"weeks\",\n \"months\",\n \"years\",\n ]),\n approximate: z.boolean(),\n })\n .optional(),\n wording: text,\n});\n\nexport const ContextEventFields = {\n eventType: values(\n text.describe(\"Sourced event descriptor; not an origin hypothesis.\"),\n ),\n description: values(text),\n temporalId: values(id),\n placeIds: values(z.array(id).min(1)),\n};\nexport const ContextObjectFields = {\n shape: values(ObjectShapeSchema),\n sizeDescription: values(text),\n color: values(text),\n secondaryColors: values(strings),\n luminosity: values(text),\n sound: values(text),\n soundDescription: values(text),\n surfaceDetails: values(text),\n formation: values(text),\n structuralFeatures: values(strings),\n countDescription: values(text),\n speedDescription: values(text),\n altitudeDescription: values(text),\n flightPath: values(text),\n maneuvers: values(z.array(ManeuverTypeSchema).min(1)),\n maneuverDescriptions: values(strings),\n trajectoryDescription: values(text),\n radarContactReported: values(z.boolean()),\n infraredSignatureReported: values(z.boolean()),\n};\nexport const ContextPlaceFields = {\n name: values(text),\n country: values(text),\n countryCode: values(text),\n region: values(text),\n city: values(text),\n address: values(text),\n position: values(FramedPositionSchema),\n coordinatePrecision: values(CoordinatePrecisionSchema),\n coordinatesApproximate: values(z.boolean()),\n elevationSource: values(text),\n siteType: values(SiteTypeSchema),\n secondarySiteTypes: values(z.array(SiteTypeSchema).min(1)),\n terrain: values(z.array(TerrainTypeSchema).min(1)),\n airspaceClass: values(AirspaceClassSchema),\n proximity: values(\n z.strictObject({\n targetPlaceId: id,\n relation: z.enum([\n \"nearby\",\n \"nearest_military\",\n \"nearest_nuclear\",\n \"nearest_airport\",\n ]),\n distanceMeasurementId: id.optional(),\n bearingMeasurementId: id.optional(),\n note: text.optional(),\n }),\n ),\n infrastructureSensitivity: values(LocationSensitivitySchema),\n sensitivity: values(\n z\n .enum([\"public\", \"approximate_only\", \"withheld\"])\n .describe(\n \"Publication instruction only; does not enforce access control.\",\n ),\n ),\n};\nexport const ContextPlatformFields = {\n role: values(z.enum([\"observer\", \"station\", \"aircraft\", \"vessel\"])),\n placeId: values(id),\n name: values(text),\n type: values(text),\n designation: values(text),\n callsign: values(text),\n flightNumber: values(text),\n squadron: values(text),\n mission: values(text),\n operator: values(text),\n radarContact: values(z.boolean()),\n weaponsSystemEngaged: values(z.boolean()),\n interceptAttempted: values(z.boolean()),\n};\nexport const ContextEnvironmentFields = {\n placeId: values(id),\n platformId: values(id),\n temporalId: values(id),\n observedAt: values(EventTimeValueSchema),\n weather: values(text),\n visibility: values(text),\n cloudCover: values(text),\n windDescription: values(text),\n celestialConditions: values(text),\n moonPhase: values(text),\n precipitation: values(text),\n};\nexport const ContextTemporalFields = {\n eventTime: values(EventTimeValueSchema),\n calendarPeriod: values(period),\n relativeDate: values(relative),\n calendarRange: values(calendarRange),\n localTime: values(localTime),\n dateCertainty: values(\n z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n ),\n timeCertainty: values(\n z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n ),\n timeOfDay: values(TimeOfDaySchema),\n durationDescription: values(text),\n display: values(text),\n notes: values(text),\n rangeInclusivity: values(\n z.enum([\"both\", \"start\", \"end\", \"neither\", \"unknown\"]),\n ),\n};\nexport const ContextCollectionFields = {\n sensorType: values(SensorTypeSchema),\n detectionMethod: values(DetectionMethodSchema),\n productRefs: values(z.array(sourceRef).min(1)),\n acquisitionIds: values(z.array(id).min(1)),\n retentionStatus: values(\n SensorEvidenceDataSchema.shape.dataRetentionStatus.unwrap(),\n ),\n rawDataAvailable: values(z.boolean()),\n anomalies: values(strings),\n correlationDescription: values(text),\n alignmentDescription: values(text),\n notes: values(text),\n};\n// Descriptions belong to the new field envelopes; imported vocabularies stay unchanged.\nfor (const fields of [\n ContextEventFields,\n ContextObjectFields,\n ContextPlaceFields,\n ContextPlatformFields,\n ContextEnvironmentFields,\n ContextTemporalFields,\n ContextCollectionFields,\n]) {\n for (const [key, schema] of Object.entries(fields)) {\n const label = key.replace(/([a-z])([A-Z])/g, \"$1 $2\").toLowerCase();\n (fields as Record<string, z.ZodType>)[key] = schema.describe(\n `Sourced ${label} assertions. Keep alternatives and missingness explicit; no assertion is selected by default.`,\n );\n }\n}\nconst role = z.enum([\n \"size\",\n \"count\",\n \"speed\",\n \"altitude\",\n \"heading\",\n \"ambient_temperature\",\n \"relative_humidity\",\n \"wind_speed\",\n \"moon_illumination\",\n \"duration\",\n \"distance\",\n \"bearing\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n]);\nexport const ContextMeasurementLinkSchema = z\n .strictObject({\n id,\n role,\n measurementId: id,\n relatedPlaceId: id.optional(),\n })\n .describe(\n \"Association to an Observation measurement. No copied numeric value.\",\n );\nfunction entity<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n const keys = Object.keys(fields) as [\n keyof F & string,\n ...(keyof F & string)[],\n ];\n return z.strictObject({\n kind: z.literal(kind),\n id,\n fields: z.strictObject(fields),\n measurements: z.array(ContextMeasurementLinkSchema).optional(),\n selections: z\n .array(\n z.strictObject({\n field: z.enum(keys),\n assertionId: id,\n consideredAssertionIds: z.array(id).min(1),\n evaluatedBy: text,\n evaluatedAt: instantString,\n methodRef: z\n .string()\n .regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n methodVersion: text,\n rationale: text,\n }),\n )\n .optional(),\n });\n}\nexport const ContextEntitySchema = z.discriminatedUnion(\"kind\", [\n entity(\"event\", ContextEventFields),\n entity(\"reported_object\", ContextObjectFields),\n entity(\"place\", ContextPlaceFields),\n entity(\"platform\", ContextPlatformFields),\n entity(\"environment\", ContextEnvironmentFields),\n entity(\"temporal\", ContextTemporalFields),\n entity(\"collection\", ContextCollectionFields),\n]);\nexport const ObservationContextSchema = z\n .strictObject({\n kind: z.literal(\"observation_context\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationRef: ObservationSnapshotRefSchema,\n acquisitionRef: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(\n \"urn:disclosureos:experimental:acquisition-context:0.1.0\",\n ),\n }).optional(),\n recordedAt: instantString,\n recordedBy: text,\n entities: z.array(ContextEntitySchema).min(1),\n })\n .describe(\n \"Typed descriptions of an observation. Supplied values remain sourced declarations, not verified facts.\",\n );\nfunction target<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n const keys = Object.keys(fields) as [\n keyof F & string,\n ...(keyof F & string)[],\n ];\n return z.strictObject({\n kind: z.literal(kind),\n id,\n field: z.enum(keys).optional(),\n });\n}\nexport const ContextTargetSchema = z.discriminatedUnion(\"kind\", [\n target(\"event\", ContextEventFields),\n target(\"reported_object\", ContextObjectFields),\n target(\"place\", ContextPlaceFields),\n target(\"platform\", ContextPlatformFields),\n target(\"environment\", ContextEnvironmentFields),\n target(\"temporal\", ContextTemporalFields),\n target(\"collection\", ContextCollectionFields),\n]);\nexport const ContextReferenceSchema = z.strictObject({\n document: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n }),\n target: ContextTargetSchema,\n});\nexport const ContextAssertionReferenceSchema = ContextReferenceSchema.extend({\n assertionId: id,\n});\nexport type ObservationContext = z.infer<typeof ObservationContextSchema>;\nexport type ContextEntity = z.infer<typeof ContextEntitySchema>;\nexport type ContextReference = z.infer<typeof ContextReferenceSchema>;\nexport type DocumentSnapshotRef = z.infer<typeof DocumentSnapshotRefSchema>;\nexport function observationContextJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ObservationContextSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: OBSERVATION_CONTEXT_SCHEMA_ID,\n };\n}\n","import {\n ObservationContextSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\nimport type { ObservationContext, ContextEntity } from \"./context-schema\";\nimport { checkTime, comparePoints } from \"./primitives\";\nimport type { PrimitiveIssue, EventTimeValue } from \"./primitives\";\n\nexport interface ContextIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"external\";\n pointer: string;\n message: string;\n}\nexport interface ContextAssertion {\n id: string;\n content: {\n state: string;\n value?: unknown;\n provenance?: {\n sourceRef: string;\n sourceDigest?: { algorithm: \"sha256\"; value: string };\n locator?: { kind: string; startSeconds?: number; endSeconds?: number };\n };\n };\n}\n/** Internal-shaped view of a structurally checked entity; values remain typed in ContextEntity. */\nexport function contextAssertions(\n entity: ContextEntity,\n): { field: string; assertion: ContextAssertion }[] {\n return Object.entries(entity.fields).flatMap(([field, assertions]) =>\n ((assertions ?? []) as ContextAssertion[]).map((assertion) => ({\n field,\n assertion,\n })),\n );\n}\nexport function parseObservationContext(input: unknown) {\n const parsed = ObservationContextSchema.safeParse(input);\n const contract = {\n schemaId: OBSERVATION_CONTEXT_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n } as const;\n const issues: ContextIssue[] = [];\n const error = (code: string, pointer: string, message: string) =>\n issues.push({ code, stage: \"semantic\", pointer, message });\n if (!parsed.success)\n return {\n success: false as const,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n issues: parsed.error.issues.map((i) => ({\n code: \"STRUCT.VALUE\",\n stage: \"structural\" as const,\n pointer: \"/\" + i.path.join(\"/\"),\n message: i.message,\n })),\n uncheckedRefs: [] as string[],\n };\n const data = parsed.data;\n const entities = new Map<string, ContextEntity>();\n const relativeGraph = new Map<string, Set<string>>();\n for (const [i, entity] of data.entities.entries()) {\n const key = `${entity.kind}:${entity.id}`;\n if (entities.has(key))\n error(\"REF.UNIQUE_ID\", `/entities/${i}/id`, \"Duplicate entity identity.\");\n entities.set(key, entity);\n if (entity.kind === \"temporal\") relativeGraph.set(entity.id, new Set());\n }\n function time(value: EventTimeValue, path: string) {\n const found: PrimitiveIssue[] = [];\n checkTime(value, path, found);\n found.forEach((i) => error(i.code, i.pointer, i.message));\n }\n time(\n { kind: \"instant\", value: data.recordedAt, timeScale: \"UTC\" },\n \"/recordedAt\",\n );\n const unchecked = new Set([data.observationRef.sha256]);\n if (data.acquisitionRef) unchecked.add(data.acquisitionRef.sha256);\n for (const [i, entity] of data.entities.entries()) {\n const path = `/entities/${i}`;\n const assertions = contextAssertions(entity);\n const ids = new Set<string>();\n for (const { field, assertion } of assertions) {\n const p = `${path}/fields/${field}`;\n if (ids.has(assertion.id))\n error(\n \"REF.UNIQUE_ID\",\n p,\n \"Assertion IDs must be unique across fields within an entity.\",\n );\n ids.add(assertion.id);\n const { content } = assertion;\n const prov = content.provenance;\n if (prov) {\n unchecked.add(prov.sourceRef);\n if (\n prov.locator?.kind === \"time_range\" &&\n prov.locator.endSeconds! < prov.locator.startSeconds!\n )\n error(\"TIME.INTERVAL\", p, \"Source locator end precedes start.\");\n }\n if (!(\"value\" in content)) continue;\n if (field === \"eventTime\" || field === \"observedAt\")\n time(content.value as EventTimeValue, p);\n const linkKind = (\n {\n placeId: \"place\",\n platformId: \"platform\",\n temporalId: \"temporal\",\n } as Record<string, string>\n )[field];\n if (linkKind && !entities.has(`${linkKind}:${content.value}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Context entity reference does not resolve.\",\n );\n if (field === \"placeIds\")\n for (const id of content.value as string[])\n if (!entities.has(`place:${id}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Place reference does not resolve.\",\n );\n if (\n field === \"proximity\" &&\n !entities.has(\n `place:${(content.value as { targetPlaceId: string }).targetPlaceId}`,\n )\n )\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Proximity target place does not resolve.\",\n );\n if (field === \"relativeDate\") {\n const relative = content.value as {\n anchorTemporalId: string;\n relation: string;\n offset?: unknown;\n };\n if (!entities.has(`temporal:${relative.anchorTemporalId}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Relative date anchor does not resolve.\",\n );\n relativeGraph.get(entity.id)?.add(relative.anchorTemporalId);\n if (relative.relation === \"during\" && relative.offset)\n error(\n \"TIME.RELATIVE_OFFSET\",\n p,\n \"A during relation cannot carry an offset.\",\n );\n }\n if (field === \"calendarPeriod\") {\n const period = content.value as {\n kind: string;\n startYear: number;\n endYear: number;\n };\n if (\n period.kind !== \"quarter\" &&\n period.endYear - period.startYear !==\n (period.kind === \"decade\" ? 9 : 99)\n )\n error(\n \"TIME.CALENDAR_PERIOD\",\n p,\n \"Declared period must cover exactly ten or one hundred years.\",\n );\n }\n if (field === \"calendarRange\") {\n type Endpoint = {\n kind: string;\n value?: string;\n year?: number;\n quarter?: number;\n startYear?: number;\n endYear?: number;\n };\n const range = content.value as {\n start: { value: Endpoint };\n end: { value: Endpoint };\n };\n for (const endpoint of [range.start.value, range.end.value]) {\n if ([\"year\", \"month\", \"date\", \"instant\"].includes(endpoint.kind))\n time(endpoint as EventTimeValue, p);\n if (\n [\"decade\", \"century\"].includes(endpoint.kind) &&\n endpoint.endYear! - endpoint.startYear! !==\n (endpoint.kind === \"decade\" ? 9 : 99)\n )\n error(\n \"TIME.CALENDAR_PERIOD\",\n p,\n \"Endpoint period has invalid width.\",\n );\n }\n const a = range.start.value,\n b = range.end.value;\n if (a.kind === b.kind) {\n const reversed = [\"year\", \"month\", \"date\", \"instant\"].includes(a.kind)\n ? comparePoints(\n a as Exclude<EventTimeValue, { kind: \"interval\" }>,\n b as Exclude<EventTimeValue, { kind: \"interval\" }>,\n ) > 0\n : a.kind === \"quarter\"\n ? a.year! * 4 + a.quarter! > b.year! * 4 + b.quarter!\n : a.startYear! > b.startYear!;\n if (reversed)\n error(\"TIME.INTERVAL\", p, \"Calendar range end precedes start.\");\n }\n }\n if (field === \"localTime\") {\n const clock = content.value as {\n timezone?: string;\n utcOffset?: string;\n };\n if (clock.timezone)\n try {\n new Intl.DateTimeFormat(\"en\", { timeZone: clock.timezone });\n } catch {\n error(\n \"TIME.TIMEZONE\",\n p,\n \"Unknown timezone; no offset has been inferred.\",\n );\n }\n if (\n clock.utcOffset?.slice(1, 3) === \"14\" &&\n !clock.utcOffset.endsWith(\":00\")\n )\n error(\"TIME.OFFSET\", p, \"UTC offset must not exceed fourteen hours.\");\n }\n }\n const selectedFields = new Set<string>();\n for (const selection of entity.selections ?? []) {\n const p = `${path}/selections`;\n if (selectedFields.has(selection.field))\n error(\n \"SELECTION.DUPLICATE_FIELD\",\n p,\n \"One selection is allowed per field.\",\n );\n selectedFields.add(selection.field);\n if (!selection.consideredAssertionIds.includes(selection.assertionId))\n error(\n \"SELECTION.INPUTS\",\n p,\n \"Selected assertion must be a considered input.\",\n );\n if (\n new Set(selection.consideredAssertionIds).size !==\n selection.consideredAssertionIds.length\n )\n error(\"REF.UNIQUE_ID\", p, \"Considered assertions are repeated.\");\n for (const id of selection.consideredAssertionIds)\n if (\n !assertions.some(\n (a) => a.field === selection.field && a.assertion.id === id,\n )\n )\n error(\n \"REF.FIELD_MISMATCH\",\n p,\n \"Considered assertion must exist on the selected field.\",\n );\n const chosen = assertions.find(\n (a) =>\n a.field === selection.field &&\n a.assertion.id === selection.assertionId,\n );\n if (\n !chosen ||\n ![\"known\", \"approximate\", \"unmapped\"].includes(\n chosen.assertion.content.state,\n )\n )\n error(\n \"SELECTION.VALUE\",\n p,\n \"Select a sourced assertion, not an unknown or redacted value.\",\n );\n time(\n { kind: \"instant\", value: selection.evaluatedAt, timeScale: \"UTC\" },\n p,\n );\n if (\n comparePoints(\n { kind: \"instant\", value: selection.evaluatedAt, timeScale: \"UTC\" },\n { kind: \"instant\", value: data.recordedAt, timeScale: \"UTC\" },\n ) > 0\n )\n error(\n \"SELECTION.ORDER\",\n p,\n \"Selection evaluation cannot follow its recording.\",\n );\n unchecked.add(selection.methodRef);\n }\n const measurements = new Set<string>();\n for (const link of entity.measurements ?? []) {\n if (measurements.has(link.id))\n error(\n \"REF.UNIQUE_ID\",\n `${path}/measurements`,\n \"Measurement link IDs repeat.\",\n );\n measurements.add(link.id);\n unchecked.add(`measurement:${link.measurementId}`);\n if (link.relatedPlaceId && !entities.has(`place:${link.relatedPlaceId}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n `${path}/measurements`,\n \"Related place does not resolve.\",\n );\n }\n }\n // Iterative cycle check avoids recursion proportional to user input size.\n const degree = new Map([...relativeGraph.keys()].map((k) => [k, 0]));\n for (const edges of relativeGraph.values())\n for (const to of edges)\n if (degree.has(to)) degree.set(to, degree.get(to)! + 1);\n const queue = [...degree].filter(([, n]) => n === 0).map(([key]) => key);\n for (let i = 0; i < queue.length; i++)\n for (const to of relativeGraph.get(queue[i]!) ?? [])\n if (degree.has(to)) {\n degree.set(to, degree.get(to)! - 1);\n if (degree.get(to) === 0) queue.push(to);\n }\n if (queue.length !== degree.size)\n error(\n \"TIME.RELATIVE_CYCLE\",\n \"/entities\",\n \"Relative dates must be acyclic.\",\n );\n const validation = {\n contract,\n issues,\n uncheckedRefs: [...unchecked],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n };\n return issues.length\n ? { ...validation, success: false as const }\n : { ...validation, success: true as const, data };\n}\n","import { z } from \"zod\";\nimport {\n ExperimentalObservationSchema,\n ObservationAssertionSchema,\n} from \"./observation-schema\";\nimport { instantString } from \"./primitives\";\nimport {\n ContextReferenceSchema,\n ContextAssertionReferenceSchema,\n DocumentSnapshotRefSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\n\nconst text = z.string().min(1).regex(/\\S/, \"must contain non-whitespace text\");\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst claimRef = z\n .string()\n .regex(/^claim:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst inputRef = z\n .string()\n .regex(\n /^(?:claim|source|product|assertion|measurement):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/,\n );\nexport const ContextClaimSubjectSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"observation\") }),\n z.strictObject({\n kind: z.literal(\"context\"),\n reference: ContextReferenceSchema,\n }),\n z.strictObject({ kind: z.literal(\"measurement\"), measurementId: id }),\n]);\nconst common = {\n id,\n recordedAt: instantString,\n topic: text,\n subject: ContextClaimSubjectSchema,\n supersedes: z.array(claimRef).min(1).optional(),\n};\nexport const ContextSourceStatementSchema = z.strictObject({\n ...common,\n kind: z.literal(\"source_assertion\"),\n text,\n reportedLevel: text.optional(),\n provenance: ObservationAssertionSchema.options[0].shape.provenance,\n});\nconst assessment = {\n ...common,\n kind: z.literal(\"assessment\"),\n inputRefs: z.array(inputRef),\n contextInputRefs: z.array(ContextAssertionReferenceSchema).optional(),\n rationale: text,\n};\nexport const ContextUnassessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"unassessed\"),\n});\nexport const ContextAssessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"assessed\"),\n outcome: z.enum([\"reported\", \"confirmed\", \"absent\", \"inconclusive\"]),\n evaluatedBy: text,\n evaluatedAt: instantString,\n methodRef: z.string().regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n methodVersion: text,\n confidence: z.number().min(0).max(1).optional(),\n});\nexport const ContextHistoricalClaimSchema = z.union([\n ContextSourceStatementSchema,\n ContextUnassessedClaimSchema,\n ContextAssessedClaimSchema,\n]);\nexport const CONTEXT_CLAIM_HISTORY_SCHEMA_ID =\n \"urn:disclosureos:experimental:claim-history:0.2.0\";\nexport const CONTEXT_CLAIM_HISTORY_RULESET_VERSION = \"0.2.0\";\n/** Separate review envelope: the embedded Observation keeps its immutable 0.1.0 contract. */\nexport const ContextClaimHistorySchema = z.strictObject({\n kind: z.literal(\"claim_history\"),\n schemaVersion: z.literal(\"0.2.0\"),\n id,\n contextRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n }),\n ),\n observation: ExperimentalObservationSchema,\n claims: z.array(ContextHistoricalClaimSchema),\n extensions: ExperimentalObservationSchema.shape.extensions,\n});\nexport type ContextClaimSubject = z.infer<typeof ContextClaimSubjectSchema>;\nexport type ContextSourceStatement = z.infer<\n typeof ContextSourceStatementSchema\n>;\nexport type ContextUnassessedClaim = z.infer<\n typeof ContextUnassessedClaimSchema\n>;\nexport type ContextAssessedClaim = z.infer<typeof ContextAssessedClaimSchema>;\nexport type ContextHistoricalClaim = z.infer<\n typeof ContextHistoricalClaimSchema\n>;\nexport type ContextClaimHistory = z.infer<typeof ContextClaimHistorySchema>;\nexport function contextClaimHistoryJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ContextClaimHistorySchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n };\n}\n","import {\n ContextClaimHistorySchema,\n CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n CONTEXT_CLAIM_HISTORY_RULESET_VERSION,\n} from \"./context-claim-history-schema\";\nimport type {\n ContextClaimHistory,\n ContextHistoricalClaim,\n} from \"./context-claim-history-schema\";\nimport { parseExperimentalObservation } from \"./observation\";\nimport type { ObservationChecks, ObservationIssueCode } from \"./observation\";\nimport { checkTime, comparePoints } from \"./primitives\";\nimport type { PrimitiveIssue } from \"./primitives\";\n\nexport type ContextClaimHistoryIssueCode =\n | ObservationIssueCode\n | \"CLAIM.SUPERSESSION_SCOPE\"\n | \"CLAIM.REVISION_ORDER\"\n | \"CLAIM.DEPENDENCY_CYCLE\"\n | \"CLAIM.EVALUATION_ORDER\"\n | \"CLAIM.REVISION_ATTRIBUTION\";\nexport interface ContextClaimHistoryIssue {\n code: ContextClaimHistoryIssueCode;\n stage: \"structural\" | \"semantic\";\n severity: \"error\";\n pointer: string;\n message: string;\n}\nexport interface ContextClaimHistoryValidation {\n checks: ObservationChecks;\n issues: ContextClaimHistoryIssue[];\n uncheckedRefs: string[];\n contract: {\n kind: \"claim_history\";\n schemaId: typeof CONTEXT_CLAIM_HISTORY_SCHEMA_ID;\n rulesetVersion: typeof CONTEXT_CLAIM_HISTORY_RULESET_VERSION;\n };\n}\nexport type ContextClaimHistoryParseResult = ContextClaimHistoryValidation &\n (\n | { success: true; data: ContextClaimHistory; currentClaimRefs: string[] }\n | { success: false }\n );\nconst point = (value: string) => ({\n kind: \"instant\" as const,\n value,\n timeScale: \"UTC\" as const,\n});\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\n\n/** Checks declared claim history only. Current means not superseded, never scientifically verified. */\nexport function parseContextClaimHistory(\n input: unknown,\n): ContextClaimHistoryParseResult {\n const contract: ContextClaimHistoryValidation[\"contract\"] = {\n kind: \"claim_history\",\n schemaId: CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n rulesetVersion: CONTEXT_CLAIM_HISTORY_RULESET_VERSION,\n };\n const parsed = ContextClaimHistorySchema.safeParse(input);\n if (!parsed.success)\n return {\n success: false,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n uncheckedRefs: [],\n issues: parsed.error.issues.map((issue) => ({\n code: \"STRUCT.VALUE\",\n stage: \"structural\",\n severity: \"error\",\n pointer: pointer(issue.path),\n message: issue.message,\n })),\n };\n const data = parsed.data;\n const observationResult = parseExperimentalObservation(data.observation);\n const issues: ContextClaimHistoryIssue[] = observationResult.issues.map(\n (issue) => ({ ...issue, pointer: `/observation${issue.pointer}` }),\n );\n const problem = (\n code: ContextClaimHistoryIssueCode,\n path: string,\n message: string,\n ) =>\n issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer: path,\n message,\n });\n const claims = new Map<string, ContextHistoricalClaim>();\n const graph = new Map<string, Set<string>>();\n const superseded = new Set<string>();\n const sources = new Map(\n data.observation.sources.map((item) => [`source:${item.id}`, item]),\n );\n const products = new Map(\n data.observation.products.map((item) => [`product:${item.id}`, item]),\n );\n const methods = new Map(\n data.observation.methods.map((item) => [`method:${item.id}`, item]),\n );\n const measurements = new Set(\n data.observation.measurements.map((item) => `measurement:${item.id}`),\n );\n const available = new Set([\n ...sources.keys(),\n ...products.keys(),\n ...measurements,\n ...data.observation.assertions.map((item) => `assertion:${item.id}`),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const ref = `claim:${claim.id}`;\n if (claims.has(ref))\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/id`,\n \"Duplicate claim ID; each revision must have its own ID.\",\n );\n else {\n claims.set(ref, claim);\n graph.set(ref, new Set());\n available.add(ref);\n }\n }\n function instant(value: string, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(point(value), path, local);\n for (const issue of local)\n problem(issue.code, issue.pointer, issue.message);\n }\n function resolve(ref: string, path: string, owner?: string): void {\n if (!available.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n path,\n `Undeclared local reference: ${ref}`,\n );\n else if (owner && claims.has(ref)) graph.get(owner)?.add(ref);\n }\n function refs(values: string[], path: string, owner: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of values.entries()) {\n if (seen.has(ref))\n problem(\"REF.UNIQUE_ID\", `${path}/${i}`, \"Reference is repeated.\");\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n const snapshots = new Set(data.contextRefs.map((r) => JSON.stringify(r)));\n if (snapshots.size !== data.contextRefs.length)\n problem(\n \"REF.UNIQUE_ID\",\n \"/contextRefs\",\n \"Context snapshot references repeat.\",\n );\n for (const [i, claim] of data.claims.entries()) {\n const contextRefs = [\n ...(claim.subject.kind === \"context\" ? [claim.subject.reference] : []),\n ...(claim.kind === \"assessment\" ? (claim.contextInputRefs ?? []) : []),\n ];\n for (const ref of contextRefs)\n if (!snapshots.has(JSON.stringify(ref.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `/claims/${i}`,\n \"Context reference must select a declared snapshot.\",\n );\n if (\n claim.kind === \"assessment\" &&\n new Set((claim.contextInputRefs ?? []).map((r) => JSON.stringify(r)))\n .size !== (claim.contextInputRefs ?? []).length\n )\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/contextInputRefs`,\n \"Context inputs repeat.\",\n );\n }\n for (const [i, claim] of data.claims.entries()) {\n const path = `/claims/${i}`;\n const owner = `claim:${claim.id}`;\n instant(claim.recordedAt, `${path}/recordedAt`);\n if (claim.subject.kind === \"measurement\")\n resolve(\n `measurement:${claim.subject.measurementId}`,\n `${path}/subject/measurementId`,\n );\n if (claim.supersedes) {\n refs(claim.supersedes, `${path}/supersedes`, owner);\n for (const [j, ref] of claim.supersedes.entries()) {\n const previous = claims.get(ref);\n if (!previous) continue;\n superseded.add(ref);\n if (\n previous.kind !== claim.kind ||\n previous.topic !== claim.topic ||\n JSON.stringify(previous.subject) !== JSON.stringify(claim.subject)\n ) {\n problem(\n \"CLAIM.SUPERSESSION_SCOPE\",\n `${path}/supersedes/${j}`,\n \"A revision must retain the claim kind, topic, and subject. Record a different claim separately.\",\n );\n }\n if (\n previous.kind === \"assessment\" &&\n previous.status === \"assessed\" &&\n claim.kind === \"assessment\" &&\n (claim.status !== \"assessed\" ||\n previous.evaluatedBy !== claim.evaluatedBy)\n ) {\n problem(\n \"CLAIM.REVISION_ATTRIBUTION\",\n `${path}/supersedes/${j}`,\n \"An assessed revision must retain its evaluator; other evaluators record independent assessments.\",\n );\n }\n if (\n comparePoints(point(previous.recordedAt), point(claim.recordedAt)) > 0\n ) {\n problem(\n \"CLAIM.REVISION_ORDER\",\n `${path}/recordedAt`,\n \"A revision cannot be recorded before the statement it supersedes.\",\n );\n }\n }\n }\n if (claim.kind === \"source_assertion\") {\n resolve(claim.provenance.sourceRef, `${path}/provenance/sourceRef`);\n const source =\n sources.get(claim.provenance.sourceRef) ??\n products.get(claim.provenance.sourceRef);\n if (\n source?.digest &&\n claim.provenance.sourceDigest &&\n source.digest.value !== claim.provenance.sourceDigest.value\n ) {\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n `${path}/provenance/sourceDigest`,\n \"Digest differs from the inventory declaration; neither is verified against bytes.\",\n );\n }\n const locator = claim.provenance.locator;\n if (\n locator?.kind === \"time_range\" &&\n locator.endSeconds < locator.startSeconds\n )\n problem(\n \"TIME.INTERVAL\",\n `${path}/provenance/locator/endSeconds`,\n \"Locator end precedes its start.\",\n );\n } else {\n refs(claim.inputRefs, `${path}/inputRefs`, owner);\n if (claim.status === \"assessed\") {\n instant(claim.evaluatedAt, `${path}/evaluatedAt`);\n if (\n comparePoints(point(claim.evaluatedAt), point(claim.recordedAt)) > 0\n )\n problem(\n \"CLAIM.EVALUATION_ORDER\",\n `${path}/evaluatedAt`,\n \"Evaluation cannot occur after the assessment was recorded.\",\n );\n const method = methods.get(claim.methodRef);\n if (!method)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `${path}/methodRef`,\n \"Assessment method is not declared in the Observation inventory.\",\n );\n else if (method.version !== claim.methodVersion)\n problem(\n \"METHOD.VERSION_MISMATCH\",\n `${path}/methodVersion`,\n \"Assessment method version differs from its inventory declaration.\",\n );\n }\n }\n }\n // Supersession and claim inputs form one dependency graph. Array order is irrelevant.\n const indegrees = new Map([...graph.keys()].map((ref) => [ref, 0]));\n for (const edges of graph.values())\n for (const ref of edges) indegrees.set(ref, indegrees.get(ref)! + 1);\n const queue = [...indegrees]\n .filter(([, degree]) => degree === 0)\n .map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++)\n for (const ref of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(ref)! - 1;\n indegrees.set(ref, degree);\n if (degree === 0) queue.push(ref);\n }\n if (queue.length !== graph.size)\n problem(\n \"CLAIM.DEPENDENCY_CYCLE\",\n \"/claims\",\n \"Claim inputs and supersession must form an acyclic history.\",\n );\n const validation: ContextClaimHistoryValidation = {\n contract,\n issues,\n uncheckedRefs: [\n ...data.contextRefs.map((r) => r.sha256),\n ...observationResult.uncheckedRefs,\n ...data.claims.flatMap((c) => [\n ...(c.subject.kind === \"context\"\n ? [c.subject.reference.document.sha256]\n : []),\n ...(c.kind === \"assessment\"\n ? (c.contextInputRefs ?? []).map((r) => r.document.sha256)\n : []),\n ]),\n ],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n };\n return issues.length\n ? { ...validation, success: false }\n : {\n ...validation,\n success: true,\n data,\n currentClaimRefs: [...claims.keys()].filter(\n (ref) => !superseded.has(ref),\n ),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../../src/experimental/v2/primitives.ts","../../../src/experimental/v2/observation-schema.ts","../../../src/experimental/v2/observation.ts","../../../src/experimental/v2/claim-history-schema.ts","../../../src/experimental/v2/claim-history.ts","../../../src/experimental/v2/utc.ts","../../../src/source/types.ts","../../../src/source/credibility.ts","../../../src/source/reference.ts","../../../src/shared/confidence-level.ts","../../../src/observation/domains.ts","../../../src/geo/location.ts","../../../src/source/sensor/types.ts","../../../src/temporal/time-of-day.ts","../../../src/experimental/v2/context-schema.ts","../../../src/experimental/v2/context.ts","../../../src/experimental/v2/context-claim-history-schema.ts","../../../src/experimental/v2/context-claim-history.ts","../../../src/extensions/testimony/category.ts","../../../src/extensions/testimony/credibility.ts","../../../src/extensions/testimony/witness.ts","../../../src/temporal/certainty.ts","../../../src/extensions/provenance/custody.ts","../../../src/extensions/testimony/statement.ts","../../../src/experimental/v2/research-entities-schema.ts","../../../src/experimental/v2/entity-document-validation.ts","../../../src/experimental/v2/research-entities.ts","../../../src/experimental/v2/research-claim-history-schema.ts","../../../src/experimental/v2/entity-claim-history-validation.ts","../../../src/experimental/v2/research-claim-history.ts","../../../src/experimental/v2/entity-fields.ts","../../../src/extensions/document/types.ts","../../../src/extensions/identifiers/external.ts","../../../src/experimental/v2/archival-entities-schema.ts","../../../src/experimental/v2/archival-entities.ts","../../../src/extensions/provenance/digital.ts","../../../src/experimental/v2/archival-claim-history-schema.ts","../../../src/experimental/v2/archival-claim-history.ts"],"names":["ref","target","refs","text","z","valueRef","sourceRefs","envelope","pointer","product","id","values","sourceRef","provenance","key","entity","relative","period","claimRef","inputRef","common","assessment","point","identifier","custody","a"],"mappings":";;;AAGA,IAAM,IAAA,GAAO,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,kCAAkC,CAAA;AAC7E,IAAM,UAAA,GAAa,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,8BAA8B,CAAA;AAClE,IAAM,SAAA,GAAY,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,4BAA4B,CAAA;AAC/D,IAAM,QAAA,GAAW,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,sCAAsC,CAAA;AACxE,IAAM,aAAa,CAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAInC,IAAM,gBAAgB,CAAA,CAAE,GAAA,CAAI,QAAA,CAAS,EAAE,QAAQ,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,WAAW,CAAA,CAC5E,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAM,uCAAuC,CAAA;AAEzC,IAAM,oBAAA,GAAuB,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC/D,CAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,MAAM,CAAA,EAAG,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,KAAA,CAAM,oBAAoB,GAAG,CAAA;AAAA,EACzF,CAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,KAAA,CAAM,oCAAoC,GAAG,CAAA;AAAA,EAC1G,EAAE,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA,CAAE,QAAQ,MAAM,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,IAAI,IAAA,EAAK,CAAE,KAAA,CAAM,WAAW,GAAG,CAAA;AAAA,EAClF,CAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAO,eAAe,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,KAAK,GAAG;AAClG,CAAC;AAEM,IAAM,uBAAA,GAA0B,EAAE,YAAA,CAAa;AAAA,EACpD,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAAG,KAAA,EAAO,oBAAA;AAAA,EAAsB,GAAA,EAAK;AACjE,CAAC;AACM,IAAM,uBAAuB,CAAA,CAAE,KAAA,CAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAC;AAE3F,IAAM,YAAA,GAAe,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,iDAAiD,CAAA;AAChF,IAAM,oBAAA,GAAuB,EAAE,YAAA,CAAa;AAAA,EACjD,YAAA;AAAA,EACA,yBAAyB,CAAA,CAAE,KAAA,CAAM,YAAY,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EACpD,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,2BAA2B,CAAA;AAAA,EACvD,aAAA,EAAe,IAAA;AAAA,EACf,WAAA,EAAa,IAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAW;AACb,CAAC;AAEM,IAAM,mBAAA,GAAsB,EAAE,YAAA,CAAa;AAAA,EAChD,QAAA,EAAU,EAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EACpC,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,IAAI,IAAI,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACvC,KAAA,EAAO,CAAA,CAAE,OAAA,CAAQ,OAAO;AAC1B,CAAC;AAED,SAAS,SAA8B,KAAA,EAAU;AAC/C,EAAA,OAAO,CAAA,CAAE,mBAAmB,OAAA,EAAS;AAAA,IACnC,CAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAO,EAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,KAAA,EAAO,UAAA,EAAY,SAAA,EAAW,oBAAA,CAAqB,QAAA,IAAY,CAAA;AAAA,IAC3G,EAAE,YAAA,CAAa,EAAE,KAAA,EAAO,CAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,KAAA,EAAO,UAAA,EAAY,WAAW,IAAA,EAAM,SAAA,EAAW,oBAAA,CAAqB,QAAA,IAAY,CAAA;AAAA,IAClI,EAAE,YAAA,CAAa,EAAE,KAAA,EAAO,CAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQ,CAAA,CAAE,KAAK,CAAC,cAAA,EAAgB,iBAAiB,aAAa,CAAC,GAAG,CAAA;AAAA,IAChH,CAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAO,CAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAM;AAAA,GAC9D,CAAA;AACH;AAEO,IAAM,eAAA,GAAkB,SAAS,oBAAoB;AACrD,IAAM,cAAA,GAAiB,SAAS,mBAAmB;AAKnD,IAAM,sBAAA,GAAyB,EAAE,YAAA,CAAa;AAAA,EACnD,SAAA;AAAA,EACA,cAAc,CAAA,CAAE,YAAA,CAAa,EAAE,SAAA,EAAW,CAAA,CAAE,QAAQ,QAAQ,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,QAAO,CAAE,KAAA,CAAM,gBAAgB,CAAA,EAAG,EAAE,QAAA,EAAS;AAAA,EACrH,OAAA,EAAS,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IACpC,EAAE,YAAA,CAAa,EAAE,IAAA,EAAM,CAAA,CAAE,QAAQ,MAAM,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,QAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,GAAG,CAAA;AAAA,IACzE,CAAA,CAAE,aAAa,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,YAAY,CAAA,EAAG,YAAA,EAAc,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,GAAG,UAAA,EAAY,CAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA;AAAA,IAChH,CAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,cAAc,CAAA,EAAG,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,KAAA,CAAM,mCAAmC,GAAG;AAAA,GACnH,EAAE,QAAA,EAAS;AAAA,EACZ,YAAA,EAAc,KAAK,QAAA,EAAS;AAAA,EAC5B,WAAA,EAAa,KAAK,QAAA;AACpB,CAAC;AAEM,IAAM,oBAAA,GAAuB,CAAA,CAAE,kBAAA,CAAmB,OAAA,EAAS;AAAA,EAChE,CAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,YAAY,KAAA,EAAO,CAAA,CAAE,OAAA,CAAQ,WAAW,CAAA,EAAG,KAAA,EAAO,oBAAA,EAAsB,UAAA,EAAY,wBAAwB,CAAA;AAAA,EACjI,CAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,YAAY,KAAA,EAAO,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,EAAG,KAAA,EAAO,mBAAA,EAAqB,UAAA,EAAY,wBAAwB;AACjI,CAAC;AAGM,IAAM,qBAAA,GAAwB,EAAE,YAAA,CAAa;AAAA,EAClD,EAAA,EAAI,UAAA;AAAA,EACJ,SAAA,EAAW,eAAA;AAAA,EACX,QAAA,EAAU,cAAA;AAAA,EACV,UAAA,EAAY,CAAA,CAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA;AAC5C,CAAC;AA0BD,IAAM,OAAA,GAAU,CAAC,IAAA,KAAiC,IAAA,CAAK,IAAI,CAAA,CAAA,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,CAAA,CAAE,QAAQ,IAAA,EAAM,IAAI,EAAE,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAIjI,SAAS,aAAa,KAAA,EAA2D;AAC/E,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AACjC,EAAA,IAAI,GAAA,KAAQ,EAAA,EAAI,OAAO,EAAE,YAAA,EAAc,KAAK,KAAA,CAAM,KAAK,CAAA,EAAG,QAAA,EAAU,EAAA,EAAG;AACvE,EAAA,IAAI,MAAM,GAAA,GAAM,CAAA;AAChB,EAAA,OAAO,GAAA,GAAM,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,GAAG,KAAM,GAAA,IAAO,KAAA,CAAM,GAAG,CAAA,IAAM,GAAA,EAAK,GAAA,EAAA;AACvE,EAAA,OAAO,EAAE,cAAc,IAAA,CAAK,KAAA,CAAM,MAAM,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAC,GAAG,QAAA,EAAU,KAAA,CAAM,MAAM,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,EAAE;AACjH;AAEO,SAAS,aAAA,CAAc,OAAuB,GAAA,EAA6B;AAChF,EAAA,IAAI,MAAM,IAAA,KAAS,SAAA,IAAa,GAAA,CAAI,IAAA,KAAS,WAAW,OAAO,KAAA,CAAM,KAAA,GAAQ,GAAA,CAAI,QAAQ,EAAA,GAAK,KAAA,CAAM,KAAA,GAAQ,GAAA,CAAI,QAAQ,CAAA,GAAI,CAAA;AAC5H,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AAClC,EAAA,MAAM,CAAA,GAAI,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,YAAY,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,YAAY,CAAA,EAAG,OAAO,GAAA;AACjF,EAAA,IAAI,CAAA,CAAE,iBAAiB,CAAA,CAAE,YAAA,SAAqB,CAAA,CAAE,YAAA,GAAe,CAAA,CAAE,YAAA,GAAe,EAAA,GAAK,CAAA;AACrF,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,CAAA,CAAE,SAAS,MAAA,EAAQ,CAAA,CAAE,SAAS,MAAM,CAAA;AAC5D,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,QAAQ,GAAG,CAAA;AACxC,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,QAAQ,GAAG,CAAA;AACxC,EAAA,OAAO,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,KAAK,CAAA,GAAI,CAAA;AACtC;AAEO,SAAS,SAAA,CAAU,KAAA,EAAuB,IAAA,EAAc,MAAA,EAAgC;AAC7F,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,SAAA,IAAa,CAAC,MAAA,CAAO,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA,CAAE,YAAY,CAAA,EAAG;AACxF,IAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,YAAY,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,0DAAA,EAA4D,CAAA;AAAA,EAC7I;AACA,EAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC/B,EAAA,SAAA,CAAU,KAAA,CAAM,KAAA,EAAO,CAAA,EAAG,IAAI,UAAU,MAAM,CAAA;AAC9C,EAAA,SAAA,CAAU,KAAA,CAAM,GAAA,EAAK,CAAA,EAAG,IAAI,QAAQ,MAAM,CAAA;AAC1C,EAAA,IAAI,KAAA,CAAM,KAAA,CAAM,IAAA,KAAS,KAAA,CAAM,IAAI,IAAA,EAAM;AACvC,IAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,yBAAA,EAA2B,KAAA,EAAO,YAAY,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,sFAAA,EAAwF,CAAA;AAAA,EACpL,WAAW,aAAA,CAAc,KAAA,CAAM,OAAO,KAAA,CAAM,GAAG,IAAI,CAAA,EAAG;AACpD,IAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,IAAA,CAAA,EAAQ,OAAA,EAAS,kCAAA,EAAoC,CAAA;AAAA,EAC/H;AACF;AAGO,SAAS,qBAAqB,KAAA,EAAsC;AACzE,EAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,SAAA,CAAU,KAAK,CAAA;AACpD,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,aAAA,EAAe,IAAI,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,KAAA,MAAU;AAAA,IACzG,IAAA,EAAM,cAAA;AAAA,IAAgB,KAAA,EAAO,YAAA;AAAA,IAAc,OAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAAA,IAAG,SAAS,KAAA,CAAM;AAAA,IACxF,CAAA,EAAE;AACJ,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAA4B;AACnD,EAAA,KAAA,MAAW,CAAC,OAAO,SAAS,CAAA,IAAA,CAAM,KAAK,UAAA,IAAc,EAAC,EAAG,OAAA,EAAQ,EAAG;AAClE,IAAA,IAAI,WAAW,GAAA,CAAI,SAAA,CAAU,EAAE,CAAA,EAAG,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,YAAY,OAAA,EAAS,CAAA,YAAA,EAAe,KAAK,CAAA,GAAA,CAAA,EAAO,OAAA,EAAS,+BAA+B,CAAA;AAAA,SACjK,UAAA,CAAW,GAAA,CAAI,SAAA,CAAU,EAAA,EAAI,SAAS,CAAA;AAC3C,IAAA,SAAA,CAAU,GAAA,CAAI,SAAA,CAAU,UAAA,CAAW,SAAS,CAAA;AAC5C,IAAA,IAAI,SAAA,CAAU,UAAU,WAAA,EAAa,SAAA,CAAU,UAAU,KAAA,EAAO,CAAA,YAAA,EAAe,KAAK,CAAA,MAAA,CAAA,EAAU,MAAM,CAAA;AACpG,IAAA,MAAM,OAAA,GAAU,UAAU,UAAA,CAAW,OAAA;AACrC,IAAA,IAAI,OAAA,EAAS,SAAS,YAAA,IAAgB,OAAA,CAAQ,aAAa,OAAA,CAAQ,YAAA,SAAqB,IAAA,CAAK,EAAE,MAAM,eAAA,EAAiB,KAAA,EAAO,YAAY,OAAA,EAAS,CAAA,YAAA,EAAe,KAAK,CAAA,8BAAA,CAAA,EAAkC,OAAA,EAAS,mCAAmC,CAAA;AAAA,EACtP;AACA,EAAA,KAAA,MAAW,KAAA,IAAS,CAAC,WAAA,EAAa,UAAU,CAAA,EAAY;AACtD,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAK,CAAA;AACxB,IAAA,IAAI,KAAA,CAAM,KAAA,KAAU,OAAA,IAAW,KAAA,CAAM,UAAU,aAAA,EAAe;AAC9D,IAAA,IAAI,KAAA,KAAU,WAAA,KAAgB,IAAA,CAAK,SAAA,CAAU,UAAU,OAAA,IAAW,IAAA,CAAK,SAAA,CAAU,KAAA,KAAU,gBAAgB,SAAA,CAAU,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,oBAAoB,MAAM,CAAA;AACrK,IAAA,KAAA,MAAW,CAAC,KAAA,EAAOA,IAAG,KAAK,KAAA,CAAM,UAAA,CAAW,SAAQ,EAAG;AACrD,MAAA,IAAI,CAACA,IAAAA,CAAI,UAAA,CAAW,YAAY,CAAA,EAAG;AAAE,QAAA,SAAA,CAAU,IAAIA,IAAG,CAAA;AAAG,QAAA;AAAA,MAAU;AACnE,MAAA,MAAMC,UAAS,UAAA,CAAW,GAAA,CAAID,KAAI,KAAA,CAAM,YAAA,CAAa,MAAM,CAAC,CAAA;AAC5D,MAAA,IAAI,CAACC,OAAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,EAAE,MAAM,sBAAA,EAAwB,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,IAAI,KAAK,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,mCAAmC,CAAA;AAAA,WAAA,IACzJA,QAAO,KAAA,KAAU,KAAA,SAAc,IAAA,CAAK,EAAE,MAAM,oBAAA,EAAsB,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,IAAI,KAAK,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,yCAAyC,CAAA;AAAA,IAC5L;AACA,IAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AACxB,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,IAAA,GAAO,IAAI,KAAK,CAAA,UAAA,CAAA;AACtB,IAAA,SAAA,CAAU,GAAA,CAAI,UAAU,SAAS,CAAA;AACjC,IAAA,IAAI,CAAC,OAAO,QAAA,CAAS,YAAA,CAAa,UAAU,WAAW,CAAA,CAAE,YAAY,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAO,UAAA,EAAY,OAAA,EAAS,GAAG,IAAI,CAAA,YAAA,CAAA,EAAgB,OAAA,EAAS,sEAAA,EAAwE,CAAA;AAChP,IAAA,IAAI,CAAC,UAAU,uBAAA,CAAwB,QAAA,CAAS,UAAU,YAAY,CAAA,SAAU,IAAA,CAAK,EAAE,MAAM,kBAAA,EAAoB,KAAA,EAAO,YAAY,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA,aAAA,CAAA,EAAiB,OAAA,EAAS,2DAA2D,CAAA;AACzO,IAAA,IAAI,CAAC,MAAM,UAAA,CAAW,QAAA,CAAS,UAAU,YAAY,CAAA,SAAU,IAAA,CAAK,EAAE,MAAM,sBAAA,EAAwB,KAAA,EAAO,YAAY,OAAA,EAAS,CAAA,CAAA,EAAI,KAAK,CAAA,WAAA,CAAA,EAAe,OAAA,EAAS,sDAAsD,CAAA;AACvN,IAAA,MAAMC,KAAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,KAAA,MAAW,CAAC,KAAA,EAAOF,IAAG,KAAK,SAAA,CAAU,uBAAA,CAAwB,SAAQ,EAAG;AACtE,MAAA,IAAIE,MAAK,GAAA,CAAIF,IAAG,GAAG,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,UAAA,EAAY,OAAA,EAAS,GAAG,IAAI,CAAA,yBAAA,EAA4B,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,qCAAqC,CAAA;AAC9K,MAAAE,KAAAA,CAAK,IAAIF,IAAG,CAAA;AACZ,MAAA,MAAMC,UAAS,UAAA,CAAW,GAAA,CAAID,KAAI,KAAA,CAAM,YAAA,CAAa,MAAM,CAAC,CAAA;AAC5D,MAAA,IAAI,CAACC,OAAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,EAAE,MAAM,sBAAA,EAAwB,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,GAAG,IAAI,CAAA,yBAAA,EAA4B,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,wCAAwC,CAAA;AAAA,WAAA,IACzKA,QAAO,KAAA,KAAU,KAAA,SAAc,IAAA,CAAK,EAAE,MAAM,oBAAA,EAAsB,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,GAAG,IAAI,CAAA,yBAAA,EAA4B,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,oDAAoD,CAAA;AAAA,IAClN;AACA,IAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,SAAA,CAAU,aAAa,KAAA,CAAM,YAAA,CAAa,MAAM,CAAC,CAAA;AACjF,IAAA,IAAI,CAAC,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,sBAAA,EAAwB,KAAA,EAAO,UAAA,EAAY,SAAS,CAAA,EAAG,IAAI,CAAA,aAAA,CAAA,EAAiB,OAAA,EAAS,sCAAsC,CAAA;AAAA,SAAA,IACrJ,SAAS,KAAA,KAAU,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,oBAAA,EAAsB,KAAA,EAAO,UAAA,EAAY,SAAS,CAAA,EAAG,IAAI,CAAA,aAAA,CAAA,EAAiB,OAAA,EAAS,kDAAkD,CAAA;AAAA,SAAA,IAGnL,IAAA,CAAK,UAAU,QAAA,CAAS,KAAK,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA,EAAG,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,0BAAA,EAA4B,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,IAAI,KAAK,CAAA,MAAA,CAAA,EAAU,OAAA,EAAS,4FAAA,EAA8F,CAAA;AAAA,EACjR;AACA,EAAA,OAAO,MAAA,CAAO,SAAS,EAAE,OAAA,EAAS,OAAO,MAAA,EAAQ,aAAA,EAAe,CAAC,GAAG,SAAS,GAAE,GAC3E,EAAE,SAAS,IAAA,EAAM,IAAA,EAAM,QAAQ,aAAA,EAAe,CAAC,GAAG,SAAS,CAAA,EAAE;AACnE;AAEO,IAAM,oBAAA,GAAuB;AAE7B,SAAS,oBAAA,GAAgD;AAC9D,EAAA,OAAO,EAAE,GAAG,CAAA,CAAE,YAAA,CAAa,qBAAA,EAAuB,EAAE,MAAA,EAAQ,eAAA,EAAiB,CAAA,EAAG,GAAA,EAAK,oBAAA,EAAqB;AAC5G;ACzMA,IAAME,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,kCAAkC,CAAA;AAC7E,IAAM,EAAA,GAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAM,GAAA,GAAM,CAAC,KAAA,KAA6BA,CAAAA,CAAE,QAAO,CAAE,KAAA,CAAM,IAAI,MAAA,CAAO,OAAO,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,0CAA0C,CAAC,CAAA;AACvI,IAAM,gBAAA,GAAmB,GAAA,CAAI,CAAC,QAAA,EAAU,SAAS,CAAC,CAAA;AAClD,IAAMC,YAAW,GAAA,CAAI,CAAC,QAAA,EAAU,SAAA,EAAW,WAAW,CAAC,CAAA;AACvD,IAAMC,cAAaF,CAAAA,CAAE,KAAA,CAAMC,SAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAC1C,IAAM,MAAA,GAASD,EAAE,IAAA,CAAK,CAAC,UAAU,YAAA,EAAc,UAAA,EAAY,SAAS,CAAC,CAAA;AACrE,IAAM,SAASA,CAAAA,CAAE,YAAA,CAAa,EAAE,SAAA,EAAWA,EAAE,OAAA,CAAQ,QAAQ,CAAA,EAAG,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,KAAA,CAAM,yBAAyB,GAAG,CAAA;AAEpH,IAAM,aAAa,EAAE,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,EAAG,IAAA,EAAMD,KAAAA,EAAM,YAAYC,CAAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAE;AACrG,IAAM,6BAAA,GAAgCA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACxEA,EAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQA,CAAAA,CAAE,KAAK,CAAC,cAAA,EAAgB,qBAAqB,aAAa,CAAC,GAAG,CAAA;AAAA,EACnHA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,GAAG,UAAA,EAAY,CAAA;AAAA,EAC7DA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,EAAG,GAAG,UAAA,EAAY,cAAA,EAAgBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,mBAAA,EAAqBA,CAAAA,CAAE,MAAA,EAAO,CAAE,EAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EAC7JA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,OAAO,CAAA,EAAG,GAAG,UAAA,EAAY;AAC5D,CAAC;AACM,IAAM,sBAAA,GAAyBA,EAAE,YAAA,CAAa;AAAA,EACnD,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,EAAG,IAAA,EAAMD,KAAAA;AAAA,EAAM,WAAA,EAAa;AAC9C,CAAC;AAED,IAAM,UAAA,GAAaC,CAAAA,CAAE,kBAAA,CAAmB,OAAA,EAAS;AAAA,EAC/CA,EAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,YAAY,CAAA,EAAG,SAAA,EAAWD,KAAAA,EAAM,MAAMA,KAAAA,EAAM,QAAA,EAAUA,KAAAA,CAAK,QAAA,IAAY,CAAA;AAAA,EACzGC,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,WAAW,CAAA,EAAG,WAAA,EAAaD,KAAAA,EAAM,CAAA;AAAA,EACnEC,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM;AAC9D,CAAC,CAAA;AACM,IAAM,oBAAA,GAAuBC,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC/DA,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,EAAG,UAAA,EAAY,WAAA,EAAaA,CAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,QAAA,EAAUA,CAAAA,CAAE,YAAA,CAAa,EAAE,UAAA,EAAY,IAAA,EAAMD,KAAAA,EAAM,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EAC9JC,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,WAAW,CAAA,EAAG,UAAA,EAAY,IAAA,EAAMD,KAAAA,EAAM;AAC7E,CAAC;AACM,IAAM,oBAAA,GAAuBC,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC/D,oBAAoB,IAAA,CAAK,EAAE,OAAO,IAAA,EAAM,EAAE,MAAA,CAAO;AAAA,IAC/C,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,IAAG,QAAA,EAAU,GAAA,CAAI,CAAC,OAAO,CAAC,CAAA;AAAA,IAAG,QAAA,EAAU,uBAAuB,QAAA,EAAS;AAAA,IACjG,WAAA,EAAaA,CAAAA,CAAE,YAAA,CAAa,EAAE,QAAA,EAAU,+BAA+B,SAAA,EAAW,6BAAA,EAA+B,CAAA,CAAE,QAAA;AAAS,GAC7H,CAAA;AAAA,EACDA,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,WAAW,GAAG,QAAA,EAAU,GAAA,CAAI,CAAC,OAAO,CAAC,GAAG,CAAA,EAAG,sBAAA,EAAwB,GAAG,sBAAA,EAAwB,CAAA,EAAG,wBAAwB;AAC5J,CAAC;AAED,SAASG,UAA8B,KAAA,EAAU;AAC/C,EAAA,OAAOH,CAAAA,CAAE,mBAAmB,OAAA,EAAS;AAAA,IACnCA,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,EAAE,OAAA,CAAQ,OAAO,CAAA,EAAG,KAAA,EAAO,YAAAE,WAAAA,EAAY,SAAA,EAAW,oBAAA,CAAqB,QAAA,IAAY,CAAA;AAAA,IAC3GF,EAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,KAAA,EAAO,UAAA,EAAAE,aAAY,SAAA,EAAW,oBAAA,CAAqB,UAAS,EAAG,SAAA,EAAWH,OAAM,CAAA;AAAA,IAClIC,EAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQA,CAAAA,CAAE,KAAK,CAAC,cAAA,EAAgB,iBAAiB,aAAa,CAAC,GAAG,CAAA;AAAA,IAChHA,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM;AAAA,GAC9D,CAAA;AACH;AACA,IAAM,YAAA,GAAeI,UAAS,oBAAoB,CAAA;AAE3C,IAAM,qBAAA,GAAwBH,CAAAA,CAAE,kBAAA,CAAmB,OAAA,EAAS;AAAA,EACjE,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,CAAE,MAAA,CAAO,EAAE,WAAA,EAAa,6BAAA,CAA8B,QAAA,EAAS,EAAG,CAAA;AAAA,EACxF,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,CAAE,MAAA,CAAO,EAAE,WAAA,EAAa,6BAAA,CAA8B,QAAA,EAAS,EAAG,CAAA;AAAA,EACxF,YAAA,CAAa,QAAQ,CAAC,CAAA;AAAA,EACtB,YAAA,CAAa,QAAQ,CAAC;AACxB,CAAC;AACM,IAAM,yBAAA,GAA4BG,UAAS,oBAAoB;AAE/D,IAAM,uBAAA,GAA0BH,EAAE,YAAA,CAAa;AAAA,EACpD,EAAA;AAAA,EAAI,IAAA,EAAMA,EAAE,IAAA,CAAK,CAAC,YAAY,WAAA,EAAa,iBAAA,EAAmB,OAAA,EAAS,SAAS,CAAC,CAAA;AAAA,EACjF,MAAA;AAAA,EAAQ,KAAA,EAAOD,MAAK,QAAA,EAAS;AAAA,EAAG,GAAA,EAAKC,CAAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,EAAG,MAAA,EAAQ,OAAO,QAAA;AAC1E,CAAC;AACD,IAAM,OAAA,GAAU,EAAE,EAAA,EAAI,MAAA,EAAQD,OAAM,MAAA,EAAQ,GAAA,EAAKC,CAAAA,CAAE,GAAA,GAAM,QAAA,EAAS,EAAG,MAAA,EAAQ,MAAA,CAAO,UAAS,EAAE;AACxF,IAAM,wBAAA,GAA2BA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACnEA,CAAAA,CAAE,aAAa,EAAE,GAAG,SAAS,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,EAAG,UAAA,EAAYA,EAAE,KAAA,CAAM,GAAA,CAAI,CAAC,QAAQ,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA;AAAA,EAClGA,EAAE,YAAA,CAAa,EAAE,GAAG,OAAA,EAAS,MAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,EAAG,aAAa,GAAA,CAAI,CAAC,SAAS,CAAC,GAAG;AAC1F,CAAC;AACM,IAAM,0BAA0BA,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,SAASD,KAAAA,EAAM,WAAA,EAAaA,KAAAA,CAAK,QAAA,IAAY,GAAA,EAAKC,CAAAA,CAAE,KAAI,CAAE,QAAA,IAAY;AAClI,IAAM,UAAA,GAAa,sBAAA,CAAuB,MAAA,CAAO,EAAE,SAAA,EAAW,kBAAkB,YAAA,EAAc,MAAA,CAAO,QAAA,EAAS,EAAG,CAAA;AAC1G,IAAM,0BAAA,GAA6BA,CAAAA,CAAE,kBAAA,CAAmB,OAAA,EAAS;AAAA,EACtEA,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,WAAW,CAAA,EAAG,KAAA,EAAO,oBAAA,EAAsB,UAAA,EAAY,CAAA;AAAA,EAC7FA,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,EAAG,KAAA,EAAO,oBAAA,EAAsB,UAAA,EAAY,CAAA;AAAA,EAC5FA,CAAAA,CAAE,YAAA,CAAa,EAAE,EAAA,EAAI,OAAOA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,KAAA,EAAO,sBAAA,EAAwB,YAAY;AACtH,CAAC;AACM,IAAM,4BAAA,GAA+BA,EAAE,YAAA,CAAa;AAAA,EACzD,EAAA;AAAA,EAAI,QAAA,EAAUD,KAAAA;AAAA,EAAM,KAAA,EAAO,sBAAA;AAAA,EAAwB,UAAA,EAAAG,WAAAA;AAAA,EACnD,UAAU,GAAA,CAAI,CAAC,OAAO,CAAC,EAAE,QAAA,EAAS;AAAA,EAAG,SAAA,EAAW,qBAAqB,QAAA;AACvE,CAAC;AACM,IAAM,wBAAA,GAA2BF,EAAE,YAAA,CAAa;AAAA,EACrD,EAAA;AAAA,EAAI,SAAA,EAAW,GAAA,CAAI,CAAC,QAAQ,CAAC,CAAA;AAAA,EAAG,aAAA,EAAeD,KAAAA;AAAA,EAAM,WAAA,EAAaA,KAAAA;AAAA,EAAM,WAAA,EAAa,aAAA;AAAA,EACrF,WAAWC,CAAAA,CAAE,KAAA,CAAMC,SAAQ,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAAG,UAAA,EAAYD,CAAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,SAAS,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC;AAClF,CAAC;AAEM,IAAM,kCAAA,GAAqC;AAC3C,IAAM,6BAAA,GAAgCA,EAAE,YAAA,CAAa;AAAA,EAC1D,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAAG,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAAG,EAAA;AAAA,EACnE,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,EAAG,SAAA,EAAW,aAAA;AAAA,EAAe,SAAA,EAAW,aAAA;AAAA,EAC1F,OAAA,EAASD,MAAK,QAAA,EAAS;AAAA,EAAG,SAAA,EAAW,qBAAA;AAAA,EAAuB,QAAA,EAAU,yBAAA;AAAA,EACtE,OAAA,EAASC,CAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAA;AAAA,EAAG,QAAA,EAAUA,CAAAA,CAAE,KAAA,CAAM,wBAAwB,CAAA;AAAA,EAAG,OAAA,EAASA,CAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAA;AAAA,EAChI,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,oBAAoB,CAAA;AAAA,EAAG,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,0BAA0B,CAAA;AAAA,EACrF,YAAA,EAAcA,CAAAA,CAAE,KAAA,CAAM,4BAA4B,CAAA;AAAA,EAAG,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,wBAAwB,CAAA;AAAA,EACjG,UAAA,EAAYA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,+CAA+C,CAAA,EAAGA,CAAAA,CAAE,IAAA,EAAM,EAAE,QAAA;AACpG,CAAC;AAUM,SAAS,iCAAA,GAA6D;AAC3E,EAAA,OAAO,EAAE,GAAGA,CAAAA,CAAE,YAAA,CAAa,6BAAA,EAA+B,EAAE,MAAA,EAAQ,eAAA,EAAiB,CAAA,EAAG,GAAA,EAAK,kCAAA,EAAmC;AAClI;;;AC5EA,IAAMI,QAAAA,GAAU,CAAC,IAAA,KAAiC,IAAA,CAAK,IAAI,CAAA,CAAA,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,CAAA,CAAE,QAAQ,IAAA,EAAM,IAAI,EAAE,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACjI,IAAM,GAAA,GAAM,CAACR,IAAAA,KAAgBA,IAAAA,CAAI,MAAMA,IAAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,GAAI,CAAC,CAAA;AAGpD,SAAS,6BAA6B,KAAA,EAAwC;AACnF,EAAA,MAAM,MAAA,GAAS,6BAAA,CAA8B,SAAA,CAAU,KAAK,CAAA;AAC5D,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO;AAAA,IAC1B,OAAA,EAAS,KAAA;AAAA,IAAO,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAA,EAAU,UAAU,aAAA,EAAe,OAAA,EAAS,aAAA,EAAe,QAAA,EAAU,aAAA,EAAc;AAAA,IAAG,eAAe,EAAC;AAAA,IAC5I,MAAA,EAAQ,OAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,KAAA,MAAU,EAAE,MAAM,cAAA,EAAgB,KAAA,EAAO,cAAc,QAAA,EAAU,OAAA,EAAS,SAASQ,QAAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,EAAG,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ,CAAE;AAAA,GACnK;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,SAA6B,EAAC;AACpC,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAyB;AAC3C,EAAA,MAAM,UAAU,CAAC,IAAA,EAA4B,IAAA,EAAc,OAAA,KAAoB,OAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,YAAY,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AACjK,EAAA,SAAS,KAAA,CAAgC,KAAA,EAAY,MAAA,EAAgB,UAAA,EAAoC;AACvG,IAAA,MAAM,MAAA,uBAAa,GAAA,EAAe;AAClC,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,IAAI,CAAA,IAAK,KAAA,CAAM,SAAQ,EAAG;AACvC,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAE,GAAG,OAAA,CAAQ,eAAA,EAAiB,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,CAAA,EAAO,CAAA,UAAA,EAAa,MAAM,CAAA,IAAA,CAAM,CAAA;AAAA,WAChG;AAAE,QAAA,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,IAAI,CAAA;AAAG,QAAA,KAAA,CAAM,GAAA,CAAI,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,CAAA,kBAAI,IAAI,GAAA,EAAK,CAAA;AAAA,MAAG;AAAA,IAClF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,UAAU,SAAS,CAAA;AACvD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,QAAA,EAAU,WAAW,UAAU,CAAA;AAC3D,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,UAAU,SAAS,CAAA;AACvD,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,SAAS,QAAQ,CAAA;AACnD,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,UAAA,EAAY,aAAa,YAAY,CAAA;AACnE,EAAA,KAAA,CAAM,IAAA,CAAK,YAAA,EAAc,aAAA,EAAe,cAAc,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,UAAA,EAAY,WAAW,YAAY,CAAA;AAChE,EAAA,MAAM,iBAAiB,IAAI,GAAA,CAAI,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,OAAA,KAAW,CAAC,OAAA,CAAQ,EAAA,EAAI,IAAI,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAC,CAAC,CAAC,CAAA;AAExG,EAAA,SAAS,OAAA,CAAQR,IAAAA,EAAa,IAAA,EAAc,KAAA,EAAyB;AACnE,IAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAIA,IAAG,CAAA,EAAG;AAAE,MAAA,OAAA,CAAQ,sBAAA,EAAwB,IAAA,EAAM,CAAA,4BAAA,EAA+BA,IAAG,CAAA,CAAE,CAAA;AAAG,MAAA,OAAO,KAAA;AAAA,IAAO;AAClH,IAAA,IAAI,OAAO,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,EAAG,IAAIA,IAAG,CAAA;AACpC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,SAAS,UAAA,CAAWE,KAAAA,EAAgB,IAAA,EAAc,KAAA,EAAsB;AACtE,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGF,IAAG,CAAA,IAAKE,KAAAA,CAAK,SAAQ,EAAG;AACrC,MAAA,IAAI,IAAA,CAAK,GAAA,CAAIF,IAAG,CAAA,EAAG,OAAA,CAAQ,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,wBAAwB,CAAA;AACpF,MAAA,IAAA,CAAK,IAAIA,IAAG,CAAA;AACZ,MAAA,OAAA,CAAQA,MAAK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,KAAK,CAAA;AAAA,IACpC;AAAA,EACF;AACA,EAAA,SAAS,MAAA,CAAOA,IAAAA,EAAa,OAAA,EAAiB,IAAA,EAAc,KAAA,EAAsB;AAChF,IAAA,IAAI,OAAA,CAAQA,IAAAA,EAAK,CAAA,EAAG,IAAI,cAAc,KAAK,CAAA,IAAK,OAAA,CAAQ,GAAA,CAAI,GAAA,CAAIA,IAAG,CAAC,CAAA,EAAG,YAAY,OAAA,EAAS;AAC1F,MAAA,OAAA,CAAQ,yBAAA,EAA2B,CAAA,EAAG,IAAI,CAAA,cAAA,CAAA,EAAkB,oDAAoD,CAAA;AAAA,IAClH;AAAA,EACF;AACA,EAAA,SAAS,IAAA,CAAK,OAAuB,IAAA,EAAoB;AACvD,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAU,KAAA,EAAO,MAAM,KAAK,CAAA;AAC5B,IAAA,KAAA,MAAW,KAAA,IAAS,OAAO,OAAA,CAAQ,KAAA,CAAM,MAAM,KAAA,CAAM,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,EAC7E;AACA,EAAA,SAAS,OAAA,CAAQ,OAAe,IAAA,EAAoB;AAAE,IAAA,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,KAAwB,GAAG,IAAI,CAAA;AAAA,EAAG;AAChH,EAAA,SAAS,WAAA,CAAY,KAAA,EAAgC,YAAA,EAA0C,IAAA,EAAc,KAAA,EAAsB;AACjI,IAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC9B,IAAA,MAAM,QAAQ,OAAO,YAAA,KAAiB,QAAA,GAAW,CAAC,YAAY,CAAA,GAAI,YAAA;AAClE,IAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG,OAAA,CAAQ,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,mFAAmF,CAAA;AAC7J,IAAA,UAAA,CAAW,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,eAAe,KAAK,CAAA;AAAA,EAC1D;AACA,EAAA,SAAS,QAAA,CAAS,KAAA,EAAyB,IAAA,EAAc,KAAA,EAAgB,YAAA,EAA6B;AACpG,IAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,KAAA,CAAM,IAAA,KAAS,YAAA,UAAsB,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA,EAAS,iDAAiD,CAAA;AACzJ,IAAA,WAAA,CAAY,MAAM,WAAA,EAAa,KAAA,CAAM,MAAM,CAAA,EAAG,IAAI,gBAAgB,KAAK,CAAA;AAAA,EACzE;AACA,EAAA,SAAS,QAAA,CAAS,KAAA,EAAuB,IAAA,EAAc,KAAA,EAAsB;AAC3E,IAAA,OAAA,CAAQ,KAAA,CAAM,QAAA,EAAU,CAAA,EAAG,IAAI,aAAa,KAAK,CAAA;AACjD,IAAA,MAAM,QAAQ,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAC,CAAA;AAC5C,IAAA,IAAI,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,KAAA,CAAM,IAAA,UAAc,qBAAA,EAAuB,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,gEAAgE,CAAA;AAC3J,IAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,MAAA,IAAI,MAAM,WAAA,EAAa;AACrB,QAAA,WAAA,CAAY,MAAM,WAAA,CAAY,QAAA,EAAU,OAAO,CAAA,EAAG,IAAI,yBAAyB,KAAK,CAAA;AACpF,QAAA,WAAA,CAAY,MAAM,WAAA,CAAY,SAAA,EAAW,OAAO,CAAA,EAAG,IAAI,0BAA0B,KAAK,CAAA;AAAA,MACxF;AACA,MAAA,IAAI,MAAM,QAAA,EAAU;AAClB,QAAA,IAAI,KAAA,EAAO,IAAA,KAAS,UAAA,IAAc,CAAC,KAAA,CAAM,QAAA,EAAU,OAAA,CAAQ,0BAAA,EAA4B,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,4DAA4D,CAAA;AACvK,QAAA,QAAA,CAAS,KAAA,CAAM,QAAA,EAAU,CAAA,EAAG,IAAI,CAAA,SAAA,CAAA,EAAa,KAAA,EAAO,KAAA,EAAO,IAAA,KAAS,UAAA,GAAa,KAAA,CAAM,QAAA,EAAU,IAAA,GAAO,MAAS,CAAA;AAAA,MACnH;AAAA,IACF,CAAA,MAAO;AACL,MAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA,EAAY,QAAA,CAAS,MAAM,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,KAAA,EAAO,OAAO,IAAA,KAAS,WAAA,GAAc,KAAA,CAAM,IAAA,GAAO,MAAS,CAAA;AAAA,IACnJ;AAAA,EACF;AACA,EAAA,SAAS,YAAA,CAAaA,IAAAA,EAAa,KAAA,EAAiD,aAAA,EAAiC;AACnH,IAAA,MAAM,SAAA,GAAY,UAAA,CAAW,GAAA,CAAI,GAAA,CAAIA,IAAG,CAAC,CAAA;AACzC,IAAA,OAAO,WAAW,KAAA,KAAU,KAAA,KAAU,UAAU,KAAA,KAAU,aAAA,IAAiB,UAAU,aAAA,KAAkB,aAAA,CAAA;AAAA,EACzG;AACA,EAAA,SAAS,eAAA,CAAgBE,KAAAA,EAAgB,KAAA,EAAiD,IAAA,EAAc,OAAgB,aAAA,EAA8B;AACpJ,IAAA,UAAA,CAAWA,KAAAA,EAAM,MAAM,KAAK,CAAA;AAC5B,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGF,IAAG,CAAA,IAAKE,KAAAA,CAAK,SAAQ,EAAG;AACrC,MAAA,IAAIF,IAAAA,CAAI,WAAW,YAAY,CAAA,IAAK,WAAW,GAAA,CAAI,GAAA,CAAIA,IAAG,CAAC,CAAA,IAAK,CAAC,aAAaA,IAAAA,EAAK,KAAA,EAAO,aAAa,CAAA,EAAG,OAAA,CAAQ,oBAAA,EAAsB,GAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,sDAAsD,CAAA;AAAA,IAChN;AAAA,EACF;AACA,EAAA,SAAS,UAAU,KAAA,EAAmC,aAAA,EAAwBE,OAAgB,KAAA,EAAiD,IAAA,EAAc,OAAgB,aAAA,EAA8B;AACzM,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,IAAIA,KAAAA,CAAK,IAAA,CAAK,CAAAF,IAAAA,KAAOA,KAAI,UAAA,CAAW,YAAY,CAAC,CAAA,EAAG,OAAA,CAAQ,oBAAA,EAAsB,CAAA,EAAG,IAAI,cAAc,gFAAgF,CAAA;AACvL,MAAA;AAAA,IACF;AACA,IAAA,MAAM,aAAA,GAAgB,GAAG,IAAI,CAAA,UAAA,CAAA;AAC7B,IAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG,aAAa,CAAA,YAAA,CAAc,CAAA;AACzD,IAAA,MAAA,CAAO,KAAA,CAAM,SAAA,EAAW,KAAA,CAAM,aAAA,EAAe,eAAe,KAAK,CAAA;AACjE,IAAA,eAAA,CAAgB,MAAM,uBAAA,EAAyB,KAAA,EAAO,GAAG,aAAa,CAAA,wBAAA,CAAA,EAA4B,OAAO,aAAa,CAAA;AACtH,IAAA,OAAA,CAAQ,KAAA,CAAM,YAAA,EAAc,CAAA,EAAG,aAAa,iBAAiB,KAAK,CAAA;AAClE,IAAA,IAAI,CAAC,KAAA,CAAM,uBAAA,CAAwB,QAAA,CAAS,KAAA,CAAM,YAAY,CAAA,EAAG,OAAA,CAAQ,kBAAA,EAAoB,CAAA,EAAG,aAAa,CAAA,aAAA,CAAA,EAAiB,qDAAqD,CAAA;AACnL,IAAA,IAAI,CAACE,KAAAA,CAAK,QAAA,CAAS,KAAA,CAAM,YAAY,CAAA,EAAG,OAAA,CAAQ,sBAAA,EAAwB,CAAA,EAAG,IAAI,CAAA,WAAA,CAAA,EAAe,yCAAyC,CAAA;AACvI,IAAA,MAAMD,UAAS,UAAA,CAAW,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,YAAY,CAAC,CAAA;AACrD,IAAA,IAAIA,OAAAA,IAAU,CAAC,YAAA,CAAa,KAAA,CAAM,YAAA,EAAc,KAAA,EAAO,aAAa,CAAA,EAAG,OAAA,CAAQ,oBAAA,EAAsB,CAAA,EAAG,aAAa,iBAAiB,+DAA+D,CAAA;AAAA,SAAA,IAC5LA,OAAAA,IAAU,IAAA,CAAK,SAAA,CAAUA,OAAAA,CAAO,KAAK,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,aAAa,GAAG,OAAA,CAAQ,0BAAA,EAA4B,CAAA,EAAG,IAAI,UAAU,2FAA2F,CAAA;AAAA,EACrO;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,WAAW,YAAY,CAAA;AACpC,EAAA,OAAA,CAAQ,IAAA,CAAK,WAAW,YAAY,CAAA;AACpC,EAAA,IAAI,aAAA,CAAc,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,KAAK,SAA4B,CAAA,EAAG,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,IAAA,CAAK,SAA4B,CAAC,IAAI,CAAA,EAAG,OAAA,CAAQ,mBAAA,EAAqB,YAAA,EAAc,yCAAyC,CAAA;AAEvO,EAAA,KAAA,MAAW,CAAC,CAAA,EAAGQ,QAAO,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AAClD,IAAA,MAAM,KAAA,GAAQ,CAAA,QAAA,EAAWA,QAAAA,CAAQ,EAAE,CAAA,CAAA;AACnC,IAAA,IAAIA,QAAAA,CAAQ,SAAS,KAAA,EAAO,UAAA,CAAWA,SAAQ,UAAA,EAAY,CAAA,UAAA,EAAa,CAAC,CAAA,WAAA,CAAA,EAAe,KAAK,CAAA;AAAA,SACxF;AACH,MAAA,OAAA,CAAQA,QAAAA,CAAQ,WAAA,EAAa,CAAA,UAAA,EAAa,CAAC,gBAAgB,KAAK,CAAA;AAChE,MAAA,MAAM,WAAW,SAAA,CAAU,GAAA,CAAI,GAAA,CAAIA,QAAAA,CAAQ,WAAW,CAAC,CAAA;AACvD,MAAA,IAAI,QAAA,IAAY,CAAC,cAAA,CAAe,GAAA,CAAI,SAAS,EAAE,CAAA,EAAG,GAAA,CAAI,KAAK,GAAG,OAAA,CAAQ,yBAAA,EAA2B,CAAA,UAAA,EAAa,CAAC,gBAAgB,2DAA2D,CAAA;AAAA,IAC5L;AAAA,EACF;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,SAAS,KAAK,IAAA,CAAK,UAAA,CAAW,SAAQ,EAAG;AACtD,IAAA,MAAM,IAAA,GAAO,eAAe,CAAC,CAAA,CAAA;AAC7B,IAAA,MAAM,KAAA,GAAQ,CAAA,UAAA,EAAa,SAAA,CAAU,EAAE,CAAA,CAAA;AACvC,IAAA,OAAA,CAAQ,UAAU,UAAA,CAAW,SAAA,EAAW,CAAA,EAAG,IAAI,yBAAyB,KAAK,CAAA;AAC7E,IAAA,MAAM,MAAA,GAAS,UAAU,UAAA,CAAW,SAAA,CAAU,WAAW,SAAS,CAAA,GAAI,QAAQ,GAAA,CAAI,GAAA,CAAI,UAAU,UAAA,CAAW,SAAS,CAAC,CAAA,GAAI,QAAA,CAAS,IAAI,GAAA,CAAI,SAAA,CAAU,UAAA,CAAW,SAAS,CAAC,CAAA;AACzK,IAAA,IAAI,UAAU,UAAA,CAAW,YAAA,IAAgB,MAAA,EAAQ,MAAA,IAAU,UAAU,UAAA,CAAW,YAAA,CAAa,KAAA,KAAU,MAAA,CAAO,OAAO,KAAA,EAAO,OAAA,CAAQ,0BAA0B,CAAA,EAAG,IAAI,4BAA4B,kGAAkG,CAAA;AACnS,IAAA,MAAM,OAAA,GAAU,UAAU,UAAA,CAAW,OAAA;AACrC,IAAA,IAAI,OAAA,EAAS,IAAA,KAAS,YAAA,IAAgB,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,8BAAA,CAAA,EAAkC,iCAAiC,CAAA;AACpL,IAAA,IAAI,SAAA,CAAU,UAAU,WAAA,EAAa,IAAA,CAAK,UAAU,KAAA,EAAO,CAAA,EAAG,IAAI,CAAA,MAAA,CAAQ,CAAA;AAAA,SAAA,IACjE,SAAA,CAAU,UAAU,UAAA,EAAY,QAAA,CAAS,UAAU,KAAA,EAAO,CAAA,EAAG,IAAI,CAAA,MAAA,CAAA,EAAU,KAAK,CAAA;AAAA,SACpF;AAEH,MAAA,OAAA,CAAQ,eAAe,SAAA,CAAU,aAAa,CAAA,CAAA,EAAI,CAAA,EAAG,IAAI,CAAA,cAAA,CAAgB,CAAA;AACzE,MAAA,QAAA,CAAS,SAAA,CAAU,KAAA,EAAO,CAAA,EAAG,IAAI,UAAU,KAAK,CAAA;AAAA,IAClD;AAAA,EACF;AACA,EAAA,IAAI,KAAK,SAAA,CAAU,KAAA,KAAU,WAAW,IAAA,CAAK,SAAA,CAAU,UAAU,aAAA,EAAe;AAC9E,IAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,kBAAkB,CAAA;AAC7C,IAAA,eAAA,CAAgB,IAAA,CAAK,SAAA,CAAU,UAAA,EAAY,WAAA,EAAa,uBAAuB,CAAA;AAC/E,IAAA,IAAI,IAAA,CAAK,SAAA,CAAU,WAAA,EAAa,WAAA,CAAY,IAAA,CAAK,SAAA,CAAU,WAAA,EAAa,CAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAI,GAAG,wBAAwB,CAAA;AACzH,IAAA,SAAA,CAAU,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,IAAA,CAAK,SAAA,CAAU,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,EAAY,WAAA,EAAa,YAAY,CAAA;AAAA,EAChH;AACA,EAAA,IAAI,KAAK,QAAA,CAAS,KAAA,KAAU,WAAW,IAAA,CAAK,QAAA,CAAS,UAAU,aAAA,EAAe;AAC5E,IAAA,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,iBAAiB,CAAA;AAC/C,IAAA,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,UAAA,EAAY,sBAAsB,CAAA;AAC5E,IAAA,SAAA,CAAU,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW,IAAA,CAAK,QAAA,CAAS,OAAO,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,UAAA,EAAY,WAAW,CAAA;AAAA,EAC3G;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,WAAW,KAAK,IAAA,CAAK,YAAA,CAAa,SAAQ,EAAG;AAC1D,IAAA,MAAM,IAAA,GAAO,iBAAiB,CAAC,CAAA,CAAA;AAC/B,IAAA,MAAM,KAAA,GAAQ,CAAA,YAAA,EAAe,WAAA,CAAY,EAAE,CAAA,CAAA;AAC3C,IAAA,IAAI,WAAA,CAAY,UAAU,OAAA,CAAQ,WAAA,CAAY,UAAU,CAAA,EAAG,IAAI,aAAa,KAAK,CAAA;AACjF,IAAA,QAAA,CAAS,WAAA,CAAY,KAAA,EAAO,CAAA,EAAG,IAAI,UAAU,KAAK,CAAA;AAClD,IAAA,eAAA,CAAgB,WAAA,CAAY,YAAY,aAAA,EAAe,CAAA,EAAG,IAAI,CAAA,WAAA,CAAA,EAAe,KAAA,EAAO,YAAY,EAAE,CAAA;AAClG,IAAA,SAAA,CAAU,WAAA,CAAY,SAAA,EAAW,WAAA,CAAY,KAAA,EAAO,WAAA,CAAY,YAAY,aAAA,EAAe,IAAA,EAAM,KAAA,EAAO,WAAA,CAAY,EAAE,CAAA;AAAA,EACxH;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,OAAO,KAAK,IAAA,CAAK,UAAA,CAAW,SAAQ,EAAG;AACpD,IAAA,MAAM,IAAA,GAAO,eAAe,CAAC,CAAA,CAAA;AAC7B,IAAA,MAAM,KAAA,GAAQ,CAAA,QAAA,EAAW,OAAA,CAAQ,EAAE,CAAA,CAAA;AACnC,IAAA,OAAA,CAAQ,OAAA,CAAQ,WAAA,EAAa,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,CAAA;AAClD,IAAA,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,OAAA,CAAQ,aAAA,EAAe,MAAM,KAAK,CAAA;AAC5D,IAAA,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,CAAA,EAAG,IAAI,cAAc,KAAK,CAAA;AAExD,IAAA,UAAA,CAAW,OAAA,CAAQ,UAAA,EAAY,CAAA,EAAG,IAAI,CAAA,WAAA,CAAa,CAAA;AACnD,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGT,IAAG,KAAK,OAAA,CAAQ,UAAA,CAAW,SAAQ,EAAG;AACnD,MAAA,MAAMS,QAAAA,GAAU,QAAA,CAAS,GAAA,CAAI,GAAA,CAAIT,IAAG,CAAC,CAAA;AACrC,MAAA,IAAIS,QAAAA,KAAYA,QAAAA,CAAQ,IAAA,KAAS,SAAA,IAAaA,SAAQ,WAAA,KAAgB,KAAA,CAAA,EAAQ,OAAA,CAAQ,yBAAA,EAA2B,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,IAAI,6DAA6D,CAAA;AAAA,IAC3M;AAAA,EACF;AAGA,EAAA,MAAM,YAAY,IAAI,GAAA,CAAI,CAAC,GAAG,MAAM,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAT,IAAAA,KAAO,CAACA,IAAAA,EAAK,CAAC,CAAC,CAAC,CAAA;AAChE,EAAA,KAAA,MAAW,YAAA,IAAgB,KAAA,CAAM,MAAA,EAAO,aAAcA,IAAAA,IAAO,YAAA,EAAc,SAAA,CAAU,GAAA,CAAIA,OAAM,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,IAAK,KAAK,CAAC,CAAA;AAC3H,EAAA,MAAM,QAAQ,CAAC,GAAG,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,MAAM,CAAA,KAAM,MAAA,KAAW,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAACA,IAAG,MAAMA,IAAG,CAAA;AACpF,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,KAAA,MAAW,UAAA,IAAc,MAAM,GAAA,CAAI,KAAA,CAAM,CAAC,CAAE,CAAA,IAAK,EAAC,EAAG;AACnD,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,UAAU,CAAA,GAAK,CAAA;AAC5C,MAAA,SAAA,CAAU,GAAA,CAAI,YAAY,MAAM,CAAA;AAChC,MAAA,IAAI,MAAA,KAAW,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA;AAAA,IACzC;AAAA,EACF;AACA,EAAA,IAAI,MAAM,MAAA,KAAW,KAAA,CAAM,MAAM,OAAA,CAAQ,eAAA,EAAiB,eAAe,2DAA2D,CAAA;AAEpI,EAAA,MAAM,MAAA,GAA4B,EAAE,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA,EAAU,OAAA,EAAS,aAAA,EAAe,QAAA,EAAU,aAAA,EAAc;AACzJ,EAAA,MAAM,aAAA,GAAgB,CAAC,GAAG,OAAA,CAAQ,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAU,IAAAA,KAAM,CAAA,OAAA,EAAUA,IAAE,EAAE,CAAA,CAAE,MAAA;AAAA,IAClE,CAAC,GAAG,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAA,IAAAA,KAAM,CAAA,QAAA,EAAWA,IAAE,CAAA,CAAE,CAAA;AAAA,IAAG,CAAC,GAAG,OAAA,CAAQ,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAA,IAAAA,KAAM,CAAA,OAAA,EAAUA,IAAE,CAAA,CAAE,CAAA;AAAA,IAAG,CAAC,GAAG,MAAA,CAAO,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAA,IAAAA,KAAM,CAAA,MAAA,EAASA,IAAE,CAAA,CAAE;AAAA,GAC5I;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,GAAS,EAAE,OAAA,EAAS,OAAO,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAc,GAAI,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,QAAQ,aAAA,EAAc;AAClI;ACrNA,IAAMP,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,kCAAkC,CAAA;AAC7E,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAM,QAAA,GAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,6CAA6C,CAAA;AAC/E,IAAM,QAAA,GAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,sFAAsF,CAAA;AACjH,IAAM,kBAAA,GAAqBA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC7DA,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,aAAa,GAAG,CAAA;AAAA,EACjDA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,aAAA,EAAeM,GAAAA,EAAI;AACtE,CAAC;AACD,IAAM,MAAA,GAAS;AAAA,EACb,EAAA,EAAAA,GAAAA;AAAA,EAAI,UAAA,EAAY,aAAA;AAAA,EAAe,KAAA,EAAOP,KAAAA;AAAA,EAAM,OAAA,EAAS,kBAAA;AAAA,EACrD,UAAA,EAAYC,EAAE,KAAA,CAAM,QAAQ,EAAE,GAAA,CAAI,CAAC,EAAE,QAAA;AACvC,CAAA;AACO,IAAM,qBAAA,GAAwBA,EAAE,YAAA,CAAa;AAAA,EAClD,GAAG,MAAA;AAAA,EAAQ,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,kBAAkB,CAAA;AAAA,EAAG,IAAA,EAAAD,KAAAA;AAAA,EAChD,aAAA,EAAeA,MAAK,QAAA,EAAS;AAAA,EAAG,UAAA,EAAY,0BAAA,CAA2B,OAAA,CAAQ,CAAC,EAAE,KAAA,CAAM;AAC1F,CAAC;AACD,IAAM,UAAA,GAAa,EAAE,GAAG,MAAA,EAAQ,MAAMC,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA,EAAG,WAAWA,CAAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,EAAG,WAAWD,KAAAA,EAAK;AACtG,IAAM,qBAAA,GAAwBC,CAAAA,CAAE,YAAA,CAAa,EAAE,GAAG,UAAA,EAAY,MAAA,EAAQA,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/F,IAAM,mBAAA,GAAsBA,EAAE,YAAA,CAAa;AAAA,EAChD,GAAG,UAAA;AAAA,EAAY,MAAA,EAAQA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC3C,OAAA,EAASA,EAAE,IAAA,CAAK,CAAC,YAAY,WAAA,EAAa,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,EACnE,WAAA,EAAaD,KAAAA;AAAA,EAAM,WAAA,EAAa,aAAA;AAAA,EAChC,SAAA,EAAWC,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,8CAA8C,CAAA;AAAA,EAAG,aAAA,EAAeD,KAAAA;AAAA,EAC5F,UAAA,EAAYC,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AACvC,CAAC;AACM,IAAM,wBAAwBA,CAAAA,CAAE,KAAA,CAAM,CAAC,qBAAA,EAAuB,qBAAA,EAAuB,mBAAmB,CAAC;AACzG,IAAM,oCAAA,GAAuC;AAC7C,IAAM,6BAAA,GAAgC;AAEtC,IAAM,8BAAA,GAAiCA,EAAE,YAAA,CAAa;AAAA,EAC3D,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAAG,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAAG,EAAA,EAAAM,GAAAA;AAAA,EACrE,WAAA,EAAa,6BAAA;AAAA,EAA+B,MAAA,EAAQN,CAAAA,CAAE,KAAA,CAAM,qBAAqB,CAAA;AAAA,EACjF,UAAA,EAAY,8BAA8B,KAAA,CAAM;AAClD,CAAC;AAOM,SAAS,kCAAA,GAA8D;AAC5E,EAAA,OAAO,EAAE,GAAGA,CAAAA,CAAE,YAAA,CAAa,8BAAA,EAAgC,EAAE,MAAA,EAAQ,eAAA,EAAiB,CAAA,EAAG,GAAA,EAAK,oCAAA,EAAqC;AACrI;;;ACzBA,IAAM,KAAA,GAAQ,CAAC,KAAA,MAAmB,EAAE,MAAM,SAAA,EAAoB,KAAA,EAAO,WAAW,KAAA,EAAe,CAAA;AAC/F,IAAMI,QAAAA,GAAU,CAAC,IAAA,KAAiC,IAAA,CAAK,IAAI,CAAA,CAAA,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,CAAA,CAAE,QAAQ,IAAA,EAAM,IAAI,EAAE,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAG1H,SAAS,8BAA8B,KAAA,EAAyC;AACrF,EAAA,MAAM,WAA+C,EAAE,IAAA,EAAM,iBAAiB,QAAA,EAAU,oCAAA,EAAsC,gBAAgB,6BAAA,EAA8B;AAC5K,EAAA,MAAM,MAAA,GAAS,8BAAA,CAA+B,SAAA,CAAU,KAAK,CAAA;AAC7D,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO;AAAA,IAC1B,OAAA,EAAS,KAAA;AAAA,IAAO,QAAA;AAAA,IAAU,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAA,EAAU,UAAU,aAAA,EAAe,OAAA,EAAS,aAAA,EAAe,QAAA,EAAU,aAAA,EAAc;AAAA,IAAG,eAAe,EAAC;AAAA,IACtJ,MAAA,EAAQ,OAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,KAAA,MAAU,EAAE,MAAM,cAAA,EAAgB,KAAA,EAAO,cAAc,QAAA,EAAU,OAAA,EAAS,SAASA,QAAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,EAAG,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ,CAAE;AAAA,GACnK;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,IAAA,CAAK,WAAW,CAAA;AACvE,EAAA,MAAM,MAAA,GAA8B,iBAAA,CAAkB,MAAA,CAAO,GAAA,CAAI,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,OAAA,EAAS,CAAA,YAAA,EAAe,KAAA,CAAM,OAAO,IAAG,CAAE,CAAA;AACjI,EAAA,MAAM,UAAU,CAAC,IAAA,EAA6B,IAAA,EAAc,OAAA,KAAoB,OAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,YAAY,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AAClK,EAAA,MAAM,MAAA,uBAAa,GAAA,EAA6B;AAChD,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAyB;AAC3C,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAA,CAAK,YAAY,OAAA,CAAQ,GAAA,CAAI,CAAA,IAAA,KAAQ,CAAC,UAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAA;AACzF,EAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,IAAA,CAAK,YAAY,QAAA,CAAS,GAAA,CAAI,CAAA,IAAA,KAAQ,CAAC,WAAW,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAA;AAC5F,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAA,CAAK,YAAY,OAAA,CAAQ,GAAA,CAAI,CAAA,IAAA,KAAQ,CAAC,UAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAA;AACzF,EAAA,MAAM,YAAA,GAAe,IAAI,GAAA,CAAI,IAAA,CAAK,WAAA,CAAY,YAAA,CAAa,GAAA,CAAI,CAAA,IAAA,KAAQ,CAAA,YAAA,EAAe,IAAA,CAAK,EAAE,CAAA,CAAE,CAAC,CAAA;AAChG,EAAA,MAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,IACxB,GAAG,QAAQ,IAAA,EAAK;AAAA,IAAG,GAAG,SAAS,IAAA,EAAK;AAAA,IAAG,GAAG,YAAA;AAAA,IAC1C,GAAG,KAAK,WAAA,CAAY,UAAA,CAAW,IAAI,CAAA,IAAA,KAAQ,CAAA,UAAA,EAAa,IAAA,CAAK,EAAE,CAAA,CAAE;AAAA,GAClE,CAAA;AACD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAMR,IAAAA,GAAM,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC7B,IAAA,IAAI,MAAA,CAAO,IAAIA,IAAG,CAAA,UAAW,eAAA,EAAiB,CAAA,QAAA,EAAW,CAAC,CAAA,GAAA,CAAA,EAAO,yDAAyD,CAAA;AAAA,SACrH;AAAE,MAAA,MAAA,CAAO,GAAA,CAAIA,MAAK,KAAK,CAAA;AAAG,MAAA,KAAA,CAAM,GAAA,CAAIA,IAAAA,kBAAK,IAAI,GAAA,EAAK,CAAA;AAAG,MAAA,SAAA,CAAU,IAAIA,IAAG,CAAA;AAAA,IAAG;AAAA,EAChF;AACA,EAAA,SAAS,OAAA,CAAQ,OAAe,IAAA,EAAoB;AAClD,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA,EAAG,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,KAAA,MAAW,KAAA,IAAS,OAAO,OAAA,CAAQ,KAAA,CAAM,MAAM,KAAA,CAAM,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,EAC7E;AACA,EAAA,SAAS,OAAA,CAAQA,IAAAA,EAAa,IAAA,EAAc,KAAA,EAAsB;AAChE,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,UAAW,sBAAA,EAAwB,IAAA,EAAM,CAAA,4BAAA,EAA+BA,IAAG,CAAA,CAAE,CAAA;AAAA,SAAA,IAC1F,KAAA,IAAS,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA,QAAS,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAIA,IAAG,CAAA;AAAA,EAC9D;AACA,EAAA,SAASE,KAAAA,CAAKS,OAAAA,EAAkB,IAAA,EAAc,KAAA,EAAqB;AACjE,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGX,IAAG,CAAA,IAAKW,OAAAA,CAAO,SAAQ,EAAG;AACvC,MAAA,IAAI,IAAA,CAAK,GAAA,CAAIX,IAAG,CAAA,EAAG,OAAA,CAAQ,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,wBAAwB,CAAA;AACpF,MAAA,IAAA,CAAK,IAAIA,IAAG,CAAA;AACZ,MAAA,OAAA,CAAQA,MAAK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,KAAK,CAAA;AAAA,IACpC;AAAA,EACF;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AACzB,IAAA,MAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC/B,IAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,CAAA,WAAA,CAAa,CAAA;AAC9C,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,aAAA,EAAe,OAAA,CAAQ,CAAA,YAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,CAAA,EAAI,CAAA,EAAG,IAAI,CAAA,sBAAA,CAAwB,CAAA;AAC/H,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAAE,MAAK,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,eAAe,KAAK,CAAA;AAClD,MAAA,KAAA,MAAW,CAAC,CAAA,EAAGF,IAAG,KAAK,KAAA,CAAM,UAAA,CAAW,SAAQ,EAAG;AACjD,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA;AAC/B,QAAA,IAAI,CAAC,QAAA,EAAU;AACf,QAAA,UAAA,CAAW,IAAIA,IAAG,CAAA;AAClB,QAAA,IAAI,SAAS,IAAA,KAAS,KAAA,CAAM,IAAA,IAAQ,QAAA,CAAS,UAAU,KAAA,CAAM,KAAA,IAAS,IAAA,CAAK,SAAA,CAAU,SAAS,OAAO,CAAA,KAAM,KAAK,SAAA,CAAU,KAAA,CAAM,OAAO,CAAA,EAAG;AACxI,UAAA,OAAA,CAAQ,4BAA4B,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,IAAI,iGAAiG,CAAA;AAAA,QAClK;AACA,QAAA,IAAI,QAAA,CAAS,IAAA,KAAS,YAAA,IAAgB,QAAA,CAAS,WAAW,UAAA,IAAc,KAAA,CAAM,IAAA,KAAS,YAAA,KACjF,MAAM,MAAA,KAAW,UAAA,IAAc,QAAA,CAAS,WAAA,KAAgB,MAAM,WAAA,CAAA,EAAc;AAChF,UAAA,OAAA,CAAQ,8BAA8B,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,IAAI,kGAAkG,CAAA;AAAA,QACrK;AACA,QAAA,IAAI,aAAA,CAAc,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA,EAAG,MAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,CAAA,EAAG;AAC1E,UAAA,OAAA,CAAQ,sBAAA,EAAwB,CAAA,EAAG,IAAI,CAAA,WAAA,CAAA,EAAe,mEAAmE,CAAA;AAAA,QAC3H;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,kBAAA,EAAoB;AACrC,MAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,CAAW,SAAA,EAAW,CAAA,EAAG,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAClE,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,IAAK,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA;AACjG,MAAA,IAAI,MAAA,EAAQ,MAAA,IAAU,KAAA,CAAM,UAAA,CAAW,YAAA,IAAgB,MAAA,CAAO,MAAA,CAAO,KAAA,KAAU,KAAA,CAAM,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO;AAClH,QAAA,OAAA,CAAQ,wBAAA,EAA0B,CAAA,EAAG,IAAI,CAAA,wBAAA,CAAA,EAA4B,mFAAmF,CAAA;AAAA,MAC1J;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,OAAA;AACjC,MAAA,IAAI,OAAA,EAAS,IAAA,KAAS,YAAA,IAAgB,OAAA,CAAQ,UAAA,GAAa,OAAA,CAAQ,YAAA,EAAc,OAAA,CAAQ,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,8BAAA,CAAA,EAAkC,iCAAiC,CAAA;AAAA,IACtL,CAAA,MAAO;AACL,MAAAE,MAAK,KAAA,CAAM,SAAA,EAAW,CAAA,EAAG,IAAI,cAAc,KAAK,CAAA;AAChD,MAAA,IAAI,KAAA,CAAM,WAAW,UAAA,EAAY;AAC/B,QAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,CAAA;AAChD,QAAA,IAAI,cAAc,KAAA,CAAM,KAAA,CAAM,WAAW,CAAA,EAAG,MAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,GAAG,OAAA,CAAQ,wBAAA,EAA0B,CAAA,EAAG,IAAI,gBAAgB,4DAA4D,CAAA;AAC/L,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AAC1C,QAAA,IAAI,CAAC,MAAA,EAAQ,OAAA,CAAQ,wBAAwB,CAAA,EAAG,IAAI,cAAc,iEAAiE,CAAA;AAAA,aAAA,IAC1H,MAAA,CAAO,YAAY,KAAA,CAAM,aAAA,UAAuB,yBAAA,EAA2B,CAAA,EAAG,IAAI,CAAA,cAAA,CAAA,EAAkB,mEAAmE,CAAA;AAAA,MAClL;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,IAAI,GAAA,CAAI,CAAC,GAAG,MAAM,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAAF,IAAAA,KAAO,CAACA,IAAAA,EAAK,CAAC,CAAC,CAAC,CAAA;AAChE,EAAA,KAAA,MAAW,KAAA,IAAS,KAAA,CAAM,MAAA,EAAO,aAAcA,IAAAA,IAAO,KAAA,EAAO,SAAA,CAAU,GAAA,CAAIA,IAAAA,EAAK,SAAA,CAAU,GAAA,CAAIA,IAAG,IAAK,CAAC,CAAA;AACvG,EAAA,MAAM,QAAQ,CAAC,GAAG,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,MAAM,CAAA,KAAM,MAAA,KAAW,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAACA,IAAG,MAAMA,IAAG,CAAA;AACpF,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK,KAAA,MAAWA,IAAAA,IAAO,KAAA,CAAM,IAAI,KAAA,CAAM,CAAC,CAAE,CAAA,IAAK,EAAC,EAAG;AACnF,IAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,GAAK,CAAA;AACrC,IAAA,SAAA,CAAU,GAAA,CAAIA,MAAK,MAAM,CAAA;AACzB,IAAA,IAAI,MAAA,KAAW,CAAA,EAAG,KAAA,CAAM,IAAA,CAAKA,IAAG,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,MAAM,MAAA,KAAW,KAAA,CAAM,MAAM,OAAA,CAAQ,wBAAA,EAA0B,WAAW,6DAA6D,CAAA;AAC3I,EAAA,MAAM,UAAA,GAAqC;AAAA,IACzC,QAAA;AAAA,IAAU,MAAA;AAAA,IAAQ,eAAe,iBAAA,CAAkB,aAAA;AAAA,IACnD,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA,EAAU,OAAA,EAAS,aAAA,EAAe,QAAA,EAAU,aAAA;AAAc,GACjI;AACA,EAAA,OAAO,OAAO,MAAA,GAAS,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,OAAM,GAAI;AAAA,IACzD,GAAG,UAAA;AAAA,IAAY,OAAA,EAAS,IAAA;AAAA,IAAM,IAAA;AAAA,IAC9B,gBAAA,EAAkB,CAAC,GAAG,MAAA,CAAO,MAAM,CAAA,CAAE,MAAA,CAAO,CAAAA,IAAAA,KAAO,CAAC,UAAA,CAAW,GAAA,CAAIA,IAAG,CAAC;AAAA,GACzE;AACF;;;AC/HO,SAAS,kBAAA,CAAmB,MAAc,KAAA,EAAuC;AACtF,EAAA,IAAI,CAAC,aAAA,CAAc,SAAA,CAAU,IAAI,CAAA,CAAE,OAAA,IAAW,CAAC,aAAA,CAAc,SAAA,CAAU,KAAK,CAAA,CAAE,OAAA,EAAS,OAAO,MAAA;AAC9F,EAAA,MAAM,SAAS,aAAA,CAAc,EAAC,IAAA,EAAK,SAAA,EAAU,OAAM,IAAoB,CAAA,EAAG,EAAC,IAAA,EAAK,SAAA,EAAU,OAAM,KAAqB,CAAC,CAAA;AACtH,EAAA,OAAO,WAAW,EAAA,IAAM,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,IAAI,MAAA,GAAS,MAAA;AAClE;ACJO,IAAM,gBAAA,GAAmBI,EAC7B,IAAA,CAAK;AAAA,EACJ,MAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,yBAAA;AAAA,EACA,sBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,2EAA2E,CAAA;ACvBhF,IAAM,uBAAA,GAA0BA,CAAAA,CACpC,IAAA,CAAK,CAAC,YAAY,UAAA,EAAY,UAAA,EAAY,YAAA,EAAc,cAAA,EAAgB,UAAA,EAAY,SAAS,CAAC,CAAA,CAC9F,SAAS,wFAAmF,CAAA;;;ACAxF,IAAM,qBAAA,GAAwBA,EAClC,MAAA,CAAO;AAAA,EACN,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,2CAA2C,CAAA;AAAA,EACzE,IAAA,EAAM,gBAAA;AAAA,EACN,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAChF,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,EACvE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAClG,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC7F,KAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EAClE,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sFAAsF,CAAA;AAAA,EACjI,WAAWA,CAAAA,CACR,MAAA,GACA,QAAA,EAAS,CACT,SAAS,0EAA0E,CAAA;AAAA,EACtF,WAAA,EAAa,uBAAA;AAAA,EACb,iBAAiBA,CAAAA,CACd,OAAA,GACA,QAAA,EAAS,CACT,SAAS,iGAAiG,CAAA;AAAA,EAC7G,qBAAqBA,CAAAA,CAClB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,qEAAqE,CAAA;AAAA,EACjF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC;AAC7E,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,mBAAmB,CAAA,CAC9B,SAAS,sEAAsE,CAAA;AClB3E,IAAM,qBAAA,GAAwBA,CAAAA,CAClC,IAAA,CAAK,CAAC,WAAA,EAAa,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,YAAY,CAAC,CAAA,CACvE,SAAS,mCAAmC,CAAA;AAId,qBAAA,CAAsB;;;ACZhD,IAAM,iBAAA,GAAoBA,EAC9B,IAAA,CAAK;AAAA,EACJ,QAAA;AAAA,EAAU,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,QAAA;AAAA,EAAU,MAAA;AAAA,EAAQ,KAAA;AAAA,EAC3C,UAAA;AAAA,EAAY,OAAA;AAAA,EAAS,SAAA;AAAA,EACrB,UAAA;AAAA,EAAY,OAAA;AAAA,EAAS,WAAA;AAAA,EAAa,SAAA;AAAA,EAClC,SAAA;AAAA,EAAW,WAAA;AAAA,EAAa,QAAA;AAAA,EAAU,MAAA;AAAA,EAClC,OAAA;AAAA,EAAS,MAAA;AAAA,EACT,WAAA;AAAA,EAAa,UAAA;AAAA,EAAY,YAAA;AAAA,EACzB,OAAA;AAAA,EAAS;AACX,CAAC,CAAA,CACA,SAAS,wCAAwC,CAAA;AAITA,EACxC,MAAA,CAAO;AAAA,EACN,KAAA,EAAO,kBAAkB,QAAA,EAAS;AAAA,EAClC,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mEAAmE,CAAA;AAAA,EACxG,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACrF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EAChF,eAAA,EAAiBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2CAA2C,CAAA;AAAA,EACpG,YAAYA,CAAAA,CACT,MAAA,GACA,QAAA,EAAS,CACT,SAAS,kFAAkF,CAAA;AAAA,EAC9F,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wEAAwE,CAAA;AAAA,EAC9G,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC7F,gBAAgBA,CAAAA,CACb,MAAA,GACA,QAAA,EAAS,CACT,SAAS,2EAA2E,CAAA;AAAA,EACvF,gBAAgBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAChF,WAAWA,CAAAA,CACR,MAAA,GACA,QAAA,EAAS,CACT,SAAS,0FAA0F,CAAA;AAAA,EACtG,kBAAA,EAAoBA,CAAAA,CACjB,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,iFAAiF;AAC/F,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,yBAAyB,CAAA,CACpC,SAAS,iDAAiD;AAItD,IAAM,kBAAA,GAAqBA,EAC/B,IAAA,CAAK;AAAA,EACJ,OAAA;AAAA,EAAS,sBAAA;AAAA,EAAwB,cAAA;AAAA,EACjC,kBAAA;AAAA,EAAoB,QAAA;AAAA,EAAU,UAAA;AAAA,EAC9B,OAAA;AAAA,EAAS,OAAA;AAAA,EAAS,WAAA;AAAA,EAAa,QAAA;AAAA,EAC/B,mBAAA;AAAA,EAAqB,kBAAA;AAAA,EACrB,iBAAA;AAAA,EAAmB,kBAAA;AAAA,EACnB,UAAA;AAAA,EAAY,QAAA;AAAA,EACZ;AACF,CAAC,CAAA,CACA,SAAS,0DAA0D,CAAA;AAIxCA,EAC3B,MAAA,CAAO;AAAA,EACN,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4DAA4D,CAAA;AAAA,EAClG,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACnF,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2DAA2D,CAAA;AAAA,EACpG,gBAAgBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC7F,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uDAAkD,CAAA;AAAA,EAC1F,YAAYA,CAAAA,CACT,MAAA,GACA,QAAA,EAAS,CACT,SAAS,2GAA2G,CAAA;AAAA,EACvH,SAAA,EAAWA,EAAE,KAAA,CAAM,kBAAkB,EAAE,QAAA,EAAS,CAAE,SAAS,6DAA6D,CAAA;AAAA,EACxH,oBAAA,EAAsBA,CAAAA,CACnB,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,4DAA4D,CAAA;AAAA,EACxE,WAAWA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACvF,mBAAmBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA,EACrG,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oEAAoE;AACjH,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,YAAY,CAAA,CACvB,SAAS,+DAA0D;AAInCA,EAChC,MAAA,CAAO;AAAA,EACN,mBAAmBA,CAAAA,CAChB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,4EAA4E,CAAA;AAAA,EACxF,mBAAA,EAAqBA,CAAAA,CAClB,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,0DAA0D,CAAA;AAAA,EACtE,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACpG,mBAAmBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA,EACpG,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uEAAuE,CAAA;AAAA,EAClH,UAAA,EAAY,sBAAsB,QAAA,EAAS;AAAA,EAC3C,aAAA,EAAeA,CAAAA,CACZ,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,kEAAkE,CAAA;AAAA,EAC9E,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACnF,iBAAiBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C;AAChG,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,iBAAiB,CAAA,CAC5B,SAAS,wDAAwD;AAIrCA,EAC5B,MAAA,CAAO;AAAA,EACN,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,EAClE,UAAA,EAAYA,CAAAA,CACT,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,sFAAsF,CAAA;AAAA,EAClG,mBAAmBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACnG,mBAAmBA,CAAAA,CAChB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,8DAA8D,CAAA;AAAA,EAC1E,qBAAqBA,CAAAA,CAClB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,sEAAsE,CAAA;AAAA,EAClF,uBAAuBA,CAAAA,CACpB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,+EAA+E,CAAA;AAAA,EAC3F,YAAA,EAAcA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iDAAiD;AACzG,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,aAAa,CAAA,CACxB,SAAS,qDAAqD;AAI7BA,EACjC,MAAA,CAAO;AAAA,EACN,kBAAkBA,CAAAA,CACf,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iEAAiE,CAAA;AAAA,EAC7E,gBAAgBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAClG,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACvF,cAAcA,CAAAA,CACX,MAAA,GACA,QAAA,EAAS,CACT,SAAS,8EAA8E,CAAA;AAAA,EAC1F,kBAAkBA,CAAAA,CACf,MAAA,GACA,QAAA,EAAS,CACT,SAAS,0EAA0E,CAAA;AAAA,EACtF,gBAAgBA,CAAAA,CACb,OAAA,GACA,QAAA,EAAS,CACT,SAAS,mEAAmE;AACjF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,kBAAkB,CAAA,CAC7B,SAAS,0DAA0D;AAIrCA,EAC9B,MAAA,CAAO;AAAA,EACN,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAChG,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+DAA+D,CAAA;AAAA,EAC1G,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACpG,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACxE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAClF,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kDAA6C,CAAA;AAAA,EACtF,qBAAqBA,CAAAA,CAClB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+FAA+F,CAAA;AAAA,EAC3G,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAC9F,eAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD;AACnG,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,eAAe,CAAA,CAC1B,SAAS,kEAAkE;AAIvE,IAAM,kBAAA,GAAqBA,EAC/B,IAAA,CAAK;AAAA,EACJ,cAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,iEAAiE,CAAA;AAItE,IAAM,kBAAA,GAAqBA,EAC/B,MAAA,CAAO;AAAA,EACN,IAAA,EAAM,kBAAA;AAAA,EACN,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA,EAChF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C;AACnF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,gBAAgB,CAAA,CAC3B,SAAS,gDAAgD,CAAA;AAI7BA,EAC5B,MAAA,CAAO;AAAA;AAAA,EAEN,KAAA,EAAOA,EACJ,KAAA,CAAM,kBAAkB,EACxB,QAAA,EAAS,CACT,SAAS,gFAA2E,CAAA;AAAA;AAAA,EAEvF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gEAAgE,CAAA;AAAA;AAAA,EAErG,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mEAAmE,CAAA;AAAA;AAAA,EAExG,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC,CAAA;AAAA;AAAA,EAEhF,qBAAA,EAAuBA,CAAAA,CACpB,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,2FAAiF,CAAA;AAAA;AAAA,EAE7F,eAAA,EAAiBA,CAAAA,CACd,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,4FAAkF,CAAA;AAAA;AAAA,EAE9F,eAAA,EAAiBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAiC;AAC5F,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,aAAa,CAAA,CACxB,SAAS,wEAAwE;AAItDA,EAC3B,MAAA,CAAO;AAAA,EACN,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0DAA0D,CAAA;AAAA,EACvG,qBAAqBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sDAAsD,CAAA;AAAA,EAC1G,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACrF,eAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kFAAkF,CAAA;AAAA,EAChI,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAC7F,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8DAA8D,CAAA;AAAA,EACpG,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yEAAoE,CAAA;AAAA,EAC5G,cAAcA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,iEAAiE,CAAA;AAAA,EAC/G,sBAAsBA,CAAAA,CACnB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,6DAA6D,CAAA;AAAA,EACzE,oBAAoBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mDAAmD;AACzG,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,YAAY,CAAA,CACvB,SAAS,0DAA0D;AAItCA,EAC7B,MAAA,CAAO;AAAA,EACN,aAAA,EAAe,sBAAsB,QAAA,EAAS;AAAA,EAC9C,OAAA,EAASA,CAAAA,CAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS;AAAA,EACjD,wBAAwBA,CAAAA,CACrB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,4EAA4E,CAAA;AAAA,EACxF,sBAAsBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uDAAuD,CAAA;AAAA,EAC5G,eAAeA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACtG,iBAAiBA,CAAAA,CACd,MAAA,GACA,QAAA,EAAS,CACT,SAAS,gEAAgE;AAC9E,CAAC,EACA,IAAA,CAAK,EAAE,EAAA,EAAI,YAAA,EAAc,CAAA,CACzB,QAAA;AAAA,EACC;AACF;AC5RK,IAAM,yBAAA,GAA4BA,CAAAA,CACtC,IAAA,CAAK,CAAC,OAAA,EAAS,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,aAAA,EAAe,SAAS,CAAC,CAAA,CACzE,SAAS,sCAAsC,CAAA;AAI3C,IAAM,cAAA,GAAiBA,EAC3B,IAAA,CAAK;AAAA,EACJ,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA,4BAAA;AAAA,EACA,wBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,uBAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,oGAAoG,CAAA;AAIzG,IAAM,iBAAA,GAAoBA,EAC9B,IAAA,CAAK;AAAA,EACJ,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,+CAA+C,CAAA;AAIpD,IAAM,mBAAA,GAAsBA,EAChC,IAAA,CAAK;AAAA,EACJ,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,mBAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,qFAAqF,CAAA;AAI1F,IAAM,yBAAA,GAA4BA,CAAAA,CACtC,IAAA,CAAK,CAAC,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,MAAM,CAAC,CAAA,CACzD,QAAA,CAAS,4EAA4E,CAAA;AAIjF,IAAM,mBAAA,GAAsBA,EAChC,MAAA,CAAO;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4DAA4D,CAAA;AAAA,EACrG,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACxF,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qFAAgF;AAC1H,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,iBAAiB,CAAA,CAC5B,SAAS,mEAAmE,CAAA;AAI7CA,EAC/B,MAAA,CAAO;AAAA,EACN,EAAA,EAAIA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAC5E,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gEAAgE,CAAA;AAAA,EACjG,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,yCAAyC,CAAA;AAAA,EAC7E,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC1F,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACnF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAC5D,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAC5F,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAAA,EAC1F,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA,CAAS,uCAAuC,CAAA;AAAA,EACtF,mBAAA,EAAqB,0BAA0B,QAAA,EAAS;AAAA,EACxD,2BAA2BA,CAAAA,CACxB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,2DAA2D,CAAA;AAAA,EACvE,wBAAwBA,CAAAA,CACrB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,0EAA0E,CAAA;AAAA,EACtF,iBAAiBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8DAA8D,CAAA;AAAA,EAC9G,eAAA,EAAiBA,CAAAA,CACd,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,SAAS,CAAC,CAAA,CAC3C,QAAA,EAAS,CACT,SAAS,uCAAuC,CAAA;AAAA,EACnD,QAAA,EAAU,cAAA;AAAA,EACV,kBAAA,EAAoBA,EACjB,KAAA,CAAM,cAAc,EACpB,QAAA,EAAS,CACT,SAAS,6DAA6D,CAAA;AAAA,EACzE,OAAA,EAAS,kBAAkB,QAAA,EAAS;AAAA,EACpC,aAAA,EAAe,oBAAoB,QAAA,EAAS;AAAA,EAC5C,mBAAA,EAAqB,0BAA0B,QAAA,EAAS;AAAA,EACxD,cAAA,EAAgBA,EACb,KAAA,CAAM,mBAAmB,EACzB,QAAA,EAAS,CACT,SAAS,0EAA0E,CAAA;AAAA,EACtF,mBAAmBA,CAAAA,CAChB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+DAA+D,CAAA;AAAA,EAC3E,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0DAA0D,CAAA;AAAA,EAC3G,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EAClG,kBAAkBA,CAAAA,CACf,MAAA,GACA,QAAA,EAAS,CACT,SAAS,mEAAmE,CAAA;AAAA,EAC/E,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAChG,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8DAA8D,CAAA;AAAA,EACzG,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAChG,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,EAC5F,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAClG,wBAAwBA,CAAAA,CACrB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,yEAAyE;AACvF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,gBAAgB,CAAA,CAC3B,SAAS,yGAAoG;AC3LzG,IAAM,qBAAA,GAAwBA,EAClC,IAAA,CAAK;AAAA,EACJ,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,mCAAmC,CAAA;AAIxC,IAAM,gBAAA,GAAmBA,EAC7B,IAAA,CAAK;AAAA,EACJ,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,wBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,WAAA;AAAA,EACA,oBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,0CAA0C,CAAA;AAI/C,IAAM,mBAAA,GAAsBA,EAChC,MAAA,CAAO;AAAA,EACN,EAAA,EAAIA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,kEAAkE,CAAA;AAAA,EACjG,UAAA,EAAY,gBAAA;AAAA,EACZ,eAAA,EAAiB,qBAAA;AAAA,EACjB,SAAA,EAAWA,CAAAA,CACR,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,IACC;AAAA,GACF;AAAA,EACF,UAAUA,CAAAA,CACP,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iEAAiE,CAAA;AAAA,EAC7E,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC/E,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EAC1F,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EACxF,kBAAkBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,6DAA6D,CAAA;AAAA,EAC/G,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,+DAA+D,CAAA;AAAA,EAC3G,QAAA,EAAUA,CAAAA,CACP,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,OAAA,EAAS,CAAA,CAC9B,QAAA,EAAS,CACT,SAAS,6DAA6D,CAAA;AAAA,EACzE,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC;AAC9E,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,iBAAiB,CAAA,CAC5B,SAAS,6CAA6C,CAAA;AAIlD,IAAM,wBAAA,GAA2BA,EACrC,MAAA,CAAO;AAAA,EACN,OAAA,EAASA,CAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAA;AAAA,EACpC,wBAAwBA,CAAAA,CACrB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,2DAA2D,CAAA;AAAA,EACvE,mBAAA,EAAqBA,CAAAA,CAClB,IAAA,CAAK,CAAC,aAAa,UAAA,EAAY,WAAA,EAAa,YAAA,EAAc,SAAS,CAAC,CAAA,CACpE,QAAA,EAAS,CACT,SAAS,+CAA+C,CAAA;AAAA,EAC3D,SAAA,EAAWA,CAAAA,CACR,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,qFAAqF;AACnG,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,sBAAsB,CAAA,CACjC,SAAS,0EAA0E,CAAA;AC7H/E,IAAM,eAAA,GAAkBA,EAC5B,IAAA,CAAK;AAAA,EACJ,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,uDAAuD,CAAA;;;ACUnE,IAAMD,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,MAAM,IAAI,CAAA;AACzC,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAMQ,UAAAA,GAAYR,CAAAA,CACf,MAAA,EAAO,CACP,MAAM,wDAAwD,CAAA;AAC1D,IAAM,6BAAA,GACX;AACK,IAAM,yBAAA,GAA4BA,EAAE,YAAA,CAAa;AAAA,EACtD,UAAA,EAAYM,GAAAA,CAAG,QAAA,CAAS,6CAA6C,CAAA;AAAA,EACrE,QAAA,EAAUP,KAAAA,CAAK,QAAA,CAAS,mCAAmC,CAAA;AAAA,EAC3D,MAAA,EAAQC,EACL,MAAA,EAAO,CACP,MAAM,yBAAyB,CAAA,CAC/B,SAAS,2CAA2C;AACzD,CAAC;AACM,IAAM,4BAAA,GAA+B,0BAA0B,MAAA,CAAO;AAAA,EAC3E,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,kCAAkC;AACxD,CAAC;AACD,IAAMS,cAAa,sBAAA,CAAuB,MAAA,CAAO,EAAE,SAAA,EAAAD,YAAW,CAAA;AAC9D,SAAS,OAA4B,MAAA,EAAW;AAC9C,EAAA,OAAOR,CAAAA,CACJ,KAAA;AAAA,IACCA,EAAE,YAAA,CAAa;AAAA,MACb,IAAIM,GAAAA,CAAG,QAAA;AAAA,QACL;AAAA,OACF;AAAA,MACA,OAAA,EAASN,EAAE,KAAA,CAAM;AAAA,QACfA,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,UACxB,KAAA,EAAO,MAAA;AAAA,UACP,UAAA,EAAAS,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,UAC9B,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAWD,KAAAA;AAAA,UACX,UAAA,EAAAU,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,UAC1B,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,cAAA,EAAgB,eAAA,EAAiB,aAAa,CAAC;AAAA,SAChE,CAAA;AAAA,QACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM,CAAA;AAAA,QAC7DC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,UAC3B,eAAA,EAAiBD,KAAAA;AAAA,UACjB,UAAA,EAAAU;AAAA,SACD;AAAA,OACF;AAAA,KACF;AAAA,GACH,CACC,GAAA,CAAI,CAAC,CAAA,CACL,QAAA,EAAS;AACd;AACA,IAAM,UAAUT,CAAAA,CAAE,KAAA,CAAMD,KAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AACnC,IAAM,SAAA,GAAYC,EAAE,YAAA,CAAa;AAAA,EAC/B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,+CAA+C,CAAA;AAAA,EACvE,QAAA,EAAUD,MAAK,QAAA,EAAS;AAAA,EACxB,WAAWC,CAAAA,CACR,MAAA,GACA,KAAA,CAAM,kCAAkC,EACxC,QAAA,EAAS;AAAA,EACZ,cAAA,EAAgBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAC9B,CAAC,CAAA;AACD,IAAM,MAAA,GAASA,EAAE,KAAA,CAAM;AAAA,EACrBA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACzB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA;AAAA,IACtC,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC;AAAA,GACvC,CAAA;AAAA,EACDA,EAAE,YAAA,CAAa;AAAA,IACb,MAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,IAClC,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA;AAAA,IAC3C,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI;AAAA,GAC1C;AACH,CAAC,CAAA;AACD,IAAM,gBAAA,GAAmBA,EAAE,YAAA,CAAa;AAAA,EACtC,OAAOA,CAAAA,CAAE,KAAA,CAAM,CAAC,oBAAA,EAAsB,MAAM,CAAC,CAAA;AAAA,EAC7C,SAAA,EAAWA,EAAE,IAAA,CAAK,CAAC,SAAS,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC,CAAA;AAAA,EAClE,OAAA,EAASD,MAAK,QAAA,EAAS;AAAA,EACvB,KAAA,EAAOA,MAAK,QAAA;AACd,CAAC,CAAA;AACD,IAAM,aAAA,GAAgBC,EAAE,YAAA,CAAa;AAAA,EACnC,KAAA,EAAO,gBAAA;AAAA,EACP,GAAA,EAAK,gBAAA;AAAA,EACL,IAAA,EAAMA,EAAE,IAAA,CAAK;AAAA,IACX,MAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,YAAA,EAAcA,EAAE,OAAA,EAAQ;AAAA,EACxB,OAAA,EAASD,MAAK,QAAA;AAChB,CAAC,CAAA;AACD,IAAM,QAAA,GAAWC,EAAE,YAAA,CAAa;AAAA,EAC9B,gBAAA,EAAkBM,GAAAA;AAAA,EAClB,QAAA,EAAUN,EAAE,IAAA,CAAK,CAAC,UAAU,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAC,CAAA;AAAA,EACxD,MAAA,EAAQA,EACL,YAAA,CAAa;AAAA,IACZ,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,IACvB,IAAA,EAAMA,EAAE,IAAA,CAAK;AAAA,MACX,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACD,WAAA,EAAaA,EAAE,OAAA;AAAQ,GACxB,EACA,QAAA,EAAS;AAAA,EACZ,OAAA,EAASD;AACX,CAAC,CAAA;AAEM,IAAM,kBAAA,GAAqB;AAAA,EAChC,SAAA,EAAW,MAAA;AAAA,IACTA,KAAAA,CAAK,SAAS,qDAAqD;AAAA,GACrE;AAAA,EACA,WAAA,EAAa,OAAOA,KAAI,CAAA;AAAA,EACxB,UAAA,EAAY,OAAOO,GAAE,CAAA;AAAA,EACrB,QAAA,EAAU,OAAON,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC;AACrC;AACO,IAAM,mBAAA,GAAsB;AAAA,EACjC,KAAA,EAAO,OAAO,iBAAiB,CAAA;AAAA,EAC/B,eAAA,EAAiB,OAAOP,KAAI,CAAA;AAAA,EAC5B,KAAA,EAAO,OAAOA,KAAI,CAAA;AAAA,EAClB,eAAA,EAAiB,OAAO,OAAO,CAAA;AAAA,EAC/B,UAAA,EAAY,OAAOA,KAAI,CAAA;AAAA,EACvB,KAAA,EAAO,OAAOA,KAAI,CAAA;AAAA,EAClB,gBAAA,EAAkB,OAAOA,KAAI,CAAA;AAAA,EAC7B,cAAA,EAAgB,OAAOA,KAAI,CAAA;AAAA,EAC3B,SAAA,EAAW,OAAOA,KAAI,CAAA;AAAA,EACtB,kBAAA,EAAoB,OAAO,OAAO,CAAA;AAAA,EAClC,gBAAA,EAAkB,OAAOA,KAAI,CAAA;AAAA,EAC7B,gBAAA,EAAkB,OAAOA,KAAI,CAAA;AAAA,EAC7B,mBAAA,EAAqB,OAAOA,KAAI,CAAA;AAAA,EAChC,UAAA,EAAY,OAAOA,KAAI,CAAA;AAAA,EACvB,SAAA,EAAW,OAAOC,CAAAA,CAAE,KAAA,CAAM,kBAAkB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACpD,oBAAA,EAAsB,OAAO,OAAO,CAAA;AAAA,EACpC,qBAAA,EAAuB,OAAOD,KAAI,CAAA;AAAA,EAClC,oBAAA,EAAsB,MAAA,CAAOC,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACxC,yBAAA,EAA2B,MAAA,CAAOA,CAAAA,CAAE,OAAA,EAAS;AAC/C;AACO,IAAM,kBAAA,GAAqB;AAAA,EAChC,IAAA,EAAM,OAAOD,KAAI,CAAA;AAAA,EACjB,OAAA,EAAS,OAAOA,KAAI,CAAA;AAAA,EACpB,WAAA,EAAa,OAAOA,KAAI,CAAA;AAAA,EACxB,MAAA,EAAQ,OAAOA,KAAI,CAAA;AAAA,EACnB,IAAA,EAAM,OAAOA,KAAI,CAAA;AAAA,EACjB,OAAA,EAAS,OAAOA,KAAI,CAAA;AAAA,EACpB,QAAA,EAAU,OAAO,oBAAoB,CAAA;AAAA,EACrC,mBAAA,EAAqB,OAAO,yBAAyB,CAAA;AAAA,EACrD,sBAAA,EAAwB,MAAA,CAAOC,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAC1C,eAAA,EAAiB,OAAOD,KAAI,CAAA;AAAA,EAC5B,QAAA,EAAU,OAAO,cAAc,CAAA;AAAA,EAC/B,kBAAA,EAAoB,OAAOC,CAAAA,CAAE,KAAA,CAAM,cAAc,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACzD,OAAA,EAAS,OAAOA,CAAAA,CAAE,KAAA,CAAM,iBAAiB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACjD,aAAA,EAAe,OAAO,mBAAmB,CAAA;AAAA,EACzC,SAAA,EAAW,MAAA;AAAA,IACTA,EAAE,YAAA,CAAa;AAAA,MACb,aAAA,EAAeM,GAAAA;AAAA,MACf,QAAA,EAAUN,EAAE,IAAA,CAAK;AAAA,QACf,QAAA;AAAA,QACA,kBAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,MACD,qBAAA,EAAuBM,IAAG,QAAA,EAAS;AAAA,MACnC,oBAAA,EAAsBA,IAAG,QAAA,EAAS;AAAA,MAClC,IAAA,EAAMP,MAAK,QAAA;AAAS,KACrB;AAAA,GACH;AAAA,EACA,yBAAA,EAA2B,OAAO,yBAAyB,CAAA;AAAA,EAC3D,WAAA,EAAa,MAAA;AAAA,IACXC,EACG,IAAA,CAAK,CAAC,UAAU,kBAAA,EAAoB,UAAU,CAAC,CAAA,CAC/C,QAAA;AAAA,MACC;AAAA;AACF;AAEN;AACO,IAAM,qBAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,MAAA,CAAOA,CAAAA,CAAE,IAAA,CAAK,CAAC,YAAY,SAAA,EAAW,UAAA,EAAY,QAAQ,CAAC,CAAC,CAAA;AAAA,EAClE,OAAA,EAAS,OAAOM,GAAE,CAAA;AAAA,EAClB,IAAA,EAAM,OAAOP,KAAI,CAAA;AAAA,EACjB,IAAA,EAAM,OAAOA,KAAI,CAAA;AAAA,EACjB,WAAA,EAAa,OAAOA,KAAI,CAAA;AAAA,EACxB,QAAA,EAAU,OAAOA,KAAI,CAAA;AAAA,EACrB,YAAA,EAAc,OAAOA,KAAI,CAAA;AAAA,EACzB,QAAA,EAAU,OAAOA,KAAI,CAAA;AAAA,EACrB,OAAA,EAAS,OAAOA,KAAI,CAAA;AAAA,EACpB,QAAA,EAAU,OAAOA,KAAI,CAAA;AAAA,EACrB,YAAA,EAAc,MAAA,CAAOC,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAChC,oBAAA,EAAsB,MAAA,CAAOA,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACxC,kBAAA,EAAoB,MAAA,CAAOA,CAAAA,CAAE,OAAA,EAAS;AACxC;AACO,IAAM,wBAAA,GAA2B;AAAA,EACtC,OAAA,EAAS,OAAOM,GAAE,CAAA;AAAA,EAClB,UAAA,EAAY,OAAOA,GAAE,CAAA;AAAA,EACrB,UAAA,EAAY,OAAOA,GAAE,CAAA;AAAA,EACrB,UAAA,EAAY,OAAO,oBAAoB,CAAA;AAAA,EACvC,OAAA,EAAS,OAAOP,KAAI,CAAA;AAAA,EACpB,UAAA,EAAY,OAAOA,KAAI,CAAA;AAAA,EACvB,UAAA,EAAY,OAAOA,KAAI,CAAA;AAAA,EACvB,eAAA,EAAiB,OAAOA,KAAI,CAAA;AAAA,EAC5B,mBAAA,EAAqB,OAAOA,KAAI,CAAA;AAAA,EAChC,SAAA,EAAW,OAAOA,KAAI,CAAA;AAAA,EACtB,aAAA,EAAe,OAAOA,KAAI;AAC5B;AACO,IAAM,qBAAA,GAAwB;AAAA,EACnC,SAAA,EAAW,OAAO,oBAAoB,CAAA;AAAA,EACtC,cAAA,EAAgB,OAAO,MAAM,CAAA;AAAA,EAC7B,YAAA,EAAc,OAAO,QAAQ,CAAA;AAAA,EAC7B,aAAA,EAAe,OAAO,aAAa,CAAA;AAAA,EACnC,SAAA,EAAW,OAAO,SAAS,CAAA;AAAA,EAC3B,aAAA,EAAe,MAAA;AAAA,IACbC,EAAE,IAAA,CAAK,CAAC,SAAS,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC;AAAA,GACzD;AAAA,EACA,aAAA,EAAe,MAAA;AAAA,IACbA,EAAE,IAAA,CAAK,CAAC,SAAS,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC;AAAA,GACzD;AAAA,EACA,SAAA,EAAW,OAAO,eAAe,CAAA;AAAA,EACjC,mBAAA,EAAqB,OAAOD,KAAI,CAAA;AAAA,EAChC,OAAA,EAAS,OAAOA,KAAI,CAAA;AAAA,EACpB,KAAA,EAAO,OAAOA,KAAI,CAAA;AAAA,EAClB,gBAAA,EAAkB,MAAA;AAAA,IAChBC,CAAAA,CAAE,KAAK,CAAC,MAAA,EAAQ,SAAS,KAAA,EAAO,SAAA,EAAW,SAAS,CAAC;AAAA;AAEzD;AACO,IAAM,uBAAA,GAA0B;AAAA,EACrC,UAAA,EAAY,OAAO,gBAAgB,CAAA;AAAA,EACnC,eAAA,EAAiB,OAAO,qBAAqB,CAAA;AAAA,EAC7C,WAAA,EAAa,OAAOA,CAAAA,CAAE,KAAA,CAAMQ,UAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EAC7C,cAAA,EAAgB,OAAOR,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACzC,eAAA,EAAiB,MAAA;AAAA,IACf,wBAAA,CAAyB,KAAA,CAAM,mBAAA,CAAoB,MAAA;AAAO,GAC5D;AAAA,EACA,gBAAA,EAAkB,MAAA,CAAON,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACpC,SAAA,EAAW,OAAO,OAAO,CAAA;AAAA,EACzB,sBAAA,EAAwB,OAAOD,KAAI,CAAA;AAAA,EACnC,oBAAA,EAAsB,OAAOA,KAAI,CAAA;AAAA,EACjC,KAAA,EAAO,OAAOA,KAAI;AACpB;AAEA,KAAA,MAAW,MAAA,IAAU;AAAA,EACnB,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,KAAA,MAAW,CAACW,IAAAA,EAAK,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAClD,IAAA,MAAM,QAAQA,IAAAA,CAAI,OAAA,CAAQ,iBAAA,EAAmB,OAAO,EAAE,WAAA,EAAY;AAClE,IAAC,MAAA,CAAqCA,IAAG,CAAA,GAAI,MAAA,CAAO,QAAA;AAAA,MAClD,WAAW,KAAK,CAAA,6FAAA;AAAA,KAClB;AAAA,EACF;AACF;AACA,IAAM,IAAA,GAAOV,EAAE,IAAA,CAAK;AAAA,EAClB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF,CAAC,CAAA;AACM,IAAM,4BAAA,GAA+BA,EACzC,YAAA,CAAa;AAAA,EACZ,EAAA,EAAAM,GAAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA,EAAeA,GAAAA;AAAA,EACf,cAAA,EAAgBA,IAAG,QAAA;AACrB,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACF,SAAS,MAAA,CAAkD,MAAS,MAAA,EAAW;AAC7E,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAI/B,EAAA,OAAON,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,MAAA,EAAQN,CAAAA,CAAE,YAAA,CAAa,MAAM,CAAA;AAAA,IAC7B,YAAA,EAAcA,CAAAA,CAAE,KAAA,CAAM,4BAA4B,EAAE,QAAA,EAAS;AAAA,IAC7D,YAAYA,CAAAA,CACT,KAAA;AAAA,MACCA,EAAE,YAAA,CAAa;AAAA,QACb,KAAA,EAAOA,CAAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,QAClB,WAAA,EAAaM,GAAAA;AAAA,QACb,wBAAwBN,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACzC,WAAA,EAAaP,KAAAA;AAAA,QACb,WAAA,EAAa,aAAA;AAAA,QACb,SAAA,EAAWC,CAAAA,CACR,MAAA,EAAO,CACP,MAAM,8CAA8C,CAAA;AAAA,QACvD,aAAA,EAAeD,KAAAA;AAAA,QACf,SAAA,EAAWA;AAAA,OACZ;AAAA,MAEF,QAAA;AAAS,GACb,CAAA;AACH;AACO,IAAM,mBAAA,GAAsBC,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC9D,MAAA,CAAO,SAAS,kBAAkB,CAAA;AAAA,EAClC,MAAA,CAAO,mBAAmB,mBAAmB,CAAA;AAAA,EAC7C,MAAA,CAAO,SAAS,kBAAkB,CAAA;AAAA,EAClC,MAAA,CAAO,YAAY,qBAAqB,CAAA;AAAA,EACxC,MAAA,CAAO,eAAe,wBAAwB,CAAA;AAAA,EAC9C,MAAA,CAAO,YAAY,qBAAqB,CAAA;AAAA,EACxC,MAAA,CAAO,cAAc,uBAAuB;AAC9C,CAAC;AACM,IAAM,wBAAA,GAA2BA,EACrC,YAAA,CAAa;AAAA,EACZ,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,qBAAqB,CAAA;AAAA,EACrC,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,EAAA,EAAAM,GAAAA;AAAA,EACA,cAAA,EAAgB,4BAAA;AAAA,EAChB,cAAA,EAAgB,0BAA0B,MAAA,CAAO;AAAA,IAC/C,UAAUN,CAAAA,CAAE,OAAA;AAAA,MACV;AAAA;AACF,GACD,EAAE,QAAA,EAAS;AAAA,EACZ,UAAA,EAAY,aAAA;AAAA,EACZ,UAAA,EAAYD,KAAAA;AAAA,EACZ,UAAUC,CAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAA,CAAE,IAAI,CAAC;AAC9C,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACF,SAAS,MAAA,CAAkD,MAAS,MAAA,EAAW;AAC7E,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAI/B,EAAA,OAAOA,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,KAAA,EAAON,CAAAA,CAAE,IAAA,CAAK,IAAI,EAAE,QAAA;AAAS,GAC9B,CAAA;AACH;AACO,IAAM,mBAAA,GAAsBA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC9D,MAAA,CAAO,SAAS,kBAAkB,CAAA;AAAA,EAClC,MAAA,CAAO,mBAAmB,mBAAmB,CAAA;AAAA,EAC7C,MAAA,CAAO,SAAS,kBAAkB,CAAA;AAAA,EAClC,MAAA,CAAO,YAAY,qBAAqB,CAAA;AAAA,EACxC,MAAA,CAAO,eAAe,wBAAwB,CAAA;AAAA,EAC9C,MAAA,CAAO,YAAY,qBAAqB,CAAA;AAAA,EACxC,MAAA,CAAO,cAAc,uBAAuB;AAC9C,CAAC;AACM,IAAM,sBAAA,GAAyBA,EAAE,YAAA,CAAa;AAAA,EACnD,QAAA,EAAU,0BAA0B,MAAA,CAAO;AAAA,IACzC,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,6BAA6B;AAAA,GAClD,CAAA;AAAA,EACD,MAAA,EAAQ;AACV,CAAC;AACM,IAAM,+BAAA,GAAkC,uBAAuB,MAAA,CAAO;AAAA,EAC3E,WAAA,EAAaM;AACf,CAAC;AAKM,SAAS,4BAAA,GAAwD;AACtE,EAAA,OAAO;AAAA,IACL,GAAGN,CAAAA,CAAE,YAAA,CAAa,wBAAA,EAA0B;AAAA,MAC1C,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;ACrYO,SAAS,kBACdW,OAAAA,EACkD;AAClD,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQA,OAAAA,CAAO,MAAM,CAAA,CAAE,OAAA;AAAA,IAAQ,CAAC,CAAC,KAAA,EAAO,UAAU,CAAA,KAAA,CAC5D,cAAc,EAAC,EAA0B,GAAA,CAAI,CAAC,SAAA,MAAe;AAAA,MAC7D,KAAA;AAAA,MACA;AAAA,KACF,CAAE;AAAA,GACJ;AACF;AACO,SAAS,wBAAwB,KAAA,EAAgB;AACtD,EAAA,MAAM,MAAA,GAAS,wBAAA,CAAyB,SAAA,CAAU,KAAK,CAAA;AACvD,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,QAAA,EAAU,6BAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GAClB;AACA,EAAA,MAAM,SAAyB,EAAC;AAChC,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,EAAcP,QAAAA,EAAiB,YAC5C,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAA,EAAAA,QAAAA,EAAS,SAAS,CAAA;AAC3D,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA;AACV,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,aAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACtC,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,QAC9B,SAAS,CAAA,CAAE;AAAA,OACb,CAAE,CAAA;AAAA,MACF,eAAe;AAAC,KAClB;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,QAAA,uBAAe,GAAA,EAA2B;AAChD,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAyB;AACnD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAGO,OAAM,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AACjD,IAAA,MAAMD,OAAM,CAAA,EAAGC,OAAAA,CAAO,IAAI,CAAA,CAAA,EAAIA,QAAO,EAAE,CAAA,CAAA;AACvC,IAAA,IAAI,QAAA,CAAS,IAAID,IAAG,CAAA;AAClB,MAAA,KAAA,CAAM,eAAA,EAAiB,CAAA,UAAA,EAAa,CAAC,CAAA,GAAA,CAAA,EAAO,4BAA4B,CAAA;AAC1E,IAAA,QAAA,CAAS,GAAA,CAAIA,MAAKC,OAAM,CAAA;AACxB,IAAA,IAAIA,OAAAA,CAAO,SAAS,UAAA,EAAY,aAAA,CAAc,IAAIA,OAAAA,CAAO,EAAA,kBAAI,IAAI,GAAA,EAAK,CAAA;AAAA,EACxE;AACA,EAAA,SAAS,IAAA,CAAK,OAAuB,IAAA,EAAc;AACjD,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAU,KAAA,EAAO,MAAM,KAAK,CAAA;AAC5B,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,KAAA,CAAM,CAAA,CAAE,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EAC1D;AACA,EAAA,IAAA;AAAA,IACE,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,IAAA,CAAK,UAA6B,CAAA;AAAA,IAC5D;AAAA,GACF;AACA,EAAA,MAAM,4BAAY,IAAI,GAAA,CAAI,CAAC,IAAA,CAAK,cAAA,CAAe,MAAM,CAAC,CAAA;AACtD,EAAA,IAAI,KAAK,cAAA,EAAgB,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,eAAe,MAAM,CAAA;AACjE,EAAA,KAAA,MAAW,CAAC,CAAA,EAAGA,OAAM,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AACjD,IAAA,MAAM,IAAA,GAAO,aAAa,CAAC,CAAA,CAAA;AAC3B,IAAA,MAAM,UAAA,GAAa,kBAAkBA,OAAM,CAAA;AAC3C,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,IAAA,KAAA,MAAW,EAAE,KAAA,EAAO,SAAA,EAAU,IAAK,UAAA,EAAY;AAC7C,MAAA,MAAM,CAAA,GAAI,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA;AACjC,MAAA,IAAI,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,EAAE,CAAA;AACtB,QAAA,KAAA;AAAA,UACE,eAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,GAAA,CAAI,GAAA,CAAI,UAAU,EAAE,CAAA;AACpB,MAAA,MAAM,EAAE,SAAQ,GAAI,SAAA;AACpB,MAAA,MAAM,OAAO,OAAA,CAAQ,UAAA;AACrB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,SAAA,CAAU,GAAA,CAAI,KAAK,SAAS,CAAA;AAC5B,QAAA,IACE,IAAA,CAAK,SAAS,IAAA,KAAS,YAAA,IACvB,KAAK,OAAA,CAAQ,UAAA,GAAc,KAAK,OAAA,CAAQ,YAAA;AAExC,UAAA,KAAA,CAAM,eAAA,EAAiB,GAAG,oCAAoC,CAAA;AAAA,MAClE;AACA,MAAA,IAAI,EAAE,WAAW,OAAA,CAAA,EAAU;AAC3B,MAAA,IAAI,KAAA,KAAU,eAAe,KAAA,KAAU,YAAA;AACrC,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAyB,CAAC,CAAA;AACzC,MAAA,MAAM,QAAA,GACJ;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,UAAA,EAAY,UAAA;AAAA,QACZ,UAAA,EAAY;AAAA,QAEd,KAAK,CAAA;AACP,MAAA,IAAI,QAAA,IAAY,CAAC,QAAA,CAAS,GAAA,CAAI,GAAG,QAAQ,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAK,CAAA,CAAE,CAAA;AAC1D,QAAA,KAAA;AAAA,UACE,sBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,IAAI,KAAA,KAAU,UAAA,EAAA;AACZ,QAAA,KAAA,MAAWL,QAAM,OAAA,CAAQ,KAAA;AACvB,UAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,CAAA,MAAA,EAASA,IAAE,CAAA,CAAE,CAAA;AAC7B,YAAA,KAAA;AAAA,cACE,sBAAA;AAAA,cACA,CAAA;AAAA,cACA;AAAA,aACF;AAAA,MAAA;AACN,MAAA,IACE,KAAA,KAAU,WAAA,IACV,CAAC,QAAA,CAAS,GAAA;AAAA,QACR,CAAA,MAAA,EAAU,OAAA,CAAQ,KAAA,CAAoC,aAAa,CAAA;AAAA,OACrE;AAEA,QAAA,KAAA;AAAA,UACE,sBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,IAAI,UAAU,cAAA,EAAgB;AAC5B,QAAA,MAAMM,YAAW,OAAA,CAAQ,KAAA;AAKzB,QAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,CAAA,SAAA,EAAYA,SAAAA,CAAS,gBAAgB,CAAA,CAAE,CAAA;AACvD,UAAA,KAAA;AAAA,YACE,sBAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA,WACF;AACF,QAAA,aAAA,CAAc,IAAID,OAAAA,CAAO,EAAE,CAAA,EAAG,GAAA,CAAIC,UAAS,gBAAgB,CAAA;AAC3D,QAAA,IAAIA,SAAAA,CAAS,QAAA,KAAa,QAAA,IAAYA,SAAAA,CAAS,MAAA;AAC7C,UAAA,KAAA;AAAA,YACE,sBAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA,WACF;AAAA,MACJ;AACA,MAAA,IAAI,UAAU,gBAAA,EAAkB;AAC9B,QAAA,MAAMC,UAAS,OAAA,CAAQ,KAAA;AAKvB,QAAA,IACEA,OAAAA,CAAO,IAAA,KAAS,SAAA,IAChBA,OAAAA,CAAO,OAAA,GAAUA,QAAO,SAAA,MACrBA,OAAAA,CAAO,IAAA,KAAS,QAAA,GAAW,CAAA,GAAI,EAAA,CAAA;AAElC,UAAA,KAAA;AAAA,YACE,sBAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA,WACF;AAAA,MACJ;AACA,MAAA,IAAI,UAAU,eAAA,EAAiB;AAS7B,QAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA;AAItB,QAAA,KAAA,MAAW,QAAA,IAAY,CAAC,KAAA,CAAM,KAAA,CAAM,OAAO,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,EAAG;AAC3D,UAAA,IAAI,CAAC,QAAQ,OAAA,EAAS,MAAA,EAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,SAAS,IAAI,CAAA;AAC7D,YAAA,IAAA,CAAK,UAA4B,CAAC,CAAA;AACpC,UAAA,IACE,CAAC,QAAA,EAAU,SAAS,CAAA,CAAE,SAAS,QAAA,CAAS,IAAI,CAAA,IAC5C,QAAA,CAAS,UAAW,QAAA,CAAS,SAAA,MAC1B,QAAA,CAAS,IAAA,KAAS,WAAW,CAAA,GAAI,EAAA,CAAA;AAEpC,YAAA,KAAA;AAAA,cACE,sBAAA;AAAA,cACA,CAAA;AAAA,cACA;AAAA,aACF;AAAA,QACJ;AACA,QAAA,MAAM,IAAI,KAAA,CAAM,KAAA,CAAM,KAAA,EACpB,CAAA,GAAI,MAAM,GAAA,CAAI,KAAA;AAChB,QAAA,IAAI,CAAA,CAAE,IAAA,KAAS,CAAA,CAAE,IAAA,EAAM;AACrB,UAAA,MAAM,QAAA,GAAW,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,GACjE,aAAA;AAAA,YACE,CAAA;AAAA,YACA;AAAA,cACE,CAAA,GACJ,CAAA,CAAE,IAAA,KAAS,SAAA,GACT,EAAE,IAAA,GAAQ,CAAA,GAAI,CAAA,CAAE,OAAA,GAAW,EAAE,IAAA,GAAQ,CAAA,GAAI,EAAE,OAAA,GAC3C,CAAA,CAAE,YAAa,CAAA,CAAE,SAAA;AACvB,UAAA,IAAI,QAAA;AACF,YAAA,KAAA,CAAM,eAAA,EAAiB,GAAG,oCAAoC,CAAA;AAAA,QAClE;AAAA,MACF;AACA,MAAA,IAAI,UAAU,WAAA,EAAa;AACzB,QAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA;AAItB,QAAA,IAAI,KAAA,CAAM,QAAA;AACR,UAAA,IAAI;AACF,YAAA,IAAI,KAAK,cAAA,CAAe,IAAA,EAAM,EAAE,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAAA,UAC5D,CAAA,CAAA,MAAQ;AACN,YAAA,KAAA;AAAA,cACE,eAAA;AAAA,cACA,CAAA;AAAA,cACA;AAAA,aACF;AAAA,UACF;AACF,QAAA,IACE,KAAA,CAAM,SAAA,EAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,KAAM,IAAA,IACjC,CAAC,KAAA,CAAM,SAAA,CAAU,QAAA,CAAS,KAAK,CAAA;AAE/B,UAAA,KAAA,CAAM,aAAA,EAAe,GAAG,4CAA4C,CAAA;AAAA,MACxE;AAAA,IACF;AACA,IAAA,MAAM,cAAA,uBAAqB,GAAA,EAAY;AACvC,IAAA,KAAA,MAAW,SAAA,IAAaF,OAAAA,CAAO,UAAA,IAAc,EAAC,EAAG;AAC/C,MAAA,MAAM,CAAA,GAAI,GAAG,IAAI,CAAA,WAAA,CAAA;AACjB,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,SAAA,CAAU,KAAK,CAAA;AACpC,QAAA,KAAA;AAAA,UACE,2BAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,cAAA,CAAe,GAAA,CAAI,UAAU,KAAK,CAAA;AAClC,MAAA,IAAI,CAAC,SAAA,CAAU,sBAAA,CAAuB,QAAA,CAAS,UAAU,WAAW,CAAA;AAClE,QAAA,KAAA;AAAA,UACE,kBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,IACE,IAAI,GAAA,CAAI,SAAA,CAAU,sBAAsB,CAAA,CAAE,IAAA,KAC1C,UAAU,sBAAA,CAAuB,MAAA;AAEjC,QAAA,KAAA,CAAM,eAAA,EAAiB,GAAG,qCAAqC,CAAA;AACjE,MAAA,KAAA,MAAWL,QAAM,SAAA,CAAU,sBAAA;AACzB,QAAA,IACE,CAAC,UAAA,CAAW,IAAA;AAAA,UACV,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,UAAU,KAAA,IAAS,CAAA,CAAE,UAAU,EAAA,KAAOA;AAAA,SAC3D;AAEA,UAAA,KAAA;AAAA,YACE,oBAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA,WACF;AACJ,MAAA,MAAM,SAAS,UAAA,CAAW,IAAA;AAAA,QACxB,CAAC,MACC,CAAA,CAAE,KAAA,KAAU,UAAU,KAAA,IACtB,CAAA,CAAE,SAAA,CAAU,EAAA,KAAO,SAAA,CAAU;AAAA,OACjC;AACA,MAAA,IACE,CAAC,MAAA,IACD,CAAC,CAAC,OAAA,EAAS,aAAA,EAAe,UAAU,CAAA,CAAE,QAAA;AAAA,QACpC,MAAA,CAAO,UAAU,OAAA,CAAQ;AAAA,OAC3B;AAEA,QAAA,KAAA;AAAA,UACE,iBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,IAAA;AAAA,QACE,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,SAAA,CAAU,WAA8B,CAAA;AAAA,QAClE;AAAA,OACF;AACA,MAAA,IACE,aAAA;AAAA,QACE,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,SAAA,CAAU,WAA8B,CAAA;AAAA,QAClE,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,IAAA,CAAK,UAA6B;AAAA,OAC9D,GAAI,CAAA;AAEJ,QAAA,KAAA;AAAA,UACE,iBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,SAAA,CAAU,GAAA,CAAI,UAAU,SAAS,CAAA;AAAA,IACnC;AACA,IAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,IAAA,KAAA,MAAW,IAAA,IAAQK,OAAAA,CAAO,YAAA,IAAgB,EAAC,EAAG;AAC5C,MAAA,IAAI,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAC1B,QAAA,KAAA;AAAA,UACE,eAAA;AAAA,UACA,GAAG,IAAI,CAAA,aAAA,CAAA;AAAA,UACP;AAAA,SACF;AACF,MAAA,YAAA,CAAa,GAAA,CAAI,KAAK,EAAE,CAAA;AACxB,MAAA,SAAA,CAAU,GAAA,CAAI,CAAA,YAAA,EAAe,IAAA,CAAK,aAAa,CAAA,CAAE,CAAA;AACjD,MAAA,IAAI,IAAA,CAAK,kBAAkB,CAAC,QAAA,CAAS,IAAI,CAAA,MAAA,EAAS,IAAA,CAAK,cAAc,CAAA,CAAE,CAAA;AACrE,QAAA,KAAA;AAAA,UACE,sBAAA;AAAA,UACA,GAAG,IAAI,CAAA,aAAA,CAAA;AAAA,UACP;AAAA,SACF;AAAA,IACJ;AAAA,EACF;AAEA,EAAA,MAAM,SAAS,IAAI,GAAA,CAAI,CAAC,GAAG,cAAc,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACnE,EAAA,KAAA,MAAW,KAAA,IAAS,cAAc,MAAA,EAAO;AACvC,IAAA,KAAA,MAAW,EAAA,IAAM,KAAA;AACf,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,GAAK,CAAC,CAAA;AAC1D,EAAA,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,KAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAACD,IAAG,MAAMA,IAAG,CAAA;AACvE,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA;AAChC,IAAA,KAAA,MAAW,MAAM,aAAA,CAAc,GAAA,CAAI,MAAM,CAAC,CAAE,KAAK,EAAC;AAChD,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAG;AAClB,QAAA,MAAA,CAAO,IAAI,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,IAAK,CAAC,CAAA;AAClC,QAAA,IAAI,OAAO,GAAA,CAAI,EAAE,MAAM,CAAA,EAAG,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,MACzC;AACJ,EAAA,IAAI,KAAA,CAAM,WAAW,MAAA,CAAO,IAAA;AAC1B,IAAA,KAAA;AAAA,MACE,qBAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,QAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA,EAAe,CAAC,GAAG,SAAS,CAAA;AAAA,IAC5B,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,QAAA;AAAA,MACZ,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA;AAAA,MACrC,OAAA,EAAS,aAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ,GACF;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,KAAA,EAAe,GACzC,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,MAAe,IAAA,EAAK;AACpD;AC1VA,IAAMX,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,kCAAkC,CAAA;AAC7E,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAMc,SAAAA,GAAWd,CAAAA,CACd,MAAA,EAAO,CACP,MAAM,6CAA6C,CAAA;AACtD,IAAMe,SAAAA,GAAWf,CAAAA,CACd,MAAA,EAAO,CACP,KAAA;AAAA,EACC;AACF,CAAA;AACK,IAAM,yBAAA,GAA4BA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACpEA,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,aAAa,GAAG,CAAA;AAAA,EACjDA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACzB,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,aAAA,EAAeM,GAAAA,EAAI;AACtE,CAAC;AACD,IAAMU,OAAAA,GAAS;AAAA,EACb,EAAA,EAAAV,GAAAA;AAAA,EACA,UAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAOP,KAAAA;AAAA,EACP,OAAA,EAAS,yBAAA;AAAA,EACT,UAAA,EAAYC,EAAE,KAAA,CAAMc,SAAQ,EAAE,GAAA,CAAI,CAAC,EAAE,QAAA;AACvC,CAAA;AACO,IAAM,4BAAA,GAA+Bd,EAAE,YAAA,CAAa;AAAA,EACzD,GAAGgB,OAAAA;AAAA,EACH,IAAA,EAAMhB,CAAAA,CAAE,OAAA,CAAQ,kBAAkB,CAAA;AAAA,EAClC,IAAA,EAAAD,KAAAA;AAAA,EACA,aAAA,EAAeA,MAAK,QAAA,EAAS;AAAA,EAC7B,UAAA,EAAY,0BAAA,CAA2B,OAAA,CAAQ,CAAC,EAAE,KAAA,CAAM;AAC1D,CAAC;AACD,IAAMkB,WAAAA,GAAa;AAAA,EACjB,GAAGD,OAAAA;AAAA,EACH,IAAA,EAAMhB,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMe,SAAQ,CAAA;AAAA,EAC3B,gBAAA,EAAkBf,CAAAA,CAAE,KAAA,CAAM,+BAA+B,EAAE,QAAA,EAAS;AAAA,EACpE,SAAA,EAAWD;AACb,CAAA;AACO,IAAM,4BAAA,GAA+BC,EAAE,YAAA,CAAa;AAAA,EACzD,GAAGiB,WAAAA;AAAA,EACH,MAAA,EAAQjB,CAAAA,CAAE,OAAA,CAAQ,YAAY;AAChC,CAAC;AACM,IAAM,0BAAA,GAA6BA,EAAE,YAAA,CAAa;AAAA,EACvD,GAAGiB,WAAAA;AAAA,EACH,MAAA,EAAQjB,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC5B,OAAA,EAASA,EAAE,IAAA,CAAK,CAAC,YAAY,WAAA,EAAa,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,EACnE,WAAA,EAAaD,KAAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAWC,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,8CAA8C,CAAA;AAAA,EAC1E,aAAA,EAAeD,KAAAA;AAAA,EACf,UAAA,EAAYC,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AACvC,CAAC;AACM,IAAM,4BAAA,GAA+BA,EAAE,KAAA,CAAM;AAAA,EAClD,4BAAA;AAAA,EACA,4BAAA;AAAA,EACA;AACF,CAAC;AACM,IAAM,+BAAA,GACX;AACK,IAAM,qCAAA,GAAwC;AAE9C,IAAM,yBAAA,GAA4BA,EAAE,YAAA,CAAa;AAAA,EACtD,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,EAAA,EAAAM,GAAAA;AAAA,EACA,aAAaN,CAAAA,CAAE,KAAA;AAAA,IACb,0BAA0B,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,6BAA6B;AAAA,KAClD;AAAA,GACH;AAAA,EACA,WAAA,EAAa,6BAAA;AAAA,EACb,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,4BAA4B,CAAA;AAAA,EAC5C,UAAA,EAAY,8BAA8B,KAAA,CAAM;AAClD,CAAC;AAaM,SAAS,6BAAA,GAAyD;AACvE,EAAA,OAAO;AAAA,IACL,GAAGA,CAAAA,CAAE,YAAA,CAAa,yBAAA,EAA2B;AAAA,MAC3C,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;ACjEA,IAAMkB,MAAAA,GAAQ,CAAC,KAAA,MAAmB;AAAA,EAChC,IAAA,EAAM,SAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA,EAAW;AACb,CAAA,CAAA;AACA,IAAMd,QAAAA,GAAU,CAAC,IAAA,KACf,IAAA,CACG,IAAI,CAAC,CAAA,KAAM,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAA,CAAE,QAAQ,IAAA,EAAM,IAAI,EAAE,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CACnE,IAAA,CAAK,EAAE,CAAA;AAGL,SAAS,yBACd,KAAA,EACgC;AAChC,EAAA,MAAM,QAAA,GAAsD;AAAA,IAC1D,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,+BAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GAClB;AACA,EAAA,MAAM,MAAA,GAAS,yBAAA,CAA0B,SAAA,CAAU,KAAK,CAAA;AACxD,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA;AACV,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,aAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,eAAe,EAAC;AAAA,MAChB,QAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAC1C,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,QAAA,EAAU,OAAA;AAAA,QACV,OAAA,EAASA,QAAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAAA,QAC3B,SAAS,KAAA,CAAM;AAAA,OACjB,CAAE;AAAA,KACJ;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,IAAA,CAAK,WAAW,CAAA;AACvE,EAAA,MAAM,MAAA,GAAqC,kBAAkB,MAAA,CAAO,GAAA;AAAA,IAClE,CAAC,WAAW,EAAE,GAAG,OAAO,OAAA,EAAS,CAAA,YAAA,EAAe,KAAA,CAAM,OAAO,CAAA,CAAA,EAAG;AAAA,GAClE;AACA,EAAA,MAAM,UAAU,CACd,IAAA,EACA,IAAA,EACA,OAAA,KAEA,OAAO,IAAA,CAAK;AAAA,IACV,IAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoC;AACvD,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAyB;AAC3C,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,MAAM,UAAU,IAAI,GAAA;AAAA,IAClB,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACpE;AACA,EAAA,MAAM,WAAW,IAAI,GAAA;AAAA,IACnB,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,QAAA,EAAW,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACtE;AACA,EAAA,MAAM,UAAU,IAAI,GAAA;AAAA,IAClB,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACpE;AACA,EAAA,MAAM,eAAe,IAAI,GAAA;AAAA,IACvB,IAAA,CAAK,YAAY,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAAS,CAAA,YAAA,EAAe,IAAA,CAAK,EAAE,CAAA,CAAE;AAAA,GACtE;AACA,EAAA,MAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,IACxB,GAAG,QAAQ,IAAA,EAAK;AAAA,IAChB,GAAG,SAAS,IAAA,EAAK;AAAA,IACjB,GAAG,YAAA;AAAA,IACH,GAAG,IAAA,CAAK,WAAA,CAAY,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS,CAAA,UAAA,EAAa,IAAA,CAAK,EAAE,CAAA,CAAE;AAAA,GACpE,CAAA;AACD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAMR,IAAAA,GAAM,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC7B,IAAA,IAAI,MAAA,CAAO,IAAIA,IAAG,CAAA;AAChB,MAAA,OAAA;AAAA,QACE,eAAA;AAAA,QACA,WAAW,CAAC,CAAA,GAAA,CAAA;AAAA,QACZ;AAAA,OACF;AAAA,SACG;AACH,MAAA,MAAA,CAAO,GAAA,CAAIA,MAAK,KAAK,CAAA;AACrB,MAAA,KAAA,CAAM,GAAA,CAAIA,IAAAA,kBAAK,IAAI,GAAA,EAAK,CAAA;AACxB,MAAA,SAAA,CAAU,IAAIA,IAAG,CAAA;AAAA,IACnB;AAAA,EACF;AACA,EAAA,SAAS,OAAA,CAAQ,OAAe,IAAA,EAAoB;AAClD,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAUsB,MAAAA,CAAM,KAAK,CAAA,EAAG,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,KAAA,MAAW,KAAA,IAAS,KAAA;AAClB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,EACpD;AACA,EAAA,SAAS,OAAA,CAAQtB,IAAAA,EAAa,IAAA,EAAc,KAAA,EAAsB;AAChE,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA;AACpB,MAAA,OAAA;AAAA,QACE,sBAAA;AAAA,QACA,IAAA;AAAA,QACA,+BAA+BA,IAAG,CAAA;AAAA,OACpC;AAAA,SAAA,IACO,KAAA,IAAS,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA,QAAS,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAIA,IAAG,CAAA;AAAA,EAC9D;AACA,EAAA,SAASE,KAAAA,CAAKS,OAAAA,EAAkB,IAAA,EAAc,KAAA,EAAqB;AACjE,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGX,IAAG,CAAA,IAAKW,OAAAA,CAAO,SAAQ,EAAG;AACvC,MAAA,IAAI,IAAA,CAAK,IAAIX,IAAG,CAAA;AACd,QAAA,OAAA,CAAQ,iBAAiB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,wBAAwB,CAAA;AACnE,MAAA,IAAA,CAAK,IAAIA,IAAG,CAAA;AACZ,MAAA,OAAA,CAAQA,MAAK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,KAAK,CAAA;AAAA,IACpC;AAAA,EACF;AACA,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,SAAA,CAAU,IAAA,KAAS,IAAA,CAAK,WAAA,CAAY,MAAA;AACtC,IAAA,OAAA;AAAA,MACE,eAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,GAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,SAAA,GAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAC;AAAA,MACpE,GAAI,MAAM,IAAA,KAAS,YAAA,GAAgB,MAAM,gBAAA,IAAoB,KAAM;AAAC,KACtE;AACA,IAAA,KAAA,MAAWA,IAAAA,IAAO,WAAA;AAChB,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,KAAK,SAAA,CAAUA,IAAAA,CAAI,QAAQ,CAAC,CAAA;AAC7C,QAAA,OAAA;AAAA,UACE,sBAAA;AAAA,UACA,WAAW,CAAC,CAAA,CAAA;AAAA,UACZ;AAAA,SACF;AACJ,IAAA,IACE,KAAA,CAAM,SAAS,YAAA,IACf,IAAI,KAAK,KAAA,CAAM,gBAAA,IAAoB,EAAC,EAAG,GAAA,CAAI,CAAC,MAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,EACjE,IAAA,KAAA,CAAU,KAAA,CAAM,gBAAA,IAAoB,EAAC,EAAG,MAAA;AAE3C,MAAA,OAAA;AAAA,QACE,eAAA;AAAA,QACA,WAAW,CAAC,CAAA,iBAAA,CAAA;AAAA,QACZ;AAAA,OACF;AAAA,EACJ;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AACzB,IAAA,MAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC/B,IAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,CAAA,WAAA,CAAa,CAAA;AAC9C,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,KAAS,aAAA;AACzB,MAAA,OAAA;AAAA,QACE,CAAA,YAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,CAAA;AAAA,QAC1C,GAAG,IAAI,CAAA,sBAAA;AAAA,OACT;AACF,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAAE,MAAK,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,eAAe,KAAK,CAAA;AAClD,MAAA,KAAA,MAAW,CAAC,CAAA,EAAGF,IAAG,KAAK,KAAA,CAAM,UAAA,CAAW,SAAQ,EAAG;AACjD,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA;AAC/B,QAAA,IAAI,CAAC,QAAA,EAAU;AACf,QAAA,UAAA,CAAW,IAAIA,IAAG,CAAA;AAClB,QAAA,IACE,SAAS,IAAA,KAAS,KAAA,CAAM,IAAA,IACxB,QAAA,CAAS,UAAU,KAAA,CAAM,KAAA,IACzB,IAAA,CAAK,SAAA,CAAU,SAAS,OAAO,CAAA,KAAM,KAAK,SAAA,CAAU,KAAA,CAAM,OAAO,CAAA,EACjE;AACA,UAAA,OAAA;AAAA,YACE,0BAAA;AAAA,YACA,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,CAAA,CAAA;AAAA,YACvB;AAAA,WACF;AAAA,QACF;AACA,QAAA,IACE,QAAA,CAAS,IAAA,KAAS,YAAA,IAClB,QAAA,CAAS,WAAW,UAAA,IACpB,KAAA,CAAM,IAAA,KAAS,YAAA,KACd,MAAM,MAAA,KAAW,UAAA,IAChB,QAAA,CAAS,WAAA,KAAgB,MAAM,WAAA,CAAA,EACjC;AACA,UAAA,OAAA;AAAA,YACE,4BAAA;AAAA,YACA,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,CAAA,CAAA;AAAA,YACvB;AAAA,WACF;AAAA,QACF;AACA,QAAA,IACE,aAAA,CAAcsB,MAAAA,CAAM,QAAA,CAAS,UAAU,CAAA,EAAGA,OAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,CAAA,EACrE;AACA,UAAA,OAAA;AAAA,YACE,sBAAA;AAAA,YACA,GAAG,IAAI,CAAA,WAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,kBAAA,EAAoB;AACrC,MAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,CAAW,SAAA,EAAW,CAAA,EAAG,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAClE,MAAA,MAAM,MAAA,GACJ,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,IACtC,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA;AACzC,MAAA,IACE,MAAA,EAAQ,MAAA,IACR,KAAA,CAAM,UAAA,CAAW,YAAA,IACjB,MAAA,CAAO,MAAA,CAAO,KAAA,KAAU,KAAA,CAAM,UAAA,CAAW,YAAA,CAAa,KAAA,EACtD;AACA,QAAA,OAAA;AAAA,UACE,wBAAA;AAAA,UACA,GAAG,IAAI,CAAA,wBAAA,CAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,OAAA;AACjC,MAAA,IACE,OAAA,EAAS,IAAA,KAAS,YAAA,IAClB,OAAA,CAAQ,aAAa,OAAA,CAAQ,YAAA;AAE7B,QAAA,OAAA;AAAA,UACE,eAAA;AAAA,UACA,GAAG,IAAI,CAAA,8BAAA,CAAA;AAAA,UACP;AAAA,SACF;AAAA,IACJ,CAAA,MAAO;AACL,MAAApB,MAAK,KAAA,CAAM,SAAA,EAAW,CAAA,EAAG,IAAI,cAAc,KAAK,CAAA;AAChD,MAAA,IAAI,KAAA,CAAM,WAAW,UAAA,EAAY;AAC/B,QAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,CAAA;AAChD,QAAA,IACE,aAAA,CAAcoB,OAAM,KAAA,CAAM,WAAW,GAAGA,MAAAA,CAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,CAAA;AAEnE,UAAA,OAAA;AAAA,YACE,wBAAA;AAAA,YACA,GAAG,IAAI,CAAA,YAAA,CAAA;AAAA,YACP;AAAA,WACF;AACF,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AAC1C,QAAA,IAAI,CAAC,MAAA;AACH,UAAA,OAAA;AAAA,YACE,sBAAA;AAAA,YACA,GAAG,IAAI,CAAA,UAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,aAAA,IACO,MAAA,CAAO,YAAY,KAAA,CAAM,aAAA;AAChC,UAAA,OAAA;AAAA,YACE,yBAAA;AAAA,YACA,GAAG,IAAI,CAAA,cAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,IAAI,GAAA,CAAI,CAAC,GAAG,MAAM,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAACtB,IAAAA,KAAQ,CAACA,IAAAA,EAAK,CAAC,CAAC,CAAC,CAAA;AAClE,EAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAO;AAC/B,IAAA,KAAA,MAAWA,IAAAA,IAAO,OAAO,SAAA,CAAU,GAAA,CAAIA,MAAK,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,GAAK,CAAC,CAAA;AACrE,EAAA,MAAM,QAAQ,CAAC,GAAG,SAAS,CAAA,CACxB,MAAA,CAAO,CAAC,GAAG,MAAM,CAAA,KAAM,MAAA,KAAW,CAAC,CAAA,CACnC,GAAA,CAAI,CAAC,CAACA,IAAG,MAAMA,IAAG,CAAA;AACrB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA;AAChC,IAAA,KAAA,MAAWA,IAAAA,IAAO,MAAM,GAAA,CAAI,KAAA,CAAM,CAAC,CAAE,CAAA,IAAK,EAAC,EAAG;AAC5C,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,GAAK,CAAA;AACrC,MAAA,SAAA,CAAU,GAAA,CAAIA,MAAK,MAAM,CAAA;AACzB,MAAA,IAAI,MAAA,KAAW,CAAA,EAAG,KAAA,CAAM,IAAA,CAAKA,IAAG,CAAA;AAAA,IAClC;AACF,EAAA,IAAI,KAAA,CAAM,WAAW,KAAA,CAAM,IAAA;AACzB,IAAA,OAAA;AAAA,MACE,wBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,MAAM,UAAA,GAA4C;AAAA,IAChD,QAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA,EAAe;AAAA,MACb,GAAG,IAAA,CAAK,WAAA,CAAY,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAAA,MACvC,GAAG,iBAAA,CAAkB,aAAA;AAAA,MACrB,GAAG,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,KAAM;AAAA,QAC5B,GAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,KAAS,SAAA,GACnB,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,GACpC,EAAC;AAAA,QACL,GAAI,CAAA,CAAE,IAAA,KAAS,YAAA,GAAA,CACV,EAAE,gBAAA,IAAoB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,MAAM,IACvD;AAAC,OACN;AAAA,KACH;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,QAAA;AAAA,MACZ,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA;AAAA,MACrC,OAAA,EAAS,aAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ,GACF;AACA,EAAA,OAAO,OAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,OAAM,GAChC;AAAA,IACE,GAAG,UAAA;AAAA,IACH,OAAA,EAAS,IAAA;AAAA,IACT,IAAA;AAAA,IACA,kBAAkB,CAAC,GAAG,MAAA,CAAO,IAAA,EAAM,CAAA,CAAE,MAAA;AAAA,MACnC,CAACA,IAAAA,KAAQ,CAAC,UAAA,CAAW,IAAIA,IAAG;AAAA;AAC9B,GACF;AACN;ACrVO,IAAM,qBAAA,GAAwBI,EAClC,IAAA,CAAK;AAAA,EACJ,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,wBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA,EACA,iBAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,sBAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,0CAA0C,CAAA;AC3B/C,IAAM,uBAAA,GAA0BA,EACpC,IAAA,CAAK;AAAA,EACJ,uBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,6CAA6C,CAAA;AAIlD,IAAM,0BAAA,GAA6BA,EACvC,IAAA,CAAK;AAAA,EACJ,WAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,yCAAyC,CAAA;AAI9C,IAAM,wBAAA,GAA2BA,EACrC,MAAA,CAAO;AAAA;AAAA;AAAA,EAGN,MAAA,EAAQ,sBAAsB,QAAA,EAAS;AAAA,EACvC,OAAA,EAASA,CAAAA,CAAE,KAAA,CAAM,uBAAuB,EAAE,QAAA,EAAS;AAAA,EACnD,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,0BAA0B,EAAE,QAAA,EAAS;AAAA,EACzD,wBAAwBA,CAAAA,CACrB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,0EAA0E,CAAA;AAAA,EACtF,uBAAuBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACrG,uBAAuBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACrG,yBAAyBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAC3G,sBAAsBA,CAAAA,CACnB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,uFAAuF,CAAA;AAAA,EACnG,iBAAiBA,CAAAA,CACd,OAAA,GACA,QAAA,EAAS,CACT,SAAS,2DAA2D,CAAA;AAAA,EACvE,oBAAoBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EACjG,uBAAuBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,EAC9F,iBAAiBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,2CAA2C,CAAA;AAAA,EAC5F,qBAAqBA,CAAAA,CAClB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,gEAAgE,CAAA;AAAA,EAC5E,uBAAuBA,CAAAA,CACpB,OAAA,GACA,QAAA,EAAS,CACT,SAAS,2DAA2D,CAAA;AAAA,EACvE,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD;AAC7F,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,sBAAsB,CAAA,CACjC,SAAS,iFAAkF,CAAA;;;ACnEvF,IAAM,uBAAA,GAA0BA,CAAAA,CACpC,IAAA,CAAK,CAAC,MAAA,EAAQ,cAAA,EAAgB,QAAA,EAAU,YAAA,EAAc,KAAA,EAAO,SAAS,CAAC,CAAA,CACvE,SAAS,6CAA6C,CAAA;AAIlD,IAAM,aAAA,GAAgBA,EAC1B,MAAA,CAAO;AAAA,EACN,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC3E,QAAA,EAAU,qBAAA;AAAA,EACV,SAAA,EAAWA,CAAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAClF,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4DAA4D,CAAA;AAAA,EACvG,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EACzF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2EAA2E,CAAA;AAAA,EAChH,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAChG,iBAAiBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC5F,iBAAA,EAAmB,wBAAwB,QAAA,EAAS;AAAA,EACpD,WAAA,EAAa,yBAAyB,QAAA,EAAS;AAAA,EAC/C,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAC9F,oBAAoBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uDAAuD,CAAA;AAAA,EAC3G,wBAAwBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,mDAAmD;AAC7G,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,WAAW,CAAA,CACtB,SAAS,uDAAuD,CAAA;AClB5D,IAAM,uBAAA,GAA0BA,CAAAA,CACpC,IAAA,CAAK,CAAC,OAAA,EAAS,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC,CAAA,CACrD,QAAA,CAAS,+FAA0F,CAAA;ACT/F,IAAM,oBAAA,GAAuBA,EACjC,IAAA,CAAK;AAAA,EACJ,UAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,qCAAqC,CAAA;AAI1C,IAAM,mBAAA,GAAsBA,EAChC,IAAA,CAAK;AAAA,EACJ,UAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,iDAAiD,CAAA;AAItD,IAAM,kBAAA,GAAqBA,EAC/B,MAAA,CAAO;AAAA,EACN,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kDAAkD,CAAA;AAAA,EAC/E,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,6CAA6C,CAAA;AAAA,EACvE,MAAA,EAAQ,mBAAA;AAAA,EACR,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EACtF,IAAIA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACnF,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,EAC9E,WAAWA,CAAAA,CACR,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iFAAiF,CAAA;AAAA,EAC7F,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC;AAC5E,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,gBAAgB,CAAA,CAC3B,SAAS,8CAA8C,CAAA;AAIhBA,EACvC,MAAA,CAAO;AAAA,EACN,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kEAAkE,CAAA;AAAA,EAClG,MAAA,EAAQ,oBAAA;AAAA,EACR,OAAA,EAASA,CAAAA,CAAE,KAAA,CAAM,kBAAkB;AACrC,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,wBAAwB,CAAA,CACnC,SAAS,mDAAmD;;;ACxDxD,IAAM,sBAAA,GAAyBA,EACnC,IAAA,CAAK;AAAA,EACJ,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,2CAA2C,CAAA;AAIhD,IAAM,mBAAA,GAAsBA,EAChC,MAAA,CAAO;AAAA,EACN,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACpE,SAAA,EAAW;AACb,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,iBAAiB,CAAA,CAC5B,SAAS,+CAA+C,CAAA;AAInBA,EACrC,MAAA,CAAO;AAAA,EACN,WAAA,EAAaA,CAAAA,CACV,MAAA,EAAO,CACP,SAAS,8EAA8E,CAAA;AAAA,EAC1F,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,IAAA,EAAM,mBAAA;AAAA,EACN,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EACrF,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EACtF,cAAA,EAAgB,sBAAsB,QAAA,EAAS;AAAA,EAC/C,cAAA,EAAgB,qBAAqB,QAAA,EAAS;AAAA,EAC9C,qBAAA,EAAuBA,CAAAA,CACpB,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,mEAAmE;AACjF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,sBAAsB,CAAA,CACjC,SAAS,wEAAwE;;;ACjCpF,IAAMD,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,MAAM,IAAI,CAAA;AACzC,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAMQ,UAAAA,GAAYR,CAAAA,CACf,MAAA,EAAO,CACP,MAAM,wDAAwD,CAAA;AACjE,IAAMS,cAAa,sBAAA,CAAuB,MAAA,CAAO,EAAE,SAAA,EAAAD,YAAW,CAAA;AACvD,IAAM,2BAAA,GACX;AAEF,SAASD,QAA4B,MAAA,EAAW;AAC9C,EAAA,OAAOP,CAAAA,CACJ,KAAA;AAAA,IACCA,EAAE,YAAA,CAAa;AAAA,MACb,IAAIM,GAAAA,CAAG,QAAA;AAAA,QACL;AAAA,OACF;AAAA,MACA,OAAA,EAASN,EAAE,KAAA,CAAM;AAAA,QACfA,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,UACxB,KAAA,EAAO,MAAA;AAAA,UACP,UAAA,EAAAS,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,UAC9B,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAWD,KAAAA;AAAA,UACX,UAAA,EAAAU,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,UAC1B,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,cAAA,EAAgB,eAAA,EAAiB,aAAa,CAAC;AAAA,SAChE,CAAA;AAAA,QACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM,CAAA;AAAA,QAC7DC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,UAC3B,eAAA,EAAiBD,KAAAA;AAAA,UACjB,UAAA,EAAAU;AAAA,SACD;AAAA,OACF;AAAA,KACF;AAAA,GACH,CACC,GAAA,CAAI,CAAC,CAAA,CACL,QAAA,EAAS;AACd;AAEA,IAAM,oBAAA,GAAuB,uBAAuB,MAAA,CAAO;AAAA,EACzD,MAAA,EAAQT,EAAE,KAAA,CAAM;AAAA,IACd,mBAAA,CAAoB,QAAQ,CAAC,CAAA;AAAA,IAC7B,mBAAA,CAAoB,QAAQ,CAAC;AAAA,GAC9B;AACH,CAAC,CAAA,CAAE,QAAA;AAAA,EACD;AACF,CAAA;AACA,IAAM,YAAA,GAAeA,EAAE,KAAA,CAAM;AAAA,EAC3BA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,KAAA,EAAO,oBAAA,EAAsB,CAAA;AAAA,EAC3EA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACzB,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM;AAC7D,CAAC,CAAA;AACD,IAAM,aAAA,GAAgB,CAAsB,KAAA,KAC1CC,CAAAA,CAAE,aAAa,EAAE,KAAA,EAAO,cAAc,CAAA;AACjC,IAAM,qBAAA,GAAwB;AAAA,EACnC,cAAA,EAAgBO,OAAAA;AAAA,IACdP,CAAAA,CAAE,mBAAmB,MAAA,EAAQ;AAAA,MAC3BA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,OAAA,EAASD,KAAAA,EAAM,CAAA;AAAA,MAChEC,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,WAAW,CAAA,EAAG,OAAA,EAASD,KAAAA,EAAM,CAAA;AAAA,MAC9DC,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,OAAA,EAASD,KAAAA,EAAM;AAAA,KAC9D;AAAA,GACH;AAAA,EACA,SAAA,EAAWQ,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAC7B,qBAAA,EAAuBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACzC,QAAA,EAAUO,OAAAA,CAAO,aAAA,CAAc,qBAAqB,CAAC,CAAA;AAAA,EACrD,IAAA,EAAMA,OAAAA,CAAO,aAAA,CAAcR,KAAI,CAAC,CAAA;AAAA,EAChC,YAAA,EAAcQ,OAAAA,CAAO,aAAA,CAAcR,KAAI,CAAC,CAAA;AAAA,EACxC,eAAA,EAAiBQ,QAAO,aAAA,CAAcP,CAAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAC,CAAC,CAAA;AAAA,EACxD,iBAAA,EAAmBO,OAAAA,CAAO,aAAA,CAAc,uBAAuB,CAAC,CAAA;AAAA,EAChE,wBAAwBA,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EACzD,uBAAuBO,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EACxD,uBAAuBO,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EACxD,yBAAyBO,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAC1D,sBAAsBO,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EACvD,iBAAiBO,OAAAA,CAAO,aAAA,CAAcP,CAAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAClD,WAAA,EAAaO,QAAOR,KAAI;AAC1B;AACO,IAAM,qBAAA,GAAwB;AAAA,EACnC,iBAAA,EAAmBQ,QAAOP,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EAC5C,QAAA,EAAUC,QAAOR,KAAI,CAAA;AAAA,EACrB,OAAA,EAASQ,QAAO,sBAAsB,CAAA;AAAA,EACtC,YAAA,EAAcA,QAAO,oBAAoB,CAAA;AAAA,EACzC,aAAA,EAAeA,OAAAA;AAAA,IACbP,EAAE,IAAA,CAAK,CAAC,SAAS,aAAA,EAAe,WAAA,EAAa,SAAS,CAAC;AAAA,GACzD;AAAA,EACA,YAAA,EAAcO,QAAO,sBAAsB,CAAA;AAAA,EAC3C,OAAA,EAASA,QAAOR,KAAI,CAAA;AAAA,EACpB,OAAA,EAASQ,OAAAA,CAAOP,CAAAA,CAAE,YAAA,CAAa,EAAE,MAAAD,KAAAA,EAAM,YAAA,EAAcA,KAAAA,EAAM,CAAC,CAAA;AAAA,EAC5D,cAAA,EAAgBQ,QAAOC,UAAS,CAAA;AAAA,EAChC,kBAAA,EAAoBD,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACtC,sBAAA,EAAwBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAC1C,SAAA,EAAWO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAC7B,aAAA,EAAeO,QAAO,oBAAoB,CAAA;AAAA,EAC1C,WAAA,EAAaA,QAAOP,CAAAA,CAAE,KAAA,CAAMQ,UAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC;AAC/C;AACO,IAAM,uBAAA,GAA0B;AAAA,EACrC,aAAA,EAAeD,OAAAA,CAAOP,CAAAA,CAAE,OAAA,CAAQ,WAAW,CAAC,CAAA;AAAA,EAC5C,SAAA,EAAWO,QAAOD,GAAE,CAAA;AAAA,EACpB,SAAA,EAAWC,QAAOD,GAAE,CAAA;AAAA,EACpB,YAAA,EAAcC,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAChC,MAAA,EAAQO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAC1B,WAAA,EAAaO,QAAO,oBAAoB,CAAA;AAAA,EACxC,OAAA,EAASA,QAAOR,KAAI,CAAA;AAAA,EACpB,cAAA,EAAgBQ,QAAOC,UAAS;AAClC;AACO,IAAM,0BAAA,GAA6B;AAAA,EACxC,UAAA,EAAYD,QAAOP,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACrC,aAAA,EAAeC,QAAOP,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EAC7C,UAAA,EAAYO,QAAOP,CAAAA,CAAE,KAAA,CAAM,qBAAqB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACxD,iBAAA,EAAmBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACrC,iBAAA,EAAmBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACrC,qBAAA,EAAuBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACzC,YAAA,EAAcO,QAAOP,CAAAA,CAAE,KAAA,CAAMD,KAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC;AAC3C;AACA,KAAA,MAAW,MAAA,IAAU;AAAA,EACnB,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF,CAAA;AACE,EAAA,KAAA,MAAW,CAACW,IAAAA,EAAK,MAAM,CAAA,IAAK,MAAA,CAAO,QAAQ,MAAM,CAAA;AAC/C,IAAC,MAAA,CAAqCA,IAAG,CAAA,GAAI,MAAA,CAAO,QAAA;AAAA,MAClD,WAAWA,IAAAA,CACR,OAAA,CAAQ,mBAAmB,OAAO,CAAA,CAClC,aAAa,CAAA,qFAAA;AAAA,KAClB;AACJ,SAASC,OAAAA,CAAkD,MAAS,MAAA,EAAW;AAC7E,EAAA,OAAOX,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,MAAA,EAAQN,CAAAA,CAAE,YAAA,CAAa,MAAM;AAAA,GAC9B,CAAA;AACH;AACO,IAAM,oBAAA,GAAuBA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC/DW,OAAAA,CAAO,WAAW,qBAAqB,CAAA;AAAA,EACvCA,OAAAA,CAAO,WAAW,qBAAqB,CAAA;AAAA,EACvCA,OAAAA,CAAO,aAAa,uBAAuB,CAAA;AAAA,EAC3CA,OAAAA,CAAO,iBAAiB,0BAA0B;AACpD,CAAC;AACM,IAAM,sBAAA,GAAyBX,EACnC,YAAA,CAAa;AAAA,EACZ,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,mBAAmB,CAAA;AAAA,EACnC,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,EAAA,EAAAM,GAAAA;AAAA,EACA,cAAA,EAAgB,4BAAA;AAAA,EAChB,aAAaN,CAAAA,CAAE,KAAA;AAAA,IACb,0BAA0B,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,6BAA6B;AAAA,KAClD;AAAA,GACH;AAAA,EACA,UAAA,EAAY,aAAA;AAAA,EACZ,UAAA,EAAYD,KAAAA;AAAA,EACZ,UAAUC,CAAAA,CAAE,KAAA,CAAM,oBAAoB,CAAA,CAAE,IAAI,CAAC;AAC/C,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACF,SAASH,OAAAA,CAAkD,MAAS,MAAA,EAAW;AAC7E,EAAA,OAAOG,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,KAAA,EAAON,EACJ,IAAA,CAAK,MAAA,CAAO,KAAK,MAAM,CAAgD,EACvE,QAAA;AAAS,GACb,CAAA;AACH;AACO,IAAM,0BAAA,GAA6BA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACrEH,OAAAA,CAAO,WAAW,qBAAqB,CAAA;AAAA,EACvCA,OAAAA,CAAO,WAAW,qBAAqB,CAAA;AAAA,EACvCA,OAAAA,CAAO,aAAa,uBAAuB,CAAA;AAAA,EAC3CA,OAAAA,CAAO,iBAAiB,0BAA0B;AACpD,CAAC;AACM,IAAM,6BAAA,GAAgCG,EAAE,YAAA,CAAa;AAAA,EAC1D,QAAA,EAAU,0BAA0B,MAAA,CAAO;AAAA,IACzC,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B;AAAA,GAChD,CAAA;AAAA,EACD,MAAA,EAAQ;AACV,CAAC;AACM,IAAM,yCACX,6BAAA,CAA8B,MAAA,CAAO,EAAE,WAAA,EAAaM,KAAI;AAMnD,SAAS,0BAAA,GAAsD;AACpE,EAAA,OAAO;AAAA,IACL,GAAGN,CAAAA,CAAE,YAAA,CAAa,sBAAA,EAAwB;AAAA,MACxC,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;AC9MO,SAAS,yBACdW,OAAAA,EACkD;AAClD,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQA,OAAAA,CAAO,MAAM,CAAA,CAAE,OAAA;AAAA,IAAQ,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,KAAA,CACtD,QAAQ,EAAC,EAA0B,GAAA,CAAI,CAAC,SAAA,MAAe;AAAA,MACvD,KAAA;AAAA,MACA;AAAA,KACF,CAAE;AAAA,GACJ;AACF;AAEO,SAAS,gCACdA,OAAAA,EACoB;AACpB,EAAA,OAAO,wBAAA,CAAyBA,OAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,EAAE,KAAA,EAAO,WAAU,KAAM;AACxE,IAAA,MAAM,KAAA,GAAQ,UAAU,OAAA,CAAQ,KAAA;AAGhC,IAAA,IAAI,UAAU,cAAA,IAAkB,KAAA;AAC9B,MAAA,OAAO,CAAC,KAAoC,CAAA;AAC9C,IAAA,OAAO,KAAA,EAAO,cAAc,IAAA,KAAS,SAAA,GACjC,CAAC,KAAA,CAAM,YAAA,CAAa,SAAU,CAAA,GAC9B,EAAC;AAAA,EACP,CAAC,CAAA;AACH;AACO,SAAS,mBAAA,CAGd,KAAA,EAAgB,MAAA,EAAsB,QAAA,EAAa;AACnD,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA;AACrC,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA;AACV,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,aAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,eAAe,EAAC;AAAA,MAChB,QAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACtC,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,GAAA,GAAM,CAAA,CAAE,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,QAC9B,SAAS,CAAA,CAAE;AAAA,OACb,CAAE;AAAA,KACJ;AACF,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAClB,MAAA,GAAyB,EAAC;AAC5B,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,EAAcP,QAAAA,EAAiB,YAC9C,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAA,EAAAA,QAAAA,EAAS,SAAS,CAAA;AAC3D,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,SAAA,CAAU,IAAA,KAAS,IAAA,CAAK,WAAA,CAAY,MAAA;AACtC,IAAA,OAAA;AAAA,MACE,eAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,MAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,IACxB,KAAK,cAAA,CAAe,MAAA;AAAA,IACpB,GAAG,IAAA,CAAK,WAAA,CAAY,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM;AAAA,GACxC,CAAA;AACD,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AAC5C,IAAA,MAAMM,OAAM,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA,CAAA;AAC7B,IAAA,IAAI,UAAA,CAAW,IAAIA,IAAG,CAAA;AACpB,MAAA,OAAA;AAAA,QACE,eAAA;AAAA,QACA,aAAa,CAAC,CAAA,GAAA,CAAA;AAAA,QACd;AAAA,OACF;AACF,IAAA,UAAA,CAAW,IAAIA,IAAG,CAAA;AAAA,EACpB;AACA,EAAA,SAAS,IAAA,CAAK,GAAmB,CAAA,EAAW;AAC1C,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAU,CAAA,EAAG,GAAG,KAAK,CAAA;AACrB,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EAC5D;AACA,EAAA,IAAA;AAAA,IACE,EAAE,IAAA,EAAM,SAAA,EAAW,OAAO,IAAA,CAAK,UAA6B,CAAA;AAAA,IAC5D;AAAA,GACF;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AAC5C,IAAA,MAAM,KAAK,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,EACvB,GAAA,uBAAU,GAAA,EAAY;AACxB,IAAA,KAAA,MAAW,EAAE,KAAA,EAAO,SAAA,EAAW,GAAE,IAAK,wBAAA,CAAyB,CAAC,CAAA,EAAG;AACjE,MAAA,MAAM,CAAA,GAAI,CAAA,EAAG,EAAE,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA;AAC/B,MAAA,IAAI,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACd,QAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,0CAA0C,CAAA;AACxE,MAAA,GAAA,CAAI,GAAA,CAAI,EAAE,EAAE,CAAA;AACZ,MAAA,MAAM,IAAA,GAAO,EAAE,OAAA,CAAQ,UAAA;AACvB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,SAAA,CAAU,GAAA,CAAI,KAAK,SAAS,CAAA;AAC5B,QAAA,IACE,IAAA,CAAK,SAAS,IAAA,KAAS,YAAA,IACvB,KAAK,OAAA,CAAQ,UAAA,GAAc,KAAK,OAAA,CAAQ,YAAA;AAExC,UAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,wCAAwC,CAAA;AAAA,MACxE;AACA,MAAA,MAAM,KAAA,GAAQ,EAAE,OAAA,CAAQ,KAAA;AACxB,MAAA,IAAI,UAAU,MAAA,EAAW;AACzB,MAAA,IAAI,KAAA,KAAU,kBAAkB,KAAA,KAAU,aAAA;AACxC,QAAA,IAAA,CAAK,OAAyB,CAAC,CAAA;AACjC,MAAA,MAAM,WACJ,KAAA,CACA,YAAA;AACF,MAAA,IAAI,UAAU,IAAA,KAAS,UAAA,EAAY,IAAA,CAAK,QAAA,CAAS,OAAQ,CAAC,CAAA;AAC1D,MAAA,MAAM,UAAA,GACJ,KAAA,KAAU,mBAAA,IACV,KAAA,KAAU,YAAA,IACV,UAAU,WAAA,GACN,SAAA,GACA,KAAA,KAAU,WAAA,GACR,SAAA,GACA,MAAA;AACR,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAMZ,QAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA;AAClD,QAAA,IAAI,IAAI,GAAA,CAAIA,KAAI,CAAA,CAAE,SAASA,KAAAA,CAAK,MAAA;AAC9B,UAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,2BAA2B,CAAA;AACzD,QAAA,KAAA,MAAWQ,IAAAA,IAAMR,KAAAA;AACf,UAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAI,GAAG,UAAU,CAAA,CAAA,EAAIQ,IAAE,CAAA,CAAE,CAAA;AACvC,YAAA,OAAA,CAAQ,YAAA,EAAc,GAAG,oCAAoC,CAAA;AAAA,MACnE;AACA,MAAA,IAAI,KAAA,KAAU,gBAAA,EAAkB,SAAA,CAAU,GAAA,CAAI,KAAe,CAAA;AAC7D,MAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,QAAA,MAAMR,KAAAA,GAAO,KAAA;AACb,QAAA,IAAI,IAAI,GAAA,CAAIA,KAAI,CAAA,CAAE,SAASA,KAAAA,CAAK,MAAA;AAC9B,UAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,4BAA4B,CAAA;AAC1D,QAAAA,MAAK,OAAA,CAAQ,CAAC,MAAM,SAAA,CAAU,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,MACtC;AAAA,IACF;AACA,IAAA,KAAA,MAAWF,IAAAA,IAAO,gCAAgC,CAAC,CAAA;AACjD,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,KAAK,SAAA,CAAUA,IAAAA,CAAI,QAAQ,CAAC,CAAA;AAC7C,QAAA,OAAA;AAAA,UACE,sBAAA;AAAA,UACA,EAAA;AAAA,UACA;AAAA,SACF;AAAA,EACN;AACA,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,QAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA,EAAe,CAAC,GAAG,SAAS,CAAA;AAAA,IAC5B,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,QAAA;AAAA,MACZ,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA;AAAA,MACrC,OAAA,EAAS,aAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ,GACF;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,KAAA,EAAe,GACzC,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,MAAe,IAAA,EAAK;AACpD;;;AChKO,SAAS,sBAAsB,KAAA,EAAgB;AACpD,EAAA,OAAO,mBAAA,CAAoB,OAAO,sBAAA,EAAwB;AAAA,IACxD,QAAA,EAAU,2BAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GACR,CAAA;AACZ;ACSA,IAAMG,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,kCAAkC,CAAA;AAC7E,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAMc,SAAAA,GAAWd,CAAAA,CACd,MAAA,EAAO,CACP,MAAM,6CAA6C,CAAA;AACtD,IAAMe,SAAAA,GAAWf,CAAAA,CACd,MAAA,EAAO,CACP,KAAA;AAAA,EACC;AACF,CAAA;AACK,IAAM,0BAAA,GAA6BA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACrEA,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,aAAa,GAAG,CAAA;AAAA,EACjDA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACxB,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACDA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACzB,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,aAAa,CAAA,EAAG,aAAA,EAAeM,GAAAA,EAAI;AACtE,CAAC;AACM,IAAM,mBAAA,GAAsBN,EAChC,YAAA,CAAa;AAAA,EACZ,MAAA,EAAQ,sBAAsB,QAAA,EAAS;AAAA,EACvC,SAASA,CAAAA,CACN,KAAA,CAAM,uBAAuB,CAAA,CAC7B,UAAS,CACT,QAAA;AAAA,IACC;AAAA,GACF;AAAA,EACF,YAAYA,CAAAA,CACT,KAAA,CAAM,0BAA0B,CAAA,CAChC,UAAS,CACT,QAAA;AAAA,IACC;AAAA,GACF;AAAA,EACF,mBAAA,EAAqBA,EAClB,IAAA,CAAK,CAAC,cAAc,cAAA,EAAgB,SAAS,CAAC,CAAA,CAC9C,QAAA,EAAS;AAAA,EACZ,mBAAA,EAAqBA,EAClB,IAAA,CAAK,CAAC,eAAe,iBAAA,EAAmB,SAAS,CAAC,CAAA,CAClD,QAAA,EAAS;AAAA,EACZ,KAAA,EAAOD,MAAK,QAAA;AACd,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACF,IAAMiB,OAAAA,GAAS;AAAA,EACb,EAAA,EAAAV,GAAAA;AAAA,EACA,UAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAOP,KAAAA;AAAA,EACP,OAAA,EAAS,0BAAA;AAAA,EACT,UAAA,EAAYC,EAAE,KAAA,CAAMc,SAAQ,EAAE,GAAA,CAAI,CAAC,EAAE,QAAA;AACvC,CAAA;AACO,IAAM,6BAAA,GAAgCd,EAAE,YAAA,CAAa;AAAA,EAC1D,GAAGgB,OAAAA;AAAA,EACH,IAAA,EAAMhB,CAAAA,CAAE,OAAA,CAAQ,kBAAkB,CAAA;AAAA,EAClC,IAAA,EAAAD,KAAAA;AAAA,EACA,aAAA,EAAeA,MAAK,QAAA,EAAS;AAAA,EAC7B,UAAA,EAAY,0BAAA,CAA2B,OAAA,CAAQ,CAAC,EAAE,KAAA,CAAM;AAC1D,CAAC;AACD,IAAMkB,WAAAA,GAAa;AAAA,EACjB,GAAGD,OAAAA;AAAA,EACH,IAAA,EAAMhB,CAAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMe,SAAQ,CAAA;AAAA,EAC3B,gBAAA,EAAkBf,CAAAA,CAAE,KAAA,CAAM,+BAA+B,EAAE,QAAA,EAAS;AAAA,EACpE,eAAA,EAAiBA,CAAAA,CAAE,KAAA,CAAM,sCAAsC,EAAE,QAAA,EAAS;AAAA,EAC1E,SAAA,EAAWD;AACb,CAAA;AACO,IAAM,6BAAA,GAAgCC,EAAE,YAAA,CAAa;AAAA,EAC1D,GAAGiB,WAAAA;AAAA,EACH,MAAA,EAAQjB,CAAAA,CAAE,OAAA,CAAQ,YAAY;AAChC,CAAC;AACM,IAAM,2BAAA,GAA8BA,EAAE,YAAA,CAAa;AAAA,EACxD,GAAGiB,WAAAA;AAAA,EACH,MAAA,EAAQjB,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC5B,OAAA,EAASA,EAAE,IAAA,CAAK,CAAC,YAAY,WAAA,EAAa,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,EACnE,WAAA,EAAaD,KAAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,SAAA,EAAWC,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,8CAA8C,CAAA;AAAA,EAC1E,aAAA,EAAeD,KAAAA;AAAA,EACf,UAAA,EAAYC,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC9C,aAAA,EAAe,oBAAoB,QAAA;AACrC,CAAC;AACM,IAAM,6BAAA,GAAgCA,EAAE,KAAA,CAAM;AAAA,EACnD,6BAAA;AAAA,EACA,6BAAA;AAAA,EACA;AACF,CAAC;AACM,IAAM,gCAAA,GACX;AACK,IAAM,sCAAA,GAAyC;AAE/C,IAAM,0BAAA,GAA6BA,EAAE,YAAA,CAAa;AAAA,EACvD,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,EAAA,EAAAM,GAAAA;AAAA,EACA,aAAaN,CAAAA,CAAE,KAAA;AAAA,IACb,0BAA0B,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,6BAA6B;AAAA,KAClD;AAAA,GACH;AAAA,EACA,YAAYA,CAAAA,CAAE,KAAA;AAAA,IACZ,0BAA0B,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B;AAAA,KAChD;AAAA,GACH;AAAA,EACA,WAAA,EAAa,6BAAA;AAAA,EACb,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,6BAA6B,CAAA;AAAA,EAC7C,UAAA,EAAY,8BAA8B,KAAA,CAAM;AAClD,CAAC;AAaM,SAAS,8BAAA,GAA0D;AACxE,EAAA,OAAO;AAAA,IACL,GAAGA,CAAAA,CAAE,YAAA,CAAa,0BAAA,EAA4B;AAAA,MAC5C,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;AC5IA,IAAMkB,MAAAA,GAAQ,CAAC,KAAA,MAAmB;AAAA,EAChC,IAAA,EAAM,SAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA,EAAW;AACb,CAAA,CAAA;AACA,IAAMd,QAAAA,GAAU,CAAC,IAAA,KACf,IAAA,CACG,IAAI,CAAC,CAAA,KAAM,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAA,CAAE,QAAQ,IAAA,EAAM,IAAI,EAAE,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAC,CAAA,CAAE,CAAA,CACnE,IAAA,CAAK,EAAE,CAAA;AAGL,SAAS,uBAAA,CAGd,KAAA,EAAgB,MAAA,EAAsB,QAAA,EAAa;AACnD,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA;AACrC,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA;AACV,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,aAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,eAAe,EAAC;AAAA,MAChB,QAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAC1C,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,QAAA,EAAU,OAAA;AAAA,QACV,OAAA,EAASA,QAAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAAA,QAC3B,SAAS,KAAA,CAAM;AAAA,OACjB,CAAE;AAAA,KACJ;AACF,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,IAAA,CAAK,WAAW,CAAA;AACvE,EAAA,MAAM,MAAA,GAAsC,kBAAkB,MAAA,CAAO,GAAA;AAAA,IACnE,CAAC,WAAW,EAAE,GAAG,OAAO,OAAA,EAAS,CAAA,YAAA,EAAe,KAAA,CAAM,OAAO,CAAA,CAAA,EAAG;AAAA,GAClE;AACA,EAAA,MAAM,UAAU,CACd,IAAA,EACA,IAAA,EACA,OAAA,KAEA,OAAO,IAAA,CAAK;AAAA,IACV,IAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH,EAAA,MAAM,MAAA,uBAAa,GAAA,EAGjB;AACF,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAyB;AAC3C,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,MAAM,UAAU,IAAI,GAAA;AAAA,IAClB,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACpE;AACA,EAAA,MAAM,WAAW,IAAI,GAAA;AAAA,IACnB,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,QAAA,EAAW,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACtE;AACA,EAAA,MAAM,UAAU,IAAI,GAAA;AAAA,IAClB,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,CAAA,OAAA,EAAU,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC;AAAA,GACpE;AACA,EAAA,MAAM,eAAe,IAAI,GAAA;AAAA,IACvB,IAAA,CAAK,YAAY,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAAS,CAAA,YAAA,EAAe,IAAA,CAAK,EAAE,CAAA,CAAE;AAAA,GACtE;AACA,EAAA,MAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,IACxB,GAAG,QAAQ,IAAA,EAAK;AAAA,IAChB,GAAG,SAAS,IAAA,EAAK;AAAA,IACjB,GAAG,YAAA;AAAA,IACH,GAAG,IAAA,CAAK,WAAA,CAAY,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS,CAAA,UAAA,EAAa,IAAA,CAAK,EAAE,CAAA,CAAE;AAAA,GACpE,CAAA;AACD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAMR,IAAAA,GAAM,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC7B,IAAA,IAAI,MAAA,CAAO,IAAIA,IAAG,CAAA;AAChB,MAAA,OAAA;AAAA,QACE,eAAA;AAAA,QACA,WAAW,CAAC,CAAA,GAAA,CAAA;AAAA,QACZ;AAAA,OACF;AAAA,SACG;AACH,MAAA,MAAA,CAAO,GAAA,CAAIA,MAAK,KAAK,CAAA;AACrB,MAAA,KAAA,CAAM,GAAA,CAAIA,IAAAA,kBAAK,IAAI,GAAA,EAAK,CAAA;AACxB,MAAA,SAAA,CAAU,IAAIA,IAAG,CAAA;AAAA,IACnB;AAAA,EACF;AACA,EAAA,SAAS,OAAA,CAAQ,OAAe,IAAA,EAAoB;AAClD,IAAA,MAAM,QAA0B,EAAC;AACjC,IAAA,SAAA,CAAUsB,MAAAA,CAAM,KAAK,CAAA,EAAG,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,KAAA,MAAW,KAAA,IAAS,KAAA;AAClB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,OAAA,EAAS,MAAM,OAAO,CAAA;AAAA,EACpD;AACA,EAAA,SAAS,OAAA,CAAQtB,IAAAA,EAAa,IAAA,EAAc,KAAA,EAAsB;AAChE,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA;AACpB,MAAA,OAAA;AAAA,QACE,sBAAA;AAAA,QACA,IAAA;AAAA,QACA,+BAA+BA,IAAG,CAAA;AAAA,OACpC;AAAA,SAAA,IACO,KAAA,IAAS,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA,QAAS,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAIA,IAAG,CAAA;AAAA,EAC9D;AACA,EAAA,SAASE,KAAAA,CAAKS,OAAAA,EAAkB,IAAA,EAAc,KAAA,EAAqB;AACjE,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,IAAA,KAAA,MAAW,CAAC,CAAA,EAAGX,IAAG,CAAA,IAAKW,OAAAA,CAAO,SAAQ,EAAG;AACvC,MAAA,IAAI,IAAA,CAAK,IAAIX,IAAG,CAAA;AACd,QAAA,OAAA,CAAQ,iBAAiB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,wBAAwB,CAAA;AACnE,MAAA,IAAA,CAAK,IAAIA,IAAG,CAAA;AACZ,MAAA,OAAA,CAAQA,MAAK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,CAAC,IAAI,KAAK,CAAA;AAAA,IACpC;AAAA,EACF;AACA,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA;AACxE,EAAA,IAAI,SAAA,CAAU,IAAA,KAAS,IAAA,CAAK,WAAA,CAAY,MAAA;AACtC,IAAA,OAAA;AAAA,MACE,eAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,GAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,SAAA,GAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAC;AAAA,MACpE,GAAI,MAAM,IAAA,KAAS,YAAA,GAAgB,MAAM,gBAAA,IAAoB,KAAM;AAAC,KACtE;AACA,IAAA,KAAA,MAAWA,IAAAA,IAAO,WAAA;AAChB,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,KAAK,SAAA,CAAUA,IAAAA,CAAI,QAAQ,CAAC,CAAA;AAC7C,QAAA,OAAA;AAAA,UACE,sBAAA;AAAA,UACA,WAAW,CAAC,CAAA,CAAA;AAAA,UACZ;AAAA,SACF;AACJ,IAAA,IACE,KAAA,CAAM,SAAS,YAAA,IACf,IAAI,KAAK,KAAA,CAAM,gBAAA,IAAoB,EAAC,EAAG,GAAA,CAAI,CAAC,MAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,EACjE,IAAA,KAAA,CAAU,KAAA,CAAM,gBAAA,IAAoB,EAAC,EAAG,MAAA;AAE3C,MAAA,OAAA;AAAA,QACE,eAAA;AAAA,QACA,WAAW,CAAC,CAAA,iBAAA,CAAA;AAAA,QACZ;AAAA,OACF;AAAA,EACJ;AACA,EAAA,MAAM,kBAAkB,IAAI,GAAA;AAAA,IAC1B,IAAA,CAAK,WAAW,GAAA,CAAI,CAAC,MAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC;AAAA,GAC9C;AACA,EAAA,IAAI,eAAA,CAAgB,IAAA,KAAS,IAAA,CAAK,UAAA,CAAW,MAAA;AAC3C,IAAA,OAAA,CAAQ,eAAA,EAAiB,eAAe,0BAA0B,CAAA;AACpE,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAME,KAAAA,GAAO;AAAA,MACX,GAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,QAAA,GAAW,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAC;AAAA,MACnE,GAAI,MAAM,IAAA,KAAS,YAAA,GAAgB,MAAM,eAAA,IAAmB,KAAM;AAAC,KACrE;AACA,IAAA,KAAA,MAAWF,IAAAA,IAAOE,KAAAA;AAChB,MAAA,IAAI,CAAC,eAAA,CAAgB,GAAA,CAAI,KAAK,SAAA,CAAUF,IAAAA,CAAI,QAAQ,CAAC,CAAA;AACnD,QAAA,OAAA;AAAA,UACE,sBAAA;AAAA,UACA,WAAW,CAAC,CAAA,CAAA;AAAA,UACZ;AAAA,SACF;AACJ,IAAA,IAAI,KAAA,CAAM,SAAS,YAAA,EAAc;AAC/B,MAAA,IACE,IAAI,GAAA,CAAA,CAAK,KAAA,CAAM,mBAAmB,EAAC,EAAG,IAAI,CAAC,CAAA,KAAM,KAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA,CAChE,UAAU,KAAA,CAAM,eAAA,IAAmB,EAAC,EAAG,MAAA;AAE1C,QAAA,OAAA;AAAA,UACE,eAAA;AAAA,UACA,WAAW,CAAC,CAAA,gBAAA,CAAA;AAAA,UACZ;AAAA,SACF;AACF,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,UAAA,IAAc,KAAA,CAAM,aAAA,EAAe;AACtD,QAAA,IACE,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,QAAA,IACvB,CAAC,CAAC,SAAA,EAAW,SAAA,EAAW,eAAA,EAAiB,WAAW,CAAA,CAAE,QAAA;AAAA,UACpD,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO;AAAA,SACjC;AAEA,UAAA,OAAA;AAAA,YACE,0BAAA;AAAA,YACA,WAAW,CAAC,CAAA,cAAA,CAAA;AAAA,YACZ;AAAA,WACF;AACF,QAAA,IACE,MAAM,SAAA,CAAU,MAAA,IACb,KAAA,CAAM,eAAA,EAAiB,UAAU,CAAA,CAAA,IACjC,KAAA,CAAM,gBAAA,EAAkB,MAAA,IAAU,MAClC,kBAAA,IAAsB,KAAA,GAClB,MAAM,gBAAA,EAAkB,MAAA,IAAU,IACnC,CAAA,CAAA,KACN,CAAA;AAEA,UAAA,OAAA;AAAA,YACE,sBAAA;AAAA,YACA,WAAW,CAAC,CAAA,cAAA,CAAA;AAAA,YACZ;AAAA,WACF;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AACzB,IAAA,MAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,EAAE,CAAA,CAAA;AAC/B,IAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,CAAA,WAAA,CAAa,CAAA;AAC9C,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,KAAS,aAAA;AACzB,MAAA,OAAA;AAAA,QACE,CAAA,YAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,CAAA;AAAA,QAC1C,GAAG,IAAI,CAAA,sBAAA;AAAA,OACT;AACF,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAAE,MAAK,KAAA,CAAM,UAAA,EAAY,CAAA,EAAG,IAAI,eAAe,KAAK,CAAA;AAClD,MAAA,KAAA,MAAW,CAAC,CAAA,EAAGF,IAAG,KAAK,KAAA,CAAM,UAAA,CAAW,SAAQ,EAAG;AACjD,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,GAAA,CAAIA,IAAG,CAAA;AAC/B,QAAA,IAAI,CAAC,QAAA,EAAU;AACf,QAAA,UAAA,CAAW,IAAIA,IAAG,CAAA;AAClB,QAAA,IACE,SAAS,IAAA,KAAS,KAAA,CAAM,IAAA,IACxB,QAAA,CAAS,UAAU,KAAA,CAAM,KAAA,IACzB,IAAA,CAAK,SAAA,CAAU,SAAS,OAAO,CAAA,KAAM,KAAK,SAAA,CAAU,KAAA,CAAM,OAAO,CAAA,EACjE;AACA,UAAA,OAAA;AAAA,YACE,0BAAA;AAAA,YACA,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,CAAA,CAAA;AAAA,YACvB;AAAA,WACF;AAAA,QACF;AACA,QAAA,IACE,QAAA,CAAS,IAAA,KAAS,YAAA,IAClB,QAAA,CAAS,WAAW,UAAA,IACpB,KAAA,CAAM,IAAA,KAAS,YAAA,KACd,MAAM,MAAA,KAAW,UAAA,IAChB,QAAA,CAAS,WAAA,KAAgB,MAAM,WAAA,CAAA,EACjC;AACA,UAAA,OAAA;AAAA,YACE,4BAAA;AAAA,YACA,CAAA,EAAG,IAAI,CAAA,YAAA,EAAe,CAAC,CAAA,CAAA;AAAA,YACvB;AAAA,WACF;AAAA,QACF;AACA,QAAA,IACE,aAAA,CAAcsB,MAAAA,CAAM,QAAA,CAAS,UAAU,CAAA,EAAGA,OAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,CAAA,EACrE;AACA,UAAA,OAAA;AAAA,YACE,sBAAA;AAAA,YACA,GAAG,IAAI,CAAA,WAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,kBAAA,EAAoB;AACrC,MAAA,OAAA,CAAQ,KAAA,CAAM,UAAA,CAAW,SAAA,EAAW,CAAA,EAAG,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAClE,MAAA,MAAM,MAAA,GACJ,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,IACtC,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA;AACzC,MAAA,IACE,MAAA,EAAQ,MAAA,IACR,KAAA,CAAM,UAAA,CAAW,YAAA,IACjB,MAAA,CAAO,MAAA,CAAO,KAAA,KAAU,KAAA,CAAM,UAAA,CAAW,YAAA,CAAa,KAAA,EACtD;AACA,QAAA,OAAA;AAAA,UACE,wBAAA;AAAA,UACA,GAAG,IAAI,CAAA,wBAAA,CAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,OAAA;AACjC,MAAA,IACE,OAAA,EAAS,IAAA,KAAS,YAAA,IAClB,OAAA,CAAQ,aAAa,OAAA,CAAQ,YAAA;AAE7B,QAAA,OAAA;AAAA,UACE,eAAA;AAAA,UACA,GAAG,IAAI,CAAA,8BAAA,CAAA;AAAA,UACP;AAAA,SACF;AAAA,IACJ,CAAA,MAAO;AACL,MAAApB,MAAK,KAAA,CAAM,SAAA,EAAW,CAAA,EAAG,IAAI,cAAc,KAAK,CAAA;AAChD,MAAA,IAAI,KAAA,CAAM,WAAW,UAAA,EAAY;AAC/B,QAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,CAAA;AAChD,QAAA,IACE,aAAA,CAAcoB,OAAM,KAAA,CAAM,WAAW,GAAGA,MAAAA,CAAM,KAAA,CAAM,UAAU,CAAC,CAAA,GAAI,CAAA;AAEnE,UAAA,OAAA;AAAA,YACE,wBAAA;AAAA,YACA,GAAG,IAAI,CAAA,YAAA,CAAA;AAAA,YACP;AAAA,WACF;AACF,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AAC1C,QAAA,IAAI,CAAC,MAAA;AACH,UAAA,OAAA;AAAA,YACE,sBAAA;AAAA,YACA,GAAG,IAAI,CAAA,UAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,aAAA,IACO,MAAA,CAAO,YAAY,KAAA,CAAM,aAAA;AAChC,UAAA,OAAA;AAAA,YACE,yBAAA;AAAA,YACA,GAAG,IAAI,CAAA,cAAA,CAAA;AAAA,YACP;AAAA,WACF;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,IAAI,GAAA,CAAI,CAAC,GAAG,MAAM,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAACtB,IAAAA,KAAQ,CAACA,IAAAA,EAAK,CAAC,CAAC,CAAC,CAAA;AAClE,EAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAO;AAC/B,IAAA,KAAA,MAAWA,IAAAA,IAAO,OAAO,SAAA,CAAU,GAAA,CAAIA,MAAK,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,GAAK,CAAC,CAAA;AACrE,EAAA,MAAM,QAAQ,CAAC,GAAG,SAAS,CAAA,CACxB,MAAA,CAAO,CAAC,GAAG,MAAM,CAAA,KAAM,MAAA,KAAW,CAAC,CAAA,CACnC,GAAA,CAAI,CAAC,CAACA,IAAG,MAAMA,IAAG,CAAA;AACrB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA;AAChC,IAAA,KAAA,MAAWA,IAAAA,IAAO,MAAM,GAAA,CAAI,KAAA,CAAM,CAAC,CAAE,CAAA,IAAK,EAAC,EAAG;AAC5C,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAIA,IAAG,CAAA,GAAK,CAAA;AACrC,MAAA,SAAA,CAAU,GAAA,CAAIA,MAAK,MAAM,CAAA;AACzB,MAAA,IAAI,MAAA,KAAW,CAAA,EAAG,KAAA,CAAM,IAAA,CAAKA,IAAG,CAAA;AAAA,IAClC;AACF,EAAA,IAAI,KAAA,CAAM,WAAW,KAAA,CAAM,IAAA;AACzB,IAAA,OAAA;AAAA,MACE,wBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AACF,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,QAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA,EAAe;AAAA,MACb,GAAG,IAAA,CAAK,WAAA,CAAY,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAAA,MACvC,GAAG,IAAA,CAAK,UAAA,CAAW,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAAA,MACtC,GAAG,iBAAA,CAAkB,aAAA;AAAA,MACrB,GAAG,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,KAAM;AAAA,QAC5B,GAAI,CAAA,CAAE,OAAA,CAAQ,IAAA,KAAS,SAAA,GACnB,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,GACpC,EAAC;AAAA,QACL,GAAI,CAAA,CAAE,IAAA,KAAS,YAAA,GAAA,CACV,EAAE,gBAAA,IAAoB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,MAAM,IACvD;AAAC,OACN;AAAA,KACH;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,QAAA;AAAA,MACZ,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,QAAA,GAAW,QAAA;AAAA,MACrC,OAAA,EAAS,aAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ,GACF;AACA,EAAA,OAAO,OAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,OAAe,GACzC;AAAA,IACE,GAAG,UAAA;AAAA,IACH,OAAA,EAAS,IAAA;AAAA,IACT,IAAA;AAAA,IACA,kBAAkB,CAAC,GAAG,MAAA,CAAO,IAAA,EAAM,CAAA,CAAE,MAAA;AAAA,MACnC,CAACA,IAAAA,KAAQ,CAAC,UAAA,CAAW,IAAIA,IAAG;AAAA;AAC9B,GACF;AACN;;;AC3UO,SAAS,0BACd,KAAA,EACiC;AACjC,EAAA,OAAO,uBAAA,CAAwB,OAAO,0BAAA,EAA4B;AAAA,IAChE,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,gCAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GACR,CAAA;AACZ;AC9CA,IAAMG,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,MAAM,IAAI,CAAA;AACzC,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAMQ,UAAAA,GAAYR,CAAAA,CACf,MAAA,EAAO,CACP,MAAM,wDAAwD,CAAA;AACjE,IAAMS,cAAa,sBAAA,CAAuB,MAAA,CAAO,EAAE,SAAA,EAAAD,YAAW,CAAA;AACvD,SAASD,QAA4B,MAAA,EAAW;AACrD,EAAA,OAAOP,CAAAA,CACJ,KAAA;AAAA,IACCA,EAAE,YAAA,CAAa;AAAA,MACb,IAAIM,GAAAA,CAAG,QAAA;AAAA,QACL;AAAA,OACF;AAAA,MACA,OAAA,EAASN,EAAE,KAAA,CAAM;AAAA,QACfA,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,UACxB,KAAA,EAAO,MAAA;AAAA,UACP,UAAA,EAAAS,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,UAC9B,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAWD,KAAAA;AAAA,UACX,UAAA,EAAAU,WAAAA;AAAA,UACA,eAAA,EAAiBV,MAAK,QAAA;AAAS,SAChC,CAAA;AAAA,QACDC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,UAC1B,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,cAAA,EAAgB,eAAA,EAAiB,aAAa,CAAC;AAAA,SAChE,CAAA;AAAA,QACDA,CAAAA,CAAE,YAAA,CAAa,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAQ,UAAU,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM,CAAA;AAAA,QAC7DC,EAAE,YAAA,CAAa;AAAA,UACb,KAAA,EAAOA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,UAC3B,eAAA,EAAiBD,KAAAA;AAAA,UACjB,UAAA,EAAAU;AAAA,SACD;AAAA,OACF;AAAA,KACF;AAAA,GACH,CACC,GAAA,CAAI,CAAC,CAAA,CACL,QAAA,EAAS;AACd;AAEO,SAASE,OAAAA,CACd,MACA,MAAA,EACA;AACA,EAAA,OAAOX,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,MAAA,EAAQN,CAAAA,CAAE,YAAA,CAAa,MAAM;AAAA,GAC9B,CAAA;AACH;AACO,SAASH,OAAAA,CACd,MACA,MAAA,EACA;AACA,EAAA,OAAOG,EAAE,YAAA,CAAa;AAAA,IACpB,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,IACpB,EAAA,EAAAM,GAAAA;AAAA,IACA,KAAA,EAAON,EACJ,IAAA,CAAK,MAAA,CAAO,KAAK,MAAM,CAAgD,EACvE,QAAA;AAAS,GACb,CAAA;AACH;ACjEO,IAAM,kBAAA,GAAqBA,EAC/B,IAAA,CAAK;AAAA,EACJ,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,yBAAA;AAAA,EACA,mBAAA;AAAA,EACA,wBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,uCAAuC,CAAA;AAIbA,EACnC,MAAA,CAAO;AAAA,EACN,YAAA,EAAc,kBAAA;AAAA,EACd,qBAAqBA,CAAAA,CAClB,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iFAAiF,CAAA;AAAA,EAC7F,mBAAmBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,EACtF,cAAA,EAAgBA,CAAAA,CACb,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,6DAA6D,CAAA;AAAA,EACzE,mBAAmBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EACnG,sBAAsBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACrG,wBAAwBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAC1G,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,EAC5E,cAAA,EAAgBA,CAAAA,CACb,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,SAAS,CAAC,CAAA,CAC5C,QAAA,EAAS,CACT,SAAS,uCAAuC;AACrD,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,oBAAoB,CAAA,CAC/B,SAAS,gFAAgF;ACxCrF,IAAM,sBAAA,GAAyBA,EACnC,IAAA,CAAK;AAAA,EACJ,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,gGAAgG,CAAA;AAIrG,IAAM,wBAAA,GAA2BA,EACrC,MAAA,CAAO;AAAA,EACN,MAAA,EAAQ,sBAAA;AAAA,EACR,YAAYA,CAAAA,CACT,MAAA,GACA,QAAA,EAAS,CACT,SAAS,iEAAiE,CAAA;AAAA,EAC7E,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uEAAuE,CAAA;AAAA,EAClG,KAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EACvF,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yEAAyE,CAAA;AAAA,EACnH,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAChG,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACjG,mBAAmBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EACnG,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C;AACtF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,sBAAsB,CAAA,CACjC,SAAS,mEAAmE,CAAA;AAI1CA,EAClC,MAAA,CAAO;AAAA,EACN,OAAA,EAAS,yBAAyB,QAAA,EAAS;AAAA,EAC3C,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,wBAAwB;AAC/C,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,mBAAmB,CAAA,CAC9B,SAAS,oFAAoF;;;AC1ChG,IAAMD,KAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,MAAM,IAAI,CAAA;AACzC,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AACnE,IAAM,OAAOA,CAAAA,CAAE,KAAA,CAAMM,GAAE,CAAA,CAAE,IAAI,CAAC,CAAA;AAC9B,IAAM,GAAA,GAAMN,EAAE,GAAA,EAAI;AACX,IAAM,yBAAA,GAA4BA,EACtC,YAAA,CAAa;AAAA,EACZ,SAAA,EAAWA,CAAAA,CACR,MAAA,EAAO,CACP,MAAM,wDAAwD,CAAA;AAAA,EACjE,MAAA,EAAQA,EAAE,YAAA,CAAa;AAAA,IACrB,SAAA,EAAWA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC7B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,yBAAyB;AAAA,GAClD;AACH,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACK,IAAM,mBAAA,GAAsB;AAAA,EACjC,KAAA,EAAOO,QAAOR,KAAI,CAAA;AAAA,EAClB,IAAA,EAAMQ,QAAO,gBAAgB,CAAA;AAAA,EAC7B,MAAA,EAAQA,QAAOR,KAAI,CAAA;AAAA,EACnB,YAAA,EAAcQ,QAAOR,KAAI,CAAA;AAAA,EACzB,QAAA,EAAUQ,QAAO,oBAAoB,CAAA;AAAA,EACrC,eAAA,EAAiBA,QAAOR,KAAI,CAAA;AAAA,EAC5B,cAAA,EAAgBQ,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAClC,WAAA,EAAaO,QAAO,GAAG,CAAA;AAAA,EACvB,UAAA,EAAYA,QAAO,GAAG,CAAA;AAAA,EACtB,SAAA,EAAWA,QAAOR,KAAI,CAAA;AAAA,EACtB,eAAA,EAAiBQ,OAAAA;AAAA,IACfP,CAAAA,CAAE,aAAa,EAAE,KAAA,EAAOA,EAAE,OAAA,EAAQ,EAAG,OAAA,EAASD,KAAAA,EAAM;AAAA,GACtD;AAAA,EACA,YAAA,EAAcQ,QAAO,kBAAkB,CAAA;AAAA,EACvC,iBAAA,EAAmBA,QAAOR,KAAI,CAAA;AAAA,EAC9B,cAAA,EAAgBQ,QAAOP,CAAAA,CAAE,KAAA,CAAMD,KAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EAC3C,iBAAA,EAAmBQ,QAAOR,KAAI,CAAA;AAAA,EAC9B,sBAAA,EAAwBQ,QAAOR,KAAI,CAAA;AAAA,EACnC,mBAAA,EAAqBQ,QAAOR,KAAI,CAAA;AAAA,EAChC,SAAA,EAAWQ,QAAOP,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACzC,cAAA,EAAgBO,OAAAA,CAAOP,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAQ,SAAA,EAAW,OAAA,EAAS,SAAS,CAAC,CAAC,CAAA;AAAA,EACtE,oBAAA,EAAsBO,QAAOR,KAAI,CAAA;AAAA,EACjC,gBAAA,EAAkBQ,OAAAA,CAAOP,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,EACnD,KAAA,EAAOO,QAAOR,KAAI;AACpB;AACO,IAAM,mBAAA,GAAsB;AAAA,EACjC,SAAA,EAAWQ,OAAAA;AAAA,IACTP,EAAE,IAAA,CAAK,CAAC,YAAY,SAAA,EAAW,gBAAA,EAAkB,kBAAkB,CAAC;AAAA,GACtE;AAAA,EACA,UAAA,EAAYO,QAAO,oBAAoB,CAAA;AAAA,EACvC,SAAA,EAAWA,QAAOR,KAAI,CAAA;AAAA,EACtB,SAAA,EAAWQ,QAAOR,KAAI,CAAA;AAAA,EACtB,OAAA,EAASQ,QAAOR,KAAI,CAAA;AAAA,EACpB,KAAA,EAAOQ,QAAOR,KAAI;AACpB;AACA,IAAM,YAAA,GAAeC,CAAAA,CAAE,kBAAA,CAAmB,WAAA,EAAa;AAAA,EACrDA,EAAE,YAAA,CAAa;AAAA,IACb,SAAA,EAAWA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC7B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,4BAA4B;AAAA,GACrD,CAAA;AAAA,EACDA,EAAE,YAAA,CAAa;AAAA,IACb,SAAA,EAAWA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC7B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,6BAA6B;AAAA,GACtD,CAAA;AAAA,EACDA,EAAE,YAAA,CAAa;AAAA,IACb,SAAA,EAAWA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,IAC3B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,4BAA4B;AAAA,GACrD,CAAA;AAAA,EACDA,EAAE,YAAA,CAAa;AAAA,IACb,SAAA,EAAWA,CAAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,IAC1B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,4BAA4B;AAAA,GACrD;AACH,CAAC,CAAA;AACM,IAAM,qBAAA,GAAwB;AAAA,EACnC,cAAA,EAAgBO,OAAAA;AAAA,IACdP,CAAAA,CACG,KAAA;AAAA,MACCA,EAAE,YAAA,CAAa;AAAA,QACb,IAAA,EAAM,YAAA;AAAA,QACN,SAAA,EAAWA,EAAE,KAAA,CAAM;AAAA,UACjBA,EAAE,YAAA,CAAa;AAAA,YACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,YAC1B,SAAA,EAAW;AAAA,WACZ,CAAA;AAAA,UACDA,EAAE,YAAA,CAAa;AAAA,YACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,sBAAsB,CAAA;AAAA,YACtC,WAAA,EAAaD;AAAA,WACd;AAAA,SACF;AAAA,OACF;AAAA,KACH,CACC,IAAI,CAAC;AAAA,GACV;AAAA,EACA,MAAA,EAAQQ,QAAOR,KAAI,CAAA;AAAA,EACnB,YAAA,EAAcQ,QAAOR,KAAI,CAAA;AAAA,EACzB,KAAA,EAAOQ,QAAOR,KAAI,CAAA;AAAA,EAClB,QAAA,EAAUQ,QAAOR,KAAI,CAAA;AAAA,EACrB,gBAAA,EAAkBQ,QAAOR,KAAI,CAAA;AAAA,EAC7B,oBAAA,EAAsBQ,QAAO,oBAAoB,CAAA;AAAA,EACjD,cAAA,EAAgBA,OAAAA;AAAA,IACdP,EAAE,YAAA,CAAa;AAAA,MACb,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,MACpC,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,IAAI,IAAI,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MACvC,QAAA,EAAUA,EACP,YAAA,CAAa;AAAA,QACZ,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,QAChB,IAAA,EAAMA,EAAE,KAAA,CAAM,CAACD,OAAMC,CAAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA,QAC9B,KAAA,EAAOD,MAAK,QAAA;AAAS,OACtB,EACA,QAAA;AAAS,KACb;AAAA,GACH;AAAA,EACA,iBAAA,EAAmBQ,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACrC,gBAAA,EAAkBO,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EACpC,cAAA,EAAgBO,QAAOR,KAAI,CAAA;AAAA,EAC3B,aAAA,EAAeQ,QAAO,oBAAoB,CAAA;AAAA,EAC1C,0BAAA,EAA4BA,QAAOP,CAAAA,CAAE,KAAA,CAAMD,KAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACvD,sBAAA,EAAwBQ,QAAO,IAAI,CAAA;AAAA,EACnC,WAAA,EAAaA,QAAO,oBAAoB,CAAA;AAAA,EACxC,KAAA,EAAOA,QAAOR,KAAI;AACpB;AACO,IAAM,oBAAA,GAAuB;AAAA,EAClC,MAAA,EAAQQ,QAAO,mBAAmB,CAAA;AAAA,EAClC,UAAA,EAAYA,QAAO,oBAAoB,CAAA;AAAA,EACvC,IAAA,EAAMA,QAAOR,KAAI,CAAA;AAAA,EACjB,EAAA,EAAIQ,QAAOR,KAAI,CAAA;AAAA,EACf,QAAA,EAAUQ,QAAOR,KAAI,CAAA;AAAA,EACrB,SAAA,EAAWQ,QAAOR,KAAI,CAAA;AAAA,EACtB,KAAA,EAAOQ,QAAOR,KAAI;AACpB;AACO,IAAM,wBAAA,GAA2B;AAAA,EACtC,KAAA,EAAOQ,OAAAA;AAAA,IACLP,EAAE,YAAA,CAAa;AAAA,MACb,MAAA,EAAQ,sBAAA;AAAA,MACR,UAAA,EAAYD,MAAK,QAAA,EAAS;AAAA,MAC1B,KAAA,EAAOA,KAAAA;AAAA,MACP,GAAA,EAAK,IAAI,QAAA,EAAS;AAAA,MAClB,KAAA,EAAOA,MAAK,QAAA;AAAS,KACtB;AAAA,GACH;AAAA,EACA,cAAA,EAAgBQ,OAAAA,CAAOP,CAAAA,CAAE,OAAA,EAAS,CAAA;AAAA,EAClC,KAAA,EAAOO,QAAOR,KAAI;AACpB;AACO,IAAM,qBAAA,GAAwB;AAAA,EACnC,SAAA,EAAWQ,QAAO,oBAAoB,CAAA;AAAA,EACtC,KAAA,EAAOA,QAAOR,KAAI,CAAA;AAAA,EAClB,MAAA,EAAQQ,QAAOR,KAAI,CAAA;AAAA,EACnB,aAAA,EAAeQ,QAAOR,KAAI,CAAA;AAAA,EAC1B,OAAA,EAASQ,OAAAA;AAAA,IACPP,CAAAA,CAAE,mBAAmB,MAAA,EAAQ;AAAA,MAC3BA,EAAE,YAAA,CAAa;AAAA,QACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,QACxB,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,cAAA,EAAgB,SAAS,CAAC;AAAA,OACzD,CAAA;AAAA,MACDA,EAAE,YAAA,CAAa;AAAA,QACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,QAC1B,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,gBAAA,EAAkB,SAAS,CAAC;AAAA,OACxD;AAAA,KACF;AAAA,GACH;AAAA,EACA,KAAA,EAAOO,QAAOR,KAAI;AACpB;AACA,KAAA,MAAW,MAAA,IAAU;AAAA,EACnB,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF,CAAA;AACE,EAAA,KAAA,MAAW,CAACW,IAAAA,EAAK,MAAM,CAAA,IAAK,MAAA,CAAO,QAAQ,MAAM,CAAA;AAC/C,IAAC,MAAA,CAAqCA,IAAG,CAAA,GAAI,MAAA,CAAO,QAAA;AAAA,MAClD,WAAWA,IAAAA,CAAI,OAAA,CAAQ,mBAAmB,OAAO,CAAA,CAAE,aAAa,CAAA,sGAAA;AAAA,KAClE;AACJ,IAAM,OAAA,GAAUC,OAAAA,CAAO,gBAAA,EAAkB,mBAAmB,EAAE,MAAA,CAAO;AAAA,EACnE,QAAA,EAAU;AACZ,CAAC,CAAA;AACD,IAAM,QAAA,GAAWA,OAAAA,CAAO,kBAAA,EAAoB,qBAAqB,EAAE,MAAA,CAAO;AAAA,EACxE,QAAA,EAAU;AACZ,CAAC,CAAA;AACD,IAAM,aAAA,GAAgBA,OAAAA,CAAO,gBAAA,EAAkB,mBAAmB,EAAE,MAAA,CAAO;AAAA,EACzE,SAAA,EAAWL;AACb,CAAC,CAAA;AACD,IAAM,OAAA,GAAUK,OAAAA,CAAO,wBAAA,EAA0B,oBAAoB,EAAE,MAAA,CAAO;AAAA,EAC5E,UAAA,EAAYL,GAAAA;AAAA,EACZ,WAAA,EAAaN,CAAAA,CACV,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IAC1BA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,QAAQ,CAAA,EAAG,EAAA,EAAAM,GAAAA,EAAI,CAAA;AAAA,IAChDN,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,IAC3CA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,SAAS,CAAA,EAAG,MAAA,EAAQD,KAAAA,EAAM;AAAA,GAC5D,CAAA,CACA,QAAA;AAAA,IACC;AAAA;AAEN,CAAC,CAAA;AACD,IAAMoB,WAAAA,GAAaR,OAAAA;AAAA,EACjB,qBAAA;AAAA,EACA;AACF,CAAA,CAAE,MAAA,CAAO;AAAA,EACP,OAAA,EAASX,CAAAA,CACN,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IAC1BA,CAAAA,CAAE,aAAa,EAAE,IAAA,EAAMA,EAAE,OAAA,CAAQ,aAAa,GAAG,CAAA;AAAA,IACjDA,CAAAA,CAAE,YAAA,CAAa,EAAE,IAAA,EAAMA,CAAAA,CAAE,QAAQ,gBAAgB,CAAA,EAAG,SAAA,EAAWM,GAAAA,EAAI;AAAA,GACpE,CAAA,CACA,QAAA;AAAA,IACC;AAAA;AAEN,CAAC,CAAA;AACD,IAAM,KAAA,GAAQK,OAAAA,CAAO,kBAAA,EAAoB,qBAAqB,EAAE,MAAA,CAAO;AAAA,EACrE,YAAA,EAAcL,GAAAA;AAAA,EACd,qBAAA,EAAuBA;AACzB,CAAC,CAAA;AACM,IAAM,oBAAA,GAAuBN,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAC/D,GAAG,oBAAA,CAAqB,OAAA;AAAA,EACxB,OAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACAmB,WAAAA;AAAA,EACA;AACF,CAAC;AACM,IAAM,2BAAA,GACX;AACK,IAAM,sBAAA,GAAyB,uBAAuB,MAAA,CAAO;AAAA,EAClE,aAAA,EAAenB,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,UAAUA,CAAAA,CAAE,KAAA,CAAM,oBAAoB,CAAA,CAAE,IAAI,CAAC;AAC/C,CAAC,CAAA,CAAE,QAAA;AAAA,EACD;AACF;AACO,IAAM,0BAAA,GAA6BA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACrE,GAAG,0BAAA,CAA2B,OAAA;AAAA,EAC9BH,OAAAA,CAAO,kBAAkB,mBAAmB,CAAA;AAAA,EAC5CA,OAAAA,CAAO,kBAAkB,mBAAmB,CAAA;AAAA,EAC5CA,OAAAA,CAAO,oBAAoB,qBAAqB,CAAA;AAAA,EAChDA,OAAAA,CAAO,0BAA0B,oBAAoB,CAAA;AAAA,EACrDA,OAAAA,CAAO,uBAAuB,wBAAwB,CAAA;AAAA,EACtDA,OAAAA,CAAO,oBAAoB,qBAAqB;AAClD,CAAC;AACM,IAAM,6BAAA,GAAgCG,EAAE,YAAA,CAAa;AAAA,EAC1D,QAAA,EAAU,0BAA0B,MAAA,CAAO;AAAA,IACzC,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B;AAAA,GAChD,CAAA;AAAA,EACD,MAAA,EAAQ;AACV,CAAC;AACM,IAAM,yCACX,6BAAA,CAA8B,MAAA,CAAO,EAAE,WAAA,EAAaM,KAAI;AAOnD,SAAS,0BAAA,GAAsD;AACpE,EAAA,OAAO;AAAA,IACL,GAAGN,CAAAA,CAAE,YAAA,CAAa,sBAAA,EAAwB;AAAA,MACxC,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;ACjQO,SAAS,2BACdW,OAAAA,EACuB;AACvB,EAAA,MAAM,SAAS,UAAA,IAAcA,OAAAA,GAAS,CAACA,OAAAA,CAAO,QAAQ,IAAI,EAAC;AAC3D,EAAA,IAAIA,OAAAA,CAAO,IAAA,KAAS,kBAAA,EAAoB,OAAO,MAAA;AAC/C,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,GAAA,CAAIA,OAAAA,CAAO,MAAA,CAAO,cAAA,IAAkB,EAAC,EAAG,OAAA;AAAA,MAAQ,CAAC,CAAA,KAC/C,OAAA,IAAW,EAAE,OAAA,GACT,CAAA,CAAE,QAAQ,KAAA,CAAM,OAAA;AAAA,QAAQ,CAAC,CAAA,KACvB,CAAA,CAAE,SAAA,CAAU,IAAA,KAAS,UAAA,GAAa,CAAC,CAAA,CAAE,SAAA,CAAU,SAAS,CAAA,GAAI;AAAC,UAE/D;AAAC;AACP,GACF;AACF;AACO,SAAS,sBAAsB,KAAA,EAAgB;AACpD,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,KAAA,EAAO,sBAAA,EAAwB;AAAA,IAChE,QAAA,EAAU,2BAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GACR,CAAA;AACV,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,MAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAClB,MAAA,GAAyB,EAAC;AAC5B,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,EAAcP,QAAAA,EAAiB,YAC9C,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAA,EAAAA,QAAAA,EAAS,SAAS,CAAA;AAC3D,EAAA,MAAM,QAAQ,IAAI,GAAA,CAAI,KAAK,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAA,CAAE,EAAE,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AACxE,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,MAAA,CAAO,aAAa,CAAA;AAC9C,EAAA,MAAM,6BAAa,IAAI,GAAA,EAAsB,EAC3CgB,QAAAA,uBAAc,GAAA,EAAsB;AACtC,EAAA,MAAM,KAAA,GAAQ,CAACT,OAAAA,EAAwB,KAAA,KAA2B;AAChE,IAAA,MAAM,CAAA,GAAI,yBAAyBA,OAAM,CAAA,CAAE,OAAO,CAACU,EAAAA,KAAMA,EAAAA,CAAE,KAAA,KAAU,KAAK,CAAA;AAC1E,IAAA,OAAO,CAAA,CAAE,MAAA,KAAW,CAAA,IAAK,CAAA,CAAE,CAAC,CAAA,CAAG,SAAA,CAAU,OAAA,CAAQ,KAAA,KAAU,UACvD,CAAA,CAAE,CAAC,CAAA,CAAG,SAAA,CAAU,QAAQ,KAAA,GACxB,MAAA;AAAA,EACN,CAAA;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,IAAA,CAAK,QAAA,CAAS,SAAQ,EAAG;AAC5C,IAAA,MAAM,CAAA,GAAI,aAAa,CAAC,CAAA,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,CAAC,IAAA,EAAcf,IAAAA,EAAY,KAAA,KAAkB;AACxD,MAAA,MAAMT,UAAS,KAAA,CAAM,GAAA,CAAI,GAAG,IAAI,CAAA,CAAA,EAAIS,IAAE,CAAA,CAAE,CAAA;AACxC,MAAA,IAAI,CAACT,OAAAA;AACH,QAAA,OAAA;AAAA,UACE,YAAA;AAAA,UACA,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,UACb;AAAA,SACF;AACF,MAAA,OAAOA,OAAAA;AAAA,IACT,CAAA;AACA,IAAA,KAAA,MAAWD,IAAAA,IAAO,2BAA2B,CAAC,CAAA;AAC5C,MAAA,SAAA,CAAU,GAAA,CAAIA,KAAI,SAAS,CAAA;AAC7B,IAAA,IAAI,EAAE,IAAA,KAAS,gBAAA;AACb,MAAA,IAAA,CAAK,gBAAA,EAAkB,CAAA,CAAE,SAAA,EAAW,WAAW,CAAA;AACjD,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,qBAAA,IAAyB,CAAA,CAAE,QAAQ,IAAA,KAAS,gBAAA;AACzD,MAAA,IAAA,CAAK,gBAAA,EAAkB,CAAA,CAAE,OAAA,CAAQ,SAAA,EAAW,mBAAmB,CAAA;AACjE,IAAA,IAAI,CAAA,CAAE,SAAS,kBAAA,EAAoB;AACjC,MAAA,MAAMuB,WAAAA,GAAa,IAAA;AAAA,QACjB,qBAAA;AAAA,QACA,CAAA,CAAE,YAAA;AAAA,QACF;AAAA,OACF;AACA,MAAA,IACEA,WAAAA,EAAY,IAAA,KAAS,qBAAA,IACrB,CAACA,WAAAA,CAAW,MAAA,CAAO,KAAA,EAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,qBAAqB,CAAA;AAEtE,QAAA,OAAA;AAAA,UACE,eAAA;AAAA,UACA,GAAG,CAAC,CAAA,sBAAA,CAAA;AAAA,UACJ;AAAA,SACF;AAAA,IACJ;AACA,IAAA,KAAA,MAAW,EAAE,KAAA,EAAO,SAAA,EAAU,IAAK,wBAAA,CAAyB,CAAC,CAAA,EAAG;AAC9D,MAAA,MAAM,KAAA,GAAQ,UAAU,OAAA,CAAQ,KAAA;AAChC,MAAA,IAAI,UAAU,MAAA,EAAW;AACzB,MAAA,IACE;AAAA,QACE,UAAA;AAAA,QACA,YAAA;AAAA,QACA,sBAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF,CAAE,QAAA,CAAS,KAAK,CAAA,EAChB;AACA,QAAA,MAAM,QAA0B,EAAC;AACjC,QAAA,SAAA,CAAU,OAAyB,CAAA,EAAG,CAAC,CAAA,QAAA,EAAW,KAAK,IAAI,KAAK,CAAA;AAChE,QAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,MAC5D;AACA,MAAA,IAAI,CAAA,CAAE,IAAA,KAAS,qBAAA,IAAyB,KAAA,KAAU,OAAA,EAAS;AACzD,QAAA,MAAM,CAAA,GAAI,KAAA;AACV,QAAA,IAAI,CAAA,CAAE,MAAA,KAAW,QAAA,IAAY,CAAC,CAAA,CAAE,UAAA;AAC9B,UAAA,OAAA;AAAA,YACE,2BAAA;AAAA,YACA,GAAG,CAAC,CAAA,aAAA,CAAA;AAAA,YACJ;AAAA,WACF;AAAA,MACJ;AAAA,IACF;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,kBAAA,EAAoB;AACjC,MAAA,MAAM,OAAA,GAAA,CAAW,CAAA,CAAE,MAAA,CAAO,sBAAA,IAA0B,EAAC,EAAG,OAAA;AAAA,QAAQ,CAAC,MAC/D,OAAA,IAAW,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA,CAAQ,QAAQ;AAAC,OAC5C;AACA,MAAA,KAAA,MAAW,CAAA,IAAK,CAAA,CAAE,MAAA,CAAO,sBAAA,IAA0B,EAAC;AAClD,QAAA,IACE,OAAA,IAAW,CAAA,CAAE,OAAA,IACb,IAAI,GAAA,CAAI,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,KAAS,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,MAAA;AAElD,UAAA,OAAA;AAAA,YACE,eAAA;AAAA,YACA,GAAG,CAAC,CAAA,8BAAA,CAAA;AAAA,YACJ;AAAA,WACF;AACJ,MAAA,OAAA,CAAQ,OAAA;AAAA,QAAQ,CAACb,IAAAA,KACf,IAAA,CAAK,kBAAA,EAAoBA,MAAI,+BAA+B;AAAA,OAC9D;AACA,MAAA,UAAA,CAAW,GAAA,CAAI,EAAE,EAAA,EAAI,CAAC,GAAG,IAAI,GAAA,CAAI,OAAO,CAAC,CAAC,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,wBAAA,EAA0B;AACvC,MAAA,IAAA,CAAK,kBAAA,EAAoB,CAAA,CAAE,UAAA,EAAY,YAAY,CAAA;AACnD,MAAAc,QAAAA,CAAQ,GAAA;AAAA,QACN,CAAA,CAAE,EAAA;AAAA,QACF,CAAA,CAAE,YAAY,IAAA,KAAS,QAAA,GAAW,CAAC,CAAA,CAAE,WAAA,CAAY,EAAE,CAAA,GAAI;AAAC,OAC1D;AACA,MAAA,IAAI,CAAA,CAAE,WAAA,CAAY,IAAA,KAAS,QAAA,EAAU;AACnC,QAAA,MAAM,QAAA,GAAW,IAAA;AAAA,UACf,wBAAA;AAAA,UACA,EAAE,WAAA,CAAY,EAAA;AAAA,UACd;AAAA,SACF;AACA,QAAA,IAAI,QAAA,EAAU,SAAS,wBAAA,EAA0B;AACjD,QAAA,IAAI,QAAA,CAAS,eAAe,CAAA,CAAE,UAAA;AAC5B,UAAA,OAAA;AAAA,YACE,uBAAA;AAAA,YACA,GAAG,CAAC,CAAA,YAAA,CAAA;AAAA,YACJ;AAAA,WACF;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,CAAA,EAAG,MAAM,GAC1B,EAAA,GAAK,KAAA,CAAM,UAAU,IAAI,CAAA;AAC3B,QAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,EAAA,KAAO,YAAY,IAAA,KAAS,EAAA;AACjE,UAAA,OAAA;AAAA,YACE,yBAAA;AAAA,YACA,GAAG,CAAC,CAAA,YAAA,CAAA;AAAA,YACJ;AAAA,WACF;AACF,QAAA,MAAM,GAAA,GAAM,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AACjC,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,QAAA,EAAU,YAAY,CAAA;AAI3C,QAAA,IACE,GAAA,IACA,UACA,GAAA,CAAI,IAAA,KAAS,cACb,MAAA,CAAO,IAAA,KAAS,IAAI,IAAA,EACpB;AACA,UAAA,IAAI,aAAA,CAAc,MAAA,EAAQ,GAAG,CAAA,GAAI,CAAA;AAC/B,YAAA,OAAA;AAAA,cACE,uBAAA;AAAA,cACA,GAAG,CAAC,CAAA,kBAAA,CAAA;AAAA,cACJ;AAAA,aACF;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,SAAS,OAAA,CAAQ,OAA8B,IAAA,EAAc;AAC3D,IAAA,MAAM,WAAW,IAAI,GAAA,CAAI,CAAC,GAAG,MAAM,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAACd,IAAAA,KAAO,CAACA,IAAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAC/D,IAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAO;AAC/B,MAAA,KAAA,MAAWA,IAAAA,IAAM,KAAA;AACf,QAAA,IAAI,QAAA,CAAS,GAAA,CAAIA,IAAE,CAAA,EAAG,QAAA,CAAS,GAAA,CAAIA,IAAAA,EAAI,QAAA,CAAS,GAAA,CAAIA,IAAE,CAAA,GAAK,CAAC,CAAA;AAChE,IAAA,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,KAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAACA,IAAE,MAAMA,IAAE,CAAA;AACvE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA;AAChC,MAAA,KAAA,MAAWA,QAAM,KAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAE,KAAK,EAAC;AACxC,QAAA,IAAI,QAAA,CAAS,GAAA,CAAIA,IAAE,CAAA,EAAG;AACpB,UAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAIA,IAAE,CAAA,GAAK,CAAA;AAClC,UAAA,QAAA,CAAS,GAAA,CAAIA,MAAI,KAAK,CAAA;AACtB,UAAA,IAAI,KAAA,KAAU,CAAA,EAAG,KAAA,CAAM,IAAA,CAAKA,IAAE,CAAA;AAAA,QAChC;AACJ,IAAA,IAAI,KAAA,CAAM,WAAW,KAAA,CAAM,IAAA;AACzB,MAAA,OAAA;AAAA,QACE,IAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF;AAAA,EACJ;AACA,EAAA,OAAA,CAAQ,YAAY,0BAA0B,CAAA;AAC9C,EAAA,OAAA,CAAQc,UAAS,uBAAuB,CAAA;AACxC,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAA;AAAA,IACA,aAAA,EAAe,CAAC,GAAG,SAAS,CAAA;AAAA,IAC5B,MAAA,EAAQ;AAAA,MACN,GAAG,MAAA,CAAO,MAAA;AAAA,MACV,QAAA,EAAU,MAAA,CAAO,MAAA,GAAU,QAAA,GAAsB;AAAA;AACnD,GACF;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,KAAA,EAAe,GACzC,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,MAAe,IAAA,EAAK;AACpD;ACpNO,IAAM,mBAAA,GAAsBpB,CAAAA,CAChC,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,KAAK,CAAC,CAAA,CACxC,QAAA,CAAS,0DAA0D,CAAA;AAI/D,IAAM,cAAA,GAAiBA,EAC3B,MAAA,CAAO;AAAA,EACN,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AAC5E,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,YAAY,CAAA,CACvB,SAAS,2BAA2B,CAAA;AAIhC,IAAM,wBAAA,GAA2BA,EACrC,IAAA,CAAK;AAAA,EACJ,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,2CAA2C,CAAA;AAIhD,IAAM,wBAAA,GAA2BA,EACrC,IAAA,CAAK;AAAA,EACJ,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,0CAA0C,CAAA;AAI/C,IAAM,4BAAA,GAA+BA,EACzC,MAAA,CAAO;AAAA,EACN,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAClF,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,EACpF,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,oFAAoF,CAAA;AAAA,EAChG,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iDAAiD,CAAA;AAAA,EAC3E,MAAA,EAAQ,wBAAA;AAAA,EACR,mBAAmBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2DAA2D,CAAA;AAAA,EAC7G,MAAA,EAAQ,wBAAA;AAAA,EACR,UAAA,EAAYA,CAAAA,CACT,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAC,CAAA,CAC9B,QAAA,EAAS,CACT,QAAA,CAAS,iDAAiD,CAAA;AAAA,EAC7D,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,EAClF,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC;AACnF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,0BAA0B,CAAA,CACrC,SAAS,gEAAgE,CAAA;AAIrE,IAAM,qBAAA,GAAwBA,EAClC,MAAA,CAAO;AAAA,EACN,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gEAAgE,CAAA;AAAA,EACvG,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,EACjF,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,EACnE,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EACxF,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uDAAuD,CAAA;AAAA,EACxG,sBAAsBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD,CAAA;AAAA,EACxG,cAAA,EAAgBA,EACb,MAAA,CAAO;AAAA,IACN,QAAA,EAAUA,EAAE,MAAA,EAAO;AAAA,IACnB,SAAA,EAAWA,EAAE,MAAA,EAAO;AAAA,IACpB,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC/B,CAAA,CACA,QAAA,EAAS,CACT,SAAS,6CAA6C,CAAA;AAAA,EACzD,mBAAmBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,gDAAgD,CAAA;AAAA,EACnG,kBAAkBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAC/F,gBAAgBA,CAAAA,CACb,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+EAA+E;AAC7F,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,mBAAmB,CAAA,CAC9B,SAAS,0DAA0D,CAAA;AAI/BA,EACpC,MAAA,CAAO;AAAA,EACN,IAAA,EAAM,eAAe,QAAA,EAAS;AAAA,EAC9B,gBAAA,EAAkBA,CAAAA,CAAE,KAAA,CAAM,cAAc,EAAE,QAAA,EAAS;AAAA,EACnD,eAAA,EAAiB,sBAAsB,QAAA,EAAS;AAAA,EAChD,aAAA,EAAeA,CAAAA,CAAE,KAAA,CAAM,4BAA4B,EAAE,QAAA,EAAS;AAAA,EAC9D,eAAA,EAAiBA,CAAAA,CACd,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAChB,QAAA,EAAS,CACT,QAAA,CAAS,0GAAgG,CAAA;AAAA,EAC5G,sBAAsBA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,sDAAsD,CAAA;AAAA,EAC5G,yBAAyBA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC9F,sBAAA,EAAwB,yBAAyB,QAAA,EAAS;AAAA,EAC1D,sBAAA,EAAwBA,CAAAA,CACrB,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,YAAY,CAAC,CAAA,CAC5C,QAAA,EAAS,CACT,SAAS,oDAAoD,CAAA;AAAA,EAChE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+DAA+D,CAAA;AAAA,EAC3G,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+CAA+C;AACvF,CAAC,CAAA,CACA,KAAK,EAAE,EAAA,EAAI,qBAAqB,CAAA,CAChC,SAAS,oFAAoF;;;ACrGhG,IAAMD,MAAAA,GAAOC,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,MAAM,IAAI,CAAA;AACzC,IAAMM,GAAAA,GAAKN,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uCAAuC,CAAA;AAC5D,IAAM,qBAAA,GAAwBA,EAClC,YAAA,CAAa;AAAA,EACZ,QAAA,EAAU,0BAA0B,MAAA,CAAO;AAAA,IACzC,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B;AAAA,GAChD,CAAA;AAAA,EACD,SAAA,EAAWM,GAAAA;AAAA,EACX,QAAA,EAAU,yBAAA;AAAA,EACV,OAAA,EAAS,sBAAA,CAAuB,KAAA,CAAM,OAAA,CAAQ,MAAA;AAChD,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACK,IAAM,oBAAA,GAAuBN,EACjC,YAAA,CAAa;AAAA,EACZ,QAAA,EAAUD,OAAK,QAAA,EAAS;AAAA,EACxB,YAAA,EAAcA,OAAK,QAAA,EAAS;AAAA,EAC5B,WAAA,EAAaA,OAAK,QAAA,EAAS;AAAA,EAC3B,UAAA,EAAY,qBAAqB,QAAA,EAAS;AAAA,EAC1C,kBAAA,EAAoB,yBAAyB,QAAA,EAAS;AAAA,EACtD,iBAAA,EAAmBA,OAAK,QAAA,EAAS;AAAA,EACjC,MAAA,EAAQ,yBAAyB,QAAA,EAAS;AAAA,EAC1C,UAAA,EAAYC,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAU,KAAA,EAAO,YAAY,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACrE,iBAAA,EAAmB,wBAAwB,QAAA,EAAS;AAAA,EACpD,QAAA,EAAUD,OAAK,QAAA,EAAS;AAAA,EACxB,SAAA,EAAW,yBAAA,CAA0B,KAAA,CAAM,SAAA,CAAU,QAAA,EAAS;AAAA,EAC9D,SAAA,EAAWC,CAAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA,EAC5B,oBAAA,EAAsBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC3C,uBAAA,EAAyBD,OAAK,QAAA,EAAS;AAAA,EACvC,KAAA,EAAOA,OAAK,QAAA;AACd,CAAC,CAAA,CACA,QAAA;AAAA,EACC;AACF;AACK,IAAM,0BAAA,GAA6BC,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACrE,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAAA,EACpCA,EAAE,YAAA,CAAa;AAAA,IACb,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACxB,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACD,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAAA,EACpC,0BAAA,CAA2B,QAAQ,CAAC;AACtC,CAAC;AACD,IAAM,OAAA,GAAU,0BAAA;AACT,IAAM,6BAAA,GACX,8BAA8B,MAAA,CAAO;AAAA,EACnC,OAAA;AAAA,EACA,eAAA,EAAiB,sBAAsB,QAAA,EAAS;AAAA,EAChD,sBAAA,EAAwB,qBAAqB,QAAA;AAC/C,CAAC;AACH,IAAMiB,WAAAA,GAAa;AAAA,EACjB,OAAA;AAAA,EACA,eAAA,EAAiBjB,CAAAA,CAAE,KAAA,CAAM,sCAAsC,EAAE,QAAA,EAAS;AAAA,EAC1E,gBAAA,EAAkBA,CAAAA,CAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA;AACnD,CAAA;AACO,IAAM,6BAAA,GACX,6BAAA,CAA8B,MAAA,CAAOiB,WAAU;AAC1C,IAAM,2BAAA,GAA8B,4BAA4B,MAAA,CAAO;AAAA,EAC5E,GAAGA,WAAAA;AAAA,EACH,cAAA,EAAgB,qBAAqB,QAAA;AACvC,CAAC;AACM,IAAM,6BAAA,GAAgCjB,EAAE,KAAA,CAAM;AAAA,EACnD,6BAAA;AAAA,EACA,6BAAA;AAAA,EACA;AACF,CAAC;AACM,IAAM,gCAAA,GACX;AACK,IAAM,0BAAA,GAA6B,2BAA2B,MAAA,CAAO;AAAA,EAC1E,aAAA,EAAeA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EAChC,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,6BAA6B,CAAA;AAAA,EAC7C,YAAYA,CAAAA,CAAE,KAAA;AAAA,IACZ,0BAA0B,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAUA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B;AAAA,KAChD;AAAA;AAEL,CAAC;AAMM,SAAS,8BAAA,GAA0D;AACxE,EAAA,OAAO;AAAA,IACL,GAAGA,CAAAA,CAAE,YAAA,CAAa,0BAAA,EAA4B;AAAA,MAC5C,MAAA,EAAQ,eAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,GAAA,EAAK;AAAA,GACP;AACF;;;ACzGO,SAAS,0BAA0B,KAAA,EAAgB;AACxD,EAAA,MAAM,MAAA,GAAS,uBAAA,CAAwB,KAAA,EAAO,0BAAA,EAA4B;AAAA,IACxE,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,gCAAA;AAAA,IACV,cAAA,EAAgB;AAAA,GACR,CAAA;AACV,EAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,MAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAClB,MAAA,GAAyB,EAAC;AAC5B,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,EAAcI,QAAAA,EAAiB,YAC9C,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAA,EAAAA,QAAAA,EAAS,SAAS,CAAA;AAC3D,EAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA;AACvE,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAIlB;AAAA,IACA,GAAG,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,OAAA,EAAU,CAAA,CAAE,EAAE,CAAA,CAAA,EAAI,CAAC,CAAU,CAAA;AAAA,IACrE,GAAG,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,QAAA,EAAW,CAAA,CAAE,EAAE,CAAA,CAAA,EAAI,CAAC,CAAU;AAAA,GACxE,CAAA;AACD,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,KAAK,KAAK,IAAA,CAAK,MAAA,CAAO,SAAQ,EAAG;AAC9C,IAAA,MAAM,CAAA,GAAI,WAAW,CAAC,CAAA,CAAA;AACtB,IAAA,MAAM,SAAA,GACJ,KAAA,CAAM,IAAA,KAAS,kBAAA,GACX,MAAM,eAAA,GACJ,CAAC,KAAA,CAAM,eAAe,CAAA,GACtB,EAAC,GACF,KAAA,CAAM,oBAAoB,EAAC;AAClC,IAAA,IACE,IAAI,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA,CAAE,SAAS,SAAA,CAAU,MAAA;AAEpE,MAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,2BAA2B,CAAA;AACzD,IAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,KAAK,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAC,CAAA;AAClD,QAAA,OAAA;AAAA,UACE,sBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,QAAA,CAAS,SAAS,SAAS,CAAA;AACtD,MAAA,IACE,CAAC,QAAQ,MAAA,IACT,MAAA,CAAO,OAAO,KAAA,KAAU,QAAA,CAAS,SAAS,MAAA,CAAO,KAAA;AAEjD,QAAA,OAAA;AAAA,UACE,2BAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AACF,MAAA,IACE,QAAA,CAAS,QAAQ,IAAA,KAAS,YAAA,IAC1B,SAAS,OAAA,CAAQ,UAAA,GAAa,SAAS,OAAA,CAAQ,YAAA;AAE/C,QAAA,OAAA,CAAQ,eAAA,EAAiB,GAAG,yCAAyC,CAAA;AACvE,MAAA,IACE,KAAA,CAAM,IAAA,KAAS,kBAAA,KACd,KAAA,CAAM,UAAA,CAAW,SAAA,KAAc,QAAA,CAAS,QAAA,CAAS,SAAA,IAC/C,KAAA,CAAM,UAAA,CAAW,YAAA,IAChB,KAAA,CAAM,UAAA,CAAW,YAAA,CAAa,KAAA,KAC5B,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,KAAA,IAC7B,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,KACrC,IAAA,CAAK,SAAA,CAAU,SAAS,OAAO,CAAA,CAAA;AAEnC,QAAA,OAAA;AAAA,UACE,wBAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA,SACF;AAAA,IACJ;AACA,IAAA,MAAM,MAAA,GACJ,KAAA,CAAM,IAAA,KAAS,kBAAA,GACX,KAAA,CAAM,yBACN,KAAA,CAAM,MAAA,KAAW,UAAA,GACf,KAAA,CAAM,cAAA,GACN,MAAA;AACR,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IACE,KAAA,CAAM,QAAQ,IAAA,KAAS,QAAA,IACvB,CAAC,CAAC,gBAAA,EAAkB,kBAAkB,CAAA,CAAE,QAAA;AAAA,MACtC,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO;AAAA,KACjC;AAEA,MAAA,OAAA;AAAA,QACE,wBAAA;AAAA,QACA,CAAA;AAAA,QACA;AAAA,OACF;AACF,IAAA,IACE,KAAA,CAAM,IAAA,KAAS,YAAA,IACf,KAAA,CAAM,UAAU,MAAA,IACb,KAAA,CAAM,eAAA,EAAiB,MAAA,IAAU,MACjC,KAAA,CAAM,gBAAA,EAAkB,MAAA,IAAU,CAAA,CAAA,GACnC,UAAU,MAAA,KACV,CAAA;AAEF,MAAA,OAAA;AAAA,QACE,sBAAA;AAAA,QACA,CAAA;AAAA,QACA;AAAA,OACF;AACF,IAAA,IAAI,OAAO,SAAA,IAAa,CAAC,OAAA,CAAQ,GAAA,CAAI,OAAO,SAAS,CAAA;AACnD,MAAA,OAAA;AAAA,QACE,sBAAA;AAAA,QACA,CAAA;AAAA,QACA;AAAA,OACF;AACF,IAAA,IAAI,OAAO,UAAA,EAAY;AACrB,MAAA,MAAM,QAA0B,EAAC;AACjC,MAAA,SAAA,CAAU,MAAA,CAAO,UAAA,EAAY,CAAA,EAAG,CAAC,8BAA8B,KAAK,CAAA;AACpE,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,CAAE,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IAC5D;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAA;AAAA,IACA,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,MAAA,EAAQ;AAAA,MACN,GAAG,MAAA,CAAO,MAAA;AAAA,MACV,QAAA,EAAU,MAAA,CAAO,MAAA,GAAU,QAAA,GAAsB;AAAA;AACnD,GACF;AACA,EAAA,OAAO,OAAO,MAAA,GACV,EAAE,GAAG,UAAA,EAAY,OAAA,EAAS,OAAe,GACzC;AAAA,IACE,GAAG,UAAA;AAAA,IACH,OAAA,EAAS,IAAA;AAAA,IACT,IAAA;AAAA,IACA,kBAAkB,MAAA,CAAO;AAAA,GAC3B;AACN","file":"index.js","sourcesContent":["/** Experimental RFC 0002/0003 building blocks. Not the v2 Observation contract. */\nimport { z } from 'zod';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst identifier = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);\nconst sourceRef = z.string().regex(/^(source|product):[^\\s:]+$/);\nconst valueRef = z.string().regex(/^(source|product|assertion):[^\\s:]+$/);\nconst sourceRefs = z.array(valueRef).min(1);\n\n// Match the JSON Schema date-time contract: seconds and a complete UTC offset\n// are required; fractional digits remain optional and are preserved verbatim.\nexport const instantString = z.iso.datetime({ offset: true }).regex(/^(?!0000)/)\n .regex(/T[0-9]{2}:[0-9]{2}:[0-9]{2}/)\n .regex(/(?:Z|[+-][0-9]{2}:[0-9]{2})(?![\\s\\S])/);\n\nexport const EventTimePointSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('year'), value: z.string().regex(/^(?!0000)[0-9]{4}$/) }),\n z.strictObject({ kind: z.literal('month'), value: z.string().regex(/^(?!0000)[0-9]{4}-(0[1-9]|1[0-2])$/) }),\n z.strictObject({ kind: z.literal('date'), value: z.iso.date().regex(/^(?!0000)/) }),\n z.strictObject({ kind: z.literal('instant'), value: instantString, timeScale: z.literal('UTC') }),\n]);\n\nexport const EventTimeIntervalSchema = z.strictObject({\n kind: z.literal('interval'), start: EventTimePointSchema, end: EventTimePointSchema,\n});\nexport const EventTimeValueSchema = z.union([EventTimePointSchema, EventTimeIntervalSchema]);\n\nconst assertionRef = z.string().regex(/^assertion:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const ValueSelectionSchema = z.strictObject({\n assertionRef,\n consideredAssertionRefs: z.array(assertionRef).min(1),\n methodRef: z.string().regex(/^method:[^\\s:]+(?![\\s\\S])/),\n methodVersion: text,\n evaluatedBy: text,\n evaluatedAt: instantString,\n rationale: text,\n});\n\nexport const PositionValueSchema = z.strictObject({\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n datum: z.literal('WGS84'),\n});\n\nfunction envelope<T extends z.ZodType>(value: T) {\n return z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('known'), value, sourceRefs, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('approximate'), value, sourceRefs, precision: text, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('unknown'), reason: z.enum(['not_recorded', 'not_collected', 'unavailable']) }),\n z.strictObject({ state: z.literal('redacted'), reason: text }),\n ]);\n}\n\nexport const EventTimeSchema = envelope(EventTimeValueSchema);\nexport const PositionSchema = envelope(PositionValueSchema);\n\n// A pointer is empty or begins with '/', followed by characters or valid tilde escapes.\n// Slash is ordinary content after the first separator: do not repeat token groups.\n// The final lookahead enforces absolute end, including a trailing newline.\nexport const SourceProvenanceSchema = z.strictObject({\n sourceRef,\n sourceDigest: z.strictObject({ algorithm: z.literal('sha256'), value: z.string().regex(/^[a-f0-9]{64}$/) }).optional(),\n locator: z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('page'), page: z.number().int().min(1) }),\n z.strictObject({ kind: z.literal('time_range'), startSeconds: z.number().min(0), endSeconds: z.number().min(0) }),\n z.strictObject({ kind: z.literal('json_pointer'), pointer: z.string().regex(/^(?:\\/(?:[^~]|~[01])*)?(?![\\s\\S])/) }),\n ]).optional(),\n attributedTo: text.optional(),\n extractedBy: text.optional(),\n});\n\nexport const ValueAssertionSchema = z.discriminatedUnion('field', [\n z.strictObject({ id: identifier, field: z.literal('eventTime'), value: EventTimeValueSchema, provenance: SourceProvenanceSchema }),\n z.strictObject({ id: identifier, field: z.literal('position'), value: PositionValueSchema, provenance: SourceProvenanceSchema }),\n]);\n\n/** Testable container for value primitives, not an Observation or public projection API. */\nexport const PrimitiveRecordSchema = z.strictObject({\n id: identifier,\n eventTime: EventTimeSchema,\n position: PositionSchema,\n assertions: z.array(ValueAssertionSchema).optional(),\n});\n\nexport type EventTimeValue = z.infer<typeof EventTimeValueSchema>;\nexport type EventTimePoint = z.infer<typeof EventTimePointSchema>;\nexport type EventTimeInterval = z.infer<typeof EventTimeIntervalSchema>;\nexport type ValueSelection = z.infer<typeof ValueSelectionSchema>;\nexport type PositionValue = z.infer<typeof PositionValueSchema>;\nexport type EventTime = z.infer<typeof EventTimeSchema>;\nexport type Position = z.infer<typeof PositionSchema>;\nexport type SourceProvenance = z.infer<typeof SourceProvenanceSchema>;\nexport type ValueAssertion = z.infer<typeof ValueAssertionSchema>;\nexport type PrimitiveRecord = z.infer<typeof PrimitiveRecordSchema>;\n\nexport interface PrimitiveIssue {\n code: 'STRUCT.VALUE' | 'REF.UNIQUE_ID' | 'REF.FIELD_MISMATCH' | 'REF.LOCAL_RESOLUTION' | 'TIME.INTERVAL'\n | 'TIME.PRECISION_MISMATCH' | 'TIME.INSTANT' | 'SELECTION.VALUE_MISMATCH' | 'SELECTION.INPUTS' | 'SELECTION.SOURCE_REF';\n stage: 'structural' | 'semantic';\n pointer: string;\n message: string;\n}\nexport type PrimitiveParseResult = {\n success: true; data: PrimitiveRecord; issues: PrimitiveIssue[]; uncheckedRefs: string[];\n} | {\n success: false; issues: PrimitiveIssue[]; uncheckedRefs: string[];\n};\n\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\n\n// Date.parse is used only for whole seconds and UTC-offset normalization.\n// Fractional digits remain strings, so sub-millisecond order is never rounded away.\nfunction instantParts(value: string): { milliseconds: number; fraction: string } {\n const dot = value.indexOf('.', 10);\n if (dot === -1) return { milliseconds: Date.parse(value), fraction: '' };\n let end = dot + 1;\n while (end < value.length && value[end]! >= '0' && value[end]! <= '9') end++;\n return { milliseconds: Date.parse(value.slice(0, dot) + value.slice(end)), fraction: value.slice(dot + 1, end) };\n}\n\nexport function comparePoints(start: EventTimePoint, end: EventTimePoint): number {\n if (start.kind !== 'instant' || end.kind !== 'instant') return start.value < end.value ? -1 : start.value > end.value ? 1 : 0;\n const a = instantParts(start.value);\n const b = instantParts(end.value);\n if (!Number.isFinite(a.milliseconds) || !Number.isFinite(b.milliseconds)) return NaN;\n if (a.milliseconds !== b.milliseconds) return a.milliseconds < b.milliseconds ? -1 : 1;\n const digits = Math.max(a.fraction.length, b.fraction.length);\n const af = a.fraction.padEnd(digits, '0');\n const bf = b.fraction.padEnd(digits, '0');\n return af < bf ? -1 : af > bf ? 1 : 0;\n}\n\nexport function checkTime(value: EventTimeValue, path: string, issues: PrimitiveIssue[]): void {\n if (value.kind === 'instant' && !Number.isFinite(instantParts(value.value).milliseconds)) {\n issues.push({ code: 'TIME.INSTANT', stage: 'semantic', pointer: path, message: 'Instant cannot be resolved with its declared UTC offset.' });\n }\n if (value.kind !== 'interval') return;\n checkTime(value.start, `${path}/start`, issues);\n checkTime(value.end, `${path}/end`, issues);\n if (value.start.kind !== value.end.kind) {\n issues.push({ code: 'TIME.PRECISION_MISMATCH', stage: 'semantic', pointer: path, message: 'Interval endpoints must use the same kind of calendar precision or both be instants.' });\n } else if (comparePoints(value.start, value.end) > 0) {\n issues.push({ code: 'TIME.INTERVAL', stage: 'semantic', pointer: `${path}/end`, message: 'Interval end precedes its start.' });\n }\n}\n\n/** Structural and local-reference checks only. External references/digests are never fetched or verified. */\nexport function parsePrimitiveRecord(input: unknown): PrimitiveParseResult {\n const result = PrimitiveRecordSchema.safeParse(input);\n if (!result.success) return { success: false, uncheckedRefs: [], issues: result.error.issues.map(issue => ({\n code: 'STRUCT.VALUE', stage: 'structural', pointer: pointer(issue.path), message: issue.message,\n })) };\n const data = result.data;\n const issues: PrimitiveIssue[] = [];\n const unchecked = new Set<string>();\n const assertions = new Map<string, ValueAssertion>();\n for (const [index, assertion] of (data.assertions ?? []).entries()) {\n if (assertions.has(assertion.id)) issues.push({ code: 'REF.UNIQUE_ID', stage: 'semantic', pointer: `/assertions/${index}/id`, message: 'Assertion ID is duplicated.' });\n else assertions.set(assertion.id, assertion);\n unchecked.add(assertion.provenance.sourceRef);\n if (assertion.field === 'eventTime') checkTime(assertion.value, `/assertions/${index}/value`, issues);\n const locator = assertion.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) issues.push({ code: 'TIME.INTERVAL', stage: 'semantic', pointer: `/assertions/${index}/provenance/locator/endSeconds`, message: 'Locator end precedes its start.' });\n }\n for (const field of ['eventTime', 'position'] as const) {\n const value = data[field];\n if (value.state !== 'known' && value.state !== 'approximate') continue;\n if (field === 'eventTime' && (data.eventTime.state === 'known' || data.eventTime.state === 'approximate')) checkTime(data.eventTime.value, '/eventTime/value', issues);\n for (const [index, ref] of value.sourceRefs.entries()) {\n if (!ref.startsWith('assertion:')) { unchecked.add(ref); continue; }\n const target = assertions.get(ref.slice('assertion:'.length));\n if (!target) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `/${field}/sourceRefs/${index}`, message: 'Local assertion does not exist.' });\n else if (target.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `/${field}/sourceRefs/${index}`, message: 'Assertion concerns a different field.' });\n }\n const selection = value.selection;\n if (!selection) continue;\n const path = `/${field}/selection`;\n unchecked.add(selection.methodRef);\n if (!Number.isFinite(instantParts(selection.evaluatedAt).milliseconds)) issues.push({ code: 'TIME.INSTANT', stage: 'semantic', pointer: `${path}/evaluatedAt`, message: 'Selection timestamp cannot be resolved with its declared UTC offset.' });\n if (!selection.consideredAssertionRefs.includes(selection.assertionRef)) issues.push({ code: 'SELECTION.INPUTS', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion must be among the considered inputs.' });\n if (!value.sourceRefs.includes(selection.assertionRef)) issues.push({ code: 'SELECTION.SOURCE_REF', stage: 'semantic', pointer: `/${field}/sourceRefs`, message: 'Field provenance must cite the selected assertion.' });\n const refs = new Set<string>();\n for (const [index, ref] of selection.consideredAssertionRefs.entries()) {\n if (refs.has(ref)) issues.push({ code: 'REF.UNIQUE_ID', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion is repeated.' });\n refs.add(ref);\n const target = assertions.get(ref.slice('assertion:'.length));\n if (!target) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion does not exist.' });\n else if (target.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `${path}/consideredAssertionRefs/${index}`, message: 'Considered assertion concerns a different field.' });\n }\n const selected = assertions.get(selection.assertionRef.slice('assertion:'.length));\n if (!selected) issues.push({ code: 'REF.LOCAL_RESOLUTION', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion does not exist.' });\n else if (selected.field !== field) issues.push({ code: 'REF.FIELD_MISMATCH', stage: 'semantic', pointer: `${path}/assertionRef`, message: 'Selected assertion concerns a different field.' });\n // Both values have passed the same strict schema, which fixes their key order.\n // Selection copies a source value verbatim; it is not a derivation or normalization.\n else if (JSON.stringify(selected.value) !== JSON.stringify(value.value)) issues.push({ code: 'SELECTION.VALUE_MISMATCH', stage: 'semantic', pointer: `/${field}/value`, message: 'Selected value must equal the cited source value; derived values need a separate contract.' });\n }\n return issues.length ? { success: false, issues, uncheckedRefs: [...unchecked] }\n : { success: true, data, issues, uncheckedRefs: [...unchecked] };\n}\n\nexport const PRIMITIVES_SCHEMA_ID = 'urn:disclosureos:experimental:records-v2-primitives:0.2.0';\n/** Plain JSON; Zod instances remain inside records. Semantic checks are separate. */\nexport function primitivesJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(PrimitiveRecordSchema, { target: 'draft-2020-12' }), $id: PRIMITIVES_SCHEMA_ID };\n}\n","import { z } from 'zod';\nimport { EventTimeValueSchema, PositionValueSchema, SourceProvenanceSchema, ValueSelectionSchema, instantString } from './primitives';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst ref = (kinds: readonly string[]) => z.string().regex(new RegExp(`^(?:${kinds.join('|')}):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\\\s\\\\S])`));\nconst sourceProductRef = ref(['source', 'product']);\nconst valueRef = ref(['source', 'product', 'assertion']);\nconst sourceRefs = z.array(valueRef).min(1);\nconst access = z.enum(['public', 'restricted', 'withheld', 'unknown']);\nconst digest = z.strictObject({ algorithm: z.literal('sha256'), value: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/) });\n\nconst quantified = { magnitude: z.number().min(0), unit: text, sourceRefs: z.array(sourceProductRef).min(1) };\nexport const QuantitativeUncertaintySchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('unknown'), reason: z.enum(['not_reported', 'not_characterized', 'unavailable']) }),\n z.strictObject({ kind: z.literal('standard'), ...quantified }),\n z.strictObject({ kind: z.literal('expanded'), ...quantified, coverageFactor: z.number().positive(), coverageProbability: z.number().gt(0).lte(1).optional() }),\n z.strictObject({ kind: z.literal('bound'), ...quantified }),\n]);\nexport const MeasuredQuantitySchema = z.strictObject({\n value: z.number(), unit: text, uncertainty: QuantitativeUncertaintySchema,\n});\n\nconst definition = z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('identified'), authority: text, code: text, revision: text.optional() }),\n z.strictObject({ state: z.literal('described'), description: text }),\n z.strictObject({ state: z.literal('unknown'), reason: text }),\n]);\nexport const ReferenceFrameSchema = z.discriminatedUnion('kind', [\n z.strictObject({ id, kind: z.literal('geodetic'), definition, angularUnit: z.literal('deg'), vertical: z.strictObject({ definition, unit: text }).optional() }),\n z.strictObject({ id, kind: z.literal('cartesian'), definition, unit: text }),\n]);\nexport const FramedPositionSchema = z.discriminatedUnion('kind', [\n PositionValueSchema.omit({ datum: true }).extend({\n kind: z.literal('geodetic'), frameRef: ref(['frame']), altitude: MeasuredQuantitySchema.optional(),\n uncertainty: z.strictObject({ latitude: QuantitativeUncertaintySchema, longitude: QuantitativeUncertaintySchema }).optional(),\n }),\n z.strictObject({ kind: z.literal('cartesian'), frameRef: ref(['frame']), x: MeasuredQuantitySchema, y: MeasuredQuantitySchema, z: MeasuredQuantitySchema }),\n]);\n\nfunction envelope<T extends z.ZodType>(value: T) {\n return z.discriminatedUnion('state', [\n z.strictObject({ state: z.literal('known'), value, sourceRefs, selection: ValueSelectionSchema.optional() }),\n z.strictObject({ state: z.literal('approximate'), value, sourceRefs, selection: ValueSelectionSchema.optional(), precision: text }),\n z.strictObject({ state: z.literal('unknown'), reason: z.enum(['not_recorded', 'not_collected', 'unavailable']) }),\n z.strictObject({ state: z.literal('redacted'), reason: text }),\n ]);\n}\nconst timeEnvelope = envelope(EventTimeValueSchema);\n// Time uncertainty is an observation about timing, distinct from calendar granularity.\nexport const ObservationTimeSchema = z.discriminatedUnion('state', [\n timeEnvelope.options[0].extend({ uncertainty: QuantitativeUncertaintySchema.optional() }),\n timeEnvelope.options[1].extend({ uncertainty: QuantitativeUncertaintySchema.optional() }),\n timeEnvelope.options[2],\n timeEnvelope.options[3],\n]);\nexport const ObservationPositionSchema = envelope(FramedPositionSchema);\n\nexport const ObservationSourceSchema = z.strictObject({\n id, kind: z.enum(['document', 'testimony', 'instrument_data', 'other', 'unknown']),\n access, title: text.optional(), uri: z.url().optional(), digest: digest.optional(),\n});\nconst product = { id, format: text, access, uri: z.url().optional(), digest: digest.optional() };\nexport const ObservationProductSchema = z.discriminatedUnion('kind', [\n z.strictObject({ ...product, kind: z.literal('raw'), sourceRefs: z.array(ref(['source'])).min(1) }),\n z.strictObject({ ...product, kind: z.literal('derived'), generatedBy: ref(['process']) }),\n]);\nexport const ObservationMethodSchema = z.strictObject({ id, version: text, description: text.optional(), uri: z.url().optional() });\nconst provenance = SourceProvenanceSchema.extend({ sourceRef: sourceProductRef, sourceDigest: digest.optional() });\nexport const ObservationAssertionSchema = z.discriminatedUnion('field', [\n z.strictObject({ id, field: z.literal('eventTime'), value: EventTimeValueSchema, provenance }),\n z.strictObject({ id, field: z.literal('position'), value: FramedPositionSchema, provenance }),\n z.strictObject({ id, field: z.literal('measurement'), measurementId: id, value: MeasuredQuantitySchema, provenance }),\n]);\nexport const ObservationMeasurementSchema = z.strictObject({\n id, quantity: text, value: MeasuredQuantitySchema, sourceRefs,\n frameRef: ref(['frame']).optional(), selection: ValueSelectionSchema.optional(),\n});\nexport const ProcessingActivitySchema = z.strictObject({\n id, methodRef: ref(['method']), methodVersion: text, performedBy: text, performedAt: instantString,\n inputRefs: z.array(valueRef).min(1), outputRefs: z.array(ref(['product'])).min(1),\n});\n\nexport const EXPERIMENTAL_OBSERVATION_SCHEMA_ID = 'urn:disclosureos:experimental:observation:0.1.0';\nexport const ExperimentalObservationSchema = z.strictObject({\n kind: z.literal('observation'), schemaVersion: z.literal('0.1.0'), id,\n status: z.enum(['draft', 'published', 'withdrawn']), createdAt: instantString, updatedAt: instantString,\n summary: text.optional(), eventTime: ObservationTimeSchema, position: ObservationPositionSchema,\n sources: z.array(ObservationSourceSchema), products: z.array(ObservationProductSchema), methods: z.array(ObservationMethodSchema),\n frames: z.array(ReferenceFrameSchema), assertions: z.array(ObservationAssertionSchema),\n measurements: z.array(ObservationMeasurementSchema), processing: z.array(ProcessingActivitySchema),\n extensions: z.record(z.string().regex(/^[a-z][a-z0-9_-]*(?:\\.[a-z0-9_-]+)+(?![\\s\\S])/), z.json()).optional(),\n});\n\nexport type QuantitativeUncertainty = z.infer<typeof QuantitativeUncertaintySchema>;\nexport type MeasuredQuantity = z.infer<typeof MeasuredQuantitySchema>;\nexport type ReferenceFrame = z.infer<typeof ReferenceFrameSchema>;\nexport type FramedPosition = z.infer<typeof FramedPositionSchema>;\nexport type ObservationAssertion = z.infer<typeof ObservationAssertionSchema>;\nexport type ProcessingActivity = z.infer<typeof ProcessingActivitySchema>;\nexport type ExperimentalObservation = z.infer<typeof ExperimentalObservationSchema>;\n\nexport function experimentalObservationJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(ExperimentalObservationSchema, { target: 'draft-2020-12' }), $id: EXPERIMENTAL_OBSERVATION_SCHEMA_ID };\n}\n","import { ExperimentalObservationSchema } from './observation-schema';\nimport type { ExperimentalObservation, FramedPosition, MeasuredQuantity, QuantitativeUncertainty } from './observation-schema';\nimport { checkTime, comparePoints } from './primitives';\nimport type { EventTimeValue, PrimitiveIssue, ValueSelection } from './primitives';\n\nexport type ObservationIssueCode = PrimitiveIssue['code'] | 'METHOD.VERSION_MISMATCH' | 'UNIT.MISMATCH'\n | 'FRAME.KIND_MISMATCH' | 'FRAME.VERTICAL_REFERENCE' | 'SELECTION.REQUIRED' | 'TIME.RECORD_ORDER'\n | 'PROCESS.OUTPUT_MISMATCH' | 'SOURCE.DIGEST_MISMATCH' | 'PROCESS.CYCLE';\n\nexport interface ObservationIssue {\n code: ObservationIssueCode;\n stage: 'structural' | 'semantic';\n severity: 'error';\n pointer: string;\n message: string;\n}\nexport interface ObservationChecks {\n structural: 'passed' | 'failed';\n semantic: 'passed' | 'failed' | 'not_checked';\n profile: 'not_checked';\n external: 'not_checked';\n}\nexport type ObservationParseResult = {\n success: true; data: ExperimentalObservation; issues: ObservationIssue[]; checks: ObservationChecks; uncheckedRefs: string[];\n} | {\n success: false; issues: ObservationIssue[]; checks: ObservationChecks; uncheckedRefs: string[];\n};\n\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\nconst key = (ref: string) => ref.slice(ref.indexOf(':') + 1);\n\n/** Validates declared metadata and local lineage. Never fetches URLs or certifies profiles. */\nexport function parseExperimentalObservation(input: unknown): ObservationParseResult {\n const parsed = ExperimentalObservationSchema.safeParse(input);\n if (!parsed.success) return {\n success: false, checks: { structural: 'failed', semantic: 'not_checked', profile: 'not_checked', external: 'not_checked' }, uncheckedRefs: [],\n issues: parsed.error.issues.map(issue => ({ code: 'STRUCT.VALUE', stage: 'structural', severity: 'error', pointer: pointer(issue.path), message: issue.message })),\n };\n const data = parsed.data;\n const issues: ObservationIssue[] = [];\n const graph = new Map<string, Set<string>>();\n const problem = (code: ObservationIssueCode, path: string, message: string) => issues.push({ code, stage: 'semantic', severity: 'error', pointer: path, message });\n function index<T extends { id: string }>(items: T[], prefix: string, collection: string): Map<string, T> {\n const result = new Map<string, T>();\n for (const [i, item] of items.entries()) {\n if (result.has(item.id)) problem('REF.UNIQUE_ID', `/${collection}/${i}/id`, `Duplicate ${prefix} ID.`);\n else { result.set(item.id, item); graph.set(`${prefix}:${item.id}`, new Set()); }\n }\n return result;\n }\n const sources = index(data.sources, 'source', 'sources');\n const products = index(data.products, 'product', 'products');\n const methods = index(data.methods, 'method', 'methods');\n const frames = index(data.frames, 'frame', 'frames');\n const assertions = index(data.assertions, 'assertion', 'assertions');\n index(data.measurements, 'measurement', 'measurements');\n const processes = index(data.processing, 'process', 'processing');\n const processOutputs = new Map(data.processing.map(process => [process.id, new Set(process.outputRefs)]));\n\n function resolve(ref: string, path: string, owner?: string): boolean {\n if (!graph.has(ref)) { problem('REF.LOCAL_RESOLUTION', path, `Undeclared local reference: ${ref}`); return false; }\n if (owner) graph.get(owner)?.add(ref);\n return true;\n }\n function references(refs: string[], path: string, owner?: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of refs.entries()) {\n if (seen.has(ref)) problem('REF.UNIQUE_ID', `${path}/${i}`, 'Reference is repeated.');\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n function method(ref: string, version: string, path: string, owner?: string): void {\n if (resolve(ref, `${path}/methodRef`, owner) && methods.get(key(ref))?.version !== version) {\n problem('METHOD.VERSION_MISMATCH', `${path}/methodVersion`, 'Method version differs from the local declaration.');\n }\n }\n function time(value: EventTimeValue, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(value, path, local);\n for (const issue of local) problem(issue.code, issue.pointer, issue.message);\n }\n function instant(value: string, path: string): void { time({ kind: 'instant', value, timeScale: 'UTC' }, path); }\n function uncertainty(value: QuantitativeUncertainty, expectedUnit: string | readonly string[], path: string, owner?: string): void {\n if (value.kind === 'unknown') return;\n const units = typeof expectedUnit === 'string' ? [expectedUnit] : expectedUnit;\n if (!units.includes(value.unit)) problem('UNIT.MISMATCH', `${path}/unit`, 'Uncertainty unit does not match the declared quantity; no conversion is inferred.');\n references(value.sourceRefs, `${path}/sourceRefs`, owner);\n }\n function quantity(value: MeasuredQuantity, path: string, owner?: string, expectedUnit?: string): void {\n if (expectedUnit !== undefined && value.unit !== expectedUnit) problem('UNIT.MISMATCH', `${path}/unit`, 'Quantity unit differs from its reference frame.');\n uncertainty(value.uncertainty, value.unit, `${path}/uncertainty`, owner);\n }\n function position(value: FramedPosition, path: string, owner?: string): void {\n resolve(value.frameRef, `${path}/frameRef`, owner);\n const frame = frames.get(key(value.frameRef));\n if (frame && frame.kind !== value.kind) problem('FRAME.KIND_MISMATCH', `${path}/frameRef`, 'Position and reference frame use different coordinate systems.');\n if (value.kind === 'geodetic') {\n if (value.uncertainty) {\n uncertainty(value.uncertainty.latitude, 'deg', `${path}/uncertainty/latitude`, owner);\n uncertainty(value.uncertainty.longitude, 'deg', `${path}/uncertainty/longitude`, owner);\n }\n if (value.altitude) {\n if (frame?.kind === 'geodetic' && !frame.vertical) problem('FRAME.VERTICAL_REFERENCE', `${path}/altitude`, 'Altitude requires an explicit vertical reference and unit.');\n quantity(value.altitude, `${path}/altitude`, owner, frame?.kind === 'geodetic' ? frame.vertical?.unit : undefined);\n }\n } else {\n for (const axis of ['x', 'y', 'z'] as const) quantity(value[axis], `${path}/${axis}`, owner, frame?.kind === 'cartesian' ? frame.unit : undefined);\n }\n }\n function matchesField(ref: string, field: 'eventTime' | 'position' | 'measurement', measurementId?: string): boolean {\n const assertion = assertions.get(key(ref));\n return assertion?.field === field && (assertion.field !== 'measurement' || assertion.measurementId === measurementId);\n }\n function fieldReferences(refs: string[], field: 'eventTime' | 'position' | 'measurement', path: string, owner?: string, measurementId?: string): void {\n references(refs, path, owner);\n for (const [i, ref] of refs.entries()) {\n if (ref.startsWith('assertion:') && assertions.has(key(ref)) && !matchesField(ref, field, measurementId)) problem('REF.FIELD_MISMATCH', `${path}/${i}`, 'Assertion concerns a different field or measurement.');\n }\n }\n function selection(value: ValueSelection | undefined, selectedValue: unknown, refs: string[], field: 'eventTime' | 'position' | 'measurement', path: string, owner?: string, measurementId?: string): void {\n if (!value) {\n if (refs.some(ref => ref.startsWith('assertion:'))) problem('SELECTION.REQUIRED', `${path}/selection`, 'A curated value citing local assertions requires an explicit selection record.');\n return;\n }\n const selectionPath = `${path}/selection`;\n instant(value.evaluatedAt, `${selectionPath}/evaluatedAt`);\n method(value.methodRef, value.methodVersion, selectionPath, owner);\n fieldReferences(value.consideredAssertionRefs, field, `${selectionPath}/consideredAssertionRefs`, owner, measurementId);\n resolve(value.assertionRef, `${selectionPath}/assertionRef`, owner);\n if (!value.consideredAssertionRefs.includes(value.assertionRef)) problem('SELECTION.INPUTS', `${selectionPath}/assertionRef`, 'Selected assertion must be among considered inputs.');\n if (!refs.includes(value.assertionRef)) problem('SELECTION.SOURCE_REF', `${path}/sourceRefs`, 'Field must cite the selected assertion.');\n const target = assertions.get(key(value.assertionRef));\n if (target && !matchesField(value.assertionRef, field, measurementId)) problem('REF.FIELD_MISMATCH', `${selectionPath}/assertionRef`, 'Selected assertion concerns a different field or measurement.');\n else if (target && JSON.stringify(target.value) !== JSON.stringify(selectedValue)) problem('SELECTION.VALUE_MISMATCH', `${path}/value`, 'Selection must copy the cited assertion value exactly; processing is declared separately.');\n }\n\n instant(data.createdAt, '/createdAt');\n instant(data.updatedAt, '/updatedAt');\n if (comparePoints({ kind: 'instant', value: data.createdAt, timeScale: 'UTC' }, { kind: 'instant', value: data.updatedAt, timeScale: 'UTC' }) > 0) problem('TIME.RECORD_ORDER', '/updatedAt', 'Record update precedes record creation.');\n\n for (const [i, product] of data.products.entries()) {\n const owner = `product:${product.id}`;\n if (product.kind === 'raw') references(product.sourceRefs, `/products/${i}/sourceRefs`, owner);\n else {\n resolve(product.generatedBy, `/products/${i}/generatedBy`, owner);\n const producer = processes.get(key(product.generatedBy));\n if (producer && !processOutputs.get(producer.id)?.has(owner)) problem('PROCESS.OUTPUT_MISMATCH', `/products/${i}/generatedBy`, 'Producer does not list this derived product as an output.');\n }\n }\n for (const [i, assertion] of data.assertions.entries()) {\n const path = `/assertions/${i}`;\n const owner = `assertion:${assertion.id}`;\n resolve(assertion.provenance.sourceRef, `${path}/provenance/sourceRef`, owner);\n const origin = assertion.provenance.sourceRef.startsWith('source:') ? sources.get(key(assertion.provenance.sourceRef)) : products.get(key(assertion.provenance.sourceRef));\n if (assertion.provenance.sourceDigest && origin?.digest && assertion.provenance.sourceDigest.value !== origin.digest.value) problem('SOURCE.DIGEST_MISMATCH', `${path}/provenance/sourceDigest`, 'Declared digest differs from the inventory declaration; neither has been verified against bytes.');\n const locator = assertion.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) problem('TIME.INTERVAL', `${path}/provenance/locator/endSeconds`, 'Locator end precedes its start.');\n if (assertion.field === 'eventTime') time(assertion.value, `${path}/value`);\n else if (assertion.field === 'position') position(assertion.value, `${path}/value`, owner);\n else {\n // This is the subject of the assertion, not a processing dependency.\n resolve(`measurement:${assertion.measurementId}`, `${path}/measurementId`);\n quantity(assertion.value, `${path}/value`, owner);\n }\n }\n if (data.eventTime.state === 'known' || data.eventTime.state === 'approximate') {\n time(data.eventTime.value, '/eventTime/value');\n fieldReferences(data.eventTime.sourceRefs, 'eventTime', '/eventTime/sourceRefs');\n if (data.eventTime.uncertainty) uncertainty(data.eventTime.uncertainty, ['s', 'ms', 'us', 'ns'], '/eventTime/uncertainty');\n selection(data.eventTime.selection, data.eventTime.value, data.eventTime.sourceRefs, 'eventTime', '/eventTime');\n }\n if (data.position.state === 'known' || data.position.state === 'approximate') {\n position(data.position.value, '/position/value');\n fieldReferences(data.position.sourceRefs, 'position', '/position/sourceRefs');\n selection(data.position.selection, data.position.value, data.position.sourceRefs, 'position', '/position');\n }\n for (const [i, measurement] of data.measurements.entries()) {\n const path = `/measurements/${i}`;\n const owner = `measurement:${measurement.id}`;\n if (measurement.frameRef) resolve(measurement.frameRef, `${path}/frameRef`, owner);\n quantity(measurement.value, `${path}/value`, owner);\n fieldReferences(measurement.sourceRefs, 'measurement', `${path}/sourceRefs`, owner, measurement.id);\n selection(measurement.selection, measurement.value, measurement.sourceRefs, 'measurement', path, owner, measurement.id);\n }\n for (const [i, process] of data.processing.entries()) {\n const path = `/processing/${i}`;\n const owner = `process:${process.id}`;\n instant(process.performedAt, `${path}/performedAt`);\n method(process.methodRef, process.methodVersion, path, owner);\n references(process.inputRefs, `${path}/inputRefs`, owner);\n // Outputs are reverse edges of product.generatedBy, not input dependencies.\n references(process.outputRefs, `${path}/outputRefs`);\n for (const [j, ref] of process.outputRefs.entries()) {\n const product = products.get(key(ref));\n if (product && (product.kind !== 'derived' || product.generatedBy !== owner)) problem('PROCESS.OUTPUT_MISMATCH', `${path}/outputRefs/${j}`, 'Output must be a derived product identifying this producer.');\n }\n }\n\n // Iterative topological check avoids recursion limits on long processing histories.\n const indegrees = new Map([...graph.keys()].map(ref => [ref, 0]));\n for (const dependencies of graph.values()) for (const ref of dependencies) indegrees.set(ref, (indegrees.get(ref) ?? 0) + 1);\n const queue = [...indegrees].filter(([, degree]) => degree === 0).map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++) {\n for (const dependency of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(dependency)! - 1;\n indegrees.set(dependency, degree);\n if (degree === 0) queue.push(dependency);\n }\n }\n if (queue.length !== graph.size) problem('PROCESS.CYCLE', '/processing', 'Local processing/provenance dependencies contain a cycle.');\n\n const checks: ObservationChecks = { structural: 'passed', semantic: issues.length ? 'failed' : 'passed', profile: 'not_checked', external: 'not_checked' };\n const uncheckedRefs = [...sources.keys()].map(id => `source:${id}`).concat(\n [...products.keys()].map(id => `product:${id}`), [...methods.keys()].map(id => `method:${id}`), [...frames.keys()].map(id => `frame:${id}`),\n );\n return issues.length ? { success: false, issues, checks, uncheckedRefs } : { success: true, data, issues, checks, uncheckedRefs };\n}\n","import { z } from 'zod';\nimport { ExperimentalObservationSchema, ObservationAssertionSchema } from './observation-schema';\nimport { instantString } from './primitives';\n\nconst text = z.string().min(1).regex(/\\S/, 'must contain non-whitespace text');\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst claimRef = z.string().regex(/^claim:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst inputRef = z.string().regex(/^(?:claim|source|product|assertion|measurement):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const ClaimSubjectSchema = z.discriminatedUnion('kind', [\n z.strictObject({ kind: z.literal('observation') }),\n z.strictObject({ kind: z.literal('measurement'), measurementId: id }),\n]);\nconst common = {\n id, recordedAt: instantString, topic: text, subject: ClaimSubjectSchema,\n supersedes: z.array(claimRef).min(1).optional(),\n};\nexport const SourceStatementSchema = z.strictObject({\n ...common, kind: z.literal('source_assertion'), text,\n reportedLevel: text.optional(), provenance: ObservationAssertionSchema.options[0].shape.provenance,\n});\nconst assessment = { ...common, kind: z.literal('assessment'), inputRefs: z.array(inputRef), rationale: text };\nexport const UnassessedClaimSchema = z.strictObject({ ...assessment, status: z.literal('unassessed') });\nexport const AssessedClaimSchema = z.strictObject({\n ...assessment, status: z.literal('assessed'),\n outcome: z.enum(['reported', 'confirmed', 'absent', 'inconclusive']),\n evaluatedBy: text, evaluatedAt: instantString,\n methodRef: z.string().regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/), methodVersion: text,\n confidence: z.number().min(0).max(1).optional(),\n});\nexport const HistoricalClaimSchema = z.union([SourceStatementSchema, UnassessedClaimSchema, AssessedClaimSchema]);\nexport const EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID = 'urn:disclosureos:experimental:claim-history:0.1.0';\nexport const CLAIM_HISTORY_RULESET_VERSION = '0.1.0';\n/** Separate review envelope: the embedded Observation keeps its immutable 0.1.0 contract. */\nexport const ExperimentalClaimHistorySchema = z.strictObject({\n kind: z.literal('claim_history'), schemaVersion: z.literal('0.1.0'), id,\n observation: ExperimentalObservationSchema, claims: z.array(HistoricalClaimSchema),\n extensions: ExperimentalObservationSchema.shape.extensions,\n});\nexport type ClaimSubject = z.infer<typeof ClaimSubjectSchema>;\nexport type SourceStatement = z.infer<typeof SourceStatementSchema>;\nexport type UnassessedClaim = z.infer<typeof UnassessedClaimSchema>;\nexport type AssessedClaim = z.infer<typeof AssessedClaimSchema>;\nexport type HistoricalClaim = z.infer<typeof HistoricalClaimSchema>;\nexport type ExperimentalClaimHistory = z.infer<typeof ExperimentalClaimHistorySchema>;\nexport function experimentalClaimHistoryJsonSchema(): Record<string, unknown> {\n return { ...z.toJSONSchema(ExperimentalClaimHistorySchema, { target: 'draft-2020-12' }), $id: EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID };\n}\n","import { ExperimentalClaimHistorySchema, EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID, CLAIM_HISTORY_RULESET_VERSION } from './claim-history-schema';\nimport type { ExperimentalClaimHistory, HistoricalClaim } from './claim-history-schema';\nimport { parseExperimentalObservation } from './observation';\nimport type { ObservationChecks, ObservationIssueCode } from './observation';\nimport { checkTime, comparePoints } from './primitives';\nimport type { PrimitiveIssue } from './primitives';\n\nexport type ClaimHistoryIssueCode = ObservationIssueCode | 'CLAIM.SUPERSESSION_SCOPE' | 'CLAIM.REVISION_ORDER'\n | 'CLAIM.DEPENDENCY_CYCLE' | 'CLAIM.EVALUATION_ORDER' | 'CLAIM.REVISION_ATTRIBUTION';\nexport interface ClaimHistoryIssue {\n code: ClaimHistoryIssueCode; stage: 'structural' | 'semantic'; severity: 'error'; pointer: string; message: string;\n}\nexport interface ClaimHistoryValidation {\n checks: ObservationChecks;\n issues: ClaimHistoryIssue[];\n uncheckedRefs: string[];\n contract: { kind: 'claim_history'; schemaId: typeof EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID; rulesetVersion: typeof CLAIM_HISTORY_RULESET_VERSION };\n}\nexport type ClaimHistoryParseResult = ClaimHistoryValidation & (\n { success: true; data: ExperimentalClaimHistory; currentClaimRefs: string[] } | { success: false }\n);\nconst point = (value: string) => ({ kind: 'instant' as const, value, timeScale: 'UTC' as const });\nconst pointer = (path: readonly PropertyKey[]) => path.map(p => `/${String(p).replace(/~/g, '~0').replace(/\\//g, '~1')}`).join('');\n\n/** Checks declared claim history only. Current means not superseded, never scientifically verified. */\nexport function parseExperimentalClaimHistory(input: unknown): ClaimHistoryParseResult {\n const contract: ClaimHistoryValidation['contract'] = { kind: 'claim_history', schemaId: EXPERIMENTAL_CLAIM_HISTORY_SCHEMA_ID, rulesetVersion: CLAIM_HISTORY_RULESET_VERSION };\n const parsed = ExperimentalClaimHistorySchema.safeParse(input);\n if (!parsed.success) return {\n success: false, contract, checks: { structural: 'failed', semantic: 'not_checked', profile: 'not_checked', external: 'not_checked' }, uncheckedRefs: [],\n issues: parsed.error.issues.map(issue => ({ code: 'STRUCT.VALUE', stage: 'structural', severity: 'error', pointer: pointer(issue.path), message: issue.message })),\n };\n const data = parsed.data;\n const observationResult = parseExperimentalObservation(data.observation);\n const issues: ClaimHistoryIssue[] = observationResult.issues.map(issue => ({ ...issue, pointer: `/observation${issue.pointer}` }));\n const problem = (code: ClaimHistoryIssueCode, path: string, message: string) => issues.push({ code, stage: 'semantic', severity: 'error', pointer: path, message });\n const claims = new Map<string, HistoricalClaim>();\n const graph = new Map<string, Set<string>>();\n const superseded = new Set<string>();\n const sources = new Map(data.observation.sources.map(item => [`source:${item.id}`, item]));\n const products = new Map(data.observation.products.map(item => [`product:${item.id}`, item]));\n const methods = new Map(data.observation.methods.map(item => [`method:${item.id}`, item]));\n const measurements = new Set(data.observation.measurements.map(item => `measurement:${item.id}`));\n const available = new Set([\n ...sources.keys(), ...products.keys(), ...measurements,\n ...data.observation.assertions.map(item => `assertion:${item.id}`),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const ref = `claim:${claim.id}`;\n if (claims.has(ref)) problem('REF.UNIQUE_ID', `/claims/${i}/id`, 'Duplicate claim ID; each revision must have its own ID.');\n else { claims.set(ref, claim); graph.set(ref, new Set()); available.add(ref); }\n }\n function instant(value: string, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(point(value), path, local);\n for (const issue of local) problem(issue.code, issue.pointer, issue.message);\n }\n function resolve(ref: string, path: string, owner?: string): void {\n if (!available.has(ref)) problem('REF.LOCAL_RESOLUTION', path, `Undeclared local reference: ${ref}`);\n else if (owner && claims.has(ref)) graph.get(owner)?.add(ref);\n }\n function refs(values: string[], path: string, owner: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of values.entries()) {\n if (seen.has(ref)) problem('REF.UNIQUE_ID', `${path}/${i}`, 'Reference is repeated.');\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n for (const [i, claim] of data.claims.entries()) {\n const path = `/claims/${i}`;\n const owner = `claim:${claim.id}`;\n instant(claim.recordedAt, `${path}/recordedAt`);\n if (claim.subject.kind === 'measurement') resolve(`measurement:${claim.subject.measurementId}`, `${path}/subject/measurementId`);\n if (claim.supersedes) {\n refs(claim.supersedes, `${path}/supersedes`, owner);\n for (const [j, ref] of claim.supersedes.entries()) {\n const previous = claims.get(ref);\n if (!previous) continue;\n superseded.add(ref);\n if (previous.kind !== claim.kind || previous.topic !== claim.topic || JSON.stringify(previous.subject) !== JSON.stringify(claim.subject)) {\n problem('CLAIM.SUPERSESSION_SCOPE', `${path}/supersedes/${j}`, 'A revision must retain the claim kind, topic, and subject. Record a different claim separately.');\n }\n if (previous.kind === 'assessment' && previous.status === 'assessed' && claim.kind === 'assessment'\n && (claim.status !== 'assessed' || previous.evaluatedBy !== claim.evaluatedBy)) {\n problem('CLAIM.REVISION_ATTRIBUTION', `${path}/supersedes/${j}`, 'An assessed revision must retain its evaluator; other evaluators record independent assessments.');\n }\n if (comparePoints(point(previous.recordedAt), point(claim.recordedAt)) > 0) {\n problem('CLAIM.REVISION_ORDER', `${path}/recordedAt`, 'A revision cannot be recorded before the statement it supersedes.');\n }\n }\n }\n if (claim.kind === 'source_assertion') {\n resolve(claim.provenance.sourceRef, `${path}/provenance/sourceRef`);\n const source = sources.get(claim.provenance.sourceRef) ?? products.get(claim.provenance.sourceRef);\n if (source?.digest && claim.provenance.sourceDigest && source.digest.value !== claim.provenance.sourceDigest.value) {\n problem('SOURCE.DIGEST_MISMATCH', `${path}/provenance/sourceDigest`, 'Digest differs from the inventory declaration; neither is verified against bytes.');\n }\n const locator = claim.provenance.locator;\n if (locator?.kind === 'time_range' && locator.endSeconds < locator.startSeconds) problem('TIME.INTERVAL', `${path}/provenance/locator/endSeconds`, 'Locator end precedes its start.');\n } else {\n refs(claim.inputRefs, `${path}/inputRefs`, owner);\n if (claim.status === 'assessed') {\n instant(claim.evaluatedAt, `${path}/evaluatedAt`);\n if (comparePoints(point(claim.evaluatedAt), point(claim.recordedAt)) > 0) problem('CLAIM.EVALUATION_ORDER', `${path}/evaluatedAt`, 'Evaluation cannot occur after the assessment was recorded.');\n const method = methods.get(claim.methodRef);\n if (!method) problem('REF.LOCAL_RESOLUTION', `${path}/methodRef`, 'Assessment method is not declared in the Observation inventory.');\n else if (method.version !== claim.methodVersion) problem('METHOD.VERSION_MISMATCH', `${path}/methodVersion`, 'Assessment method version differs from its inventory declaration.');\n }\n }\n }\n // Supersession and claim inputs form one dependency graph. Array order is irrelevant.\n const indegrees = new Map([...graph.keys()].map(ref => [ref, 0]));\n for (const edges of graph.values()) for (const ref of edges) indegrees.set(ref, indegrees.get(ref)! + 1);\n const queue = [...indegrees].filter(([, degree]) => degree === 0).map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++) for (const ref of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(ref)! - 1;\n indegrees.set(ref, degree);\n if (degree === 0) queue.push(ref);\n }\n if (queue.length !== graph.size) problem('CLAIM.DEPENDENCY_CYCLE', '/claims', 'Claim inputs and supersession must form an acyclic history.');\n const validation: ClaimHistoryValidation = {\n contract, issues, uncheckedRefs: observationResult.uncheckedRefs,\n checks: { structural: 'passed', semantic: issues.length ? 'failed' : 'passed', profile: 'not_checked', external: 'not_checked' },\n };\n return issues.length ? { ...validation, success: false } : {\n ...validation, success: true, data,\n currentClaimRefs: [...claims.keys()].filter(ref => !superseded.has(ref)),\n };\n}\n","import { comparePoints, instantString } from './primitives';\n/** Exact ordering of valid UTC-offset instants; undefined for invalid or unresolvable input. */\nexport function compareUtcInstants(left: string, right: string): -1 | 0 | 1 | undefined {\n if (!instantString.safeParse(left).success || !instantString.safeParse(right).success) return undefined;\n const result = comparePoints({kind:'instant',value:left,timeScale:'UTC'}, {kind:'instant',value:right,timeScale:'UTC'});\n return result === -1 || result === 0 || result === 1 ? result : undefined;\n}\n","import { z } from 'zod';\n\nexport const SourceTypeSchema = z\n .enum([\n 'foia',\n 'official_report',\n 'official_statement',\n 'congressional_testimony',\n 'congressional_report',\n 'military_document',\n 'intelligence_document',\n 'whistleblower',\n 'firsthand_witness',\n 'secondhand_account',\n 'news_article',\n 'documentary',\n 'interview',\n 'book',\n 'academic_paper',\n 'investigation_report',\n 'database_entry',\n 'social_media',\n 'website',\n 'other',\n ])\n .describe('Kind of source backing an observation (document, testimony, media, etc.).');\n\nexport type SourceType = z.infer<typeof SourceTypeSchema>;\n","import { z } from 'zod';\n\nexport const SourceCredibilitySchema = z\n .enum(['official', 'verified', 'credible', 'unverified', 'questionable', 'disputed', 'unknown'])\n .describe('Trust tier of a source — an orthogonal axis to confidence and temporal certainty.');\n\nexport type SourceCredibility = z.infer<typeof SourceCredibilitySchema>;\n","import { z } from 'zod';\nimport { SourceTypeSchema } from './types';\nimport { SourceCredibilitySchema } from './credibility';\n\nexport const SourceReferenceSchema = z\n .object({\n sourceId: z.string().describe('Stable unique identifier for this source.'),\n type: SourceTypeSchema,\n title: z.string().describe('Title of the source document, article, or material.'),\n author: z.string().optional().describe('Author of the source material.'),\n organization: z.string().optional().describe('Organization that produced or published the source.'),\n date: z.string().optional().describe('Publication or creation date of the source (ISO date).'),\n url: z.string().optional().describe('Link to the source material.'),\n archiveUrl: z.string().optional().describe('Archived copy of the source (e.g. Wayback Machine), in case the original disappears.'),\n reference: z\n .string()\n .optional()\n .describe('Citation locator within the source (e.g. page number, document section).'),\n credibility: SourceCredibilitySchema,\n isPrimarySource: z\n .boolean()\n .optional()\n .describe('Whether this is a primary source (original document/recording) rather than secondary reporting.'),\n classificationLevel: z\n .string()\n .optional()\n .describe('Government classification of the source, if it was ever classified.'),\n notes: z.string().optional().describe('Free-text context about the source.'),\n })\n .meta({ id: 'SourceReference' })\n .describe('A citation/source backing an observation, with its credibility tier.');\n\nexport type SourceReference = z.infer<typeof SourceReferenceSchema>;\n","import { z } from 'zod';\n\n/**\n * The single qualitative confidence magnitude for the ecosystem.\n * Merges the former `ConfidenceLevel` (investigation) and `CredibilityRating`\n * (testimony) — which were byte-identical — plus the inline high/medium/low\n * scales in `provenance/digital`.\n *\n * Distinct from `SourceCredibility` (trust tier), `TemporalCertainty` (time\n * precision), and `AssessmentLevel` (evidentiary tier) — those are the other\n * three orthogonal axes and are intentionally NOT merged here.\n */\nexport const ConfidenceLevelSchema = z\n .enum(['very_high', 'high', 'moderate', 'low', 'very_low', 'unassessed'])\n .describe('Qualitative confidence magnitude.');\n\nexport type ConfidenceLevel = z.infer<typeof ConfidenceLevelSchema>;\n\nexport const CONFIDENCE_LEVELS = ConfidenceLevelSchema.options;\n\nexport function isConfidenceLevel(value: unknown): value is ConfidenceLevel {\n return ConfidenceLevelSchema.safeParse(value).success;\n}\n","import { z } from 'zod';\nimport { SourceReferenceSchema } from '../source/reference';\n// `ConfidenceLevel` (investigation confidence) is the single shared qualitative\n// scale; imported here to keep one source of truth (DRY #1).\nimport { ConfidenceLevelSchema } from '../shared';\n\nexport const ObjectShapeSchema = z\n .enum([\n 'sphere', 'orb', 'disc', 'saucer', 'oval', 'egg',\n 'cylinder', 'cigar', 'tic_tac',\n 'triangle', 'delta', 'boomerang', 'chevron',\n 'diamond', 'rectangle', 'square', 'cube',\n 'cross', 'star',\n 'amorphous', 'changing', 'light_only',\n 'other', 'unknown',\n ])\n .describe('Reported shape of the observed object.');\n\nexport type ObjectShape = z.infer<typeof ObjectShapeSchema>;\n\nexport const ObjectCharacteristicsSchema = z\n .object({\n shape: ObjectShapeSchema.optional(),\n size: z.string().optional().describe('Apparent size as reported (e.g. \"size of a commercial airliner\").'),\n sizeMeters: z.number().optional().describe('Estimated size of the object, in meters.'),\n color: z.string().optional().describe('Primary color of the object as reported.'),\n secondaryColors: z.array(z.string()).optional().describe('Additional colors observed on the object.'),\n luminosity: z\n .string()\n .optional()\n .describe('Light emission as reported (e.g. \"glowing white\", \"self-luminous\", \"no lights\").'),\n sound: z.string().optional().describe('Whether and what sound the object produced (e.g. \"silent\", \"humming\").'),\n soundDescription: z.string().optional().describe('Fuller free-text description of any sound.'),\n surfaceDetails: z\n .string()\n .optional()\n .describe('Visible surface features (e.g. \"metallic, seamless, no rivets or seams\").'),\n numberObserved: z.number().optional().describe('How many objects were observed.'),\n formation: z\n .string()\n .optional()\n .describe('Geometric arrangement when multiple objects were observed (e.g. \"triangular formation\").'),\n structuralFeatures: z\n .array(z.string())\n .optional()\n .describe('Distinct structural elements reported (e.g. \"dome\", \"portholes\", \"appendages\").'),\n })\n .meta({ id: 'ObjectCharacteristics' })\n .describe('Physical description of the observed object(s).');\n\nexport type ObjectCharacteristics = z.infer<typeof ObjectCharacteristicsSchema>;\n\nexport const ManeuverTypeSchema = z\n .enum([\n 'hover', 'instant_acceleration', 'instant_stop',\n 'right_angle_turn', 'zigzag', 'pendulum',\n 'split', 'merge', 'disappear', 'appear',\n 'transmedium_entry', 'transmedium_exit',\n 'vertical_ascent', 'vertical_descent',\n 'rotation', 'wobble',\n 'other',\n ])\n .describe('A distinctive movement/maneuver exhibited by the object.');\n\nexport type ManeuverType = z.infer<typeof ManeuverTypeSchema>;\n\nexport const MovementSchema = z\n .object({\n speed: z.string().optional().describe('Speed as reported (e.g. \"faster than any known aircraft\").'),\n speedKmh: z.number().optional().describe('Estimated speed, in kilometers per hour.'),\n altitude: z.string().optional().describe('Altitude as reported (e.g. \"treetop level\", \"very high\").'),\n altitudeMeters: z.number().optional().describe('Estimated altitude of the object, in meters.'),\n heading: z.number().optional().describe('Direction of travel, in compass degrees (0–360).'),\n flightPath: z\n .string()\n .optional()\n .describe('Narrative of the object\\u2019s path through the encounter (e.g. \"descended from 80,000 ft to sea level\").'),\n maneuvers: z.array(ManeuverTypeSchema).optional().describe('Distinctive maneuvers exhibited, from the typed vocabulary.'),\n maneuverDescriptions: z\n .array(z.string())\n .optional()\n .describe('Free-text descriptions elaborating on the typed maneuvers.'),\n radarData: z.boolean().optional().describe('Whether the movement was tracked on radar.'),\n infraredSignature: z.boolean().optional().describe('Whether the object showed an infrared signature.'),\n trajectory: z.string().optional().describe('Overall trajectory summary (e.g. \"erratic\", \"straight and level\").'),\n })\n .meta({ id: 'Movement' })\n .describe('How the object moved — kinematics and notable maneuvers.');\n\nexport type Movement = z.infer<typeof MovementSchema>;\n\nexport const InvestigationSchema = z\n .object({\n investigatingBody: z\n .string()\n .optional()\n .describe('Primary organization that investigated (e.g. \"AARO\", \"Project Blue Book\").'),\n investigatingBodies: z\n .array(z.string())\n .optional()\n .describe('All organizations that investigated, when more than one.'),\n caseNumber: z.string().optional().describe('Case or file number assigned by the investigating body.'),\n investigationDate: z.string().optional().describe('When the investigation was conducted (ISO date).'),\n conclusion: z.string().optional().describe('Official conclusion reached (e.g. \"unidentified\", \"weather balloon\").'),\n confidence: ConfidenceLevelSchema.optional(),\n methodologies: z\n .array(z.string())\n .optional()\n .describe('Methods used (e.g. \"witness interviews\", \"radar data analysis\").'),\n findings: z.string().optional().describe('Summary of what the investigation found.'),\n recommendations: z.string().optional().describe('Recommendations issued by the investigation.'),\n })\n .meta({ id: 'Investigation' })\n .describe('Official/independent investigation of the observation.');\n\nexport type Investigation = z.infer<typeof InvestigationSchema>;\n\nexport const WitnessesSchema = z\n .object({\n count: z.number().optional().describe('Total number of witnesses.'),\n categories: z\n .array(z.string())\n .optional()\n .describe('Kinds of witnesses present (e.g. \"military pilots\", \"radar operators\", \"civilians\").'),\n militaryWitnesses: z.boolean().optional().describe('Whether any witnesses were military personnel.'),\n aviationWitnesses: z\n .boolean()\n .optional()\n .describe('Whether any witnesses were pilots or aviation professionals.'),\n multipleIndependent: z\n .boolean()\n .optional()\n .describe('Whether independent witnesses observed from separate vantage points.'),\n professionalObservers: z\n .boolean()\n .optional()\n .describe('Whether any witnesses were trained observers (pilots, astronomers, military).'),\n descriptions: z.array(z.string()).optional().describe('Brief summaries of individual witness accounts.'),\n })\n .meta({ id: 'Witnesses' })\n .describe('Aggregate summary of who witnessed the observation.');\n\nexport type Witnesses = z.infer<typeof WitnessesSchema>;\n\nexport const ResponseImpactSchema = z\n .object({\n officialResponse: z\n .string()\n .optional()\n .describe('How officials responded (statements, denials, acknowledgments).'),\n mediaAttention: z.boolean().optional().describe('Whether the observation received media coverage.'),\n publicImpact: z.string().optional().describe('Effect on public awareness or discourse.'),\n policyImpact: z\n .string()\n .optional()\n .describe('Policy consequences (e.g. hearings, legislation, reporting-process changes).'),\n militaryResponse: z\n .string()\n .optional()\n .describe('Military actions taken (e.g. intercept scrambled, alert status changed).'),\n coverUpAlleged: z\n .boolean()\n .optional()\n .describe('Whether suppression or concealment of the event has been alleged.'),\n })\n .meta({ id: 'ResponseImpact' })\n .describe('Official, media, and public response to the observation.');\n\nexport type ResponseImpact = z.infer<typeof ResponseImpactSchema>;\n\nexport const EnvironmentSchema = z\n .object({\n weather: z.string().optional().describe('General weather conditions (e.g. \"clear\", \"overcast\").'),\n visibility: z.string().optional().describe('Visibility conditions (e.g. \"unlimited\", \"10 miles\", \"hazy\").'),\n cloudCover: z.string().optional().describe('Cloud cover description (e.g. \"scattered at 5,000 ft\").'),\n windSpeed: z.string().optional().describe('Wind conditions as reported.'),\n temperature: z.number().optional().describe('Air temperature, in degrees Celsius.'),\n humidity: z.number().optional().describe('Relative humidity, as a percentage (0–100).'),\n celestialConditions: z\n .string()\n .optional()\n .describe('Sky conditions relevant to identification (e.g. visible planets, meteor showers, satellites).'),\n moonPhase: z.string().optional().describe('Moon phase description at the time of observation.'),\n precipitation: z.string().optional().describe('Precipitation at the time of observation, if any.'),\n })\n .meta({ id: 'Environment' })\n .describe('Environmental and weather conditions at the time of observation.');\n\nexport type Environment = z.infer<typeof EnvironmentSchema>;\n\nexport const RelationKindSchema = z\n .enum([\n 'corroborates',\n 'contradicts',\n 'duplicate_of',\n 'same_object',\n 'supersedes',\n 'superseded_by',\n 're_analysis_of',\n 'part_of',\n ])\n .describe('How one observation relates to another (typed edge vocabulary).');\n\nexport type RelationKind = z.infer<typeof RelationKindSchema>;\n\nexport const RelationEdgeSchema = z\n .object({\n kind: RelationKindSchema,\n targetId: z.string().min(1).describe('The `Observation.id` this edge points at.'),\n note: z.string().optional().describe('Free-text context for why the link exists.'),\n })\n .meta({ id: 'RelationEdge' })\n .describe('A typed link from this observation to another.');\n\nexport type RelationEdge = z.infer<typeof RelationEdgeSchema>;\n\nexport const RelationsSchema = z\n .object({\n /** Typed edges to other observations — the standardized way to link records. */\n edges: z\n .array(RelationEdgeSchema)\n .optional()\n .describe('Typed edges to other observations — the standardized way to link records.'),\n /** Named grouping into a flap (a localized cluster of sightings). */\n flap: z.string().optional().describe('Named grouping into a flap (a localized cluster of sightings).'),\n /** Named grouping into a wave (a broad temporal surge of sightings). */\n wave: z.string().optional().describe('Named grouping into a wave (a broad temporal surge of sightings).'),\n /** Named grouping into an ad-hoc cluster. */\n cluster: z.string().optional().describe('Named grouping into an ad-hoc cluster.'),\n /** @deprecated Use typed `edges` with `kind: 'corroborates' | 'same_object' | …`. */\n relatedObservationIds: z\n .array(z.string())\n .optional()\n .describe('Deprecated — use typed `edges` with `kind: \"corroborates\" | \"same_object\" | …`.'),\n /** @deprecated Use typed `edges` with `kind: 'supersedes' | 're_analysis_of' | …`. */\n precedingEvents: z\n .array(z.string())\n .optional()\n .describe('Deprecated — use typed `edges` with `kind: \"supersedes\" | \"re_analysis_of\" | …`.'),\n /** @deprecated Use typed `edges`. */\n followingEvents: z.array(z.string()).optional().describe('Deprecated — use typed `edges`.'),\n })\n .meta({ id: 'Relations' })\n .describe('Typed links to related observations, plus flap/wave/cluster groupings.');\n\nexport type Relations = z.infer<typeof RelationsSchema>;\n\nexport const AviationSchema = z\n .object({\n aircraftType: z.string().optional().describe('Type of aircraft involved (e.g. \"F/A-18F Super Hornet\").'),\n aircraftDesignation: z.string().optional().describe('Military designation or tail number of the aircraft.'),\n squadron: z.string().optional().describe('Squadron or unit the aircraft belonged to.'),\n flightMission: z.string().optional().describe('Mission being flown at the time (e.g. \"training exercise\", \"combat air patrol\").'),\n altitude: z.number().optional().describe('Aircraft altitude during the encounter, in meters.'),\n speed: z.number().optional().describe('Aircraft speed during the encounter, in kilometers per hour.'),\n heading: z.number().optional().describe('Aircraft heading during the encounter, in compass degrees (0–360).'),\n radarContact: z.boolean().optional().describe('Whether the aircraft\\u2019s radar held contact with the object.'),\n weaponsSystemEngaged: z\n .boolean()\n .optional()\n .describe('Whether a weapons system locked onto or tracked the object.'),\n interceptAttempted: z.boolean().optional().describe('Whether an intercept of the object was attempted.'),\n })\n .meta({ id: 'Aviation' })\n .describe('Aviation context when the observation involved aircraft.');\n\nexport type Aviation = z.infer<typeof AviationSchema>;\n\nexport const SourceDataSchema = z\n .object({\n primarySource: SourceReferenceSchema.optional(),\n sources: z.array(SourceReferenceSchema).optional(),\n originalClassification: z\n .string()\n .optional()\n .describe('Original government classification of the source material (e.g. \"SECRET\").'),\n declassificationDate: z.string().optional().describe('When the source material was declassified (ISO date).'),\n foiaRequestId: z.string().optional().describe('FOIA request number that produced the source material.'),\n archiveLocation: z\n .string()\n .optional()\n .describe('Physical or digital archive where the source material resides.'),\n })\n .meta({ id: 'SourceData' })\n .describe(\n 'Where the observation data came from. Forensic custody/authenticity now lives in the optional `Observation.provenance` slot (@disclosureos/records/extensions/provenance).',\n );\n\nexport type SourceData = z.infer<typeof SourceDataSchema>;\n\n// Re-export the shared qualitative confidence scale under the historical name\n// so existing `domains` consumers keep resolving `ConfidenceLevel` here.\nexport type { ConfidenceLevel } from '../shared';\n","import { z } from 'zod';\n\nexport const CoordinatePrecisionSchema = z\n .enum(['exact', 'address', 'locality', 'region', 'approximate', 'unknown'])\n .describe('How precisely a coordinate is known.');\n\nexport type CoordinatePrecision = z.infer<typeof CoordinatePrecisionSchema>;\n\nexport const SiteTypeSchema = z\n .enum([\n 'military_air_base',\n 'military_naval_base',\n 'military_army_base',\n 'military_missile_site',\n 'military_radar_station',\n 'military_research_facility',\n 'military_training_area',\n 'military_other',\n 'nuclear_power_plant',\n 'nuclear_weapons_storage',\n 'nuclear_research_facility',\n 'nuclear_waste_storage',\n 'nuclear_other',\n 'civilian_airport',\n 'private_airfield',\n 'heliport',\n 'seaport',\n 'offshore_platform',\n 'naval_vessel',\n 'government_facility',\n 'embassy',\n 'intelligence_facility',\n 'power_plant',\n 'dam',\n 'telecommunications',\n 'water_treatment',\n 'research_facility',\n 'test_range',\n 'space_station',\n 'archaeological_site',\n 'volcano',\n 'command_center',\n 'residential',\n 'commercial',\n 'industrial',\n 'agricultural',\n 'wilderness',\n 'ocean',\n 'lake',\n 'mountain',\n 'desert',\n 'forest',\n 'urban',\n 'suburban',\n 'rural',\n 'other',\n 'unknown',\n ])\n .describe('Category of site at or near the observation location (military, nuclear, civilian, natural, etc.).');\n\nexport type SiteType = z.infer<typeof SiteTypeSchema>;\n\nexport const TerrainTypeSchema = z\n .enum([\n 'ocean',\n 'coastal',\n 'lake',\n 'river',\n 'wetland',\n 'plains',\n 'hills',\n 'mountains',\n 'desert',\n 'forest',\n 'jungle',\n 'tundra',\n 'arctic',\n 'urban',\n 'suburban',\n 'rural',\n 'underground',\n 'underwater',\n 'airborne',\n 'space',\n 'unknown',\n ])\n .describe('Physical terrain at the observation location.');\n\nexport type TerrainType = z.infer<typeof TerrainTypeSchema>;\n\nexport const AirspaceClassSchema = z\n .enum([\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'G',\n 'restricted',\n 'prohibited',\n 'warning',\n 'moa',\n 'alert',\n 'cfa',\n 'national_security',\n 'tfr',\n 'international',\n 'unknown',\n ])\n .describe('Airspace classification over the location (ICAO classes plus special-use airspace).');\n\nexport type AirspaceClass = z.infer<typeof AirspaceClassSchema>;\n\nexport const LocationSensitivitySchema = z\n .enum(['critical', 'high', 'moderate', 'standard', 'none'])\n .describe('How sensitive the location is (e.g. proximity to critical infrastructure).');\n\nexport type LocationSensitivity = z.infer<typeof LocationSensitivitySchema>;\n\nexport const ProximitySiteSchema = z\n .object({\n siteType: SiteTypeSchema,\n siteName: z.string().optional().describe('Name of the nearby site (e.g. \"Naval Air Station Oceana\").'),\n distanceKm: z.number().describe('Distance from the observation location, in kilometers.'),\n bearing: z.number().optional().describe('Compass bearing from the observation location to the site, in degrees (0–360).'),\n })\n .meta({ id: 'ProximitySite' })\n .describe('A site of interest near the observation and its distance/bearing.');\n\nexport type ProximitySite = z.infer<typeof ProximitySiteSchema>;\n\nexport const LocationDataSchema = z\n .object({\n id: z.string().min(1).describe('Stable unique identifier for this location.'),\n name: z.string().min(1).describe('Human-readable place name (e.g. \"Off the coast of San Diego\").'),\n country: z.string().min(1).describe('Country where the observation occurred.'),\n countryCode: z.string().optional().describe('ISO 3166-1 alpha-2 country code (e.g. \"US\").'),\n region: z.string().optional().describe('State, province, or administrative region.'),\n city: z.string().optional().describe('Nearest city or town.'),\n address: z.string().optional().describe('Street address, when the location is that precise.'),\n longitude: z.number().min(-180).max(180).describe('Longitude in decimal degrees (WGS 84).'),\n latitude: z.number().min(-90).max(90).describe('Latitude in decimal degrees (WGS 84).'),\n coordinatePrecision: CoordinatePrecisionSchema.optional(),\n coordinatePrecisionMeters: z\n .number()\n .optional()\n .describe('Numeric uncertainty radius of the coordinates, in meters.'),\n coordinatesApproximate: z\n .boolean()\n .optional()\n .describe('Whether the coordinates are an approximation rather than a measured fix.'),\n elevationMeters: z.number().optional().describe('Ground elevation at the location, in meters above sea level.'),\n elevationSource: z\n .enum(['gps', 'map', 'estimated', 'unknown'])\n .optional()\n .describe('How the elevation value was obtained.'),\n siteType: SiteTypeSchema,\n secondarySiteTypes: z\n .array(SiteTypeSchema)\n .optional()\n .describe('Additional site categories that also apply to the location.'),\n terrain: TerrainTypeSchema.optional(),\n airspaceClass: AirspaceClassSchema.optional(),\n locationSensitivity: LocationSensitivitySchema.optional(),\n proximitySites: z\n .array(ProximitySiteSchema)\n .optional()\n .describe('Named sites of interest near the observation, with distance and bearing.'),\n nearestMilitaryKm: z\n .number()\n .optional()\n .describe('Distance to the nearest military installation, in kilometers.'),\n nearestNuclearKm: z.number().optional().describe('Distance to the nearest nuclear facility, in kilometers.'),\n nearestAirportKm: z.number().optional().describe('Distance to the nearest airport, in kilometers.'),\n waterDepthMeters: z\n .number()\n .optional()\n .describe('Water depth at the location for maritime observations, in meters.'),\n vesselName: z.string().optional().describe('Name of the vessel the observer was aboard, if any.'),\n vesselType: z.string().optional().describe('Type of vessel (e.g. \"aircraft carrier\", \"fishing trawler\").'),\n aircraftType: z.string().optional().describe('Type of aircraft the observer was aboard, if any.'),\n aircraftCallsign: z.string().optional().describe('Callsign of the observer\\u2019s aircraft.'),\n flightNumber: z.string().optional().describe('Commercial flight number, for airline observations.'),\n observerAltitudeMeters: z\n .number()\n .optional()\n .describe('Altitude of an airborne observer at the time of observation, in meters.'),\n })\n .meta({ id: 'LocationData' })\n .describe('Where an observation occurred — identity, coordinates, site classification, and proximity context.');\n\nexport type LocationData = z.infer<typeof LocationDataSchema>;\n","import { z } from 'zod';\n\nexport const DetectionMethodSchema = z\n .enum([\n 'radar_primary',\n 'radar_secondary',\n 'radar_doppler',\n 'radar_phased_array',\n 'infrared_flir',\n 'infrared_other',\n 'electro_optical',\n 'visual_camera',\n 'satellite_imagery',\n 'sonar_active',\n 'sonar_passive',\n 'electromagnetic',\n 'radiation_detector',\n 'magnetometer',\n 'gravimeter',\n 'acoustic',\n 'seismic',\n 'lidar',\n 'spectroscopic',\n 'radio_frequency',\n 'particle',\n 'gnss',\n 'time_reference',\n 'chemical',\n 'inertial',\n 'physiological',\n 'pressure',\n 'multiple',\n 'other',\n 'unknown',\n ])\n .describe('How a sensor detected the object.');\n\nexport type DetectionMethod = z.infer<typeof DetectionMethodSchema>;\n\nexport const SensorTypeSchema = z\n .enum([\n 'military_radar',\n 'civilian_radar',\n 'airborne_radar',\n 'shipborne_radar',\n 'ground_radar',\n 'flir',\n 'eo_sensor',\n 'satellite',\n 'sonar',\n 'electromagnetic_sensor',\n 'radiation_sensor',\n 'civilian_camera',\n 'security_camera',\n 'dashcam',\n 'phone_camera',\n 'infrasonic_sensor',\n 'ultrasonic_sensor',\n 'adsb_receiver',\n 'rf_spectrum_analyzer',\n 'passive_radar',\n 'particle_detector',\n 'atomic_clock',\n 'gnss_receiver',\n 'fluxgate_magnetometer',\n 'air_quality_sensor',\n 'barometer',\n 'lightning_detector',\n 'imu',\n 'eeg',\n 'gsr',\n 'pulse_oximeter',\n 'pupillometer',\n 'hardware_rng',\n 'other',\n ])\n .describe('Class of sensor that produced a reading.');\n\nexport type SensorType = z.infer<typeof SensorTypeSchema>;\n\nexport const SensorReadingSchema = z\n .object({\n id: z.string().min(1).describe('Stable id, addressable by a claim `evidenceRef` (\"sensor:<id>\").'),\n sensorType: SensorTypeSchema,\n detectionMethod: DetectionMethodSchema,\n sensorRef: z\n .string()\n .optional()\n .describe(\n 'Reference to a published sensor-manifest entry (\"<org-slug>:<sensor-id>\", e.g. \"eldaeon:dionysus-passive-radar\") carrying the instrument\\u2019s full spec, timing, and calibration provenance.',\n ),\n platform: z\n .string()\n .optional()\n .describe('Platform carrying the sensor (e.g. \"USS Princeton\", \"F/A-18F\").'),\n operator: z.string().optional().describe('Person or unit operating the sensor.'),\n timestamp: z.string().optional().describe('When the reading was recorded (ISO timestamp).'),\n duration: z.number().optional().describe('How long the sensor held contact, in seconds.'),\n rawDataAvailable: z.boolean().optional().describe('Whether the raw sensor data still exists and is obtainable.'),\n calibrated: z.boolean().optional().describe('Whether the sensor was calibrated at the time of the reading.'),\n readings: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Sensor-specific measured values, keyed by measurement name.'),\n notes: z.string().optional().describe('Free-text context about the reading.'),\n })\n .meta({ id: 'SensorReading' })\n .describe('A single sensor reading and its provenance.');\n\nexport type SensorReading = z.infer<typeof SensorReadingSchema>;\n\nexport const SensorEvidenceDataSchema = z\n .object({\n sensors: z.array(SensorReadingSchema),\n multiSensorCorrelation: z\n .boolean()\n .optional()\n .describe('Whether independent sensors corroborated the same object.'),\n dataRetentionStatus: z\n .enum(['available', 'archived', 'destroyed', 'classified', 'unknown'])\n .optional()\n .describe('Current status of the underlying sensor data.'),\n anomalies: z\n .array(z.string())\n .optional()\n .describe('Anomalies in the sensor data itself (e.g. \"jamming indications\", \"signal dropout\").'),\n })\n .meta({ id: 'SensorEvidenceData' })\n .describe('Instrument-recorded evidence for an observation (radar, FLIR, EO, etc.).');\n\nexport type SensorEvidenceData = z.infer<typeof SensorEvidenceDataSchema>;\n","import { z } from 'zod';\n\n/** Twilight-aware time-of-day bucket for an observation. */\nexport const TimeOfDaySchema = z\n .enum([\n 'astronomical_dawn',\n 'nautical_dawn',\n 'civil_dawn',\n 'sunrise',\n 'morning',\n 'noon',\n 'afternoon',\n 'sunset',\n 'civil_dusk',\n 'nautical_dusk',\n 'astronomical_dusk',\n 'night',\n 'unknown',\n ])\n .describe('Twilight-aware time-of-day bucket for an observation.');\n\nexport type TimeOfDay = z.infer<typeof TimeOfDaySchema>;\n","import { z } from \"zod\";\nimport {\n ObjectShapeSchema,\n ManeuverTypeSchema,\n} from \"../../observation/domains\";\nimport {\n SiteTypeSchema,\n TerrainTypeSchema,\n AirspaceClassSchema,\n CoordinatePrecisionSchema,\n LocationSensitivitySchema,\n} from \"../../geo/location\";\nimport {\n SensorTypeSchema,\n DetectionMethodSchema,\n SensorEvidenceDataSchema,\n} from \"../../source/sensor/types\";\nimport { TimeOfDaySchema } from \"../../temporal/time-of-day\";\nimport {\n EventTimeValueSchema,\n EventTimePointSchema,\n SourceProvenanceSchema,\n instantString,\n} from \"./primitives\";\nimport {\n FramedPositionSchema,\n EXPERIMENTAL_OBSERVATION_SCHEMA_ID,\n} from \"./observation-schema\";\n\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst sourceRef = z\n .string()\n .regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const OBSERVATION_CONTEXT_SCHEMA_ID =\n \"urn:disclosureos:experimental:observation-context:0.1.0\";\nexport const DocumentSnapshotRefSchema = z.strictObject({\n documentId: id.describe(\"ID inside the supplied document; not a URL.\"),\n schemaId: text.describe(\"Exact document contract identity.\"),\n sha256: z\n .string()\n .regex(/^[a-f0-9]{64}(?![\\s\\S])/)\n .describe(\"SHA-256 of exact supplied document bytes.\"),\n});\nexport const ObservationSnapshotRefSchema = DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(EXPERIMENTAL_OBSERVATION_SCHEMA_ID),\n});\nconst provenance = SourceProvenanceSchema.extend({ sourceRef });\nfunction values<T extends z.ZodType>(schema: T) {\n return z\n .array(\n z.strictObject({\n id: id.describe(\n \"Assertion identity within this entity, independent of array order.\",\n ),\n content: z.union([\n z.strictObject({\n state: z.literal(\"known\"),\n value: schema,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"approximate\"),\n value: schema,\n precision: text,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"unknown\"),\n reason: z.enum([\"not_recorded\", \"not_collected\", \"unavailable\"]),\n }),\n z.strictObject({ state: z.literal(\"redacted\"), reason: text }),\n z.strictObject({\n state: z.literal(\"unmapped\"),\n originalWording: text,\n provenance,\n }),\n ]),\n }),\n )\n .min(1)\n .optional();\n}\nconst strings = z.array(text).min(1);\nconst localTime = z.strictObject({\n clock: z.string().regex(/^([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/),\n timezone: text.optional(),\n utcOffset: z\n .string()\n .regex(/^[+-](0[0-9]|1[0-4]):[0-5][0-9]$/)\n .optional(),\n daylightSaving: z.boolean().optional(),\n});\nconst period = z.union([\n z.strictObject({\n kind: z.literal(\"quarter\"),\n year: z.number().int().min(1).max(9999),\n quarter: z.number().int().min(1).max(4),\n }),\n z.strictObject({\n kind: z.enum([\"decade\", \"century\"]),\n startYear: z.number().int().min(1).max(9999),\n endYear: z.number().int().min(1).max(9999),\n }),\n]);\nconst calendarEndpoint = z.strictObject({\n value: z.union([EventTimePointSchema, period]),\n certainty: z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n display: text.optional(),\n notes: text.optional(),\n});\nconst calendarRange = z.strictObject({\n start: calendarEndpoint,\n end: calendarEndpoint,\n type: z.enum([\n \"span\",\n \"uncertainty\",\n \"active_period\",\n \"investigation_period\",\n \"observation_window\",\n ]),\n inclusiveEnd: z.boolean(),\n display: text.optional(),\n});\nconst relative = z.strictObject({\n anchorTemporalId: id,\n relation: z.enum([\"before\", \"after\", \"during\", \"around\"]),\n offset: z\n .strictObject({\n value: z.number().min(0),\n unit: z.enum([\n \"seconds\",\n \"minutes\",\n \"hours\",\n \"days\",\n \"weeks\",\n \"months\",\n \"years\",\n ]),\n approximate: z.boolean(),\n })\n .optional(),\n wording: text,\n});\n\nexport const ContextEventFields = {\n eventType: values(\n text.describe(\"Sourced event descriptor; not an origin hypothesis.\"),\n ),\n description: values(text),\n temporalId: values(id),\n placeIds: values(z.array(id).min(1)),\n};\nexport const ContextObjectFields = {\n shape: values(ObjectShapeSchema),\n sizeDescription: values(text),\n color: values(text),\n secondaryColors: values(strings),\n luminosity: values(text),\n sound: values(text),\n soundDescription: values(text),\n surfaceDetails: values(text),\n formation: values(text),\n structuralFeatures: values(strings),\n countDescription: values(text),\n speedDescription: values(text),\n altitudeDescription: values(text),\n flightPath: values(text),\n maneuvers: values(z.array(ManeuverTypeSchema).min(1)),\n maneuverDescriptions: values(strings),\n trajectoryDescription: values(text),\n radarContactReported: values(z.boolean()),\n infraredSignatureReported: values(z.boolean()),\n};\nexport const ContextPlaceFields = {\n name: values(text),\n country: values(text),\n countryCode: values(text),\n region: values(text),\n city: values(text),\n address: values(text),\n position: values(FramedPositionSchema),\n coordinatePrecision: values(CoordinatePrecisionSchema),\n coordinatesApproximate: values(z.boolean()),\n elevationSource: values(text),\n siteType: values(SiteTypeSchema),\n secondarySiteTypes: values(z.array(SiteTypeSchema).min(1)),\n terrain: values(z.array(TerrainTypeSchema).min(1)),\n airspaceClass: values(AirspaceClassSchema),\n proximity: values(\n z.strictObject({\n targetPlaceId: id,\n relation: z.enum([\n \"nearby\",\n \"nearest_military\",\n \"nearest_nuclear\",\n \"nearest_airport\",\n ]),\n distanceMeasurementId: id.optional(),\n bearingMeasurementId: id.optional(),\n note: text.optional(),\n }),\n ),\n infrastructureSensitivity: values(LocationSensitivitySchema),\n sensitivity: values(\n z\n .enum([\"public\", \"approximate_only\", \"withheld\"])\n .describe(\n \"Publication instruction only; does not enforce access control.\",\n ),\n ),\n};\nexport const ContextPlatformFields = {\n role: values(z.enum([\"observer\", \"station\", \"aircraft\", \"vessel\"])),\n placeId: values(id),\n name: values(text),\n type: values(text),\n designation: values(text),\n callsign: values(text),\n flightNumber: values(text),\n squadron: values(text),\n mission: values(text),\n operator: values(text),\n radarContact: values(z.boolean()),\n weaponsSystemEngaged: values(z.boolean()),\n interceptAttempted: values(z.boolean()),\n};\nexport const ContextEnvironmentFields = {\n placeId: values(id),\n platformId: values(id),\n temporalId: values(id),\n observedAt: values(EventTimeValueSchema),\n weather: values(text),\n visibility: values(text),\n cloudCover: values(text),\n windDescription: values(text),\n celestialConditions: values(text),\n moonPhase: values(text),\n precipitation: values(text),\n};\nexport const ContextTemporalFields = {\n eventTime: values(EventTimeValueSchema),\n calendarPeriod: values(period),\n relativeDate: values(relative),\n calendarRange: values(calendarRange),\n localTime: values(localTime),\n dateCertainty: values(\n z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n ),\n timeCertainty: values(\n z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"]),\n ),\n timeOfDay: values(TimeOfDaySchema),\n durationDescription: values(text),\n display: values(text),\n notes: values(text),\n rangeInclusivity: values(\n z.enum([\"both\", \"start\", \"end\", \"neither\", \"unknown\"]),\n ),\n};\nexport const ContextCollectionFields = {\n sensorType: values(SensorTypeSchema),\n detectionMethod: values(DetectionMethodSchema),\n productRefs: values(z.array(sourceRef).min(1)),\n acquisitionIds: values(z.array(id).min(1)),\n retentionStatus: values(\n SensorEvidenceDataSchema.shape.dataRetentionStatus.unwrap(),\n ),\n rawDataAvailable: values(z.boolean()),\n anomalies: values(strings),\n correlationDescription: values(text),\n alignmentDescription: values(text),\n notes: values(text),\n};\n// Descriptions belong to the new field envelopes; imported vocabularies stay unchanged.\nfor (const fields of [\n ContextEventFields,\n ContextObjectFields,\n ContextPlaceFields,\n ContextPlatformFields,\n ContextEnvironmentFields,\n ContextTemporalFields,\n ContextCollectionFields,\n]) {\n for (const [key, schema] of Object.entries(fields)) {\n const label = key.replace(/([a-z])([A-Z])/g, \"$1 $2\").toLowerCase();\n (fields as Record<string, z.ZodType>)[key] = schema.describe(\n `Sourced ${label} assertions. Keep alternatives and missingness explicit; no assertion is selected by default.`,\n );\n }\n}\nconst role = z.enum([\n \"size\",\n \"count\",\n \"speed\",\n \"altitude\",\n \"heading\",\n \"ambient_temperature\",\n \"relative_humidity\",\n \"wind_speed\",\n \"moon_illumination\",\n \"duration\",\n \"distance\",\n \"bearing\",\n \"water_depth\",\n \"coordinate_precision\",\n \"time_alignment\",\n]);\nexport const ContextMeasurementLinkSchema = z\n .strictObject({\n id,\n role,\n measurementId: id,\n relatedPlaceId: id.optional(),\n })\n .describe(\n \"Association to an Observation measurement. No copied numeric value.\",\n );\nfunction entity<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n const keys = Object.keys(fields) as [\n keyof F & string,\n ...(keyof F & string)[],\n ];\n return z.strictObject({\n kind: z.literal(kind),\n id,\n fields: z.strictObject(fields),\n measurements: z.array(ContextMeasurementLinkSchema).optional(),\n selections: z\n .array(\n z.strictObject({\n field: z.enum(keys),\n assertionId: id,\n consideredAssertionIds: z.array(id).min(1),\n evaluatedBy: text,\n evaluatedAt: instantString,\n methodRef: z\n .string()\n .regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n methodVersion: text,\n rationale: text,\n }),\n )\n .optional(),\n });\n}\nexport const ContextEntitySchema = z.discriminatedUnion(\"kind\", [\n entity(\"event\", ContextEventFields),\n entity(\"reported_object\", ContextObjectFields),\n entity(\"place\", ContextPlaceFields),\n entity(\"platform\", ContextPlatformFields),\n entity(\"environment\", ContextEnvironmentFields),\n entity(\"temporal\", ContextTemporalFields),\n entity(\"collection\", ContextCollectionFields),\n]);\nexport const ObservationContextSchema = z\n .strictObject({\n kind: z.literal(\"observation_context\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationRef: ObservationSnapshotRefSchema,\n acquisitionRef: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(\n \"urn:disclosureos:experimental:acquisition-context:0.1.0\",\n ),\n }).optional(),\n recordedAt: instantString,\n recordedBy: text,\n entities: z.array(ContextEntitySchema).min(1),\n })\n .describe(\n \"Typed descriptions of an observation. Supplied values remain sourced declarations, not verified facts.\",\n );\nfunction target<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n const keys = Object.keys(fields) as [\n keyof F & string,\n ...(keyof F & string)[],\n ];\n return z.strictObject({\n kind: z.literal(kind),\n id,\n field: z.enum(keys).optional(),\n });\n}\nexport const ContextTargetSchema = z.discriminatedUnion(\"kind\", [\n target(\"event\", ContextEventFields),\n target(\"reported_object\", ContextObjectFields),\n target(\"place\", ContextPlaceFields),\n target(\"platform\", ContextPlatformFields),\n target(\"environment\", ContextEnvironmentFields),\n target(\"temporal\", ContextTemporalFields),\n target(\"collection\", ContextCollectionFields),\n]);\nexport const ContextReferenceSchema = z.strictObject({\n document: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n }),\n target: ContextTargetSchema,\n});\nexport const ContextAssertionReferenceSchema = ContextReferenceSchema.extend({\n assertionId: id,\n});\nexport type ObservationContext = z.infer<typeof ObservationContextSchema>;\nexport type ContextEntity = z.infer<typeof ContextEntitySchema>;\nexport type ContextReference = z.infer<typeof ContextReferenceSchema>;\nexport type DocumentSnapshotRef = z.infer<typeof DocumentSnapshotRefSchema>;\nexport function observationContextJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ObservationContextSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: OBSERVATION_CONTEXT_SCHEMA_ID,\n };\n}\n","import {\n ObservationContextSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\nimport type { ObservationContext, ContextEntity } from \"./context-schema\";\nimport { checkTime, comparePoints } from \"./primitives\";\nimport type { PrimitiveIssue, EventTimeValue } from \"./primitives\";\n\nexport interface ContextIssue {\n code: string;\n stage: \"structural\" | \"semantic\" | \"external\";\n pointer: string;\n message: string;\n}\nexport interface ContextAssertion {\n id: string;\n content: {\n state: string;\n value?: unknown;\n provenance?: {\n sourceRef: string;\n sourceDigest?: { algorithm: \"sha256\"; value: string };\n locator?: { kind: string; startSeconds?: number; endSeconds?: number };\n };\n };\n}\n/** Internal-shaped view of a structurally checked entity; values remain typed in ContextEntity. */\nexport function contextAssertions(\n entity: ContextEntity,\n): { field: string; assertion: ContextAssertion }[] {\n return Object.entries(entity.fields).flatMap(([field, assertions]) =>\n ((assertions ?? []) as ContextAssertion[]).map((assertion) => ({\n field,\n assertion,\n })),\n );\n}\nexport function parseObservationContext(input: unknown) {\n const parsed = ObservationContextSchema.safeParse(input);\n const contract = {\n schemaId: OBSERVATION_CONTEXT_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n } as const;\n const issues: ContextIssue[] = [];\n const error = (code: string, pointer: string, message: string) =>\n issues.push({ code, stage: \"semantic\", pointer, message });\n if (!parsed.success)\n return {\n success: false as const,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n issues: parsed.error.issues.map((i) => ({\n code: \"STRUCT.VALUE\",\n stage: \"structural\" as const,\n pointer: \"/\" + i.path.join(\"/\"),\n message: i.message,\n })),\n uncheckedRefs: [] as string[],\n };\n const data = parsed.data;\n const entities = new Map<string, ContextEntity>();\n const relativeGraph = new Map<string, Set<string>>();\n for (const [i, entity] of data.entities.entries()) {\n const key = `${entity.kind}:${entity.id}`;\n if (entities.has(key))\n error(\"REF.UNIQUE_ID\", `/entities/${i}/id`, \"Duplicate entity identity.\");\n entities.set(key, entity);\n if (entity.kind === \"temporal\") relativeGraph.set(entity.id, new Set());\n }\n function time(value: EventTimeValue, path: string) {\n const found: PrimitiveIssue[] = [];\n checkTime(value, path, found);\n found.forEach((i) => error(i.code, i.pointer, i.message));\n }\n time(\n { kind: \"instant\", value: data.recordedAt, timeScale: \"UTC\" },\n \"/recordedAt\",\n );\n const unchecked = new Set([data.observationRef.sha256]);\n if (data.acquisitionRef) unchecked.add(data.acquisitionRef.sha256);\n for (const [i, entity] of data.entities.entries()) {\n const path = `/entities/${i}`;\n const assertions = contextAssertions(entity);\n const ids = new Set<string>();\n for (const { field, assertion } of assertions) {\n const p = `${path}/fields/${field}`;\n if (ids.has(assertion.id))\n error(\n \"REF.UNIQUE_ID\",\n p,\n \"Assertion IDs must be unique across fields within an entity.\",\n );\n ids.add(assertion.id);\n const { content } = assertion;\n const prov = content.provenance;\n if (prov) {\n unchecked.add(prov.sourceRef);\n if (\n prov.locator?.kind === \"time_range\" &&\n prov.locator.endSeconds! < prov.locator.startSeconds!\n )\n error(\"TIME.INTERVAL\", p, \"Source locator end precedes start.\");\n }\n if (!(\"value\" in content)) continue;\n if (field === \"eventTime\" || field === \"observedAt\")\n time(content.value as EventTimeValue, p);\n const linkKind = (\n {\n placeId: \"place\",\n platformId: \"platform\",\n temporalId: \"temporal\",\n } as Record<string, string>\n )[field];\n if (linkKind && !entities.has(`${linkKind}:${content.value}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Context entity reference does not resolve.\",\n );\n if (field === \"placeIds\")\n for (const id of content.value as string[])\n if (!entities.has(`place:${id}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Place reference does not resolve.\",\n );\n if (\n field === \"proximity\" &&\n !entities.has(\n `place:${(content.value as { targetPlaceId: string }).targetPlaceId}`,\n )\n )\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Proximity target place does not resolve.\",\n );\n if (field === \"relativeDate\") {\n const relative = content.value as {\n anchorTemporalId: string;\n relation: string;\n offset?: unknown;\n };\n if (!entities.has(`temporal:${relative.anchorTemporalId}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Relative date anchor does not resolve.\",\n );\n relativeGraph.get(entity.id)?.add(relative.anchorTemporalId);\n if (relative.relation === \"during\" && relative.offset)\n error(\n \"TIME.RELATIVE_OFFSET\",\n p,\n \"A during relation cannot carry an offset.\",\n );\n }\n if (field === \"calendarPeriod\") {\n const period = content.value as {\n kind: string;\n startYear: number;\n endYear: number;\n };\n if (\n period.kind !== \"quarter\" &&\n period.endYear - period.startYear !==\n (period.kind === \"decade\" ? 9 : 99)\n )\n error(\n \"TIME.CALENDAR_PERIOD\",\n p,\n \"Declared period must cover exactly ten or one hundred years.\",\n );\n }\n if (field === \"calendarRange\") {\n type Endpoint = {\n kind: string;\n value?: string;\n year?: number;\n quarter?: number;\n startYear?: number;\n endYear?: number;\n };\n const range = content.value as {\n start: { value: Endpoint };\n end: { value: Endpoint };\n };\n for (const endpoint of [range.start.value, range.end.value]) {\n if ([\"year\", \"month\", \"date\", \"instant\"].includes(endpoint.kind))\n time(endpoint as EventTimeValue, p);\n if (\n [\"decade\", \"century\"].includes(endpoint.kind) &&\n endpoint.endYear! - endpoint.startYear! !==\n (endpoint.kind === \"decade\" ? 9 : 99)\n )\n error(\n \"TIME.CALENDAR_PERIOD\",\n p,\n \"Endpoint period has invalid width.\",\n );\n }\n const a = range.start.value,\n b = range.end.value;\n if (a.kind === b.kind) {\n const reversed = [\"year\", \"month\", \"date\", \"instant\"].includes(a.kind)\n ? comparePoints(\n a as Exclude<EventTimeValue, { kind: \"interval\" }>,\n b as Exclude<EventTimeValue, { kind: \"interval\" }>,\n ) > 0\n : a.kind === \"quarter\"\n ? a.year! * 4 + a.quarter! > b.year! * 4 + b.quarter!\n : a.startYear! > b.startYear!;\n if (reversed)\n error(\"TIME.INTERVAL\", p, \"Calendar range end precedes start.\");\n }\n }\n if (field === \"localTime\") {\n const clock = content.value as {\n timezone?: string;\n utcOffset?: string;\n };\n if (clock.timezone)\n try {\n new Intl.DateTimeFormat(\"en\", { timeZone: clock.timezone });\n } catch {\n error(\n \"TIME.TIMEZONE\",\n p,\n \"Unknown timezone; no offset has been inferred.\",\n );\n }\n if (\n clock.utcOffset?.slice(1, 3) === \"14\" &&\n !clock.utcOffset.endsWith(\":00\")\n )\n error(\"TIME.OFFSET\", p, \"UTC offset must not exceed fourteen hours.\");\n }\n }\n const selectedFields = new Set<string>();\n for (const selection of entity.selections ?? []) {\n const p = `${path}/selections`;\n if (selectedFields.has(selection.field))\n error(\n \"SELECTION.DUPLICATE_FIELD\",\n p,\n \"One selection is allowed per field.\",\n );\n selectedFields.add(selection.field);\n if (!selection.consideredAssertionIds.includes(selection.assertionId))\n error(\n \"SELECTION.INPUTS\",\n p,\n \"Selected assertion must be a considered input.\",\n );\n if (\n new Set(selection.consideredAssertionIds).size !==\n selection.consideredAssertionIds.length\n )\n error(\"REF.UNIQUE_ID\", p, \"Considered assertions are repeated.\");\n for (const id of selection.consideredAssertionIds)\n if (\n !assertions.some(\n (a) => a.field === selection.field && a.assertion.id === id,\n )\n )\n error(\n \"REF.FIELD_MISMATCH\",\n p,\n \"Considered assertion must exist on the selected field.\",\n );\n const chosen = assertions.find(\n (a) =>\n a.field === selection.field &&\n a.assertion.id === selection.assertionId,\n );\n if (\n !chosen ||\n ![\"known\", \"approximate\", \"unmapped\"].includes(\n chosen.assertion.content.state,\n )\n )\n error(\n \"SELECTION.VALUE\",\n p,\n \"Select a sourced assertion, not an unknown or redacted value.\",\n );\n time(\n { kind: \"instant\", value: selection.evaluatedAt, timeScale: \"UTC\" },\n p,\n );\n if (\n comparePoints(\n { kind: \"instant\", value: selection.evaluatedAt, timeScale: \"UTC\" },\n { kind: \"instant\", value: data.recordedAt, timeScale: \"UTC\" },\n ) > 0\n )\n error(\n \"SELECTION.ORDER\",\n p,\n \"Selection evaluation cannot follow its recording.\",\n );\n unchecked.add(selection.methodRef);\n }\n const measurements = new Set<string>();\n for (const link of entity.measurements ?? []) {\n if (measurements.has(link.id))\n error(\n \"REF.UNIQUE_ID\",\n `${path}/measurements`,\n \"Measurement link IDs repeat.\",\n );\n measurements.add(link.id);\n unchecked.add(`measurement:${link.measurementId}`);\n if (link.relatedPlaceId && !entities.has(`place:${link.relatedPlaceId}`))\n error(\n \"REF.LOCAL_RESOLUTION\",\n `${path}/measurements`,\n \"Related place does not resolve.\",\n );\n }\n }\n // Iterative cycle check avoids recursion proportional to user input size.\n const degree = new Map([...relativeGraph.keys()].map((k) => [k, 0]));\n for (const edges of relativeGraph.values())\n for (const to of edges)\n if (degree.has(to)) degree.set(to, degree.get(to)! + 1);\n const queue = [...degree].filter(([, n]) => n === 0).map(([key]) => key);\n for (let i = 0; i < queue.length; i++)\n for (const to of relativeGraph.get(queue[i]!) ?? [])\n if (degree.has(to)) {\n degree.set(to, degree.get(to)! - 1);\n if (degree.get(to) === 0) queue.push(to);\n }\n if (queue.length !== degree.size)\n error(\n \"TIME.RELATIVE_CYCLE\",\n \"/entities\",\n \"Relative dates must be acyclic.\",\n );\n const validation = {\n contract,\n issues,\n uncheckedRefs: [...unchecked],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n };\n return issues.length\n ? { ...validation, success: false as const }\n : { ...validation, success: true as const, data };\n}\n","import { z } from \"zod\";\nimport {\n ExperimentalObservationSchema,\n ObservationAssertionSchema,\n} from \"./observation-schema\";\nimport { instantString } from \"./primitives\";\nimport {\n ContextReferenceSchema,\n ContextAssertionReferenceSchema,\n DocumentSnapshotRefSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\n\nconst text = z.string().min(1).regex(/\\S/, \"must contain non-whitespace text\");\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst claimRef = z\n .string()\n .regex(/^claim:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst inputRef = z\n .string()\n .regex(\n /^(?:claim|source|product|assertion|measurement):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/,\n );\nexport const ContextClaimSubjectSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"observation\") }),\n z.strictObject({\n kind: z.literal(\"context\"),\n reference: ContextReferenceSchema,\n }),\n z.strictObject({ kind: z.literal(\"measurement\"), measurementId: id }),\n]);\nconst common = {\n id,\n recordedAt: instantString,\n topic: text,\n subject: ContextClaimSubjectSchema,\n supersedes: z.array(claimRef).min(1).optional(),\n};\nexport const ContextSourceStatementSchema = z.strictObject({\n ...common,\n kind: z.literal(\"source_assertion\"),\n text,\n reportedLevel: text.optional(),\n provenance: ObservationAssertionSchema.options[0].shape.provenance,\n});\nconst assessment = {\n ...common,\n kind: z.literal(\"assessment\"),\n inputRefs: z.array(inputRef),\n contextInputRefs: z.array(ContextAssertionReferenceSchema).optional(),\n rationale: text,\n};\nexport const ContextUnassessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"unassessed\"),\n});\nexport const ContextAssessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"assessed\"),\n outcome: z.enum([\"reported\", \"confirmed\", \"absent\", \"inconclusive\"]),\n evaluatedBy: text,\n evaluatedAt: instantString,\n methodRef: z.string().regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n methodVersion: text,\n confidence: z.number().min(0).max(1).optional(),\n});\nexport const ContextHistoricalClaimSchema = z.union([\n ContextSourceStatementSchema,\n ContextUnassessedClaimSchema,\n ContextAssessedClaimSchema,\n]);\nexport const CONTEXT_CLAIM_HISTORY_SCHEMA_ID =\n \"urn:disclosureos:experimental:claim-history:0.2.0\";\nexport const CONTEXT_CLAIM_HISTORY_RULESET_VERSION = \"0.2.0\";\n/** Separate review envelope: the embedded Observation keeps its immutable 0.1.0 contract. */\nexport const ContextClaimHistorySchema = z.strictObject({\n kind: z.literal(\"claim_history\"),\n schemaVersion: z.literal(\"0.2.0\"),\n id,\n contextRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n }),\n ),\n observation: ExperimentalObservationSchema,\n claims: z.array(ContextHistoricalClaimSchema),\n extensions: ExperimentalObservationSchema.shape.extensions,\n});\nexport type ContextClaimSubject = z.infer<typeof ContextClaimSubjectSchema>;\nexport type ContextSourceStatement = z.infer<\n typeof ContextSourceStatementSchema\n>;\nexport type ContextUnassessedClaim = z.infer<\n typeof ContextUnassessedClaimSchema\n>;\nexport type ContextAssessedClaim = z.infer<typeof ContextAssessedClaimSchema>;\nexport type ContextHistoricalClaim = z.infer<\n typeof ContextHistoricalClaimSchema\n>;\nexport type ContextClaimHistory = z.infer<typeof ContextClaimHistorySchema>;\nexport function contextClaimHistoryJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ContextClaimHistorySchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n };\n}\n","import {\n ContextClaimHistorySchema,\n CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n CONTEXT_CLAIM_HISTORY_RULESET_VERSION,\n} from \"./context-claim-history-schema\";\nimport type {\n ContextClaimHistory,\n ContextHistoricalClaim,\n} from \"./context-claim-history-schema\";\nimport { parseExperimentalObservation } from \"./observation\";\nimport type { ObservationChecks, ObservationIssueCode } from \"./observation\";\nimport { checkTime, comparePoints } from \"./primitives\";\nimport type { PrimitiveIssue } from \"./primitives\";\n\nexport type ContextClaimHistoryIssueCode =\n | ObservationIssueCode\n | \"CLAIM.SUPERSESSION_SCOPE\"\n | \"CLAIM.REVISION_ORDER\"\n | \"CLAIM.DEPENDENCY_CYCLE\"\n | \"CLAIM.EVALUATION_ORDER\"\n | \"CLAIM.REVISION_ATTRIBUTION\";\nexport interface ContextClaimHistoryIssue {\n code: ContextClaimHistoryIssueCode;\n stage: \"structural\" | \"semantic\";\n severity: \"error\";\n pointer: string;\n message: string;\n}\nexport interface ContextClaimHistoryValidation {\n checks: ObservationChecks;\n issues: ContextClaimHistoryIssue[];\n uncheckedRefs: string[];\n contract: {\n kind: \"claim_history\";\n schemaId: typeof CONTEXT_CLAIM_HISTORY_SCHEMA_ID;\n rulesetVersion: typeof CONTEXT_CLAIM_HISTORY_RULESET_VERSION;\n };\n}\nexport type ContextClaimHistoryParseResult = ContextClaimHistoryValidation &\n (\n | { success: true; data: ContextClaimHistory; currentClaimRefs: string[] }\n | { success: false }\n );\nconst point = (value: string) => ({\n kind: \"instant\" as const,\n value,\n timeScale: \"UTC\" as const,\n});\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\n\n/** Checks declared claim history only. Current means not superseded, never scientifically verified. */\nexport function parseContextClaimHistory(\n input: unknown,\n): ContextClaimHistoryParseResult {\n const contract: ContextClaimHistoryValidation[\"contract\"] = {\n kind: \"claim_history\",\n schemaId: CONTEXT_CLAIM_HISTORY_SCHEMA_ID,\n rulesetVersion: CONTEXT_CLAIM_HISTORY_RULESET_VERSION,\n };\n const parsed = ContextClaimHistorySchema.safeParse(input);\n if (!parsed.success)\n return {\n success: false,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n uncheckedRefs: [],\n issues: parsed.error.issues.map((issue) => ({\n code: \"STRUCT.VALUE\",\n stage: \"structural\",\n severity: \"error\",\n pointer: pointer(issue.path),\n message: issue.message,\n })),\n };\n const data = parsed.data;\n const observationResult = parseExperimentalObservation(data.observation);\n const issues: ContextClaimHistoryIssue[] = observationResult.issues.map(\n (issue) => ({ ...issue, pointer: `/observation${issue.pointer}` }),\n );\n const problem = (\n code: ContextClaimHistoryIssueCode,\n path: string,\n message: string,\n ) =>\n issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer: path,\n message,\n });\n const claims = new Map<string, ContextHistoricalClaim>();\n const graph = new Map<string, Set<string>>();\n const superseded = new Set<string>();\n const sources = new Map(\n data.observation.sources.map((item) => [`source:${item.id}`, item]),\n );\n const products = new Map(\n data.observation.products.map((item) => [`product:${item.id}`, item]),\n );\n const methods = new Map(\n data.observation.methods.map((item) => [`method:${item.id}`, item]),\n );\n const measurements = new Set(\n data.observation.measurements.map((item) => `measurement:${item.id}`),\n );\n const available = new Set([\n ...sources.keys(),\n ...products.keys(),\n ...measurements,\n ...data.observation.assertions.map((item) => `assertion:${item.id}`),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const ref = `claim:${claim.id}`;\n if (claims.has(ref))\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/id`,\n \"Duplicate claim ID; each revision must have its own ID.\",\n );\n else {\n claims.set(ref, claim);\n graph.set(ref, new Set());\n available.add(ref);\n }\n }\n function instant(value: string, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(point(value), path, local);\n for (const issue of local)\n problem(issue.code, issue.pointer, issue.message);\n }\n function resolve(ref: string, path: string, owner?: string): void {\n if (!available.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n path,\n `Undeclared local reference: ${ref}`,\n );\n else if (owner && claims.has(ref)) graph.get(owner)?.add(ref);\n }\n function refs(values: string[], path: string, owner: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of values.entries()) {\n if (seen.has(ref))\n problem(\"REF.UNIQUE_ID\", `${path}/${i}`, \"Reference is repeated.\");\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n const snapshots = new Set(data.contextRefs.map((r) => JSON.stringify(r)));\n if (snapshots.size !== data.contextRefs.length)\n problem(\n \"REF.UNIQUE_ID\",\n \"/contextRefs\",\n \"Context snapshot references repeat.\",\n );\n for (const [i, claim] of data.claims.entries()) {\n const contextRefs = [\n ...(claim.subject.kind === \"context\" ? [claim.subject.reference] : []),\n ...(claim.kind === \"assessment\" ? (claim.contextInputRefs ?? []) : []),\n ];\n for (const ref of contextRefs)\n if (!snapshots.has(JSON.stringify(ref.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `/claims/${i}`,\n \"Context reference must select a declared snapshot.\",\n );\n if (\n claim.kind === \"assessment\" &&\n new Set((claim.contextInputRefs ?? []).map((r) => JSON.stringify(r)))\n .size !== (claim.contextInputRefs ?? []).length\n )\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/contextInputRefs`,\n \"Context inputs repeat.\",\n );\n }\n for (const [i, claim] of data.claims.entries()) {\n const path = `/claims/${i}`;\n const owner = `claim:${claim.id}`;\n instant(claim.recordedAt, `${path}/recordedAt`);\n if (claim.subject.kind === \"measurement\")\n resolve(\n `measurement:${claim.subject.measurementId}`,\n `${path}/subject/measurementId`,\n );\n if (claim.supersedes) {\n refs(claim.supersedes, `${path}/supersedes`, owner);\n for (const [j, ref] of claim.supersedes.entries()) {\n const previous = claims.get(ref);\n if (!previous) continue;\n superseded.add(ref);\n if (\n previous.kind !== claim.kind ||\n previous.topic !== claim.topic ||\n JSON.stringify(previous.subject) !== JSON.stringify(claim.subject)\n ) {\n problem(\n \"CLAIM.SUPERSESSION_SCOPE\",\n `${path}/supersedes/${j}`,\n \"A revision must retain the claim kind, topic, and subject. Record a different claim separately.\",\n );\n }\n if (\n previous.kind === \"assessment\" &&\n previous.status === \"assessed\" &&\n claim.kind === \"assessment\" &&\n (claim.status !== \"assessed\" ||\n previous.evaluatedBy !== claim.evaluatedBy)\n ) {\n problem(\n \"CLAIM.REVISION_ATTRIBUTION\",\n `${path}/supersedes/${j}`,\n \"An assessed revision must retain its evaluator; other evaluators record independent assessments.\",\n );\n }\n if (\n comparePoints(point(previous.recordedAt), point(claim.recordedAt)) > 0\n ) {\n problem(\n \"CLAIM.REVISION_ORDER\",\n `${path}/recordedAt`,\n \"A revision cannot be recorded before the statement it supersedes.\",\n );\n }\n }\n }\n if (claim.kind === \"source_assertion\") {\n resolve(claim.provenance.sourceRef, `${path}/provenance/sourceRef`);\n const source =\n sources.get(claim.provenance.sourceRef) ??\n products.get(claim.provenance.sourceRef);\n if (\n source?.digest &&\n claim.provenance.sourceDigest &&\n source.digest.value !== claim.provenance.sourceDigest.value\n ) {\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n `${path}/provenance/sourceDigest`,\n \"Digest differs from the inventory declaration; neither is verified against bytes.\",\n );\n }\n const locator = claim.provenance.locator;\n if (\n locator?.kind === \"time_range\" &&\n locator.endSeconds < locator.startSeconds\n )\n problem(\n \"TIME.INTERVAL\",\n `${path}/provenance/locator/endSeconds`,\n \"Locator end precedes its start.\",\n );\n } else {\n refs(claim.inputRefs, `${path}/inputRefs`, owner);\n if (claim.status === \"assessed\") {\n instant(claim.evaluatedAt, `${path}/evaluatedAt`);\n if (\n comparePoints(point(claim.evaluatedAt), point(claim.recordedAt)) > 0\n )\n problem(\n \"CLAIM.EVALUATION_ORDER\",\n `${path}/evaluatedAt`,\n \"Evaluation cannot occur after the assessment was recorded.\",\n );\n const method = methods.get(claim.methodRef);\n if (!method)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `${path}/methodRef`,\n \"Assessment method is not declared in the Observation inventory.\",\n );\n else if (method.version !== claim.methodVersion)\n problem(\n \"METHOD.VERSION_MISMATCH\",\n `${path}/methodVersion`,\n \"Assessment method version differs from its inventory declaration.\",\n );\n }\n }\n }\n // Supersession and claim inputs form one dependency graph. Array order is irrelevant.\n const indegrees = new Map([...graph.keys()].map((ref) => [ref, 0]));\n for (const edges of graph.values())\n for (const ref of edges) indegrees.set(ref, indegrees.get(ref)! + 1);\n const queue = [...indegrees]\n .filter(([, degree]) => degree === 0)\n .map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++)\n for (const ref of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(ref)! - 1;\n indegrees.set(ref, degree);\n if (degree === 0) queue.push(ref);\n }\n if (queue.length !== graph.size)\n problem(\n \"CLAIM.DEPENDENCY_CYCLE\",\n \"/claims\",\n \"Claim inputs and supersession must form an acyclic history.\",\n );\n const validation: ContextClaimHistoryValidation = {\n contract,\n issues,\n uncheckedRefs: [\n ...data.contextRefs.map((r) => r.sha256),\n ...observationResult.uncheckedRefs,\n ...data.claims.flatMap((c) => [\n ...(c.subject.kind === \"context\"\n ? [c.subject.reference.document.sha256]\n : []),\n ...(c.kind === \"assessment\"\n ? (c.contextInputRefs ?? []).map((r) => r.document.sha256)\n : []),\n ]),\n ],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n },\n };\n return issues.length\n ? { ...validation, success: false }\n : {\n ...validation,\n success: true,\n data,\n currentClaimRefs: [...claims.keys()].filter(\n (ref) => !superseded.has(ref),\n ),\n };\n}\n","import { z } from 'zod';\n\nexport const WitnessCategorySchema = z\n .enum([\n 'military_pilot',\n 'military_aircrew',\n 'military_ground',\n 'military_naval',\n 'military_radar_operator',\n 'military_other',\n 'commercial_pilot',\n 'commercial_aircrew',\n 'private_pilot',\n 'air_traffic_controller',\n 'aviation_other',\n 'government_official',\n 'elected_official',\n 'intelligence_officer',\n 'law_enforcement',\n 'scientist',\n 'astronomer',\n 'meteorologist',\n 'engineer',\n 'medical_professional',\n 'maritime',\n 'civilian',\n 'civilian_group',\n 'anonymous',\n 'unknown',\n ])\n .describe('Professional/role category of a witness.');\n\nexport type WitnessCategory = z.infer<typeof WitnessCategorySchema>;\n","import { z } from 'zod';\nimport { ConfidenceLevelSchema } from '../../shared';\n\nexport const CredibilityFactorSchema = z\n .enum([\n 'professional_training',\n 'official_capacity',\n 'sworn_statement',\n 'contemporaneous_record',\n 'corroborating_witnesses',\n 'corroborating_evidence',\n 'consistent_account',\n 'no_apparent_motive',\n 'reputation_risk',\n 'security_clearance',\n ])\n .describe('A factor strengthening witness credibility.');\n\nexport type CredibilityFactor = z.infer<typeof CredibilityFactorSchema>;\n\nexport const CredibilityDetractorSchema = z\n .enum([\n 'anonymous',\n 'inconsistent_account',\n 'delayed_report',\n 'known_fabricator',\n 'financial_motive',\n 'single_witness',\n 'impaired_state',\n 'recovered_memory',\n ])\n .describe('A factor weakening witness credibility.');\n\nexport type CredibilityDetractor = z.infer<typeof CredibilityDetractorSchema>;\n\nexport const WitnessCredibilitySchema = z\n .object({\n // The former `CredibilityRating` was byte-identical to the qualitative\n // `ConfidenceLevel`; it is now the single shared scale (DRY #1).\n rating: ConfidenceLevelSchema.optional(),\n factors: z.array(CredibilityFactorSchema).optional(),\n detractors: z.array(CredibilityDetractorSchema).optional(),\n isProfessionalObserver: z\n .boolean()\n .optional()\n .describe('Whether the witness is a trained observer (pilot, astronomer, military).'),\n hasAviationExperience: z.boolean().optional().describe('Whether the witness has aviation experience.'),\n hasMilitaryExperience: z.boolean().optional().describe('Whether the witness has military experience.'),\n hasScientificBackground: z.boolean().optional().describe('Whether the witness has a scientific background.'),\n hasPriorUAPKnowledge: z\n .boolean()\n .optional()\n .describe('Whether the witness had prior knowledge of or interest in UAP before the observation.'),\n wasSkepticPrior: z\n .boolean()\n .optional()\n .describe('Whether the witness was a skeptic before the observation.'),\n underOathTestimony: z.boolean().optional().describe('Whether the testimony was given under oath.'),\n polygraphAdministered: z.boolean().optional().describe('Whether a polygraph was administered.'),\n polygraphPassed: z.boolean().optional().describe('Whether the witness passed the polygraph.'),\n consistentTestimony: z\n .boolean()\n .optional()\n .describe('Whether the account has remained consistent across retellings.'),\n willingToBeIdentified: z\n .boolean()\n .optional()\n .describe('Whether the witness is willing to be publicly identified.'),\n notes: z.string().optional().describe('Free-text context about the credibility assessment.'),\n })\n .meta({ id: 'WitnessCredibility' })\n .describe('Structured assessment of a witness\\'s credibility (rating, factors, detractors).');\n\nexport type WitnessCredibility = z.infer<typeof WitnessCredibilitySchema>;\n","import { z } from 'zod';\nimport { WitnessCategorySchema } from './category';\nimport { WitnessCredibilitySchema } from './credibility';\n\nexport const SecurityClearanceSchema = z\n .enum(['none', 'confidential', 'secret', 'top_secret', 'sci', 'unknown'])\n .describe('Security clearance level held by a witness.');\n\nexport type SecurityClearance = z.infer<typeof SecurityClearanceSchema>;\n\nexport const WitnessSchema = z\n .object({\n witnessId: z.string().describe('Stable unique identifier for this witness.'),\n category: WitnessCategorySchema,\n anonymous: z.boolean().describe('Whether the witness\\u2019s identity is withheld.'),\n publicName: z.string().optional().describe('Witness\\u2019s name as publicly known, when not anonymous.'),\n pseudonym: z.string().optional().describe('Pseudonym used when the witness is anonymous.'),\n role: z.string().optional().describe('Witness\\u2019s role at the time (e.g. \"F/A-18F pilot\", \"radar operator\").'),\n organization: z.string().optional().describe('Organization the witness belonged to at the time.'),\n experienceYears: z.number().optional().describe('Years of relevant professional experience.'),\n securityClearance: SecurityClearanceSchema.optional(),\n credibility: WitnessCredibilitySchema.optional(),\n statementSummary: z.string().optional().describe('Brief summary of what the witness reported.'),\n interviewAvailable: z.boolean().optional().describe('Whether a recorded interview with the witness exists.'),\n writtenReportAvailable: z.boolean().optional().describe('Whether a written report from the witness exists.'),\n })\n .meta({ id: 'Witness' })\n .describe('A person who reported or corroborated an observation.');\n\nexport type Witness = z.infer<typeof WitnessSchema>;\n","import { z } from 'zod';\n\n/**\n * How confident we are in a date or time value.\n *\n * The single certainty scale for all temporal values in the model —\n * `TemporalData.date`/`time`, `FuzzyDate`, `DateRange` bounds, and testimony\n * dates all use it.\n */\nexport const TemporalCertaintySchema = z\n .enum(['exact', 'approximate', 'estimated', 'unknown'])\n .describe('Confidence in a date or time value — the single certainty scale for all temporal values.');\n\nexport type TemporalCertainty = z.infer<typeof TemporalCertaintySchema>;\n","import { z } from 'zod';\n\nexport const ChainOfCustodySchema = z\n .enum([\n 'verified',\n 'partial',\n 'unverified',\n 'government_held',\n 'private_held',\n 'lost',\n 'destroyed',\n 'classified',\n 'unknown',\n ])\n .describe('Custody status of an evidence item.');\n\nexport type ChainOfCustody = z.infer<typeof ChainOfCustodySchema>;\n\nexport const CustodyActionSchema = z\n .enum([\n 'creation',\n 'collection',\n 'transfer',\n 'storage',\n 'analysis',\n 'release',\n 'classification',\n 'destruction',\n 'loss',\n 'recovery',\n 'other',\n ])\n .describe('An action recorded in a chain-of-custody entry.');\n\nexport type CustodyAction = z.infer<typeof CustodyActionSchema>;\n\nexport const CustodyEntrySchema = z\n .object({\n entryId: z.string().describe('Stable unique identifier for this custody entry.'),\n date: z.string().describe('When the custody event occurred (ISO date).'),\n action: CustodyActionSchema,\n from: z.string().optional().describe('Party that held the evidence before this event.'),\n to: z.string().optional().describe('Party that held the evidence after this event.'),\n location: z.string().optional().describe('Where the custody event took place.'),\n reference: z\n .string()\n .optional()\n .describe('Document or record substantiating the event (e.g. transfer receipt, log entry).'),\n notes: z.string().optional().describe('Free-text context about the event.'),\n })\n .meta({ id: 'CustodyEntry' })\n .describe('A single custody event for an evidence item.');\n\nexport type CustodyEntry = z.infer<typeof CustodyEntrySchema>;\n\nexport const ChainOfCustodyRecordSchema = z\n .object({\n evidenceId: z.string().describe('Identifier of the evidence item this custody history belongs to.'),\n status: ChainOfCustodySchema,\n entries: z.array(CustodyEntrySchema),\n })\n .meta({ id: 'ChainOfCustodyRecord' })\n .describe('The full custody history for a piece of evidence.');\n\nexport type ChainOfCustodyRecord = z.infer<typeof ChainOfCustodyRecordSchema>;\n","import { z } from 'zod';\nimport { TemporalCertaintySchema } from '../../temporal/certainty';\nimport { ChainOfCustodySchema } from '../provenance/custody';\nimport { SourceReferenceSchema } from '../../source/reference';\nimport { WitnessSchema } from './witness';\n\nexport const TestimonyContextSchema = z\n .enum([\n 'sworn_affidavit',\n 'congressional_testimony',\n 'deposition',\n 'official_interview',\n 'written_statement',\n 'recorded_interview',\n 'informal_account',\n 'anonymous_tip',\n 'whistleblower_disclosure',\n ])\n .describe('The setting in which testimony was given.');\n\nexport type TestimonyContext = z.infer<typeof TestimonyContextSchema>;\n\nexport const TestimonyDateSchema = z\n .object({\n date: z.string().describe('When the testimony was given (ISO date).'),\n certainty: TemporalCertaintySchema,\n })\n .meta({ id: 'TestimonyDate' })\n .describe('When testimony was given, with its certainty.');\n\nexport type TestimonyDate = z.infer<typeof TestimonyDateSchema>;\n\nexport const TestimonyStatementSchema = z\n .object({\n statementId: z\n .string()\n .describe('Stable id, addressable by a claim `evidenceRef` (\"testimony:<statementId>\").'),\n witness: WitnessSchema,\n context: TestimonyContextSchema,\n date: TestimonyDateSchema,\n content: z.string().optional().describe('Full text of the statement, when available.'),\n summary: z.string().optional().describe('Brief summary of what the statement asserts.'),\n sourceDocument: SourceReferenceSchema.optional(),\n chainOfCustody: ChainOfCustodySchema.optional(),\n additionalEvidenceIds: z\n .array(z.string())\n .optional()\n .describe('Ids of other evidence items the statement references or supports.'),\n })\n .meta({ id: 'TestimonyStatement' })\n .describe('A single witness statement, its context, and supporting documentation.');\n\nexport type TestimonyStatement = z.infer<typeof TestimonyStatementSchema>;\n","import { z } from \"zod\";\nimport { WitnessCategorySchema } from \"../../extensions/testimony/category\";\nimport { SecurityClearanceSchema } from \"../../extensions/testimony/witness\";\nimport { TestimonyContextSchema } from \"../../extensions/testimony/statement\";\nimport { ChainOfCustodySchema } from \"../../extensions/provenance/custody\";\nimport {\n SourceProvenanceSchema,\n EventTimeValueSchema,\n instantString,\n} from \"./primitives\";\nimport {\n DocumentSnapshotRefSchema,\n ObservationSnapshotRefSchema,\n ContextReferenceSchema,\n ContextTargetSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst sourceRef = z\n .string()\n .regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst provenance = SourceProvenanceSchema.extend({ sourceRef });\nexport const RESEARCH_ENTITIES_SCHEMA_ID =\n \"urn:disclosureos:experimental:research-entities:0.1.0\";\n// Independent C2 envelope; the published context contract remains byte-identical.\nfunction values<T extends z.ZodType>(schema: T) {\n return z\n .array(\n z.strictObject({\n id: id.describe(\n \"Assertion identity within this entity, independent of array order.\"\n ),\n content: z.union([\n z.strictObject({\n state: z.literal(\"known\"),\n value: schema,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"approximate\"),\n value: schema,\n precision: text,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"unknown\"),\n reason: z.enum([\"not_recorded\", \"not_collected\", \"unavailable\"]),\n }),\n z.strictObject({ state: z.literal(\"redacted\"), reason: text }),\n z.strictObject({\n state: z.literal(\"unmapped\"),\n originalWording: text,\n provenance,\n }),\n ]),\n })\n )\n .min(1)\n .optional();\n}\n\nconst timeContextReference = ContextReferenceSchema.extend({\n target: z.union([\n ContextTargetSchema.options[0],\n ContextTargetSchema.options[5],\n ]),\n}).describe(\n \"Temporal or event context for a qualification, not an arbitrary object attribute.\"\n);\nconst relevantTime = z.union([\n z.strictObject({ kind: z.literal(\"calendar\"), value: EventTimeValueSchema }),\n z.strictObject({\n kind: z.literal(\"context\"),\n reference: timeContextReference,\n }),\n z.strictObject({ kind: z.literal(\"unknown\"), reason: text }),\n]);\nconst qualification = <T extends z.ZodType>(value: T) =>\n z.strictObject({ value, relevantTime });\nexport const ResearchWitnessFields = {\n publicIdentity: values(\n z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"public_name\"), display: text }),\n z.strictObject({ kind: z.literal(\"pseudonym\"), display: text }),\n z.strictObject({ kind: z.literal(\"withheld\"), display: text }),\n ])\n ),\n anonymous: values(z.boolean()),\n willingToBeIdentified: values(z.boolean()),\n category: values(qualification(WitnessCategorySchema)),\n role: values(qualification(text)),\n organization: values(qualification(text)),\n experienceYears: values(qualification(z.number().min(0))),\n securityClearance: values(qualification(SecurityClearanceSchema)),\n isProfessionalObserver: values(qualification(z.boolean())),\n hasAviationExperience: values(qualification(z.boolean())),\n hasMilitaryExperience: values(qualification(z.boolean())),\n hasScientificBackground: values(qualification(z.boolean())),\n hasPriorUAPKnowledge: values(qualification(z.boolean())),\n wasSkepticPrior: values(qualification(z.boolean())),\n description: values(text),\n};\nexport const ResearchAccountFields = {\n speakerWitnessIds: values(z.array(id).min(1)),\n recorder: values(text),\n context: values(TestimonyContextSchema),\n recordedTime: values(EventTimeValueSchema),\n dateCertainty: values(\n z.enum([\"exact\", \"approximate\", \"estimated\", \"unknown\"])\n ),\n eventContext: values(ContextReferenceSchema),\n content: values(text),\n summary: values(z.strictObject({ text, summarizedBy: text })),\n sourceDocument: values(sourceRef),\n interviewAvailable: values(z.boolean()),\n writtenReportAvailable: values(z.boolean()),\n underOath: values(z.boolean()),\n custodyStatus: values(ChainOfCustodySchema),\n supportRefs: values(z.array(sourceRef).min(1)),\n};\nexport const ResearchProcedureFields = {\n procedureType: values(z.literal(\"polygraph\")),\n witnessId: values(id),\n accountId: values(id),\n administered: values(z.boolean()),\n passed: values(z.boolean()),\n performedAt: values(EventTimeValueSchema),\n context: values(text),\n sourceDocument: values(sourceRef),\n};\nexport const ResearchWitnessGroupFields = {\n witnessIds: values(z.array(id).min(1)),\n reportedCount: values(z.number().int().min(0)),\n categories: values(z.array(WitnessCategorySchema).min(1)),\n militaryWitnesses: values(z.boolean()),\n aviationWitnesses: values(z.boolean()),\n professionalObservers: values(z.boolean()),\n descriptions: values(z.array(text).min(1)),\n};\nfor (const fields of [\n ResearchWitnessFields,\n ResearchAccountFields,\n ResearchProcedureFields,\n ResearchWitnessGroupFields,\n])\n for (const [key, schema] of Object.entries(fields))\n (fields as Record<string, z.ZodType>)[key] = schema.describe(\n `Sourced ${key\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .toLowerCase()} assertions. Alternatives and unknowns are retained; supplied does not mean verified.`\n );\nfunction entity<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n return z.strictObject({\n kind: z.literal(kind),\n id,\n fields: z.strictObject(fields),\n });\n}\nexport const ResearchEntitySchema = z.discriminatedUnion(\"kind\", [\n entity(\"witness\", ResearchWitnessFields),\n entity(\"account\", ResearchAccountFields),\n entity(\"procedure\", ResearchProcedureFields),\n entity(\"witness_group\", ResearchWitnessGroupFields),\n]);\nexport const ResearchEntitiesSchema = z\n .strictObject({\n kind: z.literal(\"research_entities\"),\n schemaVersion: z.literal(\"0.1.0\"),\n id,\n observationRef: ObservationSnapshotRefSchema,\n contextRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n })\n ),\n recordedAt: instantString,\n recordedBy: text,\n entities: z.array(ResearchEntitySchema).min(1),\n })\n .describe(\n \"Public witness, account, procedure and aggregate declarations. Private identity mappings and contact fields belong outside this exchange document. No consent or credibility is inferred.\"\n );\nfunction target<K extends string, F extends z.ZodRawShape>(kind: K, fields: F) {\n return z.strictObject({\n kind: z.literal(kind),\n id,\n field: z\n .enum(Object.keys(fields) as [keyof F & string, ...(keyof F & string)[]])\n .optional(),\n });\n}\nexport const ResearchEntityTargetSchema = z.discriminatedUnion(\"kind\", [\n target(\"witness\", ResearchWitnessFields),\n target(\"account\", ResearchAccountFields),\n target(\"procedure\", ResearchProcedureFields),\n target(\"witness_group\", ResearchWitnessGroupFields),\n]);\nexport const ResearchEntityReferenceSchema = z.strictObject({\n document: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(RESEARCH_ENTITIES_SCHEMA_ID),\n }),\n target: ResearchEntityTargetSchema,\n});\nexport const ResearchEntityAssertionReferenceSchema =\n ResearchEntityReferenceSchema.extend({ assertionId: id });\nexport type ResearchEntities = z.infer<typeof ResearchEntitiesSchema>;\nexport type ResearchEntity = z.infer<typeof ResearchEntitySchema>;\nexport type ResearchEntityReference = z.infer<\n typeof ResearchEntityReferenceSchema\n>;\nexport function researchEntitiesJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ResearchEntitiesSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: RESEARCH_ENTITIES_SCHEMA_ID,\n };\n}\n","import type { z } from \"zod\";\nimport { type ContextIssue, type ContextAssertion } from \"./context\";\nimport {\n checkTime,\n type EventTimeValue,\n type PrimitiveIssue,\n} from \"./primitives\";\nimport type { ContextReference, DocumentSnapshotRef } from \"./context-schema\";\ntype Entity = { kind: string; id: string; fields: object };\ntype EntityDocument = {\n contextRefs: DocumentSnapshotRef[];\n observationRef: DocumentSnapshotRef;\n recordedAt: string;\n entities: Entity[];\n};\nexport function researchEntityAssertions(\n entity: Entity,\n): { field: string; assertion: ContextAssertion }[] {\n return Object.entries(entity.fields).flatMap(([field, list]) =>\n ((list ?? []) as ContextAssertion[]).map((assertion) => ({\n field,\n assertion,\n })),\n );\n}\n/** Typed links found only in schema-defined fields, never by scanning arbitrary text. */\nexport function researchEntityContextReferences(\n entity: Entity,\n): ContextReference[] {\n return researchEntityAssertions(entity).flatMap(({ field, assertion }) => {\n const value = assertion.content.value as\n | { relevantTime?: { kind: string; reference?: ContextReference } }\n | undefined;\n if (field === \"eventContext\" && value)\n return [value as unknown as ContextReference];\n return value?.relevantTime?.kind === \"context\"\n ? [value.relevantTime.reference!]\n : [];\n });\n}\nexport function parseEntityDocument<\n T extends EntityDocument,\n C extends { schemaId: string; rulesetVersion: string },\n>(input: unknown, schema: z.ZodType<T>, contract: C) {\n const parsed = schema.safeParse(input);\n if (!parsed.success)\n return {\n success: false as const,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n uncheckedRefs: [] as string[],\n issues: parsed.error.issues.map((i) => ({\n code: \"STRUCT.VALUE\",\n stage: \"structural\" as const,\n pointer: \"/\" + i.path.join(\"/\"),\n message: i.message,\n })),\n };\n const data = parsed.data,\n issues: ContextIssue[] = [];\n const problem = (code: string, pointer: string, message: string) =>\n issues.push({ code, stage: \"semantic\", pointer, message });\n const snapshots = new Set(data.contextRefs.map((r) => JSON.stringify(r)));\n if (snapshots.size !== data.contextRefs.length)\n problem(\n \"REF.UNIQUE_ID\",\n \"/contextRefs\",\n \"Context snapshot references repeat.\",\n );\n const unchecked = new Set([\n data.observationRef.sha256,\n ...data.contextRefs.map((r) => r.sha256),\n ]);\n const identities = new Set<string>();\n for (const [i, e] of data.entities.entries()) {\n const key = `${e.kind}:${e.id}`;\n if (identities.has(key))\n problem(\n \"REF.UNIQUE_ID\",\n `/entities/${i}/id`,\n \"Entity identity repeats within its kind.\",\n );\n identities.add(key);\n }\n function time(v: EventTimeValue, p: string) {\n const found: PrimitiveIssue[] = [];\n checkTime(v, p, found);\n found.forEach((i) => problem(i.code, i.pointer, i.message));\n }\n time(\n { kind: \"instant\", value: data.recordedAt, timeScale: \"UTC\" },\n \"/recordedAt\",\n );\n for (const [i, e] of data.entities.entries()) {\n const ep = `/entities/${i}`,\n ids = new Set<string>();\n for (const { field, assertion: a } of researchEntityAssertions(e)) {\n const p = `${ep}/fields/${field}`;\n if (ids.has(a.id))\n problem(\"REF.UNIQUE_ID\", p, \"Assertion IDs repeat within this entity.\");\n ids.add(a.id);\n const prov = a.content.provenance;\n if (prov) {\n unchecked.add(prov.sourceRef);\n if (\n prov.locator?.kind === \"time_range\" &&\n prov.locator.endSeconds! < prov.locator.startSeconds!\n )\n problem(\"TIME.INTERVAL\", p, \"Source locator end precedes its start.\");\n }\n const value = a.content.value;\n if (value === undefined) continue;\n if (field === \"recordedTime\" || field === \"performedAt\")\n time(value as EventTimeValue, p);\n const relevant = (\n value as { relevantTime?: { kind: string; value?: EventTimeValue } }\n ).relevantTime;\n if (relevant?.kind === \"calendar\") time(relevant.value!, p);\n const targetKind =\n field === \"speakerWitnessIds\" ||\n field === \"witnessIds\" ||\n field === \"witnessId\"\n ? \"witness\"\n : field === \"accountId\"\n ? \"account\"\n : undefined;\n if (targetKind) {\n const refs = Array.isArray(value) ? value : [value];\n if (new Set(refs).size !== refs.length)\n problem(\"REF.UNIQUE_ID\", p, \"Typed local links repeat.\");\n for (const id of refs)\n if (!identities.has(`${targetKind}:${id}`))\n problem(\"REF.ENTITY\", p, \"Typed local entity does not exist.\");\n }\n if (field === \"sourceDocument\") unchecked.add(value as string);\n if (field === \"supportRefs\") {\n const refs = value as string[];\n if (new Set(refs).size !== refs.length)\n problem(\"REF.UNIQUE_ID\", p, \"Support references repeat.\");\n refs.forEach((r) => unchecked.add(r));\n }\n }\n for (const ref of researchEntityContextReferences(e))\n if (!snapshots.has(JSON.stringify(ref.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n ep,\n \"Context reference must select a declared snapshot.\",\n );\n }\n const validation = {\n contract,\n issues,\n uncheckedRefs: [...unchecked],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n };\n return issues.length\n ? { ...validation, success: false as const }\n : { ...validation, success: true as const, data };\n}\n","import {\n ResearchEntitiesSchema,\n RESEARCH_ENTITIES_SCHEMA_ID,\n} from \"./research-entities-schema\";\nimport { parseEntityDocument } from \"./entity-document-validation\";\nexport {\n researchEntityAssertions,\n researchEntityContextReferences,\n} from \"./entity-document-validation\";\nexport function parseResearchEntities(input: unknown) {\n return parseEntityDocument(input, ResearchEntitiesSchema, {\n schemaId: RESEARCH_ENTITIES_SCHEMA_ID,\n rulesetVersion: \"0.1.0\",\n } as const);\n}\n","import { z } from \"zod\";\nimport {\n ExperimentalObservationSchema,\n ObservationAssertionSchema,\n} from \"./observation-schema\";\nimport { instantString } from \"./primitives\";\nimport {\n ContextReferenceSchema,\n ContextAssertionReferenceSchema,\n DocumentSnapshotRefSchema,\n OBSERVATION_CONTEXT_SCHEMA_ID,\n} from \"./context-schema\";\nimport {\n ResearchEntityReferenceSchema,\n ResearchEntityAssertionReferenceSchema,\n RESEARCH_ENTITIES_SCHEMA_ID,\n} from \"./research-entities-schema\";\nimport {\n CredibilityFactorSchema,\n CredibilityDetractorSchema,\n} from \"../../extensions/testimony/credibility\";\nimport { ConfidenceLevelSchema } from \"../../shared\";\n\nconst text = z.string().min(1).regex(/\\S/, \"must contain non-whitespace text\");\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst claimRef = z\n .string()\n .regex(/^claim:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst inputRef = z\n .string()\n .regex(\n /^(?:claim|source|product|assertion|measurement):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/\n );\nexport const ResearchClaimSubjectSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"observation\") }),\n z.strictObject({\n kind: z.literal(\"entity\"),\n reference: ResearchEntityReferenceSchema,\n }),\n z.strictObject({\n kind: z.literal(\"context\"),\n reference: ContextReferenceSchema,\n }),\n z.strictObject({ kind: z.literal(\"measurement\"), measurementId: id }),\n]);\nexport const WitnessReviewSchema = z\n .strictObject({\n rating: ConfidenceLevelSchema.optional(),\n factors: z\n .array(CredibilityFactorSchema)\n .optional()\n .describe(\n \"Reviewer-selected factor labels; no built-in weighting or validation of their truth.\"\n ),\n detractors: z\n .array(CredibilityDetractorSchema)\n .optional()\n .describe(\n \"Retained vocabulary for attributable reviews. Anonymity never adds a penalty automatically.\"\n ),\n consistentTestimony: z\n .enum([\"consistent\", \"inconsistent\", \"unknown\"])\n .optional(),\n multipleIndependent: z\n .enum([\"independent\", \"not_independent\", \"unknown\"])\n .optional(),\n notes: text.optional(),\n })\n .describe(\n \"Attributable interpretation, separate from sourced qualifications; requires explicit inputs.\"\n );\nconst common = {\n id,\n recordedAt: instantString,\n topic: text,\n subject: ResearchClaimSubjectSchema,\n supersedes: z.array(claimRef).min(1).optional(),\n};\nexport const ResearchSourceStatementSchema = z.strictObject({\n ...common,\n kind: z.literal(\"source_assertion\"),\n text,\n reportedLevel: text.optional(),\n provenance: ObservationAssertionSchema.options[0].shape.provenance,\n});\nconst assessment = {\n ...common,\n kind: z.literal(\"assessment\"),\n inputRefs: z.array(inputRef),\n contextInputRefs: z.array(ContextAssertionReferenceSchema).optional(),\n entityInputRefs: z.array(ResearchEntityAssertionReferenceSchema).optional(),\n rationale: text,\n};\nexport const ResearchUnassessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"unassessed\"),\n});\nexport const ResearchAssessedClaimSchema = z.strictObject({\n ...assessment,\n status: z.literal(\"assessed\"),\n outcome: z.enum([\"reported\", \"confirmed\", \"absent\", \"inconclusive\"]),\n evaluatedBy: text,\n evaluatedAt: instantString,\n methodRef: z.string().regex(/^method:[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n methodVersion: text,\n confidence: z.number().min(0).max(1).optional(),\n witnessReview: WitnessReviewSchema.optional(),\n});\nexport const ResearchHistoricalClaimSchema = z.union([\n ResearchSourceStatementSchema,\n ResearchUnassessedClaimSchema,\n ResearchAssessedClaimSchema,\n]);\nexport const RESEARCH_CLAIM_HISTORY_SCHEMA_ID =\n \"urn:disclosureos:experimental:claim-history:0.3.0\";\nexport const RESEARCH_CLAIM_HISTORY_RULESET_VERSION = \"0.3.0\";\n/** Separate review envelope: the embedded Observation keeps its immutable 0.1.0 contract. */\nexport const ResearchClaimHistorySchema = z.strictObject({\n kind: z.literal(\"claim_history\"),\n schemaVersion: z.literal(\"0.3.0\"),\n id,\n contextRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(OBSERVATION_CONTEXT_SCHEMA_ID),\n })\n ),\n entityRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(RESEARCH_ENTITIES_SCHEMA_ID),\n })\n ),\n observation: ExperimentalObservationSchema,\n claims: z.array(ResearchHistoricalClaimSchema),\n extensions: ExperimentalObservationSchema.shape.extensions,\n});\nexport type ResearchClaimSubject = z.infer<typeof ResearchClaimSubjectSchema>;\nexport type ResearchSourceStatement = z.infer<\n typeof ResearchSourceStatementSchema\n>;\nexport type ResearchUnassessedClaim = z.infer<\n typeof ResearchUnassessedClaimSchema\n>;\nexport type ResearchAssessedClaim = z.infer<typeof ResearchAssessedClaimSchema>;\nexport type ResearchHistoricalClaim = z.infer<\n typeof ResearchHistoricalClaimSchema\n>;\nexport type ResearchClaimHistory = z.infer<typeof ResearchClaimHistorySchema>;\nexport function researchClaimHistoryJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ResearchClaimHistorySchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: RESEARCH_CLAIM_HISTORY_SCHEMA_ID,\n };\n}\n","import type { z } from \"zod\";\nimport type {\n ResearchClaimHistory,\n ResearchHistoricalClaim,\n} from \"./research-claim-history-schema\";\nimport type {\n ArchivalClaimHistory,\n ArchivalHistoricalClaim,\n} from \"./archival-claim-history-schema\";\nimport type {\n ResearchClaimHistoryIssue,\n ResearchClaimHistoryIssueCode,\n} from \"./research-claim-history\";\nimport { parseExperimentalObservation } from \"./observation\";\nimport { checkTime, comparePoints, type PrimitiveIssue } from \"./primitives\";\nconst point = (value: string) => ({\n kind: \"instant\" as const,\n value,\n timeScale: \"UTC\" as const,\n});\nconst pointer = (path: readonly PropertyKey[]) =>\n path\n .map((p) => `/${String(p).replace(/~/g, \"~0\").replace(/\\//g, \"~1\")}`)\n .join(\"\");\n\n/** Checks declared claim history only. Current means not superseded, never scientifically verified. */\nexport function parseEntityClaimHistory<\n T extends ResearchClaimHistory | ArchivalClaimHistory,\n C extends { kind: \"claim_history\"; schemaId: string; rulesetVersion: string },\n>(input: unknown, schema: z.ZodType<T>, contract: C) {\n const parsed = schema.safeParse(input);\n if (!parsed.success)\n return {\n success: false as const,\n contract,\n checks: {\n structural: \"failed\",\n semantic: \"not_checked\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n uncheckedRefs: [],\n issues: parsed.error.issues.map((issue) => ({\n code: \"STRUCT.VALUE\" as const,\n stage: \"structural\" as const,\n severity: \"error\" as const,\n pointer: pointer(issue.path),\n message: issue.message,\n })),\n };\n const data = parsed.data;\n const observationResult = parseExperimentalObservation(data.observation);\n const issues: ResearchClaimHistoryIssue[] = observationResult.issues.map(\n (issue) => ({ ...issue, pointer: `/observation${issue.pointer}` }),\n );\n const problem = (\n code: ResearchClaimHistoryIssueCode,\n path: string,\n message: string,\n ) =>\n issues.push({\n code,\n stage: \"semantic\",\n severity: \"error\",\n pointer: path,\n message,\n });\n const claims = new Map<\n string,\n ResearchHistoricalClaim | ArchivalHistoricalClaim\n >();\n const graph = new Map<string, Set<string>>();\n const superseded = new Set<string>();\n const sources = new Map(\n data.observation.sources.map((item) => [`source:${item.id}`, item]),\n );\n const products = new Map(\n data.observation.products.map((item) => [`product:${item.id}`, item]),\n );\n const methods = new Map(\n data.observation.methods.map((item) => [`method:${item.id}`, item]),\n );\n const measurements = new Set(\n data.observation.measurements.map((item) => `measurement:${item.id}`),\n );\n const available = new Set([\n ...sources.keys(),\n ...products.keys(),\n ...measurements,\n ...data.observation.assertions.map((item) => `assertion:${item.id}`),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const ref = `claim:${claim.id}`;\n if (claims.has(ref))\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/id`,\n \"Duplicate claim ID; each revision must have its own ID.\",\n );\n else {\n claims.set(ref, claim);\n graph.set(ref, new Set());\n available.add(ref);\n }\n }\n function instant(value: string, path: string): void {\n const local: PrimitiveIssue[] = [];\n checkTime(point(value), path, local);\n for (const issue of local)\n problem(issue.code, issue.pointer, issue.message);\n }\n function resolve(ref: string, path: string, owner?: string): void {\n if (!available.has(ref))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n path,\n `Undeclared local reference: ${ref}`,\n );\n else if (owner && claims.has(ref)) graph.get(owner)?.add(ref);\n }\n function refs(values: string[], path: string, owner: string): void {\n const seen = new Set<string>();\n for (const [i, ref] of values.entries()) {\n if (seen.has(ref))\n problem(\"REF.UNIQUE_ID\", `${path}/${i}`, \"Reference is repeated.\");\n seen.add(ref);\n resolve(ref, `${path}/${i}`, owner);\n }\n }\n const snapshots = new Set(data.contextRefs.map((r) => JSON.stringify(r)));\n if (snapshots.size !== data.contextRefs.length)\n problem(\n \"REF.UNIQUE_ID\",\n \"/contextRefs\",\n \"Context snapshot references repeat.\",\n );\n for (const [i, claim] of data.claims.entries()) {\n const contextRefs = [\n ...(claim.subject.kind === \"context\" ? [claim.subject.reference] : []),\n ...(claim.kind === \"assessment\" ? (claim.contextInputRefs ?? []) : []),\n ];\n for (const ref of contextRefs)\n if (!snapshots.has(JSON.stringify(ref.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `/claims/${i}`,\n \"Context reference must select a declared snapshot.\",\n );\n if (\n claim.kind === \"assessment\" &&\n new Set((claim.contextInputRefs ?? []).map((r) => JSON.stringify(r)))\n .size !== (claim.contextInputRefs ?? []).length\n )\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/contextInputRefs`,\n \"Context inputs repeat.\",\n );\n }\n const entitySnapshots = new Set(\n data.entityRefs.map((r) => JSON.stringify(r)),\n );\n if (entitySnapshots.size !== data.entityRefs.length)\n problem(\"REF.UNIQUE_ID\", \"/entityRefs\", \"Entity snapshots repeat.\");\n for (const [i, claim] of data.claims.entries()) {\n const refs = [\n ...(claim.subject.kind === \"entity\" ? [claim.subject.reference] : []),\n ...(claim.kind === \"assessment\" ? (claim.entityInputRefs ?? []) : []),\n ];\n for (const ref of refs)\n if (!entitySnapshots.has(JSON.stringify(ref.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `/claims/${i}`,\n \"Entity reference must select a declared snapshot.\",\n );\n if (claim.kind === \"assessment\") {\n if (\n new Set((claim.entityInputRefs ?? []).map((r) => JSON.stringify(r)))\n .size !== (claim.entityInputRefs ?? []).length\n )\n problem(\n \"REF.UNIQUE_ID\",\n `/claims/${i}/entityInputRefs`,\n \"Entity inputs repeat.\",\n );\n if (claim.status === \"assessed\" && claim.witnessReview) {\n if (\n claim.subject.kind !== \"entity\" ||\n ![\"witness\", \"account\", \"witness_group\", \"procedure\"].includes(\n claim.subject.reference.target.kind,\n )\n )\n problem(\n \"CLAIM.SUPERSESSION_SCOPE\",\n `/claims/${i}/witnessReview`,\n \"Witness review requires a typed research-entity subject.\",\n );\n if (\n claim.inputRefs.length +\n (claim.entityInputRefs?.length ?? 0) +\n (claim.contextInputRefs?.length ?? 0) +\n (\"editionInputRefs\" in claim\n ? (claim.editionInputRefs?.length ?? 0)\n : 0) ===\n 0\n )\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `/claims/${i}/witnessReview`,\n \"Witness review requires explicit inputs.\",\n );\n }\n }\n }\n for (const [i, claim] of data.claims.entries()) {\n const path = `/claims/${i}`;\n const owner = `claim:${claim.id}`;\n instant(claim.recordedAt, `${path}/recordedAt`);\n if (claim.subject.kind === \"measurement\")\n resolve(\n `measurement:${claim.subject.measurementId}`,\n `${path}/subject/measurementId`,\n );\n if (claim.supersedes) {\n refs(claim.supersedes, `${path}/supersedes`, owner);\n for (const [j, ref] of claim.supersedes.entries()) {\n const previous = claims.get(ref);\n if (!previous) continue;\n superseded.add(ref);\n if (\n previous.kind !== claim.kind ||\n previous.topic !== claim.topic ||\n JSON.stringify(previous.subject) !== JSON.stringify(claim.subject)\n ) {\n problem(\n \"CLAIM.SUPERSESSION_SCOPE\",\n `${path}/supersedes/${j}`,\n \"A revision must retain the claim kind, topic, and subject. Record a different claim separately.\",\n );\n }\n if (\n previous.kind === \"assessment\" &&\n previous.status === \"assessed\" &&\n claim.kind === \"assessment\" &&\n (claim.status !== \"assessed\" ||\n previous.evaluatedBy !== claim.evaluatedBy)\n ) {\n problem(\n \"CLAIM.REVISION_ATTRIBUTION\",\n `${path}/supersedes/${j}`,\n \"An assessed revision must retain its evaluator; other evaluators record independent assessments.\",\n );\n }\n if (\n comparePoints(point(previous.recordedAt), point(claim.recordedAt)) > 0\n ) {\n problem(\n \"CLAIM.REVISION_ORDER\",\n `${path}/recordedAt`,\n \"A revision cannot be recorded before the statement it supersedes.\",\n );\n }\n }\n }\n if (claim.kind === \"source_assertion\") {\n resolve(claim.provenance.sourceRef, `${path}/provenance/sourceRef`);\n const source =\n sources.get(claim.provenance.sourceRef) ??\n products.get(claim.provenance.sourceRef);\n if (\n source?.digest &&\n claim.provenance.sourceDigest &&\n source.digest.value !== claim.provenance.sourceDigest.value\n ) {\n problem(\n \"SOURCE.DIGEST_MISMATCH\",\n `${path}/provenance/sourceDigest`,\n \"Digest differs from the inventory declaration; neither is verified against bytes.\",\n );\n }\n const locator = claim.provenance.locator;\n if (\n locator?.kind === \"time_range\" &&\n locator.endSeconds < locator.startSeconds\n )\n problem(\n \"TIME.INTERVAL\",\n `${path}/provenance/locator/endSeconds`,\n \"Locator end precedes its start.\",\n );\n } else {\n refs(claim.inputRefs, `${path}/inputRefs`, owner);\n if (claim.status === \"assessed\") {\n instant(claim.evaluatedAt, `${path}/evaluatedAt`);\n if (\n comparePoints(point(claim.evaluatedAt), point(claim.recordedAt)) > 0\n )\n problem(\n \"CLAIM.EVALUATION_ORDER\",\n `${path}/evaluatedAt`,\n \"Evaluation cannot occur after the assessment was recorded.\",\n );\n const method = methods.get(claim.methodRef);\n if (!method)\n problem(\n \"REF.LOCAL_RESOLUTION\",\n `${path}/methodRef`,\n \"Assessment method is not declared in the Observation inventory.\",\n );\n else if (method.version !== claim.methodVersion)\n problem(\n \"METHOD.VERSION_MISMATCH\",\n `${path}/methodVersion`,\n \"Assessment method version differs from its inventory declaration.\",\n );\n }\n }\n }\n // Supersession and claim inputs form one dependency graph. Array order is irrelevant.\n const indegrees = new Map([...graph.keys()].map((ref) => [ref, 0]));\n for (const edges of graph.values())\n for (const ref of edges) indegrees.set(ref, indegrees.get(ref)! + 1);\n const queue = [...indegrees]\n .filter(([, degree]) => degree === 0)\n .map(([ref]) => ref);\n for (let i = 0; i < queue.length; i++)\n for (const ref of graph.get(queue[i]!) ?? []) {\n const degree = indegrees.get(ref)! - 1;\n indegrees.set(ref, degree);\n if (degree === 0) queue.push(ref);\n }\n if (queue.length !== graph.size)\n problem(\n \"CLAIM.DEPENDENCY_CYCLE\",\n \"/claims\",\n \"Claim inputs and supersession must form an acyclic history.\",\n );\n const validation = {\n contract,\n issues,\n uncheckedRefs: [\n ...data.contextRefs.map((r) => r.sha256),\n ...data.entityRefs.map((r) => r.sha256),\n ...observationResult.uncheckedRefs,\n ...data.claims.flatMap((c) => [\n ...(c.subject.kind === \"context\"\n ? [c.subject.reference.document.sha256]\n : []),\n ...(c.kind === \"assessment\"\n ? (c.contextInputRefs ?? []).map((r) => r.document.sha256)\n : []),\n ]),\n ],\n checks: {\n structural: \"passed\",\n semantic: issues.length ? \"failed\" : \"passed\",\n profile: \"not_checked\",\n external: \"not_checked\",\n } as const,\n };\n return issues.length\n ? { ...validation, success: false as const }\n : {\n ...validation,\n success: true as const,\n data,\n currentClaimRefs: [...claims.keys()].filter(\n (ref) => !superseded.has(ref),\n ),\n };\n}\n","import {\n ResearchClaimHistorySchema,\n RESEARCH_CLAIM_HISTORY_SCHEMA_ID,\n RESEARCH_CLAIM_HISTORY_RULESET_VERSION,\n} from \"./research-claim-history-schema\";\nimport type {\n ResearchClaimHistory,\n} from \"./research-claim-history-schema\";\nimport type { ObservationChecks, ObservationIssueCode } from \"./observation\";\n\nexport type ResearchClaimHistoryIssueCode =\n | ObservationIssueCode\n | \"CLAIM.SUPERSESSION_SCOPE\"\n | \"CLAIM.REVISION_ORDER\"\n | \"CLAIM.DEPENDENCY_CYCLE\"\n | \"CLAIM.EVALUATION_ORDER\"\n | \"CLAIM.REVISION_ATTRIBUTION\";\nexport interface ResearchClaimHistoryIssue {\n code: ResearchClaimHistoryIssueCode;\n stage: \"structural\" | \"semantic\";\n severity: \"error\";\n pointer: string;\n message: string;\n}\nexport interface ResearchClaimHistoryValidation {\n checks: ObservationChecks;\n issues: ResearchClaimHistoryIssue[];\n uncheckedRefs: string[];\n contract: {\n kind: \"claim_history\";\n schemaId: typeof RESEARCH_CLAIM_HISTORY_SCHEMA_ID;\n rulesetVersion: typeof RESEARCH_CLAIM_HISTORY_RULESET_VERSION;\n };\n}\nexport type ResearchClaimHistoryParseResult = ResearchClaimHistoryValidation &\n (\n | { success: true; data: ResearchClaimHistory; currentClaimRefs: string[] }\n | { success: false }\n );\nimport { parseEntityClaimHistory } from \"./entity-claim-history-validation\";\nexport function parseResearchClaimHistory(\n input: unknown,\n): ResearchClaimHistoryParseResult {\n return parseEntityClaimHistory(input, ResearchClaimHistorySchema, {\n kind: \"claim_history\",\n schemaId: RESEARCH_CLAIM_HISTORY_SCHEMA_ID,\n rulesetVersion: RESEARCH_CLAIM_HISTORY_RULESET_VERSION,\n } as const);\n}\n","import { z } from \"zod\";\nimport { SourceProvenanceSchema } from \"./primitives\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst sourceRef = z\n .string()\n .regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst provenance = SourceProvenanceSchema.extend({ sourceRef });\nexport function values<T extends z.ZodType>(schema: T) {\n return z\n .array(\n z.strictObject({\n id: id.describe(\n \"Assertion identity within this entity, independent of array order.\",\n ),\n content: z.union([\n z.strictObject({\n state: z.literal(\"known\"),\n value: schema,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"approximate\"),\n value: schema,\n precision: text,\n provenance,\n originalWording: text.optional(),\n }),\n z.strictObject({\n state: z.literal(\"unknown\"),\n reason: z.enum([\"not_recorded\", \"not_collected\", \"unavailable\"]),\n }),\n z.strictObject({ state: z.literal(\"redacted\"), reason: text }),\n z.strictObject({\n state: z.literal(\"unmapped\"),\n originalWording: text,\n provenance,\n }),\n ]),\n }),\n )\n .min(1)\n .optional();\n}\n\nexport function entity<K extends string, F extends z.ZodRawShape>(\n kind: K,\n fields: F,\n) {\n return z.strictObject({\n kind: z.literal(kind),\n id,\n fields: z.strictObject(fields),\n });\n}\nexport function target<K extends string, F extends z.ZodRawShape>(\n kind: K,\n fields: F,\n) {\n return z.strictObject({\n kind: z.literal(kind),\n id,\n field: z\n .enum(Object.keys(fields) as [keyof F & string, ...(keyof F & string)[]])\n .optional(),\n });\n}\n","import { z } from 'zod';\n\nexport const DocumentTypeSchema = z\n .enum([\n 'foia_release',\n 'official_report',\n 'congressional_record',\n 'military_memo',\n 'intelligence_assessment',\n 'inspector_general',\n 'presidential_directive',\n 'executive_order',\n 'declassified_cable',\n 'investigation_file',\n 'other',\n ])\n .describe('Kind of government/official document.');\n\nexport type DocumentType = z.infer<typeof DocumentTypeSchema>;\n\nexport const DocumentMetadataSchema = z\n .object({\n documentType: DocumentTypeSchema,\n classificationLevel: z\n .string()\n .optional()\n .describe('Current classification of the document (e.g. \"UNCLASSIFIED\", \"SECRET//NOFORN\").'),\n originatingAgency: z.string().optional().describe('Agency that produced the document.'),\n controlNumbers: z\n .array(z.string())\n .optional()\n .describe('Agency control or tracking numbers stamped on the document.'),\n foiaRequestNumber: z.string().optional().describe('FOIA request number that produced the document.'),\n declassificationDate: z.string().optional().describe('When the document was declassified (ISO date).'),\n originalClassification: z.string().optional().describe('Classification the document carried when created.'),\n pageCount: z.number().optional().describe('Number of pages in the document.'),\n redactionLevel: z\n .enum(['none', 'partial', 'heavy', 'unknown'])\n .optional()\n .describe('How much of the document is redacted.'),\n })\n .meta({ id: 'DocumentMetadata' })\n .describe('Provenance metadata for a source document (classification, agency, redaction).');\n\nexport type DocumentMetadata = z.infer<typeof DocumentMetadataSchema>;\n","import { z } from 'zod';\n\nexport const IdentifierSystemSchema = z\n .enum([\n 'nuforc',\n 'mufon',\n 'geipan',\n 'cufos',\n 'nicap',\n 'bluebook',\n 'nara',\n 'foia',\n 'aaro',\n 'congress',\n 'doi',\n 'arxiv',\n 'orcid',\n 'pubmed',\n 'isbn',\n 'issn',\n 'youtube',\n 'vimeo',\n 'internet_archive',\n 'wayback',\n 'url',\n 'uri',\n 'custom',\n ])\n .describe('External identifier namespace (reporting centers, archives, academic registries, media hosts).');\n\nexport type IdentifierSystem = z.infer<typeof IdentifierSystemSchema>;\n\nexport const ExternalIdentifierSchema = z\n .object({\n system: IdentifierSystemSchema,\n systemName: z\n .string()\n .optional()\n .describe('Display name of the system, required when `system` is \"custom\".'),\n value: z.string().describe('The identifier value within the external system (e.g. a case number).'),\n url: z.string().optional().describe('Direct link to the record in the external system.'),\n verified: z.boolean().optional().describe('Whether the identifier has been confirmed to point at this observation.'),\n verifiedDate: z.string().optional().describe('When the identifier was last verified (ISO date).'),\n accessible: z.boolean().optional().describe('Whether the external record is currently reachable.'),\n accessCheckedDate: z.string().optional().describe('When accessibility was last checked (ISO date).'),\n notes: z.string().optional().describe('Free-text context about the cross-reference.'),\n })\n .meta({ id: 'ExternalIdentifier' })\n .describe('A reference to this observation in an external system or archive.');\n\nexport type ExternalIdentifier = z.infer<typeof ExternalIdentifierSchema>;\n\nexport const CrossReferencesSchema = z\n .object({\n primary: ExternalIdentifierSchema.optional(),\n identifiers: z.array(ExternalIdentifierSchema),\n })\n .meta({ id: 'CrossReferences' })\n .describe('External identifiers cross-referencing this observation, with an optional primary.');\n\nexport type CrossReferences = z.infer<typeof CrossReferencesSchema>;\n","import { z } from \"zod\";\nimport { values, entity, target } from \"./entity-fields\";\nimport {\n ResearchEntitiesSchema,\n ResearchEntitySchema,\n ResearchEntityTargetSchema,\n} from \"./research-entities-schema\";\nimport { DocumentSnapshotRefSchema } from \"./context-schema\";\nimport { EventTimeValueSchema } from \"./primitives\";\nimport { DocumentTypeSchema } from \"../../extensions/document/types\";\nimport {\n CustodyActionSchema,\n ChainOfCustodySchema,\n} from \"../../extensions/provenance/custody\";\nimport { IdentifierSystemSchema } from \"../../extensions/identifiers/external\";\nimport { SourceTypeSchema } from \"../../source/types\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nconst refs = z.array(id).min(1);\nconst url = z.url();\nexport const ArtifactSnapshotRefSchema = z\n .strictObject({\n sourceRef: z\n .string()\n .regex(/^(source|product):[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/),\n digest: z.strictObject({\n algorithm: z.literal(\"sha256\"),\n value: z.string().regex(/^[a-f0-9]{64}(?![\\s\\S])/),\n }),\n })\n .describe(\n \"One exact artifact in the scoped observation inventory. A URL, title or legacy hash cannot substitute for this identity.\",\n );\nexport const SourceEditionFields = {\n title: values(text),\n type: values(SourceTypeSchema),\n author: values(text),\n organization: values(text),\n issuedAt: values(EventTimeValueSchema),\n archiveLocation: values(text),\n primaryDisplay: values(z.boolean()),\n originalUrl: values(url),\n archiveUrl: values(url),\n reference: values(text),\n isPrimarySource: values(\n z.strictObject({ value: z.boolean(), context: text }),\n ),\n documentType: values(DocumentTypeSchema),\n originatingAgency: values(text),\n controlNumbers: values(z.array(text).min(1)),\n foiaRequestNumber: values(text),\n originalClassification: values(text),\n classificationLevel: values(text),\n pageCount: values(z.number().int().min(1)),\n redactionLevel: values(z.enum([\"none\", \"partial\", \"heavy\", \"unknown\"])),\n redactionDescription: values(text),\n redactionPercent: values(z.number().min(0).max(100)),\n notes: values(text),\n};\nexport const DocumentEventFields = {\n eventType: values(\n z.enum([\"creation\", \"release\", \"classification\", \"declassification\"]),\n ),\n occurredAt: values(EventTimeValueSchema),\n authority: values(text),\n reference: values(text),\n marking: values(text),\n notes: values(text),\n};\nconst declaredHash = z.discriminatedUnion(\"algorithm\", [\n z.strictObject({\n algorithm: z.literal(\"sha256\"),\n value: z.string().regex(/^[a-fA-F0-9]{64}(?![\\s\\S])/),\n }),\n z.strictObject({\n algorithm: z.literal(\"sha512\"),\n value: z.string().regex(/^[a-fA-F0-9]{128}(?![\\s\\S])/),\n }),\n z.strictObject({\n algorithm: z.literal(\"sha1\"),\n value: z.string().regex(/^[a-fA-F0-9]{40}(?![\\s\\S])/),\n }),\n z.strictObject({\n algorithm: z.literal(\"md5\"),\n value: z.string().regex(/^[a-fA-F0-9]{32}(?![\\s\\S])/),\n }),\n]);\nexport const DigitalArtifactFields = {\n declaredHashes: values(\n z\n .array(\n z.strictObject({\n hash: declaredHash,\n appliesTo: z.union([\n z.strictObject({\n kind: z.literal(\"artifact\"),\n reference: ArtifactSnapshotRefSchema,\n }),\n z.strictObject({\n kind: z.literal(\"unavailable_original\"),\n description: text,\n }),\n ]),\n }),\n )\n .min(1),\n ),\n device: values(text),\n manufacturer: values(text),\n model: values(text),\n software: values(text),\n originalFilename: values(text),\n originalCreationDate: values(EventTimeValueSchema),\n gpsCoordinates: values(\n z.strictObject({\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n altitude: z\n .strictObject({\n value: z.number(),\n unit: z.union([text, z.null()]),\n datum: text.optional(),\n })\n .optional(),\n }),\n ),\n metadataPreserved: values(z.boolean()),\n metadataStripped: values(z.boolean()),\n strippedReason: values(text),\n custodyStatus: values(ChainOfCustodySchema),\n provenanceChainDescription: values(z.array(text).min(1)),\n derivedFromArtifactIds: values(refs),\n lastUpdated: values(EventTimeValueSchema),\n notes: values(text),\n};\nexport const DigitalCustodyFields = {\n action: values(CustodyActionSchema),\n occurredAt: values(EventTimeValueSchema),\n from: values(text),\n to: values(text),\n location: values(text),\n reference: values(text),\n notes: values(text),\n};\nexport const ExternalIdentifierFields = {\n value: values(\n z.strictObject({\n system: IdentifierSystemSchema,\n systemName: text.optional(),\n value: text,\n url: url.optional(),\n notes: text.optional(),\n }),\n ),\n primaryDisplay: values(z.boolean()),\n notes: values(text),\n};\nexport const IdentifierCheckFields = {\n checkedAt: values(EventTimeValueSchema),\n agent: values(text),\n method: values(text),\n methodVersion: values(text),\n outcome: values(\n z.discriminatedUnion(\"kind\", [\n z.strictObject({\n kind: z.literal(\"access\"),\n result: z.enum([\"accessible\", \"inaccessible\", \"unknown\"]),\n }),\n z.strictObject({\n kind: z.literal(\"identity\"),\n result: z.enum([\"matches\", \"does_not_match\", \"unknown\"]),\n }),\n ]),\n ),\n notes: values(text),\n};\nfor (const fields of [\n SourceEditionFields,\n DocumentEventFields,\n DigitalArtifactFields,\n DigitalCustodyFields,\n ExternalIdentifierFields,\n IdentifierCheckFields,\n])\n for (const [key, schema] of Object.entries(fields))\n (fields as Record<string, z.ZodType>)[key] = schema.describe(\n `Sourced ${key.replace(/([a-z])([A-Z])/g, \"$1 $2\").toLowerCase()} assertions. Alternatives and missingness are retained; declarations are not independent verification.`,\n );\nconst edition = entity(\"source_edition\", SourceEditionFields).extend({\n artifact: ArtifactSnapshotRefSchema,\n});\nconst artifact = entity(\"digital_artifact\", DigitalArtifactFields).extend({\n artifact: ArtifactSnapshotRefSchema,\n});\nconst documentEvent = entity(\"document_event\", DocumentEventFields).extend({\n editionId: id,\n});\nconst custody = entity(\"digital_custody_action\", DigitalCustodyFields).extend({\n artifactId: id,\n predecessor: z\n .discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"action\"), id }),\n z.strictObject({ kind: z.literal(\"start\") }),\n z.strictObject({ kind: z.literal(\"unknown\"), reason: text }),\n ])\n .describe(\n \"Declared preceding action on the same artifact, a declared beginning, or an explicit gap. Array order carries no chronology.\",\n ),\n});\nconst identifier = entity(\n \"external_identifier\",\n ExternalIdentifierFields,\n).extend({\n subject: z\n .discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"observation\") }),\n z.strictObject({ kind: z.literal(\"source_edition\"), editionId: id }),\n ])\n .describe(\n \"The scoped observation or one exact source edition. A catalog identifier is not automatically an event identifier.\",\n ),\n});\nconst check = entity(\"identifier_check\", IdentifierCheckFields).extend({\n identifierId: id,\n identifierAssertionId: id,\n});\nexport const ArchivalEntitySchema = z.discriminatedUnion(\"kind\", [\n ...ResearchEntitySchema.options,\n edition,\n documentEvent,\n artifact,\n custody,\n identifier,\n check,\n]);\nexport const ARCHIVAL_ENTITIES_SCHEMA_ID =\n \"urn:disclosureos:experimental:research-entities:0.2.0\";\nexport const ArchivalEntitiesSchema = ResearchEntitiesSchema.extend({\n schemaVersion: z.literal(\"0.2.0\"),\n entities: z.array(ArchivalEntitySchema).min(1),\n}).describe(\n \"Public research declarations including exact source editions and digital artifact custody. No source authentication, public-release permission or complete custody is inferred.\",\n);\nexport const ArchivalEntityTargetSchema = z.discriminatedUnion(\"kind\", [\n ...ResearchEntityTargetSchema.options,\n target(\"source_edition\", SourceEditionFields),\n target(\"document_event\", DocumentEventFields),\n target(\"digital_artifact\", DigitalArtifactFields),\n target(\"digital_custody_action\", DigitalCustodyFields),\n target(\"external_identifier\", ExternalIdentifierFields),\n target(\"identifier_check\", IdentifierCheckFields),\n]);\nexport const ArchivalEntityReferenceSchema = z.strictObject({\n document: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(ARCHIVAL_ENTITIES_SCHEMA_ID),\n }),\n target: ArchivalEntityTargetSchema,\n});\nexport const ArchivalEntityAssertionReferenceSchema =\n ArchivalEntityReferenceSchema.extend({ assertionId: id });\nexport type ArchivalEntities = z.infer<typeof ArchivalEntitiesSchema>;\nexport type ArchivalEntity = z.infer<typeof ArchivalEntitySchema>;\nexport type ArchivalEntityReference = z.infer<\n typeof ArchivalEntityReferenceSchema\n>;\nexport type ArtifactSnapshotRef = z.infer<typeof ArtifactSnapshotRefSchema>;\nexport function archivalEntitiesJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ArchivalEntitiesSchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: ARCHIVAL_ENTITIES_SCHEMA_ID,\n };\n}\n","import {\n ArchivalEntitiesSchema,\n ARCHIVAL_ENTITIES_SCHEMA_ID,\n type ArchivalEntity,\n type ArtifactSnapshotRef,\n} from \"./archival-entities-schema\";\nimport {\n parseEntityDocument,\n researchEntityAssertions,\n} from \"./entity-document-validation\";\nimport {\n checkTime,\n comparePoints,\n type EventTimeValue,\n type PrimitiveIssue,\n} from \"./primitives\";\nimport type { ContextIssue } from \"./context\";\nexport function archivalArtifactReferences(\n entity: ArchivalEntity,\n): ArtifactSnapshotRef[] {\n const direct = \"artifact\" in entity ? [entity.artifact] : [];\n if (entity.kind !== \"digital_artifact\") return direct;\n return [\n ...direct,\n ...(entity.fields.declaredHashes ?? []).flatMap((a) =>\n \"value\" in a.content\n ? a.content.value.flatMap((d) =>\n d.appliesTo.kind === \"artifact\" ? [d.appliesTo.reference] : [],\n )\n : [],\n ),\n ];\n}\nexport function parseArchivalEntities(input: unknown) {\n const result = parseEntityDocument(input, ArchivalEntitiesSchema, {\n schemaId: ARCHIVAL_ENTITIES_SCHEMA_ID,\n rulesetVersion: \"0.2.0\",\n } as const);\n if (!result.success) return result;\n const data = result.data,\n issues: ContextIssue[] = [];\n const problem = (code: string, pointer: string, message: string) =>\n issues.push({ code, stage: \"semantic\", pointer, message });\n const index = new Map(data.entities.map((e) => [`${e.kind}:${e.id}`, e]));\n const unchecked = new Set(result.uncheckedRefs);\n const derivation = new Map<string, string[]>(),\n custody = new Map<string, string[]>();\n const known = (entity: ArchivalEntity, field: string): unknown => {\n const a = researchEntityAssertions(entity).filter((a) => a.field === field);\n return a.length === 1 && a[0]!.assertion.content.state === \"known\"\n ? a[0]!.assertion.content.value\n : undefined;\n };\n for (const [i, e] of data.entities.entries()) {\n const p = `/entities/${i}`;\n const link = (kind: string, id: string, field: string) => {\n const target = index.get(`${kind}:${id}`);\n if (!target)\n problem(\n \"REF.ENTITY\",\n `${p}/${field}`,\n \"Typed local archival entity does not exist.\",\n );\n return target;\n };\n for (const ref of archivalArtifactReferences(e))\n unchecked.add(ref.sourceRef);\n if (e.kind === \"document_event\")\n link(\"source_edition\", e.editionId, \"editionId\");\n if (e.kind === \"external_identifier\" && e.subject.kind === \"source_edition\")\n link(\"source_edition\", e.subject.editionId, \"subject/editionId\");\n if (e.kind === \"identifier_check\") {\n const identifier = link(\n \"external_identifier\",\n e.identifierId,\n \"identifierId\",\n );\n if (\n identifier?.kind === \"external_identifier\" &&\n !identifier.fields.value?.some((a) => a.id === e.identifierAssertionId)\n )\n problem(\n \"REF.ASSERTION\",\n `${p}/identifierAssertionId`,\n \"Identifier check must name an existing value assertion in the selected identifier revision.\",\n );\n }\n for (const { field, assertion } of researchEntityAssertions(e)) {\n const value = assertion.content.value;\n if (value === undefined) continue;\n if (\n [\n \"issuedAt\",\n \"occurredAt\",\n \"originalCreationDate\",\n \"lastUpdated\",\n \"checkedAt\",\n ].includes(field)\n ) {\n const found: PrimitiveIssue[] = [];\n checkTime(value as EventTimeValue, `${p}/fields/${field}`, found);\n found.forEach((v) => problem(v.code, v.pointer, v.message));\n }\n if (e.kind === \"external_identifier\" && field === \"value\") {\n const v = value as { system: string; systemName?: string };\n if (v.system === \"custom\" && !v.systemName)\n problem(\n \"ARCHIVE.IDENTIFIER_SYSTEM\",\n `${p}/fields/value`,\n \"A custom identifier system needs a declared system name.\",\n );\n }\n }\n if (e.kind === \"digital_artifact\") {\n const parents = (e.fields.derivedFromArtifactIds ?? []).flatMap((a) =>\n \"value\" in a.content ? a.content.value : [],\n );\n for (const a of e.fields.derivedFromArtifactIds ?? [])\n if (\n \"value\" in a.content &&\n new Set(a.content.value).size !== a.content.value.length\n )\n problem(\n \"REF.UNIQUE_ID\",\n `${p}/fields/derivedFromArtifactIds`,\n \"Parent artifact links repeat within an assertion.\",\n );\n parents.forEach((id) =>\n link(\"digital_artifact\", id, \"fields/derivedFromArtifactIds\"),\n );\n derivation.set(e.id, [...new Set(parents)]);\n }\n if (e.kind === \"digital_custody_action\") {\n link(\"digital_artifact\", e.artifactId, \"artifactId\");\n custody.set(\n e.id,\n e.predecessor.kind === \"action\" ? [e.predecessor.id] : [],\n );\n if (e.predecessor.kind === \"action\") {\n const previous = link(\n \"digital_custody_action\",\n e.predecessor.id,\n \"predecessor\",\n );\n if (previous?.kind !== \"digital_custody_action\") continue;\n if (previous.artifactId !== e.artifactId)\n problem(\n \"ARCHIVE.CUSTODY_SCOPE\",\n `${p}/predecessor`,\n \"A custody predecessor must concern the same exact artifact, not a different edition or derived file.\",\n );\n const from = known(e, \"from\"),\n to = known(previous, \"to\");\n if (typeof from === \"string\" && typeof to === \"string\" && from !== to)\n problem(\n \"ARCHIVE.CUSTODY_HANDOFF\",\n `${p}/fields/from`,\n \"Explicit predecessor recipient and next sender differ. Missing or conflicting parties are not repaired automatically.\",\n );\n const now = known(e, \"occurredAt\") as EventTimeValue | undefined;\n const before = known(previous, \"occurredAt\") as\n | EventTimeValue\n | undefined;\n // Compare only comparable complete declarations. Calendar precision is never normalized into instants.\n if (\n now &&\n before &&\n now.kind !== \"interval\" &&\n before.kind === now.kind\n ) {\n if (comparePoints(before, now) > 0)\n problem(\n \"ARCHIVE.CUSTODY_ORDER\",\n `${p}/fields/occurredAt`,\n \"Declared custody action precedes its explicit predecessor.\",\n );\n }\n }\n }\n }\n function acyclic(graph: Map<string, string[]>, code: string) {\n const indegree = new Map([...graph.keys()].map((id) => [id, 0]));\n for (const edges of graph.values())\n for (const id of edges)\n if (indegree.has(id)) indegree.set(id, indegree.get(id)! + 1);\n const queue = [...indegree].filter(([, n]) => n === 0).map(([id]) => id);\n for (let i = 0; i < queue.length; i++)\n for (const id of graph.get(queue[i]!) ?? [])\n if (indegree.has(id)) {\n const count = indegree.get(id)! - 1;\n indegree.set(id, count);\n if (count === 0) queue.push(id);\n }\n if (queue.length !== graph.size)\n problem(\n code,\n \"/entities\",\n \"Declared archival dependency links must be acyclic.\",\n );\n }\n acyclic(derivation, \"ARCHIVE.DERIVATION_CYCLE\");\n acyclic(custody, \"ARCHIVE.CUSTODY_CYCLE\");\n const validation = {\n contract: result.contract,\n issues,\n uncheckedRefs: [...unchecked],\n checks: {\n ...result.checks,\n semantic: issues.length ? (\"failed\" as const) : (\"passed\" as const),\n },\n };\n return issues.length\n ? { ...validation, success: false as const }\n : { ...validation, success: true as const, data };\n}\n","import { z } from 'zod';\n\nexport const HashAlgorithmSchema = z\n .enum(['sha256', 'sha512', 'sha1', 'md5'])\n .describe('Cryptographic hash algorithm used to fingerprint a file.');\n\nexport type HashAlgorithm = z.infer<typeof HashAlgorithmSchema>;\n\nexport const FileHashSchema = z\n .object({\n algorithm: HashAlgorithmSchema,\n value: z.string().describe('Hex-encoded hash digest of the file contents.'),\n })\n .meta({ id: 'FileHash' })\n .describe('A content hash of a file.');\n\nexport type FileHash = z.infer<typeof FileHashSchema>;\n\nexport const VerificationMethodSchema = z\n .enum([\n 'metadata_analysis',\n 'forensic_analysis',\n 'hash_verification',\n 'chain_of_custody',\n 'source_confirmation',\n 'expert_review',\n 'ai_analysis',\n 'other',\n ])\n .describe('Method used to verify media authenticity.');\n\nexport type VerificationMethod = z.infer<typeof VerificationMethodSchema>;\n\nexport const VerificationResultSchema = z\n .enum([\n 'authentic',\n 'likely_authentic',\n 'inconclusive',\n 'likely_manipulated',\n 'manipulated',\n 'ai_generated',\n 'deepfake',\n 'composite',\n 'unknown',\n ])\n .describe('Outcome of an authenticity verification.');\n\nexport type VerificationResult = z.infer<typeof VerificationResultSchema>;\n\nexport const ThirdPartyVerificationSchema = z\n .object({\n verifier: z.string().describe('Name of the person who performed the verification.'),\n organization: z.string().optional().describe('Organization the verifier represents.'),\n credentials: z\n .string()\n .optional()\n .describe('Verifier\\u2019s relevant qualifications (e.g. \"certified forensic video analyst\").'),\n date: z.string().describe('When the verification was performed (ISO date).'),\n method: VerificationMethodSchema,\n methodDescription: z.string().optional().describe('Fuller description of how the verification was performed.'),\n result: VerificationResultSchema,\n confidence: z\n .enum(['high', 'medium', 'low'])\n .optional()\n .describe('Verifier\\u2019s confidence in their own result.'),\n findings: z.string().optional().describe('Summary of what the verification found.'),\n reportUrl: z.string().optional().describe('Link to the full verification report.'),\n })\n .meta({ id: 'ThirdPartyVerification' })\n .describe('An independent authenticity assessment of media or a document.');\n\nexport type ThirdPartyVerification = z.infer<typeof ThirdPartyVerificationSchema>;\n\nexport const CaptureMetadataSchema = z\n .object({\n device: z.string().optional().describe('Capture device as recorded in metadata (e.g. \"iPhone 14 Pro\").'),\n manufacturer: z.string().optional().describe('Device manufacturer from metadata.'),\n model: z.string().optional().describe('Device model from metadata.'),\n software: z.string().optional().describe('Software that produced or processed the file.'),\n originalFilename: z.string().optional().describe('Filename as originally captured, before any renaming.'),\n originalCreationDate: z.string().optional().describe('Creation timestamp embedded in the file metadata.'),\n gpsCoordinates: z\n .object({\n latitude: z.number(),\n longitude: z.number(),\n altitude: z.number().optional(),\n })\n .optional()\n .describe('GPS position embedded in the file metadata.'),\n metadataPreserved: z.boolean().optional().describe('Whether the original metadata survives intact.'),\n metadataStripped: z.boolean().optional().describe('Whether metadata was removed at some point.'),\n strippedReason: z\n .string()\n .optional()\n .describe('Why metadata was stripped (e.g. \"platform re-encoding\", \"privacy redaction\").'),\n })\n .meta({ id: 'CaptureMetadata' })\n .describe('Capture/EXIF-style metadata extracted from a media file.');\n\nexport type CaptureMetadata = z.infer<typeof CaptureMetadataSchema>;\n\nexport const DigitalProvenanceSchema = z\n .object({\n hash: FileHashSchema.optional(),\n additionalHashes: z.array(FileHashSchema).optional(),\n captureMetadata: CaptureMetadataSchema.optional(),\n verifications: z.array(ThirdPartyVerificationSchema).optional(),\n provenanceChain: z\n .array(z.string())\n .optional()\n .describe('Ordered hops the file took from capture to here (e.g. \"witness phone → NYT → public release\").'),\n manipulationDetected: z.boolean().optional().describe('Whether any analysis found evidence of manipulation.'),\n manipulationDescription: z.string().optional().describe('What manipulation was found, if any.'),\n authenticityAssessment: VerificationResultSchema.optional(),\n authenticityConfidence: z\n .enum(['high', 'medium', 'low', 'unassessed'])\n .optional()\n .describe('Overall confidence in the authenticity assessment.'),\n lastUpdated: z.string().optional().describe('When this provenance record was last updated (ISO timestamp).'),\n notes: z.string().optional().describe('Free-text context about the provenance trail.'),\n })\n .meta({ id: 'DigitalProvenance' })\n .describe('Digital authenticity trail for media: hashes, capture metadata, and verifications.');\n\nexport type DigitalProvenance = z.infer<typeof DigitalProvenanceSchema>;\n","import { z } from \"zod\";\nimport {\n ResearchClaimHistorySchema,\n ResearchClaimSubjectSchema,\n ResearchSourceStatementSchema,\n ResearchUnassessedClaimSchema,\n ResearchAssessedClaimSchema,\n} from \"./research-claim-history-schema\";\nimport {\n ArchivalEntityReferenceSchema,\n ArchivalEntityAssertionReferenceSchema,\n ArtifactSnapshotRefSchema,\n ARCHIVAL_ENTITIES_SCHEMA_ID,\n} from \"./archival-entities-schema\";\nimport { DocumentSnapshotRefSchema } from \"./context-schema\";\nimport { SourceProvenanceSchema, EventTimeValueSchema } from \"./primitives\";\nimport {\n VerificationMethodSchema,\n VerificationResultSchema,\n} from \"../../extensions/provenance/digital\";\nimport { SourceCredibilitySchema } from \"../../source/credibility\";\nconst text = z.string().min(1).regex(/\\S/);\nconst id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*(?![\\s\\S])/);\nexport const EditionCitationSchema = z\n .strictObject({\n document: DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(ARCHIVAL_ENTITIES_SCHEMA_ID),\n }),\n editionId: id,\n artifact: ArtifactSnapshotRefSchema,\n locator: SourceProvenanceSchema.shape.locator.unwrap(),\n })\n .describe(\n \"A citation bound to an exact edition declaration and artifact digest. Similar titles do not permit edition substitution.\",\n );\nexport const ArtifactReviewSchema = z\n .strictObject({\n verifier: text.optional(),\n organization: text.optional(),\n credentials: text.optional(),\n reviewedAt: EventTimeValueSchema.optional(),\n verificationMethod: VerificationMethodSchema.optional(),\n methodDescription: text.optional(),\n result: VerificationResultSchema.optional(),\n confidence: z.enum([\"high\", \"medium\", \"low\", \"unassessed\"]).optional(),\n sourceCredibility: SourceCredibilitySchema.optional(),\n findings: text.optional(),\n reportRef: ArtifactSnapshotRefSchema.shape.sourceRef.optional(),\n reportUrl: z.url().optional(),\n manipulationDetected: z.boolean().optional(),\n manipulationDescription: text.optional(),\n notes: text.optional(),\n })\n .describe(\n \"An attributed authenticity or source-credibility review, not an automatic result of snapshot validation.\",\n );\nexport const ArchivalClaimSubjectSchema = z.discriminatedUnion(\"kind\", [\n ResearchClaimSubjectSchema.options[0],\n z.strictObject({\n kind: z.literal(\"entity\"),\n reference: ArchivalEntityReferenceSchema,\n }),\n ResearchClaimSubjectSchema.options[2],\n ResearchClaimSubjectSchema.options[3],\n]);\nconst subject = ArchivalClaimSubjectSchema;\nexport const ArchivalSourceStatementSchema =\n ResearchSourceStatementSchema.extend({\n subject,\n editionCitation: EditionCitationSchema.optional(),\n reportedArtifactReview: ArtifactReviewSchema.optional(),\n });\nconst assessment = {\n subject,\n entityInputRefs: z.array(ArchivalEntityAssertionReferenceSchema).optional(),\n editionInputRefs: z.array(EditionCitationSchema).optional(),\n};\nexport const ArchivalUnassessedClaimSchema =\n ResearchUnassessedClaimSchema.extend(assessment);\nexport const ArchivalAssessedClaimSchema = ResearchAssessedClaimSchema.extend({\n ...assessment,\n artifactReview: ArtifactReviewSchema.optional(),\n});\nexport const ArchivalHistoricalClaimSchema = z.union([\n ArchivalSourceStatementSchema,\n ArchivalUnassessedClaimSchema,\n ArchivalAssessedClaimSchema,\n]);\nexport const ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID =\n \"urn:disclosureos:experimental:claim-history:0.4.0\";\nexport const ArchivalClaimHistorySchema = ResearchClaimHistorySchema.extend({\n schemaVersion: z.literal(\"0.4.0\"),\n claims: z.array(ArchivalHistoricalClaimSchema),\n entityRefs: z.array(\n DocumentSnapshotRefSchema.extend({\n schemaId: z.literal(ARCHIVAL_ENTITIES_SCHEMA_ID),\n }),\n ),\n});\nexport type ArchivalHistoricalClaim = z.infer<\n typeof ArchivalHistoricalClaimSchema\n>;\nexport type ArchivalClaimHistory = z.infer<typeof ArchivalClaimHistorySchema>;\nexport type EditionCitation = z.infer<typeof EditionCitationSchema>;\nexport function archivalClaimHistoryJsonSchema(): Record<string, unknown> {\n return {\n ...z.toJSONSchema(ArchivalClaimHistorySchema, {\n target: \"draft-2020-12\",\n reused: \"ref\",\n }),\n $id: ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID,\n };\n}\n","import {\n ArchivalClaimHistorySchema,\n ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID,\n} from \"./archival-claim-history-schema\";\nimport { parseEntityClaimHistory } from \"./entity-claim-history-validation\";\nimport { checkTime, type PrimitiveIssue } from \"./primitives\";\nimport type { ContextIssue } from \"./context\";\nexport function parseArchivalClaimHistory(input: unknown) {\n const result = parseEntityClaimHistory(input, ArchivalClaimHistorySchema, {\n kind: \"claim_history\",\n schemaId: ARCHIVAL_CLAIM_HISTORY_SCHEMA_ID,\n rulesetVersion: \"0.4.0\",\n } as const);\n if (!result.success) return result;\n const data = result.data,\n issues: ContextIssue[] = [];\n const problem = (code: string, pointer: string, message: string) =>\n issues.push({ code, stage: \"semantic\", pointer, message });\n const snapshots = new Set(data.entityRefs.map((r) => JSON.stringify(r)));\n const sources = new Map<\n string,\n | (typeof data.observation.sources)[number]\n | (typeof data.observation.products)[number]\n >([\n ...data.observation.sources.map((s) => [`source:${s.id}`, s] as const),\n ...data.observation.products.map((s) => [`product:${s.id}`, s] as const),\n ]);\n for (const [i, claim] of data.claims.entries()) {\n const p = `/claims/${i}`;\n const citations =\n claim.kind === \"source_assertion\"\n ? claim.editionCitation\n ? [claim.editionCitation]\n : []\n : (claim.editionInputRefs ?? []);\n if (\n new Set(citations.map((c) => JSON.stringify(c))).size !== citations.length\n )\n problem(\"REF.UNIQUE_ID\", p, \"Edition citations repeat.\");\n for (const citation of citations) {\n if (!snapshots.has(JSON.stringify(citation.document)))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Edition citation must select a declared entity snapshot.\",\n );\n const source = sources.get(citation.artifact.sourceRef);\n if (\n !source?.digest ||\n source.digest.value !== citation.artifact.digest.value\n )\n problem(\n \"ARCHIVE.ARTIFACT_IDENTITY\",\n p,\n \"Edition citation must match an inventory artifact's SHA-256 declaration.\",\n );\n if (\n citation.locator.kind === \"time_range\" &&\n citation.locator.endSeconds < citation.locator.startSeconds\n )\n problem(\"TIME.INTERVAL\", p, \"Edition locator end precedes its start.\");\n if (\n claim.kind === \"source_assertion\" &&\n (claim.provenance.sourceRef !== citation.artifact.sourceRef ||\n (claim.provenance.sourceDigest &&\n claim.provenance.sourceDigest.value !==\n citation.artifact.digest.value) ||\n JSON.stringify(claim.provenance.locator) !==\n JSON.stringify(citation.locator))\n )\n problem(\n \"ARCHIVE.CITATION_SCOPE\",\n p,\n \"A source statement's provenance and edition citation must name the same artifact and locator.\",\n );\n }\n const review =\n claim.kind === \"source_assertion\"\n ? claim.reportedArtifactReview\n : claim.status === \"assessed\"\n ? claim.artifactReview\n : undefined;\n if (!review) continue;\n if (\n claim.subject.kind !== \"entity\" ||\n ![\"source_edition\", \"digital_artifact\"].includes(\n claim.subject.reference.target.kind,\n )\n )\n problem(\n \"ARCHIVE.REVIEW_SUBJECT\",\n p,\n \"Artifact review requires an exact source-edition or digital-artifact subject.\",\n );\n if (\n claim.kind === \"assessment\" &&\n claim.inputRefs.length +\n (claim.entityInputRefs?.length ?? 0) +\n (claim.contextInputRefs?.length ?? 0) +\n citations.length ===\n 0\n )\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Artifact review requires explicit inputs.\",\n );\n if (review.reportRef && !sources.has(review.reportRef))\n problem(\n \"REF.LOCAL_RESOLUTION\",\n p,\n \"Review report is absent from the observation inventory.\",\n );\n if (review.reviewedAt) {\n const found: PrimitiveIssue[] = [];\n checkTime(review.reviewedAt, `${p}/artifactReview/reviewedAt`, found);\n found.forEach((v) => problem(v.code, v.pointer, v.message));\n }\n }\n const validation = {\n contract: result.contract,\n issues,\n uncheckedRefs: result.uncheckedRefs,\n checks: {\n ...result.checks,\n semantic: issues.length ? (\"failed\" as const) : (\"passed\" as const),\n },\n };\n return issues.length\n ? { ...validation, success: false as const }\n : {\n ...validation,\n success: true as const,\n data,\n currentClaimRefs: result.currentClaimRefs,\n };\n}\n"]}