@carbon/ai-chat-components 1.4.0 → 1.5.0-rc.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 (100) hide show
  1. package/custom-elements.json +837 -284
  2. package/es/components/chat-history/src/chat-history.scss.js +1 -1
  3. package/es/components/chat-history/src/history-panel-item.d.ts +14 -0
  4. package/es/components/chat-history/src/history-panel-item.js +30 -0
  5. package/es/components/chat-history/src/history-panel-item.js.map +1 -1
  6. package/es/components/code-snippet/src/code-snippet.d.ts +5 -0
  7. package/es/components/code-snippet/src/code-snippet.js +17 -5
  8. package/es/components/code-snippet/src/code-snippet.js.map +1 -1
  9. package/es/components/feedback/src/feedback.d.ts +4 -0
  10. package/es/components/feedback/src/feedback.js +6 -4
  11. package/es/components/feedback/src/feedback.js.map +1 -1
  12. package/es/components/markdown/index.d.ts +3 -1
  13. package/es/components/markdown/index.js +1 -1
  14. package/es/components/markdown/src/markdown-renderer-types.d.ts +100 -0
  15. package/es/components/markdown/src/markdown-renderer-types.js +8 -0
  16. package/es/components/markdown/src/markdown-renderer-types.js.map +1 -0
  17. package/es/components/markdown/src/markdown-renderer.d.ts +14 -64
  18. package/es/components/markdown/src/markdown-renderer.js +120 -134
  19. package/es/components/markdown/src/markdown-renderer.js.map +1 -1
  20. package/es/components/markdown/src/markdown-token-tree.d.ts +50 -5
  21. package/es/components/markdown/src/markdown-token-tree.js +182 -47
  22. package/es/components/markdown/src/markdown-token-tree.js.map +1 -1
  23. package/es/components/markdown/src/markdown.d.ts +49 -1
  24. package/es/components/markdown/src/markdown.js +307 -106
  25. package/es/components/markdown/src/markdown.js.map +1 -1
  26. package/es/components/markdown/src/markdown.scss.js +1 -1
  27. package/es/components/markdown/src/plugins/markdown-it-task-lists.js +2 -5
  28. package/es/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -1
  29. package/es/components/markdown/src/utils/lit-directives.d.ts +17 -0
  30. package/es/components/markdown/src/utils/lit-directives.js +84 -0
  31. package/es/components/markdown/src/utils/lit-directives.js.map +1 -0
  32. package/es/components/markdown/src/utils/plugin-fallback.d.ts +33 -0
  33. package/es/components/markdown/src/utils/plugin-fallback.js +219 -0
  34. package/es/components/markdown/src/utils/plugin-fallback.js.map +1 -0
  35. package/es/components/markdown/src/utils/streaming-table.d.ts +28 -0
  36. package/es/components/markdown/src/utils/streaming-table.js +86 -0
  37. package/es/components/markdown/src/utils/streaming-table.js.map +1 -0
  38. package/es/components/markdown/src/utils/table-helpers.d.ts +17 -0
  39. package/es/components/markdown/src/utils/table-helpers.js +104 -2
  40. package/es/components/markdown/src/utils/table-helpers.js.map +1 -1
  41. package/es/components/table/src/table.js +4 -1
  42. package/es/components/table/src/table.js.map +1 -1
  43. package/es/components/truncated-text/src/truncated-text.scss.js +1 -1
  44. package/es/components/workspace-shell/src/workspace-shell.scss.js +1 -1
  45. package/es/react/markdown.d.ts +46 -2
  46. package/es/react/markdown.js +177 -20
  47. package/es/react/markdown.js.map +1 -1
  48. package/es-custom/components/chat-history/src/chat-history.scss.js +1 -1
  49. package/es-custom/components/chat-history/src/history-panel-item.d.ts +14 -0
  50. package/es-custom/components/chat-history/src/history-panel-item.js +30 -0
  51. package/es-custom/components/chat-history/src/history-panel-item.js.map +1 -1
  52. package/es-custom/components/code-snippet/src/code-snippet.d.ts +5 -0
  53. package/es-custom/components/code-snippet/src/code-snippet.js +17 -5
  54. package/es-custom/components/code-snippet/src/code-snippet.js.map +1 -1
  55. package/es-custom/components/feedback/src/feedback.d.ts +4 -0
  56. package/es-custom/components/feedback/src/feedback.js +6 -4
  57. package/es-custom/components/feedback/src/feedback.js.map +1 -1
  58. package/es-custom/components/markdown/index.d.ts +3 -1
  59. package/es-custom/components/markdown/index.js +1 -1
  60. package/es-custom/components/markdown/src/markdown-renderer-types.d.ts +100 -0
  61. package/es-custom/components/markdown/src/markdown-renderer-types.js +8 -0
  62. package/es-custom/components/markdown/src/markdown-renderer-types.js.map +1 -0
  63. package/es-custom/components/markdown/src/markdown-renderer.d.ts +14 -64
  64. package/es-custom/components/markdown/src/markdown-renderer.js +120 -134
  65. package/es-custom/components/markdown/src/markdown-renderer.js.map +1 -1
  66. package/es-custom/components/markdown/src/markdown-token-tree.d.ts +50 -5
  67. package/es-custom/components/markdown/src/markdown-token-tree.js +182 -47
  68. package/es-custom/components/markdown/src/markdown-token-tree.js.map +1 -1
  69. package/es-custom/components/markdown/src/markdown.d.ts +49 -1
  70. package/es-custom/components/markdown/src/markdown.js +307 -106
  71. package/es-custom/components/markdown/src/markdown.js.map +1 -1
  72. package/es-custom/components/markdown/src/markdown.scss.js +1 -1
  73. package/es-custom/components/markdown/src/plugins/markdown-it-task-lists.js +2 -5
  74. package/es-custom/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -1
  75. package/es-custom/components/markdown/src/utils/lit-directives.d.ts +17 -0
  76. package/es-custom/components/markdown/src/utils/lit-directives.js +84 -0
  77. package/es-custom/components/markdown/src/utils/lit-directives.js.map +1 -0
  78. package/es-custom/components/markdown/src/utils/plugin-fallback.d.ts +33 -0
  79. package/es-custom/components/markdown/src/utils/plugin-fallback.js +219 -0
  80. package/es-custom/components/markdown/src/utils/plugin-fallback.js.map +1 -0
  81. package/es-custom/components/markdown/src/utils/streaming-table.d.ts +28 -0
  82. package/es-custom/components/markdown/src/utils/streaming-table.js +86 -0
  83. package/es-custom/components/markdown/src/utils/streaming-table.js.map +1 -0
  84. package/es-custom/components/markdown/src/utils/table-helpers.d.ts +17 -0
  85. package/es-custom/components/markdown/src/utils/table-helpers.js +104 -2
  86. package/es-custom/components/markdown/src/utils/table-helpers.js.map +1 -1
  87. package/es-custom/components/table/src/table.js +4 -1
  88. package/es-custom/components/table/src/table.js.map +1 -1
  89. package/es-custom/components/truncated-text/src/truncated-text.scss.js +1 -1
  90. package/es-custom/components/workspace-shell/src/workspace-shell.scss.js +1 -1
  91. package/es-custom/react/markdown.d.ts +46 -2
  92. package/es-custom/react/markdown.js +177 -20
  93. package/es-custom/react/markdown.js.map +1 -1
  94. package/package.json +5 -4
  95. package/es/components/markdown/src/utils.d.ts +0 -4
  96. package/es/components/markdown/src/utils.js +0 -25
  97. package/es/components/markdown/src/utils.js.map +0 -1
  98. package/es-custom/components/markdown/src/utils.d.ts +0 -4
  99. package/es-custom/components/markdown/src/utils.js +0 -25
  100. package/es-custom/components/markdown/src/utils.js.map +0 -1
@@ -14,63 +14,81 @@ import commonStyles from '../../../globals/scss/common.scss.js';
14
14
  import styles from './markdown.scss.js';
15
15
  import throttle from 'lodash-es/throttle.js';
16
16
  import { markdownToTokenTree } from './markdown-token-tree.js';
17
- import { renderTokenTree } from './markdown-renderer.js';
18
- import { consoleError } from './utils.js';
17
+ import { renderMarkdownTree } from './markdown-renderer.js';
18
+ import { hasTrailingTableToken, hasNodeAfterTable, hasLikelyPartialTableTail } from './utils/streaming-table.js';
19
19
 
20
20
  /*
21
- * Copyright IBM Corp. 2025
21
+ * Copyright IBM Corp. 2025, 2026
22
22
  *
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
25
25
  *
26
26
  * @license
27
27
  */
28
- function hasTrailingTableToken(node) {
29
- if (node.token.tag === "table") {
30
- return true;
31
- }
32
- const children = node.children || [];
33
- if (children.length === 0) {
34
- return false;
35
- }
36
- // Follow only the rightmost branch. A trailing table is one that sits at the
37
- // end of the current markdown output, not just the end of an arbitrary subtree.
38
- return hasTrailingTableToken(children[children.length - 1]);
39
- }
40
- function hasNodeAfterTable(node) {
41
- const children = node.children || [];
42
- for (let index = 0; index < children.length; index++) {
43
- const child = children[index];
44
- if (child.token.tag === "table" && index < children.length - 1) {
45
- return true;
46
- }
47
- if (hasNodeAfterTable(child)) {
28
+ const CONSOLE_PREFIX = "[carbon-ai-chat-components]";
29
+ /**
30
+ * True if `node` is inside (or is) a light-DOM element with a `slot` attribute
31
+ * set, up to (but not including) `boundary`. Portal hosts mounted by consumers
32
+ * carry a `slot` attribute, so this is used to skip both `textContent`
33
+ * contributions and observed mutations that originated inside a portal subtree.
34
+ */
35
+ function isInsidePortalHost(node, boundary) {
36
+ let cur = node;
37
+ while (cur && cur !== boundary) {
38
+ if (cur instanceof Element && cur.hasAttribute("slot")) {
48
39
  return true;
49
40
  }
41
+ cur = cur.parentNode;
50
42
  }
51
43
  return false;
52
44
  }
53
- function hasLikelyPartialTableTail(markdown) {
54
- const normalized = markdown.replace(/\r/g, "");
55
- const lines = normalized.split("\n");
56
- let index = lines.length - 1;
57
- while (index >= 0 && lines[index].trim() === "") {
58
- index--;
59
- }
60
- if (index < 0) {
61
- return false;
62
- }
63
- const lastLine = lines[index].trim();
64
- // During streaming, partially emitted table rows frequently end with a pipe
65
- // and markdown-it can temporarily stop recognizing the table token.
66
- if (lastLine.startsWith("|") || lastLine.endsWith("|")) {
67
- return true;
45
+ /**
46
+ * Concatenates the markdown source from `element`'s light-DOM children,
47
+ * skipping any `<element slot="">` portal hosts so consumer-rendered overrides
48
+ * don't contaminate the parsed markdown source.
49
+ */
50
+ function readLightDomMarkdownSource(element) {
51
+ let out = "";
52
+ for (const child of Array.from(element.childNodes)) {
53
+ if (child instanceof Element && child.hasAttribute("slot")) {
54
+ continue;
55
+ }
56
+ if (child.nodeType === Node.TEXT_NODE) {
57
+ out += child.nodeValue ?? "";
58
+ }
59
+ else if (child instanceof Element) {
60
+ out += child.textContent ?? "";
61
+ }
68
62
  }
69
- // Keep loading mode if the tail still looks like a table separator row.
70
- return /^\|?[\s:-]+(\|[\s:-]+)+\|?$/.test(lastLine);
63
+ return out.trim();
71
64
  }
72
65
  /**
73
- * Markdown component
66
+ * Renders markdown as Carbon-styled DOM. Streaming-friendly: incremental updates reparse the markdown source into a `TokenTree`, diff it against the prior tree to reuse stable subtrees, then walk it into a Lit `TemplateResult` — Lit's `repeat` directive keys off the diffed nodes so unchanged DOM stays put.
67
+ *
68
+ * ### Lifecycle
69
+ *
70
+ * 1. A property setter (or a light-DOM mutation) lands. `willUpdate` decides whether the change requires a reparse (`markdown`, `removeHTML`, `markdownItPlugins`) or only a re-render (translated strings, `streaming`, `sanitizeHTML`, `customRenderers`).
71
+ * 2. `scheduleRender` throttles bursts to 100ms (leading + trailing).
72
+ * 3. `renderMarkdown` parses (if needed) via {@link markdownToTokenTree}, then calls {@link renderMarkdownTree} to produce both a `TemplateResult` and a batch of {@link MarkdownRendererSlotDescriptor} records.
73
+ * 4. After Lit commits, `updated()` runs `reconcileCustomRendererHosts` — that is where consumer-supplied `customRenderers` callbacks fire and plugin-fallback HTML is adopted into light-DOM slot hosts.
74
+ *
75
+ * ### Extensibility
76
+ *
77
+ * - {@link markdownItPlugins} runs after the built-in markdown-it plugins (markdown-it-attrs, highlight, task-lists). A new array identity rebuilds the markdown-it instance and forces a full reparse. Tokens introduced by a plugin that the native dispatch can't handle — either an unknown tag, or a plugin-overridden rule on a curated allow-list of leaf tokens — route through `md.renderer.render()` via `./utils/plugin-fallback.ts` and surface as `pluginFallback` descriptors. Their rendered HTML is adopted into a light-DOM slot host so consumer-supplied CSS (e.g. a KaTeX stylesheet on the host page) reaches it.
78
+ * - {@link customRenderers} overrides per-element rendering for `table` and `codeBlock`. The renderer emits a named `<slot>` placeholder; the reconciler invokes the consumer's callback with the parsed data and appends the returned `HTMLElement` as a `<div slot="…">` light-DOM child. Returning the same element reference across renders avoids DOM churn.
79
+ *
80
+ * ### Light-DOM source adoption
81
+ *
82
+ * When the `markdown` property has never been set explicitly, the element treats its light-DOM text content as the initial source and watches for further mutations via a `MutationObserver`. Setting the property explicitly stops the observer — the property is then the authoritative source.
83
+ *
84
+ * ### Related files
85
+ *
86
+ * - `./markdown-token-tree.ts` — markdown-it parse + tree builder + streaming-aware diff (with `cachedHtml` carry-forward for plugin-delegated tokens).
87
+ * - `./markdown-renderer.ts` — `TokenTree` → Lit `TemplateResult`, plus descriptor collection.
88
+ * - `./markdown-renderer-types.ts` — public ({@link MarkdownCustomRenderers}) and internal ({@link MarkdownRendererSlotDescriptor}, `RenderTokenTreeOptions`) contracts.
89
+ * - `./utils/plugin-fallback.ts` — delegation to `md.renderer.render()` for plugin-introduced tokens.
90
+ * - `./utils/streaming-table.ts` — heuristics that hold a streaming table in a skeleton "loading" state until its tail stabilizes.
91
+ *
74
92
  * @element cds-custom-aichat-markdown
75
93
  */
76
94
  let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
@@ -125,6 +143,26 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
125
143
  this.tableDownloadLabelText = "Download table data";
126
144
  /** Locale used for table pagination and formatting. */
127
145
  this.tableLocale = "en";
146
+ /**
147
+ * Descriptors collected during the most recent render task; consumed by
148
+ * the `updated()` reconcile to invoke {@link customRenderers} callbacks.
149
+ * @internal
150
+ */
151
+ this.latestRendererDescriptors = [];
152
+ /**
153
+ * Light-DOM slot hosts adopted on behalf of {@link customRenderers}, keyed
154
+ * by slot name. Reused across renders for stable identity.
155
+ * @internal
156
+ */
157
+ this.slotHosts = new Map();
158
+ /**
159
+ * Slot names whose host was created by an outer listener (a chat container
160
+ * that called `preventDefault()` on the host-mount event). We track these
161
+ * so we can fire matching unmount events without trying to remove a host we
162
+ * never appended.
163
+ * @internal
164
+ */
165
+ this.delegatedPluginSlots = new Set();
128
166
  /**
129
167
  * @internal
130
168
  */
@@ -151,10 +189,12 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
151
189
  */
152
190
  this.lightDomObserver = null;
153
191
  /**
154
- * Tracks pending Light DOM mutation processing promises.
192
+ * Generation counter for Light DOM mutation processing. Incremented when a
193
+ * mutation is observed and decremented when the resulting microtask
194
+ * completes. `updateComplete` waits while the counter is non-zero.
155
195
  * @internal
156
196
  */
157
- this.lightDomMutationPromise = null;
197
+ this.pendingLightDomMutations = 0;
158
198
  /**
159
199
  * @internal
160
200
  */
@@ -199,7 +239,12 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
199
239
  // rendered when the markdown is updated (likely by streaming, but possibly by an edit somewhere in the
200
240
  // middle). It takes the current tokenTree as an argument for quick diffing to avoid re-creating parts
201
241
  // of the tree.
202
- nextTokenTree = markdownToTokenTree(markdownContent, previousTreeForDiff, !this.removeHTML);
242
+ const parsed = markdownToTokenTree(markdownContent, previousTreeForDiff, {
243
+ removeHtml: this.removeHTML,
244
+ markdownItPlugins: this.markdownItPlugins,
245
+ });
246
+ nextTokenTree = parsed.tree;
247
+ this.markdownItInstance = parsed.md;
203
248
  this.needsReparse = false;
204
249
  }
205
250
  const hasStreamingTailTable = Boolean(this.streaming) && hasTrailingTableToken(nextTokenTree);
@@ -216,32 +261,44 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
216
261
  else if (hasStreamingTailTable) {
217
262
  this.isStreamingTableLoadingMode = true;
218
263
  }
264
+ // Render-and-stash helper. Each invocation produces a fresh batch of
265
+ // renderer-slot descriptors; the `updated()` reconcile then invokes
266
+ // the consumer's `customRenderers` callbacks for each descriptor and
267
+ // adopts the returned `HTMLElement` as a light-DOM slot host.
268
+ const renderAndDispatch = (tree) => {
269
+ const { template, batch } = renderMarkdownTree(tree, {
270
+ sanitize: this.sanitizeHTML,
271
+ streaming: this.streaming,
272
+ // Code snippet properties
273
+ codeSnippetHighlight: this.codeSnippetHighlight,
274
+ codeSnippetShowLessText: this.codeSnippetShowLessText,
275
+ codeSnippetShowMoreText: this.codeSnippetShowMoreText,
276
+ codeSnippetCopyButtonTooltipContent: this.codeSnippetCopyButtonTooltipContent,
277
+ codeSnippetGetLineCountText: this.codeSnippetGetLineCountText,
278
+ codeSnippetAriaLabelReadOnly: this.codeSnippetAriaLabelReadOnly,
279
+ codeSnippetAriaLabelEditable: this.codeSnippetAriaLabelEditable,
280
+ // Table properties
281
+ tableFilterPlaceholderText: this.tableFilterPlaceholderText,
282
+ tablePreviousPageText: this.tablePreviousPageText,
283
+ tableNextPageText: this.tableNextPageText,
284
+ tableItemsPerPageText: this.tableItemsPerPageText,
285
+ tableDownloadLabelText: this.tableDownloadLabelText,
286
+ tableLocale: this.tableLocale,
287
+ tableGetPaginationSupplementalText: this.tableGetPaginationSupplementalText,
288
+ tableGetPaginationStatusText: this.tableGetPaginationStatusText,
289
+ // Custom-renderer hooks
290
+ customRenderers: this.customRenderers,
291
+ md: this.markdownItInstance,
292
+ });
293
+ this.renderedContent = template;
294
+ this.latestRendererDescriptors = batch;
295
+ };
219
296
  if (this.streaming && this.isStreamingTableLoadingMode) {
220
297
  if (!this.hasRenderedStreamingTableLoadingFrame) {
221
298
  if (nextTokenTree !== this.tokenTree) {
222
299
  this.tokenTree = nextTokenTree;
223
300
  }
224
- this.renderedContent = renderTokenTree(nextTokenTree, {
225
- sanitize: this.sanitizeHTML,
226
- streaming: this.streaming,
227
- // Code snippet properties
228
- codeSnippetHighlight: this.codeSnippetHighlight,
229
- codeSnippetShowLessText: this.codeSnippetShowLessText,
230
- codeSnippetShowMoreText: this.codeSnippetShowMoreText,
231
- codeSnippetCopyButtonTooltipContent: this.codeSnippetCopyButtonTooltipContent,
232
- codeSnippetGetLineCountText: this.codeSnippetGetLineCountText,
233
- codeSnippetAriaLabelReadOnly: this.codeSnippetAriaLabelReadOnly,
234
- codeSnippetAriaLabelEditable: this.codeSnippetAriaLabelEditable,
235
- // Table properties
236
- tableFilterPlaceholderText: this.tableFilterPlaceholderText,
237
- tablePreviousPageText: this.tablePreviousPageText,
238
- tableNextPageText: this.tableNextPageText,
239
- tableItemsPerPageText: this.tableItemsPerPageText,
240
- tableDownloadLabelText: this.tableDownloadLabelText,
241
- tableLocale: this.tableLocale,
242
- tableGetPaginationSupplementalText: this.tableGetPaginationSupplementalText,
243
- tableGetPaginationStatusText: this.tableGetPaginationStatusText,
244
- });
301
+ renderAndDispatch(nextTokenTree);
245
302
  this.hasRenderedStreamingTableLoadingFrame = true;
246
303
  this.stagedStreamingTokenTree = null;
247
304
  }
@@ -258,30 +315,10 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
258
315
  }
259
316
  // Next we take that tree and transform it into Lit content to be rendered into the template.
260
317
  // this.renderedContent is what is rendered in the template directly.
261
- this.renderedContent = renderTokenTree(renderTree, {
262
- sanitize: this.sanitizeHTML,
263
- streaming: this.streaming,
264
- // Code snippet properties
265
- codeSnippetHighlight: this.codeSnippetHighlight,
266
- codeSnippetShowLessText: this.codeSnippetShowLessText,
267
- codeSnippetShowMoreText: this.codeSnippetShowMoreText,
268
- codeSnippetCopyButtonTooltipContent: this.codeSnippetCopyButtonTooltipContent,
269
- codeSnippetGetLineCountText: this.codeSnippetGetLineCountText,
270
- codeSnippetAriaLabelReadOnly: this.codeSnippetAriaLabelReadOnly,
271
- codeSnippetAriaLabelEditable: this.codeSnippetAriaLabelEditable,
272
- // Table properties
273
- tableFilterPlaceholderText: this.tableFilterPlaceholderText,
274
- tablePreviousPageText: this.tablePreviousPageText,
275
- tableNextPageText: this.tableNextPageText,
276
- tableItemsPerPageText: this.tableItemsPerPageText,
277
- tableDownloadLabelText: this.tableDownloadLabelText,
278
- tableLocale: this.tableLocale,
279
- tableGetPaginationSupplementalText: this.tableGetPaginationSupplementalText,
280
- tableGetPaginationStatusText: this.tableGetPaginationStatusText,
281
- });
318
+ renderAndDispatch(renderTree);
282
319
  }
283
320
  catch (error) {
284
- consoleError("Failed to parse markdown", error);
321
+ console.error(`${CONSOLE_PREFIX} Failed to parse markdown`, error);
285
322
  }
286
323
  };
287
324
  /**
@@ -328,12 +365,27 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
328
365
  disconnectedCallback() {
329
366
  super.disconnectedCallback();
330
367
  this.stopObservingLightDom();
368
+ // Tear down any adopted slot hosts so they don't leak across re-connect.
369
+ for (const host of this.slotHosts.values()) {
370
+ host.remove();
371
+ }
372
+ this.slotHosts.clear();
373
+ // Ask any delegating chat container to drop its hosts too.
374
+ for (const slotName of this.delegatedPluginSlots) {
375
+ this.dispatchEvent(new CustomEvent("cds-custom-aichat-markdown-plugin-host-unmount", {
376
+ bubbles: true,
377
+ composed: true,
378
+ detail: { slotName },
379
+ }));
380
+ }
381
+ this.delegatedPluginSlots.clear();
382
+ this.latestRendererDescriptors = [];
331
383
  }
332
384
  adoptLightDomMarkdown() {
333
385
  // Backward compatibility: treat static light-DOM text as initial markdown
334
386
  // when the explicit `markdown` property was not provided.
335
387
  if (!this.markdownPropertyExplicitlySet) {
336
- const lightDomMarkdown = this.textContent?.trim() ?? "";
388
+ const lightDomMarkdown = readLightDomMarkdownSource(this);
337
389
  if (lightDomMarkdown) {
338
390
  // Set markdown without triggering the "explicitly set" flag
339
391
  this.isInternalMarkdownUpdate = true;
@@ -348,26 +400,31 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
348
400
  if (this.lightDomObserver || this.markdownPropertyExplicitlySet) {
349
401
  return;
350
402
  }
351
- this.lightDomObserver = new MutationObserver(() => {
403
+ this.lightDomObserver = new MutationObserver((records) => {
352
404
  // Only update from Light DOM if markdown property still hasn't been explicitly set
353
405
  if (!this.markdownPropertyExplicitlySet) {
354
- // Wrap in a promise so updateComplete can wait for it
355
- const mutationPromise = Promise.resolve().then(() => {
356
- // Read textContent directly - it should be up to date when the callback fires
357
- const lightDomMarkdown = this.textContent?.trim() ?? "";
358
- // Directly update markdown without triggering the "explicitly set" flag
406
+ // Mutations that happened entirely inside a portal host (a light-DOM
407
+ // child with a `slot` attribute) are noise from the consumer's
408
+ // overrides re-rendering they don't change the markdown source.
409
+ const relevant = records.filter((record) => !isInsidePortalHost(record.target, this));
410
+ if (relevant.length === 0) {
411
+ return;
412
+ }
413
+ // Process the mutation in a microtask so the DOM has settled. Track
414
+ // it via a counter so `updateComplete` can await any concurrent
415
+ // mutations without the fragility of a single-slot promise field.
416
+ this.pendingLightDomMutations += 1;
417
+ Promise.resolve()
418
+ .then(() => {
419
+ const lightDomMarkdown = readLightDomMarkdownSource(this);
359
420
  if (this.markdown !== lightDomMarkdown) {
360
421
  this.isInternalMarkdownUpdate = true;
361
422
  this.markdown = lightDomMarkdown;
362
423
  this.isInternalMarkdownUpdate = false;
363
424
  }
364
- });
365
- // Track the promise
366
- this.lightDomMutationPromise = mutationPromise;
367
- mutationPromise.finally(() => {
368
- if (this.lightDomMutationPromise === mutationPromise) {
369
- this.lightDomMutationPromise = null;
370
- }
425
+ })
426
+ .finally(() => {
427
+ this.pendingLightDomMutations -= 1;
371
428
  });
372
429
  }
373
430
  else {
@@ -393,10 +450,12 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
393
450
  const isInitialRender = !this.hasConnected && this.markdown;
394
451
  if (changed.has("removeHTML") ||
395
452
  changed.has("markdown") ||
453
+ changed.has("markdownItPlugins") ||
396
454
  isInitialRender) {
397
455
  // Properties that affect token tree structure require full reparse
398
- // - removeHTML: changes which parser is used (html: true vs false)
456
+ // - removeHTML: toggles post-parse HTML-token stripping
399
457
  // - markdown: updates the source text to parse
458
+ // - markdownItPlugins: swaps the markdown-it instance, new parser rules
400
459
  // - isInitialRender: ensures pre-set markdown gets parsed on first render
401
460
  this.needsReparse = true;
402
461
  this.scheduleRender();
@@ -406,8 +465,10 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
406
465
  // - sanitizeHTML: applies DOMPurify during render, doesn't change tokens
407
466
  // - string properties: change translated strings in rendered output
408
467
  // - streaming: affects loading states in rendered output
468
+ // - customRenderers: only changes which tokens emit a slot
409
469
  changed.has("sanitizeHTML") ||
410
470
  changed.has("streaming") ||
471
+ changed.has("customRenderers") ||
411
472
  // Code snippet properties
412
473
  changed.has("codeSnippetHighlight") ||
413
474
  changed.has("codeSnippetShowLessText") ||
@@ -442,10 +503,12 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
442
503
  if (this.renderTask) {
443
504
  await this.renderTask;
444
505
  }
445
- // If a Light DOM mutation is being processed, wait for it and any subsequent render
446
- if (this.lightDomMutationPromise) {
447
- await this.lightDomMutationPromise;
448
- // Then flush and wait for any render it triggered
506
+ // Drain any in-flight Light DOM mutation microtasks and their resulting
507
+ // renders. Each iteration yields the event loop so newly enqueued
508
+ // mutations can settle; the counter goes back to zero once everything
509
+ // has flushed.
510
+ while (this.pendingLightDomMutations > 0) {
511
+ await Promise.resolve();
449
512
  const postMutationFlush = this.scheduleRender.flush?.();
450
513
  if (postMutationFlush instanceof Promise) {
451
514
  await postMutationFlush;
@@ -456,6 +519,138 @@ let CDSAIChatMarkdown = class CDSAIChatMarkdown extends LitElement {
456
519
  }
457
520
  return result;
458
521
  }
522
+ updated(changed) {
523
+ super.updated(changed);
524
+ this.reconcileCustomRendererHosts();
525
+ }
526
+ /**
527
+ * Invoke the consumer's `customRenderers` callbacks once per descriptor and
528
+ * adopt their returned `HTMLElement` as a `<span slot="…">` (for inline
529
+ * plugin tokens) or `<div slot="…">` (block tokens and consumer renderers)
530
+ * light-DOM child. Hosts persist across renders so a consumer returning the
531
+ * same element reference produces no DOM churn; hosts whose slot names
532
+ * dropped out of the latest descriptor batch are removed.
533
+ *
534
+ * @internal
535
+ */
536
+ reconcileCustomRendererHosts() {
537
+ const renderers = this.customRenderers;
538
+ const descriptors = this.latestRendererDescriptors;
539
+ const wanted = new Set();
540
+ for (const descriptor of descriptors) {
541
+ if (descriptor.kind === "pluginFallback") {
542
+ wanted.add(descriptor.slotName);
543
+ // Offer the slot to a chat-container ancestor first. The chain
544
+ // appends the host to its OWN light DOM (page DOM at the top of the
545
+ // chain) so external CSS (e.g. a KaTeX stylesheet on the host page)
546
+ // reaches the plugin output. If a listener calls preventDefault, it
547
+ // has taken over hosting and we skip the local appendChild path.
548
+ const alreadyDelegated = this.delegatedPluginSlots.has(descriptor.slotName);
549
+ if (!alreadyDelegated && !this.slotHosts.has(descriptor.slotName)) {
550
+ const mountEvent = new CustomEvent("cds-custom-aichat-markdown-plugin-host-mount", {
551
+ bubbles: true,
552
+ composed: true,
553
+ cancelable: true,
554
+ detail: {
555
+ slotName: descriptor.slotName,
556
+ html: descriptor.html,
557
+ isInline: descriptor.isInline,
558
+ },
559
+ });
560
+ this.dispatchEvent(mountEvent);
561
+ if (mountEvent.defaultPrevented) {
562
+ this.delegatedPluginSlots.add(descriptor.slotName);
563
+ }
564
+ }
565
+ else if (alreadyDelegated) {
566
+ // The chain owns this slot; push HTML updates through a second
567
+ // event so streaming chunks reach the page-level host element.
568
+ this.dispatchEvent(new CustomEvent("cds-custom-aichat-markdown-plugin-host-update", {
569
+ bubbles: true,
570
+ composed: true,
571
+ detail: {
572
+ slotName: descriptor.slotName,
573
+ html: descriptor.html,
574
+ },
575
+ }));
576
+ }
577
+ if (this.delegatedPluginSlots.has(descriptor.slotName)) {
578
+ continue;
579
+ }
580
+ // Fallback: no outer listener took over (standalone usage, e.g.
581
+ // storybook). Adopt the host as our own light-DOM child, matching
582
+ // the pre-event behavior so existing tests/stories keep working.
583
+ let host = this.slotHosts.get(descriptor.slotName);
584
+ if (!host) {
585
+ const tag = descriptor.isInline ? "span" : "div";
586
+ host = document.createElement(tag);
587
+ host.setAttribute("slot", descriptor.slotName);
588
+ this.slotHosts.set(descriptor.slotName, host);
589
+ this.appendChild(host);
590
+ }
591
+ // Only rewrite innerHTML when the plugin output actually changed;
592
+ // streaming re-renders frequently land here with the same HTML.
593
+ if (host.innerHTML !== descriptor.html) {
594
+ host.innerHTML = descriptor.html;
595
+ }
596
+ continue;
597
+ }
598
+ const callback = renderers?.[descriptor.kind];
599
+ if (!callback) {
600
+ continue;
601
+ }
602
+ let result;
603
+ try {
604
+ result = callback({
605
+ ...descriptor.data,
606
+ token: descriptor.token,
607
+ node: descriptor.node,
608
+ slotName: descriptor.slotName,
609
+ });
610
+ }
611
+ catch (error) {
612
+ console.error(`[carbon-ai-chat-components] customRenderers.${descriptor.kind} threw`, error);
613
+ continue;
614
+ }
615
+ if (result == null) {
616
+ const existing = this.slotHosts.get(descriptor.slotName);
617
+ if (existing) {
618
+ existing.remove();
619
+ this.slotHosts.delete(descriptor.slotName);
620
+ }
621
+ continue;
622
+ }
623
+ wanted.add(descriptor.slotName);
624
+ let host = this.slotHosts.get(descriptor.slotName);
625
+ if (!host) {
626
+ host = document.createElement("div");
627
+ host.setAttribute("slot", descriptor.slotName);
628
+ this.slotHosts.set(descriptor.slotName, host);
629
+ this.appendChild(host);
630
+ }
631
+ if (host.firstChild !== result || host.childNodes.length !== 1) {
632
+ host.replaceChildren(result);
633
+ }
634
+ }
635
+ for (const [slotName, host] of this.slotHosts) {
636
+ if (!wanted.has(slotName)) {
637
+ host.remove();
638
+ this.slotHosts.delete(slotName);
639
+ }
640
+ }
641
+ // Tell any delegating chat container to drop hosts whose descriptor
642
+ // disappeared (e.g. a streaming chunk removed a math node).
643
+ for (const slotName of this.delegatedPluginSlots) {
644
+ if (!wanted.has(slotName)) {
645
+ this.dispatchEvent(new CustomEvent("cds-custom-aichat-markdown-plugin-host-unmount", {
646
+ bubbles: true,
647
+ composed: true,
648
+ detail: { slotName },
649
+ }));
650
+ this.delegatedPluginSlots.delete(slotName);
651
+ }
652
+ }
653
+ }
459
654
  render() {
460
655
  const { renderedContent } = this;
461
656
  return html `<div class="cds-custom-aichat-markdown-stack">
@@ -524,6 +719,12 @@ __decorate([
524
719
  __decorate([
525
720
  property({ type: Object, attribute: false })
526
721
  ], CDSAIChatMarkdown.prototype, "tableGetPaginationStatusText", void 0);
722
+ __decorate([
723
+ property({ type: Array, attribute: false })
724
+ ], CDSAIChatMarkdown.prototype, "markdownItPlugins", void 0);
725
+ __decorate([
726
+ property({ attribute: false })
727
+ ], CDSAIChatMarkdown.prototype, "customRenderers", void 0);
527
728
  __decorate([
528
729
  state()
529
730
  ], CDSAIChatMarkdown.prototype, "tokenTree", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sources":["../../../../src/components/markdown/src/markdown.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sources":["../../../../src/components/markdown/src/markdown.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAOG;AA4BH,MAAM,cAAc,GAAG,6BAA6B;AAEpD;;;;;AAKG;AACH,SAAS,kBAAkB,CAAC,IAAU,EAAE,QAAc,EAAA;IACpD,IAAI,GAAG,GAAgB,IAAI;AAC3B,IAAA,OAAO,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE;QAC9B,IAAI,GAAG,YAAY,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU;IACtB;AACA,IAAA,OAAO,KAAK;AACd;AAEA;;;;AAIG;AACH,SAAS,0BAA0B,CAAC,OAAgB,EAAA;IAClD,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAClD,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC1D;QACF;QACA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AACrC,YAAA,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE;QAC9B;AAAO,aAAA,IAAI,KAAK,YAAY,OAAO,EAAE;AACnC,YAAA,GAAG,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE;QAChC;IACF;AACA,IAAA,OAAO,GAAG,CAAC,IAAI,EAAE;AACnB;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AAEH,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU,CAAA;AAA1C,IAAA,WAAA,GAAA;;AAGE;;AAEG;QAEH,IAAA,CAAA,YAAY,GAAG,KAAK;AAEpB;;AAEG;QAEH,IAAA,CAAA,UAAU,GAAG,KAAK;AAElB;;;AAGG;QACK,IAAA,CAAA,SAAS,GAAG,EAAE;AAEtB;;;AAGG;QACK,IAAA,CAAA,wBAAwB,GAAG,KAAK;AAuBxC;;;AAGG;QAEH,IAAA,CAAA,SAAS,GAAG,KAAK;;;QAKjB,IAAA,CAAA,oBAAoB,GAAG,IAAI;;QAI3B,IAAA,CAAA,uBAAuB,GAAG,WAAW;;QAIrC,IAAA,CAAA,uBAAuB,GAAG,WAAW;;QAOrC,IAAA,CAAA,mCAAmC,GAAG,WAAW;;QAQjD,IAAA,CAAA,4BAA4B,GAAG,cAAc;;QAI7C,IAAA,CAAA,4BAA4B,GAAG,aAAa;;;QAK5C,IAAA,CAAA,0BAA0B,GAAG,iBAAiB;;QAI9C,IAAA,CAAA,qBAAqB,GAAG,eAAe;;QAIvC,IAAA,CAAA,iBAAiB,GAAG,WAAW;;QAI/B,IAAA,CAAA,qBAAqB,GAAG,iBAAiB;;QAIzC,IAAA,CAAA,sBAAsB,GAAG,qBAAqB;;QAI9C,IAAA,CAAA,WAAW,GAAG,IAAI;AA0ClB;;;;AAIG;QACK,IAAA,CAAA,yBAAyB,GAAqC,EAAE;AAExE;;;;AAIG;AACK,QAAA,IAAA,CAAA,SAAS,GAA6B,IAAI,GAAG,EAAE;AAEvD;;;;;;AAMG;AACK,QAAA,IAAA,CAAA,oBAAoB,GAAgB,IAAI,GAAG,EAAE;AASrD;;AAEG;QACK,IAAA,CAAA,YAAY,GAAG,KAAK;AAE5B;;;;AAIG;QACK,IAAA,CAAA,UAAU,GAAyB,IAAI;QAEvC,IAAA,CAAA,qCAAqC,GAAG,KAAK;QAC7C,IAAA,CAAA,wBAAwB,GAAqB,IAAI;QACjD,IAAA,CAAA,2BAA2B,GAAG,KAAK;QACnC,IAAA,CAAA,YAAY,GAAG,KAAK;AAE5B;;;;AAIG;QACK,IAAA,CAAA,6BAA6B,GAAG,KAAK;AAE7C;;;AAGG;QACK,IAAA,CAAA,gBAAgB,GAA4B,IAAI;AAExD;;;;;AAKG;QACK,IAAA,CAAA,wBAAwB,GAAG,CAAC;AA0JpC;;AAEG;AAEH,QAAA,IAAA,CAAA,SAAS,GAAc;AACrB,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE;SACb;AAED;;AAEG;QAEH,IAAA,CAAA,eAAe,GAA0B,IAAI;AAE7C;;;;;;AAMG;QACK,IAAA,CAAA,cAAc,GAAG,YAAW;AAClC,YAAA,IAAI;AACF,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC3C,MAAM,mBAAmB,GACvB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,SAAS;gBACjD,IAAI,aAAa,GAAG,mBAAmB;AAEvC,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;;;;;AAMrB,oBAAA,MAAM,MAAM,GAAG,mBAAmB,CAChC,eAAe,EACf,mBAAmB,EACnB;wBACE,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC1C,qBAAA,CACF;AACD,oBAAA,aAAa,GAAG,MAAM,CAAC,IAAI;AAC3B,oBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;gBAC3B;AAEA,gBAAA,MAAM,qBAAqB,GACzB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,aAAa,CAAC;AACjE,gBAAA,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,aAAa,CAAC;AAEhE,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK;gBAC1C;AAAO,qBAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC3C,oBAAA,IACE,uBAAuB;AACvB,wBAAA,CAAC,yBAAyB,CAAC,eAAe,CAAC,EAC3C;AACA,wBAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK;oBAC1C;gBACF;qBAAO,IAAI,qBAAqB,EAAE;AAChC,oBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;gBACzC;;;;;AAMA,gBAAA,MAAM,iBAAiB,GAAG,CAAC,IAAe,KAAU;oBAClD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE;wBACnD,QAAQ,EAAE,IAAI,CAAC,YAAY;wBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;;wBAEzB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;wBAC/C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;wBACrD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;wBACrD,mCAAmC,EACjC,IAAI,CAAC,mCAAmC;wBAC1C,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;wBAC7D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;wBAC/D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;;wBAE/D,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;wBAC3D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;wBACjD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;wBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;wBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,kCAAkC,EAChC,IAAI,CAAC,kCAAkC;wBACzC,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;;wBAE/D,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,EAAE,EAAE,IAAI,CAAC,kBAAkB;AAC5B,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,oBAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACxC,gBAAA,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACtD,oBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,EAAE;AAC/C,wBAAA,IAAI,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;AACpC,4BAAA,IAAI,CAAC,SAAS,GAAG,aAAa;wBAChC;wBACA,iBAAiB,CAAC,aAAa,CAAC;AAChC,wBAAA,IAAI,CAAC,qCAAqC,GAAG,IAAI;AACjD,wBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;oBACtC;yBAAO;AACL,wBAAA,IAAI,CAAC,wBAAwB,GAAG,aAAa;oBAC/C;oBACA;gBACF;AAEA,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,IAAI,aAAa;AACjE,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,gBAAA,IAAI,CAAC,qCAAqC,GAAG,KAAK;AAClD,gBAAA,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE;AACjC,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU;gBAC7B;;;gBAIA,iBAAiB,CAAC,UAAU,CAAC;YAC/B;YAAE,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,cAAc,CAAA,yBAAA,CAA2B,EAAE,KAAK,CAAC;YACpE;AACF,QAAA,CAAC;AAED;;AAEG;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC/B,MAAK;;;AAGH,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAK;AACpC,gBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;AACnC,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;gBACxB;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,YAAA,OAAO,WAAW;AACpB,QAAA,CAAC,EACD,GAAG,EACH,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAClC;IAkNH;AA9sBE;;AAEG;AAEH,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAa,EAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;AAItB,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;YACzC,IAAI,CAAC,qBAAqB,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC1C;IA8KA,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,qBAAqB,EAAE;;AAG5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,oBAAoB,GAAA;QAClB,KAAK,CAAC,oBAAoB,EAAE;QAC5B,IAAI,CAAC,qBAAqB,EAAE;;QAE5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,EAAE;QACf;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AAEtB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAChD,YAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,yCAAyC,EAAE;AACzD,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE,QAAQ,EAAE;AACrB,aAAA,CAAC,CACH;QACH;AACA,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;IACrC;IAEQ,qBAAqB,GAAA;;;AAG3B,QAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;AACvC,YAAA,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,IAAI,CAAC;YACzD,IAAI,gBAAgB,EAAE;;AAEpB,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB;AAChC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;YACvC;;YAGA,IAAI,CAAC,sBAAsB,EAAE;QAC/B;IACF;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,6BAA6B,EAAE;YAC/D;QACF;QAEA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAI;;AAEvD,YAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;;;;gBAIvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,MAAM,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CACrD;AACD,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzB;gBACF;;;;AAKA,gBAAA,IAAI,CAAC,wBAAwB,IAAI,CAAC;gBAClC,OAAO,CAAC,OAAO;qBACZ,IAAI,CAAC,MAAK;AACT,oBAAA,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACzD,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;AACtC,wBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,wBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB;AAChC,wBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;oBACvC;AACF,gBAAA,CAAC;qBACA,OAAO,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,wBAAwB,IAAI,CAAC;AACpC,gBAAA,CAAC,CAAC;YACN;iBAAO;;gBAEL,IAAI,CAAC,qBAAqB,EAAE;YAC9B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE;AAClC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;IACJ;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;AAEU,IAAA,UAAU,CAAC,OAA6B,EAAA;;;QAGhD,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ;AAE3D,QAAA,IACE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACzB,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACvB,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChC,YAAA,eAAe,EACf;;;;;;AAMA,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB,IAAI,CAAC,cAAc,EAAE;QACvB;AAAO,aAAA;;;;;;AAML,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC3B,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;;AAE9B,YAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACnC,YAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,YAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,YAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;AAClD,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAC1C,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;AAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;;AAE3C,YAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AACzC,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACpC,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChC,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACpC,YAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACrC,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAC3C;YACA,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAuKU,IAAA,MAAM,iBAAiB,GAAA;;;;;;AAM/B,QAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;QAE9C,MAAM,WAAW,GACf,IAAI,CAAC,cAGN,CAAC,KAAK,IAAI;AAEX,QAAA,IAAI,WAAW,YAAY,OAAO,EAAE;AAClC,YAAA,MAAM,WAAW;QACnB;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,CAAC,UAAU;QACvB;;;;;AAMA,QAAA,OAAO,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE;AACxC,YAAA,MAAM,OAAO,CAAC,OAAO,EAAE;YAEvB,MAAM,iBAAiB,GACrB,IAAI,CAAC,cAGN,CAAC,KAAK,IAAI;AAEX,YAAA,IAAI,iBAAiB,YAAY,OAAO,EAAE;AACxC,gBAAA,MAAM,iBAAiB;YACzB;AAEA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM,IAAI,CAAC,UAAU;YACvB;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEU,IAAA,OAAO,CAAC,OAA6B,EAAA;AAC7C,QAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,4BAA4B,EAAE;IACrC;AAEA;;;;;;;;;AASG;IACK,4BAA4B,GAAA;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;AACtC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB;AAClD,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU;AAEhC,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,YAAA,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACxC,gBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;;;;;;AAO/B,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CACpD,UAAU,CAAC,QAAQ,CACpB;AACD,gBAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjE,oBAAA,MAAM,UAAU,GAAG,IAAI,WAAW,CAChC,uCAAuC,EACvC;AACE,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,MAAM,EAAE;4BACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;4BAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAC9B,yBAAA;AACF,qBAAA,CACF;AACD,oBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC9B,oBAAA,IAAI,UAAU,CAAC,gBAAgB,EAAE;wBAC/B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;oBACpD;gBACF;qBAAO,IAAI,gBAAgB,EAAE;;;AAG3B,oBAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,wCAAwC,EAAE;AACxD,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,MAAM,EAAE;4BACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;4BAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;AACtB,yBAAA;AACF,qBAAA,CAAC,CACH;gBACH;gBAEA,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBACtD;gBACF;;;;AAKA,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK;AAChD,oBAAA,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;oBAClC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;oBAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;;;gBAGA,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,IAAI,EAAE;AACtC,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI;gBAClC;gBACA;YACF;YAEA,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF;AACA,YAAA,IAAI,MAA0B;AAC9B,YAAA,IAAI;gBACF,MAAM,GACJ,QAGD,CAAC;oBACA,GAAG,UAAU,CAAC,IAAI;oBAClB,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAC9B,iBAAA,CAAC;YACJ;YAAE,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CACX,CAAA,4CAAA,EAA+C,UAAU,CAAC,IAAI,CAAA,MAAA,CAAQ,EACtE,KAAK,CACN;gBACD;YACF;AACA,YAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACxD,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,MAAM,EAAE;oBACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC5C;gBACA;YACF;AACA,YAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC/B,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;gBAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxB;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC9B;QACF;QAEA,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACzB,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjC;QACF;;;AAIA,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACzB,gBAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,yCAAyC,EAAE;AACzD,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,EAAE,QAAQ,EAAE;AACrB,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5C;QACF;IACF;IAEU,MAAM,GAAA;AACd,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;AAChC,QAAA,OAAO,IAAI,CAAA,CAAA;QACP,eAAe;WACZ;IACT;;AAvuBO,iBAAA,CAAA,MAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC;AAMtC,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE;AAClC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAMrB,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE;AAClC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAkBnB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAGzB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAoBD,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACjC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAKlB,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE;AACpC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,MAAA,CAAA;AAI5B,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE;AAC9B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,MAAA,CAAA;AAItC,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,6BAA6B,EAAE;AAC9B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,MAAA,CAAA;AAOtC,UAAA,CAAA;AAJC,IAAA,QAAQ,CAAC;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,0CAA0C;KACtD;AACiD,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,qCAAA,EAAA,MAAA,CAAA;AAIlD,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AAC2B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,MAAA,CAAA;AAIvE,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kCAAkC,EAAE;AAC3B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,MAAA,CAAA;AAI9C,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kCAAkC,EAAE;AAC5B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,MAAA,CAAA;AAK7C,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,+BAA+B,EAAE;AACvB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,MAAA,CAAA;AAI/C,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,0BAA0B,EAAE;AACzB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,MAAA,CAAA;AAIxC,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE;AAC7B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,CAAA;AAIhC,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,2BAA2B,EAAE;AACxB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,MAAA,CAAA;AAI1C,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,2BAA2B,EAAE;AACnB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,MAAA,CAAA;AAI/C,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE;AAClC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAInB,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACkC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,oCAAA,EAAA,MAAA,CAAA;AAI9E,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AAS/B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,MAAA,CAAA;AASb,UAAA,CAAA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AACJ,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,CAAA;AAevC,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;AACY,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,CAAA;AAkO1C,UAAA,CAAA;AADC,IAAA,KAAK;AAmBJ,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAMF,UAAA,CAAA;AADC,IAAA,KAAK;AACwC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,CAAA;AAhZ1C,iBAAiB,GAAA,UAAA,CAAA;AADtB,IAAA,aAAa,CAAC,CAAA,EAAG,MAAM,CAAA,SAAA,CAAW;AAC7B,CAAA,EAAA,iBAAiB,CAyuBtB;AASD,0BAAe,iBAAiB;;;;"}