silvery 0.18.2 → 0.19.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 (156) hide show
  1. package/dist/{animation-DhINOJk8.mjs → animation-Cn64yepo.mjs} +1 -1
  2. package/dist/{animation-DhINOJk8.mjs.map → animation-Cn64yepo.mjs.map} +1 -1
  3. package/dist/{ansi-C6Qs1Wn2.mjs → ansi-CLOitHKx.mjs} +1 -1
  4. package/dist/ansi-CLOitHKx.mjs.map +1 -0
  5. package/dist/{ansi-CsjnZtAw.d.mts → ansi-Cc33mW54.d.mts} +1 -1
  6. package/dist/{ansi-CsjnZtAw.d.mts.map → ansi-Cc33mW54.d.mts.map} +1 -1
  7. package/dist/{chunk-BSw8zbkd.mjs → chunk-Vs_PY4HZ.mjs} +1 -1
  8. package/dist/cli-BKp0YtBD.mjs +4 -0
  9. package/dist/{context-BjWgrikx.mjs → context-BU5LkkIy.mjs} +8 -7
  10. package/dist/context-BU5LkkIy.mjs.map +1 -0
  11. package/dist/devtools-9QY4teqI.mjs +2 -0
  12. package/dist/{devtools-CeO9X_uv.mjs → devtools-DxkSLXDA.mjs} +4 -5
  13. package/dist/devtools-DxkSLXDA.mjs.map +1 -0
  14. package/dist/{eta-BnQSZcWf.mjs → eta-Bb3RH3wh.mjs} +1 -1
  15. package/dist/{eta-BnQSZcWf.mjs.map → eta-Bb3RH3wh.mjs.map} +1 -1
  16. package/dist/{flexily-zero-adapter-BOM0cl8R.mjs → flexily-zero-adapter-BlQa46nr.mjs} +21 -64
  17. package/dist/flexily-zero-adapter-BlQa46nr.mjs.map +1 -0
  18. package/dist/{flexily-zero-adapter-V8R3HQtK.mjs → flexily-zero-adapter-CMxXhdOL.mjs} +1 -1
  19. package/dist/{image-B0zMbVUr.mjs → image-CTII5QWI.mjs} +3 -3
  20. package/dist/image-CTII5QWI.mjs.map +1 -0
  21. package/dist/{index-Bh3U1K09.d.mts → index-BXslOebb.d.mts} +547 -137
  22. package/dist/index-BXslOebb.d.mts.map +1 -0
  23. package/dist/{index-C4vrhbud.d.mts → index-BnA7mNpo.d.mts} +1 -1
  24. package/dist/{index-C4vrhbud.d.mts.map → index-BnA7mNpo.d.mts.map} +1 -1
  25. package/dist/index-D3saHouR.d.mts +1392 -0
  26. package/dist/index-D3saHouR.d.mts.map +1 -0
  27. package/dist/index.d.mts +5 -33
  28. package/dist/index.d.mts.map +1 -1
  29. package/dist/index.mjs +13 -13
  30. package/dist/{layout-engine--drvrWjD.mjs → layout-engine-B6Cdz1yZ.mjs} +1 -1
  31. package/dist/{layout-engine-Dr3cY5U4.mjs → layout-engine-ClUgv6jB.mjs} +3 -3
  32. package/dist/{layout-engine-Dr3cY5U4.mjs.map → layout-engine-ClUgv6jB.mjs.map} +1 -1
  33. package/dist/{multi-progress-CcdqJFlf.mjs → multi-progress-Bq9Oi_WI.mjs} +3 -3
  34. package/dist/{multi-progress-CcdqJFlf.mjs.map → multi-progress-Bq9Oi_WI.mjs.map} +1 -1
  35. package/dist/{multi-progress-DQ-uUzLf.d.mts → multi-progress-DAQC7eap.d.mts} +2 -2
  36. package/dist/{multi-progress-DQ-uUzLf.d.mts.map → multi-progress-DAQC7eap.d.mts.map} +1 -1
  37. package/dist/{node-CP5WChgr.mjs → node-BeWlnCPY.mjs} +4 -4
  38. package/dist/node-BeWlnCPY.mjs.map +1 -0
  39. package/dist/{progress-bar-IrUjkLfU.mjs → progress-bar-CXE5Qfkd.mjs} +4 -4
  40. package/dist/progress-bar-CXE5Qfkd.mjs.map +1 -0
  41. package/dist/reconciler-Cwgm8hRR.mjs +8459 -0
  42. package/dist/reconciler-Cwgm8hRR.mjs.map +1 -0
  43. package/dist/{render-string-BwLG7rIX.mjs → render-string-0mN37DLf.mjs} +1 -1
  44. package/dist/{render-string-DVfgc8xr.mjs → render-string-X-CxpTdZ.mjs} +935 -136
  45. package/dist/render-string-X-CxpTdZ.mjs.map +1 -0
  46. package/dist/runtime.d.mts +2 -2
  47. package/dist/runtime.mjs +3 -3
  48. package/dist/{spinner-BRkaJI0N.d.mts → spinner-CGo34vyR.d.mts} +2 -2
  49. package/dist/{spinner-BRkaJI0N.d.mts.map → spinner-CGo34vyR.d.mts.map} +1 -1
  50. package/dist/{spinner-BmldKx0M.mjs → spinner-CeOmcuw_.mjs} +3 -3
  51. package/dist/spinner-CeOmcuw_.mjs.map +1 -0
  52. package/dist/src-B5GjfG7g.mjs +4305 -0
  53. package/dist/src-B5GjfG7g.mjs.map +1 -0
  54. package/dist/{src-CJPXf3fC.mjs → src-Bd7ezSgG.mjs} +7560 -6474
  55. package/dist/src-Bd7ezSgG.mjs.map +1 -0
  56. package/dist/{src-D8kLrQBT.mjs → src-CChwjk0Z.mjs} +8 -86
  57. package/dist/src-CChwjk0Z.mjs.map +1 -0
  58. package/dist/{src-D_BS-as7.mjs → src-NCKb8kE5.mjs} +777 -776
  59. package/dist/src-NCKb8kE5.mjs.map +1 -0
  60. package/dist/theme.d.mts +2 -130
  61. package/dist/theme.mjs +3 -8
  62. package/dist/{types-B4A8Ebba.d.mts → types-BH_v3iMT.d.mts} +1 -1
  63. package/dist/{types-B4A8Ebba.d.mts.map → types-BH_v3iMT.d.mts.map} +1 -1
  64. package/dist/{types-e4dpfbSa.mjs → types-Bk2yw9Qj.mjs} +3 -3
  65. package/dist/types-Bk2yw9Qj.mjs.map +1 -0
  66. package/dist/ui/animation.d.mts +1 -1
  67. package/dist/ui/animation.mjs +1 -1
  68. package/dist/ui/ansi.d.mts +1 -1
  69. package/dist/ui/ansi.mjs +1 -1
  70. package/dist/ui/cli.d.mts +3 -3
  71. package/dist/ui/cli.mjs +5 -5
  72. package/dist/ui/display.d.mts +1 -1
  73. package/dist/ui/display.mjs.map +1 -1
  74. package/dist/ui/image.d.mts +1 -1
  75. package/dist/ui/image.mjs +1 -1
  76. package/dist/ui/input.d.mts +1 -1
  77. package/dist/ui/input.d.mts.map +1 -1
  78. package/dist/ui/input.mjs +2 -4
  79. package/dist/ui/input.mjs.map +1 -1
  80. package/dist/ui/progress.d.mts +3 -3
  81. package/dist/ui/progress.d.mts.map +1 -1
  82. package/dist/ui/progress.mjs +3 -3
  83. package/dist/ui/progress.mjs.map +1 -1
  84. package/dist/ui/react.d.mts +1 -1
  85. package/dist/ui/react.d.mts.map +1 -1
  86. package/dist/ui/react.mjs +2 -2
  87. package/dist/ui/react.mjs.map +1 -1
  88. package/dist/ui/utils.mjs +1 -1
  89. package/dist/ui/wrappers.d.mts +2 -2
  90. package/dist/ui/wrappers.mjs +1 -1
  91. package/dist/ui.d.mts +5 -5
  92. package/dist/ui.mjs +6 -6
  93. package/dist/{useLatest-6xqnGIU6.d.mts → useLatest-Bg2x4bfP.d.mts} +1 -1
  94. package/dist/{useLatest-6xqnGIU6.d.mts.map → useLatest-Bg2x4bfP.d.mts.map} +1 -1
  95. package/dist/{with-text-input-lUh9gYAG.d.mts → with-text-input-CRfoiFFG.d.mts} +3 -3
  96. package/dist/with-text-input-CRfoiFFG.d.mts.map +1 -0
  97. package/dist/{wrappers-JrEYTuKA.mjs → wrappers-UTADQkSY.mjs} +4 -4
  98. package/dist/wrappers-UTADQkSY.mjs.map +1 -0
  99. package/dist/{yoga-adapter-Bc8XT9cN.mjs → yoga-adapter-8oRGRw8V.mjs} +2 -2
  100. package/dist/{yoga-adapter-Bc8XT9cN.mjs.map → yoga-adapter-8oRGRw8V.mjs.map} +1 -1
  101. package/dist/yoga-adapter-D_CcxSt5.mjs +2 -0
  102. package/package.json +3 -3
  103. package/dist/UPNG-DvKjM6wE.mjs +0 -5076
  104. package/dist/UPNG-DvKjM6wE.mjs.map +0 -1
  105. package/dist/__vite-browser-external-2447137e-DPKHHqQK.mjs +0 -6
  106. package/dist/__vite-browser-external-2447137e-DPKHHqQK.mjs.map +0 -1
  107. package/dist/ansi-C6Qs1Wn2.mjs.map +0 -1
  108. package/dist/apng-CvSlLBtc.mjs +0 -3
  109. package/dist/apng-DFFVOItr.mjs +0 -70
  110. package/dist/apng-DFFVOItr.mjs.map +0 -1
  111. package/dist/assets/resvgjs.darwin-arm64-BtufyGW1.node +0 -0
  112. package/dist/backend-DU0Y938U.mjs +0 -13396
  113. package/dist/backend-DU0Y938U.mjs.map +0 -1
  114. package/dist/backends-BihMKFY_.mjs +0 -1181
  115. package/dist/backends-BihMKFY_.mjs.map +0 -1
  116. package/dist/backends-Dk_5G_gC.mjs +0 -3
  117. package/dist/cli-GwJ0S2In.mjs +0 -4
  118. package/dist/context-BjWgrikx.mjs.map +0 -1
  119. package/dist/derive-O_Kb1Bk_.d.mts +0 -28
  120. package/dist/derive-O_Kb1Bk_.d.mts.map +0 -1
  121. package/dist/devtools-CeO9X_uv.mjs.map +0 -1
  122. package/dist/devtools-nX4tj6OH.mjs +0 -2
  123. package/dist/flexily-zero-adapter-BOM0cl8R.mjs.map +0 -1
  124. package/dist/gif-B9Uq4qZA.mjs +0 -73
  125. package/dist/gif-B9Uq4qZA.mjs.map +0 -1
  126. package/dist/gif-BdrLRBmM.mjs +0 -3
  127. package/dist/gifenc-DfhOb4xr.mjs +0 -730
  128. package/dist/gifenc-DfhOb4xr.mjs.map +0 -1
  129. package/dist/image-B0zMbVUr.mjs.map +0 -1
  130. package/dist/index-Bh3U1K09.d.mts.map +0 -1
  131. package/dist/index-dehZ18K-.d.mts +0 -679
  132. package/dist/index-dehZ18K-.d.mts.map +0 -1
  133. package/dist/key-mapping-7k2ufK2b.mjs +0 -3
  134. package/dist/key-mapping-WLUmxjx1.mjs +0 -132
  135. package/dist/key-mapping-WLUmxjx1.mjs.map +0 -1
  136. package/dist/node-CP5WChgr.mjs.map +0 -1
  137. package/dist/progress-bar-IrUjkLfU.mjs.map +0 -1
  138. package/dist/reconciler-B8uxQxaU.mjs +0 -16482
  139. package/dist/reconciler-B8uxQxaU.mjs.map +0 -1
  140. package/dist/render-string-DVfgc8xr.mjs.map +0 -1
  141. package/dist/resvg-js-Cwipz-_J.mjs +0 -203
  142. package/dist/resvg-js-Cwipz-_J.mjs.map +0 -1
  143. package/dist/spinner-BmldKx0M.mjs.map +0 -1
  144. package/dist/src-C0sOQW-t.mjs +0 -3866
  145. package/dist/src-C0sOQW-t.mjs.map +0 -1
  146. package/dist/src-CJPXf3fC.mjs.map +0 -1
  147. package/dist/src-D8kLrQBT.mjs.map +0 -1
  148. package/dist/src-D_BS-as7.mjs.map +0 -1
  149. package/dist/theme.d.mts.map +0 -1
  150. package/dist/theme.mjs.map +0 -1
  151. package/dist/types-e4dpfbSa.mjs.map +0 -1
  152. package/dist/with-text-input-lUh9gYAG.d.mts.map +0 -1
  153. package/dist/wrapper-CE6GQ27z.mjs +0 -3527
  154. package/dist/wrapper-CE6GQ27z.mjs.map +0 -1
  155. package/dist/wrappers-JrEYTuKA.mjs.map +0 -1
  156. package/dist/yoga-adapter-B8LZpQcE.mjs +0 -2
@@ -1,6 +0,0 @@
1
- import { n as __esmMin } from "./chunk-BSw8zbkd.mjs";
2
- //#endregion
3
- __esmMin((() => {}))();
4
- export {};
5
-
6
- //# sourceMappingURL=__vite-browser-external-2447137e-DPKHHqQK.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2447137e-DPKHHqQK.mjs","names":[],"sources":["../../../node_modules/.bun/ghostty-web@0.4.0/node_modules/ghostty-web/dist/__vite-browser-external-2447137e.js"],"sourcesContent":["const e = {};\nexport {\n e as default\n};\n"],"x_google_ignoreList":[0],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ansi-C6Qs1Wn2.mjs","names":[],"sources":["../packages/ag-react/src/ui/cli/ansi.ts"],"sourcesContent":["/**\n * ANSI escape code utilities for terminal control\n */\n\n/** Hide the cursor */\nexport const CURSOR_HIDE = \"\\x1b[?25l\"\n\n/** Show the cursor */\nexport const CURSOR_SHOW = \"\\x1b[?25h\"\n\n/** Move cursor to beginning of line */\nexport const CURSOR_TO_START = \"\\r\"\n\n/** Clear from cursor to end of line */\nexport const CLEAR_LINE_END = \"\\x1b[K\"\n\n/** Clear entire line */\nexport const CLEAR_LINE = \"\\x1b[2K\"\n\n/** Clear screen and move to top-left */\nexport const CLEAR_SCREEN = \"\\x1b[2J\\x1b[H\"\n\n/** Move cursor up N lines */\nexport const cursorUp = (n: number = 1): string => `\\x1b[${n}A`\n\n/** Move cursor down N lines */\nexport const cursorDown = (n: number = 1): string => `\\x1b[${n}B`\n\n/** Save cursor position */\nexport const CURSOR_SAVE = \"\\x1b[s\"\n\n/** Restore cursor position */\nexport const CURSOR_RESTORE = \"\\x1b[u\"\n\n/**\n * Write to stream with proper handling\n */\nexport function write(text: string, stream: NodeJS.WriteStream = process.stdout): void {\n stream.write(text)\n}\n\n/**\n * Clear the current line and write new text\n */\nexport function writeLine(text: string, stream: NodeJS.WriteStream = process.stdout): void {\n stream.write(`${CURSOR_TO_START}${text}${CLEAR_LINE_END}`)\n}\n\n/**\n * Wrap a function to handle cursor visibility\n * Hides cursor on start, shows on completion/error\n */\nexport function withCursor<T>(fn: () => T | Promise<T>, stream: NodeJS.WriteStream = process.stdout): Promise<T> {\n stream.write(CURSOR_HIDE)\n\n const restore = () => stream.write(CURSOR_SHOW)\n\n try {\n const result = fn()\n if (result instanceof Promise) {\n return result.finally(restore)\n }\n restore()\n return Promise.resolve(result)\n } catch (error) {\n restore()\n throw error\n }\n}\n\n/**\n * Check if stream is a TTY (supports ANSI codes)\n * Also respects FORCE_TTY environment variable for testing\n */\nexport function isTTY(stream: NodeJS.WriteStream = process.stdout): boolean {\n if (process.env.FORCE_TTY === \"1\") return true\n return stream.isTTY ?? false\n}\n\n/**\n * Get terminal width\n */\nexport function getTerminalWidth(stream: NodeJS.WriteStream = process.stdout): number {\n return stream.columns ?? 80\n}\n"],"mappings":";;;;;AAKA,MAAa,cAAc;;AAG3B,MAAa,cAAc;;AAG3B,MAAa,kBAAkB;;AAG/B,MAAa,iBAAiB;;AAG9B,MAAa,aAAa;;AAG1B,MAAa,eAAe;;AAG5B,MAAa,YAAY,IAAY,MAAc,QAAQ,EAAE;;AAG7D,MAAa,cAAc,IAAY,MAAc,QAAQ,EAAE;;AAG/D,MAAa,cAAc;;AAG3B,MAAa,iBAAiB;;;;AAK9B,SAAgB,MAAM,MAAc,SAA6B,QAAQ,QAAc;AACrF,QAAO,MAAM,KAAK;;;;;AAMpB,SAAgB,UAAU,MAAc,SAA6B,QAAQ,QAAc;AACzF,QAAO,MAAM;EAAqB,UAAwB;;;;;;AAO5D,SAAgB,WAAc,IAA0B,SAA6B,QAAQ,QAAoB;AAC/G,QAAO,MAAM,YAAY;CAEzB,MAAM,gBAAgB,OAAO,MAAM,YAAY;AAE/C,KAAI;EACF,MAAM,SAAS,IAAI;AACnB,MAAI,kBAAkB,QACpB,QAAO,OAAO,QAAQ,QAAQ;AAEhC,WAAS;AACT,SAAO,QAAQ,QAAQ,OAAO;UACvB,OAAO;AACd,WAAS;AACT,QAAM;;;;;;;AAQV,SAAgB,MAAM,SAA6B,QAAQ,QAAiB;AAC1E,KAAI,QAAQ,IAAI,cAAc,IAAK,QAAO;AAC1C,QAAO,OAAO,SAAS;;;;;AAMzB,SAAgB,iBAAiB,SAA6B,QAAQ,QAAgB;AACpF,QAAO,OAAO,WAAW"}
@@ -1,3 +0,0 @@
1
- import { n as init_apng, t as createApng } from "./apng-DFFVOItr.mjs";
2
- init_apng();
3
- export { createApng };
@@ -1,70 +0,0 @@
1
- import { n as __esmMin, o as __toESM } from "./chunk-BSw8zbkd.mjs";
2
- //#region ../termless/src/animation/apng.ts
3
- async function loadUpng() {
4
- if (upngModule) return upngModule;
5
- try {
6
- upngModule = await import("./UPNG-DvKjM6wE.mjs").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
7
- return upngModule;
8
- } catch {
9
- throw new Error("createApng() requires upng-js. Install it:\n bun add upng-js");
10
- }
11
- }
12
- async function loadResvg() {
13
- if (resvgModule) return resvgModule;
14
- try {
15
- resvgModule = await import("./resvg-js-Cwipz-_J.mjs").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
16
- return resvgModule;
17
- } catch {
18
- throw new Error("createApng() requires @resvg/resvg-js. Install it:\n bun add @resvg/resvg-js");
19
- }
20
- }
21
- /**
22
- * Encode animation frames as an animated PNG (APNG).
23
- *
24
- * Each SVG frame is rasterized to RGBA pixels via @resvg/resvg-js,
25
- * then combined into a single APNG file via upng-js.
26
- *
27
- * @param frames - SVG frames with durations
28
- * @param options - Animation options plus optional `scale` for rasterization
29
- * @returns APNG file as Uint8Array
30
- */
31
- async function createApng(frames, options) {
32
- if (frames.length === 0) throw new Error("createApng requires at least one frame");
33
- const [UPNG, { Resvg }] = await Promise.all([loadUpng(), loadResvg()]);
34
- const defaultDuration = options?.defaultDuration ?? 100;
35
- const scale = options?.scale ?? 2;
36
- const rgbaBuffers = [];
37
- const delays = [];
38
- let width = 0;
39
- let height = 0;
40
- for (const frame of frames) {
41
- const duration = frame.duration || defaultDuration;
42
- const rendered = new Resvg(frame.svg, {
43
- fitTo: {
44
- mode: "zoom",
45
- value: scale
46
- },
47
- font: {
48
- loadSystemFonts: true,
49
- defaultFontFamily: "Menlo"
50
- }
51
- }).render();
52
- if (width === 0) {
53
- width = rendered.width;
54
- height = rendered.height;
55
- }
56
- rgbaBuffers.push(rendered.pixels.buffer);
57
- delays.push(duration);
58
- }
59
- const apng = UPNG.encode(rgbaBuffers, width, height, 0, delays);
60
- return new Uint8Array(apng);
61
- }
62
- var upngModule, resvgModule;
63
- var init_apng = __esmMin((() => {
64
- upngModule = null;
65
- resvgModule = null;
66
- }));
67
- //#endregion
68
- export { init_apng as n, createApng as t };
69
-
70
- //# sourceMappingURL=apng-DFFVOItr.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apng-DFFVOItr.mjs","names":[],"sources":["../../termless/src/animation/apng.ts"],"sourcesContent":["/**\n * Animated PNG (APNG) encoder for termless.\n *\n * Converts SVG frames to an APNG using upng-js for APNG encoding\n * and @resvg/resvg-js for SVG→pixel rasterization.\n *\n * Both are optional/lazy-loaded dependencies — throws clear errors if missing.\n */\n\nimport type { AnimationFrame, AnimationOptions } from \"./types.ts\"\n\n// Lazy-cached imports\nlet upngModule: typeof import(\"upng-js\") | null = null\nlet resvgModule: { Resvg: any } | null = null\n\nasync function loadUpng() {\n if (upngModule) return upngModule\n try {\n upngModule = await import(\"upng-js\")\n return upngModule\n } catch {\n throw new Error(\"createApng() requires upng-js. Install it:\\n bun add upng-js\")\n }\n}\n\nasync function loadResvg() {\n if (resvgModule) return resvgModule\n try {\n resvgModule = await import(\"@resvg/resvg-js\")\n return resvgModule\n } catch {\n throw new Error(\"createApng() requires @resvg/resvg-js. Install it:\\n bun add @resvg/resvg-js\")\n }\n}\n\n/**\n * Encode animation frames as an animated PNG (APNG).\n *\n * Each SVG frame is rasterized to RGBA pixels via @resvg/resvg-js,\n * then combined into a single APNG file via upng-js.\n *\n * @param frames - SVG frames with durations\n * @param options - Animation options plus optional `scale` for rasterization\n * @returns APNG file as Uint8Array\n */\nexport async function createApng(\n frames: AnimationFrame[],\n options?: AnimationOptions & { scale?: number },\n): Promise<Uint8Array> {\n if (frames.length === 0) {\n throw new Error(\"createApng requires at least one frame\")\n }\n\n const [UPNG, { Resvg }] = await Promise.all([loadUpng(), loadResvg()])\n\n const defaultDuration = options?.defaultDuration ?? 100\n const scale = options?.scale ?? 2\n\n const rgbaBuffers: ArrayBuffer[] = []\n const delays: number[] = []\n let width = 0\n let height = 0\n\n for (const frame of frames) {\n const duration = frame.duration || defaultDuration\n\n const resvg = new Resvg(frame.svg, {\n fitTo: { mode: \"zoom\" as const, value: scale },\n font: { loadSystemFonts: true, defaultFontFamily: \"Menlo\" },\n })\n const rendered = resvg.render()\n\n // Use first frame's dimensions as the canvas size\n if (width === 0) {\n width = rendered.width\n height = rendered.height\n }\n\n rgbaBuffers.push(rendered.pixels.buffer as ArrayBuffer)\n delays.push(duration)\n }\n\n // upng-js encode: cnum=0 means lossless (full RGBA, no quantization)\n const apng = UPNG.encode(rgbaBuffers, width, height, 0, delays)\n return new Uint8Array(apng)\n}\n"],"mappings":";;AAeA,eAAe,WAAW;AACxB,KAAI,WAAY,QAAO;AACvB,KAAI;AACF,eAAa,MAAM,OAAO,uBAAA,MAAA,MAAA,wBAAA,EAAA,SAAA,EAAA,CAAA;AAC1B,SAAO;SACD;AACN,QAAM,IAAI,MAAM,gEAAgE;;;AAIpF,eAAe,YAAY;AACzB,KAAI,YAAa,QAAO;AACxB,KAAI;AACF,gBAAc,MAAM,OAAO,2BAAA,MAAA,MAAA,wBAAA,EAAA,SAAA,EAAA,CAAA;AAC3B,SAAO;SACD;AACN,QAAM,IAAI,MAAM,gFAAgF;;;;;;;;;;;;;AAcpG,eAAsB,WACpB,QACA,SACqB;AACrB,KAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MAAM,yCAAyC;CAG3D,MAAM,CAAC,MAAM,EAAE,WAAW,MAAM,QAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;CAEtE,MAAM,kBAAkB,SAAS,mBAAmB;CACpD,MAAM,QAAQ,SAAS,SAAS;CAEhC,MAAM,cAA6B,EAAE;CACrC,MAAM,SAAmB,EAAE;CAC3B,IAAI,QAAQ;CACZ,IAAI,SAAS;AAEb,MAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,WAAW,MAAM,YAAY;EAMnC,MAAM,WAJQ,IAAI,MAAM,MAAM,KAAK;GACjC,OAAO;IAAE,MAAM;IAAiB,OAAO;IAAO;GAC9C,MAAM;IAAE,iBAAiB;IAAM,mBAAmB;IAAS;GAC5D,CAAC,CACqB,QAAQ;AAG/B,MAAI,UAAU,GAAG;AACf,WAAQ,SAAS;AACjB,YAAS,SAAS;;AAGpB,cAAY,KAAK,SAAS,OAAO,OAAsB;AACvD,SAAO,KAAK,SAAS;;CAIvB,MAAM,OAAO,KAAK,OAAO,aAAa,OAAO,QAAQ,GAAG,OAAO;AAC/D,QAAO,IAAI,WAAW,KAAK;;;;AAxEzB,cAA8C;AAC9C,eAAqC"}