@relayfile/sdk 0.1.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/dist/client.js ADDED
@@ -0,0 +1,631 @@
1
+ import { InvalidStateError, PayloadTooLargeError, QueueFullError, RelayFileApiError, RevisionConflictError } from "./errors.js";
2
+ const DEFAULT_RETRY_OPTIONS = {
3
+ maxRetries: 3,
4
+ baseDelayMs: 100,
5
+ maxDelayMs: 2000,
6
+ jitterRatio: 0.2
7
+ };
8
+ function normalizeRetryOptions(options) {
9
+ const maxRetries = options?.maxRetries ?? DEFAULT_RETRY_OPTIONS.maxRetries;
10
+ const baseDelayMs = options?.baseDelayMs ?? DEFAULT_RETRY_OPTIONS.baseDelayMs;
11
+ const maxDelayMs = options?.maxDelayMs ?? DEFAULT_RETRY_OPTIONS.maxDelayMs;
12
+ const jitterRatio = options?.jitterRatio ?? DEFAULT_RETRY_OPTIONS.jitterRatio;
13
+ return {
14
+ maxRetries: Math.max(0, Math.floor(maxRetries)),
15
+ baseDelayMs: Math.max(1, Math.floor(baseDelayMs)),
16
+ maxDelayMs: Math.max(1, Math.floor(maxDelayMs)),
17
+ jitterRatio: Math.max(0, Math.min(1, jitterRatio))
18
+ };
19
+ }
20
+ function buildQuery(params) {
21
+ const query = new URLSearchParams();
22
+ for (const [key, value] of Object.entries(params)) {
23
+ if (value !== undefined) {
24
+ query.set(key, String(value));
25
+ }
26
+ }
27
+ const encoded = query.toString();
28
+ return encoded ? `?${encoded}` : "";
29
+ }
30
+ function generateCorrelationId() {
31
+ return `rf_${Date.now()}_${Math.random().toString(16).slice(2, 10)}`;
32
+ }
33
+ async function resolveToken(tokenProvider) {
34
+ if (typeof tokenProvider === "function") {
35
+ return tokenProvider();
36
+ }
37
+ return tokenProvider;
38
+ }
39
+ function resolveSyncToken(tokenProvider) {
40
+ if (typeof tokenProvider === "function") {
41
+ const token = tokenProvider();
42
+ if (typeof token !== "string") {
43
+ throw new Error("connectWebSocket requires a synchronous token provider or an explicit token option.");
44
+ }
45
+ return token;
46
+ }
47
+ return tokenProvider;
48
+ }
49
+ function createAbortError() {
50
+ const err = new Error("The operation was aborted.");
51
+ err.name = "AbortError";
52
+ return err;
53
+ }
54
+ function createBlobFromResponse(response) {
55
+ if (typeof response.blob === "function") {
56
+ return response.blob();
57
+ }
58
+ return response.arrayBuffer().then((buffer) => new Blob([buffer], { type: response.headers.get("content-type") ?? undefined }));
59
+ }
60
+ class RelayFileWebSocketConnection {
61
+ socket;
62
+ handlers = {
63
+ event: new Set(),
64
+ error: new Set(),
65
+ open: new Set(),
66
+ close: new Set()
67
+ };
68
+ constructor(socket, onEvent) {
69
+ this.socket = socket;
70
+ if (onEvent) {
71
+ this.handlers.event.add(onEvent);
72
+ }
73
+ socket.addEventListener("open", (event) => {
74
+ for (const handler of this.handlers.open) {
75
+ handler(event);
76
+ }
77
+ });
78
+ socket.addEventListener("close", (event) => {
79
+ for (const handler of this.handlers.close) {
80
+ handler(event);
81
+ }
82
+ });
83
+ socket.addEventListener("error", (event) => {
84
+ const errorEvent = event instanceof ErrorEvent && event.error instanceof Error ? event.error : event;
85
+ for (const handler of this.handlers.error) {
86
+ handler(errorEvent);
87
+ }
88
+ });
89
+ socket.addEventListener("message", (event) => {
90
+ if (typeof event.data !== "string") {
91
+ return;
92
+ }
93
+ let parsed;
94
+ try {
95
+ parsed = JSON.parse(event.data);
96
+ }
97
+ catch (error) {
98
+ const parseError = error instanceof Error ? error : new Error("Failed to parse WebSocket event payload.");
99
+ for (const handler of this.handlers.error) {
100
+ handler(parseError);
101
+ }
102
+ return;
103
+ }
104
+ for (const handler of this.handlers.event) {
105
+ handler(parsed);
106
+ }
107
+ });
108
+ }
109
+ close(code, reason) {
110
+ this.socket.close(code, reason);
111
+ }
112
+ on(event, handler) {
113
+ this.handlers[event].add(handler);
114
+ return () => {
115
+ this.handlers[event].delete(handler);
116
+ };
117
+ }
118
+ }
119
+ export class RelayFileClient {
120
+ baseUrl;
121
+ tokenProvider;
122
+ fetchImpl;
123
+ userAgent;
124
+ retryOptions;
125
+ constructor(options) {
126
+ this.baseUrl = options.baseUrl.replace(/\/+$/, "");
127
+ this.tokenProvider = options.token;
128
+ this.fetchImpl = options.fetchImpl ?? fetch;
129
+ this.userAgent = options.userAgent;
130
+ this.retryOptions = normalizeRetryOptions(options.retry);
131
+ }
132
+ async listTree(workspaceId, options = {}) {
133
+ const query = buildQuery({
134
+ path: options.path ?? "/",
135
+ depth: options.depth,
136
+ cursor: options.cursor
137
+ });
138
+ return this.request({
139
+ method: "GET",
140
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/fs/tree${query}`,
141
+ correlationId: options.correlationId,
142
+ signal: options.signal
143
+ });
144
+ }
145
+ async readFile(workspaceId, path, correlationId, signal) {
146
+ const query = buildQuery({ path });
147
+ return this.request({
148
+ method: "GET",
149
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/fs/file${query}`,
150
+ correlationId,
151
+ signal
152
+ });
153
+ }
154
+ async queryFiles(workspaceId, options = {}) {
155
+ const params = new URLSearchParams();
156
+ if (options.path !== undefined)
157
+ params.set("path", options.path);
158
+ if (options.provider !== undefined)
159
+ params.set("provider", options.provider);
160
+ if (options.relation !== undefined)
161
+ params.set("relation", options.relation);
162
+ if (options.permission !== undefined)
163
+ params.set("permission", options.permission);
164
+ if (options.comment !== undefined)
165
+ params.set("comment", options.comment);
166
+ if (options.cursor !== undefined)
167
+ params.set("cursor", options.cursor);
168
+ if (options.limit !== undefined)
169
+ params.set("limit", String(options.limit));
170
+ if (options.properties !== undefined) {
171
+ for (const [key, value] of Object.entries(options.properties)) {
172
+ if (key !== "" && value !== undefined) {
173
+ params.set(`property.${key}`, value);
174
+ }
175
+ }
176
+ }
177
+ const encoded = params.toString();
178
+ const query = encoded ? `?${encoded}` : "";
179
+ return this.request({
180
+ method: "GET",
181
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/fs/query${query}`,
182
+ correlationId: options.correlationId,
183
+ signal: options.signal
184
+ });
185
+ }
186
+ async writeFile(input) {
187
+ const query = buildQuery({ path: input.path });
188
+ return this.request({
189
+ method: "PUT",
190
+ path: `/v1/workspaces/${encodeURIComponent(input.workspaceId)}/fs/file${query}`,
191
+ correlationId: input.correlationId,
192
+ headers: {
193
+ "If-Match": input.baseRevision
194
+ },
195
+ body: {
196
+ contentType: input.contentType ?? "text/markdown",
197
+ content: input.content,
198
+ encoding: input.encoding,
199
+ semantics: input.semantics
200
+ },
201
+ signal: input.signal
202
+ });
203
+ }
204
+ async bulkWrite(input) {
205
+ return this.request({
206
+ method: "POST",
207
+ path: `/v1/workspaces/${encodeURIComponent(input.workspaceId)}/fs/bulk`,
208
+ correlationId: input.correlationId,
209
+ body: {
210
+ files: input.files
211
+ },
212
+ signal: input.signal
213
+ });
214
+ }
215
+ async deleteFile(input) {
216
+ const query = buildQuery({ path: input.path });
217
+ return this.request({
218
+ method: "DELETE",
219
+ path: `/v1/workspaces/${encodeURIComponent(input.workspaceId)}/fs/file${query}`,
220
+ correlationId: input.correlationId,
221
+ headers: {
222
+ "If-Match": input.baseRevision
223
+ },
224
+ signal: input.signal
225
+ });
226
+ }
227
+ async getEvents(workspaceId, options = {}) {
228
+ const query = buildQuery({
229
+ provider: options.provider,
230
+ cursor: options.cursor,
231
+ limit: options.limit
232
+ });
233
+ return this.request({
234
+ method: "GET",
235
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/fs/events${query}`,
236
+ correlationId: options.correlationId,
237
+ signal: options.signal
238
+ });
239
+ }
240
+ async exportWorkspace(options) {
241
+ const format = options.format ?? "json";
242
+ const query = buildQuery({ format });
243
+ const correlationId = options.correlationId ?? generateCorrelationId();
244
+ const response = await this.performRequest({
245
+ method: "GET",
246
+ path: `/v1/workspaces/${encodeURIComponent(options.workspaceId)}/fs/export${query}`,
247
+ correlationId,
248
+ signal: options.signal,
249
+ accept: format === "json" ? "application/json" : "*/*"
250
+ });
251
+ if (format === "json") {
252
+ return this.readPayload(response);
253
+ }
254
+ return createBlobFromResponse(response);
255
+ }
256
+ connectWebSocket(workspaceId, options = {}) {
257
+ const token = options.token ?? resolveSyncToken(this.tokenProvider);
258
+ const url = new URL(`${this.baseUrl}/v1/workspaces/${encodeURIComponent(workspaceId)}/fs/ws`);
259
+ url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
260
+ url.searchParams.set("token", token);
261
+ const socket = new WebSocket(url.toString());
262
+ return new RelayFileWebSocketConnection(socket, options.onEvent);
263
+ }
264
+ async getOp(workspaceId, opId, correlationId, signal) {
265
+ return this.request({
266
+ method: "GET",
267
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/ops/${encodeURIComponent(opId)}`,
268
+ correlationId,
269
+ signal
270
+ });
271
+ }
272
+ async listOps(workspaceId, options = {}) {
273
+ const query = buildQuery({
274
+ status: options.status,
275
+ action: options.action,
276
+ provider: options.provider,
277
+ cursor: options.cursor,
278
+ limit: options.limit
279
+ });
280
+ return this.request({
281
+ method: "GET",
282
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/ops${query}`,
283
+ correlationId: options.correlationId,
284
+ signal: options.signal
285
+ });
286
+ }
287
+ async replayOp(workspaceId, opId, correlationId, signal) {
288
+ return this.request({
289
+ method: "POST",
290
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/ops/${encodeURIComponent(opId)}/replay`,
291
+ correlationId,
292
+ signal
293
+ });
294
+ }
295
+ async replayAdminEnvelope(envelopeId, correlationId, signal) {
296
+ return this.request({
297
+ method: "POST",
298
+ path: `/v1/admin/replay/envelope/${encodeURIComponent(envelopeId)}`,
299
+ correlationId,
300
+ signal
301
+ });
302
+ }
303
+ async replayAdminOp(opId, correlationId, signal) {
304
+ return this.request({
305
+ method: "POST",
306
+ path: `/v1/admin/replay/op/${encodeURIComponent(opId)}`,
307
+ correlationId,
308
+ signal
309
+ });
310
+ }
311
+ async getBackendStatus(correlationId, signal) {
312
+ return this.request({
313
+ method: "GET",
314
+ path: "/v1/admin/backends",
315
+ correlationId,
316
+ signal
317
+ });
318
+ }
319
+ async getAdminIngressStatus(optionsOrCorrelationId = {}, signal) {
320
+ const options = typeof optionsOrCorrelationId === "string"
321
+ ? { correlationId: optionsOrCorrelationId, signal }
322
+ : optionsOrCorrelationId;
323
+ const query = buildQuery({
324
+ workspaceId: options.workspaceId,
325
+ provider: options.provider,
326
+ alertProfile: options.alertProfile,
327
+ pendingThreshold: options.pendingThreshold,
328
+ deadLetterThreshold: options.deadLetterThreshold,
329
+ staleThreshold: options.staleThreshold,
330
+ dropRateThreshold: options.dropRateThreshold,
331
+ nonZeroOnly: options.nonZeroOnly,
332
+ maxAlerts: options.maxAlerts,
333
+ cursor: options.cursor,
334
+ limit: options.limit,
335
+ includeWorkspaces: options.includeWorkspaces,
336
+ includeAlerts: options.includeAlerts
337
+ });
338
+ return this.request({
339
+ method: "GET",
340
+ path: `/v1/admin/ingress${query}`,
341
+ correlationId: options.correlationId,
342
+ signal: options.signal
343
+ });
344
+ }
345
+ async getAdminSyncStatus(optionsOrCorrelationId = {}, signal) {
346
+ const options = typeof optionsOrCorrelationId === "string"
347
+ ? { correlationId: optionsOrCorrelationId, signal }
348
+ : optionsOrCorrelationId;
349
+ const query = buildQuery({
350
+ workspaceId: options.workspaceId,
351
+ provider: options.provider,
352
+ nonZeroOnly: options.nonZeroOnly,
353
+ cursor: options.cursor,
354
+ limit: options.limit,
355
+ includeWorkspaces: options.includeWorkspaces,
356
+ statusErrorThreshold: options.statusErrorThreshold,
357
+ lagSecondsThreshold: options.lagSecondsThreshold,
358
+ deadLetteredEnvelopesThreshold: options.deadLetteredEnvelopesThreshold,
359
+ deadLetteredOpsThreshold: options.deadLetteredOpsThreshold,
360
+ maxAlerts: options.maxAlerts,
361
+ includeAlerts: options.includeAlerts
362
+ });
363
+ return this.request({
364
+ method: "GET",
365
+ path: `/v1/admin/sync${query}`,
366
+ correlationId: options.correlationId,
367
+ signal: options.signal
368
+ });
369
+ }
370
+ async getSyncStatus(workspaceId, options = {}) {
371
+ const query = buildQuery({ provider: options.provider });
372
+ return this.request({
373
+ method: "GET",
374
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/status${query}`,
375
+ correlationId: options.correlationId,
376
+ signal: options.signal
377
+ });
378
+ }
379
+ async getSyncIngressStatus(workspaceId, options = {}) {
380
+ const query = buildQuery({
381
+ provider: options.provider
382
+ });
383
+ return this.request({
384
+ method: "GET",
385
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/ingress${query}`,
386
+ correlationId: options.correlationId,
387
+ signal: options.signal
388
+ });
389
+ }
390
+ async getSyncDeadLetters(workspaceId, options = {}) {
391
+ const query = buildQuery({
392
+ provider: options.provider,
393
+ cursor: options.cursor,
394
+ limit: options.limit
395
+ });
396
+ return this.request({
397
+ method: "GET",
398
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/dead-letter${query}`,
399
+ correlationId: options.correlationId,
400
+ signal: options.signal
401
+ });
402
+ }
403
+ async getSyncDeadLetter(workspaceId, envelopeId, correlationId, signal) {
404
+ return this.request({
405
+ method: "GET",
406
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/dead-letter/${encodeURIComponent(envelopeId)}`,
407
+ correlationId,
408
+ signal
409
+ });
410
+ }
411
+ async replaySyncDeadLetter(workspaceId, envelopeId, correlationId, signal) {
412
+ return this.request({
413
+ method: "POST",
414
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/dead-letter/${encodeURIComponent(envelopeId)}/replay`,
415
+ correlationId,
416
+ signal
417
+ });
418
+ }
419
+ async ackSyncDeadLetter(workspaceId, envelopeId, correlationId, signal) {
420
+ return this.request({
421
+ method: "POST",
422
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/dead-letter/${encodeURIComponent(envelopeId)}/ack`,
423
+ correlationId,
424
+ signal
425
+ });
426
+ }
427
+ async triggerSyncRefresh(workspaceId, provider, reason, correlationId, signal) {
428
+ return this.request({
429
+ method: "POST",
430
+ path: `/v1/workspaces/${encodeURIComponent(workspaceId)}/sync/refresh`,
431
+ correlationId,
432
+ body: {
433
+ provider,
434
+ reason
435
+ },
436
+ signal
437
+ });
438
+ }
439
+ async request(params) {
440
+ const response = await this.performRequest(params);
441
+ return this.readPayload(response);
442
+ }
443
+ async performRequest(params) {
444
+ const correlationId = params.correlationId ?? generateCorrelationId();
445
+ const baseHeaders = {
446
+ "X-Correlation-Id": correlationId,
447
+ ...params.headers
448
+ };
449
+ if (params.body !== undefined) {
450
+ baseHeaders["Content-Type"] = "application/json";
451
+ }
452
+ if (params.accept) {
453
+ baseHeaders["Accept"] = params.accept;
454
+ }
455
+ if (this.userAgent) {
456
+ baseHeaders["User-Agent"] = this.userAgent;
457
+ }
458
+ let retries = 0;
459
+ const url = `${this.baseUrl}${params.path}`;
460
+ for (;;) {
461
+ const token = await resolveToken(this.tokenProvider);
462
+ const headers = {
463
+ Authorization: `Bearer ${token}`,
464
+ ...baseHeaders
465
+ };
466
+ const requestInit = {
467
+ method: params.method,
468
+ headers,
469
+ body: params.body === undefined ? undefined : JSON.stringify(params.body)
470
+ };
471
+ if (params.signal) {
472
+ requestInit.signal = params.signal;
473
+ }
474
+ let response;
475
+ try {
476
+ response = await this.fetchImpl(url, requestInit);
477
+ }
478
+ catch (error) {
479
+ if (this.shouldRetryError(error, retries, params.signal)) {
480
+ retries += 1;
481
+ await this.sleep(this.computeRetryDelayMs(retries, null), params.signal);
482
+ continue;
483
+ }
484
+ throw error;
485
+ }
486
+ if (response.ok) {
487
+ return response;
488
+ }
489
+ const payload = await this.readPayload(response);
490
+ if (this.shouldRetryStatus(response.status, retries, params.signal)) {
491
+ retries += 1;
492
+ await this.sleep(this.computeRetryDelayMs(retries, response.headers.get("retry-after")), params.signal);
493
+ continue;
494
+ }
495
+ this.throwForError(response.status, payload, response.headers);
496
+ }
497
+ }
498
+ shouldRetryStatus(status, retries, signal) {
499
+ if (signal?.aborted) {
500
+ return false;
501
+ }
502
+ if (retries >= this.retryOptions.maxRetries) {
503
+ return false;
504
+ }
505
+ return status === 429 || (status >= 500 && status <= 599);
506
+ }
507
+ shouldRetryError(error, retries, signal) {
508
+ if (signal?.aborted) {
509
+ return false;
510
+ }
511
+ if (error instanceof Error && error.name === "AbortError") {
512
+ return false;
513
+ }
514
+ return retries < this.retryOptions.maxRetries;
515
+ }
516
+ computeRetryDelayMs(retryAttempt, retryAfterHeader) {
517
+ const retryAfterMs = this.parseRetryAfterMs(retryAfterHeader);
518
+ if (retryAfterMs !== null) {
519
+ return Math.min(this.retryOptions.maxDelayMs, retryAfterMs);
520
+ }
521
+ const backoff = this.retryOptions.baseDelayMs * Math.pow(2, Math.max(0, retryAttempt - 1));
522
+ const capped = Math.min(this.retryOptions.maxDelayMs, backoff);
523
+ const jitter = this.retryOptions.jitterRatio;
524
+ const factor = 1 + (Math.random() * 2 - 1) * jitter;
525
+ return Math.max(0, Math.round(capped * factor));
526
+ }
527
+ parseRetryAfterMs(retryAfterHeader) {
528
+ if (!retryAfterHeader) {
529
+ return null;
530
+ }
531
+ const seconds = Number.parseInt(retryAfterHeader, 10);
532
+ if (Number.isFinite(seconds) && seconds >= 0) {
533
+ return seconds * 1000;
534
+ }
535
+ const timestamp = Date.parse(retryAfterHeader);
536
+ if (!Number.isNaN(timestamp)) {
537
+ return Math.max(0, timestamp - Date.now());
538
+ }
539
+ return null;
540
+ }
541
+ async sleep(delayMs, signal) {
542
+ if (delayMs <= 0) {
543
+ return;
544
+ }
545
+ if (signal?.aborted) {
546
+ throw createAbortError();
547
+ }
548
+ await new Promise((resolve, reject) => {
549
+ const timer = setTimeout(() => {
550
+ signal?.removeEventListener("abort", onAbort);
551
+ resolve();
552
+ }, delayMs);
553
+ const onAbort = () => {
554
+ clearTimeout(timer);
555
+ signal?.removeEventListener("abort", onAbort);
556
+ reject(createAbortError());
557
+ };
558
+ signal?.addEventListener("abort", onAbort, { once: true });
559
+ });
560
+ }
561
+ async readPayload(response) {
562
+ const contentType = response.headers.get("content-type") ?? "";
563
+ if (contentType.includes("application/json")) {
564
+ try {
565
+ return await response.json();
566
+ }
567
+ catch {
568
+ return {};
569
+ }
570
+ }
571
+ const text = await response.text();
572
+ return {
573
+ message: text
574
+ };
575
+ }
576
+ throwForError(status, payload, headers) {
577
+ const data = (payload ?? {});
578
+ if (status === 409 &&
579
+ typeof data.expectedRevision === "string" &&
580
+ typeof data.currentRevision === "string") {
581
+ throw new RevisionConflictError(status, {
582
+ code: data.code ?? "revision_conflict",
583
+ message: data.message ?? "Revision conflict",
584
+ correlationId: data.correlationId ?? "",
585
+ details: data.details,
586
+ expectedRevision: data.expectedRevision,
587
+ currentRevision: data.currentRevision,
588
+ currentContentPreview: data.currentContentPreview
589
+ });
590
+ }
591
+ if (status === 409 && data.code === "invalid_state") {
592
+ throw new InvalidStateError(status, {
593
+ code: data.code,
594
+ message: data.message ?? "Invalid resource state",
595
+ correlationId: data.correlationId,
596
+ details: data.details
597
+ });
598
+ }
599
+ if (status === 429 && data.code === "queue_full") {
600
+ const retryAfterRaw = headers.get("retry-after");
601
+ let retryAfterSeconds;
602
+ if (retryAfterRaw) {
603
+ const parsed = Number.parseInt(retryAfterRaw, 10);
604
+ if (Number.isFinite(parsed) && parsed >= 0) {
605
+ retryAfterSeconds = parsed;
606
+ }
607
+ }
608
+ throw new QueueFullError(status, {
609
+ code: data.code,
610
+ message: data.message ?? "Ingress queue full",
611
+ correlationId: data.correlationId,
612
+ details: data.details
613
+ }, retryAfterSeconds);
614
+ }
615
+ if (status === 413) {
616
+ throw new PayloadTooLargeError(status, {
617
+ code: data.code ?? "payload_too_large",
618
+ message: data.message ?? "Request payload exceeds configured limit",
619
+ correlationId: data.correlationId,
620
+ details: data.details
621
+ });
622
+ }
623
+ throw new RelayFileApiError(status, {
624
+ code: data.code ?? "api_error",
625
+ message: data.message ?? `HTTP ${status}`,
626
+ correlationId: data.correlationId,
627
+ details: data.details
628
+ });
629
+ }
630
+ }
631
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAmCA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA4CrB,MAAM,qBAAqB,GAA2B;IACpD,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,SAAS,qBAAqB,CAAC,OAA+B;IAC5D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,qBAAqB,CAAC,UAAU,CAAC;IAC3E,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,qBAAqB,CAAC,WAAW,CAAC;IAC9E,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,qBAAqB,CAAC,UAAU,CAAC;IAC3E,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,qBAAqB,CAAC,WAAW,CAAC;IAC9E,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAA6D;IAC/E,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,aAAkC;IAC5D,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAkC;IAC1D,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAkB;IAChD,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;AAClI,CAAC;AAED,MAAM,4BAA4B;IACf,MAAM,CAAY;IAClB,QAAQ,GAErB;QACF,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,IAAI,EAAE,IAAI,GAAG,EAAE;QACf,KAAK,EAAE,IAAI,GAAG,EAAE;KACjB,CAAC;IAEF,YAAY,MAAiB,EAAE,OAA0C;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACrG,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1C,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,IAAI,MAAuB,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1G,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC1C,OAAO,CAAC,UAAU,CAAC,CAAC;gBACtB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1C,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAa,EAAE,MAAe;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,EAAE,CAAwC,KAAiB,EAAE,OAAwC;QACnG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,aAAa,CAAsB;IACnC,SAAS,CAAe;IACxB,SAAS,CAAU;IACnB,YAAY,CAAyB;IAEtD,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,UAA2B,EAAE;QAC/D,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAe;YAChC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,WAAW,KAAK,EAAE;YACzE,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,IAAY,EAAE,aAAsB,EAAE,MAAoB;QAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAmB;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,WAAW,KAAK,EAAE;YACzE,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,UAA6B,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAoB;YACrC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,YAAY,KAAK,EAAE;YAC1E,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAqB;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAsB;YACvC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,EAAE;YAC/E,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,OAAO,EAAE;gBACP,UAAU,EAAE,KAAK,CAAC,YAAY;aAC/B;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,eAAe;gBACjD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAqB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAoB;YACrC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU;YACvE,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAsB;YACvC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,EAAE;YAC/E,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,OAAO,EAAE;gBACP,UAAU,EAAE,KAAK,CAAC,YAAY;aAC/B;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,UAA4B,EAAE;QACjE,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAoB;YACrC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,aAAa,KAAK,EAAE;YAC3E,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAsB;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,qBAAqB,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACzC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,KAAK,EAAE;YACnF,aAAa;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK;SACvD,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAgC,CAAC;QACnE,CAAC;QAED,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB,CACd,WAAmB,EACnB,UAAmC,EAAE;QAErC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9F,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,KAAK,CACT,WAAmB,EACnB,IAAY,EACZ,aAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAA0B;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,QAAQ,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACzF,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,UAAgC,EAAE;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAwB;YACzC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,OAAO,KAAK,EAAE;YACrE,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,IAAY,EAAE,aAAsB,EAAE,MAAoB;QAC5F,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,QAAQ,kBAAkB,CAAC,IAAI,CAAC,SAAS;YAChG,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB,EAAE,aAAsB,EAAE,MAAoB;QACxF,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,UAAU,CAAC,EAAE;YACnE,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,aAAsB,EAAE,MAAoB;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACvD,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,aAAsB,EAAE,MAAoB;QACjE,OAAO,IAAI,CAAC,OAAO,CAAwB;YACzC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,yBAAgE,EAAE,EAClE,MAAoB;QAEpB,MAAM,OAAO,GACX,OAAO,sBAAsB,KAAK,QAAQ;YACxC,CAAC,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,EAAE;YACnD,CAAC,CAAC,sBAAsB,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAA6B;YAC9C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB,KAAK,EAAE;YACjC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,yBAA6D,EAAE,EAC/D,MAAoB;QAEpB,MAAM,OAAO,GACX,OAAO,sBAAsB,KAAK,QAAQ;YACxC,CAAC,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,EAAE;YACnD,CAAC,CAAC,sBAAsB,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,8BAA8B,EAAE,OAAO,CAAC,8BAA8B;YACtE,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;YAC1D,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAA0B;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,KAAK,EAAE;YAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,UAAgC,EAAE;QACzE,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAqB;YACtC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,eAAe,KAAK,EAAE;YAC7E,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,UAAuC,EAAE;QAEzC,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAA4B;YAC7C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,KAAK,EAAE;YAC9E,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,UAAqC,EAAE;QAEvC,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAyB;YAC1C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,oBAAoB,KAAK,EAAE;YAClF,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,UAAkB,EAClB,aAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,qBAAqB,kBAAkB,CAAC,UAAU,CAAC,EAAE;YAC5G,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,UAAkB,EAClB,aAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,qBAAqB,kBAAkB,CAAC,UAAU,CAAC,SAAS;YACnH,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,UAAkB,EAClB,aAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAc;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,qBAAqB,kBAAkB,CAAC,UAAU,CAAC,MAAM;YAChH,aAAa;YACb,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,QAAgB,EAChB,MAAe,EACf,aAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAiB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,WAAW,CAAC,eAAe;YACtE,aAAa;YACb,IAAI,EAAE;gBACJ,QAAQ;gBACR,MAAM;aACP;YACD,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAOxB;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAe,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAQ5B;QACC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,qBAAqB,EAAE,CAAC;QACtE,MAAM,WAAW,GAA2B;YAC1C,kBAAkB,EAAE,aAAa;YACjC,GAAG,MAAM,CAAC,OAAO;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,MAAM,OAAO,GAA2B;gBACtC,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,GAAG,WAAW;aACf,CAAC;YACF,MAAM,WAAW,GAAgB;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;aAC1E,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACrC,CAAC;YAED,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzD,OAAO,IAAI,CAAC,CAAC;oBACb,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACzE,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxG,SAAS;YACX,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,OAAe,EAAE,MAAoB;QAC7E,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IAEO,gBAAgB,CAAC,KAAc,EAAE,OAAe,EAAE,MAAoB;QAC5E,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAChD,CAAC;IAEO,mBAAmB,CAAC,YAAoB,EAAE,gBAA+B;QAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,iBAAiB,CAAC,gBAA+B;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAC7C,OAAO,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,MAAoB;QACvD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,gBAAgB,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC;YACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAkB;QAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,MAAc,EAAE,OAAgB,EAAE,OAAgB;QACtE,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAI1B,CAAC;QAEF,IACE,MAAM,KAAK,GAAG;YACd,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;YACzC,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EACxC,CAAC;YACD,MAAM,IAAI,qBAAqB,CAAC,MAAM,EAAE;gBACtC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,mBAAmB;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,mBAAmB;gBAC5C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;gBACvC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpD,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,wBAAwB;gBACjD,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,iBAAqC,CAAC;YAC1C,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC3C,iBAAiB,GAAG,MAAM,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,MAAM,IAAI,cAAc,CACtB,MAAM,EACN;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,oBAAoB;gBAC7C,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,EACD,iBAAiB,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,mBAAmB;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,0CAA0C;gBACnE,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,MAAM,EAAE;YACzC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;CACF"}