askvireo 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -21,9 +21,7 @@ Commands:
21
21
  link Link this node again, e.g. to another account or another way of connecting.
22
22
  unlink Forget the link to the account.
23
23
  status Show which account and cloud this node is linked to.
24
- connect Connect Claude Code and Codex on this machine to Vireo: MCP, plus
25
- hooks that tell you when a long task finishes or it waits on you,
26
- and ask your approval before a risky shell command.
24
+ connect Connect Claude Code and Codex on this machine to Vireo over MCP.
27
25
  service Run in the background, started at login and restarted if it stops
28
26
  (launchd on macOS, systemd on Linux):
29
27
  service install link if needed, then install and start it
@@ -91,14 +89,12 @@ if (values.port)
91
89
  const config = loadConfig();
92
90
  const identity = new Identity(config.dataDir);
93
91
  if (command === "hook") {
94
- // Run by a coding agent's hook: quick, quiet, and never in the agent's way.
95
- const { runHook } = await import("./hook.js");
96
- await runHook(positionals[1] ?? "", config.dataDir, positionals.slice(2)).catch(() => undefined);
92
+ // Hooks of earlier versions, until `connect` takes them out: nothing to do.
97
93
  process.exit(0);
98
94
  }
99
- /** Connects the coding agents here to this node; the hooks run the service's copy of the node when there is one. */
100
- function connect(cli = service.installedCli(service.servicePaths(config.dataDir)) ?? process.argv[1]) {
101
- return connectAgents({ dataDir: config.dataDir, port: config.port, cli });
95
+ /** Connects the coding agents here to this node. */
96
+ function connect() {
97
+ return connectAgents({ dataDir: config.dataDir, port: config.port });
102
98
  }
103
99
  if (command === "connect") {
104
100
  try {
@@ -186,11 +182,11 @@ if (command === "service") {
186
182
  identity.save(await linkNode({ cloudUrl: config.cloudUrl, request: { name: config.name, platform: platform(), version: VERSION, mode }, onCode: showLinkCode }));
187
183
  console.log(" Linked.");
188
184
  }
189
- const cli = service.install(paths, action === "upgrade" ? "latest" : VERSION);
190
- // The coding agents here talk to the node the service runs; their hooks point at its copy.
185
+ service.install(paths, action === "upgrade" ? "latest" : VERSION);
186
+ // The coding agents here talk to the node the service runs.
191
187
  let agents = [];
192
188
  try {
193
- agents = connect(cli);
189
+ agents = connect();
194
190
  }
195
191
  catch (err) {
196
192
  agents = [`Could not connect the coding agents here: ${err instanceof Error ? err.message : err}`];
@@ -234,10 +230,25 @@ function openBrowser(url) {
234
230
  .on("error", () => undefined)
235
231
  .unref();
236
232
  }
233
+ /** Why the port is taken, and what to do instead: most often it is this machine's own service. */
234
+ async function portTaken() {
235
+ const health = await fetch(`http://127.0.0.1:${config.port}/api/health`, { signal: AbortSignal.timeout(2000) })
236
+ .then((r) => (r.ok ? r.json() : undefined))
237
+ .catch(() => undefined);
238
+ const upgrade = "To upgrade it, run: curl -fsSL https://askvireo.com/install.sh | sh (or: npx askvireo service upgrade)";
239
+ if (health && service.installed())
240
+ return `Port ${config.port} is in use by Vireo's background service (version ${health.version ?? "unknown"}), so a second node cannot start here.\n ${upgrade}`;
241
+ if (health)
242
+ return `Port ${config.port} is in use by another Vireo node (version ${health.version ?? "unknown"}). Stop it (Ctrl+C in its terminal), or start this one with --port <port>.`;
243
+ return `Port ${config.port} is in use by another program. Stop it, or start Vireo with --port <port>.${service.installed() ? "\n If that is Vireo's background service, it has not answered yet; check it with: npx askvireo service status" : ""}`;
244
+ }
237
245
  console.log("");
238
246
  const node = await runNode(config, {
239
247
  tailscale,
240
248
  onLinkCode: showLinkCode,
249
+ }).catch(async (err) => {
250
+ console.error(` ${err.code === "EADDRINUSE" ? await portTaken() : `Vireo could not start: ${err.message}`}`);
251
+ process.exit(1);
241
252
  });
242
253
  const shutdown = () => void node.stop().then(() => process.exit(0));
243
254
  process.on("SIGINT", shutdown);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/connect.js CHANGED
@@ -1,11 +1,19 @@
1
1
  import { execFileSync } from "node:child_process";
2
- import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
3
  import { homedir, hostname } from "node:os";
4
4
  import { dirname, join } from "node:path";
5
5
  import { Db } from "./db.js";
6
6
  import { addKey, KEYS_KV, PATH } from "./plugins/endpoint/index.js";
7
- /** Where the hooks find the node and their key; readable by this user only. */
8
- export const hooksFile = (dataDir) => join(dataDir, "hooks.json");
7
+ /**
8
+ * Connects the coding agents on this machine to the Vireo node running here,
9
+ * with nothing for the owner to copy: each gets its own key and Vireo as an MCP
10
+ * server. Nothing else of the owner's own sessions changes: no hooks, no notify.
11
+ * The sessions Vireo runs itself go through ACP, where it sees every step and
12
+ * permission request already. Running it again replaces what it set up before,
13
+ * and takes out the hooks earlier versions added.
14
+ */
15
+ /** Where earlier versions kept the hooks' key; removed on connect. */
16
+ const oldHooksFile = (dataDir) => join(dataDir, "hooks.json");
9
17
  const has = (bin) => {
10
18
  try {
11
19
  execFileSync(bin, ["--version"], { stdio: "ignore" });
@@ -35,7 +43,7 @@ function keyFor(db, name) {
35
43
  db.setKv("plugins", { ...plugins, endpoint: { enabled: true, config: plugins.endpoint?.config ?? {} } });
36
44
  return addKey({ get: () => db.getKv(KEYS_KV) ?? [], set: (keys) => db.setKv(KEYS_KV, keys) }, name).secret;
37
45
  }
38
- function connectClaude(url, key, hookArgs) {
46
+ function connectClaude(url, key) {
39
47
  try {
40
48
  execFileSync("claude", ["mcp", "remove", "--scope", "user", "vireo"], { stdio: "ignore" });
41
49
  }
@@ -43,51 +51,54 @@ function connectClaude(url, key, hookArgs) {
43
51
  // Not added before.
44
52
  }
45
53
  execFileSync("claude", ["mcp", "add", "--scope", "user", "--transport", "http", "vireo", url, "--header", `Authorization: Bearer ${key}`], { stdio: "ignore" });
54
+ // Earlier versions hooked every session of the owner's (Stop, Notification, PreToolUse on Bash).
46
55
  const file = join(process.env.CLAUDE_CONFIG_DIR || join(homedir(), ".claude"), "settings.json");
47
56
  const settings = readJson(file, {});
48
- const hooks = settings.hooks ?? {};
49
- const ours = (e) => e.hooks.some((h) => h.command.includes(" hook claude"));
50
- const add = (event, entry) => (hooks[event] = [...(hooks[event] ?? []).filter((e) => !ours(e)), entry]);
51
- const command = [...hookArgs.map((a) => JSON.stringify(a)), "hook", "claude"].join(" ");
52
- add("Stop", { hooks: [{ type: "command", command, timeout: 30 }] });
53
- add("Notification", { hooks: [{ type: "command", command, timeout: 30 }] });
54
- // Long enough for the owner to answer on their phone.
55
- add("PreToolUse", { matcher: "Bash", hooks: [{ type: "command", command, timeout: 600 }] });
56
- writePrivate(file, `${JSON.stringify({ ...settings, hooks }, null, 2)}\n`);
57
- return "Claude Code: Vireo added as an MCP server; you hear when a long task finishes or it waits on you, and risky shell commands wait for your approval.";
57
+ if (settings.hooks) {
58
+ const ours = (e) => e.hooks.some((h) => h.command.includes(" hook claude"));
59
+ let changed = false;
60
+ const hooks = {};
61
+ for (const [event, entries] of Object.entries(settings.hooks)) {
62
+ const kept = entries.filter((e) => !ours(e));
63
+ if (kept.length !== entries.length)
64
+ changed = true;
65
+ if (kept.length)
66
+ hooks[event] = kept;
67
+ }
68
+ if (changed)
69
+ writePrivate(file, `${JSON.stringify({ ...settings, hooks }, null, 2)}\n`);
70
+ }
71
+ return "Claude Code: Vireo added as an MCP server.";
58
72
  }
59
- function connectCodex(url, key, hookArgs) {
73
+ function connectCodex(url, key) {
60
74
  const file = join(process.env.CODEX_HOME || join(homedir(), ".codex"), "config.toml");
61
75
  let toml = existsSync(file) ? readFileSync(file, "utf8") : "";
62
76
  // Our own block from before, from its marker to the next table or the end.
63
77
  toml = toml.replace(/\n?# Added by Vireo \(askvireo connect\)\n\[mcp_servers\.vireo\][\s\S]*?(?=\n\[|$)/, "");
64
- const notes = ["Codex: Vireo added as an MCP server"];
65
- const notify = /^notify\s*=/m.test(toml);
66
- if (!notify) {
67
- toml = `notify = ${JSON.stringify([...hookArgs, "hook", "codex"])}\n${toml}`;
68
- notes.push("you hear when a turn finishes");
69
- }
70
- else if (!/^notify\s*=.*hook", "codex"/m.test(toml))
71
- notes.push("its notify setting was yours already, so it is left alone");
78
+ // The notify earlier versions added; one of the owner's own stays.
79
+ toml = toml.replace(/^notify\s*=.*"hook",\s*"codex"\]\n?/m, "");
72
80
  toml = `${toml.replace(/\s*$/, "")}\n\n# Added by Vireo (askvireo connect)\n[mcp_servers.vireo]\nurl = ${JSON.stringify(url)}\nhttp_headers = { "Authorization" = ${JSON.stringify(`Bearer ${key}`)} }\n`;
73
81
  writePrivate(file, toml.replace(/^\n+/, ""));
74
- return `${notes.join("; ")}.`;
82
+ return "Codex: Vireo added as an MCP server.";
75
83
  }
76
84
  /** Connects every coding agent found on this machine; returns one line per agent, empty when there is none. */
77
85
  export function connectAgents(opts) {
78
86
  const url = `http://127.0.0.1:${opts.port}${PATH}`;
79
- const hookArgs = [process.execPath, "--disable-warning=ExperimentalWarning", opts.cli];
80
87
  const wanted = opts.only ?? ["claude", "codex"];
81
88
  const db = Db.open(opts.dataDir);
82
89
  const lines = [];
83
90
  try {
84
91
  const host = hostname().split(".")[0];
85
92
  if (wanted.includes("claude") && has("claude"))
86
- lines.push(connectClaude(url, keyFor(db, `Claude Code on ${host}`), hookArgs));
93
+ lines.push(connectClaude(url, keyFor(db, `Claude Code on ${host}`)));
87
94
  if (wanted.includes("codex") && has("codex"))
88
- lines.push(connectCodex(url, keyFor(db, `Codex on ${host}`), hookArgs));
89
- if (lines.length)
90
- writePrivate(hooksFile(opts.dataDir), `${JSON.stringify({ url, key: keyFor(db, `Hooks on ${host}`) })}\n`);
95
+ lines.push(connectCodex(url, keyFor(db, `Codex on ${host}`)));
96
+ // The hooks' own key, from earlier versions, goes with them.
97
+ const keys = db.getKv(KEYS_KV) ?? [];
98
+ const left = keys.filter((k) => k.name !== `Hooks on ${host}`);
99
+ if (left.length !== keys.length)
100
+ db.setKv(KEYS_KV, left);
101
+ rmSync(oldHooksFile(opts.dataDir), { force: true });
91
102
  }
92
103
  finally {
93
104
  db.close();
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -21,8 +21,17 @@ export async function runNode(config, opts = {}) {
21
21
  let relay;
22
22
  const linking = new AbortController();
23
23
  await app.models.refresh();
24
- const server = await new Promise((resolve) => {
25
- const s = serve({ fetch: http.fetch, port: config.port, hostname: config.host }, () => resolve(s));
24
+ // A port already taken is the caller's to explain; only failing to listen is handled here.
25
+ const server = await new Promise((resolve, reject) => {
26
+ const failed = (err) => {
27
+ app.db.close();
28
+ reject(err);
29
+ };
30
+ const s = serve({ fetch: http.fetch, port: config.port, hostname: config.host }, () => {
31
+ s.off("error", failed);
32
+ resolve(s);
33
+ });
34
+ s.once("error", failed);
26
35
  });
27
36
  const status = app.models.status();
28
37
  say(`Vireo node ${VERSION} on http://${config.host === "0.0.0.0" ? "localhost" : config.host}:${config.port}`);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAevC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAI,GAAe,EAAE;IACjE,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAA8B,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IAEtC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAW,CAAC,CAAW,CAAC;IACzH,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACnC,GAAG,CAAC,cAAc,OAAO,cAAc,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/G,GAAG,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/B,GAAG,CACD,MAAM,CAAC,KAAK;QACV,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,OAAO,mBAAmB,MAAM,CAAC,IAAI,GAAG;QAC7E,CAAC,CAAC,qFAAqF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpI,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAG,CAAC;QACrC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC;QACnJ,KAAK,GAAG,IAAI,WAAW,CAAC;YACtB,QAAQ;YACR,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ,EAAE;YACpB,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS;YACtC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,SAAS,EAAE,GAAG,EAAE;gBACd,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACrB,GAAG,CAAC,8EAA8E,CAAC,CAAC;YACtF,CAAC;SACF,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC7C,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QACrD,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,+CAA+C,CAAC,CAAC;YACrD,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrI,CAAC;IACH,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC/B,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;SAC7B,CAAC;QACJ,KAAK,QAAQ,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YACzF,MAAM,EACJ,IAAI,CAAC,UAAU;gBACf,CAAC,CAAC,KAAK,EAAE,EAAE;oBACT,GAAG,CAAC,EAAE,CAAC,CAAC;oBACR,GAAG,CAAC,8CAA8C,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBACrE,GAAG,CAAC,yBAAyB,KAAK,CAAC,QAAQ,kDAAkD,CAAC,CAAC;oBAC/F,GAAG,CAAC,EAAE,CAAC,CAAC;gBACV,CAAC,CAAC;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;aACC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,GAAG,CAAC,mBAAmB,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,QAAmC,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,EAAE,CAChB,CAAC,QAAQ,KAAK,CAAC,KAAK,IAAI,EAAE;QACxB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrB,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -86,8 +86,32 @@ ${Object.entries(env)
86
86
  `;
87
87
  mkdirSync(dirname(plistPath()), { recursive: true });
88
88
  writeFileSync(plistPath(), plist, { mode: 0o600 });
89
- tryRun("launchctl", ["bootout", `gui/${uid()}/${LABEL}`]);
90
- run("launchctl", ["bootstrap", `gui/${uid()}`, plistPath()]);
89
+ reloadLaunchd();
90
+ }
91
+ const sleep = (ms) => Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
92
+ /**
93
+ * Replaces the loaded service with the plist just written. `bootout` returns while launchd is
94
+ * still stopping the old node, and a `bootstrap` in that window fails with "5: Input/output
95
+ * error"; so it waits for the old one to go, and tries again a few times before giving up.
96
+ */
97
+ function reloadLaunchd() {
98
+ const target = `gui/${uid()}/${LABEL}`;
99
+ tryRun("launchctl", ["bootout", target]);
100
+ for (let i = 0; i < 40 && tryRun("launchctl", ["print", target]); i++)
101
+ sleep(250);
102
+ let last = "";
103
+ for (let attempt = 0; attempt < 5; attempt++) {
104
+ try {
105
+ execFileSync("launchctl", ["bootstrap", `gui/${uid()}`, plistPath()], { encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] });
106
+ return;
107
+ }
108
+ catch (err) {
109
+ last = (err.stderr ?? "").trim() || (err instanceof Error ? err.message : String(err));
110
+ sleep(1000);
111
+ }
112
+ }
113
+ throw new Error(`launchd did not start the service (launchctl bootstrap: ${last}). The new version is installed; the old node may still have been stopping. ` +
114
+ `Run the same command again in a few seconds, or start it yourself: launchctl bootstrap gui/${uid()} ${plistPath()}`);
91
115
  }
92
116
  function writeSystemd(p, cli) {
93
117
  const q = (s) => `"${s.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "askvireo",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Your own Vireo node: the agent, its threads and memory, on your machine. Sign in at the Vireo app and run `npx askvireo`.",
5
5
  "repository": {
6
6
  "type": "git",
package/dist/hook.js DELETED
@@ -1,356 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { basename } from "node:path";
3
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
4
- import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
5
- import { hooksFile } from "./connect.js";
6
- /**
7
- * What a coding agent's hook runs: tells the owner through Vireo when a long
8
- * task finishes or the agent waits on them, and asks their approval before a
9
- * risky shell command. A hook never gets in the agent's way: if Vireo can't be
10
- * reached, it does nothing and the agent carries on as usual.
11
- */
12
- /**
13
- * Shell commands worth the owner's approval: hard to undo, or reaching outside the machine. Each is
14
- * matched against one simple command with its quoted text blanked, so a word that is only data (a
15
- * commit message, code written through a heredoc) does not count.
16
- */
17
- const RISKY = [
18
- /\brm\s+(-[a-zA-Z]*[rf][a-zA-Z]*\s+)+/, // rm -rf, rm -r, rm -f
19
- /\bgit\s+push\b[^\n]*(--force\b|-f\b|--force-with-lease\b|--delete\b|:)/,
20
- /\bgit\s+(reset\s+--hard|clean\s+-[a-zA-Z]*f|branch\s+-D)\b/,
21
- /\b(kubectl|helm)\s+(delete|uninstall|apply|rollout)\b/,
22
- /\bterraform\s+(apply|destroy)\b/,
23
- /\b(npm|pnpm|yarn)\s+publish\b/,
24
- /\bdocker\s+(system\s+prune|rm|rmi)\b/,
25
- /\b(vercel|wrangler|fly|flyctl)\s+(deploy|--prod)|\bwrangler\s+deploy\b/,
26
- ];
27
- /** Programs that are risky as the command itself, never as a word inside one. */
28
- const RISKY_PROGRAM = /^(shutdown|reboot|halt|poweroff|mkfs(\.\w+)?)$/;
29
- /** SQL clients, whose arguments and input are statements they run. */
30
- const SQL_CLIENT = /^(psql|mysql|mariadb|sqlite3|sqlcmd|duckdb|clickhouse-client|clickhouse|cockroach)$/;
31
- const SQL_DROP = /\b(drop|truncate)\s+(table|database|schema)\b/i;
32
- const SHELLS = /^(sh|bash|zsh|dash|ksh|fish)$/;
33
- /** Words that run the next words as the command: `sudo reboot` is a reboot. */
34
- const PREFIX = /^(sudo|doas|env|nohup|time|exec|command|nice|ionice|stdbuf|timeout|xargs)$/;
35
- const ASSIGNMENT = /^[A-Za-z_][A-Za-z0-9_]*=/;
36
- /** Reads `$(…)` from `at` (just past the parenthesis) to its closing one. */
37
- function substitution(src, at) {
38
- let depth = 1;
39
- let quote;
40
- for (let i = at; i < src.length; i++) {
41
- const c = src[i];
42
- if (quote) {
43
- if (c === "\\" && quote === '"')
44
- i++;
45
- else if (c === quote)
46
- quote = undefined;
47
- }
48
- else if (c === "'" || c === '"')
49
- quote = c;
50
- else if (c === "(")
51
- depth++;
52
- else if (c === ")" && --depth === 0)
53
- return { body: src.slice(at, i), end: i };
54
- }
55
- return { body: src.slice(at), end: src.length };
56
- }
57
- const SEPARATORS = new Set(["\n", ";", "&", "|", "(", ")", "`", "{", "}"]);
58
- /**
59
- * Splits a command line into the simple commands the shell runs: on `;`, `&&`, `||`, `|`, `&`,
60
- * newlines, subshells and substitutions. Quoted text and heredoc bodies stay data of the command
61
- * they belong to; comments are dropped.
62
- */
63
- export function simpleCommands(src) {
64
- const out = [];
65
- const fresh = () => ({ words: [], syntax: "", input: [], inner: [] });
66
- let cur = fresh();
67
- let word = "";
68
- let inWord = false;
69
- const heredocs = [];
70
- const endWord = () => {
71
- if (inWord)
72
- cur.words.push(word);
73
- word = "";
74
- inWord = false;
75
- };
76
- const endCommand = () => {
77
- endWord();
78
- if (cur.words.length || cur.input.length || cur.inner.length)
79
- out.push(cur);
80
- cur = fresh();
81
- };
82
- /** After a line that opened heredocs: their bodies, in order, each up to its tag. Returns where the next line starts. */
83
- const readBodies = (at) => {
84
- for (const h of heredocs) {
85
- const lines = [];
86
- while (at < src.length) {
87
- const nl = src.indexOf("\n", at);
88
- const line = src.slice(at, nl < 0 ? src.length : nl);
89
- at = nl < 0 ? src.length : nl + 1;
90
- if ((h.strip ? line.replace(/^\t+/, "") : line) === h.tag)
91
- break;
92
- lines.push(line);
93
- }
94
- h.simple.input.push(lines.join("\n"));
95
- }
96
- heredocs.length = 0;
97
- return at;
98
- };
99
- for (let i = 0; i < src.length; i++) {
100
- const c = src[i];
101
- if (c === "\\") {
102
- word += src[i + 1] ?? "";
103
- inWord = true;
104
- cur.syntax += " ";
105
- i++;
106
- }
107
- else if (c === "'") {
108
- const close = src.indexOf("'", i + 1);
109
- const end = close < 0 ? src.length : close;
110
- word += src.slice(i + 1, end);
111
- inWord = true;
112
- cur.syntax += '""';
113
- i = end;
114
- }
115
- else if (c === '"') {
116
- let j = i + 1;
117
- for (; j < src.length && src[j] !== '"'; j++) {
118
- if (src[j] === "\\")
119
- word += src[++j] ?? "";
120
- else if (src[j] === "$" && src[j + 1] === "(") {
121
- const sub = substitution(src, j + 2);
122
- cur.inner.push(sub.body);
123
- j = sub.end;
124
- }
125
- else if (src[j] === "`") {
126
- const close = src.indexOf("`", j + 1);
127
- const end = close < 0 ? src.length : close;
128
- cur.inner.push(src.slice(j + 1, end));
129
- j = end;
130
- }
131
- else
132
- word += src[j];
133
- }
134
- inWord = true;
135
- cur.syntax += '""';
136
- i = j;
137
- }
138
- else if (c === "#" && !inWord) {
139
- const nl = src.indexOf("\n", i);
140
- i = (nl < 0 ? src.length : nl) - 1;
141
- }
142
- else if (c === "<" && src[i + 1] === "<" && src[i + 2] !== "<") {
143
- // A heredoc: its tag now, its body once this line ends.
144
- const m = /^<<(-?)[ \t]*(['"]?)([^\s'";&|<>()]+)\2/.exec(src.slice(i));
145
- if (!m) {
146
- cur.syntax += c;
147
- continue;
148
- }
149
- endWord();
150
- heredocs.push({ simple: cur, tag: m[3], strip: m[1] === "-" });
151
- cur.syntax += " ";
152
- i += m[0].length - 1;
153
- }
154
- else if (SEPARATORS.has(c) && !((c === "{" || c === "}") && inWord)) {
155
- // `$(` separates too: what it runs is a command of its own.
156
- if (c === "(" && word.endsWith("$"))
157
- word = word.slice(0, -1);
158
- endCommand();
159
- if (c === "\n" && heredocs.length)
160
- i = readBodies(i + 1) - 1;
161
- }
162
- else if (c === " " || c === "\t") {
163
- endWord();
164
- cur.syntax += c;
165
- }
166
- else {
167
- word += c;
168
- inWord = true;
169
- cur.syntax += c;
170
- }
171
- }
172
- endCommand();
173
- return out;
174
- }
175
- /** The program a simple command runs, with its arguments: past `sudo`, `env`, `FOO=1` and their options. */
176
- function program(words) {
177
- let i = 0;
178
- while (i < words.length) {
179
- const w = words[i];
180
- if (ASSIGNMENT.test(w))
181
- i++;
182
- else if (PREFIX.test(w.replace(/^.*\//, ""))) {
183
- i++;
184
- // The prefix's own options, the value after sudo's -u / -g, and timeout's duration.
185
- while (i < words.length && (words[i].startsWith("-") || /^\d+[smhd]?$/.test(words[i])))
186
- i += /^-[ugCDhpTr]$/.test(words[i]) ? 2 : 1;
187
- }
188
- else
189
- break;
190
- }
191
- return words.slice(i);
192
- }
193
- /** What ssh runs on the other side: the words after its options and the host. */
194
- function sshCommand(args) {
195
- let i = 0;
196
- while (i < args.length && args[i].startsWith("-"))
197
- i += /^-[bcDEeFIiJLlmOopQRSWw]$/.test(args[i]) ? 2 : 1;
198
- return args.slice(i + 1).join(" ");
199
- }
200
- function riskySimple(c, depth) {
201
- if (RISKY.some((r) => r.test(c.syntax)))
202
- return true;
203
- if (c.inner.some((s) => riskyAt(s, depth + 1)))
204
- return true;
205
- const [cmd = "", ...args] = program(c.words);
206
- const name = cmd.replace(/^.*\//, "");
207
- if (RISKY_PROGRAM.test(name))
208
- return true;
209
- if (name === "dd" && args.some((a) => a.startsWith("if=")))
210
- return true;
211
- if (SQL_CLIENT.test(name))
212
- return SQL_DROP.test([...args, ...c.input].join("\n"));
213
- // What a shell, eval or ssh is handed is a command line of its own.
214
- if (SHELLS.test(name)) {
215
- const script = args.indexOf("-c");
216
- if (script >= 0)
217
- return riskyAt(args[script + 1] ?? "", depth + 1);
218
- return c.input.some((s) => riskyAt(s, depth + 1));
219
- }
220
- if (name === "eval")
221
- return riskyAt(args.join(" "), depth + 1);
222
- if (name === "ssh")
223
- return riskyAt(sshCommand(args), depth + 1);
224
- return false;
225
- }
226
- function riskyAt(command, depth) {
227
- // Deeper than anyone writes by hand: ask rather than guess.
228
- if (depth > 4)
229
- return true;
230
- return simpleCommands(command).some((c) => riskySimple(c, depth));
231
- }
232
- export function risky(command) {
233
- return riskyAt(command, 0);
234
- }
235
- /** A turn shorter than this ends with the owner still watching; no need to tell them. */
236
- const LONG_TURN_MS = 2 * 60_000;
237
- async function withVireo(dataDir, fn) {
238
- let cfg;
239
- try {
240
- cfg = JSON.parse(readFileSync(hooksFile(dataDir), "utf8"));
241
- }
242
- catch {
243
- return undefined;
244
- }
245
- const client = new Client({ name: "vireo hooks", version: "1" });
246
- try {
247
- await client.connect(new StreamableHTTPClientTransport(new URL(cfg.url), { requestInit: { headers: { authorization: `Bearer ${cfg.key}` } } }));
248
- return await fn(async (tool, args, timeoutMs = 20_000) => {
249
- const r = await client.callTool({ name: tool, arguments: args }, undefined, { timeout: timeoutMs });
250
- return (r.content ?? []).map((c) => c.text ?? "").join("\n");
251
- });
252
- }
253
- catch {
254
- return undefined;
255
- }
256
- finally {
257
- await client.close().catch(() => undefined);
258
- }
259
- }
260
- /** When the owner last wrote, and what the agent said last, from Claude Code's transcript. */
261
- function lastTurn(path) {
262
- if (!path)
263
- return {};
264
- try {
265
- const lines = readFileSync(path, "utf8").trim().split("\n").slice(-400);
266
- let said;
267
- let startedAt;
268
- for (const raw of lines.reverse()) {
269
- let l;
270
- try {
271
- l = JSON.parse(raw);
272
- }
273
- catch {
274
- continue;
275
- }
276
- const content = l.message?.content;
277
- const textOf = typeof content === "string" ? content : (content ?? []).filter((c) => c.type === "text").map((c) => c.text ?? "").join("\n");
278
- if (!said && l.type === "assistant" && textOf.trim())
279
- said = textOf.trim();
280
- // The owner's own message, not a tool result (which arrives as a user line too).
281
- if (l.type === "user" && textOf.trim() && !(Array.isArray(content) && content.some((c) => c.type === "tool_result"))) {
282
- startedAt = l.timestamp ? Date.parse(l.timestamp) : undefined;
283
- break;
284
- }
285
- }
286
- return { startedAt, said };
287
- }
288
- catch {
289
- return {};
290
- }
291
- }
292
- const clip = (s, n) => (s.length > n ? `${s.slice(0, n - 1)}…` : s);
293
- async function readStdin() {
294
- const chunks = [];
295
- for await (const c of process.stdin)
296
- chunks.push(c);
297
- return Buffer.concat(chunks).toString("utf8");
298
- }
299
- export async function runHook(kind, dataDir, argv) {
300
- // The CLI is serving as Vireo's own model (see cli-model.ts): nothing to tell the owner.
301
- if (process.env.VIREO_AS_MODEL)
302
- return;
303
- if (kind === "codex") {
304
- // Codex passes one JSON argument when a turn completes.
305
- let e = {};
306
- try {
307
- e = JSON.parse(argv.at(-1) ?? "{}");
308
- }
309
- catch {
310
- return;
311
- }
312
- if (e.type !== "agent-turn-complete")
313
- return;
314
- await withVireo(dataDir, (call) => call("notify_owner", { title: "Codex finished", body: clip(e["last-assistant-message"] ?? "", 300), from: `Codex${e.cwd ? ` in ${basename(e.cwd)}` : ""}` }));
315
- return;
316
- }
317
- if (kind !== "claude")
318
- return;
319
- let e;
320
- try {
321
- e = JSON.parse(await readStdin());
322
- }
323
- catch {
324
- return;
325
- }
326
- const from = `Claude Code${e.cwd ? ` in ${basename(e.cwd)}` : ""}`;
327
- if (e.hook_event_name === "Stop") {
328
- if (e.stop_hook_active)
329
- return;
330
- const turn = lastTurn(e.transcript_path);
331
- if (!turn.startedAt || Date.now() - turn.startedAt < LONG_TURN_MS)
332
- return;
333
- await withVireo(dataDir, (call) => call("notify_owner", { title: "Claude Code finished", body: clip(turn.said ?? "", 300), from }));
334
- }
335
- else if (e.hook_event_name === "Notification") {
336
- await withVireo(dataDir, (call) => call("notify_owner", { title: "Claude Code needs you", body: clip(e.message ?? "", 300), from }));
337
- }
338
- else if (e.hook_event_name === "PreToolUse" && e.tool_name === "Bash") {
339
- const command = e.tool_input?.command ?? "";
340
- if (!risky(command))
341
- return;
342
- const out = await withVireo(dataDir, (call) => call("request_approval", { summary: clip(`Run: ${command.replace(/\s+/g, " ")}`, 180), details: [e.tool_input?.description, e.cwd && `In ${e.cwd}`, command].filter(Boolean).join("\n\n"), from, wait_seconds: 540 }, 560_000));
343
- // Unreachable or still undecided: Claude Code asks in the terminal as it always does.
344
- const decision = out?.startsWith("approved") ? "allow" : out?.startsWith("declined") || out?.startsWith("not approved") ? "deny" : undefined;
345
- if (!decision)
346
- return;
347
- process.stdout.write(JSON.stringify({
348
- hookSpecificOutput: {
349
- hookEventName: "PreToolUse",
350
- permissionDecision: decision,
351
- permissionDecisionReason: decision === "allow" ? "Approved by the owner in Vireo." : "Declined by the owner in Vireo.",
352
- },
353
- }));
354
- }
355
- }
356
- //# sourceMappingURL=hook.js.map
package/dist/hook.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAE1D;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,KAAK,GAAG;IACZ,sCAAsC,EAAE,uBAAuB;IAC/D,wEAAwE;IACxE,4DAA4D;IAC5D,uDAAuD;IACvD,iCAAiC;IACjC,+BAA+B;IAC/B,sCAAsC;IACtC,wEAAwE;CACzE,CAAC;AAEF,iFAAiF;AACjF,MAAM,aAAa,GAAG,gDAAgD,CAAC;AACvE,sEAAsE;AACtE,MAAM,UAAU,GAAG,qFAAqF,CAAC;AACzG,MAAM,QAAQ,GAAG,gDAAgD,CAAC;AAClE,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAC/C,+EAA+E;AAC/E,MAAM,MAAM,GAAG,4EAA4E,CAAC;AAC5F,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAc9C,6EAA6E;AAC7E,SAAS,YAAY,CAAC,GAAW,EAAE,EAAU;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAyB,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;iBAChC,IAAI,CAAC,KAAK,KAAK;gBAAE,KAAK,GAAG,SAAS,CAAC;QAC1C,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,GAAG,CAAC,CAAC;aACxC,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACvB,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,GAAW,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,QAAQ,GAAsD,EAAE,CAAC;IAEvE,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,MAAM;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,GAAG,EAAE,CAAC;QACV,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,OAAO,EAAE,CAAC;QACV,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,GAAG,GAAG,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;IACF,yHAAyH;IACzH,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE;QACxC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrD,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG;oBAAE,MAAM;gBACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3C,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;YACnB,CAAC,GAAG,GAAG,CAAC;QACV,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;qBACvC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;gBACd,CAAC;qBAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC3C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACtC,CAAC,GAAG,GAAG,CAAC;gBACV,CAAC;;oBAAM,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;YACnB,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACjE,wDAAwD;YACxD,MAAM,CAAC,GAAG,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,OAAO,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YAChE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;YACtE,4DAA4D;YAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM;gBAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,UAAU,EAAE,CAAC;IACb,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4GAA4G;AAC5G,SAAS,OAAO,CAAC,KAAe;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;aACvB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,CAAC,EAAE,CAAC;YACJ,oFAAoF;YACpF,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBAAE,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzI,CAAC;;YAAM,MAAM;IACf,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,IAAc;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,KAAa;IAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,oEAAoE;IACpE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,KAAa;IAC7C,4DAA4D;IAC5D,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,yFAAyF;AACzF,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC;AAEhC,KAAK,UAAU,SAAS,CAAI,OAAe,EAAE,EAA8G;IACzJ,IAAI,GAAe,CAAC;IACpB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAe,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAChJ,OAAO,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACpG,OAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAQD,8FAA8F;AAC9F,SAAS,QAAQ,CAAC,IAAwB;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,IAAwB,CAAC;QAC7B,IAAI,SAA6B,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5I,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE;gBAAE,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3E,iFAAiF;YACjF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC;gBACrH,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpF,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,OAAe,EAAE,IAAc;IACzE,yFAAyF;IACzF,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,OAAO;IACvC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,wDAAwD;QACxD,IAAI,CAAC,GAAuE,EAAE,CAAC;QAC/E,IAAI,CAAC;YACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB;YAAE,OAAO;QAC7C,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACjM,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9B,IAAI,CAAa,CAAC;IAClB,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,EAAE,CAAe,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACnE,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,gBAAgB;YAAE,OAAO;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY;YAAE,OAAO;QAC1E,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtI,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;QAChD,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvI,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5C,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAC/N,CAAC;QACF,sFAAsF;QACtF,MAAM,QAAQ,GAAG,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7I,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;YACb,kBAAkB,EAAE;gBAClB,aAAa,EAAE,YAAY;gBAC3B,kBAAkB,EAAE,QAAQ;gBAC5B,wBAAwB,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,iCAAiC;aACvH;SACF,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}