@agentuity/coder 2.0.7 → 2.0.9-v3.48d5810

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 (113) hide show
  1. package/AGENTS.md +43 -0
  2. package/README.md +75 -37
  3. package/dist/index.d.ts +2 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +9 -1669
  6. package/dist/index.js.map +1 -1
  7. package/package.json +44 -42
  8. package/src/index.ts +84 -1996
  9. package/dist/chain-preview.d.ts +0 -55
  10. package/dist/chain-preview.d.ts.map +0 -1
  11. package/dist/chain-preview.js +0 -472
  12. package/dist/chain-preview.js.map +0 -1
  13. package/dist/client.d.ts +0 -44
  14. package/dist/client.d.ts.map +0 -1
  15. package/dist/client.js +0 -411
  16. package/dist/client.js.map +0 -1
  17. package/dist/commands.d.ts +0 -22
  18. package/dist/commands.d.ts.map +0 -1
  19. package/dist/commands.js +0 -99
  20. package/dist/commands.js.map +0 -1
  21. package/dist/footer.d.ts +0 -34
  22. package/dist/footer.d.ts.map +0 -1
  23. package/dist/footer.js +0 -249
  24. package/dist/footer.js.map +0 -1
  25. package/dist/handlers.d.ts +0 -24
  26. package/dist/handlers.d.ts.map +0 -1
  27. package/dist/handlers.js +0 -83
  28. package/dist/handlers.js.map +0 -1
  29. package/dist/hub-overlay-state.d.ts +0 -31
  30. package/dist/hub-overlay-state.d.ts.map +0 -1
  31. package/dist/hub-overlay-state.js +0 -78
  32. package/dist/hub-overlay-state.js.map +0 -1
  33. package/dist/hub-overlay.d.ts +0 -146
  34. package/dist/hub-overlay.d.ts.map +0 -1
  35. package/dist/hub-overlay.js +0 -2354
  36. package/dist/hub-overlay.js.map +0 -1
  37. package/dist/native-remote-ui-context.d.ts +0 -5
  38. package/dist/native-remote-ui-context.d.ts.map +0 -1
  39. package/dist/native-remote-ui-context.js +0 -30
  40. package/dist/native-remote-ui-context.js.map +0 -1
  41. package/dist/output-viewer.d.ts +0 -49
  42. package/dist/output-viewer.d.ts.map +0 -1
  43. package/dist/output-viewer.js +0 -389
  44. package/dist/output-viewer.js.map +0 -1
  45. package/dist/overlay.d.ts +0 -40
  46. package/dist/overlay.d.ts.map +0 -1
  47. package/dist/overlay.js +0 -225
  48. package/dist/overlay.js.map +0 -1
  49. package/dist/protocol.d.ts +0 -605
  50. package/dist/protocol.d.ts.map +0 -1
  51. package/dist/protocol.js +0 -4
  52. package/dist/protocol.js.map +0 -1
  53. package/dist/remote-lifecycle.d.ts +0 -61
  54. package/dist/remote-lifecycle.d.ts.map +0 -1
  55. package/dist/remote-lifecycle.js +0 -190
  56. package/dist/remote-lifecycle.js.map +0 -1
  57. package/dist/remote-session.d.ts +0 -128
  58. package/dist/remote-session.d.ts.map +0 -1
  59. package/dist/remote-session.js +0 -876
  60. package/dist/remote-session.js.map +0 -1
  61. package/dist/remote-tui.d.ts +0 -40
  62. package/dist/remote-tui.d.ts.map +0 -1
  63. package/dist/remote-tui.js +0 -867
  64. package/dist/remote-tui.js.map +0 -1
  65. package/dist/remote-ui-handler.d.ts +0 -5
  66. package/dist/remote-ui-handler.d.ts.map +0 -1
  67. package/dist/remote-ui-handler.js +0 -53
  68. package/dist/remote-ui-handler.js.map +0 -1
  69. package/dist/renderers.d.ts +0 -34
  70. package/dist/renderers.d.ts.map +0 -1
  71. package/dist/renderers.js +0 -669
  72. package/dist/renderers.js.map +0 -1
  73. package/dist/review.d.ts +0 -15
  74. package/dist/review.d.ts.map +0 -1
  75. package/dist/review.js +0 -154
  76. package/dist/review.js.map +0 -1
  77. package/dist/titlebar.d.ts +0 -3
  78. package/dist/titlebar.d.ts.map +0 -1
  79. package/dist/titlebar.js +0 -59
  80. package/dist/titlebar.js.map +0 -1
  81. package/dist/todo/index.d.ts +0 -3
  82. package/dist/todo/index.d.ts.map +0 -1
  83. package/dist/todo/index.js +0 -3
  84. package/dist/todo/index.js.map +0 -1
  85. package/dist/todo/store.d.ts +0 -6
  86. package/dist/todo/store.d.ts.map +0 -1
  87. package/dist/todo/store.js +0 -43
  88. package/dist/todo/store.js.map +0 -1
  89. package/dist/todo/types.d.ts +0 -13
  90. package/dist/todo/types.d.ts.map +0 -1
  91. package/dist/todo/types.js +0 -2
  92. package/dist/todo/types.js.map +0 -1
  93. package/src/chain-preview.ts +0 -621
  94. package/src/client.ts +0 -527
  95. package/src/commands.ts +0 -132
  96. package/src/footer.ts +0 -305
  97. package/src/handlers.ts +0 -113
  98. package/src/hub-overlay-state.ts +0 -127
  99. package/src/hub-overlay.ts +0 -3037
  100. package/src/native-remote-ui-context.ts +0 -41
  101. package/src/output-viewer.ts +0 -480
  102. package/src/overlay.ts +0 -294
  103. package/src/protocol.ts +0 -758
  104. package/src/remote-lifecycle.ts +0 -270
  105. package/src/remote-session.ts +0 -1080
  106. package/src/remote-tui.ts +0 -1020
  107. package/src/remote-ui-handler.ts +0 -86
  108. package/src/renderers.ts +0 -740
  109. package/src/review.ts +0 -201
  110. package/src/titlebar.ts +0 -63
  111. package/src/todo/index.ts +0 -2
  112. package/src/todo/store.ts +0 -49
  113. package/src/todo/types.ts +0 -14
@@ -1,389 +0,0 @@
1
- import { getMarkdownTheme } from '@mariozechner/pi-coding-agent';
2
- import { matchesKey, Markdown as MdComponent } from '@mariozechner/pi-tui';
3
- import { truncateToWidth } from "./renderers.js";
4
- const ANSI_RE = /\x1b\[[0-9;]*m/g;
5
- function visibleWidth(text) {
6
- return text.replace(ANSI_RE, '').length;
7
- }
8
- function padRight(text, width) {
9
- if (width <= 0)
10
- return '';
11
- const truncated = truncateToWidth(text, width);
12
- const remaining = width - visibleWidth(truncated);
13
- return remaining > 0 ? truncated + ' '.repeat(remaining) : truncated;
14
- }
15
- function hLine(width) {
16
- return width > 0 ? '\u2500'.repeat(width) : '';
17
- }
18
- function buildTopBorder(width, title) {
19
- if (width <= 0)
20
- return '';
21
- if (width === 1)
22
- return '\u256D';
23
- if (width === 2)
24
- return '\u256D\u256E';
25
- const inner = width - 2;
26
- const titleText = ` ${title} `;
27
- if (titleText.length >= inner) {
28
- return `\u256D${hLine(inner)}\u256E`;
29
- }
30
- const left = Math.floor((inner - titleText.length) / 2);
31
- const right = inner - titleText.length - left;
32
- return `\u256D${hLine(left)}${titleText}${hLine(right)}\u256E`;
33
- }
34
- function buildBottomBorder(width) {
35
- if (width <= 0)
36
- return '';
37
- if (width === 1)
38
- return '\u2570';
39
- if (width === 2)
40
- return '\u2570\u256F';
41
- return `\u2570${hLine(width - 2)}\u256F`;
42
- }
43
- export class OutputViewerOverlay {
44
- focused = true;
45
- tui;
46
- theme;
47
- results;
48
- done;
49
- currentIndex;
50
- scrollOffset = 0;
51
- disposed = false;
52
- viewMode = 'output';
53
- showThinking = false;
54
- following = true;
55
- pollTimer = null;
56
- mdRenderer = null;
57
- constructor(tui, theme, results, done, startIndex) {
58
- this.tui = tui;
59
- this.theme = theme;
60
- this.results = results;
61
- this.done = done;
62
- this.currentIndex = startIndex ?? 0;
63
- // Initialize markdown renderer
64
- try {
65
- const mdTheme = getMarkdownTheme?.();
66
- if (mdTheme) {
67
- this.mdRenderer = new MdComponent('', 0, 0, mdTheme);
68
- }
69
- }
70
- catch {
71
- // Fallback: no markdown rendering
72
- this.mdRenderer = null;
73
- }
74
- // Poll for streaming updates — when viewing a streaming result, trigger re-renders
75
- this.pollTimer = setInterval(() => {
76
- if (this.disposed)
77
- return;
78
- const current = this.results[this.currentIndex];
79
- if (current?.isStreaming) {
80
- this.tui.requestRender();
81
- }
82
- }, 100);
83
- }
84
- handleInput(data) {
85
- if (this.disposed)
86
- return;
87
- // Close overlay
88
- if (matchesKey(data, 'escape')) {
89
- this.close();
90
- return;
91
- }
92
- const result = this.results[this.currentIndex];
93
- if (!result) {
94
- this.close();
95
- return;
96
- }
97
- // Toggle thinking visibility
98
- if (matchesKey(data, 't') || data.toLowerCase() === 't') {
99
- if (result?.thinking) {
100
- this.showThinking = !this.showThinking;
101
- this.scrollOffset = 0;
102
- this.invalidate();
103
- }
104
- return;
105
- }
106
- // Toggle follow mode (auto-scroll)
107
- if (matchesKey(data, 'f') || data.toLowerCase() === 'f') {
108
- this.following = !this.following;
109
- if (this.following) {
110
- const lines = this.getContentLines();
111
- const budget = this.getContentBudget();
112
- this.scrollOffset = Math.max(0, lines.length - budget);
113
- }
114
- this.invalidate();
115
- return;
116
- }
117
- // Toggle between output and prompt views
118
- if (matchesKey(data, 'p') || data.toLowerCase() === 'p') {
119
- if (this.viewMode === 'output' && result?.prompt) {
120
- this.viewMode = 'prompt';
121
- }
122
- else {
123
- this.viewMode = 'output';
124
- }
125
- this.scrollOffset = 0;
126
- this.invalidate();
127
- return;
128
- }
129
- const contentLines = this.getContentLines();
130
- const contentBudget = this.getContentBudget();
131
- const maxScroll = Math.max(0, contentLines.length - contentBudget);
132
- const halfPage = Math.max(1, Math.floor(contentBudget / 2));
133
- // Vim: g = top, G = bottom
134
- if (data === 'g') {
135
- this.following = false;
136
- this.scrollOffset = 0;
137
- this.invalidate();
138
- return;
139
- }
140
- if (data === 'G') {
141
- this.following = false;
142
- this.scrollOffset = maxScroll;
143
- this.invalidate();
144
- return;
145
- }
146
- // Vim: { = jump back 25%, } = jump forward 25%
147
- if (data === '{') {
148
- this.following = false;
149
- const jump = Math.max(1, Math.floor(contentLines.length * 0.25));
150
- this.scrollOffset = Math.max(0, this.scrollOffset - jump);
151
- this.invalidate();
152
- return;
153
- }
154
- if (data === '}') {
155
- this.following = false;
156
- const jump = Math.max(1, Math.floor(contentLines.length * 0.25));
157
- this.scrollOffset = Math.min(maxScroll, this.scrollOffset + jump);
158
- this.invalidate();
159
- return;
160
- }
161
- // Navigate between results
162
- if (matchesKey(data, 'left')) {
163
- if (this.results.length > 1) {
164
- this.currentIndex = (this.currentIndex + 1) % this.results.length;
165
- this.scrollOffset = 0;
166
- this.viewMode = 'output';
167
- this.showThinking = false;
168
- this.invalidate();
169
- }
170
- return;
171
- }
172
- if (matchesKey(data, 'right')) {
173
- if (this.results.length > 1) {
174
- this.currentIndex = (this.currentIndex - 1 + this.results.length) % this.results.length;
175
- this.scrollOffset = 0;
176
- this.viewMode = 'output';
177
- this.showThinking = false;
178
- this.invalidate();
179
- }
180
- return;
181
- }
182
- // Scroll content — manual scroll disables following
183
- if (matchesKey(data, 'up')) {
184
- if (this.scrollOffset > 0) {
185
- this.following = false;
186
- this.scrollOffset -= 1;
187
- this.invalidate();
188
- }
189
- return;
190
- }
191
- if (matchesKey(data, 'down')) {
192
- if (this.scrollOffset < maxScroll) {
193
- this.following = false;
194
- this.scrollOffset += 1;
195
- this.invalidate();
196
- }
197
- return;
198
- }
199
- // Page up (Shift+Up or PageUp)
200
- if (matchesKey(data, 'shift+up') || matchesKey(data, 'pageUp')) {
201
- this.following = false;
202
- this.scrollOffset = Math.max(0, this.scrollOffset - halfPage);
203
- this.invalidate();
204
- return;
205
- }
206
- // Page down (Shift+Down or PageDown)
207
- if (matchesKey(data, 'shift+down') || matchesKey(data, 'pageDown')) {
208
- this.following = false;
209
- this.scrollOffset = Math.min(maxScroll, this.scrollOffset + halfPage);
210
- this.invalidate();
211
- return;
212
- }
213
- // Home — jump to top
214
- if (matchesKey(data, 'home')) {
215
- this.following = false;
216
- this.scrollOffset = 0;
217
- this.invalidate();
218
- return;
219
- }
220
- // End — jump to bottom
221
- if (matchesKey(data, 'end')) {
222
- this.following = false;
223
- this.scrollOffset = maxScroll;
224
- this.invalidate();
225
- return;
226
- }
227
- }
228
- render(width) {
229
- const safeWidth = Math.max(4, width);
230
- const inner = Math.max(0, safeWidth - 2);
231
- const termHeight = process.stdout.rows || 40;
232
- // Match overlay maxHeight of 95%, leave margin for overlay chrome
233
- const maxLines = Math.max(10, Math.floor(termHeight * 0.95) - 2);
234
- const result = this.results[this.currentIndex];
235
- if (!result) {
236
- const lines = [
237
- buildTopBorder(safeWidth, 'Output Viewer'),
238
- this.contentLine(this.theme.fg('muted', ' No results available'), inner),
239
- this.contentLine(this.theme.fg('dim', ' [Esc] Close'), inner),
240
- buildBottomBorder(safeWidth),
241
- ];
242
- return lines.map((line) => truncateToWidth(line, safeWidth));
243
- }
244
- // Build header title with streaming indicator
245
- const streamLabel = result.isStreaming ? ' LIVE' : '';
246
- const nameLabel = result.description
247
- ? `${result.agentName} - ${result.description}`
248
- : result.agentName;
249
- const posLabel = this.results.length > 1
250
- ? `${nameLabel}${streamLabel} (${this.currentIndex + 1} of ${this.results.length})`
251
- : `${nameLabel}${streamLabel}`;
252
- const titleLabel = this.viewMode === 'prompt' ? `${posLabel} [PROMPT]` : posLabel;
253
- const header = [buildTopBorder(safeWidth, titleLabel)];
254
- // Sub-header: token info or prompt-mode indicator
255
- if (this.viewMode === 'prompt') {
256
- header.push(this.contentLine(this.theme.fg('dim', ' Prompt sent to agent:'), inner));
257
- }
258
- else if (result.tokenInfo) {
259
- header.push(this.contentLine(this.theme.fg('dim', ` ${result.tokenInfo}`), inner));
260
- }
261
- else {
262
- header.push(this.contentLine('', inner));
263
- }
264
- header.push(this.contentLine('', inner)); // padding line after header
265
- // Footer with position indicator and new hints
266
- const thinkingHint = result.thinking
267
- ? `[t] ${this.showThinking ? 'Hide' : 'Show'} thinking `
268
- : '';
269
- const followHint = result.isStreaming
270
- ? `[f] ${this.following ? 'Unfollow' : 'Follow'} `
271
- : '';
272
- const promptHint = result.prompt ? '[p] Prompt ' : '';
273
- const navHint = this.results.length > 1 ? '[<- ->] Switch ' : '';
274
- // Content assembly via helper
275
- const contentLines = this.getContentLines();
276
- const totalLines = contentLines.length;
277
- // Content area
278
- const contentBudget = Math.max(1, maxLines - header.length - 3); // 3 = footer lines (padding + help + border)
279
- // Auto-follow when streaming
280
- if (this.following && result.isStreaming) {
281
- this.scrollOffset = Math.max(0, totalLines - contentBudget);
282
- }
283
- const maxScroll = Math.max(0, totalLines - contentBudget);
284
- // Clamp scroll offset
285
- if (this.scrollOffset > maxScroll) {
286
- this.scrollOffset = maxScroll;
287
- }
288
- // Position indicator
289
- const currentLine = Math.min(this.scrollOffset + 1, totalLines);
290
- const pct = totalLines > 0 ? Math.round((currentLine / totalLines) * 100) : 0;
291
- const posInfo = totalLines > 0 ? `L${currentLine}/${totalLines} ${pct}% ` : '';
292
- const vimHint = totalLines > contentBudget ? '[g/G] Top/Bot [{/}] Jump ' : '';
293
- const footer = [
294
- this.contentLine('', inner), // padding line before footer
295
- this.contentLine(this.theme.fg('dim', ` ${posInfo}${vimHint}[Up/Dn] Scroll ${thinkingHint}${followHint}${promptHint}${navHint}[Esc] Close`), inner),
296
- buildBottomBorder(safeWidth),
297
- ];
298
- const content = [];
299
- // Scroll indicator: above
300
- const aboveCount = this.scrollOffset;
301
- if (aboveCount > 0) {
302
- content.push(this.contentLine(this.theme.fg('dim', ` ^ ${aboveCount} more above`), inner));
303
- }
304
- // Visible lines
305
- const visibleBudget = aboveCount > 0
306
- ? contentBudget - 1 // reserve 1 line for "above" indicator
307
- : contentBudget;
308
- const belowCount = totalLines - this.scrollOffset - visibleBudget;
309
- const actualVisible = belowCount > 0 ? visibleBudget - 1 : visibleBudget; // reserve 1 for "below"
310
- const sliceEnd = Math.min(this.scrollOffset + actualVisible, totalLines);
311
- for (let i = this.scrollOffset; i < sliceEnd; i++) {
312
- const line = contentLines[i] ?? '';
313
- content.push(this.contentLine(' ' + truncateToWidth(line, Math.max(0, inner - 3)), inner));
314
- }
315
- // Scroll indicator: below
316
- const remainingBelow = totalLines - sliceEnd;
317
- if (remainingBelow > 0) {
318
- content.push(this.contentLine(this.theme.fg('dim', ` v ${remainingBelow} more below`), inner));
319
- }
320
- const lines = [...header, ...content, ...footer];
321
- return lines.map((line) => truncateToWidth(line, safeWidth));
322
- }
323
- invalidate() {
324
- // Stateless rendering; no cache invalidation required.
325
- }
326
- dispose() {
327
- this.disposed = true;
328
- if (this.pollTimer) {
329
- clearInterval(this.pollTimer);
330
- this.pollTimer = null;
331
- }
332
- }
333
- getContentLines() {
334
- const result = this.results[this.currentIndex];
335
- if (!result)
336
- return [];
337
- const lines = [];
338
- // Thinking section (dimmed) — keep as plain text, it's raw thinking
339
- if (this.showThinking && result.thinking) {
340
- const thinkingLines = result.thinking.split('\n');
341
- for (const line of thinkingLines) {
342
- lines.push(this.theme.fg('dim', line));
343
- }
344
- lines.push(this.theme.fg('muted', '--- end thinking ---'));
345
- lines.push(''); // empty line separator
346
- }
347
- // Main content — render as markdown for syntax highlighting
348
- const mainText = this.viewMode === 'prompt' && result.prompt ? result.prompt : result.text;
349
- if (mainText) {
350
- if (this.mdRenderer) {
351
- try {
352
- this.mdRenderer.setText(mainText);
353
- // Render with inner width minus padding (3 spaces left + border chars)
354
- const termWidth = Math.max(20, (process.stdout.columns || 80) - 10);
355
- const rendered = this.mdRenderer.render(termWidth);
356
- lines.push(...rendered);
357
- }
358
- catch {
359
- // Fallback: plain text if markdown rendering fails
360
- lines.push(...mainText.split('\n'));
361
- }
362
- }
363
- else {
364
- // Fallback: plain text
365
- lines.push(...mainText.split('\n'));
366
- }
367
- }
368
- return lines;
369
- }
370
- getContentBudget() {
371
- const termHeight = process.stdout.rows || 40;
372
- const maxLines = Math.max(10, Math.floor(termHeight * 0.95) - 2);
373
- return Math.max(1, maxLines - 4); // 4 = header + footer lines
374
- }
375
- contentLine(content, innerWidth) {
376
- return `\u2502${padRight(content, innerWidth)}\u2502`;
377
- }
378
- close() {
379
- if (this.disposed)
380
- return;
381
- this.disposed = true;
382
- if (this.pollTimer) {
383
- clearInterval(this.pollTimer);
384
- this.pollTimer = null;
385
- }
386
- this.done(undefined);
387
- }
388
- }
389
- //# sourceMappingURL=output-viewer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-viewer.js","sourceRoot":"","sources":["../src/output-viewer.ts"],"names":[],"mappings":"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"}
package/dist/overlay.d.ts DELETED
@@ -1,40 +0,0 @@
1
- import type { Theme } from '@mariozechner/pi-coding-agent';
2
- import type { AgentDefinition } from './protocol.ts';
3
- export interface AgentManagerResult {
4
- agent: string;
5
- action: 'run';
6
- }
7
- interface Component {
8
- render(width: number): string[];
9
- handleInput?(data: string): void;
10
- invalidate(): void;
11
- }
12
- interface Focusable {
13
- focused: boolean;
14
- }
15
- type DoneFn = (result: AgentManagerResult | undefined) => void;
16
- export declare class AgentManagerOverlay implements Component, Focusable {
17
- focused: boolean;
18
- private readonly theme;
19
- private readonly agents;
20
- private readonly done;
21
- private screen;
22
- private selectedIndex;
23
- private readonly listWindowSize;
24
- private disposed;
25
- constructor(theme: Theme, agents: AgentDefinition[], done: DoneFn);
26
- handleInput(data: string): void;
27
- render(width: number): string[];
28
- invalidate(): void;
29
- dispose(): void;
30
- private handleListInput;
31
- private handleDetailInput;
32
- private close;
33
- private renderListScreen;
34
- private renderDetailScreen;
35
- private fieldLine;
36
- private contentLine;
37
- private getVisibleRange;
38
- }
39
- export {};
40
- //# sourceMappingURL=overlay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;CACd;AAED,UAAU,SAAS;IAClB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,IAAI,IAAI,CAAC;CACnB;AAED,UAAU,SAAS;IAClB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,KAAK,IAAI,CAAC;AA2C/D,qBAAa,mBAAoB,YAAW,SAAS,EAAE,SAAS;IACxD,OAAO,UAAQ;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAK;IACpC,OAAO,CAAC,QAAQ,CAAS;gBAEb,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM;IAMjE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqB/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAa/B,UAAU,IAAI,IAAI;IAIlB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,gBAAgB;IA6ExB,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;CAgBvB"}