@stamhoofd/object-differ 2.80.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.
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./src/ObjectDiffer"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
@@ -0,0 +1,10 @@
1
+ import { AuditLogPatchItem, AuditLogReplacement } from '@stamhoofd/structures';
2
+ export type PatchExplainer = {
3
+ key: string;
4
+ handler: (oldValue: unknown, value: unknown) => AuditLogPatchItem[];
5
+ };
6
+ export declare function transformValueForDiff(value: unknown): any;
7
+ export declare class ObjectDiffer {
8
+ static diff(oldValue: unknown, value: unknown, key?: AuditLogReplacement): AuditLogPatchItem[];
9
+ }
10
+ //# sourceMappingURL=ObjectDiffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDiffer.d.ts","sourceRoot":"","sources":["../../src/ObjectDiffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAyB,mBAAmB,EAAoC,MAAM,uBAAuB,CAAC;AAGxI,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,iBAAiB,EAAE,CAAC;CACvE,CAAC;AAoUF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,OAKnD;AAmLD,qBAAa,YAAY;IACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,EAAE;CAGjG"}
@@ -0,0 +1,415 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectDiffer = void 0;
4
+ exports.transformValueForDiff = transformValueForDiff;
5
+ const simple_encoding_1 = require("@simonbackx/simple-encoding");
6
+ const structures_1 = require("@stamhoofd/structures");
7
+ const utility_1 = require("@stamhoofd/utility");
8
+ function diffEnum(oldValue, value, key) {
9
+ if (oldValue === value) {
10
+ return [];
11
+ }
12
+ if (value === undefined) {
13
+ // Not altered
14
+ return [];
15
+ }
16
+ return [
17
+ structures_1.AuditLogPatchItem.create({
18
+ key,
19
+ oldValue: typeof oldValue === 'string' ? structures_1.AuditLogReplacement.key(oldValue) : undefined,
20
+ value: typeof value === 'string' ? structures_1.AuditLogReplacement.key(value) : undefined,
21
+ }).autoType(),
22
+ ];
23
+ }
24
+ function diffDate(oldValue, value, key) {
25
+ if (!(oldValue instanceof Date) && oldValue !== null) {
26
+ return [];
27
+ }
28
+ if ((!(value instanceof Date)) && value !== null) {
29
+ return [];
30
+ }
31
+ if ((oldValue === null || oldValue === void 0 ? void 0 : oldValue.getTime()) === (value === null || value === void 0 ? void 0 : value.getTime())) {
32
+ return [];
33
+ }
34
+ let dno = oldValue ? utility_1.Formatter.dateNumber(oldValue, true) : undefined;
35
+ let dn = value ? utility_1.Formatter.dateNumber(value, true) : undefined;
36
+ if (dno && dn && (dno === dn || (utility_1.Formatter.time(oldValue) !== utility_1.Formatter.time(value))) && (key === null || key === void 0 ? void 0 : key.toKey()) !== 'birthDay') {
37
+ // Add time
38
+ dno += ' ' + utility_1.Formatter.time(oldValue);
39
+ dn += ' ' + utility_1.Formatter.time(value);
40
+ }
41
+ return [
42
+ structures_1.AuditLogPatchItem.create({
43
+ key,
44
+ oldValue: dno ? structures_1.AuditLogReplacement.string(dno) : undefined,
45
+ value: dn ? structures_1.AuditLogReplacement.string(dn) : undefined,
46
+ }).autoType(),
47
+ ];
48
+ }
49
+ function getDiffKey(autoEncoder) {
50
+ if (typeof autoEncoder === 'string') {
51
+ if (utility_1.DataValidator.isUuid(autoEncoder)) {
52
+ return structures_1.AuditLogReplacement.uuid(autoEncoder);
53
+ }
54
+ return structures_1.AuditLogReplacement.key(autoEncoder);
55
+ }
56
+ return undefined;
57
+ }
58
+ /**
59
+ * For arrays or maps, use this name instead of the index/key to identify an object
60
+ */
61
+ function getDiffName(autoEncoder) {
62
+ if (typeof autoEncoder === 'string') {
63
+ if (utility_1.DataValidator.isUuid(autoEncoder)) {
64
+ return structures_1.AuditLogReplacement.uuid(autoEncoder);
65
+ }
66
+ return structures_1.AuditLogReplacement.string(autoEncoder);
67
+ }
68
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffName' in autoEncoder && typeof autoEncoder.getDiffName === 'function') {
69
+ const name = autoEncoder.getDiffName();
70
+ if (typeof name === 'string') {
71
+ return name ? structures_1.AuditLogReplacement.string(name) : structures_1.AuditLogReplacement.key('untitled');
72
+ }
73
+ if (name instanceof structures_1.AuditLogReplacement) {
74
+ return name;
75
+ }
76
+ }
77
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'name' in autoEncoder && typeof autoEncoder.name === 'string') {
78
+ return autoEncoder.name ? structures_1.AuditLogReplacement.string(autoEncoder.name) : structures_1.AuditLogReplacement.key('untitled');
79
+ }
80
+ return null;
81
+ }
82
+ function getDiffPutValue(autoEncoder, key) {
83
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffPutName' in autoEncoder && typeof autoEncoder.getDiffPutName === 'function') {
84
+ const name = autoEncoder.getDiffPutName();
85
+ if (typeof name === 'string') {
86
+ return structures_1.AuditLogReplacement.string(name);
87
+ }
88
+ if (name instanceof structures_1.AuditLogReplacement) {
89
+ return name;
90
+ }
91
+ }
92
+ return getDiffValue(autoEncoder, key);
93
+ }
94
+ function getDiffValue(autoEncoder, key) {
95
+ if (typeof autoEncoder === 'string') {
96
+ if (utility_1.DataValidator.isUuid(autoEncoder)) {
97
+ return structures_1.AuditLogReplacement.uuid(autoEncoder);
98
+ }
99
+ // Is html
100
+ if (autoEncoder.startsWith('<!DOCTYPE html>')) {
101
+ return structures_1.AuditLogReplacement.html(autoEncoder);
102
+ }
103
+ if (key && (key === null || key === void 0 ? void 0 : key.lastValue()) === 'status') {
104
+ // Will be an enum
105
+ return structures_1.AuditLogReplacement.key(autoEncoder);
106
+ }
107
+ return structures_1.AuditLogReplacement.string(autoEncoder);
108
+ }
109
+ if (typeof autoEncoder === 'symbol') {
110
+ const name = Symbol.keyFor(autoEncoder);
111
+ if (name) {
112
+ return structures_1.AuditLogReplacement.key(name);
113
+ }
114
+ return structures_1.AuditLogReplacement.key('unknown');
115
+ }
116
+ if (typeof autoEncoder === 'number') {
117
+ const k = key === null || key === void 0 ? void 0 : key.lastValue();
118
+ if (k && (k.toLowerCase().includes('price') || k.toLowerCase().includes('fee'))) {
119
+ return structures_1.AuditLogReplacement.string(utility_1.Formatter.price(autoEncoder));
120
+ }
121
+ return structures_1.AuditLogReplacement.string(utility_1.Formatter.integer(autoEncoder));
122
+ }
123
+ if (autoEncoder instanceof Date) {
124
+ return structures_1.AuditLogReplacement.string(utility_1.Formatter.dateTime(autoEncoder, true, true));
125
+ }
126
+ if (autoEncoder === true) {
127
+ return structures_1.AuditLogReplacement.key('on');
128
+ }
129
+ if (autoEncoder === false) {
130
+ return structures_1.AuditLogReplacement.key('off');
131
+ }
132
+ if (typeof autoEncoder === 'object' && autoEncoder !== null && 'getDiffValue' in autoEncoder && typeof autoEncoder.getDiffValue === 'function') {
133
+ const name = autoEncoder.getDiffValue();
134
+ if (typeof name === 'string') {
135
+ return structures_1.AuditLogReplacement.string(name);
136
+ }
137
+ if (name instanceof structures_1.AuditLogReplacement) {
138
+ return name;
139
+ }
140
+ }
141
+ return null;
142
+ }
143
+ function findOriginalById(id, oldArray) {
144
+ return id ? oldArray.find(v => getId(v) === id) : null;
145
+ }
146
+ function findOriginalIndexById(id, oldArray) {
147
+ return id ? oldArray.findIndex(v => getId(v) === id) : -1;
148
+ }
149
+ function getId(object) {
150
+ const id = (0, simple_encoding_1.getOptionalId)(object);
151
+ if (typeof id !== 'string' && typeof id !== 'number') {
152
+ if (object instanceof simple_encoding_1.AutoEncoder) {
153
+ const encoded = object.encode({ version: structures_1.Version });
154
+ return JSON.stringify(encoded);
155
+ }
156
+ return JSON.stringify(object);
157
+ }
158
+ return id;
159
+ }
160
+ function findOriginal(put, oldArray) {
161
+ return findOriginalById(getId(put), oldArray);
162
+ }
163
+ function findIndex(put, oldArray) {
164
+ return findOriginalIndexById(getId(put), oldArray);
165
+ }
166
+ function diffArray(oldValue, value, key) {
167
+ if (!Array.isArray(oldValue) || !Array.isArray(value)) {
168
+ // Not supported
169
+ return [];
170
+ }
171
+ const items = [];
172
+ // Search for puts
173
+ let orderChanged = false;
174
+ let added = 0;
175
+ for (const [index, newItem] of value.entries()) {
176
+ const originalIndex = findIndex(newItem, oldValue);
177
+ if (originalIndex === -1) {
178
+ // Has been added
179
+ items.push(...diffUnknown(null, newItem, (getDiffName(newItem) || structures_1.AuditLogReplacement.key('item')).prepend(key)));
180
+ added++;
181
+ }
182
+ else {
183
+ // Has been overwritten
184
+ const original = oldValue[originalIndex];
185
+ items.push(...diffUnknown(original, newItem, (getDiffName(original) || getDiffName(newItem) || structures_1.AuditLogReplacement.key('item')).prepend(key)));
186
+ if ((index - added) !== originalIndex) {
187
+ // Order has changed
188
+ orderChanged = true;
189
+ }
190
+ }
191
+ }
192
+ // Search for deletes
193
+ for (const original of oldValue) {
194
+ const newItem = findOriginal(original, value);
195
+ if (!newItem) {
196
+ // Has been deleted
197
+ items.push(...diffUnknown(original, null, (getDiffName(original) || structures_1.AuditLogReplacement.key('item')).prepend(key)));
198
+ orderChanged = false; // ignore order changed as delete will have set it to true
199
+ }
200
+ }
201
+ if (orderChanged) {
202
+ // Check if order has changed
203
+ items.push(structures_1.AuditLogPatchItem.create({
204
+ key,
205
+ type: structures_1.AuditLogPatchItemType.Reordered,
206
+ }));
207
+ }
208
+ // Not supported
209
+ return items;
210
+ }
211
+ ;
212
+ function diffMap(oldValue, value, key) {
213
+ if (!(value instanceof Map)) {
214
+ // Not supported
215
+ return [];
216
+ }
217
+ if (!(oldValue instanceof Map) && oldValue !== undefined && oldValue !== null) {
218
+ // Not supported
219
+ return [];
220
+ }
221
+ const items = [];
222
+ const isPatch = (0, simple_encoding_1.isPatchMap)(value);
223
+ for (const [k, v] of value.entries()) {
224
+ if (typeof k !== 'string') {
225
+ // Not supported
226
+ continue;
227
+ }
228
+ const original = oldValue === null || oldValue === void 0 ? void 0 : oldValue.get(k);
229
+ if (v === null && isPatch) {
230
+ // Delete
231
+ if (original) {
232
+ items.push(...diffUnknown(original, null, (getDiffName(original) || getDiffKey(k)).prepend(key)));
233
+ }
234
+ continue;
235
+ }
236
+ // Changed
237
+ items.push(...diffUnknown(original, v, (getDiffName(original) || getDiffName(v) || getDiffKey(k)).prepend(key)));
238
+ }
239
+ if (!isPatch && oldValue) {
240
+ // Loop old values
241
+ for (const [k, v] of oldValue.entries()) {
242
+ if (typeof k !== 'string') {
243
+ // Not supported
244
+ continue;
245
+ }
246
+ if (value.has(k)) {
247
+ continue;
248
+ }
249
+ items.push(...diffUnknown(v, null, (getDiffName(v) || getDiffKey(k)).prepend(key)));
250
+ }
251
+ }
252
+ return items;
253
+ }
254
+ function transformValueForDiff(value) {
255
+ if (typeof value === 'object' && value !== null && 'transformForDiff' in value && typeof value.transformForDiff === 'function') {
256
+ return value.transformForDiff();
257
+ }
258
+ return value;
259
+ }
260
+ function diffUnknown(oldValue, value, key) {
261
+ oldValue = transformValueForDiff(oldValue);
262
+ value = transformValueForDiff(value);
263
+ if (oldValue === value) {
264
+ return [];
265
+ }
266
+ if ((oldValue === null || oldValue === undefined) && (value === null || value === undefined)) {
267
+ // Both removed
268
+ return [];
269
+ }
270
+ if (Array.isArray(oldValue) && Array.isArray(value)) {
271
+ return diffArray(oldValue, value, key);
272
+ }
273
+ if (value instanceof Map && (oldValue instanceof Map || oldValue === null || oldValue === undefined)) {
274
+ return diffMap(oldValue, value, key);
275
+ }
276
+ if ((value instanceof Date || value === null) && (oldValue instanceof Date || oldValue === null) && (oldValue !== null || value !== null)) {
277
+ return diffDate(oldValue, value, key);
278
+ }
279
+ if ((oldValue === null || oldValue === undefined) && (value !== null && value !== undefined)) {
280
+ // Simplify addition
281
+ return [
282
+ structures_1.AuditLogPatchItem.create({
283
+ key,
284
+ value: getDiffPutValue(value, key) || undefined,
285
+ type: structures_1.AuditLogPatchItemType.Added,
286
+ }),
287
+ ];
288
+ }
289
+ if ((oldValue !== null && oldValue !== undefined) && (value === null || value === undefined)) {
290
+ return [
291
+ structures_1.AuditLogPatchItem.create({
292
+ key,
293
+ oldValue: getDiffPutValue(oldValue, key) || undefined,
294
+ type: structures_1.AuditLogPatchItemType.Removed,
295
+ }),
296
+ ];
297
+ }
298
+ const items = diffObject(oldValue, value, key);
299
+ let v = getDiffValue(value, key);
300
+ let ov = getDiffValue(oldValue, key);
301
+ if (oldValue !== undefined && oldValue !== null && value !== undefined && value !== null && getDiffValue(value, key) && items.length === 0 && value instanceof simple_encoding_1.AutoEncoder && value.isPatch()) {
302
+ return [
303
+ structures_1.AuditLogPatchItem.create({
304
+ key,
305
+ value: v || undefined,
306
+ oldValue: ov || undefined,
307
+ type: structures_1.AuditLogPatchItemType.Changed,
308
+ }),
309
+ ];
310
+ }
311
+ if (v && ov) {
312
+ // Simplify change
313
+ if (v.toKey() === ov.toKey()) {
314
+ v = null;
315
+ ov = null;
316
+ // if (items.length === 0) {
317
+ // Probably no change
318
+ return [];
319
+ // }
320
+ }
321
+ return [
322
+ structures_1.AuditLogPatchItem.create({
323
+ key,
324
+ value: v || undefined,
325
+ oldValue: ov || undefined,
326
+ type: structures_1.AuditLogPatchItemType.Changed,
327
+ }),
328
+ ];
329
+ }
330
+ return items;
331
+ }
332
+ ;
333
+ /**
334
+ * Uses the autoencoder type information to provide a better change handler
335
+ */
336
+ function diffField(field, oldValue, value, key) {
337
+ if (field.decoder instanceof simple_encoding_1.EnumDecoder) {
338
+ return diffEnum(oldValue, value, key);
339
+ }
340
+ if (field.decoder instanceof simple_encoding_1.SymbolDecoder) {
341
+ if (field.decoder.decoder instanceof simple_encoding_1.EnumDecoder) {
342
+ return diffEnum(oldValue, value, key);
343
+ ;
344
+ }
345
+ }
346
+ if (field.decoder instanceof simple_encoding_1.ArrayDecoder) {
347
+ if (field.decoder.decoder instanceof simple_encoding_1.EnumDecoder) {
348
+ // Map values to keys
349
+ const items = diffArray(oldValue, value, key);
350
+ for (const item of items) {
351
+ if (item.oldValue && !item.oldValue.type) {
352
+ item.oldValue.type = structures_1.AuditLogReplacementType.Key;
353
+ }
354
+ if (item.value && !item.value.type) {
355
+ item.value.type = structures_1.AuditLogReplacementType.Key;
356
+ }
357
+ // If item.key is an array that ends with a 'value', also change it
358
+ if (item.key.type === structures_1.AuditLogReplacementType.Array) {
359
+ const lastKeyItem = item.key.values[item.key.values.length - 1];
360
+ if (!lastKeyItem.type) {
361
+ lastKeyItem.type = structures_1.AuditLogReplacementType.Key;
362
+ }
363
+ }
364
+ else {
365
+ if (!item.key.type) {
366
+ item.key.type = structures_1.AuditLogReplacementType.Key;
367
+ }
368
+ }
369
+ }
370
+ return items;
371
+ }
372
+ return diffArray(oldValue, value, key);
373
+ }
374
+ return diffUnknown(oldValue, value, key);
375
+ }
376
+ function diffObject(original, patch, rootKey) {
377
+ var _a;
378
+ if (typeof patch !== 'object' || patch === null) {
379
+ return [];
380
+ }
381
+ if (original && typeof original !== 'object') {
382
+ return [];
383
+ }
384
+ const items = [];
385
+ for (const key in patch) {
386
+ if (key === 'id') {
387
+ continue;
388
+ }
389
+ const oldValue = (_a = original === null || original === void 0 ? void 0 : original[key]) !== null && _a !== void 0 ? _a : null;
390
+ const value = patch[key];
391
+ if (!(patch instanceof simple_encoding_1.AutoEncoder) && !(oldValue instanceof simple_encoding_1.AutoEncoder)) {
392
+ // try manual without type information
393
+ items.push(...diffUnknown(oldValue, value, getDiffKey(key).prepend(rootKey)));
394
+ continue;
395
+ }
396
+ const field = original instanceof simple_encoding_1.AutoEncoder
397
+ ? original.static.latestFields.find(f => f.property === key)
398
+ : (patch instanceof simple_encoding_1.AutoEncoder
399
+ ? patch.static.latestFields.find(f => f.property === key)
400
+ : null);
401
+ if (!field) {
402
+ // Ignore: probably an internal field
403
+ continue;
404
+ }
405
+ items.push(...diffField(field, oldValue, value, getDiffKey(key).prepend(rootKey)));
406
+ }
407
+ return items;
408
+ }
409
+ class ObjectDiffer {
410
+ static diff(oldValue, value, key) {
411
+ return diffUnknown(oldValue, value, key);
412
+ }
413
+ }
414
+ exports.ObjectDiffer = ObjectDiffer;
415
+ //# sourceMappingURL=ObjectDiffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDiffer.js","sourceRoot":"","sources":["../../src/ObjectDiffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
3
+ //# sourceMappingURL=jest.global.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.d.ts","sourceRoot":"","sources":["../../tests/jest.global.setup.ts"],"names":[],"mappings":";AAEA,wBAEE"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_utils_1 = require("@stamhoofd/test-utils");
4
+ exports.default = async () => {
5
+ await test_utils_1.TestUtils.globalSetup();
6
+ };
7
+ //# sourceMappingURL=jest.global.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.js","sourceRoot":"","sources":["../../tests/jest.global.setup.ts"],"names":[],"mappings":";;AAAA,sDAAkD;AAElD,kBAAe,KAAK,IAAI,EAAE;IACtB,MAAM,sBAAS,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../tests/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_utils_1 = require("@stamhoofd/test-utils");
4
+ test_utils_1.TestUtils.setup();
5
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../../tests/jest.setup.ts"],"names":[],"mappings":";;AAAA,sDAAkD;AAElD,sBAAS,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './src/ObjectDiffer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './src/ObjectDiffer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AuditLogPatchItem, AuditLogReplacement } from '@stamhoofd/structures';
2
+ export type PatchExplainer = {
3
+ key: string;
4
+ handler: (oldValue: unknown, value: unknown) => AuditLogPatchItem[];
5
+ };
6
+ export declare function transformValueForDiff(value: unknown): any;
7
+ export declare class ObjectDiffer {
8
+ static diff(oldValue: unknown, value: unknown, key?: AuditLogReplacement): AuditLogPatchItem[];
9
+ }
10
+ //# sourceMappingURL=ObjectDiffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDiffer.d.ts","sourceRoot":"","sources":["../../../src/ObjectDiffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAyB,mBAAmB,EAAoC,MAAM,uBAAuB,CAAC;AAGxI,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,iBAAiB,EAAE,CAAC;CACvE,CAAC;AAoUF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,OAKnD;AAmLD,qBAAa,YAAY;IACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,EAAE;CAGjG"}