@dereekb/dbx-form 9.24.4 → 9.24.5

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.
@@ -53,7 +53,7 @@ export interface CalendarScheduleSelectionState extends PartialCalendarScheduleS
53
53
  */
54
54
  indexFactory: DateTimingRelativeIndexFactory;
55
55
  /**
56
- * Array of manually selected dates within the picked range. This is not the set of all enabled indexes.
56
+ * Array of manually selected dates within the picked range. This is NOT the set of all selected indexes in terms of output.
57
57
  *
58
58
  * Values that exist outside of the "input" range are considered toggled on, while those
59
59
  * that are selected within the range are considered toggled off.
@@ -63,7 +63,7 @@ export interface CalendarScheduleSelectionState extends PartialCalendarScheduleS
63
63
  *
64
64
  * These indexes are relative to the start date.
65
65
  */
66
- selectedIndexes: Set<DateBlockIndex>;
66
+ toggledIndexes: Set<DateBlockIndex>;
67
67
  /**
68
68
  * Days of the schedule that are allowed to be picked.
69
69
  */
@@ -137,11 +137,13 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
137
137
  readonly effectiveTimezone$: Observable<Maybe<TimezoneString>>;
138
138
  readonly effectiveTimezoneNormal$: Observable<DateTimezoneUtcNormalInstance | undefined>;
139
139
  readonly currentSelectionValue$: Observable<Maybe<CalendarScheduleSelectionValue>>;
140
+ readonly currentSelectionValueDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]>;
141
+ readonly selectionValueSelectedIndexes$: Observable<Set<DateBlockIndex>>;
142
+ readonly selectionValue$: Observable<CalendarScheduleSelectionValue>;
140
143
  readonly currentSelectionValueWithTimezone$: Observable<Maybe<CalendarScheduleSelectionValue>>;
144
+ readonly selectionValueWithTimezone$: Observable<CalendarScheduleSelectionValue>;
145
+ readonly selectionValueWithTimezoneDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]>;
141
146
  readonly nextToggleSelection$: Observable<Maybe<AllOrNoneSelection>>;
142
- readonly selectionValue$: Observable<CalendarScheduleSelectionValue>;
143
- readonly selectionValueDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]>;
144
- readonly selectionValueSelectedIndexes$: Observable<Set<DateBlockIndex>>;
145
147
  readonly currentDateScheduleRangeValue$: Observable<Maybe<DateScheduleRange>>;
146
148
  readonly dateScheduleRangeValue$: Observable<DateScheduleRange>;
147
149
  readonly cellContentFactory$: Observable<CalendarScheduleSelectionCellContentFactory>;
@@ -157,6 +159,7 @@ export declare class DbxCalendarScheduleSelectionStore extends ComponentStore<Ca
157
159
  readonly addSelectedDates: (observableOrValue: IterableOrValue<DateOrDateBlockIndex> | Observable<IterableOrValue<DateOrDateBlockIndex>>) => import("rxjs").Subscription;
158
160
  readonly removeSelectedDates: (observableOrValue: IterableOrValue<DateOrDateBlockIndex> | Observable<IterableOrValue<DateOrDateBlockIndex>>) => import("rxjs").Subscription;
159
161
  readonly setSelectedDates: (observableOrValue: IterableOrValue<DateOrDateBlockIndex> | Observable<IterableOrValue<DateOrDateBlockIndex>>) => import("rxjs").Subscription;
162
+ readonly setSelectedIndexes: (observableOrValue: IterableOrValue<DateOrDateBlockIndex> | Observable<IterableOrValue<DateOrDateBlockIndex>>) => import("rxjs").Subscription;
160
163
  readonly selectAllDates: (observableOrValue: AllOrNoneSelection | Observable<AllOrNoneSelection>) => import("rxjs").Subscription;
161
164
  readonly setInitialSelectionState: (() => void) | ((observableOrValue: Maybe<AllOrNoneSelection> | Observable<Maybe<AllOrNoneSelection>>) => import("rxjs").Subscription);
162
165
  readonly setScheduleDays: (() => void) | ((observableOrValue: Maybe<Iterable<DateScheduleDayCode>> | Observable<Maybe<Iterable<DateScheduleDayCode>>>) => import("rxjs").Subscription);
@@ -181,6 +184,12 @@ export interface CalendarScheduleSelectionStateDatesChange {
181
184
  remove?: IterableOrValue<DateOrDateBlockIndex>;
182
185
  set?: IterableOrValue<DateOrDateBlockIndex>;
183
186
  selectAll?: AllOrNoneSelection;
187
+ /**
188
+ * Inverts the set date changing behavior so that the set input is treated as items that should be retained instead of excluded.
189
+ *
190
+ * Ignored when set is not used. Ignored for selectAll.
191
+ */
192
+ invertSetBehavior?: boolean;
184
193
  }
185
194
  export declare function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState;
186
195
  export declare function noSelectionCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): CalendarScheduleSelectionState;
@@ -1,5 +1,5 @@
1
1
  import { Component, InjectionToken } from '@angular/core';
2
- import { AbstractDialogDirective } from '@dereekb/dbx-web';
2
+ import { AbstractDialogDirective, sanitizeDbxDialogContentConfig } from '@dereekb/dbx-web';
3
3
  import { KeyValueTypleValueFilter, mergeObjects } from '@dereekb/util';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@dereekb/dbx-web";
@@ -33,7 +33,7 @@ export class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDia
33
33
  width: '80vw',
34
34
  minHeight: 400,
35
35
  minWidth: 360,
36
- ...contentConfig.dialogConfig,
36
+ ...sanitizeDbxDialogContentConfig(contentConfig.dialogConfig),
37
37
  injector,
38
38
  data: {
39
39
  config,
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
62
62
  `
63
63
  }]
64
64
  }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0QsTUFBTSxrQkFBa0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsd0JBQXdCLEVBQVMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRTlFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxRUFBcUUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0FBRTVKOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUVBQXVFLEdBQUcsSUFBSSxjQUFjLENBQUMsb0RBQW9ELENBQUMsQ0FBQztBQXlCaEssTUFBTSxPQUFPLCtDQUFnRCxTQUFRLHVCQUEwRTtJQUM3SSxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQW9CLEVBQUUsTUFBbUQ7UUFDekYsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRTlGLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBc0MscUVBQXFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUosTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUE0RCx1RUFBdUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwTCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlHLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwSSxhQUFhLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUV4QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0NBQStDLEVBQUU7WUFDckUsTUFBTSxFQUFFLDBCQUEwQjtZQUNsQyxLQUFLLEVBQUUsTUFBTTtZQUNiLFNBQVMsRUFBRSxHQUFHO1lBQ2QsUUFBUSxFQUFFLEdBQUc7WUFDYixHQUFHLGFBQWEsQ0FBQyxZQUFZO1lBQzdCLFFBQVE7WUFDUixJQUFJLEVBQUU7Z0JBQ0osTUFBTTtnQkFDTixhQUFhO2FBQ2Q7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzs2SUEvQlUsK0NBQStDO2lJQUEvQywrQ0FBK0MsMkVBUmhEOzs7Ozs7R0FNVDs0RkFFVSwrQ0FBK0M7a0JBVDNELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7R0FNVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWJzdHJhY3REaWFsb2dEaXJlY3RpdmUsIERieERpYWxvZ0NvbnRlbnRDb25maWcsIERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEtleVZhbHVlVHlwbGVWYWx1ZUZpbHRlciwgTWF5YmUsIG1lcmdlT2JqZWN0cyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG4vKipcbiAqIFRva2VuIHVzZWQgdG8gY29uZmlndXJlIHRoZSBkZWZhdWx0IERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWcgZm9yIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGlhbG9nQ29tcG9uZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIHVzZSBERUZBVUxUX0RCWF9TQ0hFRFVMRV9TRUxFQ1RJT05fQ0FMRU5EQVJfREFURV9QT1BVUF9DT05URU5UX0NPTkZJR19UT0tFTiBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQlhfU0NIRURVTEVfU0VMRUNUSU9OX0NBTEVOREFSX0RBVEVfUE9QVVBfQ0xPU0VfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKCdEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ2xvc2VDb25maWcnKTtcblxuLyoqXG4gKiBUb2tlbiB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29uZmlnIGZvciBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURpYWxvZ0NvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREJYX1NDSEVEVUxFX1NFTEVDVElPTl9DQUxFTkRBUl9EQVRFX1BPUFVQX0NPTlRFTlRfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKCdEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29udGVudENvbmZpZycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb250ZW50Q29uZmlnIHtcbiAgY2xvc2VDb25maWc/OiBEYnhEaWFsb2dDb250ZW50Rm9vdGVyQ29uZmlnO1xuICBkaWFsb2dDb25maWc/OiBEYnhEaWFsb2dDb250ZW50Q29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb25maWcge1xuICBpbmplY3RvcjogSW5qZWN0b3I7XG4gIGNvbnRlbnRDb25maWc/OiBNYXliZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29udGVudENvbmZpZz47XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgY29udGVudENvbmZpZyBpbnN0ZWFkLlxuICAgKi9cbiAgY2xvc2VDb25maWc/OiBNYXliZTxEYnhEaWFsb2dDb250ZW50Rm9vdGVyQ29uZmlnPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kaWFsb2dcIj5cbiAgICAgIDxkYngtZGlhbG9nLWNvbnRlbnQtY2xvc2UgKGNsb3NlKT1cImNsb3NlKClcIj48L2RieC1kaWFsb2ctY29udGVudC1jbG9zZT5cbiAgICAgIDxkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyPjwvZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhcj5cbiAgICAgIDxkYngtZGlhbG9nLWNvbnRlbnQtZm9vdGVyIFtjb25maWddPVwiY2xvc2VDb25maWdcIiAoY2xvc2UpPVwiY2xvc2UoKVwiPjwvZGJ4LWRpYWxvZy1jb250ZW50LWZvb3Rlcj5cbiAgICA8L2RieC1kaWFsb2ctY29udGVudD5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGlhbG9nRGlyZWN0aXZlPHZvaWQsIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb25maWc+IHtcbiAgZ2V0IGNvbnRlbnRDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jb250ZW50Q29uZmlnO1xuICB9XG5cbiAgZ2V0IGNsb3NlQ29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRDb25maWc/LmNsb3NlQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIG9wZW5EaWFsb2cobWF0RGlhbG9nOiBNYXREaWFsb2csIGNvbmZpZzogRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbmZpZykge1xuICAgIGNvbnN0IHsgaW5qZWN0b3IsIGNvbnRlbnRDb25maWc6IGlucHV0Q29udGVudENvbmZpZywgY2xvc2VDb25maWc6IGlucHV0Q2xvc2VDb25maWcgfSA9IGNvbmZpZztcblxuICAgIGNvbnN0IGRlZmF1bHRDbG9zZUNvbmZpZyA9IGluamVjdG9yLmdldDxNYXliZTxEYnhEaWFsb2dDb250ZW50Rm9vdGVyQ29uZmlnPj4oREVGQVVMVF9EQlhfU0NIRURVTEVfU0VMRUNUSU9OX0NBTEVOREFSX0RBVEVfUE9QVVBfQ0xPU0VfQ09ORklHX1RPS0VOLCBudWxsKTtcbiAgICBjb25zdCBkZWZhdWx0Q29udGVudENvbmZpZyA9IGluamVjdG9yLmdldDxNYXliZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29udGVudENvbmZpZz4+KERFRkFVTFRfREJYX1NDSEVEVUxFX1NFTEVDVElPTl9DQUxFTkRBUl9EQVRFX1BPUFVQX0NPTlRFTlRfQ09ORklHX1RPS0VOLCBudWxsKTtcblxuICAgIGNvbnN0IGNvbnRlbnRDb25maWcgPSBtZXJnZU9iamVjdHMoW2RlZmF1bHRDb250ZW50Q29uZmlnLCBpbnB1dENvbnRlbnRDb25maWddLCBLZXlWYWx1ZVR5cGxlVmFsdWVGaWx0ZXIuTlVMTCk7XG4gICAgY29uc3QgY2xvc2VDb25maWcgPSBtZXJnZU9iamVjdHMoW2RlZmF1bHRDbG9zZUNvbmZpZywgY29udGVudENvbmZpZz8uY2xvc2VDb25maWcsIGlucHV0Q2xvc2VDb25maWddLCBLZXlWYWx1ZVR5cGxlVmFsdWVGaWx0ZXIuTlVMTCk7XG4gICAgY29udGVudENvbmZpZy5jbG9zZUNvbmZpZyA9IGNsb3NlQ29uZmlnO1xuXG4gICAgcmV0dXJuIG1hdERpYWxvZy5vcGVuKERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBoZWlnaHQ6ICdjYWxjKHZhcigtLXZoMTAwKSAqIDAuOSknLFxuICAgICAgd2lkdGg6ICc4MHZ3JyxcbiAgICAgIG1pbkhlaWdodDogNDAwLFxuICAgICAgbWluV2lkdGg6IDM2MCxcbiAgICAgIC4uLmNvbnRlbnRDb25maWcuZGlhbG9nQ29uZmlnLFxuICAgICAgaW5qZWN0b3IsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29udGVudENvbmZpZ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0QsOEJBQThCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsd0JBQXdCLEVBQXdCLFlBQVksRUFBNEIsTUFBTSxlQUFlLENBQUM7Ozs7QUFFdkg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFFQUFxRSxHQUFHLElBQUksY0FBYyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFFNUo7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1RUFBdUUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0FBeUJoSyxNQUFNLE9BQU8sK0NBQWdELFNBQVEsdUJBQTBFO0lBQzdJLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBb0IsRUFBRSxNQUFtRDtRQUN6RixNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFOUYsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFzQyxxRUFBcUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxSixNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQTRELHVFQUF1RSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBMLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLEVBQUUsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUcsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BJLGFBQWEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBRXhDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQywrQ0FBK0MsRUFBRTtZQUNyRSxNQUFNLEVBQUUsMEJBQTBCO1lBQ2xDLEtBQUssRUFBRSxNQUFNO1lBQ2IsU0FBUyxFQUFFLEdBQUc7WUFDZCxRQUFRLEVBQUUsR0FBRztZQUNiLEdBQUcsOEJBQThCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUM3RCxRQUFRO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLE1BQU07Z0JBQ04sYUFBYTthQUNkO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NklBL0JVLCtDQUErQztpSUFBL0MsK0NBQStDLDJFQVJoRDs7Ozs7O0dBTVQ7NEZBRVUsK0NBQStDO2tCQVQzRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7O0dBTVQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFic3RyYWN0RGlhbG9nRGlyZWN0aXZlLCBEYnhEaWFsb2dDb250ZW50Q29uZmlnLCBEYnhEaWFsb2dDb250ZW50Rm9vdGVyQ29uZmlnLCBzYW5pdGl6ZURieERpYWxvZ0NvbnRlbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEtleVZhbHVlVHlwbGVWYWx1ZUZpbHRlciwgTWF5YmUsIGNzc0NsYXNzZXNTZXQsIG1lcmdlT2JqZWN0cywgc3BhY2VTZXBhcmF0ZWRDc3NDbGFzc2VzIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbi8qKlxuICogVG9rZW4gdXNlZCB0byBjb25maWd1cmUgdGhlIGRlZmF1bHQgRGJ4RGlhbG9nQ29udGVudEZvb3RlckNvbmZpZyBmb3IgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEaWFsb2dDb21wb25lbnQuXG4gKlxuICogQGRlcHJlY2F0ZWQgdXNlIERFRkFVTFRfREJYX1NDSEVEVUxFX1NFTEVDVElPTl9DQUxFTkRBUl9EQVRFX1BPUFVQX0NPTlRFTlRfQ09ORklHX1RPS0VOIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RCWF9TQ0hFRFVMRV9TRUxFQ1RJT05fQ0FMRU5EQVJfREFURV9QT1BVUF9DTE9TRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0RieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDbG9zZUNvbmZpZycpO1xuXG4vKipcbiAqIFRva2VuIHVzZWQgdG8gY29uZmlndXJlIHRoZSBkZWZhdWx0IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb25maWcgZm9yIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGlhbG9nQ29tcG9uZW50LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQlhfU0NIRURVTEVfU0VMRUNUSU9OX0NBTEVOREFSX0RBVEVfUE9QVVBfQ09OVEVOVF9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0RieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb250ZW50Q29uZmlnJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbnRlbnRDb25maWcge1xuICBjbG9zZUNvbmZpZz86IERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWc7XG4gIGRpYWxvZ0NvbmZpZz86IERieERpYWxvZ0NvbnRlbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbmZpZyB7XG4gIGluamVjdG9yOiBJbmplY3RvcjtcbiAgY29udGVudENvbmZpZz86IE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb250ZW50Q29uZmlnPjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBjb250ZW50Q29uZmlnIGluc3RlYWQuXG4gICAqL1xuICBjbG9zZUNvbmZpZz86IE1heWJlPERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWc+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGJ4LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRpYWxvZ1wiPlxuICAgICAgPGRieC1kaWFsb2ctY29udGVudC1jbG9zZSAoY2xvc2UpPVwiY2xvc2UoKVwiPjwvZGJ4LWRpYWxvZy1jb250ZW50LWNsb3NlPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXI+PC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyPlxuICAgICAgPGRieC1kaWFsb2ctY29udGVudC1mb290ZXIgW2NvbmZpZ109XCJjbG9zZUNvbmZpZ1wiIChjbG9zZSk9XCJjbG9zZSgpXCI+PC9kYngtZGlhbG9nLWNvbnRlbnQtZm9vdGVyPlxuICAgIDwvZGJ4LWRpYWxvZy1jb250ZW50PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REaWFsb2dEaXJlY3RpdmU8dm9pZCwgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVQb3B1cENvbmZpZz4ge1xuICBnZXQgY29udGVudENvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbnRlbnRDb25maWc7XG4gIH1cblxuICBnZXQgY2xvc2VDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudENvbmZpZz8uY2xvc2VDb25maWc7XG4gIH1cblxuICBzdGF0aWMgb3BlbkRpYWxvZyhtYXREaWFsb2c6IE1hdERpYWxvZywgY29uZmlnOiBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZVBvcHVwQ29uZmlnKSB7XG4gICAgY29uc3QgeyBpbmplY3RvciwgY29udGVudENvbmZpZzogaW5wdXRDb250ZW50Q29uZmlnLCBjbG9zZUNvbmZpZzogaW5wdXRDbG9zZUNvbmZpZyB9ID0gY29uZmlnO1xuXG4gICAgY29uc3QgZGVmYXVsdENsb3NlQ29uZmlnID0gaW5qZWN0b3IuZ2V0PE1heWJlPERieERpYWxvZ0NvbnRlbnRGb290ZXJDb25maWc+PihERUZBVUxUX0RCWF9TQ0hFRFVMRV9TRUxFQ1RJT05fQ0FMRU5EQVJfREFURV9QT1BVUF9DTE9TRV9DT05GSUdfVE9LRU4sIG51bGwpO1xuICAgIGNvbnN0IGRlZmF1bHRDb250ZW50Q29uZmlnID0gaW5qZWN0b3IuZ2V0PE1heWJlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUG9wdXBDb250ZW50Q29uZmlnPj4oREVGQVVMVF9EQlhfU0NIRURVTEVfU0VMRUNUSU9OX0NBTEVOREFSX0RBVEVfUE9QVVBfQ09OVEVOVF9DT05GSUdfVE9LRU4sIG51bGwpO1xuXG4gICAgY29uc3QgY29udGVudENvbmZpZyA9IG1lcmdlT2JqZWN0cyhbZGVmYXVsdENvbnRlbnRDb25maWcsIGlucHV0Q29udGVudENvbmZpZ10sIEtleVZhbHVlVHlwbGVWYWx1ZUZpbHRlci5OVUxMKTtcbiAgICBjb25zdCBjbG9zZUNvbmZpZyA9IG1lcmdlT2JqZWN0cyhbZGVmYXVsdENsb3NlQ29uZmlnLCBjb250ZW50Q29uZmlnPy5jbG9zZUNvbmZpZywgaW5wdXRDbG9zZUNvbmZpZ10sIEtleVZhbHVlVHlwbGVWYWx1ZUZpbHRlci5OVUxMKTtcbiAgICBjb250ZW50Q29uZmlnLmNsb3NlQ29uZmlnID0gY2xvc2VDb25maWc7XG5cbiAgICByZXR1cm4gbWF0RGlhbG9nLm9wZW4oRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGhlaWdodDogJ2NhbGModmFyKC0tdmgxMDApICogMC45KScsXG4gICAgICB3aWR0aDogJzgwdncnLFxuICAgICAgbWluSGVpZ2h0OiA0MDAsXG4gICAgICBtaW5XaWR0aDogMzYwLFxuICAgICAgLi4uc2FuaXRpemVEYnhEaWFsb2dDb250ZW50Q29uZmlnKGNvbnRlbnRDb25maWcuZGlhbG9nQ29uZmlnKSxcbiAgICAgIGluamVjdG9yLFxuICAgICAgZGF0YToge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbnRlbnRDb25maWdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19