@epam/ai-dial-quotations 1.1.0-dev.488 → 1.1.0-dev.491
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +102 -62
- package/package.json +2 -2
- package/utils/annotation.d.ts +7 -4
- package/utils/annotation.d.ts.map +1 -1
package/index.js
CHANGED
|
@@ -148,53 +148,93 @@ var w = {
|
|
|
148
148
|
borderWidth: "2px",
|
|
149
149
|
opacity: .5,
|
|
150
150
|
hoverOpacity: .5
|
|
151
|
-
}, N = (e) =>
|
|
151
|
+
}, N = (e) => {
|
|
152
|
+
if (typeof e != "object" || !e) return;
|
|
153
|
+
let t = e, { lt: n, wh: r } = t;
|
|
154
|
+
if (Array.isArray(n) && Array.isArray(r) && n.length >= 2 && r.length >= 2) {
|
|
155
|
+
let [e, t] = n, [i, a] = r;
|
|
156
|
+
if (typeof e == "number" && typeof t == "number" && typeof i == "number" && typeof a == "number") return {
|
|
157
|
+
x1: e,
|
|
158
|
+
y1: t,
|
|
159
|
+
x2: e + i,
|
|
160
|
+
y2: t + a
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
let { left: i, top: a, width: o, height: s } = t;
|
|
164
|
+
if (typeof i == "number" && typeof a == "number" && typeof o == "number" && typeof s == "number") return {
|
|
165
|
+
x1: i,
|
|
166
|
+
y1: a,
|
|
167
|
+
x2: i + o,
|
|
168
|
+
y2: a + s
|
|
169
|
+
};
|
|
170
|
+
}, P = (e) => {
|
|
171
|
+
if (!r(e)) return;
|
|
172
|
+
let t = e, n;
|
|
173
|
+
if (t.type === "pdf_bbox") {
|
|
174
|
+
let { x1: e, y1: r, x2: i, y2: a } = t;
|
|
175
|
+
typeof e == "number" && typeof r == "number" && typeof i == "number" && typeof a == "number" && (n = {
|
|
176
|
+
x1: e,
|
|
177
|
+
y1: r,
|
|
178
|
+
x2: i,
|
|
179
|
+
y2: a
|
|
180
|
+
});
|
|
181
|
+
} else t.type === "pdf_region" && (n = N(t.bbox));
|
|
182
|
+
if (n == null) return;
|
|
183
|
+
let i = t.page;
|
|
184
|
+
if (!(typeof i != "number" || !Number.isInteger(i) || i < 1) && [
|
|
185
|
+
n.x1,
|
|
186
|
+
n.y1,
|
|
187
|
+
n.x2,
|
|
188
|
+
n.y2
|
|
189
|
+
].every(Number.isFinite)) return {
|
|
190
|
+
page: i,
|
|
191
|
+
x1: n.x1,
|
|
192
|
+
y1: n.y1,
|
|
193
|
+
x2: n.x2,
|
|
194
|
+
y2: n.y2
|
|
195
|
+
};
|
|
196
|
+
}, ee = (e) => e.flatMap((e, t) => {
|
|
152
197
|
let n = e.body?.selector;
|
|
153
198
|
if (n == null) return [];
|
|
154
199
|
let i = (Array.isArray(n) ? n : [n]).flatMap((e) => {
|
|
155
|
-
if (!r(e)
|
|
156
|
-
let
|
|
157
|
-
return
|
|
158
|
-
n,
|
|
159
|
-
i,
|
|
160
|
-
a,
|
|
161
|
-
o
|
|
162
|
-
].every(Number.isFinite) ? [] : [{
|
|
163
|
-
page: t,
|
|
164
|
-
x1: n,
|
|
165
|
-
y1: i,
|
|
166
|
-
x2: a,
|
|
167
|
-
y2: o
|
|
168
|
-
}];
|
|
200
|
+
if (!r(e)) return [];
|
|
201
|
+
let t = P(e);
|
|
202
|
+
return t == null ? [] : [t];
|
|
169
203
|
});
|
|
170
204
|
return i.length === 0 ? [] : [{
|
|
171
205
|
id: String(e.index ?? t),
|
|
172
206
|
bboxes: i,
|
|
173
207
|
style: M
|
|
174
208
|
}];
|
|
175
|
-
}),
|
|
209
|
+
}), te = (e, t) => String(e.index ?? t), ne = (e) => {
|
|
176
210
|
let t = e.body?.selector;
|
|
177
|
-
if (t
|
|
178
|
-
|
|
211
|
+
if (t == null) return;
|
|
212
|
+
let n = Array.isArray(t) ? t : [t];
|
|
213
|
+
for (let e of n) {
|
|
214
|
+
if (!r(e)) continue;
|
|
215
|
+
let t = P(e);
|
|
216
|
+
if (t != null) return t.page;
|
|
217
|
+
}
|
|
218
|
+
}, F = (e) => {
|
|
179
219
|
let t = e.custom_content?.annotations;
|
|
180
220
|
if (t?.length) return t.filter((e) => e != null && e.body?.source?.attachment?.url != null).map(a);
|
|
181
221
|
let n = e.custom_fields;
|
|
182
222
|
if (typeof n != "object" || !n) return [];
|
|
183
223
|
let r = n.annotations;
|
|
184
224
|
return !Array.isArray(r) || r.length === 0 ? [] : o(r, e.custom_content?.attachments ?? []).map(a);
|
|
185
|
-
},
|
|
225
|
+
}, I = (e) => {
|
|
186
226
|
if (e.type !== "docx_text_range") return !1;
|
|
187
227
|
let t = e;
|
|
188
228
|
return typeof t.story == "string" && Array.isArray(t.path) && t.path.every((e) => typeof e == "number") && typeof t.start == "number" && typeof t.end == "number" && typeof t.text == "string";
|
|
189
|
-
},
|
|
229
|
+
}, L = (e) => {
|
|
190
230
|
if (e.type !== "pptx_text_range") return !1;
|
|
191
231
|
let t = e;
|
|
192
232
|
return typeof t.slide == "number" && typeof t.shape_id == "string" && typeof t.start == "number" && typeof t.end == "number" && typeof t.text == "string";
|
|
193
|
-
},
|
|
233
|
+
}, R = (e) => typeof e == "object" && !!e && typeof e.row == "number" && typeof e.col == "number", z = (e) => {
|
|
194
234
|
if (e.type !== "excel_rc_range") return !1;
|
|
195
235
|
let t = e;
|
|
196
|
-
return typeof t.sheet == "string" &&
|
|
197
|
-
},
|
|
236
|
+
return typeof t.sheet == "string" && R(t.start) && (t.end === void 0 || t.end === null || R(t.end));
|
|
237
|
+
}, re = (e) => {
|
|
198
238
|
let { story: t, path: n, start: r, end: i, text: a } = e;
|
|
199
239
|
if (!(!n.every((e) => Number.isInteger(e)) || !Number.isInteger(r) || !Number.isInteger(i) || r < 0 || i < r)) return {
|
|
200
240
|
type: "docx_text_range",
|
|
@@ -204,7 +244,7 @@ var w = {
|
|
|
204
244
|
endExclusive: i,
|
|
205
245
|
text: a
|
|
206
246
|
};
|
|
207
|
-
},
|
|
247
|
+
}, ie = (e) => {
|
|
208
248
|
let { slide: t, shape_id: n, start: r, end: i, text: a } = e;
|
|
209
249
|
if (!(!Number.isInteger(t) || t < 1 || !Number.isInteger(r) || !Number.isInteger(i) || r < 0 || i < r)) return {
|
|
210
250
|
type: "pptx_text_range",
|
|
@@ -214,7 +254,7 @@ var w = {
|
|
|
214
254
|
endExclusive: i,
|
|
215
255
|
text: a
|
|
216
256
|
};
|
|
217
|
-
},
|
|
257
|
+
}, ae = (e) => {
|
|
218
258
|
let { sheet: t, start: n, end: r } = e;
|
|
219
259
|
if (!(t.length === 0 || !Number.isInteger(n.row) || !Number.isInteger(n.col) || n.row < 1 || n.col < 1)) {
|
|
220
260
|
if (r == null) return {
|
|
@@ -229,29 +269,29 @@ var w = {
|
|
|
229
269
|
end: r
|
|
230
270
|
};
|
|
231
271
|
}
|
|
232
|
-
},
|
|
272
|
+
}, oe = (e) => {
|
|
233
273
|
let t = e.body?.selector;
|
|
234
274
|
return t == null ? [] : (Array.isArray(t) ? t : [t]).flatMap((e) => {
|
|
235
275
|
if (!r(e)) return [];
|
|
236
|
-
if (F(e)) {
|
|
237
|
-
let t = ne(e);
|
|
238
|
-
return t ? [t] : [];
|
|
239
|
-
}
|
|
240
276
|
if (I(e)) {
|
|
241
277
|
let t = re(e);
|
|
242
278
|
return t ? [t] : [];
|
|
243
279
|
}
|
|
244
|
-
if (
|
|
280
|
+
if (L(e)) {
|
|
245
281
|
let t = ie(e);
|
|
246
282
|
return t ? [t] : [];
|
|
247
283
|
}
|
|
284
|
+
if (z(e)) {
|
|
285
|
+
let t = ae(e);
|
|
286
|
+
return t ? [t] : [];
|
|
287
|
+
}
|
|
248
288
|
return [];
|
|
249
289
|
});
|
|
250
|
-
},
|
|
290
|
+
}, se = (e, t) => S(() => t ? [] : F(e), [t, e]), ce = {
|
|
251
291
|
openGroupKey: null,
|
|
252
292
|
activeIndexByGroup: {}
|
|
253
|
-
},
|
|
254
|
-
let [e, t] = C(
|
|
293
|
+
}, le = () => {
|
|
294
|
+
let [e, t] = C(ce), n = b((e) => {
|
|
255
295
|
t((t) => ({
|
|
256
296
|
...t,
|
|
257
297
|
openGroupKey: e
|
|
@@ -282,7 +322,7 @@ var w = {
|
|
|
282
322
|
i,
|
|
283
323
|
e
|
|
284
324
|
]);
|
|
285
|
-
},
|
|
325
|
+
}, ue = /⟦C(\d+)⟧/g, B = (e, t) => {
|
|
286
326
|
let n = t.map((e, t) => ({
|
|
287
327
|
g: e,
|
|
288
328
|
idx: t
|
|
@@ -295,9 +335,9 @@ var w = {
|
|
|
295
335
|
}).sort((e, t) => t.pos - e.pos), r = e;
|
|
296
336
|
for (let { idx: e, pos: t } of n) r = `${r.slice(0, t)}⟦C${e}⟧${r.slice(t)}`;
|
|
297
337
|
return r;
|
|
298
|
-
},
|
|
338
|
+
}, V = /<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>/g, H = /^<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>$/, de = /<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>|<\/?cit\b[^>]*>|<\/?cit\b[^>]*$/gi, fe = (e) => e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), U = (e) => e.replace(de, (e) => H.test(e) ? e : fe(e)), W = (e) => U(e).replace(V, ""), G = (e, t) => {
|
|
299
339
|
if (typeof e == "string") {
|
|
300
|
-
let n = e.split(
|
|
340
|
+
let n = e.split(ue);
|
|
301
341
|
if (n.length === 1) return e;
|
|
302
342
|
let r = [];
|
|
303
343
|
return n.forEach((e, n) => {
|
|
@@ -305,18 +345,18 @@ var w = {
|
|
|
305
345
|
}), r;
|
|
306
346
|
}
|
|
307
347
|
return Array.isArray(e) ? e.flatMap((e) => {
|
|
308
|
-
let n =
|
|
348
|
+
let n = G(e, t);
|
|
309
349
|
return Array.isArray(n) ? n : [n];
|
|
310
350
|
}) : e;
|
|
311
|
-
},
|
|
351
|
+
}, pe = (e) => {
|
|
312
352
|
let t = e.primaryAnnotation.target?.selector;
|
|
313
353
|
return t?.type === "html_tag" ? t.id : void 0;
|
|
314
|
-
},
|
|
354
|
+
}, me = (e, t) => /* @__PURE__ */ v(g, { children: [
|
|
315
355
|
e == null ? "<cit>" : `<cit data-id="${e}">`,
|
|
316
356
|
t,
|
|
317
357
|
"</cit>"
|
|
318
|
-
] }),
|
|
319
|
-
let { onPreview: o, onOpenInBrowser: s, buildLabels: c } = n, l = S(() => r ?
|
|
358
|
+
] }), he = (e, t, n, r = !1, a = !1) => {
|
|
359
|
+
let { onPreview: o, onOpenInBrowser: s, buildLabels: c } = n, l = S(() => r ? W(e) : U(t.length > 0 ? B(e, t) : e), [
|
|
320
360
|
e,
|
|
321
361
|
t,
|
|
322
362
|
r
|
|
@@ -326,7 +366,7 @@ var w = {
|
|
|
326
366
|
markdownComponents: S(() => {
|
|
327
367
|
let e = /* @__PURE__ */ new Map();
|
|
328
368
|
for (let n of t) {
|
|
329
|
-
let t =
|
|
369
|
+
let t = pe(n);
|
|
330
370
|
t != null && e.set(t, n);
|
|
331
371
|
}
|
|
332
372
|
let n = (e) => {
|
|
@@ -343,19 +383,19 @@ var w = {
|
|
|
343
383
|
return r ? n(r) : null;
|
|
344
384
|
}, l = { cit: (t) => {
|
|
345
385
|
let r = t["data-id"] == null ? void 0 : e.get(t["data-id"]);
|
|
346
|
-
return r ? n(r) :
|
|
386
|
+
return r ? n(r) : me(t["data-id"], t.children);
|
|
347
387
|
} };
|
|
348
388
|
return t.length === 0 ? u ? l : {} : {
|
|
349
389
|
...l,
|
|
350
390
|
p: ({ children: e, ...t }) => /* @__PURE__ */ _("p", {
|
|
351
391
|
...t,
|
|
352
392
|
className: i(a ? "dial-small-paragraph-text" : "dial-body-paragraph-text", "mb-3 [overflow-wrap:anywhere] [text-wrap:pretty] last:mb-0"),
|
|
353
|
-
children:
|
|
393
|
+
children: G(e, r)
|
|
354
394
|
}),
|
|
355
395
|
li: ({ children: e, ...t }) => /* @__PURE__ */ _("li", {
|
|
356
396
|
...t,
|
|
357
397
|
className: "mb-1.5 last:mb-0",
|
|
358
|
-
children:
|
|
398
|
+
children: G(e, r)
|
|
359
399
|
})
|
|
360
400
|
};
|
|
361
401
|
}, [
|
|
@@ -367,42 +407,42 @@ var w = {
|
|
|
367
407
|
u
|
|
368
408
|
])
|
|
369
409
|
};
|
|
370
|
-
},
|
|
410
|
+
}, K = (e) => {
|
|
371
411
|
try {
|
|
372
412
|
return decodeURIComponent(e);
|
|
373
413
|
} catch {
|
|
374
414
|
return e;
|
|
375
415
|
}
|
|
376
|
-
},
|
|
416
|
+
}, ge = (e) => {
|
|
377
417
|
try {
|
|
378
418
|
let t = new URL(e);
|
|
379
|
-
return t.pathname.split("/").map((e) =>
|
|
419
|
+
return t.pathname.split("/").map((e) => K(e)).filter(Boolean).at(-1) ?? t.hostname;
|
|
380
420
|
} catch {
|
|
381
|
-
return e.split("/").map((e) =>
|
|
421
|
+
return e.split("/").map((e) => K(e)).filter(Boolean).at(-1) ?? e;
|
|
382
422
|
}
|
|
383
|
-
},
|
|
423
|
+
}, q = (e, t) => e.body?.source?.attachment?.title ?? ge(t), J = (e) => {
|
|
384
424
|
let t = e.target?.selector;
|
|
385
425
|
return t?.type === "html_tag" ? t : void 0;
|
|
386
|
-
},
|
|
426
|
+
}, _e = (e) => J(e) != null, Y = (e) => {
|
|
387
427
|
let t = /* @__PURE__ */ new Map();
|
|
388
428
|
for (let n of e) {
|
|
389
|
-
if (
|
|
429
|
+
if (_e(n)) continue;
|
|
390
430
|
let e = n.body?.source?.attachment?.url;
|
|
391
431
|
if (e == null) continue;
|
|
392
432
|
let r = t.get(e);
|
|
393
433
|
r ? r.annotations.push(n) : t.set(e, {
|
|
394
434
|
groupKey: e,
|
|
395
435
|
sourceUrl: e,
|
|
396
|
-
sourceName:
|
|
436
|
+
sourceName: q(n, e),
|
|
397
437
|
annotations: [n],
|
|
398
438
|
primaryAnnotation: n
|
|
399
439
|
});
|
|
400
440
|
}
|
|
401
441
|
return Array.from(t.values());
|
|
402
|
-
},
|
|
442
|
+
}, X = (e) => {
|
|
403
443
|
let t = /* @__PURE__ */ new Map();
|
|
404
444
|
for (let n of e) {
|
|
405
|
-
let e =
|
|
445
|
+
let e = J(n)?.id;
|
|
406
446
|
if (e == null) continue;
|
|
407
447
|
let r = n.body?.source?.attachment?.url;
|
|
408
448
|
if (r == null) continue;
|
|
@@ -410,22 +450,22 @@ var w = {
|
|
|
410
450
|
i ? i.annotations.push(n) : t.set(e, {
|
|
411
451
|
groupKey: `cit:${e}`,
|
|
412
452
|
sourceUrl: r,
|
|
413
|
-
sourceName:
|
|
453
|
+
sourceName: q(n, r),
|
|
414
454
|
annotations: [n],
|
|
415
455
|
primaryAnnotation: n
|
|
416
456
|
});
|
|
417
457
|
}
|
|
418
458
|
return Array.from(t.values());
|
|
419
|
-
},
|
|
459
|
+
}, ve = (e) => [...X(e), ...Y(e)], Z = (e, t) => {
|
|
420
460
|
let n = e.body?.source?.attachment?.url;
|
|
421
461
|
return n == null || !t.includes(e) ? [e] : t.filter((e) => e.body?.source?.attachment?.url === n);
|
|
422
|
-
}, Q = (e) => e.url == null && e.reference_url != null,
|
|
423
|
-
let t =
|
|
462
|
+
}, Q = (e) => e.url == null && e.reference_url != null, ye = /^(.*\.pdf)(?:#page=(\d+))?$/i, $ = (e) => {
|
|
463
|
+
let t = ye.exec(e);
|
|
424
464
|
return t ? {
|
|
425
465
|
baseUrl: t[1],
|
|
426
466
|
page: t[2] == null ? null : Number(t[2])
|
|
427
467
|
} : null;
|
|
428
|
-
},
|
|
468
|
+
}, be = (t) => Y((t ?? []).filter(Q).map((t) => {
|
|
429
469
|
let n = t.reference_url, r = $(n) != null;
|
|
430
470
|
return { body: {
|
|
431
471
|
quote: t.data,
|
|
@@ -440,4 +480,4 @@ var w = {
|
|
|
440
480
|
} };
|
|
441
481
|
}));
|
|
442
482
|
//#endregion
|
|
443
|
-
export { T as CitationCard, O as CitationCardProvider, j as CitationDropdown, E as CitationMarker,
|
|
483
|
+
export { T as CitationCard, O as CitationCardProvider, j as CitationDropdown, E as CitationMarker, te as annotationHighlightId, oe as annotationToOfficeHighlightLocations, ee as annotationsToPdfHighlights, Z as gatherSameSourceAnnotations, ne as getAnnotationPdfPage, be as getReferenceAttachmentGroups, ve as groupAnnotations, X as groupAnnotationsByCitId, Y as groupAnnotationsBySource, B as injectCitationSentinels, I as isDocxRangeSelector, z as isExcelRcRangeSelector, L as isPptxRangeSelector, Q as isReferenceOnlyAttachment, $ as parsePdfPageReference, G as replaceSentinelsInChildren, F as resolveMessageAnnotations, W as stripCitTagsWhileStreaming, se as useAnnotations, le as useCitationCard, k as useCitationCardContext, he as useCitationMarkdownComponents };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-quotations",
|
|
3
3
|
"description": "Citation and annotation components, hooks, and utilities for AI DIAL conversations",
|
|
4
|
-
"version": "1.1.0-dev.
|
|
4
|
+
"version": "1.1.0-dev.491",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"react": "^19.2.8",
|
|
26
|
-
"@epam/ai-dial-chat-shared": "1.1.0-dev.
|
|
26
|
+
"@epam/ai-dial-chat-shared": "1.1.0-dev.491",
|
|
27
27
|
"@epam/ai-dial-ui-kit": "^0.14.2"
|
|
28
28
|
},
|
|
29
29
|
"repository": {
|
package/utils/annotation.d.ts
CHANGED
|
@@ -3,16 +3,19 @@ import { InputHighlightData } from '@epam/pdf-highlighter-kit';
|
|
|
3
3
|
import { OfficeHighlightLocation } from '../models/office-highlight';
|
|
4
4
|
/**
|
|
5
5
|
* Maps a list of annotations to `InputHighlightData` entries for the PDF viewer.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Recognizes `pdf_bbox` selectors and both `pdf_region` coordinate forms
|
|
7
|
+
* (`lt`/`wh` and legacy `left`/`top`/`width`/`height`); annotations whose
|
|
8
|
+
* `body.selector` contains none of these are skipped. The highlight `id` is
|
|
9
|
+
* `annotation.index` when present, otherwise the position in the input array.
|
|
9
10
|
*/
|
|
10
11
|
export declare const annotationsToPdfHighlights: (annotations: Annotation[]) => InputHighlightData[];
|
|
11
12
|
/** Returns a stable string ID for a given annotation, matching the IDs produced by `annotationsToPdfHighlights`. */
|
|
12
13
|
export declare const annotationHighlightId: (annotation: Annotation, fallbackIndex: number) => string;
|
|
13
14
|
/**
|
|
14
15
|
* Returns the first positive integer PDF page in the annotation's body selectors,
|
|
15
|
-
* or `undefined` when none exists.
|
|
16
|
+
* or `undefined` when none exists. Recognizes `pdf_bbox` selectors and both
|
|
17
|
+
* `pdf_region` coordinate forms; a page is returned only for a selector whose
|
|
18
|
+
* geometry also validates (see `readPdfSelectorBox`).
|
|
16
19
|
*/
|
|
17
20
|
export declare const getAnnotationPdfPage: (annotation: Annotation) => number | undefined;
|
|
18
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../../src/utils/annotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../../src/utils/annotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAqG1E;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,aAAa,UAAU,EAAE,KACxB,kBAAkB,EAoBjB,CAAC;AAEL,oHAAoH;AACpH,eAAO,MAAM,qBAAqB,GAChC,YAAY,UAAU,EACtB,eAAe,MAAM,KACpB,MAAmD,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,UAAU,KACrB,MAAM,GAAG,SAWX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,KAAG,UAAU,EAoBtE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,iBAWd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,iBAUd,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,oBAQd,CAAC;AA8FF;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,GAC/C,YAAY,UAAU,KACrB,uBAAuB,EAsBzB,CAAC"}
|