@agentgov/sdk 0.1.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.
@@ -0,0 +1,351 @@
1
+ import { estimateCost } from '../utils/timing.js';
2
+ /**
3
+ * Wrap OpenAI client to automatically trace all calls
4
+ */
5
+ export function wrapOpenAI(client, fetchClient, getContext, options = {}) {
6
+ const { traceNamePrefix = 'openai', autoTrace = true, captureInput = true, captureOutput = true, traceToolCalls = true, debug = false } = options;
7
+ // Create a proxy that intercepts method calls
8
+ return new Proxy(client, {
9
+ get(target, prop) {
10
+ const value = target[prop];
11
+ // Wrap chat.completions
12
+ if (prop === 'chat') {
13
+ return new Proxy(target.chat, {
14
+ get(chatTarget, chatProp) {
15
+ if (chatProp === 'completions') {
16
+ return new Proxy(chatTarget.completions, {
17
+ get(completionsTarget, completionsProp) {
18
+ if (completionsProp === 'create') {
19
+ return wrapChatCompletions(completionsTarget.create.bind(completionsTarget), fetchClient, getContext, { traceNamePrefix, autoTrace, captureInput, captureOutput, traceToolCalls, debug });
20
+ }
21
+ return completionsTarget[completionsProp];
22
+ }
23
+ });
24
+ }
25
+ return chatTarget[chatProp];
26
+ }
27
+ });
28
+ }
29
+ // Wrap embeddings (if exists)
30
+ if (prop === 'embeddings' && target.embeddings) {
31
+ return new Proxy(target.embeddings, {
32
+ get(embeddingsTarget, embeddingsProp) {
33
+ if (embeddingsProp === 'create') {
34
+ return wrapEmbeddings(embeddingsTarget.create.bind(embeddingsTarget), fetchClient, getContext, { traceNamePrefix, autoTrace, captureInput, captureOutput, debug });
35
+ }
36
+ return embeddingsTarget[embeddingsProp];
37
+ }
38
+ });
39
+ }
40
+ return value;
41
+ }
42
+ });
43
+ }
44
+ function wrapChatCompletions(originalFn, fetchClient, getContext, options) {
45
+ return async (params) => {
46
+ const model = params.model || 'unknown';
47
+ const isStreaming = params.stream === true;
48
+ const context = getContext();
49
+ // Create trace if needed
50
+ let traceId = context?.traceId;
51
+ let createdTrace = false;
52
+ if (!traceId && options.autoTrace) {
53
+ const trace = await fetchClient.createTrace({
54
+ name: `${options.traceNamePrefix}.chat.completions`,
55
+ input: options.captureInput ? { messages: params.messages } : undefined,
56
+ metadata: { model, streaming: isStreaming }
57
+ });
58
+ traceId = trace.id;
59
+ createdTrace = true;
60
+ }
61
+ // Create span
62
+ let spanId;
63
+ if (traceId) {
64
+ const span = await fetchClient.createSpan({
65
+ traceId,
66
+ parentId: context?.spanId,
67
+ name: 'chat.completions.create',
68
+ type: 'LLM_CALL',
69
+ model,
70
+ input: options.captureInput ? params : undefined
71
+ });
72
+ spanId = span.id;
73
+ }
74
+ try {
75
+ // Call original function
76
+ const response = await originalFn(params);
77
+ // Handle streaming response
78
+ if (isStreaming && isAsyncIterable(response)) {
79
+ return wrapStreamingResponse(response, fetchClient, { traceId, spanId, createdTrace, model, options });
80
+ }
81
+ // Handle non-streaming response
82
+ const completion = response;
83
+ // Create tool call spans if enabled
84
+ if (options.traceToolCalls && spanId && traceId) {
85
+ await createToolCallSpans(completion, fetchClient, traceId, spanId, options.debug);
86
+ }
87
+ // Update span with results
88
+ if (spanId) {
89
+ const usage = completion.usage;
90
+ const promptTokens = usage?.prompt_tokens || 0;
91
+ const outputTokens = usage?.completion_tokens || 0;
92
+ await fetchClient.updateSpan(spanId, {
93
+ status: 'COMPLETED',
94
+ output: options.captureOutput ? {
95
+ id: completion.id,
96
+ model: completion.model,
97
+ choices: completion.choices,
98
+ usage: completion.usage
99
+ } : undefined,
100
+ promptTokens,
101
+ outputTokens,
102
+ cost: estimateCost(model, promptTokens, outputTokens)
103
+ });
104
+ }
105
+ // Complete trace if we created it
106
+ if (createdTrace && traceId) {
107
+ await fetchClient.updateTrace(traceId, {
108
+ status: 'COMPLETED',
109
+ output: options.captureOutput ? {
110
+ content: completion.choices[0]?.message?.content
111
+ } : undefined
112
+ });
113
+ }
114
+ return completion;
115
+ }
116
+ catch (error) {
117
+ // Update span with error
118
+ if (spanId) {
119
+ await fetchClient.updateSpan(spanId, {
120
+ status: 'FAILED',
121
+ error: error instanceof Error ? error.message : String(error)
122
+ });
123
+ }
124
+ // Fail trace if we created it
125
+ if (createdTrace && traceId) {
126
+ await fetchClient.updateTrace(traceId, { status: 'FAILED' });
127
+ }
128
+ throw error;
129
+ }
130
+ };
131
+ }
132
+ /**
133
+ * Wrap streaming response to track completion
134
+ * Note: Returns AsyncIterable, not the full OpenAI Stream type
135
+ */
136
+ function wrapStreamingResponse(stream, fetchClient, ctx) {
137
+ const { traceId, spanId, createdTrace, model, options } = ctx;
138
+ // Accumulator for streaming data
139
+ let fullContent = '';
140
+ let promptTokens = 0;
141
+ let outputTokens = 0;
142
+ const toolCalls = new Map();
143
+ async function* wrappedStream() {
144
+ try {
145
+ for await (const chunk of stream) {
146
+ // Accumulate content
147
+ const delta = chunk.choices[0]?.delta;
148
+ if (delta?.content) {
149
+ fullContent += delta.content;
150
+ }
151
+ // Accumulate tool calls
152
+ if (delta?.tool_calls) {
153
+ for (const tc of delta.tool_calls) {
154
+ const existing = toolCalls.get(tc.index) || { id: '', type: '', name: '', arguments: '' };
155
+ if (tc.id)
156
+ existing.id = tc.id;
157
+ if (tc.type)
158
+ existing.type = tc.type;
159
+ if (tc.function?.name)
160
+ existing.name = tc.function.name;
161
+ if (tc.function?.arguments)
162
+ existing.arguments += tc.function.arguments;
163
+ toolCalls.set(tc.index, existing);
164
+ }
165
+ }
166
+ // Get usage from final chunk
167
+ if (chunk.usage) {
168
+ promptTokens = chunk.usage.prompt_tokens;
169
+ outputTokens = chunk.usage.completion_tokens;
170
+ }
171
+ yield chunk;
172
+ }
173
+ // Stream completed - create tool call spans
174
+ if (options.traceToolCalls && spanId && traceId && toolCalls.size > 0) {
175
+ for (const [, tc] of toolCalls) {
176
+ await fetchClient.createSpan({
177
+ traceId,
178
+ parentId: spanId,
179
+ name: tc.name,
180
+ type: 'TOOL_CALL',
181
+ toolName: tc.name,
182
+ toolInput: parseJSON(tc.arguments),
183
+ metadata: { toolCallId: tc.id }
184
+ }).then(span => {
185
+ // Mark as completed immediately (tool not executed by us)
186
+ return fetchClient.updateSpan(span.id, { status: 'COMPLETED' });
187
+ }).catch((error) => {
188
+ if (options.debug) {
189
+ console.warn('[AgentGov] Failed to record tool call span:', error);
190
+ }
191
+ });
192
+ }
193
+ }
194
+ // Update span with final results
195
+ if (spanId) {
196
+ await fetchClient.updateSpan(spanId, {
197
+ status: 'COMPLETED',
198
+ output: options.captureOutput ? {
199
+ content: fullContent,
200
+ toolCalls: toolCalls.size > 0 ? Array.from(toolCalls.values()) : undefined
201
+ } : undefined,
202
+ promptTokens,
203
+ outputTokens,
204
+ cost: estimateCost(model, promptTokens, outputTokens)
205
+ });
206
+ }
207
+ // Complete trace if we created it
208
+ if (createdTrace && traceId) {
209
+ await fetchClient.updateTrace(traceId, {
210
+ status: 'COMPLETED',
211
+ output: options.captureOutput ? { content: fullContent } : undefined
212
+ });
213
+ }
214
+ }
215
+ catch (error) {
216
+ // Update span with error
217
+ if (spanId) {
218
+ await fetchClient.updateSpan(spanId, {
219
+ status: 'FAILED',
220
+ error: error instanceof Error ? error.message : String(error)
221
+ }).catch((e) => {
222
+ if (options.debug) {
223
+ console.warn('[AgentGov] Failed to update span on error:', e);
224
+ }
225
+ });
226
+ }
227
+ // Fail trace if we created it
228
+ if (createdTrace && traceId) {
229
+ await fetchClient.updateTrace(traceId, { status: 'FAILED' }).catch((e) => {
230
+ if (options.debug) {
231
+ console.warn('[AgentGov] Failed to update trace on error:', e);
232
+ }
233
+ });
234
+ }
235
+ throw error;
236
+ }
237
+ }
238
+ return wrappedStream();
239
+ }
240
+ /**
241
+ * Type guard for function tool calls
242
+ */
243
+ function isFunctionToolCall(tc) {
244
+ return tc.type === 'function' && 'function' in tc;
245
+ }
246
+ /**
247
+ * Create spans for tool calls in non-streaming response
248
+ */
249
+ async function createToolCallSpans(completion, fetchClient, traceId, parentSpanId, debug) {
250
+ const toolCalls = completion.choices[0]?.message?.tool_calls;
251
+ if (!toolCalls?.length)
252
+ return;
253
+ for (const tc of toolCalls) {
254
+ // Only handle function tool calls
255
+ if (!isFunctionToolCall(tc))
256
+ continue;
257
+ try {
258
+ const span = await fetchClient.createSpan({
259
+ traceId,
260
+ parentId: parentSpanId,
261
+ name: tc.function.name,
262
+ type: 'TOOL_CALL',
263
+ toolName: tc.function.name,
264
+ toolInput: parseJSON(tc.function.arguments),
265
+ metadata: { toolCallId: tc.id }
266
+ });
267
+ // Mark as completed immediately
268
+ await fetchClient.updateSpan(span.id, { status: 'COMPLETED' });
269
+ }
270
+ catch (error) {
271
+ if (debug) {
272
+ console.warn('[AgentGov] Failed to record tool call span:', error);
273
+ }
274
+ }
275
+ }
276
+ }
277
+ function wrapEmbeddings(originalFn, fetchClient, getContext, options) {
278
+ return async (params) => {
279
+ const model = params.model || 'text-embedding-ada-002';
280
+ const context = getContext();
281
+ let traceId = context?.traceId;
282
+ let createdTrace = false;
283
+ if (!traceId && options.autoTrace) {
284
+ const trace = await fetchClient.createTrace({
285
+ name: `${options.traceNamePrefix}.embeddings`,
286
+ metadata: { model }
287
+ });
288
+ traceId = trace.id;
289
+ createdTrace = true;
290
+ }
291
+ let spanId;
292
+ if (traceId) {
293
+ const span = await fetchClient.createSpan({
294
+ traceId,
295
+ parentId: context?.spanId,
296
+ name: 'embeddings.create',
297
+ type: 'EMBEDDING',
298
+ model,
299
+ input: options.captureInput ? {
300
+ model,
301
+ inputLength: Array.isArray(params.input)
302
+ ? params.input.length
303
+ : String(params.input).length
304
+ } : undefined
305
+ });
306
+ spanId = span.id;
307
+ }
308
+ try {
309
+ const response = await originalFn(params);
310
+ if (spanId) {
311
+ const usage = response.usage;
312
+ await fetchClient.updateSpan(spanId, {
313
+ status: 'COMPLETED',
314
+ output: { embeddingsCount: response.data.length },
315
+ promptTokens: usage?.prompt_tokens || 0,
316
+ outputTokens: 0,
317
+ cost: estimateCost(model, usage?.prompt_tokens || 0, 0)
318
+ });
319
+ }
320
+ if (createdTrace && traceId) {
321
+ await fetchClient.updateTrace(traceId, { status: 'COMPLETED' });
322
+ }
323
+ return response;
324
+ }
325
+ catch (error) {
326
+ if (spanId) {
327
+ await fetchClient.updateSpan(spanId, {
328
+ status: 'FAILED',
329
+ error: error instanceof Error ? error.message : String(error)
330
+ });
331
+ }
332
+ if (createdTrace && traceId) {
333
+ await fetchClient.updateTrace(traceId, { status: 'FAILED' });
334
+ }
335
+ throw error;
336
+ }
337
+ };
338
+ }
339
+ // Helpers
340
+ function isAsyncIterable(obj) {
341
+ return obj != null && typeof obj === 'object' && Symbol.asyncIterator in obj;
342
+ }
343
+ function parseJSON(str) {
344
+ try {
345
+ return JSON.parse(str);
346
+ }
347
+ catch {
348
+ return { raw: str };
349
+ }
350
+ }
351
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/wrappers/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { FetchClient } from '../utils/fetch.js';
2
+ import type { TraceContext } from '../types.js';
3
+ export interface VercelAIUsage {
4
+ promptTokens: number;
5
+ completionTokens: number;
6
+ totalTokens: number;
7
+ }
8
+ export interface VercelAIToolCall {
9
+ toolCallId: string;
10
+ toolName: string;
11
+ args: Record<string, unknown>;
12
+ }
13
+ export interface VercelAIToolResult {
14
+ toolCallId: string;
15
+ toolName: string;
16
+ args: Record<string, unknown>;
17
+ result: unknown;
18
+ }
19
+ export interface GenerateTextResult {
20
+ text: string;
21
+ usage: VercelAIUsage;
22
+ finishReason: string;
23
+ toolCalls?: VercelAIToolCall[];
24
+ toolResults?: VercelAIToolResult[];
25
+ response?: {
26
+ id?: string;
27
+ model?: string;
28
+ };
29
+ }
30
+ export interface StreamTextResult {
31
+ textStream: AsyncIterable<string>;
32
+ fullStream: AsyncIterable<StreamPart>;
33
+ text: Promise<string>;
34
+ usage: Promise<VercelAIUsage>;
35
+ finishReason: Promise<string>;
36
+ toolCalls: Promise<VercelAIToolCall[]>;
37
+ toolResults: Promise<VercelAIToolResult[]>;
38
+ }
39
+ export interface StreamPart {
40
+ type: string;
41
+ value?: unknown;
42
+ textDelta?: string;
43
+ toolCallId?: string;
44
+ toolName?: string;
45
+ args?: Record<string, unknown>;
46
+ result?: unknown;
47
+ }
48
+ export interface GenerateObjectResult<T = unknown> {
49
+ object: T;
50
+ usage: VercelAIUsage;
51
+ finishReason: string;
52
+ }
53
+ export interface EmbedResult {
54
+ embedding: number[];
55
+ usage: {
56
+ tokens: number;
57
+ };
58
+ }
59
+ export interface EmbedManyResult {
60
+ embeddings: number[][];
61
+ usage: {
62
+ tokens: number;
63
+ };
64
+ }
65
+ export interface WrapVercelAIOptions {
66
+ /** Custom trace name prefix */
67
+ traceNamePrefix?: string;
68
+ /** Auto-create trace for each call (default: true) */
69
+ autoTrace?: boolean;
70
+ /** Include full prompts in trace (default: true) */
71
+ captureInput?: boolean;
72
+ /** Include full responses in trace (default: true) */
73
+ captureOutput?: boolean;
74
+ /** Create separate spans for tool calls (default: true) */
75
+ traceToolCalls?: boolean;
76
+ /** Enable debug logging for span errors (default: false) */
77
+ debug?: boolean;
78
+ }
79
+ type AsyncFunction<TArgs, TResult> = (args: TArgs) => Promise<TResult>;
80
+ /**
81
+ * Wrap Vercel AI SDK's generateText function
82
+ */
83
+ export declare function wrapGenerateText<TArgs extends Record<string, unknown>, TResult extends GenerateTextResult>(originalFn: AsyncFunction<TArgs, TResult>, fetchClient: FetchClient, getContext: () => TraceContext | null, options?: WrapVercelAIOptions): AsyncFunction<TArgs, TResult>;
84
+ /**
85
+ * Wrap Vercel AI SDK's streamText function
86
+ */
87
+ export declare function wrapStreamText<TArgs extends Record<string, unknown>, TResult extends StreamTextResult>(originalFn: AsyncFunction<TArgs, TResult>, fetchClient: FetchClient, getContext: () => TraceContext | null, options?: WrapVercelAIOptions): AsyncFunction<TArgs, TResult>;
88
+ /**
89
+ * Wrap Vercel AI SDK's generateObject function
90
+ */
91
+ export declare function wrapGenerateObject<TArgs extends Record<string, unknown>, TResult extends GenerateObjectResult<unknown>>(originalFn: AsyncFunction<TArgs, TResult>, fetchClient: FetchClient, getContext: () => TraceContext | null, options?: WrapVercelAIOptions): AsyncFunction<TArgs, TResult>;
92
+ /**
93
+ * Wrap Vercel AI SDK's embed function
94
+ */
95
+ export declare function wrapEmbed<TArgs extends Record<string, unknown>, TResult extends EmbedResult>(originalFn: AsyncFunction<TArgs, TResult>, fetchClient: FetchClient, getContext: () => TraceContext | null, options?: WrapVercelAIOptions): AsyncFunction<TArgs, TResult>;
96
+ /**
97
+ * Wrap Vercel AI SDK's embedMany function
98
+ */
99
+ export declare function wrapEmbedMany<TArgs extends Record<string, unknown>, TResult extends EmbedManyResult>(originalFn: AsyncFunction<TArgs, TResult>, fetchClient: FetchClient, getContext: () => TraceContext | null, options?: WrapVercelAIOptions): AsyncFunction<TArgs, TResult>;
100
+ export {};
101
+ //# sourceMappingURL=vercel-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/wrappers/vercel-ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,aAAa,CAAA;AAOzD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,aAAa,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC9B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAClC,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACjC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACrB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,SAAS,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACtC,WAAW,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C,MAAM,EAAE,CAAC,CAAA;IACT,KAAK,EAAE,aAAa,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,EAAE,EAAE,CAAA;IACtB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1B;AAYD,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,KAAK,aAAa,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAMtE;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,SAAS,kBAAkB,EAElC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CA8F/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,SAAS,gBAAgB,EAEhC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAkF/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAE7C,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CA8E/B;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,SAAS,WAAW,EAE3B,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAqE/B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,SAAS,eAAe,EAE/B,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,OAAO,GAAE,mBAAwB,GAChC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAsE/B"}