dsh-a2a-server 0.1.1 → 0.3.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 (86) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/CHANGELOG.zh-CN.md +28 -0
  3. package/README.md +151 -54
  4. package/README.zh-CN.md +113 -53
  5. package/cordis.patch.yml +10 -6
  6. package/lib/briefing.d.ts +39 -0
  7. package/lib/briefing.d.ts.map +1 -0
  8. package/lib/briefing.js +108 -0
  9. package/lib/briefing.js.map +1 -0
  10. package/lib/config.d.ts +69 -22
  11. package/lib/config.d.ts.map +1 -1
  12. package/lib/config.js +76 -6
  13. package/lib/config.js.map +1 -1
  14. package/lib/contexts.d.ts +9 -4
  15. package/lib/contexts.d.ts.map +1 -1
  16. package/lib/contexts.js +7 -13
  17. package/lib/contexts.js.map +1 -1
  18. package/lib/index.d.ts +1 -26
  19. package/lib/index.d.ts.map +1 -1
  20. package/lib/index.js +420 -408
  21. package/lib/index.js.map +1 -1
  22. package/lib/management.d.ts +5 -0
  23. package/lib/management.d.ts.map +1 -0
  24. package/lib/management.js +74 -0
  25. package/lib/management.js.map +1 -0
  26. package/lib/projection.d.ts +67 -22
  27. package/lib/projection.d.ts.map +1 -1
  28. package/lib/projection.js +30 -11
  29. package/lib/projection.js.map +1 -1
  30. package/lib/protocol/card.d.ts +25 -7
  31. package/lib/protocol/card.d.ts.map +1 -1
  32. package/lib/protocol/card.js +35 -14
  33. package/lib/protocol/card.js.map +1 -1
  34. package/lib/protocol/index.d.ts +10 -10
  35. package/lib/protocol/index.d.ts.map +1 -1
  36. package/lib/protocol/index.js +8 -8
  37. package/lib/protocol/index.js.map +1 -1
  38. package/lib/protocol/jsonrpc.d.ts +54 -6
  39. package/lib/protocol/jsonrpc.d.ts.map +1 -1
  40. package/lib/protocol/jsonrpc.js +70 -8
  41. package/lib/protocol/jsonrpc.js.map +1 -1
  42. package/lib/protocol/parse.d.ts +79 -0
  43. package/lib/protocol/parse.d.ts.map +1 -0
  44. package/lib/protocol/parse.js +249 -0
  45. package/lib/protocol/parse.js.map +1 -0
  46. package/lib/protocol/sse.d.ts +6 -3
  47. package/lib/protocol/sse.d.ts.map +1 -1
  48. package/lib/protocol/sse.js +4 -2
  49. package/lib/protocol/sse.js.map +1 -1
  50. package/lib/protocol/wire.d.ts +165 -54
  51. package/lib/protocol/wire.d.ts.map +1 -1
  52. package/lib/protocol/wire.js +54 -9
  53. package/lib/protocol/wire.js.map +1 -1
  54. package/lib/router.d.ts +55 -1
  55. package/lib/router.d.ts.map +1 -1
  56. package/lib/router.js +419 -137
  57. package/lib/router.js.map +1 -1
  58. package/lib/security.d.ts +37 -3
  59. package/lib/security.d.ts.map +1 -1
  60. package/lib/security.js +48 -4
  61. package/lib/security.js.map +1 -1
  62. package/lib/state.d.ts +37 -0
  63. package/lib/state.d.ts.map +1 -0
  64. package/lib/state.js +146 -0
  65. package/lib/state.js.map +1 -0
  66. package/lib/tasks.d.ts +4 -0
  67. package/lib/tasks.d.ts.map +1 -1
  68. package/lib/tasks.js +23 -5
  69. package/lib/tasks.js.map +1 -1
  70. package/lib/types.d.ts +12 -3
  71. package/lib/types.d.ts.map +1 -1
  72. package/lib/types.js +1 -1
  73. package/lib/types.js.map +1 -1
  74. package/lib/version.d.ts +20 -0
  75. package/lib/version.d.ts.map +1 -0
  76. package/lib/version.js +20 -0
  77. package/lib/version.js.map +1 -0
  78. package/lib/workspace-read.d.ts +9 -0
  79. package/lib/workspace-read.d.ts.map +1 -0
  80. package/lib/workspace-read.js +152 -0
  81. package/lib/workspace-read.js.map +1 -0
  82. package/package.json +39 -30
  83. package/lib/protocol/normalize.d.ts +0 -72
  84. package/lib/protocol/normalize.d.ts.map +0 -1
  85. package/lib/protocol/normalize.js +0 -278
  86. package/lib/protocol/normalize.js.map +0 -1
@@ -1,278 +0,0 @@
1
- /**
2
- * Dialect normalization between A2A v0.3.0 and v1.0.
3
- *
4
- * Inbound is permissive, outbound is strict: a request in either spelling is
5
- * parsed into the internal v0.3 shape, and the response is rendered back in the
6
- * dialect that request declared. Nothing mixes the two spellings in one reply.
7
- *
8
- * @module dsh-a2a/protocol/normalize
9
- */
10
- import { A2AContextId, A2ATaskId } from "./brand.js";
11
- /**
12
- * Every method spelling this server answers.
13
- *
14
- * v0.3 is the mainline; the v1.0 PascalCase names are accepted so a peer built
15
- * against the newer spec interoperates without a shim on its side.
16
- */
17
- const METHODS = new Map([
18
- // — v0.3.0 mainline —
19
- ['message/send', { operation: 'send', dialect: 'v0.3' }],
20
- ['message/stream', { operation: 'stream', dialect: 'v0.3' }],
21
- ['tasks/get', { operation: 'get', dialect: 'v0.3' }],
22
- ['tasks/cancel', { operation: 'cancel', dialect: 'v0.3' }],
23
- ['tasks/resubscribe', { operation: 'resubscribe', dialect: 'v0.3' }],
24
- ['tasks/pushNotificationConfig/set', { operation: 'push_set', dialect: 'v0.3' }],
25
- ['tasks/pushNotificationConfig/get', { operation: 'push_get', dialect: 'v0.3' }],
26
- ['tasks/pushNotificationConfig/list', { operation: 'push_list', dialect: 'v0.3' }],
27
- ['tasks/pushNotificationConfig/delete', { operation: 'push_delete', dialect: 'v0.3' }],
28
- // — v1.0 —
29
- ['SendMessage', { operation: 'send', dialect: 'v1.0' }],
30
- ['SendStreamingMessage', { operation: 'stream', dialect: 'v1.0' }],
31
- ['GetTask', { operation: 'get', dialect: 'v1.0' }],
32
- ['CancelTask', { operation: 'cancel', dialect: 'v1.0' }],
33
- ['SubscribeToTask', { operation: 'resubscribe', dialect: 'v1.0' }],
34
- ['CreateTaskPushNotificationConfig', { operation: 'push_set', dialect: 'v1.0' }],
35
- ['GetTaskPushNotificationConfig', { operation: 'push_get', dialect: 'v1.0' }],
36
- ['ListTaskPushNotificationConfigs', { operation: 'push_list', dialect: 'v1.0' }],
37
- ['DeleteTaskPushNotificationConfig', { operation: 'push_delete', dialect: 'v1.0' }],
38
- // — pre-0.3 aliases seen in the wild —
39
- ['tasks/pushNotification/set', { operation: 'push_set', dialect: 'v0.3' }],
40
- ]);
41
- /**
42
- * Resolve a method name to its operation and implied dialect.
43
- * @param method - the raw `method` string from the request.
44
- * @returns the entry, or undefined for an unknown method.
45
- */
46
- export function resolveMethod(method) {
47
- return METHODS.get(method);
48
- }
49
- /** v1.0 spells task states in SCREAMING_SNAKE_CASE. */
50
- const STATE_TO_V1 = {
51
- 'submitted': 'TASK_STATE_SUBMITTED',
52
- 'working': 'TASK_STATE_WORKING',
53
- 'input-required': 'TASK_STATE_INPUT_REQUIRED',
54
- 'auth-required': 'TASK_STATE_AUTH_REQUIRED',
55
- 'completed': 'TASK_STATE_COMPLETED',
56
- 'canceled': 'TASK_STATE_CANCELED',
57
- 'failed': 'TASK_STATE_FAILED',
58
- 'rejected': 'TASK_STATE_REJECTED',
59
- };
60
- const ROLE_TO_V1 = {
61
- user: 'ROLE_USER',
62
- agent: 'ROLE_AGENT',
63
- };
64
- /**
65
- * Read a `Part` written in any of the three known spellings.
66
- *
67
- * v0.3 discriminates on `kind`, v1.0 on member presence, and pre-0.3 peers used
68
- * `type`. Unknown shapes yield undefined rather than throwing, so one odd part
69
- * cannot fail a request whose other parts are usable.
70
- * @param raw - one element of a `parts` array.
71
- * @returns the normalized part, or undefined when unrecognizable.
72
- */
73
- export function parsePart(raw) {
74
- if (raw === null || typeof raw !== 'object')
75
- return undefined;
76
- const part = raw;
77
- const tag = typeof part['kind'] === 'string'
78
- ? part['kind']
79
- : typeof part['type'] === 'string' ? part['type'] : undefined;
80
- if (tag === 'text') {
81
- return typeof part['text'] === 'string' ? { kind: 'text', text: part['text'] } : undefined;
82
- }
83
- if (tag === 'data')
84
- return { kind: 'data', data: part['data'] };
85
- if (tag === 'file')
86
- return parseFilePart(part);
87
- if (tag !== undefined)
88
- return undefined;
89
- // Untagged: v1.0 discriminates a part by which member is present. Order
90
- // matters only in that each probe must be specific enough not to claim
91
- // another variant's shape.
92
- if (typeof part['text'] === 'string')
93
- return { kind: 'text', text: part['text'] };
94
- const file = parseFilePart(part);
95
- if (file !== undefined)
96
- return file;
97
- if ('data' in part)
98
- return { kind: 'data', data: part['data'] };
99
- return undefined;
100
- }
101
- /**
102
- * Read a file part in either the v0.3 nested or the v1.0 flattened spelling.
103
- * @param part - the raw part object.
104
- * @returns the normalized file part, or undefined when no file member is present.
105
- */
106
- function parseFilePart(part) {
107
- const nested = part['file'];
108
- if (nested !== null && typeof nested === 'object') {
109
- return { kind: 'file', file: nested };
110
- }
111
- const uri = part['url'] ?? part['uri'];
112
- const bytes = part['raw'] ?? part['bytes'];
113
- if (typeof uri !== 'string' && typeof bytes !== 'string')
114
- return undefined;
115
- return {
116
- kind: 'file',
117
- file: {
118
- ...typeof uri === 'string' ? { uri } : {},
119
- ...typeof bytes === 'string' ? { bytes } : {},
120
- ...typeof part['filename'] === 'string' ? { name: part['filename'] } : {},
121
- ...typeof part['name'] === 'string' ? { name: part['name'] } : {},
122
- ...typeof part['mediaType'] === 'string' ? { mimeType: part['mediaType'] } : {},
123
- ...typeof part['mimeType'] === 'string' ? { mimeType: part['mimeType'] } : {},
124
- },
125
- };
126
- }
127
- /**
128
- * Render every part as text the model can read.
129
- *
130
- * File and data parts become bracketed references rather than being dropped, so
131
- * the agent knows something was attached and can ask about it. This is the same
132
- * flattening `dsh-acp` applies to baseline resource links.
133
- * @param parts - normalized parts, in order.
134
- * @returns the joined text, empty when nothing rendered.
135
- */
136
- export function partsToText(parts) {
137
- const chunks = [];
138
- for (const part of parts) {
139
- if (part.kind === 'text') {
140
- if (part.text.length > 0)
141
- chunks.push(part.text);
142
- }
143
- else if (part.kind === 'file') {
144
- const name = part.file.name ?? part.file.uri ?? 'unnamed';
145
- const type = part.file.mimeType === undefined ? '' : ` type=${part.file.mimeType}`;
146
- chunks.push(`[file name=${name}${type}]`);
147
- }
148
- else {
149
- chunks.push(`[data ${JSON.stringify(part.data)}]`);
150
- }
151
- }
152
- return chunks.join('\n');
153
- }
154
- /**
155
- * Parse `message/send` and `message/stream` parameters from either dialect.
156
- * @param raw - the request's `params` value.
157
- * @returns the normalized parameters, or undefined when the shape is unusable.
158
- */
159
- export function parseSendParams(raw) {
160
- if (raw === null || typeof raw !== 'object')
161
- return undefined;
162
- const params = raw;
163
- const rawMessage = params['message'];
164
- if (rawMessage === null || typeof rawMessage !== 'object')
165
- return undefined;
166
- const message = rawMessage;
167
- const rawParts = message['parts'];
168
- const parts = [];
169
- if (Array.isArray(rawParts)) {
170
- for (const item of rawParts) {
171
- const part = parsePart(item);
172
- if (part !== undefined)
173
- parts.push(part);
174
- }
175
- }
176
- // v0.3 allows contextId at the top level too; the message wins when both appear.
177
- const contextId = firstString(message['contextId'], params['contextId']);
178
- const taskId = firstString(message['taskId'], params['taskId']);
179
- const normalized = {
180
- kind: 'message',
181
- messageId: firstString(message['messageId']) ?? '',
182
- role: message['role'] === 'ROLE_AGENT' || message['role'] === 'agent' ? 'agent' : 'user',
183
- parts,
184
- ...contextId === undefined ? {} : { contextId: A2AContextId(contextId) },
185
- ...taskId === undefined ? {} : { taskId: A2ATaskId(taskId) },
186
- };
187
- const configuration = params['configuration'];
188
- if (configuration !== null && typeof configuration === 'object') {
189
- return {
190
- message: normalized,
191
- configuration: configuration,
192
- };
193
- }
194
- return { message: normalized };
195
- }
196
- /**
197
- * Return the first defined non-empty string among the candidates.
198
- * @param values - candidate values in precedence order.
199
- * @returns the winning string, or undefined.
200
- */
201
- function firstString(...values) {
202
- for (const value of values) {
203
- if (typeof value === 'string' && value.length > 0)
204
- return value;
205
- }
206
- return undefined;
207
- }
208
- /**
209
- * Render a task in the requested dialect.
210
- * @param task - the internal v0.3-shaped task.
211
- * @param dialect - the dialect the peer spoke.
212
- * @returns the wire object to serialize.
213
- */
214
- export function renderTask(task, dialect) {
215
- if (dialect === 'v0.3')
216
- return task;
217
- return {
218
- ...task,
219
- status: renderStatusV1(task.status),
220
- ...task.history === undefined ? {} : { history: task.history.map(renderMessageV1) },
221
- };
222
- }
223
- /**
224
- * Render a status-update stream event in the requested dialect.
225
- * @param event - the internal event.
226
- * @param dialect - the dialect the peer spoke.
227
- * @returns the wire object to serialize.
228
- */
229
- export function renderStatusUpdate(event, dialect) {
230
- if (dialect === 'v0.3')
231
- return event;
232
- return { statusUpdate: { ...event, status: renderStatusV1(event.status) } };
233
- }
234
- /**
235
- * Render an artifact-update stream event in the requested dialect.
236
- * @param event - the internal event.
237
- * @param dialect - the dialect the peer spoke.
238
- * @returns the wire object to serialize.
239
- */
240
- export function renderArtifactUpdate(event, dialect) {
241
- return dialect === 'v0.3' ? event : { artifactUpdate: event };
242
- }
243
- /**
244
- * Render a task status with v1.0 enum spellings.
245
- * @param status - the internal status.
246
- * @returns the v1.0-shaped status.
247
- */
248
- function renderStatusV1(status) {
249
- return {
250
- ...status,
251
- state: STATE_TO_V1[status.state],
252
- ...status.message === undefined ? {} : { message: renderMessageV1(status.message) },
253
- };
254
- }
255
- /**
256
- * Render a message with v1.0 enum spellings and member-presence parts.
257
- * @param message - the internal message.
258
- * @returns the v1.0-shaped message.
259
- */
260
- function renderMessageV1(message) {
261
- return {
262
- ...message,
263
- role: ROLE_TO_V1[message.role],
264
- parts: message.parts.map((part) => {
265
- if (part.kind === 'text')
266
- return { text: part.text };
267
- if (part.kind === 'data')
268
- return { data: part.data };
269
- return {
270
- ...part.file.uri === undefined ? {} : { url: part.file.uri },
271
- ...part.file.bytes === undefined ? {} : { raw: part.file.bytes },
272
- ...part.file.name === undefined ? {} : { filename: part.file.name },
273
- ...part.file.mimeType === undefined ? {} : { mediaType: part.file.mimeType },
274
- };
275
- }),
276
- };
277
- }
278
- //# sourceMappingURL=normalize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/protocol/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAgCpD;;;;;GAKG;AACH,MAAM,OAAO,GAAqC,IAAI,GAAG,CAAC;IACxD,sBAAsB;IACtB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxD,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACpD,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC1D,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACpE,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChF,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChF,CAAC,mCAAmC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClF,CAAC,qCAAqC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACtF,WAAW;IACX,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClD,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxD,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChF,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC,iCAAiC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChF,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACnF,uCAAuC;IACvC,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;CAC3E,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,uDAAuD;AACvD,MAAM,WAAW,GAA2C;IAC1D,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,oBAAoB;IAC/B,gBAAgB,EAAE,2BAA2B;IAC7C,eAAe,EAAE,0BAA0B;IAC3C,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;CAClC,CAAA;AAED,MAAM,UAAU,GAAsC;IACpD,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;CACpB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC7D,MAAM,IAAI,GAAG,GAA8B,CAAA;IAC3C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ;QAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACd,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE/D,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5F,CAAC;IACD,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IAC/D,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAEvC,wEAAwE;IACxE,uEAAuE;IACvE,2BAA2B;IAC3B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IACjF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACnC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IAC/D,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAA6B;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAsB,EAAE,CAAA;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC1E,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;YACzC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;YAC7C,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACzE,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACjE,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAC/E,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;SAC9E;KACF,CAAA;AACH,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAyB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAA;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;YAClF,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,IAAI,GAAG,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC7D,MAAM,MAAM,GAAG,GAA8B,CAAA;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC3E,MAAM,OAAO,GAAG,UAAqC,CAAA;IAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,IAAI,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE/D,MAAM,UAAU,GAAe;QAC7B,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;QAClD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACxF,KAAK;QACL,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE;QACxE,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;KAC7D,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;IAC7C,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,aAAmE;SACnF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AAChC,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,GAAG,MAAiB;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IACjE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,OAAmB;IAC3D,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;KACpF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA+B,EAAE,OAAmB;IACrF,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAA;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAiC,EACjC,OAAmB;IAEnB,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAyB;IAC/C,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;KACpF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAmB;IAC1C,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;YACpD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;YACpD,OAAO;gBACL,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5D,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAChE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACnE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;aAC7E,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACH,CAAC"}