@animalabs/agent-framework 0.22.4 → 0.23.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.
- package/README.md +105 -3
- package/dist/src/agent.d.ts +36 -10
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +76 -32
- package/dist/src/agent.js.map +1 -1
- package/dist/src/code-execution/index.d.ts +1 -1
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/py-runner.d.ts +34 -2
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +72 -16
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/runtime-py.d.ts +3 -2
- package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
- package/dist/src/code-execution/runtime-py.js +47 -7
- package/dist/src/code-execution/runtime-py.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts +12 -7
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +59 -11
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/config-checks.d.ts +2 -2
- package/dist/src/config-checks.d.ts.map +1 -1
- package/dist/src/config-checks.js +6 -2
- package/dist/src/config-checks.js.map +1 -1
- package/dist/src/framework.d.ts +744 -120
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +3546 -906
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +13 -6
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/held-writes.d.ts +16 -0
- package/dist/src/held-writes.d.ts.map +1 -0
- package/dist/src/held-writes.js +56 -0
- package/dist/src/held-writes.js.map +1 -0
- package/dist/src/index.d.ts +7 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-grant.d.ts +4 -0
- package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
- package/dist/src/mcpl/capability-grant.js +1 -1
- package/dist/src/mcpl/capability-grant.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +95 -18
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +578 -150
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts +2 -2
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +6 -7
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +5 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -1
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +4 -2
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +6 -7
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +7 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -1
- package/dist/src/mcpl/log-value.js +9 -0
- package/dist/src/mcpl/log-value.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +227 -0
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -0
- package/dist/src/mcpl/modern-connection.js +1088 -0
- package/dist/src/mcpl/modern-connection.js.map +1 -0
- package/dist/src/mcpl/prefix-rule.d.ts +18 -0
- package/dist/src/mcpl/prefix-rule.d.ts.map +1 -0
- package/dist/src/mcpl/prefix-rule.js +25 -0
- package/dist/src/mcpl/prefix-rule.js.map +1 -0
- package/dist/src/mcpl/protocol-family.d.ts +179 -0
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -0
- package/dist/src/mcpl/protocol-family.js +697 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -0
- package/dist/src/mcpl/push-coalescer.d.ts +38 -19
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +52 -23
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +66 -15
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +243 -76
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +63 -18
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +117 -32
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +326 -30
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +995 -212
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/server-registry.d.ts +25 -5
- package/dist/src/mcpl/server-registry.d.ts.map +1 -1
- package/dist/src/mcpl/server-registry.js +51 -12
- package/dist/src/mcpl/server-registry.js.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts +54 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.js +232 -0
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +56 -13
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +206 -70
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +66 -20
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +2 -1
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +2 -1
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +16 -6
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +65 -6
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/api/index.d.ts +1 -1
- package/dist/src/modules/api/index.d.ts.map +1 -1
- package/dist/src/modules/api/index.js +3 -2
- package/dist/src/modules/api/index.js.map +1 -1
- package/dist/src/modules/discord/discord-js-client.d.ts +42 -2
- package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
- package/dist/src/modules/discord/discord-js-client.js +268 -65
- package/dist/src/modules/discord/discord-js-client.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts +27 -5
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +366 -76
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/discord/refusal.d.ts +14 -0
- package/dist/src/modules/discord/refusal.d.ts.map +1 -0
- package/dist/src/modules/discord/refusal.js +14 -0
- package/dist/src/modules/discord/refusal.js.map +1 -0
- package/dist/src/modules/discord/types.d.ts +17 -7
- package/dist/src/modules/discord/types.d.ts.map +1 -1
- package/dist/src/modules/health/index.d.ts.map +1 -1
- package/dist/src/modules/health/index.js +6 -2
- package/dist/src/modules/health/index.js.map +1 -1
- package/dist/src/modules/index.d.ts +1 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js +1 -1
- package/dist/src/modules/index.js.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.d.ts +25 -2
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +45 -5
- package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +2 -1
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +19 -9
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +214 -42
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +667 -113
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +240 -8
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +554 -24
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +10 -1
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts +42 -0
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js +130 -25
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/silent-heartbeat.d.ts +112 -39
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js +100 -29
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/tool-args.d.ts +40 -0
- package/dist/src/tool-args.d.ts.map +1 -0
- package/dist/src/tool-args.js +207 -0
- package/dist/src/tool-args.js.map +1 -0
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +9 -2
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/types/agent.d.ts +27 -17
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +8 -0
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +17 -2
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +54 -10
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +2 -2
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +3 -4
- package/src/agent.ts +99 -36
- package/src/code-execution/index.ts +1 -0
- package/src/code-execution/py-runner.ts +104 -17
- package/src/code-execution/runtime-py.ts +47 -7
- package/src/code-execution/tool-definition.ts +65 -11
- package/src/config-checks.ts +4 -2
- package/src/framework.ts +3633 -956
- package/src/gate/event-gate.ts +14 -6
- package/src/held-writes.ts +59 -0
- package/src/index.ts +19 -4
- package/src/mcpl/capability-grant.ts +1 -1
- package/src/mcpl/channel-registry.ts +613 -160
- package/src/mcpl/convert-block.ts +15 -7
- package/src/mcpl/index.ts +14 -1
- package/src/mcpl/inference-router.ts +8 -7
- package/src/mcpl/log-value.ts +10 -0
- package/src/mcpl/modern-connection.ts +1182 -0
- package/src/mcpl/prefix-rule.ts +32 -0
- package/src/mcpl/protocol-family.ts +691 -0
- package/src/mcpl/push-coalescer.ts +67 -29
- package/src/mcpl/reference-fetcher.ts +288 -82
- package/src/mcpl/references.ts +123 -33
- package/src/mcpl/server-connection.ts +1050 -221
- package/src/mcpl/server-registry.ts +50 -12
- package/src/mcpl/tool-result-normalize.ts +294 -0
- package/src/mcpl/transport.ts +204 -62
- package/src/mcpl/types.ts +67 -20
- package/src/mcpl/visible-content.ts +2 -1
- package/src/module-registry.ts +68 -13
- package/src/modules/api/index.ts +3 -2
- package/src/modules/discord/discord-js-client.ts +288 -72
- package/src/modules/discord/index.ts +380 -77
- package/src/modules/discord/refusal.ts +13 -0
- package/src/modules/discord/types.ts +17 -9
- package/src/modules/health/index.ts +6 -2
- package/src/modules/index.ts +1 -1
- package/src/modules/workspace/disk-agreement.ts +46 -5
- package/src/modules/workspace/effects.ts +18 -7
- package/src/modules/workspace/index.ts +722 -124
- package/src/modules/workspace/observe.ts +591 -22
- package/src/modules/workspace/types.ts +10 -1
- package/src/modules/workspace/watcher.ts +126 -25
- package/src/silent-heartbeat.ts +184 -59
- package/src/tool-args.ts +213 -0
- package/src/tool-presentation.ts +9 -2
- package/src/types/agent.ts +27 -17
- package/src/types/events.ts +8 -0
- package/src/types/framework.ts +17 -2
- package/src/types/module.ts +55 -10
- package/src/types/trace.ts +2 -2
|
@@ -20,6 +20,7 @@ import { createInterface } from 'node:readline';
|
|
|
20
20
|
import { EventEmitter } from 'node:events';
|
|
21
21
|
import { StringDecoder } from 'node:string_decoder';
|
|
22
22
|
import WebSocket from 'ws';
|
|
23
|
+
import { describeCredentialError, noteDialSent, redactUrl, resolveServerBinding, urlAsDialed } from './protocol-family.js';
|
|
23
24
|
import { assertBooleanSetting } from '../config-checks.js';
|
|
24
25
|
import { logDetail } from './log-value.js';
|
|
25
26
|
/**
|
|
@@ -30,6 +31,9 @@ import { logDetail } from './log-value.js';
|
|
|
30
31
|
* - `'stderr'` `(line: string)` diagnostic line (stdio child stderr; never WS)
|
|
31
32
|
* - `'error'` `(err: Error)` transport-level error
|
|
32
33
|
* - `'close'` `(info: TransportCloseInfo)` transport closed (once)
|
|
34
|
+
* - `'unreaped'` `(failure: Error)` a stdio child whose pipe failed
|
|
35
|
+
* outlived SIGKILL too: the transport stays open, owning the child, and
|
|
36
|
+
* close() retries the reap (never WS)
|
|
33
37
|
*
|
|
34
38
|
* Inbound `'line'`/`'stderr'` events are buffered until the first matching
|
|
35
39
|
* listener attaches (and re-buffered whenever there are none), so no message is
|
|
@@ -74,6 +78,16 @@ export class McplTransport extends EventEmitter {
|
|
|
74
78
|
get stderrTail() {
|
|
75
79
|
return '';
|
|
76
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* The error a stdio child's stdin or stdout failed with, once one has. The
|
|
83
|
+
* transport is ending the child then, and stays open until it exits, but
|
|
84
|
+
* writes nothing more to it: writeLine drops each line, and both engines
|
|
85
|
+
* refuse a request as not sent. Undefined while writes go out, and always
|
|
86
|
+
* for a transport that has no pipes.
|
|
87
|
+
*/
|
|
88
|
+
get pipeFailure() {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
77
91
|
/**
|
|
78
92
|
* Resolves once the server's diagnostic stream has ended or closed, so that
|
|
79
93
|
* {@link stderrTail} holds what arrived on it, or once `ms` have passed while
|
|
@@ -145,7 +159,8 @@ export const CHILD_ENV_ALLOWLIST = [
|
|
|
145
159
|
'http_proxy', 'https_proxy', 'no_proxy',
|
|
146
160
|
'__CF_USER_TEXT_ENCODING',
|
|
147
161
|
// Windows equivalents, harmless elsewhere.
|
|
148
|
-
|
|
162
|
+
// USERNAME is Windows' USER, which Python's getpass.getuser() reads there.
|
|
163
|
+
'SYSTEMROOT', 'WINDIR', 'COMSPEC', 'PATHEXT', 'APPDATA', 'LOCALAPPDATA', 'USERPROFILE', 'USERNAME',
|
|
149
164
|
];
|
|
150
165
|
/** Environment for a stdio child: allowlisted host vars (+ LC_*), then the
|
|
151
166
|
* server's declared `env` on top. Windows names merge case-insensitively;
|
|
@@ -218,6 +233,9 @@ export class StdioTransport extends McplTransport {
|
|
|
218
233
|
get stderrTail() {
|
|
219
234
|
return (this.stderrCut ? '…' : '') + this.stderrEnd;
|
|
220
235
|
}
|
|
236
|
+
get pipeFailure() {
|
|
237
|
+
return this.pipeError;
|
|
238
|
+
}
|
|
221
239
|
stderrEnded(ms) {
|
|
222
240
|
const stderr = this.child.stderr;
|
|
223
241
|
if (!stderr || this.stderrDone)
|
|
@@ -237,7 +255,10 @@ export class StdioTransport extends McplTransport {
|
|
|
237
255
|
timer = setTimeout(done, ms);
|
|
238
256
|
});
|
|
239
257
|
}
|
|
240
|
-
constructor(child, rl,
|
|
258
|
+
constructor(child, rl,
|
|
259
|
+
/** The server this child serves, named in its stderr lines and in what
|
|
260
|
+
* its reaping reports. */
|
|
261
|
+
serverId) {
|
|
241
262
|
super(serverId);
|
|
242
263
|
this.child = child;
|
|
243
264
|
this.rl = rl;
|
|
@@ -274,17 +295,28 @@ export class StdioTransport extends McplTransport {
|
|
|
274
295
|
this.child.on('error', (err) => this.reportError(err));
|
|
275
296
|
// The child's stdin and stdout carry the protocol, so after an error on
|
|
276
297
|
// either, a write's EPIPE or a read error, this transport can't reach the
|
|
277
|
-
// child even if it's still running. The handler
|
|
278
|
-
//
|
|
279
|
-
//
|
|
280
|
-
//
|
|
281
|
-
//
|
|
282
|
-
//
|
|
283
|
-
//
|
|
298
|
+
// child even if it's still running. The handler ends the child as close()
|
|
299
|
+
// does, SIGTERM and then SIGKILL, in the one attempt close() shares, and
|
|
300
|
+
// the exit's close names the error, so the connection handles it as any
|
|
301
|
+
// other exit. The close is the report: no 'error' is emitted, nothing is
|
|
302
|
+
// thrown, and nothing more is written meanwhile (pipeFailure). The first
|
|
303
|
+
// error starts that one attempt, and a later one, from either pipe, adds
|
|
304
|
+
// nothing to it. A child that outlives SIGKILL too stays this
|
|
305
|
+
// transport's: 'unreaped' says so, unless the host is closing it, whose
|
|
306
|
+
// close() reports the failure itself. A child that stops reading without
|
|
307
|
+
// closing its stdin raises no error: the writes are buffered, and only
|
|
308
|
+
// request timeouts bound it (McplServerConfig.requestTimeoutMs). Under
|
|
309
|
+
// Bun a child that closes its stdin isn't reported either: Bun emits no
|
|
310
|
+
// 'error' for the writes to it (checked on 1.3.10, 1.4.3 and 1.4.4's
|
|
311
|
+
// canary), so request timeouts are its only bound too.
|
|
284
312
|
const endOnPipeError = (err) => {
|
|
285
|
-
this.pipeError
|
|
286
|
-
|
|
287
|
-
|
|
313
|
+
if (this.pipeError)
|
|
314
|
+
return;
|
|
315
|
+
this.pipeError = err;
|
|
316
|
+
void this.terminate().catch((failure) => {
|
|
317
|
+
if (!this.closed)
|
|
318
|
+
this.emit('unreaped', failure instanceof Error ? failure : new Error(String(failure)));
|
|
319
|
+
});
|
|
288
320
|
};
|
|
289
321
|
this.child.stdin?.on('error', endOnPipeError);
|
|
290
322
|
// On the stream itself, since close() closes readline, which takes its own
|
|
@@ -337,35 +369,101 @@ export class StdioTransport extends McplTransport {
|
|
|
337
369
|
return new StdioTransport(child, rl, config.id);
|
|
338
370
|
}
|
|
339
371
|
writeLine(json) {
|
|
372
|
+
// Nothing more goes to a child whose stdin or stdout has failed: this
|
|
373
|
+
// transport is ending it.
|
|
374
|
+
if (this.pipeError)
|
|
375
|
+
return;
|
|
340
376
|
// stdin may be gone if the child died between the closed-check and here.
|
|
341
377
|
this.child.stdin?.write(json + '\n');
|
|
342
378
|
}
|
|
343
|
-
|
|
379
|
+
closing = null;
|
|
380
|
+
/**
|
|
381
|
+
* Close and reap: resolves once the child has actually exited, not merely
|
|
382
|
+
* been signalled (`child.killed` is true as soon as a signal is sent). A
|
|
383
|
+
* child that outlives SIGTERM by {@link STDIO_EXIT_GRACE_MS} gets SIGKILL.
|
|
384
|
+
* If it still hasn't exited after that bound again, close rejects: an
|
|
385
|
+
* explicit cleanup failure, rather than waiting forever or claiming an
|
|
386
|
+
* exit that wasn't seen. Calls share one attempt, and so does a pipe
|
|
387
|
+
* failure that is already ending the child; a later call succeeds if the
|
|
388
|
+
* child has exited since.
|
|
389
|
+
*/
|
|
390
|
+
close() {
|
|
391
|
+
if (!this.closing) {
|
|
392
|
+
this.closing = this.reap();
|
|
393
|
+
return this.closing;
|
|
394
|
+
}
|
|
395
|
+
// A later call re-checks a failed verdict: a child that has exited since
|
|
396
|
+
// is reaped now. No new signals are sent.
|
|
397
|
+
return this.closing.catch((error) => {
|
|
398
|
+
if (this.exited())
|
|
399
|
+
return;
|
|
400
|
+
throw error;
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
async reap() {
|
|
344
404
|
this.markClosed({ reason: 'closed by host' });
|
|
345
405
|
this.rl.close();
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
406
|
+
await this.terminate();
|
|
407
|
+
}
|
|
408
|
+
/** Whether the child has exited, or never started (a spawn error). */
|
|
409
|
+
exited() {
|
|
410
|
+
return this.child.pid === undefined || this.child.exitCode !== null || this.child.signalCode !== null;
|
|
411
|
+
}
|
|
412
|
+
terminating = null;
|
|
413
|
+
/**
|
|
414
|
+
* End the child: SIGTERM, then SIGKILL once it has outlived SIGTERM by
|
|
415
|
+
* {@link STDIO_EXIT_GRACE_MS}. Resolves once it has exited; rejects if it
|
|
416
|
+
* still hasn't that long after SIGKILL. close() and a pipe failure share
|
|
417
|
+
* one attempt, so no second signal or timer goes out. A failed attempt is
|
|
418
|
+
* re-checked, not repeated: a child that has exited since resolves it.
|
|
419
|
+
*/
|
|
420
|
+
terminate() {
|
|
421
|
+
this.terminating ??= this.escalate();
|
|
422
|
+
return this.terminating.catch((error) => {
|
|
423
|
+
if (this.exited())
|
|
424
|
+
return;
|
|
425
|
+
throw error;
|
|
361
426
|
});
|
|
362
427
|
}
|
|
428
|
+
async escalate() {
|
|
429
|
+
const child = this.child;
|
|
430
|
+
if (this.exited())
|
|
431
|
+
return;
|
|
432
|
+
const exited = new Promise((resolve) => child.once('exit', () => resolve()));
|
|
433
|
+
const exitWithin = (ms) => new Promise((resolve) => {
|
|
434
|
+
const timer = setTimeout(() => resolve(false), ms);
|
|
435
|
+
void exited.then(() => { clearTimeout(timer); resolve(true); });
|
|
436
|
+
});
|
|
437
|
+
child.kill('SIGTERM');
|
|
438
|
+
if (await exitWithin(STDIO_EXIT_GRACE_MS))
|
|
439
|
+
return;
|
|
440
|
+
const named = `stdio child ${child.pid} of MCP server "${this.serverId}"`;
|
|
441
|
+
console.error(`[mcpl] ${named} ignored SIGTERM for ${STDIO_EXIT_GRACE_MS}ms — sending SIGKILL`);
|
|
442
|
+
child.kill('SIGKILL');
|
|
443
|
+
if (await exitWithin(STDIO_EXIT_GRACE_MS))
|
|
444
|
+
return;
|
|
445
|
+
throw new Error(`${named} did not exit within ${STDIO_EXIT_GRACE_MS}ms of SIGKILL; it could not be reaped`);
|
|
446
|
+
}
|
|
363
447
|
}
|
|
448
|
+
/** How long a stdio child gets to exit after SIGTERM, and again after SIGKILL. */
|
|
449
|
+
const STDIO_EXIT_GRACE_MS = 2_000;
|
|
364
450
|
// ---------------------------------------------------------------------------
|
|
365
451
|
// WebSocket
|
|
366
452
|
// ---------------------------------------------------------------------------
|
|
367
453
|
/** Timeout for the WebSocket to reach OPEN before we give up (ms). */
|
|
368
454
|
const WS_OPEN_TIMEOUT_MS = 15_000;
|
|
455
|
+
/** `work`, or `signal`'s reason once it aborts, whichever comes first. The
|
|
456
|
+
* listener comes off the signal when `work` settles, so a long-lived signal,
|
|
457
|
+
* such as a reconnect loop's, doesn't gather one per dial. */
|
|
458
|
+
function raceAbort(work, signal) {
|
|
459
|
+
if (signal.aborted)
|
|
460
|
+
return Promise.reject(signal.reason);
|
|
461
|
+
return new Promise((resolve, reject) => {
|
|
462
|
+
const onAbort = () => reject(signal.reason);
|
|
463
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
464
|
+
work.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));
|
|
465
|
+
});
|
|
466
|
+
}
|
|
369
467
|
export class WebSocketTransport extends McplTransport {
|
|
370
468
|
ws;
|
|
371
469
|
kind = 'websocket';
|
|
@@ -391,27 +489,43 @@ export class WebSocketTransport extends McplTransport {
|
|
|
391
489
|
/**
|
|
392
490
|
* Dial `config.url` and resolve once the socket is OPEN. Appends `?token=`
|
|
393
491
|
* when `config.token` is set. Rejects on connect error / timeout (and tears
|
|
394
|
-
* the socket down) so a failed dial never leaks an open handle.
|
|
492
|
+
* the socket down) so a failed dial never leaks an open handle. `signal`
|
|
493
|
+
* ends a dial whose connection is closed meanwhile, at once, rather than
|
|
494
|
+
* at the open timeout.
|
|
395
495
|
*/
|
|
396
|
-
static async open(config) {
|
|
496
|
+
static async open(config, signal) {
|
|
397
497
|
// Resolve the per-dial credential first: the provider runs on every
|
|
398
498
|
// connect AND reconnect, so rotation happens at the transport layer and
|
|
399
499
|
// nothing above it ever holds a credential.
|
|
400
500
|
let token = config.token ?? null;
|
|
501
|
+
const abandoned = () => new Error(`MCPL server "${config.id}" WebSocket connect abandoned: the connection was closed (${redactUrl(config.url)})`);
|
|
401
502
|
if (config.accessProvider) {
|
|
503
|
+
if (signal?.aborted)
|
|
504
|
+
throw abandoned();
|
|
402
505
|
try {
|
|
403
|
-
|
|
506
|
+
// A dial whose connection is closed meanwhile stops waiting for the
|
|
507
|
+
// provider; whatever the provider does later is ignored.
|
|
508
|
+
const provided = Promise.resolve(config.accessProvider());
|
|
509
|
+
provided.catch(() => { });
|
|
510
|
+
token = (signal ? await raceAbort(provided, signal) : await provided) ?? token;
|
|
404
511
|
}
|
|
405
512
|
catch (err) {
|
|
513
|
+
if (signal?.aborted)
|
|
514
|
+
throw abandoned();
|
|
406
515
|
// Fall back to the static token (if any) rather than failing the dial
|
|
407
516
|
// outright — the server will refuse a stale credential loudly anyway.
|
|
408
|
-
|
|
517
|
+
// The provider's own text may quote the credential, so it isn't logged.
|
|
518
|
+
console.error(`[mcpl] server "${config.id}": access provider failed (${describeCredentialError(err)}) — dialing with configured fallback`);
|
|
409
519
|
}
|
|
410
520
|
}
|
|
411
521
|
const url = buildWebSocketUrl(config, token);
|
|
522
|
+
// A provider's token is in this url, and the query may be re-encoded:
|
|
523
|
+
// the server's text is recorded with what the dial sent, the token in
|
|
524
|
+
// each form a token is replaced in.
|
|
525
|
+
noteDialSent(config, { url, token: token ?? undefined });
|
|
412
526
|
// Error strings travel: traces, logs, tool results the model reads. They
|
|
413
527
|
// get the endpoint, never the credential.
|
|
414
|
-
const redacted =
|
|
528
|
+
const redacted = redactUrl(config.url);
|
|
415
529
|
const ws = new WebSocket(url);
|
|
416
530
|
// A failed dial can emit 'error' MORE THAN ONCE on the raw socket (seen
|
|
417
531
|
// live 2026-08-03: an HTTP 502 upgrade-reject emits the "Expected 101"
|
|
@@ -423,38 +537,41 @@ export class WebSocketTransport extends McplTransport {
|
|
|
423
537
|
const swallowLateErrors = () => { };
|
|
424
538
|
return new Promise((resolve, reject) => {
|
|
425
539
|
let settled = false;
|
|
426
|
-
const
|
|
540
|
+
const abandon = (error) => {
|
|
427
541
|
if (settled)
|
|
428
542
|
return;
|
|
429
543
|
settled = true;
|
|
544
|
+
clearTimeout(timer);
|
|
545
|
+
signal?.removeEventListener('abort', onAbort);
|
|
430
546
|
ws.removeAllListeners();
|
|
431
547
|
ws.on('error', swallowLateErrors);
|
|
432
548
|
try {
|
|
433
549
|
ws.terminate();
|
|
434
550
|
}
|
|
435
551
|
catch { /* already gone */ }
|
|
436
|
-
reject(
|
|
552
|
+
reject(error);
|
|
553
|
+
};
|
|
554
|
+
const timer = setTimeout(() => {
|
|
555
|
+
abandon(new Error(`MCPL server "${config.id}" WebSocket connect timed out after ${WS_OPEN_TIMEOUT_MS}ms (${redacted})`));
|
|
437
556
|
}, WS_OPEN_TIMEOUT_MS);
|
|
557
|
+
const onAbort = () => {
|
|
558
|
+
abandon(new Error(`MCPL server "${config.id}" WebSocket connect abandoned: the connection was closed (${redacted})`));
|
|
559
|
+
};
|
|
560
|
+
if (signal?.aborted)
|
|
561
|
+
onAbort();
|
|
562
|
+
else
|
|
563
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
438
564
|
ws.once('open', () => {
|
|
439
565
|
if (settled)
|
|
440
566
|
return;
|
|
441
567
|
settled = true;
|
|
442
568
|
clearTimeout(timer);
|
|
569
|
+
signal?.removeEventListener('abort', onAbort);
|
|
443
570
|
ws.removeAllListeners('error'); // the instance re-attaches its own handlers
|
|
444
571
|
resolve(new WebSocketTransport(ws, config.id));
|
|
445
572
|
});
|
|
446
573
|
ws.once('error', (err) => {
|
|
447
|
-
|
|
448
|
-
return;
|
|
449
|
-
settled = true;
|
|
450
|
-
clearTimeout(timer);
|
|
451
|
-
ws.removeAllListeners();
|
|
452
|
-
ws.on('error', swallowLateErrors);
|
|
453
|
-
try {
|
|
454
|
-
ws.terminate();
|
|
455
|
-
}
|
|
456
|
-
catch { /* already gone */ }
|
|
457
|
-
reject(new Error(`MCPL server "${config.id}" WebSocket connect failed: ${err.message} (${redacted})`));
|
|
574
|
+
abandon(new Error(`MCPL server "${config.id}" WebSocket connect failed: ${err.message} (${redacted})`));
|
|
458
575
|
});
|
|
459
576
|
});
|
|
460
577
|
}
|
|
@@ -485,8 +602,9 @@ export class WebSocketTransport extends McplTransport {
|
|
|
485
602
|
}
|
|
486
603
|
}
|
|
487
604
|
/**
|
|
488
|
-
* Build the dial URL: validate it's a ws(s):// URL
|
|
489
|
-
* a
|
|
605
|
+
* Build the dial URL: validate it's a ws(s):// URL the ws library will dial,
|
|
606
|
+
* which refuses one with a fragment, and append the auth token as a `token`
|
|
607
|
+
* query param when provided (preserving any existing query).
|
|
490
608
|
*/
|
|
491
609
|
export function buildWebSocketUrl(config, tokenOverride) {
|
|
492
610
|
if (!config.url) {
|
|
@@ -497,28 +615,42 @@ export function buildWebSocketUrl(config, tokenOverride) {
|
|
|
497
615
|
parsed = new URL(config.url);
|
|
498
616
|
}
|
|
499
617
|
catch {
|
|
500
|
-
|
|
618
|
+
// Not echoed: a url that doesn't parse can't be redacted.
|
|
619
|
+
throw new Error(`MCPL server "${config.id}": invalid WebSocket url (it isn't shown, since it may carry a credential)`);
|
|
501
620
|
}
|
|
502
621
|
if (parsed.protocol !== 'ws:' && parsed.protocol !== 'wss:') {
|
|
503
622
|
throw new Error(`MCPL server "${config.id}": websocket url must be ws:// or wss://, got "${parsed.protocol}"`);
|
|
504
623
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
parsed.searchParams.set('token', token);
|
|
624
|
+
if (parsed.hash) {
|
|
625
|
+
throw new Error(`MCPL server "${config.id}": websocket url must not have a fragment, got "${parsed.hash}"`);
|
|
508
626
|
}
|
|
509
|
-
|
|
627
|
+
const token = tokenOverride !== undefined ? tokenOverride : config.token;
|
|
628
|
+
return urlAsDialed(parsed, token).toString();
|
|
510
629
|
}
|
|
511
630
|
// ---------------------------------------------------------------------------
|
|
512
631
|
// Factory
|
|
513
632
|
// ---------------------------------------------------------------------------
|
|
514
|
-
/** True when the config selects the WebSocket transport
|
|
515
|
-
*
|
|
633
|
+
/** True when the config selects the WebSocket transport, as
|
|
634
|
+
* {@link resolveServerBinding} decides it; false for any other transport and
|
|
635
|
+
* for a configuration it refuses. */
|
|
516
636
|
export function isWebSocketTransport(config) {
|
|
517
|
-
|
|
518
|
-
return
|
|
519
|
-
|
|
637
|
+
try {
|
|
638
|
+
return resolveServerBinding(config).transport === 'websocket';
|
|
639
|
+
}
|
|
640
|
+
catch {
|
|
520
641
|
return false;
|
|
521
|
-
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
/** Whether a server's binding dials it, over WebSocket or HTTP. False for a
|
|
645
|
+
* stdio launch, and for a configuration whose binding can't be resolved,
|
|
646
|
+
* which the family check refuses. */
|
|
647
|
+
function dialsNetwork(config) {
|
|
648
|
+
try {
|
|
649
|
+
return resolveServerBinding(config).transport !== 'stdio';
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
522
654
|
}
|
|
523
655
|
/** What `true` does for each boolean setting, as its refusal says it. A
|
|
524
656
|
* boolean setting added to McplServerConfig doesn't compile until it has
|
|
@@ -535,26 +667,30 @@ const SERVER_CONFIG_BOOLEANS = {
|
|
|
535
667
|
* only `true` as on, so the quotes would hide what the value does. null counts
|
|
536
668
|
* as not set, so a generated config that writes an unset setting as null
|
|
537
669
|
* keeps working. `inheritEnv` is checked only for a stdio server, since a
|
|
538
|
-
*
|
|
539
|
-
* and the value's kind, not the value, which could be a
|
|
540
|
-
* the wrong field.
|
|
670
|
+
* network server, WebSocket or HTTP, never reads it. The error names the
|
|
671
|
+
* server, the setting and the value's kind, not the value, which could be a
|
|
672
|
+
* secret pasted into the wrong field.
|
|
541
673
|
*/
|
|
542
674
|
export function assertServerConfigBooleans(config) {
|
|
543
675
|
for (const [setting, whatTrueDoes] of Object.entries(SERVER_CONFIG_BOOLEANS)) {
|
|
544
|
-
if (setting === 'inheritEnv' &&
|
|
676
|
+
if (setting === 'inheritEnv' && dialsNetwork(config))
|
|
545
677
|
continue;
|
|
546
678
|
assertBooleanSetting(`MCPL server "${config.id}" ${setting}`, config[setting], whatTrueDoes);
|
|
547
679
|
}
|
|
548
680
|
}
|
|
549
681
|
/**
|
|
550
|
-
* Open the transport
|
|
551
|
-
*
|
|
552
|
-
*
|
|
682
|
+
* Open the legacy transport `config` selects, as {@link resolveServerBinding}
|
|
683
|
+
* decides it: stdio for a `command`, MCPL's WebSocket binding for a ws(s)://
|
|
684
|
+
* url. A configuration it refuses, or one for the modern family (an http(s)
|
|
685
|
+
* url, or `protocol: 'modern'`), throws before anything is spawned or dialed.
|
|
686
|
+
* The returned transport is connected at the byte level but has NOT
|
|
687
|
+
* performed the MCPL handshake.
|
|
553
688
|
*/
|
|
554
|
-
export async function openTransport(config) {
|
|
555
|
-
|
|
556
|
-
|
|
689
|
+
export async function openTransport(config, signal) {
|
|
690
|
+
const binding = resolveServerBinding(config);
|
|
691
|
+
if (binding.family !== 'legacy') {
|
|
692
|
+
throw new Error(`MCP server "${config.id}" is configured for modern MCP; the legacy transports can't open it`);
|
|
557
693
|
}
|
|
558
|
-
return StdioTransport.spawn(config);
|
|
694
|
+
return binding.transport === 'websocket' ? WebSocketTransport.open(config, signal) : StdioTransport.spawn(config);
|
|
559
695
|
}
|
|
560
696
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAuC,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,SAAS,MAAM,IAAI,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAa3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAgB,aAAc,SAAQ,YAAY;IAUb,QAAQ;IAPzC,OAAO,GAAG,KAAK,CAAC;IAChB,UAAU,GAAa,EAAE,CAAC;IAC1B,YAAY,GAAa,EAAE,CAAC;IAEpC;;sCAEkC;IAClC,YAAyC,QAAiB;QACxD,KAAK,EAAE,CAAC;wBAD+B,QAAQ;QAE/C,iEAAiE;QACjE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;gBAChC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,cAAc,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;iBAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,cAAc,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,IAAI,WAAW;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,GAAW;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,wEAAwE;IAC9D,QAAQ,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;YACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,0EAA0E;IAChE,UAAU,CAAC,IAAY;QAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;YAC3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;OAQG;IACO,WAAW,CAAC,GAAU;QAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;aACxD,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,KAAK,IAAI,CAAC,IAAI,oDAAoD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;IACH,CAAC;IAED,iCAAiC;IACvB,UAAU,CAAC,IAAwB;QAC3C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;CAOF;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;IAChE,QAAQ,EAAE,KAAK,EAAE,MAAM;IACvB,SAAS,EAAE,iBAAiB;IAC5B,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe;IACvE,eAAe,EAAE,cAAc,EAAE,qBAAqB;IACtD,oBAAoB,EAAE,gBAAgB;IACtC,YAAY,EAAE,aAAa,EAAE,UAAU;IACvC,YAAY,EAAE,aAAa,EAAE,UAAU;IACvC,yBAAyB;IACzB,2CAA2C;IAC3C,2EAA2E;IAC3E,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU;CACnG,CAAC;AAEF;;;2EAG2E;AAC3E,MAAM,UAAU,aAAa,CAC3B,MAAoD,EACpD,OAAO,GAAsB,OAAO,CAAC,GAAG,EACxC,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,GAAG,GAAG,QAAQ,KAAK,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAsB,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,2EAA2E;YAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAE3C,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,yEAAyE;IACzE,oDAAoD;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,SAAS;YAClC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,GAAG;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,OAAO,cAAe,SAAQ,aAAa;IAqC5B,KAAK;IACL,EAAE;IArCZ,IAAI,GAAG,OAAgB,CAAC;IACjC,iFAAiF;IACzE,SAAS,CAAoB;IAC7B,SAAS,GAAG,EAAE,CAAC;IACf,SAAS,GAAG,KAAK,CAAC;IAC1B,wDAAwD;IAChD,UAAU,GAAG,KAAK,CAAC;IAE3B,IAAa,UAAU;QACrB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACtD,CAAC;IAED,IAAa,WAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEQ,WAAW,CAAC,EAAU;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,KAAiC,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,EAAE;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,yEAAyE;YACzE,2CAA2C;YAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3B,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YACmB,KAAmB,EACnB,EAAqB;IACtC;+BAC2B;IAC3B,QAAgB;QAEhB,KAAK,CAAC,QAAQ,CAAC,CAAC;qBANC,KAAK;kBACL,EAAE;QAOnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,yEAAyE;QACzE,gEAAgE;QAChE,cAAc;QACd,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC;YAClD,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACzC,kEAAkE;YAClE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,iBAAiB;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,gEAAgE;QAChE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAChC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,4EAA4E;QAC5E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,8DAA8D;QAC9D,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,qEAAqE;QACrE,uDAAuD;QACvD,MAAM,cAAc,GAAG,CAAC,GAAU,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC3B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,OAAgB,EAAE,EAAE;gBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3G,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC9C,2EAA2E;QAC3E,uEAAuE;QACvE,kEAAkE;QAClE,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAA0D,CAAC,CAAC,CAAC;QACtF,0EAA0E;QAC1E,uEAAuE;QACvE,kEAAkE;QAClE,+BAA+B;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACtD,IAAI;YACJ,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,sBAAsB;SAC7H,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAwB;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,gBAAgB,MAAM,CAAC,EAAE,uDAAuD,CACjF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;YACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;SAC3B,CAAC,CAAC;QACH,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,CAAC,GAAU,EAAE,EAAE;gBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,2BAA2B,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACvG,CAAC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAO,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,sEAAsE;QACtE,0BAA0B;QAC1B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,yEAAyE;QACzE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IAEO,OAAO,GAAyB,IAAI,CAAC;IAE7C;;;;;;;;;OASG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,yEAAyE;QACzE,0CAA0C;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,sEAAsE;IAC9D,MAAM;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxG,CAAC;IAEO,WAAW,GAAyB,IAAI,CAAC;IAEjD;;;;;;OAMG;IACK,SAAS;QACf,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YAClE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,MAAM,UAAU,CAAC,mBAAmB,CAAC;YAAE,OAAO;QAClD,MAAM,KAAK,GAAG,eAAe,KAAK,CAAC,GAAG,mBAAmB,IAAI,CAAC,QAAQ,GAAG,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,wBAAwB,mBAAmB,sBAAsB,CAAC,CAAC;QAChG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,MAAM,UAAU,CAAC,mBAAmB,CAAC;YAAE,OAAO;QAClD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,wBAAwB,mBAAmB,uCAAuC,CAC3F,CAAC;IACJ,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;+DAE+D;AAC/D,SAAS,SAAS,CAAI,IAAgB,EAAE,MAAmB;IACzD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAGd,EAAE;IAF9B,IAAI,GAAG,WAAoB,CAAC;IAErC,YAAqC,EAAa,EAAE,QAAgB;QAClE,KAAK,CAAC,QAAQ,CAAC,CAAC;kBADmB,EAAE;QAGrC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAuB,EAAE,QAAiB,EAAE,EAAE;YACnE,gEAAgE;YAChE,uEAAuE;YACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAwB,EAAE,MAAoB;QAC9D,oEAAoE;QACpE,wEAAwE;QACxE,4CAA4C;QAC5C,IAAI,KAAK,GAAkB,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QAChD,MAAM,SAAS,GAAG,GAAU,EAAE,CAC5B,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,6DAA6D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5H,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,oEAAoE;gBACpE,yDAAyD;gBACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC1D,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqD,CAAC,CAAC,CAAC;gBAC5E,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,KAAK,CAAC;YACjF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,MAAM,EAAE,OAAO;oBAAE,MAAM,SAAS,EAAE,CAAC;gBACvC,sEAAsE;gBACtE,sEAAsE;gBACtE,wEAAwE;gBACxE,OAAO,CAAC,KAAK,CACX,kBAAkB,MAAM,CAAC,EAAE,8BAA8B,uBAAuB,CAAC,GAAG,CAAC,sCAAsC,CAC5H,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,sEAAsE;QACtE,sEAAsE;QACtE,oCAAoC;QACpC,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;QACzD,yEAAyE;QACzE,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAE9B,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,iBAAiB,GAAG,GAAG,EAAE,GAA2C,CAAC,CAAC;QAE5E,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,OAAO,GAAG,CAAC,KAAY,EAAQ,EAAE;gBACrC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,EAAE,CAAC,kBAAkB,EAAE,CAAC;gBACxB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBAClC,IAAI,CAAC;oBAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,OAAO,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,uCAAuC,kBAAkB,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC3H,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,OAAO,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,6DAA6D,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxH,CAAC,CAAC;YACF,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBAC1B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C;gBAC5E,OAAO,CAAC,IAAI,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC9B,OAAO,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,+BAA+B,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC1G,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC5C,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC;oBAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB,EAAE,aAA6B;IACvF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,uDAAuD,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,4EAA4E,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,gBAAgB,MAAM,CAAC,EAAE,kDAAkD,MAAM,CAAC,QAAQ,GAAG,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,EAAE,mDAAmD,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACzE,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;sCAEsC;AACtC,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;sCAEsC;AACtC,SAAS,YAAY,CAAC,MAAwB;IAC5C,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD;;uDAEuD;AACvD,MAAM,sBAAsB,GAAmC;IAC7D,UAAU,EAAE,uIAAuI;IACnJ,SAAS,EAAE,gIAAgI;IAC3I,iBAAiB,EAAE,wIAAwI;CAC5J,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAwB;IACjE,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAoC,EAAE,CAAC;QAChH,IAAI,OAAO,KAAK,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/D,oBAAoB,CAAC,gBAAgB,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAwB,EAAE,MAAoB;IAChF,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,CAAC,EAAE,qEAAqE,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpH,CAAC"}
|