@dereekb/date 8.12.1 → 8.12.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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [8.12.4](https://github.com/dereekb/dbx-components/compare/v8.12.3-dev...v8.12.4) (2022-07-10)
6
+
7
+
8
+
9
+ ## [8.12.3](https://github.com/dereekb/dbx-components/compare/v8.12.2-dev...v8.12.3) (2022-07-09)
10
+
11
+
12
+
13
+ ## [8.12.2](https://github.com/dereekb/dbx-components/compare/v8.12.1-dev...v8.12.2) (2022-07-08)
14
+
15
+
16
+
5
17
  ## [8.12.1](https://github.com/dereekb/dbx-components/compare/v8.12.0-dev...v8.12.1) (2022-07-08)
6
18
 
7
19
 
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dereekb/date",
3
- "version": "8.12.1",
3
+ "version": "8.12.4",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
7
7
  "dependencies": {},
8
8
  "peerDependencies": {
9
9
  "date-fns": "^2.28.0",
10
- "@dereekb/util": "8.12.1",
10
+ "@dereekb/util": "8.12.4",
11
11
  "make-error": "^1.3.0",
12
12
  "ts-essentials": "^9.1.2",
13
13
  "extra-set": "^2.2.11",
@@ -1,4 +1,4 @@
1
- import { IndexRange } from '@dereekb/util';
1
+ import { IndexNumber, IndexRange, IndexRef, UniqueModel, FactoryWithRequiredInput } from '@dereekb/util';
2
2
  import { DateRange, DateRangeDayDistanceInput } from './date.range';
3
3
  import { DateDurationSpan } from './date.duration';
4
4
  /**
@@ -8,7 +8,7 @@ export declare type DateBlockIndex = number;
8
8
  /**
9
9
  * A duration-span block.
10
10
  */
11
- export interface DateBlock {
11
+ export interface DateBlock extends IndexRef {
12
12
  i: DateBlockIndex;
13
13
  }
14
14
  /**
@@ -33,6 +33,11 @@ export declare type DateBlockArrayRef<B extends DateBlock = DateBlock> = {
33
33
  */
34
34
  export interface DateBlockTiming extends DateRange, DateDurationSpan {
35
35
  }
36
+ export declare class DateBlockTiming extends DateDurationSpan {
37
+ start: Date;
38
+ end: Date;
39
+ constructor(template: DateBlockTiming);
40
+ }
36
41
  /**
37
42
  * The DateRange input for dateBlockTiming()
38
43
  */
@@ -117,3 +122,98 @@ export declare function dateBlocksExpansionFactory(config: DateBlocksExpansionFa
117
122
  * @param fitToTimingRange
118
123
  */
119
124
  export declare function dateBlockIndexRange(timing: DateBlockTiming, limit?: DateBlockTimingRangeInput, fitToTimingRange?: boolean): IndexRange;
125
+ /**
126
+ * Represents a range of DateBlock values.
127
+ */
128
+ export interface DateBlockRange extends DateBlock {
129
+ /**
130
+ * Index this block ends at, inclusive. A block with i=0 and to=0 encompases only the block 0.
131
+ *
132
+ * If not provided, assumes this has no range and starts/ends at the same index, i.
133
+ */
134
+ to?: DateBlockIndex;
135
+ }
136
+ /**
137
+ * A DateBlock that also has the potential for a unique identifier.
138
+ */
139
+ export interface UniqueDateBlock extends DateBlock, UniqueModel {
140
+ }
141
+ /**
142
+ * Represents a range of UniqueDateBlock values keyed by a similar identifier (or lack of identifier).
143
+ */
144
+ export interface UniqueDateBlockRange extends UniqueDateBlock, DateBlockRange {
145
+ }
146
+ /**
147
+ * Returns true if the input DateBlockRange has a "to" value greater than it's "i" value.
148
+ *
149
+ * @param input
150
+ */
151
+ export declare function dateBlockRangeHasRange(input: DateBlockRange | UniqueDateBlock): input is DateBlockRange;
152
+ /**
153
+ * Reads the to index if it exists, or returns the block's index itself.
154
+ *
155
+ * @param input
156
+ * @returns
157
+ */
158
+ export declare function dateBlockEndIndex(input: DateBlockRange | UniqueDateBlock): IndexNumber;
159
+ /**
160
+ * A grouping of UniqueDateBlock values, sorted by date range.
161
+ */
162
+ export interface UniqueDateBlockRangeGroup<B extends DateBlockRange | UniqueDateBlock> extends DateBlockRange {
163
+ /**
164
+ * Blocks are sorted by index.
165
+ */
166
+ blocks: B[];
167
+ }
168
+ /**
169
+ * Groups all input DateBlockRange or UniqueDateBlock values into a UniqueDateBlockRangeGroup value.
170
+ */
171
+ export declare function groupUniqueDateBlocks<B extends DateBlockRange | UniqueDateBlock>(input: B[]): UniqueDateBlockRangeGroup<B>;
172
+ /**
173
+ * Determines how to "fill" a DateRange when an empty range is detected.
174
+ * - extend: extends the previous block to fill the range.
175
+ * - fill: creates a new value using a factory.
176
+ */
177
+ export declare type ExpandUniqueDateBlocksFillOption = 'extend' | 'fill';
178
+ /**
179
+ * Determines how overwrite block values that are completely overlapping eachother.
180
+ * - current: keeps the "current" value
181
+ * - next: the next/new value overwrites the previous one
182
+ */
183
+ export declare type ExpandUniqueDateBlocksOverwriteOption = 'current' | 'next';
184
+ export interface ExpandUniqueDateBlocksConfig<B extends DateBlockRange | UniqueDateBlock> {
185
+ /**
186
+ * The expected start index.
187
+ *
188
+ * If provided, will expand the first block to start at this index, and filter out any blocks that end before this index.
189
+ */
190
+ startAtIndex?: number;
191
+ /**
192
+ * The expected end index, inclusive.
193
+ *
194
+ * If provided, will expand the final block to end at this index, and filter out any blocks that start past this index.
195
+ */
196
+ endAtIndex?: number;
197
+ /**
198
+ * Determines how to fill empty ranges.
199
+ */
200
+ fillOption: ExpandUniqueDateBlocksFillOption;
201
+ /**
202
+ * (Optional) Determines how to handle overwrites.
203
+ *
204
+ * Defaults to next
205
+ */
206
+ overwriteOption?: ExpandUniqueDateBlocksOverwriteOption;
207
+ /**
208
+ * Used to create new items to fill empty block sets.
209
+ */
210
+ fillFactory?: FactoryWithRequiredInput<B, DateBlockRange>;
211
+ }
212
+ export interface ExpandUniqueDateBlocksResult<B extends DateBlockRange | UniqueDateBlock> extends UniqueDateBlockRangeGroup<B> {
213
+ /**
214
+ * Blocks that were removed.
215
+ */
216
+ discarded: B[];
217
+ }
218
+ export declare type ExpandUniqueDateBlocksFunction<B extends DateBlockRange | UniqueDateBlock> = (input: B[] | UniqueDateBlockRangeGroup<B>) => ExpandUniqueDateBlocksResult<B>;
219
+ export declare function expandUniqueDateBlocks<B extends DateBlockRange | UniqueDateBlock>(config: ExpandUniqueDateBlocksConfig<B>): ExpandUniqueDateBlocksFunction<B>;
@@ -1,10 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dateBlockIndexRange = exports.dateBlocksExpansionFactory = exports.expandDateBlocks = exports.expandDateBlockCollection = exports.isValidDateBlockTiming = exports.dateBlockTiming = void 0;
3
+ exports.expandUniqueDateBlocks = exports.groupUniqueDateBlocks = exports.dateBlockEndIndex = exports.dateBlockRangeHasRange = exports.dateBlockIndexRange = exports.dateBlocksExpansionFactory = exports.expandDateBlocks = exports.expandDateBlockCollection = exports.isValidDateBlockTiming = exports.dateBlockTiming = exports.DateBlockTiming = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const util_1 = require("@dereekb/util");
5
6
  const date_range_1 = require("./date.range");
7
+ const date_duration_1 = require("./date.duration");
6
8
  const date_fns_1 = require("date-fns");
7
9
  const date_1 = require("./date");
10
+ const class_transformer_1 = require("class-transformer");
11
+ class DateBlockTiming extends date_duration_1.DateDurationSpan {
12
+ constructor(template) {
13
+ super(template);
14
+ if (template) {
15
+ this.start = template.start;
16
+ this.end = template.end;
17
+ }
18
+ }
19
+ }
20
+ tslib_1.__decorate([
21
+ (0, class_transformer_1.Expose)(),
22
+ (0, class_transformer_1.Type)(() => Date),
23
+ tslib_1.__metadata("design:type", Date)
24
+ ], DateBlockTiming.prototype, "start", void 0);
25
+ tslib_1.__decorate([
26
+ (0, class_transformer_1.Expose)(),
27
+ (0, class_transformer_1.Type)(() => Date),
28
+ tslib_1.__metadata("design:type", Date)
29
+ ], DateBlockTiming.prototype, "end", void 0);
30
+ exports.DateBlockTiming = DateBlockTiming;
8
31
  /**
9
32
  * Creates a valid DateBlock timing from the DateDurationSpan and range input.
10
33
  *
@@ -115,7 +138,7 @@ function dateBlocksExpansionFactory(config) {
115
138
  const isInRange = (0, util_1.indexRangeCheckFunction)(indexRange);
116
139
  return (input) => {
117
140
  const blocks = Array.isArray(input) ? input : input.blocks;
118
- let spans = [];
141
+ const spans = [];
119
142
  blocks.forEach((x) => {
120
143
  if (isInRange(x.i)) {
121
144
  const startsAt = (0, date_fns_1.addDays)(baseStart, x.i);
@@ -157,4 +180,228 @@ function dateBlockIndexRange(timing, limit, fitToTimingRange = true) {
157
180
  return { minIndex, maxIndex };
158
181
  }
159
182
  exports.dateBlockIndexRange = dateBlockIndexRange;
183
+ /**
184
+ * Returns true if the input DateBlockRange has a "to" value greater than it's "i" value.
185
+ *
186
+ * @param input
187
+ */
188
+ function dateBlockRangeHasRange(input) {
189
+ return input.to != null && input.to > input.i;
190
+ }
191
+ exports.dateBlockRangeHasRange = dateBlockRangeHasRange;
192
+ /**
193
+ * Reads the to index if it exists, or returns the block's index itself.
194
+ *
195
+ * @param input
196
+ * @returns
197
+ */
198
+ function dateBlockEndIndex(input) {
199
+ var _a;
200
+ return (_a = input.to) !== null && _a !== void 0 ? _a : input.i;
201
+ }
202
+ exports.dateBlockEndIndex = dateBlockEndIndex;
203
+ /**
204
+ * Groups all input DateBlockRange or UniqueDateBlock values into a UniqueDateBlockRangeGroup value.
205
+ */
206
+ function groupUniqueDateBlocks(input) {
207
+ var _a;
208
+ const blocks = input.sort((0, util_1.sortAscendingIndexNumberRefFunction)());
209
+ const i = 0;
210
+ let to;
211
+ if (blocks.length === 0) {
212
+ to = i;
213
+ }
214
+ else {
215
+ const lastBlock = (0, util_1.lastValue)(blocks);
216
+ to = (_a = lastBlock.to) !== null && _a !== void 0 ? _a : lastBlock.i;
217
+ }
218
+ return {
219
+ i,
220
+ to,
221
+ blocks
222
+ };
223
+ }
224
+ exports.groupUniqueDateBlocks = groupUniqueDateBlocks;
225
+ function expandUniqueDateBlocks(config) {
226
+ const { startAtIndex = 0, endAtIndex, fillOption: fill, fillFactory: inputFillFactory, overwriteOption = 'next' } = config;
227
+ const maxAllowedIndex = endAtIndex !== null && endAtIndex !== void 0 ? endAtIndex : Number.MAX_SAFE_INTEGER;
228
+ const fillFactory = inputFillFactory;
229
+ if (!fillFactory && fill === 'fill') {
230
+ throw new Error('fillFactory is required when fillOption is "fill".');
231
+ }
232
+ return (input) => {
233
+ const inputGroup = Array.isArray(input) ? groupUniqueDateBlocks(input) : input;
234
+ const sorted = inputGroup.blocks;
235
+ const blocks = [];
236
+ const discarded = [];
237
+ let current = sorted[0];
238
+ let currentNextIndex;
239
+ let next = sorted[1];
240
+ let nextStartIndex;
241
+ let i = 0;
242
+ let latestTo = startAtIndex - 1;
243
+ function addBlockWithRange(inputBlock, i, inputTo = i) {
244
+ // temporary
245
+ if (i <= latestTo) {
246
+ throw new Error('attempted to add an overlapping block.');
247
+ }
248
+ else if (i > inputTo) {
249
+ throw new Error('attempted to add a negative block (i > to).');
250
+ }
251
+ // Add in any necessary gap block first
252
+ const gapSizeBetweenBlocks = i - (latestTo + 1);
253
+ if (gapSizeBetweenBlocks > 0) {
254
+ // start at the startAtIndex at a minimum
255
+ const gapStartIndex = Math.max(latestTo + 1, startAtIndex);
256
+ addGapBlock(gapStartIndex, i - 1);
257
+ }
258
+ const to = Math.min(inputTo, maxAllowedIndex);
259
+ const block = Object.assign(Object.assign({}, inputBlock), { i,
260
+ to });
261
+ blocks.push(block);
262
+ latestTo = to;
263
+ return block;
264
+ }
265
+ function completeBlocks() {
266
+ // extend or fill if there is an endAtIndex value present
267
+ if (endAtIndex != null && latestTo < endAtIndex) {
268
+ addGapBlock(latestTo + 1, endAtIndex);
269
+ }
270
+ }
271
+ function addGapBlock(i, inputTo = i) {
272
+ const to = Math.min(inputTo, maxAllowedIndex);
273
+ if (fill === 'fill') {
274
+ const dateBlockRange = {
275
+ i,
276
+ to
277
+ };
278
+ const block = fillFactory(dateBlockRange);
279
+ addBlockWithRange(block, i, to);
280
+ }
281
+ else if (blocks.length > 0) {
282
+ // do not extend if no blocks have been pushed.
283
+ const blockToExtend = (0, util_1.lastValue)(blocks);
284
+ blockToExtend.to = inputTo;
285
+ }
286
+ latestTo = to;
287
+ }
288
+ function continueToNext(use) {
289
+ i += 1;
290
+ current = use !== null && use !== void 0 ? use : sorted[i];
291
+ next = sorted[i + 1];
292
+ if (next) {
293
+ nextStartIndex = next.i;
294
+ // complete loop once past the max allowed index
295
+ if (nextStartIndex > maxAllowedIndex) {
296
+ continueLoop = false;
297
+ }
298
+ else {
299
+ const nextEndIndex = dateBlockEndIndex(next);
300
+ if (nextEndIndex <= latestTo) {
301
+ discardCurrent(); // skip until next is not less than or equal to the latest to
302
+ continueToNext();
303
+ }
304
+ }
305
+ }
306
+ else {
307
+ continueLoop = false;
308
+ }
309
+ }
310
+ function discard(block) {
311
+ discarded.push(block);
312
+ }
313
+ function discardCurrent() {
314
+ discard(current);
315
+ }
316
+ function discardNext() {
317
+ discard(next);
318
+ i += 1;
319
+ continueToNext();
320
+ }
321
+ let continueLoop = Boolean(next); // only loop if next is defined, otherwise we just add the final item.
322
+ while (continueLoop) {
323
+ currentNextIndex = current.i;
324
+ nextStartIndex = next.i;
325
+ const currentEndIndex = dateBlockEndIndex(current);
326
+ const nextEndIndex = dateBlockEndIndex(next);
327
+ if (nextStartIndex < startAtIndex || currentEndIndex < startAtIndex) {
328
+ // do nothing if the next index is still before the start index.
329
+ discardCurrent();
330
+ continueToNext();
331
+ }
332
+ else if (currentNextIndex === nextStartIndex) {
333
+ // if next has the same range as current, then look at the tie-breaker
334
+ if (nextEndIndex === currentEndIndex) {
335
+ // if they're both on the same index, then take the one based on the overwrite value
336
+ if (overwriteOption === 'current') {
337
+ // add current
338
+ addBlockWithRange(current, currentNextIndex, nextEndIndex);
339
+ // discard and skip the "next" value
340
+ discardNext();
341
+ }
342
+ else {
343
+ // discard the current
344
+ discardCurrent();
345
+ // move on to next
346
+ continueToNext();
347
+ }
348
+ }
349
+ else if (nextEndIndex > currentEndIndex) {
350
+ // handle overlap
351
+ // add current
352
+ addBlockWithRange(current, currentNextIndex, currentEndIndex);
353
+ // change next to start at the next range
354
+ continueToNext(Object.assign(Object.assign({}, next), { i: currentEndIndex + 1, to: nextEndIndex }));
355
+ }
356
+ }
357
+ else {
358
+ // Check for any overlap
359
+ if (currentEndIndex > nextStartIndex) {
360
+ // handle overlap
361
+ if (overwriteOption === 'current') {
362
+ // add current
363
+ addBlockWithRange(current, currentNextIndex, currentEndIndex);
364
+ // change next to start at the next range
365
+ continueToNext(Object.assign(Object.assign({}, next), { i: currentEndIndex + 1, to: nextEndIndex }));
366
+ }
367
+ else {
368
+ // add current up to the start index
369
+ addBlockWithRange(current, currentNextIndex, nextStartIndex - 1);
370
+ // continue normally
371
+ continueToNext();
372
+ }
373
+ }
374
+ else {
375
+ // add the block
376
+ addBlockWithRange(current, currentNextIndex, currentEndIndex);
377
+ // continue to next
378
+ continueToNext();
379
+ }
380
+ }
381
+ }
382
+ if (current != null) {
383
+ // if current != null, then atleast one block was input/remaining.
384
+ const lastStartIndex = current.i;
385
+ const lastEndIndex = dateBlockEndIndex(current);
386
+ if (lastEndIndex < startAtIndex || lastEndIndex <= latestTo || lastStartIndex > maxAllowedIndex) {
387
+ // if the block ends before the start index, then do nothing.
388
+ discardCurrent();
389
+ }
390
+ else {
391
+ addBlockWithRange(current, Math.max(startAtIndex, lastStartIndex), Math.min(lastEndIndex, maxAllowedIndex));
392
+ }
393
+ completeBlocks();
394
+ }
395
+ else if (fill === 'fill') {
396
+ completeBlocks();
397
+ }
398
+ const result = {
399
+ i: 0,
400
+ blocks,
401
+ discarded
402
+ };
403
+ return result;
404
+ };
405
+ }
406
+ exports.expandUniqueDateBlocks = expandUniqueDateBlocks;
160
407
  //# sourceMappingURL=date.block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.block.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date.block.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.block.ts"],"names":[],"mappings":";;;;AAAA,wCAA6M;AAC7M,6CAA2G;AAC3G,mDAAmD;AACnD,uCAAiH;AACjH,iCAAqD;AACrD,yDAAiD;AAsCjD,MAAa,eAAgB,SAAQ,gCAAgB;IASnD,YAAY,QAAyB;QACnC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;SACzB;IACH,CAAC;CACF;AAdC;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACT,IAAI;8CAAC;AAIb;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACX,IAAI;4CAAC;AAPb,0CAiBC;AAOD;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,aAA+B,EAAE,UAAqC;IACpG,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IAEnC,IAAI,QAAQ,GAAG,qBAAc,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;KAC/E;IAED,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;IACjC,IAAI,mBAA2B,CAAC;IAEhC,IAAI,SAA2B,CAAC;IAChC,IAAI,KAAgB,CAAC;IAErB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,mBAAmB,GAAG,UAAU,CAAC;QACjC,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,IAAI,EAAE,0BAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;KAC/F;SAAM,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE;QAClC,KAAK,GAAG,UAAU,CAAC;QACnB,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;QAC7B,mBAAmB,GAAG,IAAA,2BAAgB,EAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;KAC1E;SAAM;QACL,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC1C,KAAK,GAAG,IAAA,sBAAS,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACrC;IAED,IAAI,SAAS,IAAI,IAAI,EAAE;QACrB,iFAAiF;QACjF,QAAQ,GAAG,IAAA,kCAA2B,EAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEpE,IAAI,IAAA,mBAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;YACnC,QAAQ,GAAG,IAAA,kBAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACzD,mBAAmB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,qCAAqC;SACrF;KACF;SAAM;QACL,QAAQ,GAAG,IAAA,qBAAU,EAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,8BAA8B;KACnE;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAE1B,sEAAsE;IACtE,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACzD,MAAM,GAAG,GAAS,IAAA,qBAAU,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElD,OAAO;QACL,KAAK;QACL,GAAG;QACH,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC;AAlDD,0CAkDC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,MAAuB;IAC5D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,mCAAwB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAY,KAAK,CAAC;IAE7B,IACE,QAAQ,IAAI,qBAAc;QAC1B,CAAC,UAAU,IAAI,4BAA4B;QAC3C,YAAY,IAAI,CAAC,IAAI,sCAAsC;QAC3D,YAAY,GAAG,gBAAS,CAAC,2CAA2C;MACpE;QACA,MAAM,sBAAsB,GAAG,IAAA,qBAAU,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAA,mCAAwB,EAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,gBAAS,CAAC;QAC1F,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC;KAC5B;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAnBD,wDAmBC;AAmBD;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAkC,UAAkC;IAC3G,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAFD,8DAEC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAkC,MAAuB,EAAE,MAAW;IACpG,OAAO,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAFD,4CAEC;AAuBD;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,MAAwC;IACjF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACtC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACjD,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC7J,MAAM,SAAS,GAAG,IAAA,8BAAuB,EAAC,UAAU,CAAC,CAAC;IAEtD,OAAO,CAAkC,KAAyC,EAAE,EAAE;QACpF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3D,MAAM,KAAK,GAA+B,EAAE,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBAClB,MAAM,QAAQ,GAAG,IAAA,kBAAO,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,MAAM,YAAY,mCACb,CAAC,KACJ,QAAQ;oBACR,QAAQ,GACT,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAxBD,gEAwBC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,MAAuB,EAAE,KAAiC,EAAE,gBAAgB,GAAG,IAAI;IACrH,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACjD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,IAAA,2BAAgB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEnD,IAAI,KAAK,EAAE;QACT,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAA,2BAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAA,2BAAgB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEjD,IAAI,gBAAgB,EAAE;YACpB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACzC;aAAM;YACL,QAAQ,GAAG,QAAQ,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC;SACrB;KACF;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AApBD,kDAoBC;AAyBD;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,KAAuC;IAC5E,OAAQ,KAAwB,CAAC,EAAE,IAAI,IAAI,IAAM,KAAwB,CAAC,EAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC;AAFD,wDAEC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAuC;;IACvE,OAAO,MAAC,KAAwB,CAAC,EAAE,mCAAI,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,8CAEC;AAYD;;GAEG;AACH,SAAgB,qBAAqB,CAA6C,KAAU;;IAC1F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAA,0CAAmC,GAAE,CAAC,CAAC;IAEjE,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,EAAU,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,EAAE,GAAG,CAAC,CAAC;KACR;SAAM;QACL,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAC;QACpC,EAAE,GAAG,MAAC,SAA4B,CAAC,EAAE,mCAAI,SAAS,CAAC,CAAC,CAAC;KACtD;IAED,OAAO;QACL,CAAC;QACD,EAAE;QACF,MAAM;KACP,CAAC;AACJ,CAAC;AAlBD,sDAkBC;AAsDD,SAAgB,sBAAsB,CAA6C,MAAuC;IACxH,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3H,MAAM,eAAe,GAAgB,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,MAAM,CAAC,gBAAgB,CAAC;IAC3E,MAAM,WAAW,GAAG,gBAA+D,CAAC;IAEpF,IAAI,CAAC,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;KACvE;IAED,OAAO,CAAC,KAAyC,EAAE,EAAE;QACnD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAEjC,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,SAAS,GAAQ,EAAE,CAAC;QAE1B,IAAI,OAAO,GAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,gBAA6B,CAAC;QAElC,IAAI,IAAI,GAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,cAA2B,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,QAAQ,GAAW,YAAY,GAAG,CAAC,CAAC;QAExC,SAAS,iBAAiB,CAAC,UAAa,EAAE,CAAS,EAAE,UAAkB,CAAC;YACtE,YAAY;YACZ,IAAI,CAAC,IAAI,QAAQ,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;iBAAM,IAAI,CAAC,GAAG,OAAO,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YAED,uCAAuC;YACvC,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAEhD,IAAI,oBAAoB,GAAG,CAAC,EAAE;gBAC5B,yCAAyC;gBACzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC3D,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aACnC;YAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAE9C,MAAM,KAAK,mCACN,UAAU,KACb,CAAC;gBACD,EAAE,GACH,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnB,QAAQ,GAAG,EAAE,CAAC;YAEd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,cAAc;YACrB,yDAAyD;YACzD,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ,GAAG,UAAU,EAAE;gBAC/C,WAAW,CAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;aACvC;QACH,CAAC;QAED,SAAS,WAAW,CAAC,CAAS,EAAE,UAAkB,CAAC;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAE9C,IAAI,IAAI,KAAK,MAAM,EAAE;gBACnB,MAAM,cAAc,GAAmB;oBACrC,CAAC;oBACD,EAAE;iBACH,CAAC;gBAEF,MAAM,KAAK,GAAM,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC7C,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;aACjC;iBAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,+CAA+C;gBAC/C,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAC;gBACvC,aAAgC,CAAC,EAAE,GAAG,OAAO,CAAC;aAChD;YAED,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,SAAS,cAAc,CAAC,GAAO;YAC7B,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAErB,IAAI,IAAI,EAAE;gBACR,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;gBAExB,gDAAgD;gBAChD,IAAI,cAAc,GAAG,eAAe,EAAE;oBACpC,YAAY,GAAG,KAAK,CAAC;iBACtB;qBAAM;oBACL,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAE7C,IAAI,YAAY,IAAI,QAAQ,EAAE;wBAC5B,cAAc,EAAE,CAAC,CAAC,6DAA6D;wBAC/E,cAAc,EAAE,CAAC;qBAClB;iBACF;aACF;iBAAM;gBACL,YAAY,GAAG,KAAK,CAAC;aACtB;QACH,CAAC;QAED,SAAS,OAAO,CAAC,KAAQ;YACvB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,SAAS,cAAc;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QAED,SAAS,WAAW;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;YACP,cAAc,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,YAAY,GAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,sEAAsE;QAEjH,OAAO,YAAY,EAAE;YACnB,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;YAC7B,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;YAExB,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,cAAc,GAAG,YAAY,IAAI,eAAe,GAAG,YAAY,EAAE;gBACnE,gEAAgE;gBAChE,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,CAAC;aAClB;iBAAM,IAAI,gBAAgB,KAAK,cAAc,EAAE;gBAC9C,sEAAsE;gBACtE,IAAI,YAAY,KAAK,eAAe,EAAE;oBACpC,oFAAoF;oBACpF,IAAI,eAAe,KAAK,SAAS,EAAE;wBACjC,cAAc;wBACd,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;wBAC3D,oCAAoC;wBACpC,WAAW,EAAE,CAAC;qBACf;yBAAM;wBACL,sBAAsB;wBACtB,cAAc,EAAE,CAAC;wBACjB,kBAAkB;wBAClB,cAAc,EAAE,CAAC;qBAClB;iBACF;qBAAM,IAAI,YAAY,GAAG,eAAe,EAAE;oBACzC,iBAAiB;oBACjB,cAAc;oBACd,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;oBAC9D,yCAAyC;oBACzC,cAAc,iCAAM,IAAI,KAAE,CAAC,EAAE,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,YAAY,IAAG,CAAC;iBACvE;aACF;iBAAM;gBACL,wBAAwB;gBACxB,IAAI,eAAe,GAAG,cAAc,EAAE;oBACpC,iBAAiB;oBAEjB,IAAI,eAAe,KAAK,SAAS,EAAE;wBACjC,cAAc;wBACd,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;wBAC9D,yCAAyC;wBACzC,cAAc,iCAAM,IAAI,KAAE,CAAC,EAAE,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,YAAY,IAAG,CAAC;qBACvE;yBAAM;wBACL,oCAAoC;wBACpC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;wBACjE,oBAAoB;wBACpB,cAAc,EAAE,CAAC;qBAClB;iBACF;qBAAM;oBACL,gBAAgB;oBAChB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;oBAE9D,mBAAmB;oBACnB,cAAc,EAAE,CAAC;iBAClB;aACF;SACF;QAED,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,kEAAkE;YAElE,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEhD,IAAI,YAAY,GAAG,YAAY,IAAI,YAAY,IAAI,QAAQ,IAAI,cAAc,GAAG,eAAe,EAAE;gBAC/F,6DAA6D;gBAC7D,cAAc,EAAE,CAAC;aAClB;iBAAM;gBACL,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;aAC7G;YAED,cAAc,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC1B,cAAc,EAAE,CAAC;SAClB;QAED,MAAM,MAAM,GAAG;YACb,CAAC,EAAE,CAAC;YACJ,MAAM;YACN,SAAS;SACV,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAjND,wDAiNC"}