@plurnk/plurnk 0.31.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tui.js CHANGED
@@ -18,24 +18,29 @@ import { isAbsolute, resolve } from "node:path";
18
18
  import PasteFilter from "./paste.js";
19
19
  import { pathPartial, completePath, dslOpPartial, completeOps } from "./completion.js";
20
20
  import { renderLogEntry, renderSummary, isPromptEntry, coordLabel } from "./render.js";
21
- import { reviewProposal, isServerResolved } from "./proposal.js";
21
+ import { renderProposalMenu, keyToResolution, isServerResolved, isBroadcastProposal } from "./proposal.js";
22
22
  import { renderTelemetryEvent, report, clientSubcommandUnknownVerb } from "./telemetry.js";
23
23
  import StreamTrace, { inlineable, renderInline } from "./stream.js";
24
24
  import { runModels, runSessionList, runSessionRuns, runLogRead } from "./subcommands.js";
25
25
  // One verb vocabulary across nvim's :AI/, the TUI, and (where they exist)
26
26
  // the argv subcommands. Convergence is policy: divergence needs a reason.
27
+ // Singular = CREATE, plural = LIST: /session makes a new session, /sessions
28
+ // lists them; /run forks a new run, /runs lists them. The old /new was
29
+ // ambiguous (session or run?) and is gone. /rename retargets the current
30
+ // session's mutable handle (a run's name is immutable — no /rename for runs).
27
31
  export const VERBS = [
28
32
  "help", "models", "sessions", "runs", "log", "model",
29
- "yolo", "new", "rename", "fork", "stop", "quit",
33
+ "yolo", "session", "rename", "run", "stop", "quit",
30
34
  "pick", "hide", "view", "repo", "drop", "members", "import",
35
+ "accept", "reject", "cancel", "edit",
31
36
  ];
32
37
  export const TUI_HELP = [
33
38
  " /models /sessions /runs /log [n] inspect (same tables as the CLI)",
34
39
  " /model <alias> model for subsequent loops",
35
40
  " /yolo toggle local auto-accept",
36
- " /new [name] new session (reconnects)",
41
+ " /session [name] new session (a fresh world)",
37
42
  " /rename <name> rename this session (a mutable handle)",
38
- " /fork [name] branch this conversation into a new run",
43
+ " /run [name] new run (branch this conversation)",
39
44
  " /pick <glob> membership: admit files git misses",
40
45
  " /hide <glob> membership: drop a tracked match",
41
46
  " /view <glob> membership: admit read-only",
@@ -43,10 +48,13 @@ export const TUI_HELP = [
43
48
  " /drop <glob> membership: remove a constraint",
44
49
  " /members the model's resolved file universe (+ rules)",
45
50
  " /import <path> dump a local file's content into the prompt",
51
+ " /accept /reject /cancel /edit resolve a pending proposal (or keys a/e/r/c)",
46
52
  " /stop cancel the running loop",
47
53
  " /quit exit",
48
54
  " << raw DSL ! cmd (exec) ... inject ? ask : act",
49
55
  " Ctrl-J / Alt-Enter insert a ↵ newline (editable); Enter submits",
56
+ " Alt-m/s · Alt-R/L/Y/N/M · Alt-x quick verbs (nvim case): models sessions runs",
57
+ " log yolo session members stop · Alt-h help",
50
58
  ].join("\n") + "\n";
51
59
  // The non-submitting newline keys, by their raw byte sequence (post paste
52
60
  // filter): Ctrl-J is LF (`\n`, a distinct byte from Enter's CR — works on every
@@ -62,6 +70,24 @@ export const isNewlineKey = (forward) => forward === "\n" || forward === "\x1b\r
62
70
  // untouched.
63
71
  export const NL_MARK = "↵";
64
72
  export const expandNewlines = (line) => line.replaceAll(NL_MARK, "\n");
73
+ // Muscle-memory quick-keys, converged with plurnk.nvim's `<leader>a<letter>`
74
+ // mnemonics — SAME CASE as nvim (lowercase m/s/x, capital R/L/Y/N/M), which
75
+ // Alt-<letter> can carry (Alt-m = `ESC m`, Alt-M = `ESC M` — distinct bytes).
76
+ // Delivered as Alt not Ctrl because Ctrl-<letter> collides with terminal/
77
+ // readline control codes: Ctrl-m IS Enter, Ctrl-Shift-m is ALSO Enter (Shift
78
+ // doesn't change a control code), Ctrl-s is XOFF, Ctrl-i is Tab, and readline
79
+ // owns a/e/n/p/u/w/k/l. Alt-b/f/d are skipped (readline word-ops).
80
+ export const ALT_SHORTCUTS = Object.freeze({
81
+ m: "/models", s: "/sessions", R: "/runs", L: "/log",
82
+ Y: "/yolo", N: "/session", M: "/members", x: "/stop", h: "/help",
83
+ });
84
+ // An Alt-<letter> keypress (ESC then a single letter, no `[`/`O` → not an arrow
85
+ // or function key) mapped to its verb, or null. Case-sensitive (mirrors nvim).
86
+ // Reassembled by the paste filter whether it arrives in one chunk or split.
87
+ export const altShortcut = (forward) => {
88
+ const m = forward.match(/^\x1b([a-zA-Z])$/);
89
+ return m ? (ALT_SHORTCUTS[m[1]] ?? null) : null;
90
+ };
65
91
  export const parseSlash = (line) => {
66
92
  const m = line.match(/^\/(\S*)\s*(.*)$/);
67
93
  return { verb: m?.[1] ?? "", rest: (m?.[2] ?? "").trim() };
@@ -112,7 +138,8 @@ export const seedPromptHistory = async (rpc, sessionId, rl) => {
112
138
  export const buildHeader = (opts) => {
113
139
  const head = opts.versionNotice ?? "plurnk";
114
140
  const modelLabel = opts.modelAlias ?? opts.activeAlias ?? "(daemon default)";
115
- return `${head} · session: ${opts.sessionName} · model: ${modelLabel} · /help`;
141
+ const yolo = opts.yolo ? " · yolo: on" : "";
142
+ return `${head} · session: ${opts.sessionName} · model: ${modelLabel}${yolo} · /help`;
116
143
  };
117
144
  export const handleVerb = async (line, ctx) => {
118
145
  const { verb, rest } = parseSlash(line);
@@ -149,15 +176,17 @@ export const handleVerb = async (line, ctx) => {
149
176
  opts.yolo = !opts.yolo;
150
177
  write(` yolo: ${opts.yolo ? "ON" : "OFF"}\n`);
151
178
  return;
152
- case "new": {
153
- // Rebind in place (service §13.5-rebind) — no reconnect.
179
+ case "session": {
180
+ // New session — a fresh world. Rebind in place (service
181
+ // §13.5-rebind), no reconnect. Name is optional (auto-named if
182
+ // omitted) and is a mutable handle (/rename retargets it later).
154
183
  const params = {};
155
184
  if (rest.length > 0)
156
185
  params.name = rest;
157
186
  if (opts.projectRoot !== undefined)
158
187
  params.projectRoot = opts.projectRoot;
159
188
  ctx.setSession(await rpc.call("session.create", params));
160
- write(` session: ${ctx.getSession().name}\n`);
189
+ write(` session: ${ctx.getSession().name} (new)\n`);
161
190
  return;
162
191
  }
163
192
  case "rename": {
@@ -172,13 +201,13 @@ export const handleVerb = async (line, ctx) => {
172
201
  write(` session: ${renamed.name}\n`);
173
202
  return;
174
203
  }
175
- case "fork": {
176
- // run.fork (svc#248) branch this conversation into a new run,
177
- // optionally named at instantiation (immutable after). Bind to the
178
- // fork so the next prompt speaks there. The session is unchanged.
204
+ case "run": {
205
+ // New run — run.fork (svc#248) branches this conversation, optionally
206
+ // named at instantiation (immutable after). Bind to the fork so the
207
+ // next prompt speaks there. The session (the world) is unchanged.
179
208
  const forked = await rpc.call("run.fork", rest.length > 0 ? { name: rest } : {});
180
209
  await rpc.call("session.attach", { id: ctx.getSession().id, runId: forked.runId });
181
- write(` forked ${forked.runName}\n`);
210
+ write(` run: ${forked.runName} (new)\n`);
182
211
  return;
183
212
  }
184
213
  case "pick":
@@ -252,6 +281,13 @@ export const handleVerb = async (line, ctx) => {
252
281
  }
253
282
  await ctx.importFile(rest);
254
283
  return;
284
+ case "accept":
285
+ case "reject":
286
+ case "cancel":
287
+ case "edit":
288
+ // Typed no-modifier fallback for the a/e/r/c proposal review keys.
289
+ await ctx.resolveProposal(verb);
290
+ return;
255
291
  case "stop":
256
292
  await rpc.call("loop.cancel", { reason: "user_stop" });
257
293
  return;
@@ -266,9 +302,20 @@ export const runTui = async (rpc, session, opts) => {
266
302
  let current = session;
267
303
  // Highest loop_seq the waterfall has shown — the next prompt is one beyond.
268
304
  let lastLoopSeq = 0;
269
- // Subscribe to log/entry notifications render each as a waterfall line.
270
- // `\r\x1b[2K` wipes any readline-redrawn prompt sitting on the current line
271
- // before our output, otherwise the first trace line lands beside the prompt.
305
+ // Loop state, hoisted so buildPrompt can show a steer prompt while a loop
306
+ // runs and the line handler / SIGINT can share it.
307
+ let inFlight = false;
308
+ let cancelRequested = false;
309
+ // Print a line ABOVE the live readline prompt without eating the user's
310
+ // in-progress input. The canonical "log while prompting" idiom: wipe the
311
+ // prompt row, write the line, then re-render the prompt + current buffer on
312
+ // the row below (rl.prompt(true) preserves what's typed). This is what lets a
313
+ // loop stream traces AND keep a steer prompt the user can inject into — no
314
+ // cursor/width math, readline owns the redraw. Reassigned to the real impl
315
+ // once rl exists; until then (no loop can be running yet) it just appends.
316
+ let printAbove = (text) => { process.stdout.write(`${text}\n`); };
317
+ // Subscribe to log/entry notifications — render each as a waterfall line,
318
+ // printed above the prompt so a running loop's trace never clobbers it.
272
319
  rpc.onNotification("log/entry", (params) => {
273
320
  const p = params;
274
321
  if (p.entry.loop_seq > lastLoopSeq)
@@ -277,12 +324,12 @@ export const runTui = async (rpc, session, opts) => {
277
324
  // prompt broadcast too would duplicate it (see isPromptEntry).
278
325
  if (isPromptEntry(p.entry))
279
326
  return;
280
- process.stdout.write(`\r\x1b[2K${renderLogEntry(p.entry)}\n`);
327
+ printAbove(renderLogEntry(p.entry));
281
328
  });
282
329
  // telemetry/event — interleaved with the trace waterfall.
283
330
  rpc.onNotification("telemetry/event", (params) => {
284
331
  const p = params;
285
- process.stdout.write(`\r\x1b[2K${renderTelemetryEvent(p.event)}\n`);
332
+ printAbove(renderTelemetryEvent(p.event));
286
333
  });
287
334
  // Streams, coalesced: one start line, one conclusion line, and tiny
288
335
  // concluded outputs inlined (the single bounded content fetch the TUI
@@ -291,17 +338,17 @@ export const runTui = async (rpc, session, opts) => {
291
338
  rpc.onNotification("stream/event", (params) => {
292
339
  const line = streams.event(params);
293
340
  if (line !== null)
294
- process.stdout.write(`\r\x1b[2K${line}\n`);
341
+ printAbove(line);
295
342
  });
296
343
  rpc.onNotification("stream/concluded", (params) => {
297
344
  const p = params;
298
- process.stdout.write(`\r\x1b[2K${streams.concluded(p)}\n`);
345
+ printAbove(streams.concluded(p));
299
346
  void rpc.call("entry.read", { target: p.target }).then((r) => {
300
347
  const channels = r.entry?.channels ?? {};
301
348
  for (const name of ["stdout", "stderr"]) {
302
349
  const content = channels[name]?.content;
303
350
  if (typeof content === "string" && inlineable(content)) {
304
- process.stdout.write(`\r\x1b[2K${renderInline(name, content)}\n`);
351
+ printAbove(renderInline(name, content));
305
352
  }
306
353
  }
307
354
  }).catch(() => { });
@@ -324,7 +371,7 @@ export const runTui = async (rpc, session, opts) => {
324
371
  // One header line: version · session · model · help (see buildHeader).
325
372
  const header = buildHeader({
326
373
  versionNotice: opts.versionNotice, sessionName: current.name,
327
- modelAlias: opts.modelAlias, activeAlias,
374
+ modelAlias: opts.modelAlias, activeAlias, yolo: opts.yolo,
328
375
  });
329
376
  process.stdout.write(`\x1b[2m${header}\x1b[0m\n\n`);
330
377
  // The prompt is the user's row, restricted to WIDTH-STABLE glyphs —
@@ -334,8 +381,9 @@ export const runTui = async (rpc, session, opts) => {
334
381
  // repositions the cursor at its own computed width on every
335
382
  // history-nav/backspace/completion refresh, so the disagreement shows
336
383
  // as text shift. Round 2 (bare ` : `) fixed the drift but destroyed
337
- // the row identity. 👤 (U+1F464) and (U+2705) are plain East-Asian-
338
- // Wide width 2 in node AND every major terminal so they stay; the
384
+ // the row identity. 🐹 (U+1F439, the brand head was the generic 👤
385
+ // U+1F464) and (U+2705) are plain East-Asian-Wide single code points
386
+ // width 2 in node AND every major terminal, no VS16 — so they stay; the
339
387
  // 201 is the contract constant (the prompt row is always a 201 EDIT);
340
388
  // 💬 (U+1F4AC, stable-wide) fills the op slot the toxic ✉️ vacated.
341
389
  // Policy: VS16/ambiguous glyphs are banned from the ENTIRE palette
@@ -345,7 +393,17 @@ export const runTui = async (rpc, session, opts) => {
345
393
  // get: the prompt becomes the next loop's foist EDIT at <next>/01/01.
346
394
  // lastLoopSeq tracks the highest loop the waterfall has shown; the next
347
395
  // prompt is one beyond it. Plain-ASCII coordinate — width-safe.
348
- const buildPrompt = () => ` ${coordLabel(lastLoopSeq + 1, 1, 1)}👤 💬 \x1b[32m201\x1b[0m \x1b[1m: \x1b[0m`;
396
+ // While a loop runs, the prompt becomes a dim steer line: a stable row the
397
+ // user can type into to inject (loop.inject, #193) — kept alive above the
398
+ // streaming traces by printAbove. Idle, it's the user's 201 EDIT row, with a
399
+ // `yolo` badge when local auto-accept is on (plain ASCII — width-deterministic,
400
+ // unlike the VS16 glyphs banned from this row).
401
+ const buildPrompt = () => {
402
+ if (inFlight)
403
+ return ` \x1b[2m… steer (loop running; Enter injects):\x1b[0m `;
404
+ const yolo = opts.yolo ? "\x1b[1;33myolo\x1b[0m " : "";
405
+ return ` ${yolo}${coordLabel(lastLoopSeq + 1, 1, 1)}🐹 💬 ✅ \x1b[32m201\x1b[0m \x1b[1m: \x1b[0m`;
406
+ };
349
407
  // Bracketed-paste buffering (paste.ts): a multi-line paste must become ONE
350
408
  // prompt, not one loop.run per line. readline reads a PassThrough we feed
351
409
  // filtered stdin into; since the input is no longer the TTY directly, raw
@@ -362,7 +420,19 @@ export const runTui = async (rpc, session, opts) => {
362
420
  prompt: buildPrompt(),
363
421
  completer: makeCompleter(() => aliasCache, process.cwd()),
364
422
  });
365
- const reprompt = () => { rl.setPrompt(buildPrompt()); rl.prompt(); };
423
+ const reprompt = () => {
424
+ readline.cursorTo(process.stdout, 0);
425
+ readline.clearLine(process.stdout, 0);
426
+ rl.setPrompt(buildPrompt());
427
+ rl.prompt();
428
+ };
429
+ // Now that rl exists, printAbove can re-render the prompt after each line.
430
+ printAbove = (text) => {
431
+ readline.cursorTo(process.stdout, 0);
432
+ readline.clearLine(process.stdout, 0);
433
+ process.stdout.write(`${text}\n`);
434
+ rl.prompt(true);
435
+ };
366
436
  // Multi-line composition. The non-submitting newline keys insert a single ↵
367
437
  // marker into readline's ONE line; Enter submits, expanding ↵→\n. Keeping it
368
438
  // one readline line means backspace/arrows/history edit across newlines
@@ -373,41 +443,117 @@ export const runTui = async (rpc, session, opts) => {
373
443
  // (paste.ts feeds readline a PassThrough) is where we catch the keys, so the
374
444
  // suppressed bytes never reach readline — which would otherwise submit on
375
445
  // `\n`. Each interactive keypress is its own chunk, so an exact match holds.
446
+ // onStdin is the single keyboard dispatcher: pending-proposal key, paste,
447
+ // the newline keys, the Alt-shortcuts, else readline. The proposal/shortcut
448
+ // handlers are forward-declared (assigned once verbCtx exists).
449
+ let pendingProposal = null;
450
+ let onProposalKey = () => { };
451
+ let dispatchShortcut = () => { };
376
452
  const onStdin = (chunk) => {
377
453
  const forward = paste.feed(chunk.toString("utf8"));
378
454
  if (forward.length === 0)
379
455
  return;
456
+ // A pending proposal + an EMPTY prompt line: a single review key
457
+ // (a/e/r/c) resolves it. Anything else — including typing `/accept` —
458
+ // falls through to readline, so the no-modifier verb fallback works.
459
+ if (pendingProposal !== null && rl.line.length === 0 && /^[aerc]$/i.test(forward)) {
460
+ onProposalKey(forward);
461
+ return;
462
+ }
380
463
  if (isNewlineKey(forward)) {
381
464
  rl.write(NL_MARK);
382
465
  return;
383
466
  }
467
+ const verb = altShortcut(forward);
468
+ if (verb !== null) {
469
+ dispatchShortcut(verb);
470
+ return;
471
+ }
384
472
  input.write(forward);
385
473
  };
386
474
  process.stdin.on("data", onStdin);
387
475
  // Cross-restart up/down history from the daemon (svc#238) — non-blocking.
388
476
  void seedPromptHistory(rpc, current.id, rl);
389
- // Proposal lifecycle: server-resolved proposals (flags.yolo/noProposals)
390
- // settle in-process skip; --yolo auto-accepts locally; otherwise pause
391
- // readline, review, resolve, resume.
477
+ // Proposal lifecycle — NON-BLOCKING. Server-resolved (flags.yolo/noProposals)
478
+ // settle in-process skip. --yolo auto-accepts. A broadcast SEND (model
479
+ // speech/park no target) is not reviewable → auto-accept (svc#255). A real
480
+ // proposal renders its menu and parks as `pendingProposal` (queue beyond),
481
+ // WITHOUT pausing readline or grabbing stdin: resolve via a single key
482
+ // (onStdin, above) OR the typed `/accept`/`/reject`/`/cancel`/`/edit` verbs.
483
+ // Only the `$EDITOR` path hands the terminal off — and only for its spawn.
484
+ const proposalQueue = [];
485
+ const showNextProposal = () => {
486
+ if (pendingProposal !== null || proposalQueue.length === 0)
487
+ return;
488
+ pendingProposal = proposalQueue.shift();
489
+ process.stdout.write(`\r\x1b[2K${renderProposalMenu(pendingProposal)}\n`
490
+ + `\x1b[2m resolve: a/e/r/c or /accept /reject /cancel /edit\x1b[0m\n`);
491
+ reprompt();
492
+ };
493
+ const resolvePending = async (resolution) => {
494
+ const p = pendingProposal;
495
+ if (p === null)
496
+ return;
497
+ pendingProposal = null;
498
+ try {
499
+ await rpc.call("loop.resolve", { logEntryId: p.logEntryId, ...resolution });
500
+ }
501
+ catch (cause) {
502
+ process.stdout.write(` \x1b[31mresolve failed: ${cause instanceof Error ? cause.message : String(cause)}\x1b[0m\n`);
503
+ }
504
+ showNextProposal();
505
+ reprompt();
506
+ };
507
+ // `e`/`/edit` → $EDITOR. It needs the terminal: detach onStdin + raw-off for
508
+ // the spawn, restore after. The ONE place the non-blocking design still hands
509
+ // off — bounded to the editor's lifetime.
510
+ const editAndResolve = async () => {
511
+ const p = pendingProposal;
512
+ if (p === null)
513
+ return;
514
+ process.stdin.off("data", onStdin);
515
+ process.stdin.setRawMode?.(false);
516
+ let resolution;
517
+ try {
518
+ resolution = (await keyToResolution("e", p)) ?? { decision: "cancel", outcome: "edit_failed" };
519
+ }
520
+ catch (cause) {
521
+ process.stdout.write(` \x1b[31medit failed: ${cause instanceof Error ? cause.message : String(cause)}\x1b[0m\n`);
522
+ resolution = { decision: "cancel", outcome: "edit_error" };
523
+ }
524
+ finally {
525
+ process.stdin.setRawMode?.(true);
526
+ process.stdin.resume();
527
+ process.stdin.on("data", onStdin);
528
+ }
529
+ await resolvePending(resolution);
530
+ };
531
+ // Single review key (from onStdin): a/r/c resolve directly, e edits.
532
+ onProposalKey = (key) => {
533
+ if (key.toLowerCase() === "e") {
534
+ void editAndResolve();
535
+ return;
536
+ }
537
+ void keyToResolution(key, pendingProposal)
538
+ .then((r) => { if (r !== null)
539
+ return resolvePending(r); });
540
+ };
392
541
  rpc.onNotification("loop/proposal", (params) => {
393
542
  const p = params;
394
- void (async () => {
395
- if (isServerResolved(p))
396
- return;
397
- if (opts.yolo) {
398
- await rpc.call("loop.resolve", { logEntryId: p.logEntryId, decision: "accept", outcome: "client_yolo" });
399
- return;
400
- }
401
- rl.pause();
402
- try {
403
- const resolution = await reviewProposal(p);
404
- await rpc.call("loop.resolve", { logEntryId: p.logEntryId, ...resolution });
405
- }
406
- finally {
407
- rl.resume();
408
- rl.prompt(true);
409
- }
410
- })();
543
+ if (isServerResolved(p))
544
+ return;
545
+ if (isBroadcastProposal(p)) {
546
+ void rpc.call("loop.resolve", { logEntryId: p.logEntryId, decision: "accept", outcome: "broadcast" })
547
+ .catch(() => { });
548
+ return;
549
+ }
550
+ if (opts.yolo) {
551
+ void rpc.call("loop.resolve", { logEntryId: p.logEntryId, decision: "accept", outcome: "client_yolo" })
552
+ .catch(() => { });
553
+ return;
554
+ }
555
+ proposalQueue.push(p);
556
+ showNextProposal();
411
557
  });
412
558
  // Verb dispatch runs through the testable module-level handleVerb; this
413
559
  // context injects the live session / opts / stdout / import glue.
@@ -428,11 +574,38 @@ export const runTui = async (rpc, session, opts) => {
428
574
  }
429
575
  rl.write(paste.stash(content));
430
576
  },
577
+ resolveProposal: async (action) => {
578
+ if (pendingProposal === null) {
579
+ process.stdout.write(" (no pending proposal)\n");
580
+ return;
581
+ }
582
+ if (action === "edit") {
583
+ await editAndResolve();
584
+ return;
585
+ }
586
+ await resolvePending({ decision: action });
587
+ },
588
+ };
589
+ // Alt-<letter> shortcut → run the verb. Wipe the prompt line, dispatch
590
+ // through the same handleVerb the typed `/verb` uses (the partial prompt in
591
+ // readline's buffer survives), then reprompt. Print-above pattern; no math.
592
+ dispatchShortcut = (verb) => {
593
+ process.stdout.write("\r\x1b[2K");
594
+ void (async () => {
595
+ try {
596
+ if (await handleVerb(verb, verbCtx) === "quit") {
597
+ rl.close();
598
+ return;
599
+ }
600
+ }
601
+ catch (cause) {
602
+ process.stdout.write(` \x1b[31merror: ${cause instanceof Error ? cause.message : String(cause)}\x1b[0m\n`);
603
+ }
604
+ reprompt();
605
+ })();
431
606
  };
432
607
  reprompt();
433
608
  return new Promise((resolve) => {
434
- let inFlight = false;
435
- let cancelRequested = false;
436
609
  rl.on("line", async (line) => {
437
610
  // Expand typed ↵ markers (Ctrl-J / Alt-Enter newlines) FIRST, then
438
611
  // paste markers — so a pasted literal ↵ stays literal.
@@ -445,9 +618,11 @@ export const runTui = async (rpc, session, opts) => {
445
618
  // flight — /stop is precisely the mid-loop verb.
446
619
  if (trimmed.startsWith("/")) {
447
620
  const { verb } = parseSlash(trimmed);
448
- if (inFlight && verb !== "stop" && verb !== "help" && verb !== "") {
449
- process.stdout.write(" \x1b[2m(busy; /stop to cancel, /help for the language)\x1b[0m\n");
450
- reprompt();
621
+ // /stop, /help, and the proposal verbs stay reachable mid-loop
622
+ // a proposal pauses the loop and must be resolvable by typing.
623
+ const PASS = new Set(["stop", "help", "", "accept", "reject", "cancel", "edit"]);
624
+ if (inFlight && !PASS.has(verb)) {
625
+ printAbove(" \x1b[2m(busy; /stop to cancel, /help for the language)\x1b[0m");
451
626
  return;
452
627
  }
453
628
  try {
@@ -469,18 +644,21 @@ export const runTui = async (rpc, session, opts) => {
469
644
  // into the live loop. (Raw DSL / exec are separate client-run
470
645
  // ops; keep them out of a running conversation for now.)
471
646
  if (trimmed.startsWith("<<") || trimmed.startsWith("!")) {
472
- process.stdout.write(" \x1b[2m(loop running — /stop before a client op)\x1b[0m\n");
473
- reprompt();
647
+ printAbove(" \x1b[2m(loop running — /stop before a client op)\x1b[0m");
474
648
  return;
475
649
  }
476
650
  const inject = trimmed.replace(/^(\.\.\.|[?:])\s*/, "");
477
651
  void rpc.call("loop.inject", { prompt: inject })
478
- .then(() => process.stdout.write(" \x1b[2m↳ injected\x1b[0m\n"))
479
- .catch((cause) => process.stdout.write(` \x1b[31minject failed: ${cause instanceof Error ? cause.message : String(cause)}\x1b[0m\n`));
652
+ .then(() => printAbove(" \x1b[2m↳ injected\x1b[0m"))
653
+ .catch((cause) => printAbove(` \x1b[31minject failed: ${cause instanceof Error ? cause.message : String(cause)}\x1b[0m`));
480
654
  reprompt();
481
655
  return;
482
656
  }
483
657
  inFlight = true;
658
+ // Surface a live steer prompt for the duration of the loop, so the
659
+ // user has a stable row to type an inject into (the traces print
660
+ // above it). buildPrompt switches to its steer form while inFlight.
661
+ reprompt();
484
662
  const start = Date.now();
485
663
  let turnCount = 0;
486
664
  let finalStatus = 0;
@@ -522,11 +700,11 @@ export const runTui = async (rpc, session, opts) => {
522
700
  usage = result.usage;
523
701
  }
524
702
  const wallMs = Date.now() - start;
525
- process.stdout.write(`${renderSummary(turnCount, wallMs, finalStatus, hitMaxTurns, usage)}\n`);
703
+ printAbove(renderSummary(turnCount, wallMs, finalStatus, hitMaxTurns, usage));
526
704
  }
527
705
  catch (cause) {
528
706
  const msg = cause instanceof Error ? cause.message : String(cause);
529
- process.stdout.write(` \x1b[31merror: ${msg}\x1b[0m\n`);
707
+ printAbove(` \x1b[31merror: ${msg}\x1b[0m`);
530
708
  }
531
709
  finally {
532
710
  inFlight = false;
@@ -538,7 +716,8 @@ export const runTui = async (rpc, session, opts) => {
538
716
  process.stdout.write("\x1b[?2004l");
539
717
  process.stdin.off("data", onStdin);
540
718
  process.stdin.setRawMode?.(false);
541
- process.stdout.write("\n");
719
+ // Steal pi's nicety: hand back the one-liner to pick this session up.
720
+ process.stdout.write(`\n \x1b[2mresume this session: plurnk --session ${current.name}\x1b[0m\n`);
542
721
  resolve();
543
722
  });
544
723
  rl.on("SIGINT", () => {
package/dist/tui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,iBAAiB;AACjB,EAAE;AACF,6EAA6E;AAC7E,kEAAkE;AAClE,4BAA4B;AAC5B,0CAA0C;AAC1C,oEAAoE;AACpE,wDAAwD;AACxD,qCAAqC;AACrC,0BAA0B;AAC1B,uEAAuE;AACvE,yEAAyE;AAEzE,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,WAAW,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE3F,OAAO,WAAW,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAYzF,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IACpD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAClD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;IAC3D,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,uEAAuE;IACvE,iEAAiE;IACjE,+DAA+D;IAC/D,kEAAkE;IAClE,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,kEAAkE;IAClE,4EAA4E;IAC5E,sEAAsE;IACtE,mFAAmF;IACnF,kFAAkF;IAClF,mFAAmF;IACnF,8DAA8D;IAC9D,2CAA2C;IAC3C,8DAA8D;IAC9D,mFAAmF;IACnF,oFAAoF;IACpF,iFAAiF;CACpF,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEpB,0EAA0E;AAC1E,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CACrD,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC;AAErE,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,aAAa;AACb,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAC3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAEvF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAC7E,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAqC,MAAM,CAAC,MAAM,CAAC;IACzE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM;IACnD,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO;CACnE,CAAC,CAAC;AAEH,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAiB,EAAE;IAC1D,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAkC,EAAE;IACvE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF,uEAAuE;AACvE,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAA0B,EAAE,GAAW,EAAE,EAAE,CACrE,CAAC,IAAY,EAAE,QAAyD,EAAQ,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACpF,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,OAAO;IACX,CAAC;IACD,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO;IACX,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,OAAO;IACX,CAAC;IACD,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEN,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAQ,EAAE,SAAiB,EAAE,EAAsB,EAAiB,EAAE;IAC1G,IAAI,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAA2B,CAAC;QAC/G,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAG,EAAuC,CAAC,OAAO,GAAG,OAAO,CAAC;IACjH,CAAC;IAAC,MAAM,CAAC,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,6EAA6E;AAC7E,qEAAqE;AACrE,kEAAkE;AAClE,sDAAsD;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAE3B,EAAU,EAAE;IACT,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,OAAO,GAAG,IAAI,eAAe,IAAI,CAAC,WAAW,aAAa,UAAU,GAAG,IAAI,UAAU,CAAC;AAC1F,CAAC,CAAC;AAiBF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,GAAgB,EAA+B,EAAE;IAC5F,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,EAAE,CAAC;QACR,KAAK,MAAM;YACP,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChB,OAAO;QACX,KAAK,QAAQ;YAAE,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,OAAO;QAC7D,KAAK,UAAU;YAAE,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,OAAO;QACpE,KAAK,MAAM;YAAE,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,OAAO;QACvF,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,KAAK,OAAO;YACR,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,kBAAkB,IAAI,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAChG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;YAC5B,OAAO;QACX,KAAK,MAAM;YACP,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/C,OAAO;QACX,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,wDAAwD;YACxD,+DAA+D;YAC/D,iEAAiE;YACjE,MAAM,MAAM,GAAmD,EAAE,CAAC;YAClE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1E,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAkB,CAAC,CAAC;YAC1E,KAAK,CAAC,cAAc,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC;YACrD,OAAO;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,qEAAqE;YACrE,oEAAoE;YACpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAkB,CAAC;YAClF,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxB,KAAK,CAAC,cAAc,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;YACtC,OAAO;QACX,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,sEAAsE;YACtE,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAuC,CAAC;YACvH,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnF,KAAK,CAAC,UAAU,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,mEAAmE;YACnE,+DAA+D;YAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACvE,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACpE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAA6D,CAAC;YAC1H,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAClG,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,cAAc,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC;YAC9F,OAAO;QACX,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,4DAA4D;YAC5D,mEAAmE;YACnE,kEAAkE;YAClE,kEAAkE;YAClE,gEAAgE;YAChE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAE3D,CAAC;YACF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,KAAK,CAAC,iFAAiF,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,2BAA2B,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;sBAClF,MAAM,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,MAAM,YAAY;sBAC1D,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC/D,KAAK,MAAM,CAAC,IAAI,IAAI;oBAAE,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBACrD,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE;oBAAE,KAAK,MAAM,CAAC,IAAI,QAAQ;wBAAE,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;;oBAC/E,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACnG,CAAC;YACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAA6D,CAAC;YAC1H,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAC1B,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,YAAY,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,OAAO;QACX,CAAC;QACD,KAAK,QAAQ;YACT,iEAAiE;YACjE,sEAAsE;YACtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACtE,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,mEAAmE;YACnE,MAAM,GAAG,CAAC,eAAe,CAAC,IAA+C,CAAC,CAAC;YAC3E,OAAO;QACX,KAAK,MAAM;YACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,OAAO;QACX,KAAK,MAAM;YACP,OAAO,MAAM,CAAC;QAClB;YACI,MAAM,CAAC,2BAA2B,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO;IACf,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,OAAsB,EAAE,IAI9D,EAAiB,EAAE;IAChB,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,4EAA4E;IAC5E,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,0EAA0E;IAC1E,mDAAmD;IACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,wEAAwE;IACxE,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,UAAU,GAA2B,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,0EAA0E;IAC1E,wEAAwE;IACxE,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW;YAAE,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnE,oEAAoE;QACpE,+DAA+D;QAC/D,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO;QACnC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,GAAG,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7C,MAAM,CAAC,GAAG,MAAmD,CAAC;QAC9D,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAA4B,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,MAAgC,CAAC;QAC3C,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACzD,MAAM,QAAQ,GAAI,CAA4E,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;YACrH,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAA6B,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,yCAAyC;IACzC,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAA6D,CAAC;QACvG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3C,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;QACzD,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,mEAAmE,CAAC,CAAC;IAE/E,uEAAuE;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI;QAC5D,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;KAC5D,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,aAAa,CAAC,CAAC;IAEpD,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,sEAAsE;IACtE,4DAA4D;IAC5D,sEAAsE;IACtE,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,mEAAmE;IACnE,gEAAgE;IAChE,qEAAqE;IACrE,uEAAuE;IACvE,sEAAsE;IACtE,wEAAwE;IACxE,gEAAgE;IAChE,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,gFAAgF;IAChF,gDAAgD;IAChD,MAAM,WAAW,GAAG,GAAW,EAAE;QAC7B,IAAI,QAAQ;YAAE,OAAO,yDAAyD,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,IAAI,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6CAA6C,CAAC;IACtG,CAAC,CAAC;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,WAAW,EAAE;QACrB,SAAS,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC5D,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,GAAS,EAAE;QACxB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5B,EAAE,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC;IACF,2EAA2E;IAC3E,UAAU,GAAG,CAAC,IAAY,EAAQ,EAAE;QAChC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,uEAAuE;IACvE,yEAAyE;IACzE,4EAA4E;IAC5E,oEAAoE;IACpE,6EAA6E;IAC7E,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,eAAe,GAA0B,IAAI,CAAC;IAClD,IAAI,aAAa,GAA0B,GAAG,EAAE,GAAE,CAAC,CAAC;IACpD,IAAI,gBAAgB,GAA2B,GAAG,EAAE,GAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAQ,EAAE;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,iEAAiE;QACjE,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,eAAe,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChF,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACX,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACzD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,0EAA0E;IAC1E,KAAK,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5C,8EAA8E;IAC9E,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,uEAAuE;IACvE,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,aAAa,GAAqB,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAChC,IAAI,eAAe,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnE,eAAe,GAAG,aAAa,CAAC,KAAK,EAAoB,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,kBAAkB,CAAC,eAAe,CAAC,IAAI;cAClE,uEAAuE,CAAC,CAAC;QAC/E,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,EAAE,UAAsB,EAAiB,EAAE;QACnE,MAAM,CAAC,GAAG,eAAe,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO;QACvB,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzH,CAAC;QACD,gBAAgB,EAAE,CAAC;QACnB,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;IACF,6EAA6E;IAC7E,8EAA8E;IAC9E,0CAA0C;IAC1C,MAAM,cAAc,GAAG,KAAK,IAAmB,EAAE;QAC7C,MAAM,CAAC,GAAG,eAAe,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,UAAsB,CAAC;QAC3B,IAAI,CAAC;YACD,UAAU,GAAG,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QACnG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClH,UAAU,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,qEAAqE;IACrE,aAAa,GAAG,CAAC,GAAW,EAAQ,EAAE;QAClC,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,cAAc,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACjE,KAAK,eAAe,CAAC,GAAG,EAAE,eAAiC,CAAC;aACvD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC;IACF,GAAG,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,MAAwB,CAAC;QACnC,IAAI,gBAAgB,CAAC,CAAC,CAAC;YAAE,OAAO;QAChC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;iBAChG,KAAK,CAAC,GAAG,EAAE,GAA+C,CAAC,CAAC,CAAC;YAClE,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;iBAClG,KAAK,CAAC,GAAG,EAAE,GAAc,CAAC,CAAC,CAAC;YACjC,OAAO;QACX,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,gBAAgB,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,OAAO,GAAgB;QACzB,GAAG,EAAE,IAAI;QACT,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;QACzB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACnE,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YAC9C,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC9H,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC5F,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAAC,MAAM,cAAc,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC1D,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;KACJ,CAAC;IAEF,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,gBAAgB,GAAG,CAAC,IAAY,EAAQ,EAAE;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,KAAK,CAAC,KAAK,IAAI,EAAE;YACb,IAAI,CAAC;gBACD,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;oBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAAC,OAAO;gBAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChH,CAAC;YACD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,QAAQ,EAAE,CAAC;IAEX,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACjC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACzB,mEAAmE;YACnE,uDAAuD;YACvD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,2DAA2D;YAC3D,iDAAiD;YACjD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACrC,iEAAiE;gBACjE,+DAA+D;gBAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjF,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,UAAU,CAAC,iEAAiE,CAAC,CAAC;oBAC9E,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC;oBACD,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;wBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;wBAAC,OAAO;oBAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC;gBAC7D,CAAC;gBACD,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACX,2DAA2D;gBAC3D,gEAAgE;gBAChE,8DAA8D;gBAC9D,yDAAyD;gBACzD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,UAAU,CAAC,2DAA2D,CAAC,CAAC;oBACxE,OAAO;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBACxD,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;qBAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;qBACpD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/H,QAAQ,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,QAAQ,GAAG,IAAI,CAAC;YAChB,mEAAmE;YACnE,iEAAiE;YACjE,oEAAoE;YACpE,QAAQ,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,KAA6B,CAAC;YAElC,IAAI,CAAC;gBACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,4BAA4B;oBAC5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAA2C,CAAC;oBACvG,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,yDAAyD;oBACzD,uDAAuD;oBACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAuB,CAAC;oBAC5E,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,yDAAyD;oBACzD,sDAAsD;oBACtD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;wBACnC,SAAS,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACpF,CAAC;oBACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBAC7D,MAAM,UAAU,GAA2F,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;oBAClI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;wBAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;oBACtE,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;wBAAE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;oBAC/F,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;wBAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACrE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAkB,CAAC;oBACvE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;oBACjC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;oBACjC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAClC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAClC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAClF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,UAAU,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;YACjD,CAAC;oBAAS,CAAC;gBACP,QAAQ,GAAG,KAAK,CAAC;gBACjB,eAAe,GAAG,KAAK,CAAC;gBACxB,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;YAClC,sEAAsE;YACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC;YACnG,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACjB,kEAAkE;YAClE,4DAA4D;YAC5D,iEAAiE;YACjE,0DAA0D;YAC1D,sDAAsD;YACtD,IAAI,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC/B,eAAe,GAAG,IAAI,CAAC;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gBACtF,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}