botmux 2.11.1 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/backend/pty-backend.d.ts +6 -0
- package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
- package/dist/adapters/backend/pty-backend.js +6 -0
- package/dist/adapters/backend/pty-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +16 -2
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +40 -10
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +59 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -0
- package/dist/adapters/backend/tmux-pipe-backend.js +288 -0
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -0
- package/dist/adapters/cli/claude-code.d.ts +15 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +205 -24
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +78 -16
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +10 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/cli.js +63 -8
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts +10 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +29 -1
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/scheduler.d.ts +3 -0
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +3 -0
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-manager.d.ts +17 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +51 -3
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +13 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +115 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +59 -120
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +2 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +23 -9
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +26 -93
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/merge-forward.d.ts +32 -0
- package/dist/im/lark/merge-forward.d.ts.map +1 -0
- package/dist/im/lark/merge-forward.js +99 -0
- package/dist/im/lark/merge-forward.js.map +1 -0
- package/dist/services/bridge-fallback-gate.d.ts +42 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -0
- package/dist/services/bridge-fallback-gate.js +12 -0
- package/dist/services/bridge-fallback-gate.js.map +1 -0
- package/dist/services/bridge-turn-queue.d.ts +111 -0
- package/dist/services/bridge-turn-queue.d.ts.map +1 -0
- package/dist/services/bridge-turn-queue.js +213 -0
- package/dist/services/bridge-turn-queue.js.map +1 -0
- package/dist/services/claude-transcript.d.ts +168 -0
- package/dist/services/claude-transcript.d.ts.map +1 -0
- package/dist/services/claude-transcript.js +524 -0
- package/dist/services/claude-transcript.js.map +1 -0
- package/dist/services/codex-bridge-queue.d.ts +39 -0
- package/dist/services/codex-bridge-queue.d.ts.map +1 -0
- package/dist/services/codex-bridge-queue.js +116 -0
- package/dist/services/codex-bridge-queue.js.map +1 -0
- package/dist/services/codex-transcript.d.ts +35 -0
- package/dist/services/codex-transcript.d.ts.map +1 -0
- package/dist/services/codex-transcript.js +163 -0
- package/dist/services/codex-transcript.js.map +1 -0
- package/dist/services/schedule-store.d.ts +3 -0
- package/dist/services/schedule-store.d.ts.map +1 -1
- package/dist/services/schedule-store.js +6 -0
- package/dist/services/schedule-store.js.map +1 -1
- package/dist/services/session-store.d.ts +10 -0
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +40 -0
- package/dist/services/session-store.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +2 -1
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/render-dimensions.d.ts +48 -0
- package/dist/utils/render-dimensions.d.ts.map +1 -0
- package/dist/utils/render-dimensions.js +55 -0
- package/dist/utils/render-dimensions.js.map +1 -0
- package/dist/utils/terminal-renderer.d.ts.map +1 -1
- package/dist/utils/terminal-renderer.js +5 -2
- package/dist/utils/terminal-renderer.js.map +1 -1
- package/dist/worker.js +1317 -37
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render-dimension policy for the headless xterm + screenshot canvas.
|
|
3
|
+
*
|
|
4
|
+
* Lives in its own file (not inside worker.ts) so tests can exercise the
|
|
5
|
+
* pure resolver without importing the worker entrypoint, which has
|
|
6
|
+
* module-load side effects (logger init, ipc-listener registration).
|
|
7
|
+
*/
|
|
8
|
+
/** Default render width for botmux-spawned CLIs — narrow enough for the
|
|
9
|
+
* web terminal to render comfortably and the card PNG to fit Lark's
|
|
10
|
+
* typical card width. */
|
|
11
|
+
export declare const DEFAULT_RENDER_COLS = 160;
|
|
12
|
+
export declare const DEFAULT_RENDER_ROWS = 50;
|
|
13
|
+
/** Hard upper bound on render dimensions — protects snapshot/PNG memory
|
|
14
|
+
* if a pane is reported as unreasonably wide (or a malformed init
|
|
15
|
+
* payload sneaks past). 320 covers all real-world tmux pane widths
|
|
16
|
+
* including ultrawide monitors; beyond this the canvas balloons and
|
|
17
|
+
* Lark cards stop looking sensible. */
|
|
18
|
+
export declare const MAX_RENDER_COLS = 320;
|
|
19
|
+
export declare const MAX_RENDER_ROWS = 100;
|
|
20
|
+
/** Lower bound — keeps a degenerate 1-col pane from producing a
|
|
21
|
+
* near-empty canvas. */
|
|
22
|
+
export declare const MIN_RENDER_COLS = 80;
|
|
23
|
+
export declare const MIN_RENDER_ROWS = 24;
|
|
24
|
+
/** Numeric clamp with NaN/Infinity guards. NaN snaps to the lower bound
|
|
25
|
+
* (safe default), ±Infinity to the matching bound. */
|
|
26
|
+
export declare function clamp(value: number, lo: number, hi: number): number;
|
|
27
|
+
export interface RenderDimensions {
|
|
28
|
+
cols: number;
|
|
29
|
+
rows: number;
|
|
30
|
+
}
|
|
31
|
+
export interface RenderDimensionConfig {
|
|
32
|
+
adoptMode?: boolean;
|
|
33
|
+
adoptPaneCols?: number;
|
|
34
|
+
adoptPaneRows?: number;
|
|
35
|
+
}
|
|
36
|
+
/** Compute the render dimensions for a session. Adopt mode pegs to the
|
|
37
|
+
* source pane (clamped to safe bounds); everything else uses the
|
|
38
|
+
* defaults so the web terminal + card stay narrow.
|
|
39
|
+
*
|
|
40
|
+
* Why this matters: when the renderer is narrower than the source pane,
|
|
41
|
+
* ANSI meant for col 270 wraps to row 2 in the renderer's xterm. The
|
|
42
|
+
* snapshot then reads "row 2's first 160 cols" as the wrap target +
|
|
43
|
+
* whatever Claude actually wrote on row 2 — producing the duplicated /
|
|
44
|
+
* stair-stepped screenshot the live failure showed. Picking the correct
|
|
45
|
+
* width up-front (in `init` BEFORE startScreenUpdates) is the only fix
|
|
46
|
+
* that doesn't leave wrapped state in xterm's buffer. */
|
|
47
|
+
export declare function resolveRenderDimensions(cfg: RenderDimensionConfig): RenderDimensions;
|
|
48
|
+
//# sourceMappingURL=render-dimensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-dimensions.d.ts","sourceRoot":"","sources":["../../src/utils/render-dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;0BAE0B;AAC1B,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;wCAIwC;AACxC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;yBACyB;AACzB,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;uDACuD;AACvD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;0DAU0D;AAC1D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,qBAAqB,GAAG,gBAAgB,CAQpF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render-dimension policy for the headless xterm + screenshot canvas.
|
|
3
|
+
*
|
|
4
|
+
* Lives in its own file (not inside worker.ts) so tests can exercise the
|
|
5
|
+
* pure resolver without importing the worker entrypoint, which has
|
|
6
|
+
* module-load side effects (logger init, ipc-listener registration).
|
|
7
|
+
*/
|
|
8
|
+
/** Default render width for botmux-spawned CLIs — narrow enough for the
|
|
9
|
+
* web terminal to render comfortably and the card PNG to fit Lark's
|
|
10
|
+
* typical card width. */
|
|
11
|
+
export const DEFAULT_RENDER_COLS = 160;
|
|
12
|
+
export const DEFAULT_RENDER_ROWS = 50;
|
|
13
|
+
/** Hard upper bound on render dimensions — protects snapshot/PNG memory
|
|
14
|
+
* if a pane is reported as unreasonably wide (or a malformed init
|
|
15
|
+
* payload sneaks past). 320 covers all real-world tmux pane widths
|
|
16
|
+
* including ultrawide monitors; beyond this the canvas balloons and
|
|
17
|
+
* Lark cards stop looking sensible. */
|
|
18
|
+
export const MAX_RENDER_COLS = 320;
|
|
19
|
+
export const MAX_RENDER_ROWS = 100;
|
|
20
|
+
/** Lower bound — keeps a degenerate 1-col pane from producing a
|
|
21
|
+
* near-empty canvas. */
|
|
22
|
+
export const MIN_RENDER_COLS = 80;
|
|
23
|
+
export const MIN_RENDER_ROWS = 24;
|
|
24
|
+
/** Numeric clamp with NaN/Infinity guards. NaN snaps to the lower bound
|
|
25
|
+
* (safe default), ±Infinity to the matching bound. */
|
|
26
|
+
export function clamp(value, lo, hi) {
|
|
27
|
+
if (Number.isNaN(value))
|
|
28
|
+
return lo;
|
|
29
|
+
if (value === Infinity)
|
|
30
|
+
return hi;
|
|
31
|
+
if (value === -Infinity)
|
|
32
|
+
return lo;
|
|
33
|
+
return Math.max(lo, Math.min(hi, Math.round(value)));
|
|
34
|
+
}
|
|
35
|
+
/** Compute the render dimensions for a session. Adopt mode pegs to the
|
|
36
|
+
* source pane (clamped to safe bounds); everything else uses the
|
|
37
|
+
* defaults so the web terminal + card stay narrow.
|
|
38
|
+
*
|
|
39
|
+
* Why this matters: when the renderer is narrower than the source pane,
|
|
40
|
+
* ANSI meant for col 270 wraps to row 2 in the renderer's xterm. The
|
|
41
|
+
* snapshot then reads "row 2's first 160 cols" as the wrap target +
|
|
42
|
+
* whatever Claude actually wrote on row 2 — producing the duplicated /
|
|
43
|
+
* stair-stepped screenshot the live failure showed. Picking the correct
|
|
44
|
+
* width up-front (in `init` BEFORE startScreenUpdates) is the only fix
|
|
45
|
+
* that doesn't leave wrapped state in xterm's buffer. */
|
|
46
|
+
export function resolveRenderDimensions(cfg) {
|
|
47
|
+
if (cfg.adoptMode) {
|
|
48
|
+
return {
|
|
49
|
+
cols: clamp(cfg.adoptPaneCols ?? DEFAULT_RENDER_COLS, MIN_RENDER_COLS, MAX_RENDER_COLS),
|
|
50
|
+
rows: clamp(cfg.adoptPaneRows ?? DEFAULT_RENDER_ROWS, MIN_RENDER_ROWS, MAX_RENDER_ROWS),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return { cols: DEFAULT_RENDER_COLS, rows: DEFAULT_RENDER_ROWS };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=render-dimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-dimensions.js","sourceRoot":"","sources":["../../src/utils/render-dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;0BAE0B;AAC1B,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;;;wCAIwC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC;yBACyB;AACzB,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;uDACuD;AACvD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,EAAU,EAAE,EAAU;IACzD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAaD;;;;;;;;;;0DAU0D;AAC1D,MAAM,UAAU,uBAAuB,CAAC,GAA0B;IAChE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,mBAAmB,EAAE,eAAe,EAAE,eAAe,CAAC;YACvF,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,mBAAmB,EAAE,eAAe,EAAE,eAAe,CAAC;SACxF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,QAAA,MAAQ,QAAQ,+BAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,QAAA,MAAQ,QAAQ,+BAAkB,CAAC;AAwBnC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAM;gBAEV,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAItC,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,iFAAiF;IACjF,WAAW,IAAI,IAAI;IAInB,6EAA6E;IAC7E,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQjD;;;OAGG;IACH,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,YAAY;IAuBpB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,8EAA8E;IAC9E,IAAI,KAAK,IAAI,YAAY,CAAC,OAAO,QAAQ,CAAC,CAA0B;IAEpE,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -23,8 +23,11 @@ const BARE_PROMPT_RE = /^[❯>]\s*$/;
|
|
|
23
23
|
const INPUT_ECHO_RE = /^[❯>]\s+\S/;
|
|
24
24
|
/** Empty or whitespace-only */
|
|
25
25
|
const BLANK_RE = /^\s*$/;
|
|
26
|
-
/**
|
|
27
|
-
|
|
26
|
+
/** Hard upper bound — protects snapshot/PNG memory if a pane is reported as
|
|
27
|
+
* unreasonably wide. Below this, the actual read width is the xterm's real
|
|
28
|
+
* cols (PTY_COLS=160 for spawned sessions, source pane width for adopt
|
|
29
|
+
* mode 200-270). Bumping past 320 risks a >5MB canvas per screenshot. */
|
|
30
|
+
const SNAPSHOT_COLS = 320;
|
|
28
31
|
export class TerminalRenderer {
|
|
29
32
|
terminal;
|
|
30
33
|
lastHash = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-renderer.js","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,gEAAgE;AAChE,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI;SACR,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,EAAE,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,+CAA+C;AAC/C,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,+BAA+B;AAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB
|
|
1
|
+
{"version":3,"file":"terminal-renderer.js","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,gEAAgE;AAChE,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI;SACR,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,EAAE,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,+CAA+C;AAC/C,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,+BAA+B;AAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB;;;0EAG0E;AAC1E,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,OAAO,gBAAgB;IACnB,QAAQ,CAAgC;IACxC,QAAQ,GAAG,EAAE,CAAC;IAEtB,YAAY,IAAY,EAAE,IAAY;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,iFAAiF;IACjF,WAAW;QACT,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEO,YAAY,CAAC,MAAe;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAExC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrE,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC1E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAE/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,IAAI,KAAK,KAAoC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpE,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF"}
|