ooxml-core 1.8.2 → 1.8.4
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/dist/automation/index.cjs +7237 -7188
- package/dist/automation/index.mjs +7237 -7188
- package/dist/teams/index.cjs +79 -3
- package/dist/teams/index.mjs +79 -3
- package/dist/xlsx/edit/sheets.d.ts.map +1 -1
- package/dist/xlsx/edit/sort.d.ts +1 -1
- package/dist/xlsx/edit/sort.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +271 -224
- package/dist/xlsx/index.mjs +271 -224
- package/dist/xlsx/load/index.cjs +63 -1
- package/dist/xlsx/load/index.mjs +63 -1
- package/dist/xlsx/ui/index.cjs +225 -223
- package/dist/xlsx/ui/index.mjs +225 -223
- package/dist/xlsx/write/chart-cache.d.ts +8 -0
- package/dist/xlsx/write/chart-cache.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/teams/index.cjs
CHANGED
|
@@ -1006,12 +1006,13 @@ function formatRange(range) {
|
|
|
1006
1006
|
function quoteSheetName(name) {
|
|
1007
1007
|
return /^[A-Za-z_][A-Za-z0-9_.]*$/.test(name) && !parseAddress(name) ? name : `'${name.replace(/'/g, "''")}'`;
|
|
1008
1008
|
}
|
|
1009
|
-
var MAX_ROW, MAX_COL, formatAddress, cellKey;
|
|
1009
|
+
var MAX_ROW, MAX_COL, formatAddress, rangeSize, cellKey;
|
|
1010
1010
|
var init_address = __esm({
|
|
1011
1011
|
"xlsx/address.ts"() {
|
|
1012
1012
|
MAX_ROW = 1048575;
|
|
1013
1013
|
MAX_COL = 16383;
|
|
1014
1014
|
formatAddress = (address2) => `${columnLabel(address2.col)}${address2.row + 1}`;
|
|
1015
|
+
rangeSize = (range) => (range.end.row - range.start.row + 1) * (range.end.col - range.start.col + 1);
|
|
1015
1016
|
cellKey = (row2, col) => row2 * (MAX_COL + 1) + col;
|
|
1016
1017
|
}
|
|
1017
1018
|
});
|
|
@@ -7292,10 +7293,11 @@ function usedRange(sheet) {
|
|
|
7292
7293
|
if (maxRow < 0) return void 0;
|
|
7293
7294
|
return { start: { row: minRow, col: minCol }, end: { row: maxRow, col: maxCol } };
|
|
7294
7295
|
}
|
|
7295
|
-
var getCell;
|
|
7296
|
+
var getCell, getValue;
|
|
7296
7297
|
var init_cells = __esm({
|
|
7297
7298
|
"xlsx/cells.ts"() {
|
|
7298
7299
|
getCell = (sheet, row2, col) => sheet.rows.get(row2)?.get(col);
|
|
7300
|
+
getValue = (sheet, row2, col) => getCell(sheet, row2, col)?.value ?? null;
|
|
7299
7301
|
}
|
|
7300
7302
|
});
|
|
7301
7303
|
|
|
@@ -18983,6 +18985,76 @@ var init_sheet_data = __esm({
|
|
|
18983
18985
|
}
|
|
18984
18986
|
});
|
|
18985
18987
|
|
|
18988
|
+
// xlsx/layout/sparkline-data.ts
|
|
18989
|
+
function resolveSparklineRange(workbook, sheet, formula) {
|
|
18990
|
+
const ref = formula.trim().replace(/^=/, "");
|
|
18991
|
+
const bang = ref.lastIndexOf("!");
|
|
18992
|
+
let target = sheet;
|
|
18993
|
+
if (bang >= 0) {
|
|
18994
|
+
const raw2 = ref.slice(0, bang);
|
|
18995
|
+
const name = /^'.*'$/.test(raw2) ? raw2.slice(1, -1).replace(/''/g, "'") : raw2;
|
|
18996
|
+
target = sheetByName(workbook, name);
|
|
18997
|
+
}
|
|
18998
|
+
const range = parseRange(ref.slice(bang + 1).replace(/\$/g, ""));
|
|
18999
|
+
return target && range ? { sheet: target, range: normalizeRange(range) } : void 0;
|
|
19000
|
+
}
|
|
19001
|
+
var init_sparkline_data = __esm({
|
|
19002
|
+
"xlsx/layout/sparkline-data.ts"() {
|
|
19003
|
+
init_address();
|
|
19004
|
+
init_workbook();
|
|
19005
|
+
}
|
|
19006
|
+
});
|
|
19007
|
+
|
|
19008
|
+
// xlsx/write/chart-cache.ts
|
|
19009
|
+
function referenceValues(workbook, sheet, ref, maxCells = MAX_CHART_CACHE_CELLS) {
|
|
19010
|
+
if (!ref) return void 0;
|
|
19011
|
+
const target = resolveSparklineRange(workbook, sheet, ref);
|
|
19012
|
+
if (!target) return void 0;
|
|
19013
|
+
const { range } = target;
|
|
19014
|
+
const count2 = rangeSize(range);
|
|
19015
|
+
if (!Number.isSafeInteger(count2) || count2 < 1 || count2 > maxCells || range.end.row > MAX_ROW || range.end.col > MAX_COL)
|
|
19016
|
+
return void 0;
|
|
19017
|
+
const values2 = [];
|
|
19018
|
+
for (let row2 = range.start.row; row2 <= range.end.row; row2++)
|
|
19019
|
+
for (let col = range.start.col; col <= range.end.col; col++)
|
|
19020
|
+
values2.push(getValue(target.sheet, row2, col));
|
|
19021
|
+
return values2;
|
|
19022
|
+
}
|
|
19023
|
+
function categoryValue(value) {
|
|
19024
|
+
if (value === null) return "";
|
|
19025
|
+
if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
|
|
19026
|
+
if (typeof value === "object") return value.error;
|
|
19027
|
+
if (typeof value === "number" && !Number.isFinite(value)) return "";
|
|
19028
|
+
return value;
|
|
19029
|
+
}
|
|
19030
|
+
function chartWithCurrentCaches(workbook, sheet, chart) {
|
|
19031
|
+
return {
|
|
19032
|
+
...chart,
|
|
19033
|
+
series: chart.series.map((series) => {
|
|
19034
|
+
const values2 = referenceValues(workbook, sheet, series.valuesRef);
|
|
19035
|
+
const categories = referenceValues(workbook, sheet, series.categoriesRef);
|
|
19036
|
+
const name = referenceValues(workbook, sheet, series.nameRef, 1);
|
|
19037
|
+
return {
|
|
19038
|
+
...series,
|
|
19039
|
+
...name === void 0 ? {} : { name: String(categoryValue(name[0] ?? null)) },
|
|
19040
|
+
values: values2?.map(
|
|
19041
|
+
(value) => typeof value === "number" && Number.isFinite(value) ? value : null
|
|
19042
|
+
) ?? series.values,
|
|
19043
|
+
categories: categories?.map(categoryValue) ?? series.categories
|
|
19044
|
+
};
|
|
19045
|
+
})
|
|
19046
|
+
};
|
|
19047
|
+
}
|
|
19048
|
+
var MAX_CHART_CACHE_CELLS;
|
|
19049
|
+
var init_chart_cache = __esm({
|
|
19050
|
+
"xlsx/write/chart-cache.ts"() {
|
|
19051
|
+
init_address();
|
|
19052
|
+
init_cells();
|
|
19053
|
+
init_sparkline_data();
|
|
19054
|
+
MAX_CHART_CACHE_CELLS = 1e4;
|
|
19055
|
+
}
|
|
19056
|
+
});
|
|
19057
|
+
|
|
18986
19058
|
// xlsx/write/vml-ids.ts
|
|
18987
19059
|
function vmlIdmapBlocks(xml) {
|
|
18988
19060
|
const blocks = [];
|
|
@@ -19474,7 +19546,10 @@ function writeSheetDrawing(ctx, sheet, partName, rels, sourceDrawing) {
|
|
|
19474
19546
|
}
|
|
19475
19547
|
}
|
|
19476
19548
|
const target = sourceDrawing && !writer.has(sourceDrawing) ? sourceDrawing : writer.uniqueName((n) => `xl/drawings/drawing${n}.xml`, ctx.reserved);
|
|
19477
|
-
|
|
19549
|
+
const drawings = sheet.drawings.map(
|
|
19550
|
+
(object) => object.kind === "chart" && (!object.partName || !source2?.has(object.partName)) ? chartWithCurrentCaches(ctx.workbook, sheet, object) : object
|
|
19551
|
+
);
|
|
19552
|
+
if (!writeDrawing(writer, target, drawings, sourceDrawing)) return "";
|
|
19478
19553
|
return `<drawing r:id="${rels.add(RELATIONSHIP_TYPES.drawing, relativeTarget(partName, target))}"/>`;
|
|
19479
19554
|
}
|
|
19480
19555
|
var init_sheet_parts = __esm({
|
|
@@ -19484,6 +19559,7 @@ var init_sheet_parts = __esm({
|
|
|
19484
19559
|
init_drawing3();
|
|
19485
19560
|
init_package2();
|
|
19486
19561
|
init_tables();
|
|
19562
|
+
init_chart_cache();
|
|
19487
19563
|
init_comments2();
|
|
19488
19564
|
init_drawing();
|
|
19489
19565
|
init_snapshot();
|
package/dist/teams/index.mjs
CHANGED
|
@@ -979,12 +979,13 @@ function formatRange(range) {
|
|
|
979
979
|
function quoteSheetName(name) {
|
|
980
980
|
return /^[A-Za-z_][A-Za-z0-9_.]*$/.test(name) && !parseAddress(name) ? name : `'${name.replace(/'/g, "''")}'`;
|
|
981
981
|
}
|
|
982
|
-
var MAX_ROW, MAX_COL, formatAddress, cellKey;
|
|
982
|
+
var MAX_ROW, MAX_COL, formatAddress, rangeSize, cellKey;
|
|
983
983
|
var init_address = __esm({
|
|
984
984
|
"xlsx/address.ts"() {
|
|
985
985
|
MAX_ROW = 1048575;
|
|
986
986
|
MAX_COL = 16383;
|
|
987
987
|
formatAddress = (address2) => `${columnLabel(address2.col)}${address2.row + 1}`;
|
|
988
|
+
rangeSize = (range) => (range.end.row - range.start.row + 1) * (range.end.col - range.start.col + 1);
|
|
988
989
|
cellKey = (row2, col) => row2 * (MAX_COL + 1) + col;
|
|
989
990
|
}
|
|
990
991
|
});
|
|
@@ -7265,10 +7266,11 @@ function usedRange(sheet) {
|
|
|
7265
7266
|
if (maxRow < 0) return void 0;
|
|
7266
7267
|
return { start: { row: minRow, col: minCol }, end: { row: maxRow, col: maxCol } };
|
|
7267
7268
|
}
|
|
7268
|
-
var getCell;
|
|
7269
|
+
var getCell, getValue;
|
|
7269
7270
|
var init_cells = __esm({
|
|
7270
7271
|
"xlsx/cells.ts"() {
|
|
7271
7272
|
getCell = (sheet, row2, col) => sheet.rows.get(row2)?.get(col);
|
|
7273
|
+
getValue = (sheet, row2, col) => getCell(sheet, row2, col)?.value ?? null;
|
|
7272
7274
|
}
|
|
7273
7275
|
});
|
|
7274
7276
|
|
|
@@ -18956,6 +18958,76 @@ var init_sheet_data = __esm({
|
|
|
18956
18958
|
}
|
|
18957
18959
|
});
|
|
18958
18960
|
|
|
18961
|
+
// xlsx/layout/sparkline-data.ts
|
|
18962
|
+
function resolveSparklineRange(workbook, sheet, formula) {
|
|
18963
|
+
const ref = formula.trim().replace(/^=/, "");
|
|
18964
|
+
const bang = ref.lastIndexOf("!");
|
|
18965
|
+
let target = sheet;
|
|
18966
|
+
if (bang >= 0) {
|
|
18967
|
+
const raw2 = ref.slice(0, bang);
|
|
18968
|
+
const name = /^'.*'$/.test(raw2) ? raw2.slice(1, -1).replace(/''/g, "'") : raw2;
|
|
18969
|
+
target = sheetByName(workbook, name);
|
|
18970
|
+
}
|
|
18971
|
+
const range = parseRange(ref.slice(bang + 1).replace(/\$/g, ""));
|
|
18972
|
+
return target && range ? { sheet: target, range: normalizeRange(range) } : void 0;
|
|
18973
|
+
}
|
|
18974
|
+
var init_sparkline_data = __esm({
|
|
18975
|
+
"xlsx/layout/sparkline-data.ts"() {
|
|
18976
|
+
init_address();
|
|
18977
|
+
init_workbook();
|
|
18978
|
+
}
|
|
18979
|
+
});
|
|
18980
|
+
|
|
18981
|
+
// xlsx/write/chart-cache.ts
|
|
18982
|
+
function referenceValues(workbook, sheet, ref, maxCells = MAX_CHART_CACHE_CELLS) {
|
|
18983
|
+
if (!ref) return void 0;
|
|
18984
|
+
const target = resolveSparklineRange(workbook, sheet, ref);
|
|
18985
|
+
if (!target) return void 0;
|
|
18986
|
+
const { range } = target;
|
|
18987
|
+
const count2 = rangeSize(range);
|
|
18988
|
+
if (!Number.isSafeInteger(count2) || count2 < 1 || count2 > maxCells || range.end.row > MAX_ROW || range.end.col > MAX_COL)
|
|
18989
|
+
return void 0;
|
|
18990
|
+
const values2 = [];
|
|
18991
|
+
for (let row2 = range.start.row; row2 <= range.end.row; row2++)
|
|
18992
|
+
for (let col = range.start.col; col <= range.end.col; col++)
|
|
18993
|
+
values2.push(getValue(target.sheet, row2, col));
|
|
18994
|
+
return values2;
|
|
18995
|
+
}
|
|
18996
|
+
function categoryValue(value) {
|
|
18997
|
+
if (value === null) return "";
|
|
18998
|
+
if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
|
|
18999
|
+
if (typeof value === "object") return value.error;
|
|
19000
|
+
if (typeof value === "number" && !Number.isFinite(value)) return "";
|
|
19001
|
+
return value;
|
|
19002
|
+
}
|
|
19003
|
+
function chartWithCurrentCaches(workbook, sheet, chart) {
|
|
19004
|
+
return {
|
|
19005
|
+
...chart,
|
|
19006
|
+
series: chart.series.map((series) => {
|
|
19007
|
+
const values2 = referenceValues(workbook, sheet, series.valuesRef);
|
|
19008
|
+
const categories = referenceValues(workbook, sheet, series.categoriesRef);
|
|
19009
|
+
const name = referenceValues(workbook, sheet, series.nameRef, 1);
|
|
19010
|
+
return {
|
|
19011
|
+
...series,
|
|
19012
|
+
...name === void 0 ? {} : { name: String(categoryValue(name[0] ?? null)) },
|
|
19013
|
+
values: values2?.map(
|
|
19014
|
+
(value) => typeof value === "number" && Number.isFinite(value) ? value : null
|
|
19015
|
+
) ?? series.values,
|
|
19016
|
+
categories: categories?.map(categoryValue) ?? series.categories
|
|
19017
|
+
};
|
|
19018
|
+
})
|
|
19019
|
+
};
|
|
19020
|
+
}
|
|
19021
|
+
var MAX_CHART_CACHE_CELLS;
|
|
19022
|
+
var init_chart_cache = __esm({
|
|
19023
|
+
"xlsx/write/chart-cache.ts"() {
|
|
19024
|
+
init_address();
|
|
19025
|
+
init_cells();
|
|
19026
|
+
init_sparkline_data();
|
|
19027
|
+
MAX_CHART_CACHE_CELLS = 1e4;
|
|
19028
|
+
}
|
|
19029
|
+
});
|
|
19030
|
+
|
|
18959
19031
|
// xlsx/write/vml-ids.ts
|
|
18960
19032
|
function vmlIdmapBlocks(xml) {
|
|
18961
19033
|
const blocks = [];
|
|
@@ -19447,7 +19519,10 @@ function writeSheetDrawing(ctx, sheet, partName, rels, sourceDrawing) {
|
|
|
19447
19519
|
}
|
|
19448
19520
|
}
|
|
19449
19521
|
const target = sourceDrawing && !writer.has(sourceDrawing) ? sourceDrawing : writer.uniqueName((n) => `xl/drawings/drawing${n}.xml`, ctx.reserved);
|
|
19450
|
-
|
|
19522
|
+
const drawings = sheet.drawings.map(
|
|
19523
|
+
(object) => object.kind === "chart" && (!object.partName || !source2?.has(object.partName)) ? chartWithCurrentCaches(ctx.workbook, sheet, object) : object
|
|
19524
|
+
);
|
|
19525
|
+
if (!writeDrawing(writer, target, drawings, sourceDrawing)) return "";
|
|
19451
19526
|
return `<drawing r:id="${rels.add(RELATIONSHIP_TYPES.drawing, relativeTarget(partName, target))}"/>`;
|
|
19452
19527
|
}
|
|
19453
19528
|
var init_sheet_parts = __esm({
|
|
@@ -19457,6 +19532,7 @@ var init_sheet_parts = __esm({
|
|
|
19457
19532
|
init_drawing3();
|
|
19458
19533
|
init_package2();
|
|
19459
19534
|
init_tables();
|
|
19535
|
+
init_chart_cache();
|
|
19460
19536
|
init_comments2();
|
|
19461
19537
|
init_drawing();
|
|
19462
19538
|
init_snapshot();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../../xlsx/edit/sheets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAe,UAAU,EAAmB,MAAM,UAAU,CAAC;AAQhF,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAC;AA4BtD,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAwBjE;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAmB/E;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAuB1E;AA0CD,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../../xlsx/edit/sheets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAe,UAAU,EAAmB,MAAM,UAAU,CAAC;AAQhF,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAC;AA4BtD,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAwBjE;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAmB/E;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAuB1E;AA0CD,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA4CtE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAoBtF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAYhF"}
|
package/dist/xlsx/edit/sort.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface SortKey {
|
|
|
10
10
|
* text compares case-insensitively.
|
|
11
11
|
*/
|
|
12
12
|
export declare function compareCellValues(a: CellValue, b: CellValue, descending?: boolean): number;
|
|
13
|
-
/** Sorts rows
|
|
13
|
+
/** Sorts visible rows in place, leaving hidden rows untouched. Used by the auto-filter sort. */
|
|
14
14
|
export declare function sortRows(sheet: Worksheet, range: CellRange, keys: SortKey[], hasHeader: boolean): void;
|
|
15
15
|
/** Sorts the rows of `range` by `keys` (absolute column indices), stable, header kept in place. */
|
|
16
16
|
export declare function sortRange(ctx: EditContext, s: number, range: CellRange, keys: SortKey[], hasHeader: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../xlsx/edit/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmC,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAC;AAItD,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,UAAQ,GAAG,MAAM,CAaxF;AAED,
|
|
1
|
+
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../xlsx/edit/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmC,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAC;AAItD,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,UAAQ,GAAG,MAAM,CAaxF;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CACvB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,OAAO,GAChB,IAAI,CAkDN;AAsBD,mGAAmG;AACnG,wBAAgB,SAAS,CACxB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,OAAO,GAChB,IAAI,CAUN"}
|