@atbash/cli 0.5.11 → 0.5.13

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 CHANGED
@@ -315,15 +315,19 @@ The agent is not trusted to know when it should stop. If the agent could loosen
315
315
  ```
316
316
  It runs the same read-only scan and prints the exact destination URL and the exact payload it *would* send, then exits. Nothing leaves the machine.
317
317
 
318
- 2. **That the package is genuinely ours (provenance).** Releases publish from CI with a signed provenance attestation linking the tarball to this public repo and commit:
318
+ 2. **That the package matches the artifact the Atbash deployment attests.** The
319
+ CLI repository is private, so npm provenance is not currently available. Compare
320
+ the exact version's registry integrity with the dashboard's same-origin manifest:
319
321
  ```bash
320
- npm view @atbash/cli --json | grep -A3 attestations # provenance is present
321
- npm audit signatures # verify signatures on an install
322
+ curl -s https://<HOST>/api/cli-releases
323
+ npm view @atbash/cli@<VERSION> dist.integrity
322
324
  ```
325
+ Matching values prove the tarball matches what that deployment vouches for; they
326
+ do not prove it was built from a particular source commit.
323
327
 
324
- 3. **Where it sends and what it sends.** Exactly one POST, only to the `--host` you pass (HTTPS required; a non-default host is flagged loudly). It relays agent / tool / skill **names**, MCP endpoint URLs and launch commands — never tokens, auth headers, env values, or file contents.
328
+ 3. **Where it sends and what it sends.** Exactly one POST, only to the `--host` you pass (HTTPS required; an unrecognized host is refused unless explicitly allowed). It relays agent / tool / skill **names**, sanitized MCP endpoint URLs and launch-command basenames — never tokens, auth headers, env values, or file contents.
325
329
 
326
- If any check fails — no provenance, an unexpected destination, or a dry-run payload containing anything sensitive — **don't run it.** Those are exactly the signals a malicious clone cannot fake.
330
+ If any check fails — an integrity value that does not match the deployment's manifest, an unexpected destination, or a dry-run payload containing anything sensitive — **don't run it.** Those are exactly the signals a malicious clone cannot fake.
327
331
 
328
332
  ## Command reference
329
333
 
@@ -345,8 +349,13 @@ npx --yes @atbash/cli connect G9MB-TS3U --host https://your-atbash-host --dry-ru
345
349
  | `--dry-run` | Do the scan and print exactly what would be sent, then exit WITHOUT sending |
346
350
  | `--json` | Machine-readable output (for agents / automation) |
347
351
  | `--home <dir>` | Home directory to scan (for testing) |
352
+ | `--introspect` | Opt in to starting configured MCP servers locally and listing their advertised surface; no tools are called |
353
+ | `--allow-unrecognized-host` | Explicitly permit a host outside the built-in Atbash allowlist |
348
354
 
349
- Read-only, one request, then it exits. Relays tool **names**, MCP URLs and launch commands only — never tokens, headers, env values, or file contents. The machine's hostname is printed so you can confirm the results came from the box you meant to scan. See [Verifying this CLI](#verifying-this-cli-before-you-run-it-humans--ai-agents).
355
+ Default discovery is read-only and sends one request. `--introspect` starts and stops
356
+ configured MCP server processes, so it is not purely read-only even though Atbash
357
+ never invokes their tools. See [Verifying this CLI](#verifying-this-cli-before-you-run-it-humans--ai-agents)
358
+ and the [release checklist](RELEASE_CHECKLIST.md).
350
359
 
351
360
  ### `atbash judge <action>`
352
361
 
@@ -2,12 +2,23 @@ import { Command } from "commander";
2
2
  interface DeclaredTool {
3
3
  name: string;
4
4
  description?: string;
5
+ /** Sanitized JSON-Schema shape (from MCP introspection) — structure only. */
6
+ inputSchema?: unknown;
7
+ }
8
+ interface SurfaceEvidence {
9
+ source: "local-declaration" | "mcp-tools-list" | "manifest";
10
+ status: "complete" | "incomplete";
11
+ transport?: "http" | "stdio";
12
+ server?: string;
13
+ observedAt?: string;
14
+ error?: string;
5
15
  }
6
16
  type Agent = {
7
17
  type: "declared";
8
18
  label: string;
9
19
  detail: string;
10
20
  declaredTools: DeclaredTool[];
21
+ surfaceEvidence?: SurfaceEvidence;
11
22
  } | {
12
23
  type: "config";
13
24
  label: string;
@@ -16,19 +27,29 @@ type Agent = {
16
27
  mcpServers: Record<string, unknown>;
17
28
  };
18
29
  };
19
- /** One-line skill description from SKILL.md frontmatter `description:` or first heading. */
30
+ /** One-line skill description from SKILL.md frontmatter `description:` or first heading.
31
+ * Frontmatter is parsed with a real YAML parser (handles quotes, block scalars,
32
+ * folded/multiline values and nested maps that the previous regex mis-read). */
20
33
  declare function describeSkill(text: string | undefined, fallback: string): string;
34
+ /** Descriptions are useful capability evidence, but never worth relaying a
35
+ * credential or binary/control content from an untrusted local skill file. */
36
+ declare function safeDescription(raw: string): string | undefined;
21
37
  /** Walk a skills root (bounded) → declared tools. Mirrors src/lib/scan/adapters/local-skills.ts. */
22
38
  declare function enumerateSkills(root: string, maxDepth?: number, cap?: number): DeclaredTool[];
23
39
  /**
24
- * Reduce an mcpServers map to the SANITIZED structural signal the hosted scanner
25
- * needs — server name, host+path of the endpoint, and executable basename — and
26
- * nothing else. Every value that could carry a live secret or PII (env, headers,
27
- * token, apiKey, args, url credentials, absolute command paths) is dropped or
28
- * reduced. The connector relays the tool SURFACE, never secrets.
40
+ * THE sanitization boundary. Reduce an mcpServers map to the SANITIZED structural
41
+ * signal the hosted scanner needs — server name, host+path of the endpoint, and
42
+ * executable basename — and nothing else. Every value that could carry a live
43
+ * secret or PII (env, headers, token, apiKey, args, url credentials, absolute
44
+ * command paths) is dropped or reduced. The connector relays the tool SURFACE,
45
+ * never secrets. Raw specs from `readAllMcpServers()` MUST pass through here before
46
+ * entering any relayed `Agent`.
47
+ *
48
+ * Caps the map at MAX_RELAY_SERVERS. Callers are expected to compare the returned
49
+ * size against the input size and label the result partial — see `discover()`.
29
50
  */
30
51
  declare function relaySafeServers(servers: Record<string, unknown>): Record<string, unknown>;
31
52
  /** Enumerate the agents/MCP tools configured on this machine. Read-only. */
32
53
  declare function discover(home: string): Agent[];
33
54
  export declare function registerConnectCommand(program: Command): void;
34
- export { discover, enumerateSkills, describeSkill, relaySafeServers };
55
+ export { discover, enumerateSkills, describeSkill, relaySafeServers, safeDescription };
@@ -41,10 +41,15 @@ exports.discover = discover;
41
41
  exports.enumerateSkills = enumerateSkills;
42
42
  exports.describeSkill = describeSkill;
43
43
  exports.relaySafeServers = relaySafeServers;
44
+ exports.safeDescription = safeDescription;
44
45
  const fs = __importStar(require("fs"));
45
46
  const os = __importStar(require("os"));
46
47
  const path = __importStar(require("path"));
47
48
  const chalk_1 = __importDefault(require("chalk"));
49
+ const yaml_1 = require("yaml");
50
+ const TOML = __importStar(require("@iarna/toml"));
51
+ const jsonc = __importStar(require("jsonc-parser"));
52
+ const introspect_mcp_1 = require("./introspect-mcp");
48
53
  /**
49
54
  * `atbash connect <code>` — the local connector.
50
55
  *
@@ -84,6 +89,18 @@ const KNOWN_HOSTS = new Set([
84
89
  * https://atbash.ai once production serves it (KNOWN_HOSTS already allows it).
85
90
  */
86
91
  const DEFAULT_HOST = "https://chromia-verified-ai-dev-two.vercel.app";
92
+ // Discovery is intentionally bounded. A local config is untrusted input even
93
+ // though it lives on the operator's machine: a giant/malformed file must not turn
94
+ // a one-shot connector into a memory or latency sink.
95
+ const MAX_CONFIG_BYTES = 2 * 1024 * 1024;
96
+ const MAX_SKILL_BYTES = 256 * 1024;
97
+ const MAX_RELAY_SERVERS = 200;
98
+ const SECRET_DESCRIPTION = [
99
+ /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,
100
+ /\bBearer\s+[A-Za-z0-9._~+/=-]{12,}/i,
101
+ /\b(?:sk|pk|ghp|github_pat|xox[baprs]|AKIA)[-_A-Za-z0-9]{12,}\b/,
102
+ /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{8,}\b/,
103
+ ];
87
104
  // ── filesystem helpers (all best-effort; never throw) ────────────────────────
88
105
  const exists = (...segs) => {
89
106
  try {
@@ -94,16 +111,23 @@ const exists = (...segs) => {
94
111
  }
95
112
  };
96
113
  const readJson = (...segs) => {
97
- try {
98
- return JSON.parse(fs.readFileSync(path.join(...segs), "utf8"));
99
- }
100
- catch {
114
+ // JSONC-tolerant: many editor MCP configs (VS Code, Cursor, Windsurf) allow
115
+ // comments and trailing commas, which JSON.parse rejects — silently reporting
116
+ // "nothing found" on a perfectly valid config. jsonc-parser is best-effort and
117
+ // never throws; it returns the parsed value alongside a (here-ignored) error list.
118
+ const text = readText(MAX_CONFIG_BYTES, ...segs);
119
+ if (text === undefined)
101
120
  return null;
102
- }
121
+ const errors = [];
122
+ const val = jsonc.parse(text, errors, { allowTrailingComma: true, disallowComments: false });
123
+ return val && typeof val === "object" && !Array.isArray(val) ? val : null;
103
124
  };
104
- const readText = (...segs) => {
125
+ const readText = (maxBytes, ...segs) => {
105
126
  try {
106
- return fs.readFileSync(path.join(...segs), "utf8");
127
+ const file = path.join(...segs);
128
+ if (fs.statSync(file).size > maxBytes)
129
+ return undefined;
130
+ return fs.readFileSync(file, "utf8");
107
131
  }
108
132
  catch {
109
133
  return undefined;
@@ -119,37 +143,32 @@ const listDirs = (...segs) => {
119
143
  return [];
120
144
  }
121
145
  };
122
- /** One-line skill description from SKILL.md frontmatter `description:` or first heading. */
146
+ /** One-line skill description from SKILL.md frontmatter `description:` or first heading.
147
+ * Frontmatter is parsed with a real YAML parser (handles quotes, block scalars,
148
+ * folded/multiline values and nested maps that the previous regex mis-read). */
123
149
  function describeSkill(text, fallback) {
124
150
  if (!text)
125
151
  return fallback;
126
152
  const frontmatter = (text.match(/^---\r?\n([\s\S]*?)\r?\n---/) || [])[1];
127
- const field = frontmatter ? frontmatter.match(/^[ \t]*description:[ \t]*(.*)$/im) : null;
128
- if (frontmatter && field) {
129
- const inline = field[1].trim();
130
- if (/^[>|][+-]?\d*$/.test(inline)) {
131
- const lines = [];
132
- for (const line of frontmatter.slice((field.index ?? 0) + field[0].length).split(/\r?\n/)) {
133
- if (!line.trim()) {
134
- if (lines.length)
135
- break;
136
- continue;
137
- }
138
- if (!/^[ \t]/.test(line))
139
- break; // dedent ends the block scalar
140
- lines.push(line.trim());
141
- }
142
- const folded = lines.join(" ").trim();
143
- if (folded)
144
- return folded;
145
- }
146
- else if (inline) {
147
- return inline.replace(/^["']|["']$/g, "").trim();
153
+ if (frontmatter) {
154
+ try {
155
+ const data = (0, yaml_1.parse)(frontmatter);
156
+ const desc = data && typeof data.description === "string" ? data.description : "";
157
+ const oneLine = desc.replace(/\s+/g, " ").trim();
158
+ if (oneLine)
159
+ return safeDescription(oneLine) ?? fallback;
148
160
  }
161
+ catch { /* malformed frontmatter — fall through to first heading */ }
149
162
  }
150
163
  const heading = text.split(/\r?\n/).map((l) => l.trim())
151
164
  .find((l) => l && !l.startsWith("---") && !/^(name|description):/i.test(l));
152
- return heading ? heading.replace(/^#+\s*/, "").trim() : fallback;
165
+ return heading ? (safeDescription(heading.replace(/^#+\s*/, "").trim()) ?? fallback) : fallback;
166
+ }
167
+ /** Descriptions are useful capability evidence, but never worth relaying a
168
+ * credential or binary/control content from an untrusted local skill file. */
169
+ function safeDescription(raw) {
170
+ const value = raw.replace(/[\u0000-\u001f\u007f]+/g, " ").replace(/\s+/g, " ").trim().slice(0, 240);
171
+ return value && !SECRET_DESCRIPTION.some((pattern) => pattern.test(value)) ? value : undefined;
153
172
  }
154
173
  /** Walk a skills root (bounded) → declared tools. Mirrors src/lib/scan/adapters/local-skills.ts. */
155
174
  function enumerateSkills(root, maxDepth = 3, cap = 400) {
@@ -164,9 +183,10 @@ function enumerateSkills(root, maxDepth = 3, cap = 400) {
164
183
  catch {
165
184
  return;
166
185
  }
167
- if (entries.some((e) => e.isFile() && e.name === "SKILL.md")) {
186
+ const skillFile = entries.find((e) => e.isFile() && e.name.toLowerCase() === "skill.md");
187
+ if (skillFile) {
168
188
  const name = path.basename(dir);
169
- tools.push({ name, description: describeSkill(readText(dir, "SKILL.md"), `${category} skill`) });
189
+ tools.push({ name, description: describeSkill(readText(MAX_SKILL_BYTES, dir, skillFile.name), `${category} skill`) });
170
190
  return; // a skill folder is a leaf
171
191
  }
172
192
  for (const e of entries)
@@ -193,15 +213,26 @@ const MCP_CONFIGS = [
193
213
  */
194
214
  function parseCodexMcpServers(toml) {
195
215
  const servers = {};
196
- const re = /\[mcp_servers\.(?:"([^"\]]+)"|([A-Za-z0-9_-]+))\]([\s\S]*?)(?=\n\s*\[|$)/g;
197
- let m;
198
- while ((m = re.exec(toml))) {
199
- const body = m[3];
200
- if (/^\s*enabled\s*=\s*false\b/m.test(body))
216
+ let parsed;
217
+ try {
218
+ parsed = TOML.parse(toml);
219
+ }
220
+ catch {
221
+ return servers;
222
+ }
223
+ const mcp = parsed.mcp_servers && typeof parsed.mcp_servers === "object"
224
+ ? parsed.mcp_servers : undefined;
225
+ if (!mcp)
226
+ return servers;
227
+ for (const [name, spec] of Object.entries(mcp)) {
228
+ if (!spec || typeof spec !== "object")
229
+ continue;
230
+ const s = spec;
231
+ if (s.enabled === false)
201
232
  continue; // declared but switched off
202
- const url = (body.match(/^\s*url\s*=\s*"([^"]*)"/m) || [])[1];
203
- const command = (body.match(/^\s*command\s*=\s*"([^"]*)"/m) || [])[1];
204
- servers[m[1] || m[2]] = url ? { url } : command ? { command } : {};
233
+ const url = typeof s.url === "string" ? s.url : undefined;
234
+ const command = typeof s.command === "string" ? s.command : undefined;
235
+ servers[name] = url ? { url } : command ? { command } : {};
205
236
  }
206
237
  return servers;
207
238
  }
@@ -231,22 +262,36 @@ function safeServerUrl(raw) {
231
262
  return undefined;
232
263
  }
233
264
  }
234
- /** Keep the launch command (the executable)it's capability signal, not a
235
- * secret. Arguments live in a separate `args` field which we never relay, so
236
- * the command string itself carries no credentials. */
265
+ /** Reduce a launch command to its executable BASENAME the capability signal
266
+ * ("node", "npx", "uvx", "python") without the absolute path that would leak
267
+ * the local username and directory layout (e.g. /Users/alice/private/agent/run).
268
+ * Takes the first whitespace token ("npx -y pkg" → "npx"), then basenames it, and
269
+ * rejects multiline / absurdly long values outright. */
237
270
  function safeServerCommand(raw) {
238
- return typeof raw === "string" && raw.trim() ? raw.trim() : undefined;
271
+ if (typeof raw !== "string")
272
+ return undefined;
273
+ const trimmed = raw.trim();
274
+ if (!trimmed || /[\r\n]/.test(trimmed) || trimmed.length > 200)
275
+ return undefined;
276
+ const first = trimmed.split(/\s+/)[0];
277
+ const base = path.basename(first);
278
+ return base || undefined;
239
279
  }
240
280
  /**
241
- * Reduce an mcpServers map to the SANITIZED structural signal the hosted scanner
242
- * needs — server name, host+path of the endpoint, and executable basename — and
243
- * nothing else. Every value that could carry a live secret or PII (env, headers,
244
- * token, apiKey, args, url credentials, absolute command paths) is dropped or
245
- * reduced. The connector relays the tool SURFACE, never secrets.
281
+ * THE sanitization boundary. Reduce an mcpServers map to the SANITIZED structural
282
+ * signal the hosted scanner needs — server name, host+path of the endpoint, and
283
+ * executable basename — and nothing else. Every value that could carry a live
284
+ * secret or PII (env, headers, token, apiKey, args, url credentials, absolute
285
+ * command paths) is dropped or reduced. The connector relays the tool SURFACE,
286
+ * never secrets. Raw specs from `readAllMcpServers()` MUST pass through here before
287
+ * entering any relayed `Agent`.
288
+ *
289
+ * Caps the map at MAX_RELAY_SERVERS. Callers are expected to compare the returned
290
+ * size against the input size and label the result partial — see `discover()`.
246
291
  */
247
292
  function relaySafeServers(servers) {
248
293
  const out = {};
249
- for (const [name, spec] of Object.entries(servers)) {
294
+ for (const [name, spec] of Object.entries(servers).slice(0, MAX_RELAY_SERVERS)) {
250
295
  if (!spec || typeof spec !== "object") {
251
296
  out[name] = {};
252
297
  continue;
@@ -260,9 +305,9 @@ function relaySafeServers(servers) {
260
305
  if (command)
261
306
  safe.command = command;
262
307
  if (typeof s.type === "string")
263
- safe.type = s.type;
308
+ safe.type = s.type.slice(0, 40);
264
309
  if (typeof s.transport === "string")
265
- safe.transport = s.transport;
310
+ safe.transport = s.transport.slice(0, 40);
266
311
  out[name] = safe;
267
312
  }
268
313
  return out;
@@ -284,17 +329,41 @@ function discover(home) {
284
329
  tools.push({ name: `plugin:${name}`, description: "Hermes plugin" });
285
330
  agents.push({ type: "declared", label: "Hermes", detail: `${tools.length} skill${tools.length === 1 ? "" : "s"} / plugins`, declaredTools: tools });
286
331
  }
287
- // MCP-config files config (mcpServers) blobs.
332
+ // MCP config sources collected once as RAW specs, then sanitized for relay.
333
+ for (const { label, servers } of readAllMcpServers(home)) {
334
+ const count = Object.keys(servers).length;
335
+ const safe = relaySafeServers(servers);
336
+ // Say so when the relay cap truncated the map. A payload listing 200 of 250
337
+ // servers under a bare "250 MCP servers" label reads as complete coverage.
338
+ const relayed = Object.keys(safe).length;
339
+ const detail = relayed < count
340
+ ? `${relayed} of ${count} MCP servers relayed (capped at ${MAX_RELAY_SERVERS} — list is partial)`
341
+ : `${count} MCP server${count === 1 ? "" : "s"}`;
342
+ agents.push({ type: "config", label, detail, config: { mcpServers: safe } });
343
+ }
344
+ return agents;
345
+ }
346
+ /**
347
+ * ⚠️ SECURITY INVARIANT — this returns RAW, UNSANITIZED server specs.
348
+ * The values here contain live secrets: url credentials, `env`, `headers`,
349
+ * `token`, `apiKey`, and absolute command paths. They exist ONLY so `--introspect`
350
+ * can reach a server locally. They MUST NEVER be put into the relay payload
351
+ * directly. Every path that turns these into an `Agent` MUST route them through
352
+ * `relaySafeServers()` first (the single sanitization boundary). If you add a new
353
+ * consumer, sanitize before it leaves this file. Callers today: `discover()`
354
+ * (sanitizes) and the introspection pass (local only, never relayed).
355
+ */
356
+ function readAllMcpServers(home) {
357
+ const out = [];
288
358
  const seen = new Set();
289
359
  for (const { label, segs } of MCP_CONFIGS) {
290
360
  if (seen.has(label))
291
361
  continue;
292
362
  const cfg = readJson(home, ...segs);
293
363
  const servers = cfg && typeof cfg === "object" ? (cfg.mcpServers ?? cfg.servers) : undefined;
294
- const count = servers && typeof servers === "object" ? Object.keys(servers).length : 0;
295
- if (count > 0 && servers) {
364
+ if (servers && typeof servers === "object" && Object.keys(servers).length > 0) {
296
365
  seen.add(label);
297
- agents.push({ type: "config", label, detail: `${count} MCP server${count === 1 ? "" : "s"}`, config: { mcpServers: relaySafeServers(servers) } });
366
+ out.push({ label, servers });
298
367
  }
299
368
  }
300
369
  // Claude Code (~/.claude.json): servers live globally AND per-project — merge both.
@@ -313,19 +382,17 @@ function discover(home) {
313
382
  if (projects && typeof projects === "object")
314
383
  for (const p of Object.values(projects))
315
384
  collect(p);
316
- const count = Object.keys(merged).length;
317
- if (count > 0)
318
- agents.push({ type: "config", label: "Claude Code", detail: `${count} MCP server${count === 1 ? "" : "s"}`, config: { mcpServers: relaySafeServers(merged) } });
385
+ if (Object.keys(merged).length > 0)
386
+ out.push({ label: "Claude Code", servers: merged });
319
387
  }
320
- // OpenAI Codex CLI (~/.codex/config.toml) — TOML, parsed separately.
321
- const codexToml = readText(home, ".codex", "config.toml");
388
+ // OpenAI Codex CLI (~/.codex/config.toml) — TOML.
389
+ const codexToml = readText(MAX_CONFIG_BYTES, home, ".codex", "config.toml");
322
390
  if (codexToml) {
323
391
  const servers = parseCodexMcpServers(codexToml);
324
- const count = Object.keys(servers).length;
325
- if (count > 0)
326
- agents.push({ type: "config", label: "Codex", detail: `${count} MCP server${count === 1 ? "" : "s"}`, config: { mcpServers: relaySafeServers(servers) } });
392
+ if (Object.keys(servers).length > 0)
393
+ out.push({ label: "Codex", servers });
327
394
  }
328
- return agents;
395
+ return out;
329
396
  }
330
397
  function registerConnectCommand(program) {
331
398
  program
@@ -336,6 +403,8 @@ function registerConnectCommand(program) {
336
403
  .option("--home <dir>", "Home directory to scan (for testing)")
337
404
  .option("--dry-run", "Do the read-only scan and print exactly what WOULD be sent (destination + tool names), then exit WITHOUT sending")
338
405
  .option("--json", "Emit machine-readable JSON instead of formatted text (for agents / automation)")
406
+ .option("--introspect", "Also START configured MCP servers locally and list their advertised tools/resources (introspection-confirmed surface, not runtime behavior), then stop them. Never calls a tool")
407
+ .option("--allow-unrecognized-host", "Permit relaying to a --host that is not an official Atbash deployment (otherwise the command refuses to send)")
339
408
  .action(async (rawCode, opts) => {
340
409
  const home = opts.home || os.homedir();
341
410
  const host = (opts.host || process.env.ATBASH_HOST || DEFAULT_HOST).replace(/\/+$/, "");
@@ -343,6 +412,8 @@ function registerConnectCommand(program) {
343
412
  const machine = os.hostname();
344
413
  const dryRun = !!opts.dryRun;
345
414
  const asJson = !!opts.json;
415
+ const introspect = !!opts.introspect;
416
+ const allowUnrecognizedHost = !!opts.allowUnrecognizedHost;
346
417
  const endpoint = `${host}/api/agent-scan/session/${encodeURIComponent(code)}`;
347
418
  // Parsed up front so the destination verdict is available to every output
348
419
  // path, including the JSON one an agent reads before deciding to proceed.
@@ -361,8 +432,13 @@ function registerConnectCommand(program) {
361
432
  // gets a stable, parseable description of exactly what this command is/was doing.
362
433
  const emitJson = (extra) => console.log(JSON.stringify({
363
434
  tool: "@atbash/cli connect",
364
- transmits: "agent/tool/skill names, MCP endpoint URLs and launch commands — never tokens, auth headers, env values, or file contents",
365
- readOnly: true,
435
+ transmits: (introspect
436
+ ? "agent/tool/skill names, MCP endpoint URLs, launch command basenames, and MCP-introspected tool names/descriptions"
437
+ : "agent/tool/skill names, MCP endpoint URLs and launch command basenames")
438
+ + " — never tokens, auth headers, env values, tool inputs/outputs, or file contents",
439
+ // Introspection STARTS local MCP servers, so the run is not purely read-only.
440
+ readOnly: !introspect,
441
+ startsLocalServers: introspect,
366
442
  requests: dryRun ? 0 : 1,
367
443
  machine, host, endpoint, code,
368
444
  // An agent should treat `recognizedHost: false` as a reason to stop and
@@ -390,7 +466,91 @@ function registerConnectCommand(program) {
390
466
  console.error("\n" + chalk_1.default.red(` ✗ ${msg}.`) + chalk_1.default.dim(" Use an https:// host (localhost may use http).\n"));
391
467
  process.exit(1);
392
468
  }
469
+ // An unrecognized destination is the one real attack (a swapped --host). A
470
+ // warning is not enough for the automation path, which skips prompts — so
471
+ // refuse to SEND to an unknown host unless the operator explicitly opts in.
472
+ // (--dry-run never sends, so it may proceed to preview.)
473
+ if (!recognizedHost && !allowUnrecognizedHost && !dryRun) {
474
+ const msg = `refusing to relay to an unrecognized host (${hostname || host}) — not an official Atbash deployment. Re-run with --allow-unrecognized-host if you trust it.`;
475
+ if (asJson)
476
+ emitJson({ ok: false, error: msg });
477
+ else
478
+ console.error("\n" + chalk_1.default.red(` ✗ ${msg}`) + "\n");
479
+ process.exit(1);
480
+ }
393
481
  const agents = discover(home);
482
+ // ── optional: MCP introspection (starts servers locally) ──────────────────
483
+ // Turns name-only MCP entries into an introspection-confirmed ADVERTISED
484
+ // surface. This does not verify implementation behavior. Additive: each
485
+ // reachable server contributes a declared-tools agent the scanner classifies
486
+ // exactly like any other. Only sanitized names/descriptions are relayed.
487
+ if (introspect) {
488
+ const sources = readAllMcpServers(home);
489
+ if (sources.length > 0) {
490
+ if (!asJson)
491
+ console.log(chalk_1.default.dim(` Introspecting ${sources.reduce((n, s) => n + Object.keys(s.servers).length, 0)} MCP server(s) locally (starting & stopping each)…`));
492
+ const results = await (0, introspect_mcp_1.introspectServers)(sources, {
493
+ onProgress: asJson ? undefined : (label, server, res) => console.log(chalk_1.default.dim(` ${res.ok ? chalk_1.default.green("✓") : chalk_1.default.yellow("•")} ${label} · ${server}${res.ok ? ` → ${res.tools.length} tool(s)` : ` (${res.error ?? "unreachable"})`}`)),
494
+ });
495
+ for (const r of results) {
496
+ // The introspection pass is capped. Record the shortfall as an
497
+ // explicitly INCOMPLETE surface rather than letting those servers
498
+ // vanish from a report that otherwise reads as exhaustive.
499
+ if (r.omitted) {
500
+ const note = `${r.omitted} server(s) in this source were not introspected — the run hit its per-scan server cap`;
501
+ if (!asJson)
502
+ console.log(chalk_1.default.yellow(` ! ${r.label} · ${note}`));
503
+ agents.push({
504
+ type: "declared",
505
+ label: `${r.label} · (not introspected)`,
506
+ detail: `${r.omitted} MCP server(s) skipped · introspection incomplete`,
507
+ declaredTools: [],
508
+ surfaceEvidence: {
509
+ source: "mcp-tools-list",
510
+ status: "incomplete",
511
+ observedAt: new Date().toISOString(),
512
+ error: note,
513
+ },
514
+ });
515
+ }
516
+ for (const s of r.servers) {
517
+ if (!s.ok) {
518
+ agents.push({
519
+ type: "declared",
520
+ label: `${r.label} · ${s.server}`,
521
+ detail: `MCP ${s.transport} · introspection incomplete`,
522
+ declaredTools: [],
523
+ surfaceEvidence: {
524
+ source: "mcp-tools-list",
525
+ status: "incomplete",
526
+ transport: s.transport,
527
+ server: s.server,
528
+ observedAt: new Date().toISOString(),
529
+ error: (s.error ?? "unreachable").slice(0, 300),
530
+ },
531
+ });
532
+ continue;
533
+ }
534
+ const extras = [s.resourceCount ? `${s.resourceCount} resource${s.resourceCount === 1 ? "" : "s"}` : "", s.promptCount ? `${s.promptCount} prompt${s.promptCount === 1 ? "" : "s"}` : ""].filter(Boolean);
535
+ agents.push({
536
+ type: "declared",
537
+ label: `${r.label} · ${s.server}`,
538
+ // "introspection-confirmed" — the server DECLARED these tools when we
539
+ // listed them; it is not proof of what the implementation will do.
540
+ detail: `${s.tools.length} tool${s.tools.length === 1 ? "" : "s"} (MCP ${s.transport} · introspection-confirmed)${extras.length ? " · " + extras.join(", ") : ""}`,
541
+ declaredTools: s.tools,
542
+ surfaceEvidence: {
543
+ source: "mcp-tools-list",
544
+ status: "complete",
545
+ transport: s.transport,
546
+ server: s.server,
547
+ observedAt: new Date().toISOString(),
548
+ },
549
+ });
550
+ }
551
+ }
552
+ }
553
+ }
394
554
  const payload = { agents, machine };
395
555
  // ── machine-readable path (agents / automation) ──────────────────────────
396
556
  if (asJson) {
@@ -415,7 +575,9 @@ function registerConnectCommand(program) {
415
575
  // reviewing this command can confirm nothing hidden is happening.
416
576
  console.log(chalk_1.default.dim(" Reads (read-only): known agent/MCP config files under your home dir — OpenClaw, Hermes,"));
417
577
  console.log(chalk_1.default.dim(" Claude Desktop/Code, Cursor, Windsurf, VS Code, Gemini, Continue, Codex."));
418
- console.log(chalk_1.default.dim(" Relays names, MCP URLs and launch commands only — never tokens, headers, env values or file contents."));
578
+ console.log(chalk_1.default.dim(" Relays names, MCP URLs and launch-command basenames only — never tokens, headers, env values or file contents."));
579
+ if (introspect)
580
+ console.log(chalk_1.default.yellow(" Introspection ON:") + chalk_1.default.dim(" also STARTS your MCP servers locally to list their tools, then stops them. Relays tool names/descriptions only — never inputs, outputs, args or env."));
419
581
  console.log(chalk_1.default.dim(` Sends: ${dryRun ? "nothing (dry run)" : "one POST to the destination below, then exits"}.`));
420
582
  // Machine identity is stated loudly on purpose: if this ran somewhere other
421
583
  // than the computer you mean to govern (an AI-assistant sandbox, a VM, a
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4UA,wDA6NC;AAGQ,4BAAQ;AAAE,0CAAe;AAAE,sCAAa;AAAE,4CAAgB;AAAE,0CAAe;AA5iBpF,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAE7B,kDAA0B;AAC1B,+BAA0C;AAC1C,kDAAoC;AACpC,oDAAsC;AACtC,qDAAqD;AAErD;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,WAAW;IACX,eAAe;IACf,wCAAwC;IACxC,2CAA2C;CAC5C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,YAAY,GAAG,gDAAgD,CAAC;AAoBtE,6EAA6E;AAC7E,kFAAkF;AAClF,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACzC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,kBAAkB,GAAG;IACzB,mDAAmD;IACnD,qCAAqC;IACrC,gEAAgE;IAChE,kEAAkE;CACnE,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAc,EAAW,EAAE;IAC5C,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3E,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAc,EAAkC,EAAE;IACrE,4EAA4E;IAC5E,8EAA8E;IAC9E,+EAA+E;IAC/E,mFAAmF;IACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAC,IAAI,CAAC;AACzG,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,GAAG,IAAc,EAAsB,EAAE;IAC3E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,SAAS,CAAC;QACxD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAc,EAAY,EAAE;IAC/C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC/D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC,CAAC;AAEF;;iFAEiF;AACjF,SAAS,aAAa,CAAC,IAAwB,EAAE,QAAgB;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,YAAS,EAAC,WAAW,CAAmC,CAAC;YACtE,MAAM,IAAI,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,OAAO;gBAAE,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClG,CAAC;AAED;8EAC8E;AAC9E,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpG,OAAO,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC;AAED,oGAAoG;AACpG,SAAS,eAAe,CAAC,IAAY,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG;IAC5D,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,QAAgB,EAAQ,EAAE;QAClE,IAAI,KAAK,GAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;YAAE,OAAO;QACpD,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACjF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;QACzF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtH,OAAO,CAAC,2BAA2B;QACrC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAClI,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,WAAW,GAAwC;IACvD,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,EAAE;IAC7G,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,EAAE;IACtF,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IAClD,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE;IACxE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACzD,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE;IAC3D,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IACvF,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACtE,CAAC,CAAE,MAAM,CAAC,WAAuC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK;YAAE,SAAS,CAAC,4BAA4B;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH;;oFAEoF;AACpF,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC7D,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC;AAED;;;;yDAIyD;AACzD,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,SAAS,CAAC;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,OAAgC;IACxD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACpE,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1D,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAClF,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,mFAAmF;IACnF,IAAI,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACjJ,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACxJ,CAAC;IAED,oDAAoD;IACpD,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9I,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACtJ,CAAC;IAED,8EAA8E;IAC9E,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,4EAA4E;QAC5E,2EAA2E;QAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK;YAC5B,CAAC,CAAC,GAAG,OAAO,OAAO,KAAK,mCAAmC,iBAAiB,qBAAqB;YACjG,CAAC,CAAC,GAAG,KAAK,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAA0D,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,CAAyC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtI,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IACnI,CAAC;IAED,oFAAoF;IACpF,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,CAAU,EAAQ,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAA8B,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;wBAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5G,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,QAAQ,GAAI,EAA6B,CAAC,QAAQ,CAAC;QACzD,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAClG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,8HAA8H,CAAC;SAC3I,QAAQ,CAAC,QAAQ,EAAE,sEAAsE,CAAC;SAC1F,MAAM,CAAC,cAAc,EAAE,wCAAwC,CAAC;SAChE,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,kHAAkH,CAAC;SACvI,MAAM,CAAC,QAAQ,EAAE,gFAAgF,CAAC;SAClG,MAAM,CAAC,cAAc,EAAE,iLAAiL,CAAC;SACzM,MAAM,CAAC,2BAA2B,EAAE,+GAA+G,CAAC;SACpJ,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAA+H,EAAE,EAAE;QACjK,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC3D,MAAM,QAAQ,GAAG,GAAG,IAAI,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAE9E,0EAA0E;QAC1E,0EAA0E;QAC1E,IAAI,OAAO,GAAe,IAAI,CAAC;QAC/B,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,8CAA8C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,8EAA8E;QAC9E,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;QAE/D,8EAA8E;QAC9E,kFAAkF;QAClF,MAAM,QAAQ,GAAG,CAAC,KAA8B,EAAQ,EAAE,CACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,CAAC,UAAU;gBACpB,CAAC,CAAC,mHAAmH;gBACrH,CAAC,CAAC,wEAAwE,CAAC;kBACzE,kFAAkF;YACtF,8EAA8E;YAC9E,QAAQ,EAAE,CAAC,UAAU;YACrB,kBAAkB,EAAE,UAAU;YAC9B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;YAC7B,wEAAwE;YACxE,kCAAkC;YAClC,cAAc,EAAE,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC;YAC5C,GAAG,KAAK;SACT,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,MAAM;gBAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;;gBAC9D,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,sDAAsD,CAAC,CAAC;YACnK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4EAA4E;QAC5E,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,2CAA2C,IAAI,qCAAqC,CAAC;YACjG,IAAI,MAAM;gBAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;;gBAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YACrH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,CAAC,cAAc,IAAI,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,8CAA8C,QAAQ,IAAI,IAAI,+FAA+F,CAAC;YAC1K,IAAI,MAAM;gBAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;;gBAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,6EAA6E;QAC7E,yEAAyE;QACzE,wEAAwE;QACxE,6EAA6E;QAC7E,yEAAyE;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBAC3K,MAAM,OAAO,GAAG,MAAM,IAAA,kCAAiB,EAAC,OAAO,EAAE;oBAC/C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC;iBACvL,CAAC,CAAC;gBACH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,+DAA+D;oBAC/D,kEAAkE;oBAClE,2DAA2D;oBAC3D,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,uFAAuF,CAAC;wBACjH,IAAI,CAAC,MAAM;4BAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;wBACrE,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,uBAAuB;4BACxC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,mDAAmD;4BACvE,aAAa,EAAE,EAAE;4BACjB,eAAe,EAAE;gCACf,MAAM,EAAE,gBAAgB;gCACxB,MAAM,EAAE,YAAY;gCACpB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gCACpC,KAAK,EAAE,IAAI;6BACZ;yBACF,CAAC,CAAC;oBACL,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;4BACV,MAAM,CAAC,IAAI,CAAC;gCACV,IAAI,EAAE,UAAU;gCAChB,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE;gCACjC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,6BAA6B;gCACvD,aAAa,EAAE,EAAE;gCACjB,eAAe,EAAE;oCACf,MAAM,EAAE,gBAAgB;oCACxB,MAAM,EAAE,YAAY;oCACpB,SAAS,EAAE,CAAC,CAAC,SAAS;oCACtB,MAAM,EAAE,CAAC,CAAC,MAAM;oCAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oCACpC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iCAChD;6BACF,CAAC,CAAC;4BACH,SAAS;wBACX,CAAC;wBACD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,YAAY,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC1M,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE;4BACjC,sEAAsE;4BACtE,mEAAmE;4BACnE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,SAAS,8BAA8B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;4BAClK,aAAa,EAAE,CAAC,CAAC,KAAK;4BACtB,eAAe,EAAE;gCACf,MAAM,EAAE,gBAAgB;gCACxB,MAAM,EAAE,UAAU;gCAClB,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,MAAM,EAAE,CAAC,CAAC,MAAM;gCAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACrC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAEpC,4EAA4E;QAC5E,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,EAAE,CAAC;gBAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC9G,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACtI,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA0C,CAAC;gBAC3F,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC3K,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvH,0EAA0E;QAC1E,kEAAkE;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oHAAoH,CAAC,CAAC,CAAC;QAC7I,IAAI,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,uJAAuJ,CAAC,CAAC,CAAC;QACtO,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,+CAA+C,GAAG,CAAC,CAAC,CAAC;QACtH,4EAA4E;QAC5E,yEAAyE;QACzE,8DAA8D;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QACpI,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,yFAAyF,CAAC,EAAE,CAAC,CAAC;QACtR,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,eAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC,CAAC;QAEjL,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC9G,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA0C,CAAC;YAC3F,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC5F,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;gBACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,kBAAkB,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,kEAAkE,CAAC,CAAC;QACvL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}