@memberjunction/core-actions 5.24.0 → 5.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/custom/files/add-document-content.action.d.ts +20 -0
  2. package/dist/custom/files/add-document-content.action.d.ts.map +1 -0
  3. package/dist/custom/files/add-document-content.action.js +74 -0
  4. package/dist/custom/files/add-document-content.action.js.map +1 -0
  5. package/dist/custom/files/base-file-storage.action.d.ts +6 -9
  6. package/dist/custom/files/base-file-storage.action.d.ts.map +1 -1
  7. package/dist/custom/files/base-file-storage.action.js +14 -39
  8. package/dist/custom/files/base-file-storage.action.js.map +1 -1
  9. package/dist/custom/files/create-document.action.d.ts +19 -0
  10. package/dist/custom/files/create-document.action.d.ts.map +1 -0
  11. package/dist/custom/files/create-document.action.js +65 -0
  12. package/dist/custom/files/create-document.action.js.map +1 -0
  13. package/dist/custom/files/excel-reader.action.js +1 -1
  14. package/dist/custom/files/excel-reader.action.js.map +1 -1
  15. package/dist/custom/files/finalize-document.action.d.ts +21 -0
  16. package/dist/custom/files/finalize-document.action.d.ts.map +1 -0
  17. package/dist/custom/files/finalize-document.action.js +94 -0
  18. package/dist/custom/files/finalize-document.action.js.map +1 -0
  19. package/dist/custom/files/index.d.ts +5 -0
  20. package/dist/custom/files/index.d.ts.map +1 -1
  21. package/dist/custom/files/index.js +6 -0
  22. package/dist/custom/files/index.js.map +1 -1
  23. package/dist/custom/files/list-storage-providers.action.d.ts.map +1 -1
  24. package/dist/custom/files/list-storage-providers.action.js +6 -33
  25. package/dist/custom/files/list-storage-providers.action.js.map +1 -1
  26. package/dist/custom/files/modify-document-section.action.d.ts +19 -0
  27. package/dist/custom/files/modify-document-section.action.d.ts.map +1 -0
  28. package/dist/custom/files/modify-document-section.action.js +85 -0
  29. package/dist/custom/files/modify-document-section.action.js.map +1 -0
  30. package/dist/custom/files/pdf-extractor.action.d.ts +8 -14
  31. package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -1
  32. package/dist/custom/files/pdf-extractor.action.js +89 -91
  33. package/dist/custom/files/pdf-extractor.action.js.map +1 -1
  34. package/dist/custom/files/preview-document.action.d.ts +17 -0
  35. package/dist/custom/files/preview-document.action.d.ts.map +1 -0
  36. package/dist/custom/files/preview-document.action.js +50 -0
  37. package/dist/custom/files/preview-document.action.js.map +1 -0
  38. package/dist/custom/geo/scheduled-geocoding.action.d.ts +135 -0
  39. package/dist/custom/geo/scheduled-geocoding.action.d.ts.map +1 -0
  40. package/dist/custom/geo/scheduled-geocoding.action.js +428 -0
  41. package/dist/custom/geo/scheduled-geocoding.action.js.map +1 -0
  42. package/dist/custom/search/search.action.d.ts +67 -0
  43. package/dist/custom/search/search.action.d.ts.map +1 -0
  44. package/dist/custom/search/search.action.js +211 -0
  45. package/dist/custom/search/search.action.js.map +1 -0
  46. package/dist/custom/utilities/artifact-builder-service.d.ts +139 -0
  47. package/dist/custom/utilities/artifact-builder-service.d.ts.map +1 -0
  48. package/dist/custom/utilities/artifact-builder-service.js +338 -0
  49. package/dist/custom/utilities/artifact-builder-service.js.map +1 -0
  50. package/dist/custom/utilities/base-file-handler.d.ts +25 -3
  51. package/dist/custom/utilities/base-file-handler.d.ts.map +1 -1
  52. package/dist/custom/utilities/base-file-handler.js +81 -28
  53. package/dist/custom/utilities/base-file-handler.js.map +1 -1
  54. package/dist/custom/utilities/docx-renderer.d.ts +61 -0
  55. package/dist/custom/utilities/docx-renderer.d.ts.map +1 -0
  56. package/dist/custom/utilities/docx-renderer.js +409 -0
  57. package/dist/custom/utilities/docx-renderer.js.map +1 -0
  58. package/dist/custom/utilities/pdf-renderer.d.ts +53 -0
  59. package/dist/custom/utilities/pdf-renderer.d.ts.map +1 -0
  60. package/dist/custom/utilities/pdf-renderer.js +315 -0
  61. package/dist/custom/utilities/pdf-renderer.js.map +1 -0
  62. package/dist/custom/utilities/xlsx-renderer.d.ts +120 -0
  63. package/dist/custom/utilities/xlsx-renderer.d.ts.map +1 -0
  64. package/dist/custom/utilities/xlsx-renderer.js +165 -0
  65. package/dist/custom/utilities/xlsx-renderer.js.map +1 -0
  66. package/dist/index.d.ts +2 -2
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +3 -2
  69. package/dist/index.js.map +1 -1
  70. package/package.json +31 -27
  71. package/dist/custom/files/excel-writer.action.d.ts +0 -88
  72. package/dist/custom/files/excel-writer.action.d.ts.map +0 -1
  73. package/dist/custom/files/excel-writer.action.js +0 -326
  74. package/dist/custom/files/excel-writer.action.js.map +0 -1
  75. package/dist/custom/files/pdf-generator.action.d.ts +0 -66
  76. package/dist/custom/files/pdf-generator.action.d.ts.map +0 -1
  77. package/dist/custom/files/pdf-generator.action.js +0 -254
  78. package/dist/custom/files/pdf-generator.action.js.map +0 -1
@@ -0,0 +1,409 @@
1
+ /**
2
+ * DOCX rendering engine extracted from WordGeneratorAction.
3
+ * Used by both the single-shot Word Generator action and the incremental ArtifactBuilderService.
4
+ */
5
+ import { AlignmentType, Document, HeadingLevel, ImageRun, Packer, Paragraph, Table, TableCell, TableRow, TextRun, WidthType, convertInchesToTwip, } from "docx";
6
+ import { Parser } from 'htmlparser2';
7
+ export const DEFAULT_WORD_OPTIONS = {
8
+ pageSize: 'Letter',
9
+ orientation: 'portrait',
10
+ margins: { top: 1, bottom: 1, left: 1, right: 1 },
11
+ defaultFontSize: 24,
12
+ defaultFont: 'Calibri',
13
+ };
14
+ // ── Rendering ─────────────────────────────────────────────────────────────────
15
+ /**
16
+ * Render an array of DocxSection to a DOCX buffer.
17
+ */
18
+ export async function renderDocxFromSections(sections, options) {
19
+ const children = [];
20
+ for (const section of sections) {
21
+ if (section.heading) {
22
+ children.push(buildHeading(section.heading, section.level ?? 1, options));
23
+ }
24
+ for (const item of section.content ?? []) {
25
+ const built = buildContentItem(item, options);
26
+ if (built)
27
+ children.push(...built);
28
+ }
29
+ }
30
+ const doc = new Document({
31
+ sections: [{
32
+ properties: {
33
+ page: {
34
+ size: {
35
+ width: options.pageSize === 'A4' ? 11906 : 12240,
36
+ height: options.pageSize === 'A4' ? 16838 : 15840,
37
+ orientation: options.orientation === 'landscape' ? 'landscape' : 'portrait',
38
+ },
39
+ margin: {
40
+ top: convertInchesToTwip(options.margins.top),
41
+ bottom: convertInchesToTwip(options.margins.bottom),
42
+ left: convertInchesToTwip(options.margins.left),
43
+ right: convertInchesToTwip(options.margins.right),
44
+ },
45
+ },
46
+ },
47
+ children,
48
+ }],
49
+ });
50
+ return Packer.toBuffer(doc);
51
+ }
52
+ // ── Element builders ──────────────────────────────────────────────────────────
53
+ function buildHeading(text, level, options) {
54
+ const levelMap = {
55
+ 1: HeadingLevel.HEADING_1,
56
+ 2: HeadingLevel.HEADING_2,
57
+ 3: HeadingLevel.HEADING_3,
58
+ 4: HeadingLevel.HEADING_4,
59
+ 5: HeadingLevel.HEADING_5,
60
+ 6: HeadingLevel.HEADING_6,
61
+ };
62
+ return new Paragraph({
63
+ heading: levelMap[level] ?? HeadingLevel.HEADING_1,
64
+ children: [new TextRun({ text, font: options.defaultFont })],
65
+ });
66
+ }
67
+ function buildContentItem(item, options) {
68
+ switch (item.type) {
69
+ case 'paragraph': return [buildParagraph(item, options)];
70
+ case 'list': return buildList(item, options);
71
+ case 'table': return [buildTable(item, options)];
72
+ case 'image': return buildImage(item, options);
73
+ default: return null;
74
+ }
75
+ }
76
+ function buildParagraph(item, options) {
77
+ return new Paragraph({
78
+ alignment: resolveAlignment(item.align),
79
+ children: [new TextRun({
80
+ text: item.text,
81
+ bold: item.bold,
82
+ italics: item.italic,
83
+ font: options.defaultFont,
84
+ size: options.defaultFontSize,
85
+ })],
86
+ });
87
+ }
88
+ function buildList(item, options) {
89
+ return item.items.map(text => new Paragraph({
90
+ numbering: item.ordered
91
+ ? { reference: 'ordered-list', level: 0 }
92
+ : undefined,
93
+ bullet: item.ordered ? undefined : { level: 0 },
94
+ children: [new TextRun({
95
+ text,
96
+ font: options.defaultFont,
97
+ size: options.defaultFontSize,
98
+ })],
99
+ }));
100
+ }
101
+ function buildTable(item, options) {
102
+ const colCount = Math.max(item.headers.length, ...item.rows.map(r => r.length));
103
+ const headerRow = new TableRow({
104
+ tableHeader: true,
105
+ children: Array.from({ length: colCount }, (_, c) => new TableCell({
106
+ children: [new Paragraph({
107
+ children: [new TextRun({
108
+ text: item.headers[c] ?? '',
109
+ bold: true,
110
+ font: options.defaultFont,
111
+ size: options.defaultFontSize,
112
+ })],
113
+ })],
114
+ })),
115
+ });
116
+ const dataRows = item.rows.map(row => new TableRow({
117
+ children: Array.from({ length: colCount }, (_, c) => new TableCell({
118
+ children: [new Paragraph({
119
+ children: [new TextRun({
120
+ text: row[c] ?? '',
121
+ font: options.defaultFont,
122
+ size: options.defaultFontSize,
123
+ })],
124
+ })],
125
+ })),
126
+ }));
127
+ return new Table({
128
+ width: { size: 100, type: WidthType.PERCENTAGE },
129
+ rows: [headerRow, ...dataRows],
130
+ });
131
+ }
132
+ function buildImage(item, options) {
133
+ if (!item.url)
134
+ return null;
135
+ const dataUri = /^data:image\/(png|jpe?g|gif|webp);base64,(.+)$/i.exec(item.url);
136
+ if (!dataUri)
137
+ return null;
138
+ try {
139
+ const imageBuffer = Buffer.from(dataUri[2], 'base64');
140
+ const width = item.width ?? 400;
141
+ const height = item.height ?? Math.round(width * 0.6);
142
+ const results = [
143
+ new Paragraph({
144
+ children: [new ImageRun({
145
+ data: imageBuffer,
146
+ transformation: { width, height },
147
+ type: dataUri[1].replace('jpeg', 'jpg').replace('webp', 'png'),
148
+ })],
149
+ alignment: AlignmentType.CENTER,
150
+ }),
151
+ ];
152
+ if (item.caption) {
153
+ results.push(new Paragraph({
154
+ alignment: AlignmentType.CENTER,
155
+ children: [new TextRun({
156
+ text: item.caption,
157
+ italics: true,
158
+ font: options.defaultFont,
159
+ size: options.defaultFontSize - 4,
160
+ })],
161
+ }));
162
+ }
163
+ return results;
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ }
169
+ function resolveAlignment(align) {
170
+ switch ((align ?? '').toLowerCase()) {
171
+ case 'center': return AlignmentType.CENTER;
172
+ case 'right': return AlignmentType.RIGHT;
173
+ case 'justify': return AlignmentType.JUSTIFIED;
174
+ default: return AlignmentType.LEFT;
175
+ }
176
+ }
177
+ // ── Section normalizers ───────────────────────────────────────────────────────
178
+ /**
179
+ * Accepts both formats agents may produce:
180
+ *
181
+ * Structured (canonical):
182
+ * [{ heading: "Title", level: 1, content: [{ type: "paragraph", text: "..." }] }]
183
+ *
184
+ * Flat (what most LLM agents naturally emit):
185
+ * [{ type: "heading", level: 1, text: "Title" }, { type: "paragraph", text: "..." }]
186
+ */
187
+ export function normalizeSections(items) {
188
+ if (items.length === 0)
189
+ return [];
190
+ const isStructured = items.some(i => 'heading' in i || 'content' in i);
191
+ if (isStructured) {
192
+ return items.map(i => normalizeStructuredSection(i));
193
+ }
194
+ return normalizeFlatItems(items);
195
+ }
196
+ function normalizeStructuredSection(raw) {
197
+ const section = {};
198
+ if (typeof raw['heading'] === 'string')
199
+ section.heading = raw['heading'];
200
+ if (typeof raw['level'] === 'number')
201
+ section.level = raw['level'];
202
+ if (Array.isArray(raw['content'])) {
203
+ section.content = raw['content'].map(normalizeContentItem);
204
+ }
205
+ return section;
206
+ }
207
+ function normalizeFlatItems(items) {
208
+ const sections = [];
209
+ let current = { content: [] };
210
+ for (const item of items) {
211
+ if (item['type'] === 'heading') {
212
+ if (current.heading !== undefined || (current.content?.length ?? 0) > 0) {
213
+ sections.push(current);
214
+ }
215
+ current = {
216
+ heading: String(item['text'] ?? item['content'] ?? item['heading'] ?? ''),
217
+ level: typeof item['level'] === 'number' ? item['level'] : 1,
218
+ content: [],
219
+ };
220
+ }
221
+ else {
222
+ current.content = current.content ?? [];
223
+ current.content.push(normalizeContentItem(item));
224
+ }
225
+ }
226
+ if (current.heading !== undefined || (current.content?.length ?? 0) > 0) {
227
+ sections.push(current);
228
+ }
229
+ return sections;
230
+ }
231
+ function normalizeContentItem(raw) {
232
+ const type = String(raw['type'] ?? 'paragraph');
233
+ if (type === 'table')
234
+ return normalizeTable(raw);
235
+ if (type === 'list') {
236
+ return {
237
+ type: 'list',
238
+ items: Array.isArray(raw['items']) ? raw['items'] : [],
239
+ ordered: Boolean(raw['ordered']),
240
+ };
241
+ }
242
+ if (type === 'image') {
243
+ return {
244
+ type: 'image',
245
+ url: String(raw['url'] ?? raw['src'] ?? ''),
246
+ width: typeof raw['width'] === 'number' ? raw['width'] : undefined,
247
+ height: typeof raw['height'] === 'number' ? raw['height'] : undefined,
248
+ caption: typeof raw['caption'] === 'string' ? raw['caption'] : undefined,
249
+ };
250
+ }
251
+ return {
252
+ type: 'paragraph',
253
+ text: String(raw['text'] ?? raw['content'] ?? ''),
254
+ bold: Boolean(raw['bold']),
255
+ italic: Boolean(raw['italic']),
256
+ align: typeof raw['align'] === 'string' ? raw['align'] : undefined,
257
+ };
258
+ }
259
+ function normalizeTable(raw) {
260
+ const rawRows = Array.isArray(raw['rows']) ? raw['rows'] : [];
261
+ let headers = Array.isArray(raw['headers'])
262
+ ? raw['headers']
263
+ : Array.isArray(raw['columns']) ? raw['columns'] : [];
264
+ let rows = rawRows;
265
+ if (headers.length === 0 && rawRows.length > 0) {
266
+ headers = rawRows[0];
267
+ rows = rawRows.slice(1);
268
+ }
269
+ return { type: 'table', headers, rows };
270
+ }
271
+ /**
272
+ * Lightweight HTML → structured sections converter using htmlparser2.
273
+ */
274
+ export function htmlToSections(html) {
275
+ const sections = [];
276
+ let currentSection = { content: [] };
277
+ const tagStack = [];
278
+ let boldDepth = 0;
279
+ let italicDepth = 0;
280
+ let inParagraph = false;
281
+ let paragraphText = '';
282
+ let inListItem = false;
283
+ let listItemText = '';
284
+ let listItems = [];
285
+ let listOrdered = false;
286
+ let inCell = false;
287
+ let cellText = '';
288
+ let currentRow = [];
289
+ let tableHeaders = [];
290
+ let tableRows = [];
291
+ let inThead = false;
292
+ let inTable = false;
293
+ const flushSection = () => {
294
+ if (currentSection.heading || (currentSection.content?.length ?? 0) > 0) {
295
+ sections.push(currentSection);
296
+ }
297
+ currentSection = { content: [] };
298
+ };
299
+ const parser = new Parser({
300
+ onopentag(name) {
301
+ tagStack.push(name);
302
+ if (/^h[1-6]$/.test(name)) {
303
+ flushSection();
304
+ currentSection.level = parseInt(name[1]);
305
+ currentSection.heading = '';
306
+ }
307
+ else if (name === 'p') {
308
+ inParagraph = true;
309
+ paragraphText = '';
310
+ }
311
+ else if (name === 'strong' || name === 'b') {
312
+ boldDepth++;
313
+ }
314
+ else if (name === 'em' || name === 'i') {
315
+ italicDepth++;
316
+ }
317
+ else if (name === 'ul' || name === 'ol') {
318
+ listItems = [];
319
+ listOrdered = name === 'ol';
320
+ }
321
+ else if (name === 'li') {
322
+ inListItem = true;
323
+ listItemText = '';
324
+ }
325
+ else if (name === 'table') {
326
+ inTable = true;
327
+ tableHeaders = [];
328
+ tableRows = [];
329
+ }
330
+ else if (name === 'thead') {
331
+ inThead = true;
332
+ }
333
+ else if (name === 'th' || name === 'td') {
334
+ inCell = true;
335
+ cellText = '';
336
+ }
337
+ else if (name === 'tr') {
338
+ currentRow = [];
339
+ }
340
+ },
341
+ ontext(text) {
342
+ const t = text.replace(/\s+/g, ' ');
343
+ if (inCell) {
344
+ cellText += t;
345
+ }
346
+ else if (inListItem) {
347
+ listItemText += t;
348
+ }
349
+ else if (inParagraph) {
350
+ paragraphText += t;
351
+ }
352
+ else if (currentSection.heading !== undefined && tagStack.some(tag => /^h[1-6]$/.test(tag))) {
353
+ currentSection.heading = (currentSection.heading ?? '') + t;
354
+ }
355
+ },
356
+ onclosetag(name) {
357
+ tagStack.pop();
358
+ if (/^h[1-6]$/.test(name)) { /* heading text already accumulated */ }
359
+ else if (name === 'p' && inParagraph) {
360
+ const text = paragraphText.trim();
361
+ if (text)
362
+ currentSection.content.push({ type: 'paragraph', text, bold: boldDepth > 0, italic: italicDepth > 0 });
363
+ inParagraph = false;
364
+ paragraphText = '';
365
+ }
366
+ else if (name === 'strong' || name === 'b') {
367
+ boldDepth = Math.max(0, boldDepth - 1);
368
+ }
369
+ else if (name === 'em' || name === 'i') {
370
+ italicDepth = Math.max(0, italicDepth - 1);
371
+ }
372
+ else if (name === 'li' && inListItem) {
373
+ if (listItemText.trim())
374
+ listItems.push(listItemText.trim());
375
+ inListItem = false;
376
+ listItemText = '';
377
+ }
378
+ else if (name === 'ul' || name === 'ol') {
379
+ if (listItems.length)
380
+ currentSection.content.push({ type: 'list', items: listItems, ordered: listOrdered });
381
+ listItems = [];
382
+ }
383
+ else if (name === 'th' || name === 'td') {
384
+ currentRow.push(cellText.trim());
385
+ inCell = false;
386
+ cellText = '';
387
+ }
388
+ else if (name === 'tr') {
389
+ if (inThead)
390
+ tableHeaders = currentRow;
391
+ else
392
+ tableRows.push(currentRow);
393
+ currentRow = [];
394
+ }
395
+ else if (name === 'thead') {
396
+ inThead = false;
397
+ }
398
+ else if (name === 'table' && inTable) {
399
+ currentSection.content.push({ type: 'table', headers: tableHeaders, rows: tableRows });
400
+ inTable = false;
401
+ }
402
+ }
403
+ }, { decodeEntities: true });
404
+ parser.write(html);
405
+ parser.end();
406
+ flushSection();
407
+ return sections;
408
+ }
409
+ //# sourceMappingURL=docx-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx-renderer.js","sourceRoot":"","sources":["../../../src/custom/utilities/docx-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface PDFOptions {
2
+ margin: {
3
+ top: number;
4
+ bottom: number;
5
+ left: number;
6
+ right: number;
7
+ };
8
+ fontSize: number;
9
+ font: string;
10
+ orientation: 'portrait' | 'landscape';
11
+ size: string;
12
+ }
13
+ export type PDFNodeType = {
14
+ type: 'heading';
15
+ level: 1 | 2 | 3 | 4 | 5 | 6;
16
+ text: string;
17
+ } | {
18
+ type: 'paragraph';
19
+ text: string;
20
+ bold?: boolean;
21
+ italic?: boolean;
22
+ } | {
23
+ type: 'list';
24
+ items: string[];
25
+ ordered: boolean;
26
+ } | {
27
+ type: 'table';
28
+ headers: string[];
29
+ rows: string[][];
30
+ } | {
31
+ type: 'image';
32
+ src: string;
33
+ alt?: string;
34
+ } | {
35
+ type: 'hr';
36
+ } | {
37
+ type: 'br';
38
+ };
39
+ export declare const DEFAULT_PDF_OPTIONS: PDFOptions;
40
+ /**
41
+ * Render an array of PDFNodeType nodes to a PDF buffer using pdfkit.
42
+ */
43
+ export declare function renderPDFFromNodes(nodes: PDFNodeType[], options: PDFOptions): Promise<Buffer>;
44
+ /**
45
+ * Render an HTML string to a PDF buffer.
46
+ * If contentType is 'markdown', converts to HTML first using the provided marked function.
47
+ */
48
+ export declare function renderPDFFromHTML(htmlContent: string, options: PDFOptions): Promise<Buffer>;
49
+ /**
50
+ * Parse an HTML string into a flat list of renderable nodes using htmlparser2.
51
+ */
52
+ export declare function parseHTML(html: string): PDFNodeType[];
53
+ //# sourceMappingURL=pdf-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-renderer.d.ts","sourceRoot":"","sources":["../../../src/custom/utilities/pdf-renderer.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,GAAG,WAAW,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErB,eAAO,MAAM,mBAAmB,EAAE,UAMjC,CAAC;AAIF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB7F;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AA6HD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CA2IrD"}