@gjczone/pi-swarm 0.3.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +11 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -6
  4. package/dist/index.js.map +1 -1
  5. package/dist/shared/controller.d.ts +1 -0
  6. package/dist/shared/controller.d.ts.map +1 -1
  7. package/dist/shared/controller.js +60 -2
  8. package/dist/shared/controller.js.map +1 -1
  9. package/dist/shared/spawner.d.ts.map +1 -1
  10. package/dist/shared/spawner.js +320 -78
  11. package/dist/shared/spawner.js.map +1 -1
  12. package/dist/shared/types.d.ts +28 -0
  13. package/dist/shared/types.d.ts.map +1 -1
  14. package/dist/shared/types.js +4 -1
  15. package/dist/shared/types.js.map +1 -1
  16. package/dist/shared/worktree.d.ts +81 -0
  17. package/dist/shared/worktree.d.ts.map +1 -0
  18. package/dist/shared/worktree.js +417 -0
  19. package/dist/shared/worktree.js.map +1 -0
  20. package/dist/state/persistence.d.ts +5 -0
  21. package/dist/state/persistence.d.ts.map +1 -1
  22. package/dist/state/persistence.js +1 -1
  23. package/dist/state/persistence.js.map +1 -1
  24. package/dist/state/recovery.d.ts.map +1 -1
  25. package/dist/state/recovery.js +13 -6
  26. package/dist/state/recovery.js.map +1 -1
  27. package/dist/swarm/command.d.ts +0 -4
  28. package/dist/swarm/command.d.ts.map +1 -1
  29. package/dist/swarm/command.js +1 -19
  30. package/dist/swarm/command.js.map +1 -1
  31. package/dist/swarm/tool.d.ts.map +1 -1
  32. package/dist/swarm/tool.js +59 -14
  33. package/dist/swarm/tool.js.map +1 -1
  34. package/dist/team/command.d.ts.map +1 -1
  35. package/dist/team/command.js +0 -8
  36. package/dist/team/command.js.map +1 -1
  37. package/dist/team/mailbox.d.ts +5 -0
  38. package/dist/team/mailbox.d.ts.map +1 -1
  39. package/dist/team/mailbox.js +46 -5
  40. package/dist/team/mailbox.js.map +1 -1
  41. package/dist/team/supervisor.d.ts +27 -2
  42. package/dist/team/supervisor.d.ts.map +1 -1
  43. package/dist/team/supervisor.js +84 -23
  44. package/dist/team/supervisor.js.map +1 -1
  45. package/dist/team/task-graph.d.ts +5 -2
  46. package/dist/team/task-graph.d.ts.map +1 -1
  47. package/dist/team/task-graph.js +27 -1
  48. package/dist/team/task-graph.js.map +1 -1
  49. package/dist/team/tool.d.ts.map +1 -1
  50. package/dist/team/tool.js +56 -8
  51. package/dist/team/tool.js.map +1 -1
  52. package/dist/tui/progress.d.ts +6 -43
  53. package/dist/tui/progress.d.ts.map +1 -1
  54. package/dist/tui/progress.js +101 -165
  55. package/dist/tui/progress.js.map +1 -1
  56. package/dist/tui/team-dashboard.d.ts +5 -22
  57. package/dist/tui/team-dashboard.d.ts.map +1 -1
  58. package/dist/tui/team-dashboard.js +87 -132
  59. package/dist/tui/team-dashboard.js.map +1 -1
  60. package/package.json +1 -1
@@ -6,9 +6,11 @@
6
6
  * collect token usage, and capture the final result.
7
7
  */
8
8
  import { spawn } from "node:child_process";
9
- import { mkdirSync, createWriteStream } from "node:fs";
9
+ import { mkdirSync, createWriteStream, writeFileSync, existsSync, readFileSync, statSync, } from "node:fs";
10
10
  import { dirname, join } from "node:path";
11
11
  import { getPiInvocation, buildSubagentArgs } from "./pi-invoke.js";
12
+ import { resolveAgentStateDir } from "../state/persistence.js";
13
+ import { createWorktree, cleanupWorktree, isGitRepository, } from "./worktree.js";
12
14
  const MAX_LINE_BUFFER_SIZE = 10 * 1024 * 1024;
13
15
  // ---------------------------------------------------------------------------
14
16
  // Spawner implementation
@@ -27,7 +29,7 @@ export async function spawnSubagent(opts) {
27
29
  // Resolve output log path if swarm root and run ID are provided
28
30
  let resolvedOpts = opts;
29
31
  if (opts.swarmRoot && opts.runId && !opts.outputLogPath) {
30
- const agentDir = join(opts.swarmRoot, "state", "runs", opts.runId, "agents", agentId);
32
+ const agentDir = resolveAgentStateDir(opts.swarmRoot, opts.runId, agentId);
31
33
  resolvedOpts = {
32
34
  ...opts,
33
35
  outputLogPath: join(agentDir, "output.log"),
@@ -49,7 +51,7 @@ export async function resumeSubagent(agentId, opts) {
49
51
  opts.signal.throwIfAborted();
50
52
  let resolvedOpts = opts;
51
53
  if (opts.swarmRoot && opts.runId && !opts.outputLogPath) {
52
- const agentDir = join(opts.swarmRoot, "state", "runs", opts.runId, "agents", agentId);
54
+ const agentDir = resolveAgentStateDir(opts.swarmRoot, opts.runId, agentId);
53
55
  resolvedOpts = {
54
56
  ...opts,
55
57
  outputLogPath: join(agentDir, "output.log"),
@@ -75,14 +77,75 @@ export async function retrySubagent(agentId, opts) {
75
77
  return resumeSubagent(agentId, opts);
76
78
  }
77
79
  async function runSubagentProcess(agentId, opts) {
80
+ const repoCwd = opts.cwd ?? process.cwd();
81
+ let worktree;
82
+ let cwd = repoCwd;
83
+ // worktree 默认启用:Git 仓库自动创建 worktree 隔离,非 Git 仓库回退到 cwd
84
+ // 仅当显式设置 useWorktree: false 时禁用
85
+ // 传递 mailboxPath 以符号链接 mailbox 到 worktree 中,支持实时消息传递
86
+ if (opts.useWorktree !== false && isGitRepository(repoCwd)) {
87
+ worktree = createWorktree(repoCwd, agentId, opts.mailboxPath);
88
+ if (worktree) {
89
+ cwd = worktree.path;
90
+ }
91
+ }
92
+ // Resolve paths for inbox/outbox polling when mailbox is enabled
93
+ const roleName = opts.roleName ?? agentId;
94
+ let pollInboxPath;
95
+ let pollOutboxPath;
96
+ if (opts.mailboxPath) {
97
+ const taskMailboxDir = join(opts.mailboxPath, "tasks", roleName);
98
+ mkdirSync(taskMailboxDir, { recursive: true });
99
+ pollInboxPath = join(taskMailboxDir, "inbox.jsonl");
100
+ pollOutboxPath = join(taskMailboxDir, "outbox.jsonl");
101
+ // Ensure outbox file exists for the agent to write to
102
+ if (!existsSync(pollOutboxPath)) {
103
+ writeFileSync(pollOutboxPath, "", "utf-8");
104
+ }
105
+ // Ensure inbox file exists
106
+ if (!existsSync(pollInboxPath)) {
107
+ writeFileSync(pollInboxPath, "", "utf-8");
108
+ }
109
+ }
110
+ // Inject mailbox communication instructions into prompt if mailbox is available
111
+ let finalPrompt = opts.prompt;
112
+ if (opts.mailboxPath && pollInboxPath && pollOutboxPath) {
113
+ // Use path relative to cwd when possible for cleaner instructions
114
+ const inboxRel = worktree
115
+ ? join(".pi", "swarm", "mailbox-link", "tasks", roleName, "inbox.jsonl")
116
+ : pollInboxPath;
117
+ const outboxRel = worktree
118
+ ? join(".pi", "swarm", "mailbox-link", "tasks", roleName, "outbox.jsonl")
119
+ : pollOutboxPath;
120
+ const mailboxAddendum = [
121
+ "",
122
+ "---",
123
+ "",
124
+ "## Real-time Mailbox Communication",
125
+ "",
126
+ "You have access to a live mailbox for sending and receiving messages during your work:",
127
+ "",
128
+ `- Your inbox (read for new messages): ${inboxRel}`,
129
+ `- Your outbox (write to send messages): ${outboxRel}`,
130
+ "",
131
+ "How to use:",
132
+ "1. Check your inbox file periodically for new messages from other agents or the supervisor.",
133
+ "2. To send a message, append a single JSON line to your outbox file with format:",
134
+ ` {"messageId":"msg-{random}","runId":"${opts.runId ?? ""}","timestamp":"{ISO8601}","from":"${roleName}","to":"{recipient}","type":"handoff","payload":{"content":"your message"}}`,
135
+ "3. Valid recipients: explorer, planner, coder, reviewer, tester, fixer, broadcast (sends to all).",
136
+ "4. Messages you write to outbox are delivered immediately to the recipient's inbox.",
137
+ "5. You do NOT need to wait for your phase to complete to send messages.",
138
+ "",
139
+ ].join("\n");
140
+ finalPrompt = finalPrompt + mailboxAddendum;
141
+ }
78
142
  const args = buildSubagentArgs({
79
- task: opts.prompt,
143
+ task: finalPrompt,
80
144
  model: opts.model,
81
145
  tools: opts.tools,
82
- cwd: opts.cwd,
146
+ cwd,
83
147
  });
84
148
  const invocation = getPiInvocation(args);
85
- const cwd = opts.cwd ?? process.cwd();
86
149
  const proc = spawn(invocation.command, invocation.args, {
87
150
  cwd,
88
151
  shell: false,
@@ -96,37 +159,108 @@ async function runSubagentProcess(agentId, opts) {
96
159
  flags: "a",
97
160
  encoding: "utf-8",
98
161
  });
162
+ const worktreeInfo = worktree
163
+ ? `Worktree: ${worktree.path}\nBranch: ${worktree.branch}`
164
+ : "Worktree: disabled";
99
165
  const header = [
100
166
  "=".repeat(72),
101
167
  `Agent: ${agentId}`,
102
168
  `Profile: ${opts.profileName}`,
169
+ `Role: ${roleName}`,
103
170
  `CWD: ${cwd}`,
171
+ worktreeInfo,
172
+ `Mailbox: ${opts.mailboxPath ?? "disabled"}`,
104
173
  `Model: ${opts.model ?? "(inherited)"}`,
105
174
  `Tools: ${opts.tools?.join(", ") ?? "(all)"}`,
106
175
  `Started: ${new Date().toISOString()}`,
107
176
  "-".repeat(72),
108
177
  "PROMPT:",
109
- opts.prompt,
178
+ finalPrompt,
110
179
  "-".repeat(72),
111
180
  "OUTPUT:",
112
181
  "",
113
182
  ].join("\n");
114
183
  logStream.write(header);
115
184
  }
116
- let sigkillTimer;
117
185
  let timeoutHandle;
186
+ let mailboxPollHandle;
187
+ let mailboxReadOffset = 0;
188
+ let streamResolve;
118
189
  let streamReject;
119
190
  let settled = false;
191
+ let done = false;
192
+ let abortReason;
193
+ const killState = {
194
+ exited: false,
195
+ sigkillTimer: undefined,
196
+ scheduleSigkill() {
197
+ if (this.sigkillTimer)
198
+ clearTimeout(this.sigkillTimer);
199
+ this.sigkillTimer = setTimeout(() => {
200
+ this.sigkillTimer = undefined;
201
+ if (!this.exited)
202
+ proc.kill("SIGKILL");
203
+ }, 5000);
204
+ },
205
+ };
206
+ proc.on("close", () => {
207
+ killState.exited = true;
208
+ if (killState.sigkillTimer) {
209
+ clearTimeout(killState.sigkillTimer);
210
+ killState.sigkillTimer = undefined;
211
+ }
212
+ });
213
+ // Mailbox outbox polling: watch for new messages written by the agent and deliver them
214
+ if (pollOutboxPath && opts.onMessage) {
215
+ // Initialize offset to current file size to only read new content
216
+ try {
217
+ mailboxReadOffset = existsSync(pollOutboxPath)
218
+ ? statSync(pollOutboxPath).size
219
+ : 0;
220
+ }
221
+ catch {
222
+ mailboxReadOffset = 0;
223
+ }
224
+ mailboxPollHandle = setInterval(() => {
225
+ if (settled || done)
226
+ return;
227
+ try {
228
+ if (!existsSync(pollOutboxPath))
229
+ return;
230
+ const currentSize = statSync(pollOutboxPath).size;
231
+ if (currentSize <= mailboxReadOffset)
232
+ return;
233
+ const raw = readFileSync(pollOutboxPath, "utf-8");
234
+ const newContent = raw.slice(mailboxReadOffset);
235
+ mailboxReadOffset = currentSize;
236
+ const lines = newContent.split("\n").filter((l) => l.trim());
237
+ for (const line of lines) {
238
+ try {
239
+ const msg = JSON.parse(line);
240
+ if (msg.messageId && msg.to && msg.from) {
241
+ opts.onMessage?.(msg);
242
+ }
243
+ }
244
+ catch {
245
+ // Skip malformed lines
246
+ }
247
+ }
248
+ }
249
+ catch {
250
+ // Poll errors are non-fatal
251
+ }
252
+ }, 800); // Poll at ~1.25Hz for near-real-time delivery without excessive IO
253
+ }
120
254
  const cleanup = () => {
121
255
  settled = true;
122
- if (sigkillTimer) {
123
- clearTimeout(sigkillTimer);
124
- sigkillTimer = undefined;
125
- }
126
256
  if (timeoutHandle) {
127
257
  clearTimeout(timeoutHandle);
128
258
  timeoutHandle = undefined;
129
259
  }
260
+ if (mailboxPollHandle) {
261
+ clearInterval(mailboxPollHandle);
262
+ mailboxPollHandle = undefined;
263
+ }
130
264
  if (opts.signal) {
131
265
  opts.signal.removeEventListener("abort", onAbort);
132
266
  }
@@ -138,26 +272,45 @@ async function runSubagentProcess(agentId, opts) {
138
272
  logStream = undefined;
139
273
  }
140
274
  };
141
- const scheduleSigkill = () => {
142
- if (sigkillTimer)
143
- clearTimeout(sigkillTimer);
144
- sigkillTimer = setTimeout(() => {
145
- if (!proc.killed)
146
- proc.kill("SIGKILL");
147
- }, 5000);
275
+ const resolveOnce = (parsed) => {
276
+ if (done)
277
+ return;
278
+ done = true;
279
+ settled = true;
280
+ const footer = [
281
+ `Completed: ${new Date().toISOString()}`,
282
+ `Stop reason: ${parsed.stopReason ?? "unknown"}`,
283
+ `Tokens: in=${parsed.usage.input}, out=${parsed.usage.output}, total=${parsed.usage.totalTokens}`,
284
+ "",
285
+ "RESULT:",
286
+ parsed.text || "(no output)",
287
+ ].join("\n");
288
+ closeLog(footer);
289
+ cleanup();
290
+ streamResolve?.(parsed);
291
+ };
292
+ const rejectOnce = (err, footerPrefix = "Failed") => {
293
+ if (done)
294
+ return;
295
+ done = true;
296
+ settled = true;
297
+ const footer = [
298
+ `${footerPrefix}: ${new Date().toISOString()}`,
299
+ `Error: ${err.message}`,
300
+ ].join("\n");
301
+ closeLog(footer);
302
+ cleanup();
303
+ streamReject?.(err);
148
304
  };
149
305
  const killProc = (reason) => {
150
- if (settled)
306
+ if (settled || done)
151
307
  return;
152
308
  settled = true;
153
- if (!proc.killed) {
309
+ abortReason =
310
+ reason instanceof Error ? reason : new Error("Subagent aborted");
311
+ if (!killState.exited) {
154
312
  proc.kill("SIGTERM");
155
- scheduleSigkill();
156
- }
157
- const err = reason instanceof Error ? reason : new Error("Subagent aborted");
158
- if (streamReject) {
159
- cleanup();
160
- streamReject(err);
313
+ killState.scheduleSigkill();
161
314
  }
162
315
  };
163
316
  const onAbort = () => killProc(opts.signal?.reason);
@@ -171,61 +324,81 @@ async function runSubagentProcess(agentId, opts) {
171
324
  }
172
325
  if (opts.timeout && opts.timeout > 0) {
173
326
  timeoutHandle = setTimeout(() => {
174
- if (settled)
327
+ if (settled || done)
175
328
  return;
176
329
  settled = true;
177
- if (!proc.killed) {
330
+ abortReason = new Error("Subagent timed out");
331
+ if (!killState.exited) {
178
332
  proc.kill("SIGTERM");
179
- scheduleSigkill();
180
- }
181
- if (streamReject) {
182
- cleanup();
183
- streamReject(new Error("Subagent timed out"));
333
+ killState.scheduleSigkill();
184
334
  }
185
335
  }, opts.timeout);
186
336
  }
187
337
  try {
188
338
  const result = await new Promise((resolve, reject) => {
339
+ streamResolve = resolve;
189
340
  streamReject = reject;
190
- parseEventStream(proc, agentId, logStream).then((parsed) => {
191
- if (settled)
341
+ parseEventStream(proc, agentId, logStream, killState, opts.onUsage).then((parsed) => {
342
+ if (done)
192
343
  return;
193
- cleanup();
194
- const footer = [
195
- `Completed: ${new Date().toISOString()}`,
196
- `Stop reason: ${parsed.stopReason ?? "unknown"}`,
197
- `Tokens: in=${parsed.usage.input}, out=${parsed.usage.output}, total=${parsed.usage.totalTokens}`,
198
- "",
199
- "RESULT:",
200
- parsed.text || "(no output)",
201
- ].join("\n");
202
- closeLog(footer);
203
- resolve(parsed);
344
+ if (settled) {
345
+ // Abort or timeout was requested, but process exited cleanly.
346
+ // Prefer the completed result if it has no errors.
347
+ if (parsed && !parsed.errorMessage) {
348
+ resolveOnce(parsed);
349
+ return;
350
+ }
351
+ // Process exited with an error after abort — use saved abort reason
352
+ rejectOnce(abortReason ?? new Error("Subagent aborted"), "Aborted");
353
+ return;
354
+ }
355
+ resolveOnce(parsed);
204
356
  }, (err) => {
205
- if (settled)
357
+ if (done)
206
358
  return;
207
- cleanup();
208
- const footer = [
209
- `Failed: ${new Date().toISOString()}`,
210
- `Error: ${err instanceof Error ? err.message : String(err)}`,
211
- ].join("\n");
212
- closeLog(footer);
213
- reject(err);
359
+ if (settled) {
360
+ // Abort was requested and process errored — use saved abort reason if available
361
+ rejectOnce(abortReason ??
362
+ (err instanceof Error ? err : new Error(String(err))), "Aborted");
363
+ return;
364
+ }
365
+ const error = err instanceof Error ? err : new Error(String(err));
366
+ rejectOnce(error);
214
367
  });
215
368
  });
369
+ let finalResult = result.text || "(no output)";
370
+ let worktreeBranch;
371
+ if (worktree) {
372
+ const cleanupResult = cleanupWorktree(repoCwd, worktree, opts.description);
373
+ if (cleanupResult.hasChanges && cleanupResult.branch) {
374
+ worktreeBranch = cleanupResult.branch;
375
+ finalResult += `\n\n---\nChanges committed to branch \`${cleanupResult.branch}\`.`;
376
+ }
377
+ }
216
378
  return {
217
- result: result.text || "(no output)",
379
+ result: finalResult,
218
380
  usage: result.usage,
381
+ worktreeBranch,
219
382
  };
220
383
  }
221
384
  catch (err) {
222
- cleanup();
223
- if (logStream) {
224
- const footer = [
225
- `Aborted: ${new Date().toISOString()}`,
226
- `Error: ${err instanceof Error ? err.message : String(err)}`,
227
- ].join("\n");
228
- closeLog(footer);
385
+ if (!done) {
386
+ cleanup();
387
+ if (logStream) {
388
+ const footer = [
389
+ `Aborted: ${new Date().toISOString()}`,
390
+ `Error: ${err instanceof Error ? err.message : String(err)}`,
391
+ ].join("\n");
392
+ closeLog(footer);
393
+ }
394
+ }
395
+ if (worktree) {
396
+ try {
397
+ cleanupWorktree(repoCwd, worktree, opts.description);
398
+ }
399
+ catch {
400
+ // best effort cleanup on error
401
+ }
229
402
  }
230
403
  throw err;
231
404
  }
@@ -233,8 +406,12 @@ async function runSubagentProcess(agentId, opts) {
233
406
  /**
234
407
  * Parse the JSON Lines event stream from a pi --print child process.
235
408
  * Returns a Promise that resolves after process close with accumulated results.
409
+ *
410
+ * 业务说明:解析 pi --print 的 JSON Lines 事件流,累积 token 使用量和最终结果。
411
+ * 支持实时通过 onUsage 回调推送使用量更新,让 TUI 能实时显示 token 计数。
412
+ * 同时捕获 content_block_delta 增量文本和工具调用输出,避免结果丢失。
236
413
  */
237
- function parseEventStream(proc, agentId, logStream) {
414
+ function parseEventStream(proc, agentId, logStream, killState, onUsage) {
238
415
  return new Promise((resolve, reject) => {
239
416
  const usageAcc = {
240
417
  input: 0,
@@ -249,6 +426,21 @@ function parseEventStream(proc, agentId, logStream) {
249
426
  let buffer = "";
250
427
  let unparseableCount = 0;
251
428
  let settled = false;
429
+ let lastUsageEmit = 0;
430
+ const emitUsage = () => {
431
+ if (!onUsage)
432
+ return;
433
+ const now = Date.now();
434
+ if (now - lastUsageEmit < 200)
435
+ return; // Throttle to 5Hz
436
+ lastUsageEmit = now;
437
+ try {
438
+ onUsage({ ...usageAcc });
439
+ }
440
+ catch {
441
+ // Callback errors must not break parsing
442
+ }
443
+ };
252
444
  const settle = (result, err) => {
253
445
  if (settled)
254
446
  return;
@@ -256,6 +448,16 @@ function parseEventStream(proc, agentId, logStream) {
256
448
  proc.stdout?.removeAllListeners();
257
449
  proc.stderr?.removeAllListeners();
258
450
  proc.removeAllListeners();
451
+ proc.stdout?.on("error", () => { });
452
+ proc.stderr?.on("error", () => { });
453
+ proc.on("error", () => { });
454
+ proc.on("close", () => {
455
+ killState.exited = true;
456
+ if (killState.sigkillTimer) {
457
+ clearTimeout(killState.sigkillTimer);
458
+ killState.sigkillTimer = undefined;
459
+ }
460
+ });
259
461
  if (err) {
260
462
  reject(err);
261
463
  }
@@ -276,27 +478,40 @@ function parseEventStream(proc, agentId, logStream) {
276
478
  errorMessage: errorMessage || undefined,
277
479
  });
278
480
  const processLine = (line) => {
279
- if (!line.trim())
481
+ const trimmed = line.trim();
482
+ if (!trimmed)
483
+ return;
484
+ if (!trimmed.startsWith("{")) {
485
+ if (logStream) {
486
+ logStream.write(`[diagnostic] ${line}\n`);
487
+ }
280
488
  return;
489
+ }
281
490
  let event;
282
491
  try {
283
- event = JSON.parse(line);
492
+ event = JSON.parse(trimmed);
284
493
  }
285
494
  catch {
286
495
  unparseableCount++;
287
- if (unparseableCount === 1 || unparseableCount % 100 === 0) {
288
- console.error(`[pi-swarm] Agent ${agentId}: ${unparseableCount} unparseable output line(s)`);
496
+ if (logStream) {
497
+ const preview = trimmed.length > 200 ? `${trimmed.slice(0, 200)}...` : trimmed;
498
+ logStream.write(`[unparseable] ${preview}\n`);
499
+ }
500
+ if (unparseableCount >= 10 && unparseableCount % 10 === 0) {
501
+ console.error(`[pi-swarm] Agent ${agentId}: ${unparseableCount} unparseable JSON line(s) logged to output.log`);
289
502
  }
290
503
  return;
291
504
  }
292
505
  if (event.type === "message_end" && event.message?.role === "assistant") {
293
506
  const msg = event.message;
294
507
  if (msg.usage) {
295
- usageAcc.input += msg.usage.input || 0;
296
- usageAcc.output += msg.usage.output || 0;
297
- usageAcc.cacheRead += msg.usage.cacheRead || 0;
298
- usageAcc.cacheWrite += msg.usage.cacheWrite || 0;
299
- usageAcc.totalTokens += msg.usage.totalTokens || 0;
508
+ usageAcc.input += Math.round(msg.usage.input || 0);
509
+ usageAcc.output += Math.round(msg.usage.output || 0);
510
+ usageAcc.cacheRead += Math.round(msg.usage.cacheRead || 0);
511
+ usageAcc.cacheWrite += Math.round(msg.usage.cacheWrite || 0);
512
+ usageAcc.totalTokens += Math.round(msg.usage.totalTokens ||
513
+ (msg.usage.input || 0) + (msg.usage.output || 0));
514
+ emitUsage();
300
515
  }
301
516
  if (msg.stopReason)
302
517
  stopReason = msg.stopReason;
@@ -323,6 +538,36 @@ function parseEventStream(proc, agentId, logStream) {
323
538
  finalText += messageText;
324
539
  }
325
540
  }
541
+ else if (event.type === "content_block_delta" &&
542
+ event.delta?.type === "text_delta") {
543
+ const deltaText = event.delta.text;
544
+ if (deltaText) {
545
+ finalText += deltaText;
546
+ }
547
+ }
548
+ else if (event.type === "message_delta") {
549
+ if (event.usage) {
550
+ usageAcc.input += Math.round(event.usage.input || 0);
551
+ usageAcc.output += Math.round(event.usage.output || 0);
552
+ usageAcc.cacheRead += Math.round(event.usage.cacheRead || 0);
553
+ usageAcc.cacheWrite += Math.round(event.usage.cacheWrite || 0);
554
+ usageAcc.totalTokens += Math.round(event.usage.totalTokens ||
555
+ (event.usage.input || 0) + (event.usage.output || 0));
556
+ emitUsage();
557
+ }
558
+ if (event.delta?.stopReason) {
559
+ stopReason = event.delta.stopReason;
560
+ }
561
+ }
562
+ else if (event.type === "tool_result" &&
563
+ typeof event.output === "string") {
564
+ const toolOutput = event.output;
565
+ if (toolOutput && toolOutput.trim()) {
566
+ if (finalText)
567
+ finalText += "\n";
568
+ finalText += toolOutput;
569
+ }
570
+ }
326
571
  };
327
572
  const processBuffer = () => {
328
573
  if (!buffer.trim())
@@ -343,12 +588,9 @@ function parseEventStream(proc, agentId, logStream) {
343
588
  logStream.write(text);
344
589
  if (buffer.length > MAX_LINE_BUFFER_SIZE) {
345
590
  settle(null, new Error(`Subagent output exceeded buffer limit (${MAX_LINE_BUFFER_SIZE / 1024 / 1024}MB)`));
346
- if (!proc.killed) {
591
+ if (!killState.exited) {
347
592
  proc.kill("SIGTERM");
348
- setTimeout(() => {
349
- if (!proc.killed)
350
- proc.kill("SIGKILL");
351
- }, 5000);
593
+ killState.scheduleSigkill();
352
594
  }
353
595
  return;
354
596
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/shared/spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/shared/spawner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,aAAa,EAEb,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,GAEhB,MAAM,eAAe,CAAC;AAUvB,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAA0B;IAE1B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAG,SAAS,QAAQ,EAAE,EAAE,CAAC;IAEtC,gEAAgE;IAChE,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,YAAY,GAAG;YACb,GAAG,IAAI;YACP,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE7D,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAEjB,OAAO;QACL,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,KAAK;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,IAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAE7B,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,YAAY,GAAG;YACb,GAAG,IAAI;YACP,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAyB;QACtC,GAAG,YAAY;QACf,WAAW,EAAE,UAAU;KACxB,CAAC;IACF,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAEjB,OAAO;QACL,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,IAAI;QACb,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,IAAwB;IAExB,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAsDD,KAAK,UAAU,kBAAkB,CAC/B,OAAe,EACf,IAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,IAAI,QAAkC,CAAC;IACvC,IAAI,GAAG,GAAG,OAAO,CAAC;IAElB,uDAAuD;IACvD,gCAAgC;IAChC,qDAAqD;IACrD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;IAC1C,IAAI,aAAiC,CAAC;IACtC,IAAI,cAAkC,CAAC;IACvC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjE,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACpD,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACtD,sDAAsD;QACtD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,aAAa,CAAC,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,2BAA2B;QAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,cAAc,EAAE,CAAC;QACxD,kEAAkE;QAClE,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC;YACxE,CAAC,CAAC,aAAa,CAAC;QAClB,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC;YACzE,CAAC,CAAC,cAAc,CAAC;QACnB,MAAM,eAAe,GAAG;YACtB,EAAE;YACF,KAAK;YACL,EAAE;YACF,oCAAoC;YACpC,EAAE;YACF,wFAAwF;YACxF,EAAE;YACF,yCAAyC,QAAQ,EAAE;YACnD,2CAA2C,SAAS,EAAE;YACtD,EAAE;YACF,aAAa;YACb,6FAA6F;YAC7F,kFAAkF;YAClF,2CAA2C,IAAI,CAAC,KAAK,IAAI,EAAE,qCAAqC,QAAQ,6EAA6E;YACrL,mGAAmG;YACnG,qFAAqF;YACrF,yEAAyE;YACzE,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;IAC9C,CAAC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC;QAC7B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG;KACJ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAiB,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;QACpE,GAAG;QACH,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;KACxB,CAAC,CAAC;IAEH,IAAI,SAAkC,CAAC;IACvC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE;YAChD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ;YAC3B,CAAC,CAAC,aAAa,QAAQ,CAAC,IAAI,aAAa,QAAQ,CAAC,MAAM,EAAE;YAC1D,CAAC,CAAC,oBAAoB,CAAC;QACzB,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,UAAU,OAAO,EAAE;YACnB,YAAY,IAAI,CAAC,WAAW,EAAE;YAC9B,SAAS,QAAQ,EAAE;YACnB,QAAQ,GAAG,EAAE;YACb,YAAY;YACZ,YAAY,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;YAC5C,UAAU,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE;YACvC,UAAU,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;YAC7C,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,SAAS;YACT,WAAW;YACX,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,SAAS;YACT,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,aAAwD,CAAC;IAC7D,IAAI,iBAA6D,CAAC;IAClE,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,aAA2D,CAAC;IAChE,IAAI,YAAgD,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,WAA8B,CAAC;IAEnC,MAAM,SAAS,GAAqB;QAClC,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,SAAS;QACvB,eAAe;YACb,IAAI,IAAI,CAAC,YAAY;gBAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;KACF,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;QACxB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC3B,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACrC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,uFAAuF;IACvF,IAAI,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,kEAAkE;QAClE,IAAI,CAAC;YACH,iBAAiB,GAAG,UAAU,CAAC,cAAc,CAAC;gBAC5C,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI;gBAC/B,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO;YAC5B,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;oBAAE,OAAO;gBACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;gBAClD,IAAI,WAAW,IAAI,iBAAiB;oBAAE,OAAO;gBAE7C,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAChD,iBAAiB,GAAG,WAAW,CAAC;gBAEhC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;wBAC/C,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;4BACxC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;wBACxB,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,uBAAuB;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,mEAAmE;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,aAAa,CAAC,iBAAiB,CAAC,CAAC;YACjC,iBAAiB,GAAG,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE;QAClC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;YACpD,SAAS,CAAC,GAAG,EAAE,CAAC;YAChB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,EAAE;QAC3C,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG;YACb,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YACxC,gBAAgB,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE;YAChD,cAAc,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,WAAW,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;YACjG,EAAE;YACF,SAAS;YACT,MAAM,CAAC,IAAI,IAAI,aAAa;SAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,GAAU,EAAE,YAAY,GAAG,QAAQ,EAAE,EAAE;QACzD,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG;YACb,GAAG,YAAY,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YAC9C,UAAU,GAAG,CAAC,OAAO,EAAE;SACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAgB,EAAE,EAAE;QACpC,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO;QAC5B,OAAO,GAAG,IAAI,CAAC;QACf,WAAW;YACT,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACrC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO;YAC5B,OAAO,GAAG,IAAI,CAAC;YACf,WAAW,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrB,SAAS,CAAC,eAAe,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjE,aAAa,GAAG,OAAO,CAAC;YACxB,YAAY,GAAG,MAAM,CAAC;YACtB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,IAAI;oBAAE,OAAO;gBACjB,IAAI,OAAO,EAAE,CAAC;oBACZ,8DAA8D;oBAC9D,mDAAmD;oBACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;wBACnC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,oEAAoE;oBACpE,UAAU,CAAC,WAAW,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;oBACpE,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,IAAI,IAAI;oBAAE,OAAO;gBACjB,IAAI,OAAO,EAAE,CAAC;oBACZ,gFAAgF;oBAChF,UAAU,CACR,WAAW;wBACT,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACvD,SAAS,CACV,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC;QAC/C,IAAI,cAAkC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,aAAa,GAAG,eAAe,CACnC,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,WAAW,CACjB,CAAC;YACF,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACrD,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;gBACtC,WAAW,IAAI,0CAA0C,aAAa,CAAC,MAAM,KAAK,CAAC;YACrF,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,cAAc;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG;oBACb,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;oBACtC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,IAAkB,EAClB,OAAe,EACf,SAAkC,EAClC,SAA2B,EAC3B,OAAwC;IAExC,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;SACf,CAAC;QACF,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,UAA8B,CAAC;QACnC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG;gBAAE,OAAO,CAAC,kBAAkB;YACzD,aAAa,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,MAA2B,EAAE,GAAW,EAAE,EAAE;YAC1D,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;gBACxB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;oBAC3B,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBACrC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC;gBACrC,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAiB,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE;gBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;aAClC;YACD,UAAU;YACV,YAAY,EAAE,YAAY,IAAI,SAAS;SACxC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,KAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB,EAAE,CAAC;gBACnB,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;oBACjE,SAAS,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC;gBAChD,CAAC;gBACD,IAAI,gBAAgB,IAAI,EAAE,IAAI,gBAAgB,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,KAAK,CACX,oBAAoB,OAAO,KAAK,gBAAgB,gDAAgD,CACjG,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACd,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACnD,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBACrD,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;oBAC3D,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;oBAC7D,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAChC,GAAG,CAAC,KAAK,CAAC,WAAW;wBACnB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CACnD,CAAC;oBACF,SAAS,EAAE,CAAC;gBACd,CAAC;gBACD,IAAI,GAAG,CAAC,UAAU;oBAAE,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAChD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACrB,IAAI,YAAY;wBAAE,YAAY,IAAI,IAAI,CAAC;oBACvC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;gBACnC,CAAC;gBAED,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC3C,WAAW,GAAG,OAAO,CAAC;gBACxB,CAAC;qBAAM,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;4BACxC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC;wBAC5B,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,SAAS;wBAAE,SAAS,IAAI,IAAI,CAAC;oBACjC,SAAS,IAAI,WAAW,CAAC;gBAC3B,CAAC;YACH,CAAC;iBAAM,IACL,KAAK,CAAC,IAAI,KAAK,qBAAqB;gBACpC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,EAClC,CAAC;gBACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,IAAI,SAAS,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACrD,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBACvD,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;oBAC7D,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;oBAC/D,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAChC,KAAK,CAAC,KAAK,CAAC,WAAW;wBACrB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CACvD,CAAC;oBACF,SAAS,EAAE,CAAC;gBACd,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;oBAC5B,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,IACL,KAAK,CAAC,IAAI,KAAK,aAAa;gBAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAChC,CAAC;gBACD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;gBAChC,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpC,IAAI,SAAS;wBAAE,SAAS,IAAI,IAAI,CAAC;oBACjC,SAAS,IAAI,UAAU,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACtC,IAAI,OAAO;oBAAE,OAAO;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,IAAI,CAAC;gBACf,IAAI,SAAS;oBAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;oBACzC,MAAM,CACJ,IAAI,EACJ,IAAI,KAAK,CACP,0CAA0C,oBAAoB,GAAG,IAAI,GAAG,IAAI,KAAK,CAClF,CACF,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACrB,SAAS,CAAC,eAAe,EAAE,CAAC;oBAC9B,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,aAAa,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,GAAG,EAC/C,GAAG,CAAC,OAAO,CACZ,CAAC;gBACF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACtC,IAAI,OAAO;oBAAE,OAAO;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,IAAI,YAAY;wBAAE,YAAY,IAAI,IAAI,CAAC;oBACvC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,GAAG,EAC/C,GAAG,CAAC,OAAO,CACZ,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,OAAO;gBAAE,OAAO;YACpB,aAAa,EAAE,CAAC;YAEhB,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM;oBACnB,CAAC,CAAC,6BAA6B,MAAM,EAAE;oBACvC,CAAC,CAAC,6BAA6B,IAAI,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrE,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC"}