@a2anet/a2a-utils 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +350 -318
- package/dist/client/a2a-tools.d.ts +249 -147
- package/dist/client/a2a-tools.d.ts.map +1 -1
- package/dist/client/a2a-tools.js +292 -283
- package/dist/client/a2a-tools.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,12 +1,123 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
import { ArtifactSettings } from "../types.js";
|
|
3
3
|
import type { A2ASession } from "./a2a-session.js";
|
|
4
4
|
export declare const TEXT_MINIMIZED_TIP = "Text was minimized. Call view_text_artifact() to view specific line ranges.";
|
|
5
5
|
export declare const DATA_MINIMIZED_TIP = "Data was minimized. Call view_data_artifact() to navigate to specific data.";
|
|
6
|
+
declare const getAgentSchema: z.ZodObject<{
|
|
7
|
+
agentId: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
agentId: string;
|
|
10
|
+
}, {
|
|
11
|
+
agentId: string;
|
|
12
|
+
}>;
|
|
13
|
+
declare const sendMessageSchema: z.ZodObject<{
|
|
14
|
+
agentId: z.ZodString;
|
|
15
|
+
message: z.ZodString;
|
|
16
|
+
contextId: z.ZodOptional<z.ZodString>;
|
|
17
|
+
taskId: z.ZodOptional<z.ZodString>;
|
|
18
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
20
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
message: string;
|
|
23
|
+
agentId: string;
|
|
24
|
+
data?: unknown[] | undefined;
|
|
25
|
+
files?: string[] | undefined;
|
|
26
|
+
taskId?: string | undefined;
|
|
27
|
+
timeout?: number | undefined;
|
|
28
|
+
contextId?: string | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
message: string;
|
|
31
|
+
agentId: string;
|
|
32
|
+
data?: unknown[] | undefined;
|
|
33
|
+
files?: string[] | undefined;
|
|
34
|
+
taskId?: string | undefined;
|
|
35
|
+
timeout?: number | undefined;
|
|
36
|
+
contextId?: string | undefined;
|
|
37
|
+
}>;
|
|
38
|
+
declare const getTaskSchema: z.ZodObject<{
|
|
39
|
+
agentId: z.ZodString;
|
|
40
|
+
taskId: z.ZodString;
|
|
41
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
pollInterval: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
agentId: string;
|
|
45
|
+
taskId: string;
|
|
46
|
+
timeout?: number | undefined;
|
|
47
|
+
pollInterval?: number | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
agentId: string;
|
|
50
|
+
taskId: string;
|
|
51
|
+
timeout?: number | undefined;
|
|
52
|
+
pollInterval?: number | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
declare const viewTextArtifactSchema: z.ZodObject<{
|
|
55
|
+
agentId: z.ZodString;
|
|
56
|
+
taskId: z.ZodString;
|
|
57
|
+
artifactId: z.ZodString;
|
|
58
|
+
lineStart: z.ZodOptional<z.ZodNumber>;
|
|
59
|
+
lineEnd: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
characterStart: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
characterEnd: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
agentId: string;
|
|
64
|
+
taskId: string;
|
|
65
|
+
artifactId: string;
|
|
66
|
+
lineStart?: number | undefined;
|
|
67
|
+
lineEnd?: number | undefined;
|
|
68
|
+
characterStart?: number | undefined;
|
|
69
|
+
characterEnd?: number | undefined;
|
|
70
|
+
}, {
|
|
71
|
+
agentId: string;
|
|
72
|
+
taskId: string;
|
|
73
|
+
artifactId: string;
|
|
74
|
+
lineStart?: number | undefined;
|
|
75
|
+
lineEnd?: number | undefined;
|
|
76
|
+
characterStart?: number | undefined;
|
|
77
|
+
characterEnd?: number | undefined;
|
|
78
|
+
}>;
|
|
79
|
+
declare const viewDataArtifactSchema: z.ZodObject<{
|
|
80
|
+
agentId: z.ZodString;
|
|
81
|
+
taskId: z.ZodString;
|
|
82
|
+
artifactId: z.ZodString;
|
|
83
|
+
jsonPath: z.ZodOptional<z.ZodString>;
|
|
84
|
+
rows: z.ZodOptional<z.ZodString>;
|
|
85
|
+
columns: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
agentId: string;
|
|
88
|
+
taskId: string;
|
|
89
|
+
artifactId: string;
|
|
90
|
+
jsonPath?: string | undefined;
|
|
91
|
+
rows?: string | undefined;
|
|
92
|
+
columns?: string | undefined;
|
|
93
|
+
}, {
|
|
94
|
+
agentId: string;
|
|
95
|
+
taskId: string;
|
|
96
|
+
artifactId: string;
|
|
97
|
+
jsonPath?: string | undefined;
|
|
98
|
+
rows?: string | undefined;
|
|
99
|
+
columns?: string | undefined;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* A tool definition with name, description, Zod schema, and execute function.
|
|
103
|
+
*
|
|
104
|
+
* Individual tool properties on `A2ATools` are more specifically typed via
|
|
105
|
+
* inference. This interface is used for the `toolDefinitions` array where
|
|
106
|
+
* the concrete schema type is erased.
|
|
107
|
+
*/
|
|
108
|
+
export interface A2AToolDefinition {
|
|
109
|
+
readonly name: string;
|
|
110
|
+
readonly description: string;
|
|
111
|
+
readonly schema: z.ZodObject<z.ZodRawShape>;
|
|
112
|
+
readonly execute: (params: any) => Promise<Record<string, unknown>>;
|
|
113
|
+
}
|
|
6
114
|
/**
|
|
7
115
|
* LLM-friendly tools that can be used out-of-the-box with agent frameworks.
|
|
8
116
|
*
|
|
9
|
-
* Each
|
|
117
|
+
* Each tool has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
|
|
118
|
+
*
|
|
119
|
+
* Each tool is an instance property with `name`, `description`, `schema` (Zod),
|
|
120
|
+
* and `execute`. Use the `toolDefinitions` getter for the full array.
|
|
10
121
|
*/
|
|
11
122
|
export declare class A2ATools {
|
|
12
123
|
private readonly session;
|
|
@@ -14,157 +125,148 @@ export declare class A2ATools {
|
|
|
14
125
|
constructor(session: A2ASession, opts?: {
|
|
15
126
|
artifactSettings?: ArtifactSettings | null;
|
|
16
127
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
timeout
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
readonly getAgents: {
|
|
129
|
+
name: string;
|
|
130
|
+
description: string;
|
|
131
|
+
schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
132
|
+
execute: () => Promise<Record<string, Record<string, unknown>> | {
|
|
133
|
+
error: boolean;
|
|
134
|
+
error_message: string;
|
|
135
|
+
}>;
|
|
136
|
+
};
|
|
137
|
+
readonly getAgent: {
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
schema: z.ZodObject<{
|
|
141
|
+
agentId: z.ZodString;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
agentId: string;
|
|
144
|
+
}, {
|
|
145
|
+
agentId: string;
|
|
146
|
+
}>;
|
|
147
|
+
execute: ({ agentId }: z.infer<typeof getAgentSchema>) => Promise<Record<string, unknown>>;
|
|
148
|
+
};
|
|
149
|
+
readonly sendMessage: {
|
|
150
|
+
name: string;
|
|
151
|
+
description: string;
|
|
152
|
+
schema: z.ZodObject<{
|
|
153
|
+
agentId: z.ZodString;
|
|
154
|
+
message: z.ZodString;
|
|
155
|
+
contextId: z.ZodOptional<z.ZodString>;
|
|
156
|
+
taskId: z.ZodOptional<z.ZodString>;
|
|
157
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
158
|
+
data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
159
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
160
|
+
}, "strip", z.ZodTypeAny, {
|
|
161
|
+
message: string;
|
|
162
|
+
agentId: string;
|
|
163
|
+
data?: unknown[] | undefined;
|
|
164
|
+
files?: string[] | undefined;
|
|
165
|
+
taskId?: string | undefined;
|
|
166
|
+
timeout?: number | undefined;
|
|
167
|
+
contextId?: string | undefined;
|
|
168
|
+
}, {
|
|
169
|
+
message: string;
|
|
170
|
+
agentId: string;
|
|
171
|
+
data?: unknown[] | undefined;
|
|
172
|
+
files?: string[] | undefined;
|
|
173
|
+
taskId?: string | undefined;
|
|
174
|
+
timeout?: number | undefined;
|
|
175
|
+
contextId?: string | undefined;
|
|
176
|
+
}>;
|
|
177
|
+
execute: ({ agentId, message, contextId, taskId, timeout, data, files, }: z.infer<typeof sendMessageSchema>) => Promise<Record<string, unknown>>;
|
|
178
|
+
};
|
|
179
|
+
readonly getTask: {
|
|
180
|
+
name: string;
|
|
181
|
+
description: string;
|
|
182
|
+
schema: z.ZodObject<{
|
|
183
|
+
agentId: z.ZodString;
|
|
184
|
+
taskId: z.ZodString;
|
|
185
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
186
|
+
pollInterval: z.ZodOptional<z.ZodNumber>;
|
|
187
|
+
}, "strip", z.ZodTypeAny, {
|
|
188
|
+
agentId: string;
|
|
189
|
+
taskId: string;
|
|
190
|
+
timeout?: number | undefined;
|
|
191
|
+
pollInterval?: number | undefined;
|
|
192
|
+
}, {
|
|
193
|
+
agentId: string;
|
|
194
|
+
taskId: string;
|
|
195
|
+
timeout?: number | undefined;
|
|
196
|
+
pollInterval?: number | undefined;
|
|
197
|
+
}>;
|
|
198
|
+
execute: ({ agentId, taskId, timeout, pollInterval, }: z.infer<typeof getTaskSchema>) => Promise<Record<string, unknown>>;
|
|
199
|
+
};
|
|
200
|
+
readonly viewTextArtifact: {
|
|
201
|
+
name: string;
|
|
202
|
+
description: string;
|
|
203
|
+
schema: z.ZodObject<{
|
|
204
|
+
agentId: z.ZodString;
|
|
205
|
+
taskId: z.ZodString;
|
|
206
|
+
artifactId: z.ZodString;
|
|
207
|
+
lineStart: z.ZodOptional<z.ZodNumber>;
|
|
208
|
+
lineEnd: z.ZodOptional<z.ZodNumber>;
|
|
209
|
+
characterStart: z.ZodOptional<z.ZodNumber>;
|
|
210
|
+
characterEnd: z.ZodOptional<z.ZodNumber>;
|
|
211
|
+
}, "strip", z.ZodTypeAny, {
|
|
212
|
+
agentId: string;
|
|
213
|
+
taskId: string;
|
|
214
|
+
artifactId: string;
|
|
215
|
+
lineStart?: number | undefined;
|
|
216
|
+
lineEnd?: number | undefined;
|
|
217
|
+
characterStart?: number | undefined;
|
|
218
|
+
characterEnd?: number | undefined;
|
|
219
|
+
}, {
|
|
220
|
+
agentId: string;
|
|
221
|
+
taskId: string;
|
|
222
|
+
artifactId: string;
|
|
223
|
+
lineStart?: number | undefined;
|
|
224
|
+
lineEnd?: number | undefined;
|
|
225
|
+
characterStart?: number | undefined;
|
|
226
|
+
characterEnd?: number | undefined;
|
|
227
|
+
}>;
|
|
228
|
+
execute: ({ agentId, taskId, artifactId, lineStart, lineEnd, characterStart, characterEnd, }: z.infer<typeof viewTextArtifactSchema>) => Promise<Record<string, unknown>>;
|
|
229
|
+
};
|
|
230
|
+
readonly viewDataArtifact: {
|
|
231
|
+
name: string;
|
|
232
|
+
description: string;
|
|
233
|
+
schema: z.ZodObject<{
|
|
234
|
+
agentId: z.ZodString;
|
|
235
|
+
taskId: z.ZodString;
|
|
236
|
+
artifactId: z.ZodString;
|
|
237
|
+
jsonPath: z.ZodOptional<z.ZodString>;
|
|
238
|
+
rows: z.ZodOptional<z.ZodString>;
|
|
239
|
+
columns: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, "strip", z.ZodTypeAny, {
|
|
241
|
+
agentId: string;
|
|
242
|
+
taskId: string;
|
|
243
|
+
artifactId: string;
|
|
244
|
+
jsonPath?: string | undefined;
|
|
245
|
+
rows?: string | undefined;
|
|
246
|
+
columns?: string | undefined;
|
|
247
|
+
}, {
|
|
248
|
+
agentId: string;
|
|
249
|
+
taskId: string;
|
|
250
|
+
artifactId: string;
|
|
251
|
+
jsonPath?: string | undefined;
|
|
252
|
+
rows?: string | undefined;
|
|
253
|
+
columns?: string | undefined;
|
|
254
|
+
}>;
|
|
255
|
+
execute: ({ agentId, taskId, artifactId, jsonPath, rows, columns, }: z.infer<typeof viewDataArtifactSchema>) => Promise<Record<string, unknown>>;
|
|
256
|
+
};
|
|
257
|
+
/** All tool definitions as an array. */
|
|
258
|
+
get toolDefinitions(): A2AToolDefinition[];
|
|
259
|
+
/** Convert an A2A Message to MessageForLLM. */
|
|
123
260
|
private buildMessageForLlm;
|
|
124
261
|
/** Convert a Task to TaskForLLM with artifact minimization and file path queries. */
|
|
125
262
|
private buildTaskForLlm;
|
|
126
|
-
/**
|
|
127
|
-
* Look up an artifact through the resolution chain.
|
|
128
|
-
*
|
|
129
|
-
* 1. Check the task store (local cache)
|
|
130
|
-
* 2. Fetch fresh via session.getTask (remote retrieval)
|
|
131
|
-
*
|
|
132
|
-
* @returns The Artifact.
|
|
133
|
-
*
|
|
134
|
-
* @throws Error if artifact cannot be found.
|
|
135
|
-
*/
|
|
263
|
+
/** Look up an artifact through the resolution chain. */
|
|
136
264
|
private getArtifact;
|
|
137
|
-
/**
|
|
138
|
-
* Extract text content from artifact parts.
|
|
139
|
-
*
|
|
140
|
-
* @throws Error if artifact does not contain text content.
|
|
141
|
-
*/
|
|
142
265
|
private static extractText;
|
|
143
|
-
/**
|
|
144
|
-
* Extract data content from artifact parts.
|
|
145
|
-
*
|
|
146
|
-
* @throws Error if artifact does not contain data content.
|
|
147
|
-
*/
|
|
148
266
|
private static extractData;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
*
|
|
152
|
-
* Accepts: "0" (single int), "0-10" (range string), "0,2,5" (comma-separated
|
|
153
|
-
* list of ints), "all" (passthrough string), or null.
|
|
154
|
-
*/
|
|
155
|
-
private static parseRows;
|
|
156
|
-
/**
|
|
157
|
-
* Parse a columns string into the type expected by DataArtifacts.view.
|
|
158
|
-
*
|
|
159
|
-
* Accepts: "name" (single column), "name,age" (comma-separated list),
|
|
160
|
-
* "all" (passthrough string), or null.
|
|
161
|
-
*/
|
|
162
|
-
private static parseColumns;
|
|
163
|
-
/**
|
|
164
|
-
* Build a FilePartForLLM from a file Part.
|
|
165
|
-
*
|
|
166
|
-
* Used by both message and artifact file handling.
|
|
167
|
-
*/
|
|
267
|
+
static parseRows(rows: string | null): number | number[] | string | null;
|
|
268
|
+
static parseColumns(columns: string | null): string | string[] | null;
|
|
168
269
|
private static buildFilePartForLlm;
|
|
169
270
|
}
|
|
271
|
+
export {};
|
|
170
272
|
//# sourceMappingURL=a2a-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAClF,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAMlF,QAAA,MAAM,cAAc;;;;;;EAElB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EA2BrB,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAa1B,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAsB1B,CAAC;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE;IAOtF,QAAQ,CAAC,SAAS;;;;;;;;MA0BhB;IAEF,QAAQ,CAAC,QAAQ;;;;;;;;;;+BAQgB,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC;MAe7D;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAoBb,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;MAmCtC;IAEF,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;+DAcT,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC;MA2BlC;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAmC3C;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;6EAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAqC3C;IAEF,wCAAwC;IACxC,IAAI,eAAe,IAAI,iBAAiB,EAAE,CASzC;IAID,+CAA+C;YACjC,kBAAkB;IA0ChC,qFAAqF;YACvE,eAAe;IA0C7B,wDAAwD;YAC1C,WAAW;IA4BzB,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI;IAwCxE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAkBrE,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAiDrC"}
|