@effect-uai/responses 0.11.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/OpenAIDeepResearch.d.mts +6 -5
  2. package/dist/OpenAIDeepResearch.d.mts.map +1 -1
  3. package/dist/OpenAIDeepResearch.mjs +8 -4
  4. package/dist/OpenAIDeepResearch.mjs.map +1 -1
  5. package/dist/OpenAIEmbedding.d.mts +2 -3
  6. package/dist/OpenAIEmbedding.d.mts.map +1 -1
  7. package/dist/OpenAIEmbedding.mjs +1 -1
  8. package/dist/OpenAIEmbedding.mjs.map +1 -1
  9. package/dist/Responses.d.mts +20 -2
  10. package/dist/Responses.d.mts.map +1 -1
  11. package/dist/Responses.mjs +9 -6
  12. package/dist/Responses.mjs.map +1 -1
  13. package/dist/ResponsesTools.d.mts +0 -2
  14. package/dist/ResponsesTools.d.mts.map +1 -1
  15. package/dist/ResponsesTools.mjs +1 -1
  16. package/dist/ResponsesTools.mjs.map +1 -1
  17. package/dist/codec.d.mts +0 -2
  18. package/dist/codec.d.mts.map +1 -1
  19. package/dist/codec.mjs +31 -9
  20. package/dist/codec.mjs.map +1 -1
  21. package/dist/codec.test.d.mts +1 -0
  22. package/dist/codec.test.mjs +94 -0
  23. package/dist/codec.test.mjs.map +1 -0
  24. package/dist/{magic-string.es-CaWgF-3p.mjs → magic-string.es-CUAnjKYC.mjs} +14 -13
  25. package/dist/{magic-string.es-CaWgF-3p.mjs.map → magic-string.es-CUAnjKYC.mjs.map} +1 -1
  26. package/dist/models.d.mts.map +1 -1
  27. package/dist/region.d.mts.map +1 -1
  28. package/dist/region.mjs.map +1 -1
  29. package/dist/region.test.d.mts +1 -1
  30. package/dist/region.test.mjs +1 -1
  31. package/dist/region.test.mjs.map +1 -1
  32. package/dist/responsesTools.test.d.mts +1 -1
  33. package/dist/responsesTools.test.mjs +7 -5
  34. package/dist/responsesTools.test.mjs.map +1 -1
  35. package/dist/streamEvents.d.mts +0 -2
  36. package/dist/streamEvents.d.mts.map +1 -1
  37. package/dist/streamEvents.mjs +1 -1
  38. package/dist/streamEvents.mjs.map +1 -1
  39. package/dist/{test.DNmyFkvJ-CPKukVWS.mjs → test.DNmyFkvJ-N3QqMRwZ.mjs} +247 -222
  40. package/dist/test.DNmyFkvJ-N3QqMRwZ.mjs.map +1 -0
  41. package/package.json +9 -5
  42. package/src/OpenAIDeepResearch.ts +9 -14
  43. package/src/OpenAIEmbedding.ts +24 -29
  44. package/src/Responses.ts +28 -8
  45. package/src/ResponsesTools.ts +4 -6
  46. package/src/codec.test.ts +87 -0
  47. package/src/codec.ts +33 -13
  48. package/dist/test.DNmyFkvJ-CPKukVWS.mjs.map +0 -1
  49. /package/dist/{chunk-CfYAbeIz.mjs → rolldown-runtime-D7D4PA-g.mjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"streamEvents.mjs","names":[],"sources":["../src/streamEvents.ts"],"sourcesContent":["import { Match, Schema } from \"effect\"\nimport { TurnEvent } from \"@effect-uai/core/Turn\"\nimport {\n WireAnnotation,\n WireOutputItem,\n WireResponseCompleted,\n turnFromCompleted,\n} from \"./codec.js\"\n\n// ---------------------------------------------------------------------------\n// Schemas for the SSE event payloads we care about. The Responses API ships\n// many event types; we model only the ones that map to a `TurnEvent`. All\n// others are silently ignored at the dispatch site.\n// ---------------------------------------------------------------------------\n\nconst OutputItemAdded = Schema.Struct({\n type: Schema.Literal(\"response.output_item.added\"),\n item: WireOutputItem,\n})\n\nconst OutputTextDelta = Schema.Struct({\n type: Schema.Literal(\"response.output_text.delta\"),\n delta: Schema.String,\n})\n\nconst FunctionArgsDelta = Schema.Struct({\n type: Schema.Literal(\"response.function_call_arguments.delta\"),\n item_id: Schema.String,\n delta: Schema.String,\n})\n\nconst ReasoningTextDelta = Schema.Struct({\n type: Schema.Literal(\"response.reasoning_text.delta\"),\n delta: Schema.String,\n})\n\nconst ReasoningSummaryDelta = Schema.Struct({\n type: Schema.Literal(\"response.reasoning_summary_text.delta\"),\n delta: Schema.String,\n})\n\nconst RefusalDelta = Schema.Struct({\n type: Schema.Literal(\"response.refusal.delta\"),\n delta: Schema.String,\n})\n\nconst RefusalDone = Schema.Struct({\n type: Schema.Literal(\"response.refusal.done\"),\n refusal: Schema.optional(Schema.String),\n})\n\n// Web-search lifecycle. The three phases carry `item_id` / `output_index` /\n// `sequence_number`; we map each to a `WebSearchCall` status. `query` / `action`\n// ride on the `web_search_call` output item, not these lifecycle events.\nconst WebSearchInProgress = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.in_progress\"),\n})\n\nconst WebSearchSearching = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.searching\"),\n})\n\nconst WebSearchCompleted = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.completed\"),\n})\n\n// A citation attached to the answer as it is written. `annotation` is the\n// same shape as the ones bundled on the final `output_text` block.\nconst AnnotationAdded = Schema.Struct({\n type: Schema.Literal(\"response.output_text.annotation.added\"),\n annotation: WireAnnotation,\n})\n\nconst Completed = Schema.Struct({\n type: Schema.Literal(\"response.completed\"),\n response: WireResponseCompleted,\n})\n\nconst Incomplete = Schema.Struct({\n type: Schema.Literal(\"response.incomplete\"),\n response: WireResponseCompleted,\n})\n\nconst Failed = Schema.Struct({\n type: Schema.Literal(\"response.failed\"),\n response: WireResponseCompleted,\n})\n\nconst ErrorEvent = Schema.Struct({\n type: Schema.Literal(\"error\"),\n // Flat form (top-level `message`/`code`) and the nested form the Responses API\n // uses for request rejections: `error: { message, code, type, param }`.\n message: Schema.optional(Schema.String),\n code: Schema.optional(Schema.String),\n error: Schema.optional(\n Schema.Struct({\n message: Schema.optional(Schema.NullOr(Schema.String)),\n code: Schema.optional(Schema.NullOr(Schema.String)),\n type: Schema.optional(Schema.NullOr(Schema.String)),\n param: Schema.optional(Schema.NullOr(Schema.String)),\n }),\n ),\n})\n\n/**\n * Catch-all variant for wire events that fail to decode against any known\n * schema, plus events that fail to JSON-parse. The decoder never produces\n * this directly - it's synthesized by `sseEventToProviderEvent` when\n * `decodeKnown` fails.\n */\nconst Unknown = Schema.Struct({\n type: Schema.Literal(\"_unknown\"),\n raw: Schema.Unknown,\n})\n\n/**\n * Internal: union of variants we actually know how to decode from the wire.\n * Used as the decode target; failures are caught and re-emitted as `Unknown`.\n */\nexport const KnownProviderEvent = Schema.Union([\n OutputItemAdded,\n OutputTextDelta,\n FunctionArgsDelta,\n ReasoningTextDelta,\n ReasoningSummaryDelta,\n RefusalDelta,\n RefusalDone,\n WebSearchInProgress,\n WebSearchSearching,\n WebSearchCompleted,\n AnnotationAdded,\n Completed,\n Incomplete,\n Failed,\n ErrorEvent,\n])\n\n/**\n * Public: every event the native stream can emit. Discriminated on `type`.\n * The `_unknown` branch closes the cardinality so downstream `Match.exhaustive`\n * cannot silently miss a wire event we didn't model.\n */\nexport const ProviderEvent = Schema.Union([\n OutputItemAdded,\n OutputTextDelta,\n FunctionArgsDelta,\n ReasoningTextDelta,\n ReasoningSummaryDelta,\n RefusalDelta,\n RefusalDone,\n WebSearchInProgress,\n WebSearchSearching,\n WebSearchCompleted,\n AnnotationAdded,\n Completed,\n Incomplete,\n Failed,\n ErrorEvent,\n Unknown,\n])\nexport type ProviderEvent = typeof ProviderEvent.Type\n\n// `call_id` lookup for `function_call_arguments.delta`. The SSE event\n// references the *item id*, not the call id; we keep a small map populated\n// from the `output_item.added` events.\nexport type CallIdLookup = {\n readonly resolve: (itemId: string) => string | undefined\n readonly remember: (itemId: string, callId: string) => void\n}\n\nexport const makeCallIdLookup = (): CallIdLookup => {\n const map = new Map<string, string>()\n return {\n resolve: (id) => map.get(id),\n remember: (id, callId) => {\n map.set(id, callId)\n },\n }\n}\n\n/**\n * Translate a decoded provider event into zero-or-more `TurnEvent`s.\n * Mutates `lookup` to record `(item_id → call_id)` from `output_item.added`\n * so subsequent `function_call_arguments.delta` events can be tagged with\n * the right call id.\n */\nexport const eventToDeltas = (\n event: ProviderEvent,\n lookup: CallIdLookup,\n): ReadonlyArray<TurnEvent> =>\n Match.value(event).pipe(\n Match.discriminatorsExhaustive(\"type\")({\n \"response.output_item.added\": ({ item }) => {\n if (item.type !== \"function_call\") return []\n if (item.id !== undefined) lookup.remember(item.id, item.call_id)\n return [TurnEvent.ToolCallStart({ call_id: item.call_id, name: item.name })]\n },\n \"response.output_text.delta\": ({ delta }) => [TurnEvent.TextDelta({ text: delta })],\n \"response.function_call_arguments.delta\": ({ item_id, delta }) => {\n const call_id = lookup.resolve(item_id)\n return call_id === undefined ? [] : [TurnEvent.ToolCallArgsDelta({ call_id, delta })]\n },\n \"response.reasoning_text.delta\": ({ delta }) => [\n TurnEvent.ReasoningDelta({ text: delta, kind: \"trace\" }),\n ],\n \"response.reasoning_summary_text.delta\": ({ delta }) => [\n TurnEvent.ReasoningDelta({ text: delta, kind: \"summary\" }),\n ],\n \"response.refusal.delta\": ({ delta }) => [TurnEvent.RefusalDelta({ text: delta })],\n // Terminal marker for the refusal stream; the deltas already covered\n // the text, so no canonical event is emitted here.\n \"response.refusal.done\": () => [],\n \"response.web_search_call.in_progress\": () => [\n TurnEvent.WebSearchCall({ status: \"started\" }),\n ],\n \"response.web_search_call.searching\": () => [\n TurnEvent.WebSearchCall({ status: \"searching\" }),\n ],\n \"response.web_search_call.completed\": () => [\n TurnEvent.WebSearchCall({ status: \"completed\" }),\n ],\n \"response.output_text.annotation.added\": ({ annotation }) => [\n TurnEvent.CitationAdded({ annotation }),\n ],\n \"response.completed\": ({ response }) => [\n TurnEvent.TurnComplete({ turn: turnFromCompleted(response) }),\n ],\n // Incomplete = the model stopped early but produced a usable partial\n // turn (max_tokens, content_filter, max_tool_calls, refusal). Same\n // payload shape as `response.completed`; the stop_reason carries the\n // reason.\n \"response.incomplete\": ({ response }) => [\n TurnEvent.TurnComplete({ turn: turnFromCompleted(response) }),\n ],\n // Failed and error are surfaced separately as `AiError` by the stream\n // pipeline, not as canonical events.\n \"response.failed\": () => [],\n error: () => [],\n // No silent drops: unknown wire events flow through `streamNative` but\n // produce no canonical delta. Step 3 (canonical `other` event) replaces\n // this with a forwarded `other` delta on `TurnEvent`.\n _unknown: () => [],\n }),\n )\n"],"mappings":"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"}
1
+ {"version":3,"file":"streamEvents.mjs","names":[],"sources":["../src/streamEvents.ts"],"sourcesContent":["import { Match, Schema } from \"effect\"\nimport { TurnEvent } from \"@effect-uai/core/Turn\"\nimport {\n WireAnnotation,\n WireOutputItem,\n WireResponseCompleted,\n turnFromCompleted,\n} from \"./codec.js\"\n\n// ---------------------------------------------------------------------------\n// Schemas for the SSE event payloads we care about. The Responses API ships\n// many event types; we model only the ones that map to a `TurnEvent`. All\n// others are silently ignored at the dispatch site.\n// ---------------------------------------------------------------------------\n\nconst OutputItemAdded = Schema.Struct({\n type: Schema.Literal(\"response.output_item.added\"),\n item: WireOutputItem,\n})\n\nconst OutputTextDelta = Schema.Struct({\n type: Schema.Literal(\"response.output_text.delta\"),\n delta: Schema.String,\n})\n\nconst FunctionArgsDelta = Schema.Struct({\n type: Schema.Literal(\"response.function_call_arguments.delta\"),\n item_id: Schema.String,\n delta: Schema.String,\n})\n\nconst ReasoningTextDelta = Schema.Struct({\n type: Schema.Literal(\"response.reasoning_text.delta\"),\n delta: Schema.String,\n})\n\nconst ReasoningSummaryDelta = Schema.Struct({\n type: Schema.Literal(\"response.reasoning_summary_text.delta\"),\n delta: Schema.String,\n})\n\nconst RefusalDelta = Schema.Struct({\n type: Schema.Literal(\"response.refusal.delta\"),\n delta: Schema.String,\n})\n\nconst RefusalDone = Schema.Struct({\n type: Schema.Literal(\"response.refusal.done\"),\n refusal: Schema.optional(Schema.String),\n})\n\n// Web-search lifecycle. The three phases carry `item_id` / `output_index` /\n// `sequence_number`; we map each to a `WebSearchCall` status. `query` / `action`\n// ride on the `web_search_call` output item, not these lifecycle events.\nconst WebSearchInProgress = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.in_progress\"),\n})\n\nconst WebSearchSearching = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.searching\"),\n})\n\nconst WebSearchCompleted = Schema.Struct({\n type: Schema.Literal(\"response.web_search_call.completed\"),\n})\n\n// A citation attached to the answer as it is written. `annotation` is the\n// same shape as the ones bundled on the final `output_text` block.\nconst AnnotationAdded = Schema.Struct({\n type: Schema.Literal(\"response.output_text.annotation.added\"),\n annotation: WireAnnotation,\n})\n\nconst Completed = Schema.Struct({\n type: Schema.Literal(\"response.completed\"),\n response: WireResponseCompleted,\n})\n\nconst Incomplete = Schema.Struct({\n type: Schema.Literal(\"response.incomplete\"),\n response: WireResponseCompleted,\n})\n\nconst Failed = Schema.Struct({\n type: Schema.Literal(\"response.failed\"),\n response: WireResponseCompleted,\n})\n\nconst ErrorEvent = Schema.Struct({\n type: Schema.Literal(\"error\"),\n // Flat form (top-level `message`/`code`) and the nested form the Responses API\n // uses for request rejections: `error: { message, code, type, param }`.\n message: Schema.optional(Schema.String),\n code: Schema.optional(Schema.String),\n error: Schema.optional(\n Schema.Struct({\n message: Schema.optional(Schema.NullOr(Schema.String)),\n code: Schema.optional(Schema.NullOr(Schema.String)),\n type: Schema.optional(Schema.NullOr(Schema.String)),\n param: Schema.optional(Schema.NullOr(Schema.String)),\n }),\n ),\n})\n\n/**\n * Catch-all variant for wire events that fail to decode against any known\n * schema, plus events that fail to JSON-parse. The decoder never produces\n * this directly - it's synthesized by `sseEventToProviderEvent` when\n * `decodeKnown` fails.\n */\nconst Unknown = Schema.Struct({\n type: Schema.Literal(\"_unknown\"),\n raw: Schema.Unknown,\n})\n\n/**\n * Internal: union of variants we actually know how to decode from the wire.\n * Used as the decode target; failures are caught and re-emitted as `Unknown`.\n */\nexport const KnownProviderEvent = Schema.Union([\n OutputItemAdded,\n OutputTextDelta,\n FunctionArgsDelta,\n ReasoningTextDelta,\n ReasoningSummaryDelta,\n RefusalDelta,\n RefusalDone,\n WebSearchInProgress,\n WebSearchSearching,\n WebSearchCompleted,\n AnnotationAdded,\n Completed,\n Incomplete,\n Failed,\n ErrorEvent,\n])\n\n/**\n * Public: every event the native stream can emit. Discriminated on `type`.\n * The `_unknown` branch closes the cardinality so downstream `Match.exhaustive`\n * cannot silently miss a wire event we didn't model.\n */\nexport const ProviderEvent = Schema.Union([\n OutputItemAdded,\n OutputTextDelta,\n FunctionArgsDelta,\n ReasoningTextDelta,\n ReasoningSummaryDelta,\n RefusalDelta,\n RefusalDone,\n WebSearchInProgress,\n WebSearchSearching,\n WebSearchCompleted,\n AnnotationAdded,\n Completed,\n Incomplete,\n Failed,\n ErrorEvent,\n Unknown,\n])\nexport type ProviderEvent = typeof ProviderEvent.Type\n\n// `call_id` lookup for `function_call_arguments.delta`. The SSE event\n// references the *item id*, not the call id; we keep a small map populated\n// from the `output_item.added` events.\nexport type CallIdLookup = {\n readonly resolve: (itemId: string) => string | undefined\n readonly remember: (itemId: string, callId: string) => void\n}\n\nexport const makeCallIdLookup = (): CallIdLookup => {\n const map = new Map<string, string>()\n return {\n resolve: (id) => map.get(id),\n remember: (id, callId) => {\n map.set(id, callId)\n },\n }\n}\n\n/**\n * Translate a decoded provider event into zero-or-more `TurnEvent`s.\n * Mutates `lookup` to record `(item_id → call_id)` from `output_item.added`\n * so subsequent `function_call_arguments.delta` events can be tagged with\n * the right call id.\n */\nexport const eventToDeltas = (\n event: ProviderEvent,\n lookup: CallIdLookup,\n): ReadonlyArray<TurnEvent> =>\n Match.value(event).pipe(\n Match.discriminatorsExhaustive(\"type\")({\n \"response.output_item.added\": ({ item }) => {\n if (item.type !== \"function_call\") return []\n if (item.id !== undefined) lookup.remember(item.id, item.call_id)\n return [TurnEvent.ToolCallStart({ call_id: item.call_id, name: item.name })]\n },\n \"response.output_text.delta\": ({ delta }) => [TurnEvent.TextDelta({ text: delta })],\n \"response.function_call_arguments.delta\": ({ item_id, delta }) => {\n const call_id = lookup.resolve(item_id)\n return call_id === undefined ? [] : [TurnEvent.ToolCallArgsDelta({ call_id, delta })]\n },\n \"response.reasoning_text.delta\": ({ delta }) => [\n TurnEvent.ReasoningDelta({ text: delta, kind: \"trace\" }),\n ],\n \"response.reasoning_summary_text.delta\": ({ delta }) => [\n TurnEvent.ReasoningDelta({ text: delta, kind: \"summary\" }),\n ],\n \"response.refusal.delta\": ({ delta }) => [TurnEvent.RefusalDelta({ text: delta })],\n // Terminal marker for the refusal stream; the deltas already covered\n // the text, so no canonical event is emitted here.\n \"response.refusal.done\": () => [],\n \"response.web_search_call.in_progress\": () => [\n TurnEvent.WebSearchCall({ status: \"started\" }),\n ],\n \"response.web_search_call.searching\": () => [\n TurnEvent.WebSearchCall({ status: \"searching\" }),\n ],\n \"response.web_search_call.completed\": () => [\n TurnEvent.WebSearchCall({ status: \"completed\" }),\n ],\n \"response.output_text.annotation.added\": ({ annotation }) => [\n TurnEvent.CitationAdded({ annotation }),\n ],\n \"response.completed\": ({ response }) => [\n TurnEvent.TurnComplete({ turn: turnFromCompleted(response) }),\n ],\n // Incomplete = the model stopped early but produced a usable partial\n // turn (max_tokens, content_filter, max_tool_calls, refusal). Same\n // payload shape as `response.completed`; the stop_reason carries the\n // reason.\n \"response.incomplete\": ({ response }) => [\n TurnEvent.TurnComplete({ turn: turnFromCompleted(response) }),\n ],\n // Failed and error are surfaced separately as `AiError` by the stream\n // pipeline, not as canonical events.\n \"response.failed\": () => [],\n error: () => [],\n // No silent drops: unknown wire events flow through `streamNative` but\n // produce no canonical delta. Step 3 (canonical `other` event) replaces\n // this with a forwarded `other` delta on `TurnEvent`.\n _unknown: () => [],\n }),\n )\n"],"mappings":";;;;;;;;;;;AAeA,MAAM,kBAAkB,OAAO,OAAO;CACpC,MAAM,OAAO,QAAQ,4BAA4B;CACjD,MAAM;AACR,CAAC;AAED,MAAM,kBAAkB,OAAO,OAAO;CACpC,MAAM,OAAO,QAAQ,4BAA4B;CACjD,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,oBAAoB,OAAO,OAAO;CACtC,MAAM,OAAO,QAAQ,wCAAwC;CAC7D,SAAS,OAAO;CAChB,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,qBAAqB,OAAO,OAAO;CACvC,MAAM,OAAO,QAAQ,+BAA+B;CACpD,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,wBAAwB,OAAO,OAAO;CAC1C,MAAM,OAAO,QAAQ,uCAAuC;CAC5D,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,eAAe,OAAO,OAAO;CACjC,MAAM,OAAO,QAAQ,wBAAwB;CAC7C,OAAO,OAAO;AAChB,CAAC;AAED,MAAM,cAAc,OAAO,OAAO;CAChC,MAAM,OAAO,QAAQ,uBAAuB;CAC5C,SAAS,OAAO,SAAS,OAAO,MAAM;AACxC,CAAC;AAKD,MAAM,sBAAsB,OAAO,OAAO,EACxC,MAAM,OAAO,QAAQ,sCAAsC,EAC7D,CAAC;AAED,MAAM,qBAAqB,OAAO,OAAO,EACvC,MAAM,OAAO,QAAQ,oCAAoC,EAC3D,CAAC;AAED,MAAM,qBAAqB,OAAO,OAAO,EACvC,MAAM,OAAO,QAAQ,oCAAoC,EAC3D,CAAC;AAID,MAAM,kBAAkB,OAAO,OAAO;CACpC,MAAM,OAAO,QAAQ,uCAAuC;CAC5D,YAAY;AACd,CAAC;AAED,MAAM,YAAY,OAAO,OAAO;CAC9B,MAAM,OAAO,QAAQ,oBAAoB;CACzC,UAAU;AACZ,CAAC;AAED,MAAM,aAAa,OAAO,OAAO;CAC/B,MAAM,OAAO,QAAQ,qBAAqB;CAC1C,UAAU;AACZ,CAAC;AAED,MAAM,SAAS,OAAO,OAAO;CAC3B,MAAM,OAAO,QAAQ,iBAAiB;CACtC,UAAU;AACZ,CAAC;AAED,MAAM,aAAa,OAAO,OAAO;CAC/B,MAAM,OAAO,QAAQ,OAAO;CAG5B,SAAS,OAAO,SAAS,OAAO,MAAM;CACtC,MAAM,OAAO,SAAS,OAAO,MAAM;CACnC,OAAO,OAAO,SACZ,OAAO,OAAO;EACZ,SAAS,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM,CAAC;EACrD,MAAM,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM,CAAC;EAClD,MAAM,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM,CAAC;EAClD,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM,CAAC;CACrD,CAAC,CACH;AACF,CAAC;;;;;;;AAQD,MAAM,UAAU,OAAO,OAAO;CAC5B,MAAM,OAAO,QAAQ,UAAU;CAC/B,KAAK,OAAO;AACd,CAAC;;;;;AAMD,MAAa,qBAAqB,OAAO,MAAM;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;;AAOD,MAAa,gBAAgB,OAAO,MAAM;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAWD,MAAa,yBAAuC;CAClD,MAAM,sBAAM,IAAI,IAAoB;CACpC,OAAO;EACL,UAAU,OAAO,IAAI,IAAI,EAAE;EAC3B,WAAW,IAAI,WAAW;GACxB,IAAI,IAAI,IAAI,MAAM;EACpB;CACF;AACF;;;;;;;AAQA,MAAa,iBACX,OACA,WAEA,MAAM,MAAM,KAAK,CAAC,CAAC,KACjB,MAAM,yBAAyB,MAAM,CAAC,CAAC;CACrC,+BAA+B,EAAE,WAAW;EAC1C,IAAI,KAAK,SAAS,iBAAiB,OAAO,CAAC;EAC3C,IAAI,KAAK,OAAO,KAAA,GAAW,OAAO,SAAS,KAAK,IAAI,KAAK,OAAO;EAChE,OAAO,CAAC,UAAU,cAAc;GAAE,SAAS,KAAK;GAAS,MAAM,KAAK;EAAK,CAAC,CAAC;CAC7E;CACA,+BAA+B,EAAE,YAAY,CAAC,UAAU,UAAU,EAAE,MAAM,MAAM,CAAC,CAAC;CAClF,2CAA2C,EAAE,SAAS,YAAY;EAChE,MAAM,UAAU,OAAO,QAAQ,OAAO;EACtC,OAAO,YAAY,KAAA,IAAY,CAAC,IAAI,CAAC,UAAU,kBAAkB;GAAE;GAAS;EAAM,CAAC,CAAC;CACtF;CACA,kCAAkC,EAAE,YAAY,CAC9C,UAAU,eAAe;EAAE,MAAM;EAAO,MAAM;CAAQ,CAAC,CACzD;CACA,0CAA0C,EAAE,YAAY,CACtD,UAAU,eAAe;EAAE,MAAM;EAAO,MAAM;CAAU,CAAC,CAC3D;CACA,2BAA2B,EAAE,YAAY,CAAC,UAAU,aAAa,EAAE,MAAM,MAAM,CAAC,CAAC;CAGjF,+BAA+B,CAAC;CAChC,8CAA8C,CAC5C,UAAU,cAAc,EAAE,QAAQ,UAAU,CAAC,CAC/C;CACA,4CAA4C,CAC1C,UAAU,cAAc,EAAE,QAAQ,YAAY,CAAC,CACjD;CACA,4CAA4C,CAC1C,UAAU,cAAc,EAAE,QAAQ,YAAY,CAAC,CACjD;CACA,0CAA0C,EAAE,iBAAiB,CAC3D,UAAU,cAAc,EAAE,WAAW,CAAC,CACxC;CACA,uBAAuB,EAAE,eAAe,CACtC,UAAU,aAAa,EAAE,MAAM,kBAAkB,QAAQ,EAAE,CAAC,CAC9D;CAKA,wBAAwB,EAAE,eAAe,CACvC,UAAU,aAAa,EAAE,MAAM,kBAAkB,QAAQ,EAAE,CAAC,CAC9D;CAGA,yBAAyB,CAAC;CAC1B,aAAa,CAAC;CAId,gBAAgB,CAAC;AACnB,CAAC,CACH"}