@mohanscodex/spectra-ai 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +189 -0
  2. package/dist/__tests__/e2e.test.d.ts +2 -0
  3. package/dist/__tests__/e2e.test.d.ts.map +1 -0
  4. package/dist/__tests__/e2e.test.js +364 -0
  5. package/dist/__tests__/e2e.test.js.map +1 -0
  6. package/dist/__tests__/event-stream.test.d.ts +2 -0
  7. package/dist/__tests__/event-stream.test.d.ts.map +1 -0
  8. package/dist/__tests__/event-stream.test.js +87 -0
  9. package/dist/__tests__/event-stream.test.js.map +1 -0
  10. package/dist/__tests__/provider.test.d.ts +2 -0
  11. package/dist/__tests__/provider.test.d.ts.map +1 -0
  12. package/dist/__tests__/provider.test.js +40 -0
  13. package/dist/__tests__/provider.test.js.map +1 -0
  14. package/dist/event-stream.d.ts +19 -0
  15. package/dist/event-stream.d.ts.map +1 -0
  16. package/dist/event-stream.js +74 -0
  17. package/dist/event-stream.js.map +1 -0
  18. package/dist/index.d.ts +8 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +5 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/models.d.ts +6 -0
  23. package/dist/models.d.ts.map +1 -0
  24. package/dist/models.js +16480 -0
  25. package/dist/models.js.map +1 -0
  26. package/dist/providers/anthropic.d.ts +8 -0
  27. package/dist/providers/anthropic.d.ts.map +1 -0
  28. package/dist/providers/anthropic.js +279 -0
  29. package/dist/providers/anthropic.js.map +1 -0
  30. package/dist/providers/groq.d.ts +16 -0
  31. package/dist/providers/groq.d.ts.map +1 -0
  32. package/dist/providers/groq.js +196 -0
  33. package/dist/providers/groq.js.map +1 -0
  34. package/dist/providers/openai-completions.d.ts +17 -0
  35. package/dist/providers/openai-completions.d.ts.map +1 -0
  36. package/dist/providers/openai-completions.js +319 -0
  37. package/dist/providers/openai-completions.js.map +1 -0
  38. package/dist/providers/openai-responses.d.ts +12 -0
  39. package/dist/providers/openai-responses.d.ts.map +1 -0
  40. package/dist/providers/openai-responses.js +335 -0
  41. package/dist/providers/openai-responses.js.map +1 -0
  42. package/dist/providers/openrouter.d.ts +12 -0
  43. package/dist/providers/openrouter.d.ts.map +1 -0
  44. package/dist/providers/openrouter.js +42 -0
  45. package/dist/providers/openrouter.js.map +1 -0
  46. package/dist/providers/register-builtins.d.ts +2 -0
  47. package/dist/providers/register-builtins.d.ts.map +1 -0
  48. package/dist/providers/register-builtins.js +41 -0
  49. package/dist/providers/register-builtins.js.map +1 -0
  50. package/dist/providers/shared.d.ts +3 -0
  51. package/dist/providers/shared.d.ts.map +1 -0
  52. package/dist/providers/shared.js +12 -0
  53. package/dist/providers/shared.js.map +1 -0
  54. package/dist/registry.d.ts +19 -0
  55. package/dist/registry.d.ts.map +1 -0
  56. package/dist/registry.js +28 -0
  57. package/dist/registry.js.map +1 -0
  58. package/dist/types.d.ts +164 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +33 -0
@@ -0,0 +1,279 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import { AssistantMessageEventStream } from "../event-stream.js";
3
+ function getEnvApiKey(provider) {
4
+ const keys = {
5
+ anthropic: process.env.ANTHROPIC_API_KEY ?? process.env.ANTHROPIC_KEY,
6
+ };
7
+ return keys[provider];
8
+ }
9
+ function sanitizeSurrogates(text) {
10
+ return text.replace(/[\u0080-\uFFFF]/g, (c) => `\\u${c.charCodeAt(0).toString(16)}`);
11
+ }
12
+ function toAnthropicMessage(message) {
13
+ if (message.role === "user") {
14
+ const content = typeof message.content === "string"
15
+ ? sanitizeSurrogates(message.content)
16
+ : message.content.map((block) => {
17
+ if (block.type === "text") {
18
+ return { type: "text", text: sanitizeSurrogates(block.text) };
19
+ }
20
+ if (block.type === "image") {
21
+ return {
22
+ type: "image",
23
+ source: {
24
+ type: "base64",
25
+ media_type: block.mimeType,
26
+ data: block.data,
27
+ },
28
+ };
29
+ }
30
+ return { type: "text", text: "" };
31
+ });
32
+ return { role: "user", content };
33
+ }
34
+ if (message.role === "assistant") {
35
+ const content = message.content.map((block) => {
36
+ if (block.type === "text") {
37
+ return { type: "text", text: sanitizeSurrogates(block.text) };
38
+ }
39
+ if (block.type === "thinking") {
40
+ return {
41
+ type: "text",
42
+ text: sanitizeSurrogates(block.thinking),
43
+ };
44
+ }
45
+ if (block.type === "toolCall") {
46
+ let input;
47
+ if (typeof block.arguments === "string") {
48
+ try {
49
+ input = JSON.parse(block.arguments);
50
+ }
51
+ catch {
52
+ input = {};
53
+ }
54
+ }
55
+ else {
56
+ input = block.arguments;
57
+ }
58
+ return {
59
+ type: "tool_use",
60
+ id: block.id,
61
+ name: block.name,
62
+ input,
63
+ };
64
+ }
65
+ return { type: "text", text: "" };
66
+ });
67
+ return { role: "assistant", content };
68
+ }
69
+ if (message.role === "toolResult") {
70
+ const content = message.content.map((block) => {
71
+ if (block.type === "text") {
72
+ return {
73
+ type: "tool_result",
74
+ tool_use_id: message.toolCallId,
75
+ content: sanitizeSurrogates(block.text),
76
+ };
77
+ }
78
+ if (block.type === "image") {
79
+ return {
80
+ type: "tool_result",
81
+ tool_use_id: message.toolCallId,
82
+ content: [{
83
+ type: "image",
84
+ source: {
85
+ type: "base64",
86
+ media_type: block.mimeType,
87
+ data: block.data,
88
+ },
89
+ }],
90
+ };
91
+ }
92
+ return { type: "tool_result", tool_use_id: message.toolCallId, content: "" };
93
+ });
94
+ return { role: "user", content };
95
+ }
96
+ return { role: "user", content: "" };
97
+ }
98
+ function toAnthropicTool(tool) {
99
+ const jsonSchema = tool.parameters;
100
+ return {
101
+ name: tool.name,
102
+ description: tool.description,
103
+ input_schema: {
104
+ type: "object",
105
+ properties: jsonSchema.properties ?? {},
106
+ required: jsonSchema.required ?? [],
107
+ },
108
+ };
109
+ }
110
+ function mapStopReason(reason) {
111
+ switch (reason) {
112
+ case "end_turn":
113
+ return "stop";
114
+ case "max_tokens":
115
+ return "length";
116
+ case "tool_use":
117
+ return "toolUse";
118
+ case "refusal":
119
+ case "sensitive":
120
+ return "error";
121
+ default:
122
+ return "stop";
123
+ }
124
+ }
125
+ export function createAnthropicProvider() {
126
+ return {
127
+ name: "anthropic",
128
+ listModels: () => import("../models.js").then((m) => m.getProviderModels("anthropic")),
129
+ stream(model, context, options) {
130
+ const stream = new AssistantMessageEventStream();
131
+ const run = async () => {
132
+ const apiKey = options?.apiKey ?? getEnvApiKey(model.provider);
133
+ if (!apiKey) {
134
+ const errorMsg = {
135
+ role: "assistant",
136
+ content: [],
137
+ provider: model.provider,
138
+ model: model.id,
139
+ responseId: undefined,
140
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
141
+ stopReason: "error",
142
+ errorMessage: "ANTHROPIC_API_KEY not set",
143
+ timestamp: Date.now(),
144
+ };
145
+ stream.push({ type: "start", partial: errorMsg });
146
+ stream.push({ type: "error", reason: "error", error: errorMsg });
147
+ stream.end();
148
+ return;
149
+ }
150
+ const client = new Anthropic({ apiKey });
151
+ const output = {
152
+ role: "assistant",
153
+ content: [],
154
+ provider: model.provider,
155
+ model: model.id,
156
+ responseId: undefined,
157
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
158
+ stopReason: "stop",
159
+ timestamp: Date.now(),
160
+ };
161
+ try {
162
+ const messages = context.messages.map(toAnthropicMessage);
163
+ const tools = context.tools?.map(toAnthropicTool) ?? [];
164
+ const params = {
165
+ model: model.id,
166
+ max_tokens: options?.maxTokens ?? 4096,
167
+ messages,
168
+ tools: tools.length > 0 ? tools : undefined,
169
+ system: context.systemPrompt,
170
+ temperature: options?.temperature,
171
+ stream: true,
172
+ };
173
+ const anthropicStream = client.messages.stream(params, { signal: options?.signal });
174
+ stream.push({ type: "start", partial: output });
175
+ const blocks = output.content;
176
+ for await (const event of anthropicStream) {
177
+ if (event.type === "message_start") {
178
+ output.responseId = event.message.id;
179
+ output.usage.input = event.message.usage.input_tokens || 0;
180
+ output.usage.output = event.message.usage.output_tokens || 0;
181
+ output.usage.cacheRead = event.message.usage.cache_read_input_tokens || 0;
182
+ output.usage.cacheWrite = event.message.usage.cache_creation_input_tokens || 0;
183
+ output.usage.totalTokens = output.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;
184
+ }
185
+ else if (event.type === "content_block_start") {
186
+ if (event.content_block.type === "text") {
187
+ const block = { type: "text", text: "", index: event.index };
188
+ output.content.push(block);
189
+ stream.push({ type: "text_start", contentIndex: output.content.length - 1, partial: output });
190
+ }
191
+ else if (event.content_block.type === "tool_use") {
192
+ const block = { type: "toolCall", id: event.content_block.id, name: event.content_block.name, arguments: event.content_block.input ?? {}, partialJson: "", index: event.index };
193
+ output.content.push(block);
194
+ stream.push({ type: "toolcall_start", contentIndex: output.content.length - 1, partial: output });
195
+ }
196
+ }
197
+ else if (event.type === "content_block_delta") {
198
+ if (event.delta.type === "text_delta") {
199
+ const idx = blocks.findIndex((b) => b.index === event.index);
200
+ const block = blocks[idx];
201
+ if (block && block.type === "text") {
202
+ block.text += event.delta.text;
203
+ stream.push({ type: "text_delta", contentIndex: idx, delta: event.delta.text, partial: output });
204
+ }
205
+ }
206
+ else if (event.delta.type === "input_json_delta") {
207
+ const idx = blocks.findIndex((b) => b.index === event.index);
208
+ const block = blocks[idx];
209
+ if (block && block.type === "toolCall") {
210
+ block.partialJson = (block.partialJson ?? "") + event.delta.partial_json;
211
+ try {
212
+ block.arguments = JSON.parse(block.partialJson);
213
+ }
214
+ catch {
215
+ // incomplete JSON, keep partial
216
+ }
217
+ stream.push({ type: "toolcall_delta", contentIndex: idx, delta: event.delta.partial_json, partial: output });
218
+ }
219
+ }
220
+ }
221
+ else if (event.type === "content_block_stop") {
222
+ const idx = blocks.findIndex((b) => b.index === event.index);
223
+ const block = blocks[idx];
224
+ if (block) {
225
+ delete block.index;
226
+ if (block.type === "text") {
227
+ stream.push({ type: "text_end", contentIndex: idx, content: block.text, partial: output });
228
+ }
229
+ else if (block.type === "toolCall") {
230
+ try {
231
+ block.arguments = JSON.parse(block.partialJson ?? "");
232
+ }
233
+ catch {
234
+ block.arguments = {};
235
+ }
236
+ delete block.partialJson;
237
+ stream.push({ type: "toolcall_end", contentIndex: idx, toolCall: block, partial: output });
238
+ }
239
+ }
240
+ }
241
+ else if (event.type === "message_delta") {
242
+ if (event.delta.stop_reason) {
243
+ output.stopReason = mapStopReason(event.delta.stop_reason);
244
+ }
245
+ }
246
+ }
247
+ if (options?.signal?.aborted) {
248
+ throw new Error("Request aborted");
249
+ }
250
+ cleanupBlocks(blocks);
251
+ stream.push({ type: "done", reason: output.stopReason, message: output });
252
+ stream.end();
253
+ }
254
+ catch (error) {
255
+ cleanupOutputContent(output);
256
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
257
+ output.errorMessage = error instanceof Error ? error.message : String(error);
258
+ stream.push({ type: "error", reason: output.stopReason, error: output });
259
+ stream.end();
260
+ }
261
+ };
262
+ run();
263
+ return stream;
264
+ },
265
+ };
266
+ }
267
+ function cleanupBlocks(blocks) {
268
+ for (const block of blocks) {
269
+ delete block.index;
270
+ delete block.partialJson;
271
+ }
272
+ }
273
+ function cleanupOutputContent(output) {
274
+ for (const block of output.content) {
275
+ delete block.index;
276
+ delete block.partialJson;
277
+ }
278
+ }
279
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Context, Model, StreamOptions } from "../types.js";
2
+ import { AssistantMessageEventStream } from "../event-stream.js";
3
+ export interface GroqOptions extends StreamOptions {
4
+ toolChoice?: "auto" | "none" | "required" | {
5
+ type: "function";
6
+ function: {
7
+ name: string;
8
+ };
9
+ };
10
+ }
11
+ export declare function createGroqProvider(): {
12
+ name: string;
13
+ listModels: () => Promise<import("../models.js").ModelEntry[]>;
14
+ stream(model: Model, context: Context, options?: GroqOptions): AssistantMessageEventStream;
15
+ };
16
+ //# sourceMappingURL=groq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,EACP,KAAK,EACL,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AASjE,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC9F;AAED,wBAAgB,kBAAkB;;;kBAIhB,KAAK,WAAW,OAAO,YAAY,WAAW,GAAG,2BAA2B;EAgJ7F"}
@@ -0,0 +1,196 @@
1
+ import OpenAI from "openai";
2
+ import { AssistantMessageEventStream } from "../event-stream.js";
3
+ import { sanitizeSurrogates, parseStreamingJson } from "./shared.js";
4
+ const GROQ_BASE_URL = "https://api.groq.com/openai/v1";
5
+ function getEnvApiKey() {
6
+ return process.env.GROQ_API_KEY;
7
+ }
8
+ export function createGroqProvider() {
9
+ return {
10
+ name: "groq",
11
+ listModels: () => import("../models.js").then((m) => m.getProviderModels("groq")),
12
+ stream(model, context, options) {
13
+ const stream = new AssistantMessageEventStream();
14
+ const run = async () => {
15
+ const output = {
16
+ role: "assistant",
17
+ content: [],
18
+ provider: model.provider,
19
+ model: model.id,
20
+ responseId: undefined,
21
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
22
+ stopReason: "stop",
23
+ timestamp: Date.now(),
24
+ };
25
+ try {
26
+ const apiKey = options?.apiKey ?? getEnvApiKey();
27
+ if (!apiKey) {
28
+ output.stopReason = "error";
29
+ output.errorMessage = `No API key for Groq. Set GROQ_API_KEY environment variable or pass apiKey in options.`;
30
+ stream.push({ type: "start", partial: output });
31
+ stream.push({ type: "error", reason: "error", error: output });
32
+ stream.end();
33
+ return;
34
+ }
35
+ const client = new OpenAI({
36
+ apiKey,
37
+ baseURL: GROQ_BASE_URL,
38
+ dangerouslyAllowBrowser: true,
39
+ });
40
+ const messages = convertMessages(context);
41
+ const params = {
42
+ model: model.id,
43
+ messages,
44
+ stream: true,
45
+ stream_options: { include_usage: true },
46
+ };
47
+ if (options?.maxTokens) {
48
+ params.max_tokens = options.maxTokens;
49
+ }
50
+ if (options?.temperature !== undefined) {
51
+ params.temperature = options.temperature;
52
+ }
53
+ const tools = context.tools?.map((tool) => ({
54
+ type: "function",
55
+ function: {
56
+ name: tool.name,
57
+ description: tool.description,
58
+ parameters: tool.parameters,
59
+ },
60
+ }));
61
+ if (tools && tools.length > 0) {
62
+ params.tools = tools;
63
+ }
64
+ if (options?.toolChoice) {
65
+ params.tool_choice = options.toolChoice;
66
+ }
67
+ const response = await client.chat.completions.create(params);
68
+ const toolCallFragments = {};
69
+ for await (const chunk of response) {
70
+ if (options?.signal?.aborted)
71
+ break;
72
+ const delta = chunk.choices[0]?.delta;
73
+ const finishReason = chunk.choices[0]?.finish_reason;
74
+ if (chunk.usage) {
75
+ output.usage = {
76
+ input: chunk.usage.prompt_tokens ?? 0,
77
+ output: chunk.usage.completion_tokens ?? 0,
78
+ cacheRead: 0,
79
+ cacheWrite: 0,
80
+ totalTokens: chunk.usage.total_tokens ?? 0,
81
+ };
82
+ }
83
+ // Handle tool calls
84
+ if (delta?.tool_calls && delta.tool_calls.length > 0) {
85
+ for (const tc of delta.tool_calls) {
86
+ const index = tc.index ?? 0;
87
+ if (!toolCallFragments[index]) {
88
+ toolCallFragments[index] = { id: tc.id ?? "", name: tc.function?.name ?? "", args: "" };
89
+ }
90
+ if (tc.function?.arguments) {
91
+ toolCallFragments[index].args += tc.function.arguments;
92
+ }
93
+ if (tc.id)
94
+ toolCallFragments[index].id = tc.id;
95
+ if (tc.function?.name)
96
+ toolCallFragments[index].name = tc.function.name;
97
+ }
98
+ }
99
+ // Handle content
100
+ if (delta?.content) {
101
+ const text = sanitizeSurrogates(delta.content);
102
+ stream.push({
103
+ type: "text_delta",
104
+ contentIndex: 0,
105
+ delta: text,
106
+ partial: output,
107
+ });
108
+ }
109
+ // Handle stop reason
110
+ if (finishReason) {
111
+ output.stopReason = finishReason === "tool_calls" ? "toolUse" : "stop";
112
+ }
113
+ }
114
+ // Assemble tool calls
115
+ const assembledToolCalls = Object.values(toolCallFragments).map((tc) => ({
116
+ type: "toolCall",
117
+ id: tc.id,
118
+ name: tc.name,
119
+ arguments: parseStreamingJson(tc.args),
120
+ }));
121
+ if (assembledToolCalls.length > 0) {
122
+ output.content = assembledToolCalls;
123
+ output.stopReason = "toolUse";
124
+ }
125
+ stream.push({ type: "done", reason: output.stopReason, message: output });
126
+ stream.end();
127
+ }
128
+ catch (err) {
129
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
130
+ output.errorMessage = err instanceof Error ? err.message : String(err);
131
+ stream.push({ type: "error", reason: output.stopReason, error: output });
132
+ stream.end();
133
+ }
134
+ };
135
+ run();
136
+ return stream;
137
+ },
138
+ };
139
+ }
140
+ function convertMessages(context) {
141
+ const messages = [];
142
+ if (context.systemPrompt) {
143
+ messages.push({ role: "system", content: context.systemPrompt });
144
+ }
145
+ for (const msg of context.messages) {
146
+ switch (msg.role) {
147
+ case "user":
148
+ messages.push({
149
+ role: "user",
150
+ content: typeof msg.content === "string" ? msg.content : msg.content.map((c) => {
151
+ if (c.type === "text")
152
+ return c.text;
153
+ return "";
154
+ }).join(""),
155
+ });
156
+ break;
157
+ case "assistant":
158
+ if (msg.content.some((c) => c.type === "toolCall")) {
159
+ messages.push({
160
+ role: "assistant",
161
+ content: null,
162
+ tool_calls: msg.content
163
+ .filter((c) => c.type === "toolCall")
164
+ .map((tc) => ({
165
+ id: tc.id,
166
+ type: "function",
167
+ function: {
168
+ name: tc.name,
169
+ arguments: JSON.stringify(tc.arguments),
170
+ },
171
+ })),
172
+ });
173
+ }
174
+ else {
175
+ messages.push({
176
+ role: "assistant",
177
+ content: msg.content.map((c) => {
178
+ if (c.type === "text")
179
+ return c.text;
180
+ return "";
181
+ }).join(""),
182
+ });
183
+ }
184
+ break;
185
+ case "toolResult":
186
+ messages.push({
187
+ role: "tool",
188
+ tool_call_id: msg.toolCallId,
189
+ content: typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content),
190
+ });
191
+ break;
192
+ }
193
+ }
194
+ return messages;
195
+ }
196
+ //# sourceMappingURL=groq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Context, Model, StreamOptions } from "../types.js";
2
+ import { AssistantMessageEventStream } from "../event-stream.js";
3
+ export interface OpenAICompletionsOptions extends StreamOptions {
4
+ toolChoice?: "auto" | "none" | "required" | {
5
+ type: "function";
6
+ function: {
7
+ name: string;
8
+ };
9
+ };
10
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
11
+ }
12
+ export declare function createOpenAICompletionsProvider(): {
13
+ name: string;
14
+ listModels: () => Promise<import("../models.js").ModelEntry[]>;
15
+ stream(model: Model, context: Context, options?: OpenAICompletionsOptions): AssistantMessageEventStream;
16
+ };
17
+ //# sourceMappingURL=openai-completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,OAAO,EACP,KAAK,EACL,aAAa,EAId,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAgBjE,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC7F,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACnE;AAED,wBAAgB,+BAA+B;;;kBAI7B,KAAK,WAAW,OAAO,YAAY,wBAAwB,GAAG,2BAA2B;EAgN1G"}