mis-crystal-design-system 18.2.12-test → 18.2.13

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.
@@ -104,65 +104,57 @@ function TzDpContainerComponent_div_14_div_2_Template(rf, ctx) { if (rf & 1) {
104
104
  i0.ɵɵadvance();
105
105
  i0.ɵɵtextInterpolate(weekDay_r12.label);
106
106
  } }
107
- function TzDpContainerComponent_div_14_div_4_div_1_button_1_Template(rf, ctx) { if (rf & 1) {
108
- const _r13 = i0.ɵɵgetCurrentView();
109
- i0.ɵɵelementStart(0, "button", 35);
110
- i0.ɵɵlistener("click", function TzDpContainerComponent_div_14_div_4_div_1_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const day_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectDay(day_r14)); })("keydown", function TzDpContainerComponent_div_14_div_4_div_1_button_1_Template_button_keydown_0_listener($event) { i0.ɵɵrestoreView(_r13); const day_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onDayKeydown($event, day_r14)); });
107
+ function TzDpContainerComponent_div_14_div_4_span_1_Template(rf, ctx) { if (rf & 1) {
108
+ const _r15 = i0.ɵɵgetCurrentView();
109
+ i0.ɵɵelementStart(0, "span", 33);
110
+ i0.ɵɵlistener("keydown", function TzDpContainerComponent_div_14_div_4_span_1_Template_span_keydown_0_listener($event) { i0.ɵɵrestoreView(_r15); const day_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onDayKeydown($event, day_r14)); })("keyup.enter", function TzDpContainerComponent_div_14_div_4_span_1_Template_span_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r15); const day_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectDay(day_r14)); })("keyup.space", function TzDpContainerComponent_div_14_div_4_span_1_Template_span_keyup_space_0_listener() { i0.ɵɵrestoreView(_r15); const day_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectDay(day_r14)); });
111
111
  i0.ɵɵtext(1);
112
112
  i0.ɵɵelementEnd();
113
113
  } if (rf & 2) {
114
114
  const day_r14 = i0.ɵɵnextContext().$implicit;
115
- const ctx_r1 = i0.ɵɵnextContext(3);
116
- i0.ɵɵproperty("tabindex", ctx_r1.isFocusedDay(day_r14) ? 0 : -1)("ngClass", i0.ɵɵpureFunction3(8, _c5, day_r14.isCurrentDay, day_r14.isSelectedDay, day_r14.isDisabledDay))("text", day_r14.toastMessage || "")("showOnHover", !!day_r14.toastMessage && ctx_r1.data.showDateMessagesTooltip);
117
- i0.ɵɵattribute("aria-label", ctx_r1.retractDayMonth(day_r14.date, ctx_r1.currentMonth(), ctx_r1.currentYearNumber()))("aria-disabled", day_r14.isDisabledDay ? "true" : null)("data-date", ctx_r1.currentYearNumber() + "-" + ctx_r1.currentMonthNumber() + "-" + day_r14.date);
115
+ const ctx_r1 = i0.ɵɵnextContext(2);
116
+ i0.ɵɵproperty("tabindex", ctx_r1.isFocusedDay(day_r14) ? 0 : -1)("ngClass", i0.ɵɵpureFunction3(9, _c5, day_r14.isCurrentDay, day_r14.isSelectedDay, day_r14.isDisabledDay))("text", day_r14.toastMessage)("showOnHover", !!day_r14.toastMessage && ctx_r1.data.showDateMessagesTooltip);
117
+ i0.ɵɵattribute("aria-label", ctx_r1.retractDayMonth(day_r14.date, ctx_r1.currentMonth(), ctx_r1.currentYearNumber()))("aria-selected", day_r14.isSelectedDay)("aria-disabled", day_r14.isDisabledDay ? "true" : null)("data-date", ctx_r1.currentYearNumber() + "-" + ctx_r1.currentMonthNumber() + "-" + day_r14.date);
118
118
  i0.ɵɵadvance();
119
- i0.ɵɵtextInterpolate(day_r14.date);
120
- } }
121
- function TzDpContainerComponent_div_14_div_4_div_1_Template(rf, ctx) { if (rf & 1) {
122
- i0.ɵɵelementStart(0, "div", 33);
123
- i0.ɵɵtemplate(1, TzDpContainerComponent_div_14_div_4_div_1_button_1_Template, 2, 12, "button", 34);
124
- i0.ɵɵelementEnd();
125
- } if (rf & 2) {
126
- const day_r14 = ctx.$implicit;
127
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(3, _c4, day_r14.isSelectedDay, day_r14.isDisabledDay, day_r14.date > 0 && !day_r14.isSelectedDay));
128
- i0.ɵɵattribute("aria-selected", day_r14.date > 0 ? !!day_r14.isSelectedDay : null);
129
- i0.ɵɵadvance();
130
- i0.ɵɵproperty("ngIf", day_r14.date > 0);
119
+ i0.ɵɵtextInterpolate1(" ", day_r14.date, " ");
131
120
  } }
132
121
  function TzDpContainerComponent_div_14_div_4_Template(rf, ctx) { if (rf & 1) {
122
+ const _r13 = i0.ɵɵgetCurrentView();
133
123
  i0.ɵɵelementStart(0, "div", 31);
134
- i0.ɵɵtemplate(1, TzDpContainerComponent_div_14_div_4_div_1_Template, 2, 7, "div", 32);
124
+ i0.ɵɵlistener("click", function TzDpContainerComponent_div_14_div_4_Template_div_click_0_listener() { const day_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectDay(day_r14)); });
125
+ i0.ɵɵtemplate(1, TzDpContainerComponent_div_14_div_4_span_1_Template, 2, 13, "span", 32);
135
126
  i0.ɵɵelementEnd();
136
127
  } if (rf & 2) {
137
- const week_r15 = ctx.$implicit;
128
+ const day_r14 = ctx.$implicit;
129
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(2, _c4, day_r14.isSelectedDay, day_r14.isDisabledDay, day_r14.date > 0 && !day_r14.isSelectedDay));
138
130
  i0.ɵɵadvance();
139
- i0.ɵɵproperty("ngForOf", week_r15);
131
+ i0.ɵɵproperty("ngIf", day_r14.date > 0);
140
132
  } }
141
133
  function TzDpContainerComponent_div_14_Template(rf, ctx) { if (rf & 1) {
142
134
  i0.ɵɵelementStart(0, "div", 24)(1, "div", 25);
143
135
  i0.ɵɵtemplate(2, TzDpContainerComponent_div_14_div_2_Template, 3, 5, "div", 26);
144
136
  i0.ɵɵelementEnd();
145
137
  i0.ɵɵelementStart(3, "div", 27);
146
- i0.ɵɵtemplate(4, TzDpContainerComponent_div_14_div_4_Template, 2, 1, "div", 28);
138
+ i0.ɵɵtemplate(4, TzDpContainerComponent_div_14_div_4_Template, 2, 6, "div", 28);
147
139
  i0.ɵɵelementEnd()();
148
140
  } if (rf & 2) {
149
141
  const ctx_r1 = i0.ɵɵnextContext();
150
142
  i0.ɵɵadvance(2);
151
143
  i0.ɵɵproperty("ngForOf", ctx_r1.weekDays());
152
144
  i0.ɵɵadvance(2);
153
- i0.ɵɵproperty("ngForOf", ctx_r1.currentMonthWeeks());
145
+ i0.ɵɵproperty("ngForOf", ctx_r1.currentMonthDates());
154
146
  } }
155
147
  function TzDpContainerComponent_div_15_div_15_Template(rf, ctx) { if (rf & 1) {
156
148
  const _r17 = i0.ɵɵgetCurrentView();
157
- i0.ɵɵelementStart(0, "div", 46)(1, "label", 47);
149
+ i0.ɵɵelementStart(0, "div", 44)(1, "label", 45);
158
150
  i0.ɵɵtext(2, "AM/PM");
159
151
  i0.ɵɵelementEnd();
160
- i0.ɵɵelementStart(3, "select", 48);
152
+ i0.ɵɵelementStart(3, "select", 46);
161
153
  i0.ɵɵlistener("ngModelChange", function TzDpContainerComponent_div_15_div_15_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectedAmPmSignal.set($event)); });
162
- i0.ɵɵelementStart(4, "option", 49);
154
+ i0.ɵɵelementStart(4, "option", 47);
163
155
  i0.ɵɵtext(5, "AM");
164
156
  i0.ɵɵelementEnd();
165
- i0.ɵɵelementStart(6, "option", 50);
157
+ i0.ɵɵelementStart(6, "option", 48);
166
158
  i0.ɵɵtext(7, "PM");
167
159
  i0.ɵɵelementEnd()()();
168
160
  } if (rf & 2) {
@@ -172,25 +164,25 @@ function TzDpContainerComponent_div_15_div_15_Template(rf, ctx) { if (rf & 1) {
172
164
  } }
173
165
  function TzDpContainerComponent_div_15_Template(rf, ctx) { if (rf & 1) {
174
166
  const _r16 = i0.ɵɵgetCurrentView();
175
- i0.ɵɵelementStart(0, "div", 36)(1, "div", 37)(2, "span");
167
+ i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "span");
176
168
  i0.ɵɵtext(3, "Time");
177
169
  i0.ɵɵelementEnd()();
178
- i0.ɵɵelementStart(4, "div", 38)(5, "div", 39)(6, "label", 40);
170
+ i0.ɵɵelementStart(4, "div", 36)(5, "div", 37)(6, "label", 38);
179
171
  i0.ɵɵtext(7, "Hour");
180
172
  i0.ɵɵelementEnd();
181
- i0.ɵɵelementStart(8, "input", 41);
173
+ i0.ɵɵelementStart(8, "input", 39);
182
174
  i0.ɵɵlistener("ngModelChange", function TzDpContainerComponent_div_15_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectedHourSignal.set($event)); })("input", function TzDpContainerComponent_div_15_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onHourInput($event)); })("blur", function TzDpContainerComponent_div_15_Template_input_blur_8_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.validateHourInput()); });
183
175
  i0.ɵɵelementEnd()();
184
- i0.ɵɵelementStart(9, "div", 42);
176
+ i0.ɵɵelementStart(9, "div", 40);
185
177
  i0.ɵɵtext(10, ":");
186
178
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(11, "div", 39)(12, "label", 43);
179
+ i0.ɵɵelementStart(11, "div", 37)(12, "label", 41);
188
180
  i0.ɵɵtext(13, "Minute");
189
181
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(14, "input", 44);
182
+ i0.ɵɵelementStart(14, "input", 42);
191
183
  i0.ɵɵlistener("ngModelChange", function TzDpContainerComponent_div_15_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectedMinuteSignal.set($event)); })("input", function TzDpContainerComponent_div_15_Template_input_input_14_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMinuteInput($event)); })("blur", function TzDpContainerComponent_div_15_Template_input_blur_14_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.validateMinuteInput()); });
192
184
  i0.ɵɵelementEnd()();
193
- i0.ɵɵtemplate(15, TzDpContainerComponent_div_15_div_15_Template, 8, 1, "div", 45);
185
+ i0.ɵɵtemplate(15, TzDpContainerComponent_div_15_div_15_Template, 8, 1, "div", 43);
194
186
  i0.ɵɵelementEnd()();
195
187
  } if (rf & 2) {
196
188
  const ctx_r1 = i0.ɵɵnextContext();
@@ -203,11 +195,11 @@ function TzDpContainerComponent_div_15_Template(rf, ctx) { if (rf & 1) {
203
195
  } }
204
196
  function TzDpContainerComponent_div_16_Template(rf, ctx) { if (rf & 1) {
205
197
  const _r18 = i0.ɵɵgetCurrentView();
206
- i0.ɵɵelementStart(0, "div", 51)(1, "button", 52);
198
+ i0.ɵɵelementStart(0, "div", 49)(1, "button", 50);
207
199
  i0.ɵɵlistener("click", function TzDpContainerComponent_div_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelDatePicker()); });
208
200
  i0.ɵɵtext(2, "Cancel");
209
201
  i0.ɵɵelementEnd();
210
- i0.ɵɵelementStart(3, "button", 53);
202
+ i0.ɵɵelementStart(3, "button", 51);
211
203
  i0.ɵɵlistener("click", function TzDpContainerComponent_div_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.applyDate()); });
212
204
  i0.ɵɵtext(4, "Apply");
213
205
  i0.ɵɵelementEnd()();
@@ -309,14 +301,6 @@ export class TzDpContainerComponent {
309
301
  this.currentMonth = computed(() => this.currentMonthSignal());
310
302
  this.currentYearNumber = computed(() => this.currentYearNumberSignal());
311
303
  this.currentMonthDates = computed(() => this.currentMonthDatesSignal());
312
- this.currentMonthWeeks = computed(() => {
313
- const dates = this.currentMonthDatesSignal();
314
- const weeks = [];
315
- for (let i = 0; i < dates.length; i += 7) {
316
- weeks.push(dates.slice(i, i + 7));
317
- }
318
- return weeks;
319
- });
320
304
  this.isPreviousMonthDisabled = computed(() => this.isPreviousMonthDisabledSignal());
321
305
  this.isNextMonthDisabled = computed(() => this.isNextMonthDisabledSignal());
322
306
  this.localSelectedDate = computed(() => this.localSelectedDateSignal());
@@ -1004,7 +988,7 @@ export class TzDpContainerComponent {
1004
988
  static { this.ɵfac = function TzDpContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TzDpContainerComponent)(i0.ɵɵdirectiveInject(CONTAINER_DATA), i0.ɵɵdirectiveInject(i1.ToastService), i0.ɵɵdirectiveInject(i2.LiveAnnouncer)); }; }
1005
989
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TzDpContainerComponent, selectors: [["mis-tz-dp"]], hostBindings: function TzDpContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {
1006
990
  i0.ɵɵlistener("keydown.esc", function TzDpContainerComponent_keydown_esc_HostBindingHandler() { return ctx.closeOnEsc(); });
1007
- } }, decls: 17, vars: 19, consts: [["aria-label", "date picker", "cdkTrapFocus", "", 1, "datepicker-container", 3, "ngClass", "cdkTrapFocusAutoCapture"], ["tabindex", "-1", "cdkFocusInitial", ""], [1, "datepicker-container__header"], ["aria-label", "Previous Month", "type", "button", 1, "datepicker-container__arrow__icon", 3, "click", "disabled", "ngClass"], ["aria-hidden", "true", "width", "20", "height", "16", "viewBox", "0 0 20 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z", "fill", "#181F33"], ["class", "month-header", "type", "button", 3, "click", 4, "ngIf"], ["class", "year-header", "type", "button", 3, "click", 4, "ngIf"], ["aria-label", "Next Month", "type", "button", 1, "datepicker-container__arrow__icon", 3, "click", "disabled", "ngClass"], [1, "datepicker-container__body"], ["class", "month-selector", "role", "grid", "aria-label", "Select month", 4, "ngIf"], ["class", "year-selector", "role", "grid", "aria-label", "Select year", 4, "ngIf"], ["role", "grid", "aria-label", "Calendar", "class", "datepicker-container__grid", 4, "ngIf"], ["class", "datepicker-container__time", 4, "ngIf"], ["class", "datepicker-container__footer", 4, "ngIf"], ["type", "button", 1, "month-header", 3, "click"], ["type", "button", 1, "year-header", 3, "click"], ["role", "grid", "aria-label", "Select month", 1, "month-selector"], ["role", "row", 1, "row"], ["class", "month", "role", "gridcell", "type", "button", 3, "disabled", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "gridcell", "type", "button", 1, "month", 3, "click", "disabled", "ngClass"], ["role", "grid", "aria-label", "Select year", 1, "year-selector"], ["class", "year", "role", "gridcell", "type", "button", 3, "disabled", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "gridcell", "type", "button", 1, "year", 3, "click", "disabled", "ngClass"], ["role", "grid", "aria-label", "Calendar", 1, "datepicker-container__grid"], ["role", "row", 1, "datepicker-container__weekdays"], ["role", "columnheader", "class", "datepicker-container__weekday", 4, "ngFor", "ngForOf"], ["role", "rowgroup", 1, "datepicker-container__days"], ["role", "row", "class", "datepicker-container__week", 4, "ngFor", "ngForOf"], ["role", "columnheader", 1, "datepicker-container__weekday"], [3, "ngClass"], ["role", "row", 1, "datepicker-container__week"], ["role", "gridcell", "class", "datepicker-container__day", 3, "ngClass", 4, "ngFor", "ngForOf"], ["role", "gridcell", 1, "datepicker-container__day", 3, "ngClass"], ["type", "button", "class", "datepicker-container__day-btn", "misToolTip", "", "position", "right", 3, "tabindex", "ngClass", "text", "showOnHover", "click", "keydown", 4, "ngIf"], ["type", "button", "misToolTip", "", "position", "right", 1, "datepicker-container__day-btn", 3, "click", "keydown", "tabindex", "ngClass", "text", "showOnHover"], [1, "datepicker-container__time"], [1, "time-picker-header"], [1, "time-picker-controls"], [1, "time-input-group"], ["for", "hourInput"], ["id", "hourInput", "type", "number", 1, "time-input", 3, "ngModelChange", "input", "blur", "min", "max", "step", "ngModel", "title"], [1, "time-separator"], ["for", "minuteInput"], ["id", "minuteInput", "type", "number", "min", "0", "max", "59", "title", "Enter minute (0-59)", 1, "time-input", 3, "ngModelChange", "input", "blur", "step", "ngModel"], ["class", "am-pm-selector", 4, "ngIf"], [1, "am-pm-selector"], ["for", "amPmSelect"], ["id", "amPmSelect", 1, "am-pm-select", 3, "ngModelChange", "ngModel"], ["value", "AM"], ["value", "PM"], [1, "datepicker-container__footer"], ["mis-button", "", "size", "md", "type", "'none'", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", 3, "click", "disabled"]], template: function TzDpContainerComponent_Template(rf, ctx) { if (rf & 1) {
991
+ } }, decls: 17, vars: 19, consts: [["aria-label", "date picker", "cdkTrapFocus", "", 1, "datepicker-container", 3, "ngClass", "cdkTrapFocusAutoCapture"], ["tabindex", "-1", "cdkFocusInitial", ""], [1, "datepicker-container__header"], ["aria-label", "Previous Month", "type", "button", 1, "datepicker-container__arrow__icon", 3, "click", "disabled", "ngClass"], ["aria-hidden", "true", "width", "20", "height", "16", "viewBox", "0 0 20 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z", "fill", "#181F33"], ["class", "month-header", "type", "button", 3, "click", 4, "ngIf"], ["class", "year-header", "type", "button", 3, "click", 4, "ngIf"], ["aria-label", "Next Month", "type", "button", 1, "datepicker-container__arrow__icon", 3, "click", "disabled", "ngClass"], [1, "datepicker-container__body"], ["class", "month-selector", "role", "grid", "aria-label", "Select month", 4, "ngIf"], ["class", "year-selector", "role", "grid", "aria-label", "Select year", 4, "ngIf"], ["role", "grid", "aria-label", "Calendar", "class", "datepicker-container__grid", 4, "ngIf"], ["class", "datepicker-container__time", 4, "ngIf"], ["class", "datepicker-container__footer", 4, "ngIf"], ["type", "button", 1, "month-header", 3, "click"], ["type", "button", 1, "year-header", 3, "click"], ["role", "grid", "aria-label", "Select month", 1, "month-selector"], ["role", "row", 1, "row"], ["class", "month", "role", "gridcell", "type", "button", 3, "disabled", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "gridcell", "type", "button", 1, "month", 3, "click", "disabled", "ngClass"], ["role", "grid", "aria-label", "Select year", 1, "year-selector"], ["class", "year", "role", "gridcell", "type", "button", 3, "disabled", "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "gridcell", "type", "button", 1, "year", 3, "click", "disabled", "ngClass"], ["role", "grid", "aria-label", "Calendar", 1, "datepicker-container__grid"], ["role", "row", 1, "datepicker-container__weekdays"], ["role", "columnheader", "class", "datepicker-container__weekday", 4, "ngFor", "ngForOf"], ["role", "row", 1, "datepicker-container__days"], ["role", "gridcell", "class", "datepicker-container__day", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], ["role", "columnheader", 1, "datepicker-container__weekday"], [3, "ngClass"], ["role", "gridcell", 1, "datepicker-container__day", 3, "click", "ngClass"], ["role", "button", "misToolTip", "", "position", "right", 3, "tabindex", "ngClass", "text", "showOnHover", "keydown", "keyup.enter", "keyup.space", 4, "ngIf"], ["role", "button", "misToolTip", "", "position", "right", 3, "keydown", "keyup.enter", "keyup.space", "tabindex", "ngClass", "text", "showOnHover"], [1, "datepicker-container__time"], [1, "time-picker-header"], [1, "time-picker-controls"], [1, "time-input-group"], ["for", "hourInput"], ["id", "hourInput", "type", "number", 1, "time-input", 3, "ngModelChange", "input", "blur", "min", "max", "step", "ngModel", "title"], [1, "time-separator"], ["for", "minuteInput"], ["id", "minuteInput", "type", "number", "min", "0", "max", "59", "title", "Enter minute (0-59)", 1, "time-input", 3, "ngModelChange", "input", "blur", "step", "ngModel"], ["class", "am-pm-selector", 4, "ngIf"], [1, "am-pm-selector"], ["for", "amPmSelect"], ["id", "amPmSelect", 1, "am-pm-select", 3, "ngModelChange", "ngModel"], ["value", "AM"], ["value", "PM"], [1, "datepicker-container__footer"], ["mis-button", "", "size", "md", "type", "'none'", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", 3, "click", "disabled"]], template: function TzDpContainerComponent_Template(rf, ctx) { if (rf & 1) {
1008
992
  i0.ɵɵelementStart(0, "div", 0);
1009
993
  i0.ɵɵelement(1, "div", 1);
1010
994
  i0.ɵɵelementStart(2, "div", 2)(3, "button", 3);
@@ -1049,11 +1033,11 @@ export class TzDpContainerComponent {
1049
1033
  i0.ɵɵproperty("ngIf", ctx.data.dpConfig.enableTime === true);
1050
1034
  i0.ɵɵadvance();
1051
1035
  i0.ɵɵproperty("ngIf", ctx.data.dpConfig.showApplyButton || ctx.data.dpConfig.enableTime);
1052
- } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.MinValidator, i4.MaxValidator, i4.NgModel, i5.ButtonDirective, i2.CdkTrapFocus, i6.ToolTipDirective], styles: [".h1[_ngcontent-%COMP%]{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2[_ngcontent-%COMP%]{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3[_ngcontent-%COMP%]{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4[_ngcontent-%COMP%]{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b[_ngcontent-%COMP%]{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5[_ngcontent-%COMP%]{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b[_ngcontent-%COMP%]{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b[_ngcontent-%COMP%]{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8[_ngcontent-%COMP%]{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9[_ngcontent-%COMP%]{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1[_ngcontent-%COMP%]{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.datepicker-container[_ngcontent-%COMP%]{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;-webkit-user-select:none;user-select:none;box-sizing:border-box;width:290px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%]{display:flex;height:32px;margin:16px;justify-content:space-between;align-items:center;width:258px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .month-header[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .year-header[_ngcontent-%COMP%]{padding:8px;border-radius:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .month-header[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .year-header[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:var(--brand-primary-active, #DAE1F3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon.disabled-month[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]:nth-child(1){transform:rotate(180deg)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%]{width:258px;height:100%;margin:0 16px 16px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]{padding:10px 6px;cursor:pointer;border-radius:5px;text-align:center;background-color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]:hover{background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-year[_ngcontent-%COMP%]{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-year[_ngcontent-%COMP%]:hover{background-color:transparent}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-year[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-year[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%]{width:100%;display:flex;padding-bottom:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%]{width:36px;height:18px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__week[_ngcontent-%COMP%]{display:flex;gap:2px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%]{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.selected-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);cursor:pointer}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.disabled-day[_ngcontent-%COMP%]{cursor:default}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.disabled-day[_ngcontent-%COMP%]:hover{background-color:transparent}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-day):hover .datepicker-container__day-btn.selected-day[_ngcontent-%COMP%]{color:var(--text-primary, #181F33)!important}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] .datepicker-container__day-btn[_ngcontent-%COMP%]{background:none;border:none;padding:0;margin:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer;font-family:inherit;font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] .datepicker-container__day-btn.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] .datepicker-container__day-btn.selected-day[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] .datepicker-container__day-btn.disabled-day[_ngcontent-%COMP%]{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%]{border-top:1px solid var(--border-primary, #E0E0E0);padding:16px;margin:0 16px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-header[_ngcontent-%COMP%]{margin-bottom:12px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]{width:50px;height:32px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]:invalid{border-color:#dc3545;background-color:#fff5f5}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]::-webkit-inner-spin-button, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[type=number][_ngcontent-%COMP%]{-moz-appearance:textfield}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-separator[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--text-primary, #181F33);margin-top:20px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] .am-pm-select[_ngcontent-%COMP%]{width:60px;height:42px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;background-color:#fff}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] .am-pm-select[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;bottom:0;align-items:center;position:sticky;padding:16px;border-top:1px solid var(--border-primary, #E0E0E0)}.remove-box-shadow[_ngcontent-%COMP%]{box-shadow:none!important;border:none!important;border-radius:0!important}.datepicker-container__arrow__icon[_ngcontent-%COMP%], .month-header[_ngcontent-%COMP%], .year-header[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font:inherit}.datepicker-container__arrow__icon[_ngcontent-%COMP%]:disabled, .month-header[_ngcontent-%COMP%]:disabled, .year-header[_ngcontent-%COMP%]:disabled{cursor:not-allowed}.month-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%], .year-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font:inherit}.month-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled, .year-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{cursor:not-allowed}"] }); }
1036
+ } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.MinValidator, i4.MaxValidator, i4.NgModel, i5.ButtonDirective, i2.CdkTrapFocus, i6.ToolTipDirective], styles: [".h1[_ngcontent-%COMP%]{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2[_ngcontent-%COMP%]{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3[_ngcontent-%COMP%]{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4[_ngcontent-%COMP%]{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b[_ngcontent-%COMP%]{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5[_ngcontent-%COMP%]{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b[_ngcontent-%COMP%]{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b[_ngcontent-%COMP%]{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8[_ngcontent-%COMP%]{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9[_ngcontent-%COMP%]{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1[_ngcontent-%COMP%]{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.datepicker-container[_ngcontent-%COMP%]{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;-webkit-user-select:none;user-select:none;box-sizing:border-box;width:290px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%]{display:flex;height:32px;margin:16px;justify-content:space-between;align-items:center;width:258px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .month-header[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .year-header[_ngcontent-%COMP%]{padding:8px;border-radius:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .month-header[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .year-header[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:var(--brand-primary-active, #DAE1F3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon.disabled-month[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__header[_ngcontent-%COMP%] .datepicker-container__arrow__icon[_ngcontent-%COMP%]:nth-child(1){transform:rotate(180deg)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%]{width:258px;height:100%;margin:0 16px 16px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]{padding:10px 6px;cursor:pointer;border-radius:5px;text-align:center;background-color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .year[_ngcontent-%COMP%]:hover{background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-year[_ngcontent-%COMP%]{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .disable-year[_ngcontent-%COMP%]:hover{background-color:transparent}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-month[_ngcontent-%COMP%], .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-year[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-month[_ngcontent-%COMP%]:hover, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .select-year[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%]{width:100%;display:flex;padding-bottom:10px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%]{width:36px;height:18px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__weekdays[_ngcontent-%COMP%] .datepicker-container__weekday[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:2px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%]{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.selected-day[_ngcontent-%COMP%]{background-color:var(--brand-primary, #0937B2);cursor:pointer}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.disabled-day[_ngcontent-%COMP%]{cursor:default}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.disabled-day[_ngcontent-%COMP%]:hover{background-color:transparent}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day.is-valid-date[_ngcontent-%COMP%]:not(.disabled-day):not(.selected-day):hover span.selected-day[_ngcontent-%COMP%]{color:var(--text-primary, #181F33)!important}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] span.current-day[_ngcontent-%COMP%]{font-weight:700;letter-spacing:.25px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] span.selected-day[_ngcontent-%COMP%]{color:var(--bg-primary, #FFFFFF)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__body[_ngcontent-%COMP%] .datepicker-container__days[_ngcontent-%COMP%] .datepicker-container__day[_ngcontent-%COMP%] span.disabled-day[_ngcontent-%COMP%]{color:var(--text-disabled, #C8CDD3)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%]{border-top:1px solid var(--border-primary, #E0E0E0);padding:16px;margin:0 16px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-header[_ngcontent-%COMP%]{margin-bottom:12px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:var(--text-primary, #181F33)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]{width:50px;height:32px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;text-align:center}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]:invalid{border-color:#dc3545;background-color:#fff5f5}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]::-webkit-inner-spin-button, .datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[_ngcontent-%COMP%]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-input-group[_ngcontent-%COMP%] .time-input[type=number][_ngcontent-%COMP%]{-moz-appearance:textfield}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .time-separator[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--text-primary, #181F33);margin-top:20px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] .am-pm-select[_ngcontent-%COMP%]{width:60px;height:42px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;background-color:#fff}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__time[_ngcontent-%COMP%] .time-picker-controls[_ngcontent-%COMP%] .am-pm-selector[_ngcontent-%COMP%] .am-pm-select[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container[_ngcontent-%COMP%] .datepicker-container__footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;bottom:0;align-items:center;position:sticky;padding:16px;border-top:1px solid var(--border-primary, #E0E0E0)}.remove-box-shadow[_ngcontent-%COMP%]{box-shadow:none!important;border:none!important;border-radius:0!important}.datepicker-container__arrow__icon[_ngcontent-%COMP%], .month-header[_ngcontent-%COMP%], .year-header[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font:inherit}.datepicker-container__arrow__icon[_ngcontent-%COMP%]:disabled, .month-header[_ngcontent-%COMP%]:disabled, .year-header[_ngcontent-%COMP%]:disabled{cursor:not-allowed}.month-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%], .year-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font:inherit}.month-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled, .year-selector[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{cursor:not-allowed}"] }); }
1053
1037
  }
1054
1038
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TzDpContainerComponent, [{
1055
1039
  type: Component,
1056
- args: [{ selector: "mis-tz-dp", template: "<div class=\"datepicker-container\" [ngClass]=\"data.disableBoxShadow?'remove-box-shadow':''\" aria-label=\"date picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"datepicker-container__header\">\n <button\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('PREVIOUS')\"\n aria-label=\"Previous Month\"\n [attr.aria-disabled]=\"isPreviousMonthDisabled() || isSelectingMonth() ? 'true' : null\"\n [disabled]=\"isPreviousMonthDisabled() || isSelectingMonth()\"\n [ngClass]=\"{ 'disabled-month': isPreviousMonthDisabled() || isSelectingMonth() }\"\n type=\"button\"\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </button>\n\n <button\n *ngIf=\"!isSelectingYear()\"\n (click)=\"toggleMonthSelector()\"\n class=\"month-header\"\n type=\"button\"\n [attr.aria-label]=\"'Select month, currently ' + availableMonths()[currentMonthNumber()]\"\n [attr.aria-expanded]=\"isSelectingMonth()\"\n [attr.aria-pressed]=\"isSelectingMonth()\"\n >\n {{ isYearSelectionFlow() ? selectedYear() : availableMonths()[currentMonthNumber()] }}\n </button>\n <button\n *ngIf=\"!isSelectingMonth()\"\n (click)=\"toggleYearSelector()\"\n class=\"year-header\"\n type=\"button\"\n [attr.aria-label]=\"'Select year, currently ' + currentYearNumber()\"\n [attr.aria-expanded]=\"isSelectingYear()\"\n [attr.aria-pressed]=\"isSelectingYear()\"\n >\n {{ isSelectingYear() ? yearRange : currentYearNumber() }}\n </button>\n\n <button\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('NEXT')\"\n aria-label=\"Next Month\"\n [attr.aria-disabled]=\"isNextMonthDisabled() || isSelectingMonth() ? 'true' : null\"\n [disabled]=\"isNextMonthDisabled() || isSelectingMonth()\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() || isSelectingMonth() }\"\n type=\"button\"\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </button>\n </div>\n <div class=\"datepicker-container__body\">\n\n <div *ngIf=\"isSelectingMonth() && !isSelectingYear()\" class=\"month-selector\" role=\"grid\" aria-label=\"Select month\">\n <div class=\"row\" role=\"row\">\n <button\n *ngFor=\"let month of availableMonths(); let i = index\"\n class=\"month\"\n role=\"gridcell\"\n type=\"button\"\n [attr.aria-label]=\"month\"\n [attr.aria-selected]=\"month === availableMonths()[currentMonthNumber()]\"\n [attr.aria-disabled]=\"disabledMonths()[i] ? 'true' : null\"\n [disabled]=\"disabledMonths()[i]\"\n (click)=\"!disabledMonths()[i] && selectMonth(month)\"\n [ngClass]=\"{\n 'disable-month': disabledMonths()[i],\n 'select-month': !disabledMonths()[currentMonthNumber()] && month === availableMonths()[currentMonthNumber()]\n }\"\n >\n {{ month }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"isSelectingYear() && !isSelectingMonth()\" class=\"year-selector\" role=\"grid\" aria-label=\"Select year\">\n <div class=\"row\" role=\"row\">\n <button\n *ngFor=\"let year of availableYears(); let i = index\"\n class=\"year\"\n role=\"gridcell\"\n type=\"button\"\n [attr.aria-label]=\"year.toString()\"\n [attr.aria-selected]=\"year === currentYearNumber()\"\n [attr.aria-disabled]=\"disabledYears()[i] ? 'true' : null\"\n [disabled]=\"disabledYears()[i]\"\n (click)=\"!disabledYears()[i] && selectYear(year)\"\n [ngClass]=\"{\n 'disable-year': disabledYears()[i],\n 'select-year': year === currentYearNumber()\n }\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!isSelectingMonth() && !isSelectingYear()\" role=\"grid\" aria-label=\"Calendar\" class=\"datepicker-container__grid\">\n <div role=\"row\" class=\"datepicker-container__weekdays\">\n <div role=\"columnheader\" class=\"datepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\" [attr.aria-label]=\"weekDay.label\">\n <span [ngClass]=\"{ 'current-day': weekDay.isCurrentDay }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div role=\"rowgroup\" class=\"datepicker-container__days\">\n <div role=\"row\" class=\"datepicker-container__week\" *ngFor=\"let week of currentMonthWeeks()\">\n <div\n role=\"gridcell\"\n class=\"datepicker-container__day\"\n [attr.aria-selected]=\"day.date > 0 ? !!day.isSelectedDay : null\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay,\n 'is-valid-date': day.date > 0 && !day.isSelectedDay\n }\"\n *ngFor=\"let day of week\"\n >\n <button\n *ngIf=\"day.date > 0\"\n type=\"button\"\n class=\"datepicker-container__day-btn\"\n [tabindex]=\"isFocusedDay(day) ? 0 : -1\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth(), currentYearNumber())\"\n [attr.aria-disabled]=\"day.isDisabledDay ? 'true' : null\"\n [attr.data-date]=\"currentYearNumber() + '-' + currentMonthNumber() + '-' + day.date\"\n [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay\n }\"\n misToolTip\n [text]=\"day.toastMessage || ''\"\n [showOnHover]=\"!!day.toastMessage && data.showDateMessagesTooltip\"\n position=\"right\"\n (click)=\"selectDay(day)\"\n (keydown)=\"onDayKeydown($event, day)\"\n >{{ day.date }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"datepicker-container__time\" *ngIf=\"data.dpConfig.enableTime === true\">\n <div class=\"time-picker-header\">\n <span>Time</span>\n </div>\n <div class=\"time-picker-controls\">\n <div class=\"time-input-group\">\n <label for=\"hourInput\">Hour</label>\n <input\n id=\"hourInput\"\n type=\"number\"\n [min]=\"is12HourFormat() ? 1 : 0\"\n [max]=\"is12HourFormat() ? 12 : 23\"\n [step]=\"1\"\n [ngModel]=\"selectedHour()\"\n (ngModelChange)=\"selectedHourSignal.set($event)\"\n (input)=\"onHourInput($event)\"\n (blur)=\"validateHourInput()\"\n class=\"time-input\"\n [title]=\"is12HourFormat() ? 'Enter hour (1-12)' : 'Enter hour (0-23)'\">\n </div>\n <div class=\"time-separator\">:</div>\n <div class=\"time-input-group\">\n <label for=\"minuteInput\">Minute</label>\n <input\n id=\"minuteInput\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n [step]=\"1\"\n [ngModel]=\"selectedMinute()\"\n (ngModelChange)=\"selectedMinuteSignal.set($event)\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"validateMinuteInput()\"\n class=\"time-input\"\n title=\"Enter minute (0-59)\">\n </div>\n <div class=\"am-pm-selector\" *ngIf=\"is12HourFormat()\">\n <label for=\"amPmSelect\">AM/PM</label>\n <select\n id=\"amPmSelect\"\n [ngModel]=\"selectedAmPm()\"\n (ngModelChange)=\"selectedAmPmSignal.set($event)\"\n class=\"am-pm-select\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"datepicker-container__footer\" *ngIf=\"data.dpConfig.showApplyButton || data.dpConfig.enableTime\">\n <button mis-button size=\"md\" type=\"'none'\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button size=\"md\" type=\"primary\" (click)=\"applyDate()\" [disabled]=\"!(data.date || localSelectedDate()?.date)\">Apply</button>\n </div>\n</div>\n", styles: [".h1{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7,.datepicker-container .datepicker-container__body .month,.datepicker-container .datepicker-container__body .year{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.datepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;-webkit-user-select:none;user-select:none;box-sizing:border-box;width:290px}.datepicker-container .datepicker-container__header{display:flex;height:32px;margin:16px;justify-content:space-between;align-items:center;width:258px}.datepicker-container .datepicker-container__header span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.datepicker-container .datepicker-container__header .month-header,.datepicker-container .datepicker-container__header .year-header{padding:8px;border-radius:10px}.datepicker-container .datepicker-container__header .month-header:hover,.datepicker-container .datepicker-container__header .year-header:hover{cursor:pointer;background-color:var(--brand-primary-active, #DAE1F3)}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.datepicker-container .datepicker-container__body{width:258px;height:100%;margin:0 16px 16px}.datepicker-container .datepicker-container__body .row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.datepicker-container .datepicker-container__body .month,.datepicker-container .datepicker-container__body .year{padding:10px 6px;cursor:pointer;border-radius:5px;text-align:center;background-color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .month:hover,.datepicker-container .datepicker-container__body .year:hover{background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__body .disable-month,.datepicker-container .datepicker-container__body .disable-year{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__body .disable-month:hover,.datepicker-container .datepicker-container__body .disable-year:hover{background-color:transparent}.datepicker-container .datepicker-container__body .select-month,.datepicker-container .datepicker-container__body .select-year{background-color:var(--brand-primary, #0937B2);color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .select-month:hover,.datepicker-container .datepicker-container__body .select-year:hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__body .datepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday{width:36px;height:18px;text-align:center}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__body .datepicker-container__days{display:flex;flex-direction:column;gap:2px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__week{display:flex;gap:2px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:4px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.selected-day{background-color:var(--brand-primary, #0937B2);cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day{cursor:default}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day:hover{background-color:transparent}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-day):hover .datepicker-container__day-btn.selected-day{color:var(--text-primary, #181F33)!important}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day .datepicker-container__day-btn{background:none;border:none;padding:0;margin:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer;font-family:inherit;font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day .datepicker-container__day-btn.current-day{font-weight:700;letter-spacing:.25px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day .datepicker-container__day-btn.selected-day{color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day .datepicker-container__day-btn.disabled-day{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__time{border-top:1px solid var(--border-primary, #E0E0E0);padding:16px;margin:0 16px}.datepicker-container .datepicker-container__time .time-picker-header{margin-bottom:12px}.datepicker-container .datepicker-container__time .time-picker-header span{font-size:14px;font-weight:600;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__time .time-picker-controls{display:flex;align-items:center;gap:8px}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group{display:flex;flex-direction:column;gap:4px}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group label{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input{width:50px;height:32px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;text-align:center}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input:invalid{border-color:#dc3545;background-color:#fff5f5}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input::-webkit-inner-spin-button,.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input[type=number]{-moz-appearance:textfield}.datepicker-container .datepicker-container__time .time-picker-controls .time-separator{font-size:18px;font-weight:600;color:var(--text-primary, #181F33);margin-top:20px}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector{display:flex;flex-direction:column;gap:4px}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector label{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector .am-pm-select{width:60px;height:42px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;background-color:#fff}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector .am-pm-select:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container .datepicker-container__footer{display:flex;justify-content:flex-end;gap:8px;bottom:0;align-items:center;position:sticky;padding:16px;border-top:1px solid var(--border-primary, #E0E0E0)}.remove-box-shadow{box-shadow:none!important;border:none!important;border-radius:0!important}.datepicker-container__arrow__icon,.month-header,.year-header{background:none;border:none;padding:0;cursor:pointer;font:inherit}.datepicker-container__arrow__icon:disabled,.month-header:disabled,.year-header:disabled{cursor:not-allowed}.month-selector button,.year-selector button{background:none;border:none;cursor:pointer;font:inherit}.month-selector button:disabled,.year-selector button:disabled{cursor:not-allowed}\n"] }]
1040
+ args: [{ selector: "mis-tz-dp", template: "<div class=\"datepicker-container\" [ngClass]=\"data.disableBoxShadow?'remove-box-shadow':''\" aria-label=\"date picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"datepicker-container__header\">\n <button\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('PREVIOUS')\"\n aria-label=\"Previous Month\"\n [attr.aria-disabled]=\"isPreviousMonthDisabled() || isSelectingMonth() ? 'true' : null\"\n [disabled]=\"isPreviousMonthDisabled() || isSelectingMonth()\"\n [ngClass]=\"{ 'disabled-month': isPreviousMonthDisabled() || isSelectingMonth() }\"\n type=\"button\"\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </button>\n\n <button\n *ngIf=\"!isSelectingYear()\"\n (click)=\"toggleMonthSelector()\"\n class=\"month-header\"\n type=\"button\"\n [attr.aria-label]=\"'Select month, currently ' + availableMonths()[currentMonthNumber()]\"\n [attr.aria-expanded]=\"isSelectingMonth()\"\n [attr.aria-pressed]=\"isSelectingMonth()\"\n >\n {{ isYearSelectionFlow() ? selectedYear() : availableMonths()[currentMonthNumber()] }}\n </button>\n <button\n *ngIf=\"!isSelectingMonth()\"\n (click)=\"toggleYearSelector()\"\n class=\"year-header\"\n type=\"button\"\n [attr.aria-label]=\"'Select year, currently ' + currentYearNumber()\"\n [attr.aria-expanded]=\"isSelectingYear()\"\n [attr.aria-pressed]=\"isSelectingYear()\"\n >\n {{ isSelectingYear() ? yearRange : currentYearNumber() }}\n </button>\n\n <button\n class=\"datepicker-container__arrow__icon\"\n (click)=\"navigateView('NEXT')\"\n aria-label=\"Next Month\"\n [attr.aria-disabled]=\"isNextMonthDisabled() || isSelectingMonth() ? 'true' : null\"\n [disabled]=\"isNextMonthDisabled() || isSelectingMonth()\"\n [ngClass]=\"{ 'disabled-month': isNextMonthDisabled() || isSelectingMonth() }\"\n type=\"button\"\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </button>\n </div>\n <div class=\"datepicker-container__body\">\n\n <div *ngIf=\"isSelectingMonth() && !isSelectingYear()\" class=\"month-selector\" role=\"grid\" aria-label=\"Select month\">\n <div class=\"row\" role=\"row\">\n <button\n *ngFor=\"let month of availableMonths(); let i = index\"\n class=\"month\"\n role=\"gridcell\"\n type=\"button\"\n [attr.aria-label]=\"month\"\n [attr.aria-selected]=\"month === availableMonths()[currentMonthNumber()]\"\n [attr.aria-disabled]=\"disabledMonths()[i] ? 'true' : null\"\n [disabled]=\"disabledMonths()[i]\"\n (click)=\"!disabledMonths()[i] && selectMonth(month)\"\n [ngClass]=\"{\n 'disable-month': disabledMonths()[i],\n 'select-month': !disabledMonths()[currentMonthNumber()] && month === availableMonths()[currentMonthNumber()]\n }\"\n >\n {{ month }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"isSelectingYear() && !isSelectingMonth()\" class=\"year-selector\" role=\"grid\" aria-label=\"Select year\">\n <div class=\"row\" role=\"row\">\n <button\n *ngFor=\"let year of availableYears(); let i = index\"\n class=\"year\"\n role=\"gridcell\"\n type=\"button\"\n [attr.aria-label]=\"year.toString()\"\n [attr.aria-selected]=\"year === currentYearNumber()\"\n [attr.aria-disabled]=\"disabledYears()[i] ? 'true' : null\"\n [disabled]=\"disabledYears()[i]\"\n (click)=\"!disabledYears()[i] && selectYear(year)\"\n [ngClass]=\"{\n 'disable-year': disabledYears()[i],\n 'select-year': year === currentYearNumber()\n }\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!isSelectingMonth() && !isSelectingYear()\" role=\"grid\" aria-label=\"Calendar\" class=\"datepicker-container__grid\">\n <div role=\"row\" class=\"datepicker-container__weekdays\">\n <div role=\"columnheader\" class=\"datepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\" [attr.aria-label]=\"weekDay.label\">\n <span [ngClass]=\"{ 'current-day': weekDay.isCurrentDay }\">{{ weekDay.label }}</span>\n </div>\n </div>\n <div role=\"row\" class=\"datepicker-container__days\">\n <div\n role=\"gridcell\"\n class=\"datepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay,\n 'is-valid-date': day.date > 0 && !day.isSelectedDay\n }\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay(day)\"\n >\n <span\n *ngIf=\"day.date > 0\"\n role=\"button\"\n [tabindex]=\"isFocusedDay(day) ? 0 : -1\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth(), currentYearNumber())\"\n [attr.aria-selected]=\"day.isSelectedDay\"\n [attr.aria-disabled]=\"day.isDisabledDay ? 'true' : null\"\n [attr.data-date]=\"currentYearNumber() + '-' + currentMonthNumber() + '-' + day.date\"\n [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay\n }\"\n misToolTip\n [text]=\"day.toastMessage\"\n [showOnHover]=\"!!day.toastMessage && data.showDateMessagesTooltip\"\n position=\"right\"\n (keydown)=\"onDayKeydown($event, day)\"\n (keyup.enter)=\"selectDay(day)\"\n (keyup.space)=\"selectDay(day)\"\n >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"datepicker-container__time\" *ngIf=\"data.dpConfig.enableTime === true\">\n <div class=\"time-picker-header\">\n <span>Time</span>\n </div>\n <div class=\"time-picker-controls\">\n <div class=\"time-input-group\">\n <label for=\"hourInput\">Hour</label>\n <input\n id=\"hourInput\"\n type=\"number\"\n [min]=\"is12HourFormat() ? 1 : 0\"\n [max]=\"is12HourFormat() ? 12 : 23\"\n [step]=\"1\"\n [ngModel]=\"selectedHour()\"\n (ngModelChange)=\"selectedHourSignal.set($event)\"\n (input)=\"onHourInput($event)\"\n (blur)=\"validateHourInput()\"\n class=\"time-input\"\n [title]=\"is12HourFormat() ? 'Enter hour (1-12)' : 'Enter hour (0-23)'\">\n </div>\n <div class=\"time-separator\">:</div>\n <div class=\"time-input-group\">\n <label for=\"minuteInput\">Minute</label>\n <input\n id=\"minuteInput\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n [step]=\"1\"\n [ngModel]=\"selectedMinute()\"\n (ngModelChange)=\"selectedMinuteSignal.set($event)\"\n (input)=\"onMinuteInput($event)\"\n (blur)=\"validateMinuteInput()\"\n class=\"time-input\"\n title=\"Enter minute (0-59)\">\n </div>\n <div class=\"am-pm-selector\" *ngIf=\"is12HourFormat()\">\n <label for=\"amPmSelect\">AM/PM</label>\n <select\n id=\"amPmSelect\"\n [ngModel]=\"selectedAmPm()\"\n (ngModelChange)=\"selectedAmPmSignal.set($event)\"\n class=\"am-pm-select\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"datepicker-container__footer\" *ngIf=\"data.dpConfig.showApplyButton || data.dpConfig.enableTime\">\n <button mis-button size=\"md\" type=\"'none'\" (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button size=\"md\" type=\"primary\" (click)=\"applyDate()\" [disabled]=\"!(data.date || localSelectedDate()?.date)\">Apply</button>\n </div>\n</div>\n", styles: [".h1{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7,.datepicker-container .datepicker-container__body .month,.datepicker-container .datepicker-container__body .year{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.datepicker-container{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:12px;display:flex;flex-direction:column;font-family:Lato;-webkit-user-select:none;user-select:none;box-sizing:border-box;width:290px}.datepicker-container .datepicker-container__header{display:flex;height:32px;margin:16px;justify-content:space-between;align-items:center;width:258px}.datepicker-container .datepicker-container__header span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.datepicker-container .datepicker-container__header .month-header,.datepicker-container .datepicker-container__header .year-header{padding:8px;border-radius:10px}.datepicker-container .datepicker-container__header .month-header:hover,.datepicker-container .datepicker-container__header .year-header:hover{cursor:pointer;background-color:var(--brand-primary-active, #DAE1F3)}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:nth-child(1){transform:rotate(180deg)}.datepicker-container .datepicker-container__body{width:258px;height:100%;margin:0 16px 16px}.datepicker-container .datepicker-container__body .row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.datepicker-container .datepicker-container__body .month,.datepicker-container .datepicker-container__body .year{padding:10px 6px;cursor:pointer;border-radius:5px;text-align:center;background-color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .month:hover,.datepicker-container .datepicker-container__body .year:hover{background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__body .disable-month,.datepicker-container .datepicker-container__body .disable-year{cursor:default;color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__body .disable-month:hover,.datepicker-container .datepicker-container__body .disable-year:hover{background-color:transparent}.datepicker-container .datepicker-container__body .select-month,.datepicker-container .datepicker-container__body .select-year{background-color:var(--brand-primary, #0937B2);color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .select-month:hover,.datepicker-container .datepicker-container__body .select-year:hover{cursor:pointer;background-color:var(--brand-primary-lightest, #CBDDFB)}.datepicker-container .datepicker-container__body .datepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday{width:36px;height:18px;text-align:center}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__body .datepicker-container__days{display:flex;flex-wrap:wrap;gap:2px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:4px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.selected-day{background-color:var(--brand-primary, #0937B2);cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day{cursor:default}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day:hover{background-color:transparent}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-day):hover{background-color:var(--brand-primary-lightest, #CBDDFB);cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):not(.selected-day):hover span.selected-day{color:var(--text-primary, #181F33)!important}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.selected-day{color:var(--bg-primary, #FFFFFF)}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.disabled-day{color:var(--text-disabled, #C8CDD3)}.datepicker-container .datepicker-container__time{border-top:1px solid var(--border-primary, #E0E0E0);padding:16px;margin:0 16px}.datepicker-container .datepicker-container__time .time-picker-header{margin-bottom:12px}.datepicker-container .datepicker-container__time .time-picker-header span{font-size:14px;font-weight:600;color:var(--text-primary, #181F33)}.datepicker-container .datepicker-container__time .time-picker-controls{display:flex;align-items:center;gap:8px}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group{display:flex;flex-direction:column;gap:4px}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group label{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input{width:50px;height:32px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;text-align:center}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input:invalid{border-color:#dc3545;background-color:#fff5f5}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input::-webkit-inner-spin-button,.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.datepicker-container .datepicker-container__time .time-picker-controls .time-input-group .time-input[type=number]{-moz-appearance:textfield}.datepicker-container .datepicker-container__time .time-picker-controls .time-separator{font-size:18px;font-weight:600;color:var(--text-primary, #181F33);margin-top:20px}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector{display:flex;flex-direction:column;gap:4px}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector label{font-size:12px;font-weight:500;color:var(--text-secondary, #6A737D)}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector .am-pm-select{width:60px;height:42px;padding:4px 8px;border:1px solid var(--border-primary, #E0E0E0);border-radius:4px;font-size:14px;background-color:#fff}.datepicker-container .datepicker-container__time .time-picker-controls .am-pm-selector .am-pm-select:focus{outline:none;border-color:var(--brand-primary, #0937B2);box-shadow:0 0 0 2px #0937b21a}.datepicker-container .datepicker-container__footer{display:flex;justify-content:flex-end;gap:8px;bottom:0;align-items:center;position:sticky;padding:16px;border-top:1px solid var(--border-primary, #E0E0E0)}.remove-box-shadow{box-shadow:none!important;border:none!important;border-radius:0!important}.datepicker-container__arrow__icon,.month-header,.year-header{background:none;border:none;padding:0;cursor:pointer;font:inherit}.datepicker-container__arrow__icon:disabled,.month-header:disabled,.year-header:disabled{cursor:not-allowed}.month-selector button,.year-selector button{background:none;border:none;cursor:pointer;font:inherit}.month-selector button:disabled,.year-selector button:disabled{cursor:not-allowed}\n"] }]
1057
1041
  }], () => [{ type: undefined, decorators: [{
1058
1042
  type: Inject,
1059
1043
  args: [CONTAINER_DATA]
@@ -1062,4 +1046,4 @@ export class TzDpContainerComponent {
1062
1046
  args: ["keydown.esc"]
1063
1047
  }] }); })();
1064
1048
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDpContainerComponent, { className: "TzDpContainerComponent" }); })();
1065
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXJfdjIvdHotZHAtY29udGFpbmVyL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyX3YyL3R6LWRwLWNvbnRhaW5lci90ei1kcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBDLE9BQU8sS0FBb0IsTUFBTSxPQUFPLENBQUM7QUFDekMsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxjQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztJQ1MxRCxrQ0FRQztJQU5DLHFMQUFTLDRCQUFxQixLQUFDO0lBTy9CLFlBQ0Y7SUFBQSxpQkFBUzs7OztJQURQLGNBQ0Y7SUFERSw2SUFDRjs7OztJQUNBLGtDQVFDO0lBTkMscUxBQVMsMkJBQW9CLEtBQUM7SUFPOUIsWUFDRjtJQUFBLGlCQUFTOzs7O0lBRFAsY0FDRjtJQURFLHlHQUNGOzs7O0lBdUJJLGtDQWNDO0lBTEMsMlFBQVUsdUJBQWdCLFVBQU8sNEJBQWtC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RSxpQkFBTSxFQUNDO1lBYVQsQUFYQSw2RUFRQyxnRUFXQTs7WUFJRCxpQ0FRQztZQU5DLG1HQUFTLGlCQUFhLE1BQU0sQ0FBQyxJQUFDOztZQU85Qiw4QkFBa0g7WUFDaEgsMkJBR1E7WUFHZCxBQURFLEFBREUsaUJBQU0sRUFDQyxFQUNMOztZQUNOLCtCQUF3QztZQThDdEMsQUF0QkEsQUF0QkEsMEVBQW1ILDZEQXNCRiw2REFzQlc7WUEyQzlILGlCQUFNO1lBcUROLEFBbERBLDJFQUFrRiw2REFrRDBCO1lBSTlHLGlCQUFNOztZQTlNMkgsQUFBL0YsOEVBQXdELGlDQUF1RTtZQVEzSixlQUE0RDtZQUM1RCxBQURBLGtGQUE0RCxpR0FDcUI7O1lBWWhGLGVBQXdCO1lBQXhCLDZDQUF3QjtZQVd4QixjQUF5QjtZQUF6Qiw4Q0FBeUI7WUFnQjFCLGNBQXdEO1lBQ3hELEFBREEsOEVBQXdELDZGQUNxQjs7WUFhekUsZUFBOEM7WUFBOUMsdUVBQThDO1lBc0I5QyxjQUE4QztZQUE5Qyx1RUFBOEM7WUFzQjlDLGNBQStDO1lBQS9DLHdFQUErQztZQThDZCxjQUF1QztZQUF2Qyw0REFBdUM7WUFrRHJDLGNBQStEO1lBQS9ELHdGQUErRDs7O2lGRGxML0Ysc0JBQXNCO2NBTGxDLFNBQVM7MkJBQ0UsV0FBVzs7c0JBNkhSLE1BQU07dUJBQUMsY0FBYzs0RUE2b0JsQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsYUFBYTs7a0ZBcndCaEIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0LCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcGlja2VyLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgSUN1cnJlbnRNb250aCwgSUN1cnJlbnRNb250aERhdGVzLCBJRGF0ZVBpY2tlckRhdGEsIElXZWVrRGF5IH0gZnJvbSBcIi4uL21vZGVscy9kcC1jb25maWcubW9kZWxcIjtcbmltcG9ydCB7IGdldE1vbnRoIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS90b2FzdFwiO1xuaW1wb3J0IGRheWpzLCB7IERheWpzLCB0eiB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJztcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCdcblxuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckFmdGVyKTtcbmRheWpzLmV4dGVuZChpc1NhbWVPckJlZm9yZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdHotZHBcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ei1kcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUekRwQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YTogSURhdGVQaWNrZXJEYXRhO1xuICBwcml2YXRlIHBhcnNlWm9uZUluc3RhbmNlOiAoLi4uYXJnczogYW55W10pID0+IGRheWpzLkRheWpzO1xuXG4gIC8qKlxuICAgKiBQYXJzZSBkYXRlIHN0cmluZyB1c2luZyBjb25maWd1cmVkIGZvcm1hdCB3aXRoIGZhbGxiYWNrXG4gICAqL1xuICBwcml2YXRlIHBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHMoZGF0ZVN0cmluZzogc3RyaW5nKTogZGF5anMuRGF5anMge1xuICAgIGlmICghZGF0ZVN0cmluZyB8fCBkYXRlU3RyaW5nID09PSAnSW52YWxpZCBEYXRlJyB8fCBkYXRlU3RyaW5nID09PSAndW5kZWZpbmVkJyB8fCBkYXRlU3RyaW5nID09PSAnbnVsbCcpIHtcbiAgICAgIHJldHVybiBkYXlqcygnaW52YWxpZCcpO1xuICAgIH1cblxuICAgIC8vIEZpcnN0IHRyeSB0aGUgY29uZmlndXJlZCBmb3JtYXRcbiAgICBjb25zdCBjb25maWd1cmVkRm9ybWF0ID0gdGhpcy5kYXRhPy5kcENvbmZpZz8uZm9ybWF0O1xuICAgIGlmIChjb25maWd1cmVkRm9ybWF0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKGRhdGVTdHJpbmcsIGNvbmZpZ3VyZWRGb3JtYXQpO1xuICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIGZhbGxiYWNrIGZvcm1hdHNcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBjb21tb24gZm9ybWF0cyBpZiBjb25maWd1cmVkIGZvcm1hdCBmYWlsc1xuICAgIGNvbnN0IGZhbGxiYWNrRm9ybWF0cyA9IFtcbiAgICAgICdERC9NTU0vWVlZWScsXG4gICAgICAnREQvTU0vWVlZWScsXG4gICAgICAnREQtTU1NLVlZWVknLFxuICAgICAgJ0RELU1NLVlZWVknLFxuICAgICAgJ1lZWVktTU0tREQnXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgZm9ybWF0IG9mIGZhbGxiYWNrRm9ybWF0cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZShkYXRlU3RyaW5nLCBmb3JtYXQpO1xuICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIG5leHQgZm9ybWF0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIGZvcm1hdHMgZmFpbCwgdHJ5IHBhcnNpbmcgd2l0aG91dCBmb3JtYXQgKGxldCBkYXlqcyBndWVzcylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZShkYXRlU3RyaW5nKTtcbiAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHBhcnNlIGRhdGUgd2l0aCBhbnkgZm9ybWF0OicsIGRhdGVTdHJpbmcsIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5anMoJ2ludmFsaWQnKTtcbiAgfVxuICBwcml2YXRlIHJhd1dlZWtEYXlzOiBzdHJpbmdbXSA9IFtcIlNVTlwiLCBcIk1PTlwiLCBcIlRVRVwiLCBcIldFRFwiLCBcIlRIVVwiLCBcIkZSSVwiLCBcIlNBVFwiXTtcbiAgXG4gIC8vIFNpZ25hbC1iYXNlZCBzdGF0ZSBtYW5hZ2VtZW50XG4gIHByaXZhdGUgcmVhZG9ubHkgd2Vla0RheXNTaWduYWwgPSBzaWduYWw8SVdlZWtEYXlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRNb250aE51bWJlclNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRNb250aFNpZ25hbCA9IHNpZ25hbDxJQ3VycmVudE1vbnRoPihcIkphbnVhcnlcIik7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFllYXJOdW1iZXJTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50TW9udGhEYXRlc1NpZ25hbCA9IHNpZ25hbDxJQ3VycmVudE1vbnRoRGF0ZXNbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzUHJldmlvdXNNb250aERpc2FibGVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc05leHRNb250aERpc2FibGVkU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCA9IHNpZ25hbDxJQ3VycmVudE1vbnRoRGF0ZXMgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgZm9jdXNlZERhdGVTaWduYWwgPSBzaWduYWw8eyBkYXRlOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9IHwgbnVsbD4obnVsbCk7XG4gIGZvY3VzZWREYXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb2N1c2VkRGF0ZVNpZ25hbCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5U2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50U2VsZWN0aW9uU2lnbmFsID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIFxuICAvLyBUaW1lIGZ1bmN0aW9uYWxpdHkgc2lnbmFsc1xuICByZWFkb25seSBzZWxlY3RlZEhvdXJTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRNaW51dGVTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbVBtU2lnbmFsID0gc2lnbmFsPHN0cmluZz4oJ0FNJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc1NlbGVjdGluZ01vbnRoU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1NlbGVjdGluZ1llYXJTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF2YWlsYWJsZVllYXJzU2lnbmFsID0gc2lnbmFsPG51bWJlcltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXZhaWxhYmxlTW9udGhzU2lnbmFsID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZWRNb250aHNTaWduYWwgPSBzaWduYWw8Ym9vbGVhbltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZWRZZWFyc1NpZ25hbCA9IHNpZ25hbDxib29sZWFuW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZFllYXJTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1llYXJTZWxlY3Rpb25GbG93U2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXMgZm9yIHRlbXBsYXRlIGFjY2Vzc1xuICB3ZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2Vla0RheXNTaWduYWwoKSk7XG4gIGN1cnJlbnRNb250aE51bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRNb250aFNpZ25hbCgpKTtcbiAgY3VycmVudFllYXJOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICBjdXJyZW50TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwoKSk7XG4gIGN1cnJlbnRNb250aFdlZWtzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbCgpO1xuICAgIGNvbnN0IHdlZWtzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkgKz0gNykge1xuICAgICAgd2Vla3MucHVzaChkYXRlcy5zbGljZShpLCBpICsgNykpO1xuICAgIH1cbiAgICByZXR1cm4gd2Vla3M7XG4gIH0pO1xuICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWRTaWduYWwoKSk7XG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWRTaWduYWwoKSk7XG4gIGxvY2FsU2VsZWN0ZWREYXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpKTtcbiAgYWxsb3dCb29raW5nT25EaXNhYmxlZERheSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsb3dCb29raW5nT25EaXNhYmxlZERheVNpZ25hbCgpKTtcbiAgY3VycmVudFNlbGVjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbCgpKTtcbiAgXG4gIC8vIFRpbWUgZnVuY3Rpb25hbGl0eSBjb21wdXRlZCBwcm9wZXJ0aWVzXG4gIHNlbGVjdGVkSG91ciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCkpO1xuICBzZWxlY3RlZE1pbnV0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSk7XG4gIHNlbGVjdGVkQW1QbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkpO1xuXG4gIGlzU2VsZWN0aW5nTW9udGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwoKSk7XG4gIGlzU2VsZWN0aW5nWWVhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNTZWxlY3RpbmdZZWFyU2lnbmFsKCkpO1xuICBhdmFpbGFibGVZZWFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwoKSk7XG4gIGF2YWlsYWJsZU1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKCkpO1xuICBkaXNhYmxlZE1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGlzYWJsZWRNb250aHNTaWduYWwoKSk7XG4gIGRpc2FibGVkWWVhcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc2FibGVkWWVhcnNTaWduYWwoKSk7XG4gIHNlbGVjdGVkWWVhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkpO1xuICBpc1llYXJTZWxlY3Rpb25GbG93ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc1llYXJTZWxlY3Rpb25GbG93U2lnbmFsKCkpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIGRhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGxpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIFxuICAgIGNvbnN0IHRpbWV6b25lID0gdGhpcy5kYXRhPy5kcENvbmZpZz8udGltZXpvbmU7XG4gICAgXG4gICAgdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSA9ICguLi5hcmdzOiBhbnlbXSk6IGRheWpzLkRheWpzID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aW1lem9uZSkge1xuICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCB8fCBhcmdzWzBdID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXlqcygpLnR6KHRpbWV6b25lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZm9ybWF0ID0gYXJnc1sxXSB8fCB0aGlzLmRhdGE/LmRwQ29uZmlnPy5mb3JtYXQgfHwgJ0REL01NL1lZWVknO1xuICAgICAgICAgIHJldHVybiBkYXlqcy50eihhcmdzWzBdLCBmb3JtYXQsIHRpbWV6b25lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF5anMoLi4uYXJncyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGRheWpzKC4uLmFyZ3MpO1xuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIHNhZmVseSB1c2luZyBzaWduYWxzXG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5tb250aCgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKCkpO1xuICAgIHRoaXMud2Vla0RheXNTaWduYWwuc2V0KHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSkpO1xuICAgIFxuICAgIGlmICghdGhpcy5kYXRhPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZighdGhpcy5kYXRhPy5kYXRlKXtcbiAgICAgIHRoaXMuZGF0YS5kYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICB9XG5cbiAgICB0aGlzLmF2YWlsYWJsZU1vbnRoc1NpZ25hbC5zZXQoQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IGRheWpzKCkubW9udGgoaSkuZm9ybWF0KCdNTU1NJykpKTtcbiAgICB0aGlzLmF2YWlsYWJsZVllYXJzU2lnbmFsLnNldChBcnJheS5mcm9tKFxuICAgICAgeyBsZW5ndGg6IDEyIH0sXG4gICAgICAoXywgaW5kZXgpID0+IHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSAtIDYgKyBpbmRleFxuICAgICkpO1xuICB9XG5cbiAgb25Ib3VySW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgICBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwuc2V0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTWludXRlSW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVIb3VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCkgPCAxKSB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoMSk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKSA+IDEyKSB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoMTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKSA8IDApIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCgwKTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSG91clNpZ25hbCgpID4gMjMpIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCgyMyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVNaW51dGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgIT09IHRydWUpIHJldHVybjtcbiAgICBcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbCgpIDwgMCkgdGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbC5zZXQoMCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSA+IDU5KSB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldCg1OSk7XG4gIH1cblxuICBpczEySG91ckZvcm1hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUgJiYgXG4gICAgICAgICAgICh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdBJykgfHwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdC5pbmNsdWRlcygnYScpKTtcbiAgfVxuXG4gIHJldHJhY3REYXlNb250aChkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcjogYW55KTogYW55IHtcbiAgICByZXR1cm4gYCR7ZGF5fSAke21vbnRofSAke3llYXJ9YDtcbiAgfVxuXG4gIGlzRm9jdXNlZERheShkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvY3VzZWREYXRlU2lnbmFsKCk7XG4gICAgaWYgKCFmIHx8IGRheS5kYXRlIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZi5kYXRlID09PSBkYXkuZGF0ZSAmJlxuICAgICAgZi5tb250aCA9PT0gKGRheS5tb250aCA/PyB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpKSAmJlxuICAgICAgZi55ZWFyID09PSAoZGF5LnllYXIgPz8gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGVJbnN0YW5jZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHRpbWUgaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplVGltZVZhbHVlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpO1xuICAgIGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZC5kYXRlID4gMCkge1xuICAgICAgdGhpcy5mb2N1c2VkRGF0ZVNpZ25hbC5zZXQoeyBkYXRlOiBzZWxlY3RlZC5kYXRlLCBtb250aDogc2VsZWN0ZWQubW9udGggPz8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSwgeWVhcjogc2VsZWN0ZWQueWVhciA/PyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgdG9kYXlEYXkgPSB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsKCkuZmluZChkID0+IGQuZGF0ZSA9PT0gdG9kYXkuZGF0ZSgpICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgICAgaWYgKHRvZGF5RGF5KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogdG9kYXlEYXkuZGF0ZSwgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHllYXI6IHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZCA9IHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwoKS5maW5kKGQgPT4gZC5kYXRlID4gMCAmJiAhZC5pc0Rpc2FibGVkRGF5KTtcbiAgICAgICAgaWYgKGZpcnN0RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogZmlyc3RFbmFibGVkLmRhdGUsIG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0IHllYXJSYW5nZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpIC0gNn0gLSAke3RoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkgKyA1fWA7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaW1lVmFsdWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5kYXRlKSB7XG4gICAgICAgIC8vIFRyeSB0byBwYXJzZSBleGlzdGluZyBkYXRlIGZvciB0aW1lIHZhbHVlc1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgbGV0IGhvdXIgPSBjdXJyZW50RGF0ZS5ob3VyKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50RGF0ZS5taW51dGUoKSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSBob3VyIC0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoaG91cik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEludmFsaWQgZGF0ZSwgdXNlIGRlZmF1bHRzXG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lVmFsdWVzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFBhcnNpbmcgZXJyb3IsIHVzZSBkZWZhdWx0c1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBcbiAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gZXhpc3RpbmcgZGF0ZSwgdXNlIGRlZmF1bHRzXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICBcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTogdm9pZCB7XG4gICAgLy8gVXNlIGN1cnJlbnQgdGltZSBhcyBkZWZhdWx0IGluc3RlYWQgb2YgMTI6MDAgUE1cbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgIGNvbnN0IGN1cnJlbnRIb3VyID0gbm93LmhvdXIoKTtcbiAgICBjb25zdCBjdXJyZW50TWludXRlID0gbm93Lm1pbnV0ZSgpO1xuICAgIFxuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIC8vIENvbnZlcnQgY3VycmVudCB0aW1lIHRvIDEyLWhvdXIgZm9ybWF0XG4gICAgICBsZXQgaG91cjEyID0gY3VycmVudEhvdXI7XG4gICAgICBsZXQgYW1QbSA9ICdBTSc7XG4gICAgICBcbiAgICAgIGlmIChjdXJyZW50SG91ciA9PT0gMCkge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdBTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID09PSAxMikge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID4gMTIpIHtcbiAgICAgICAgaG91cjEyID0gY3VycmVudEhvdXIgLSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbVBtID0gJ0FNJztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwuc2V0KGhvdXIxMik7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldChhbVBtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIGN1cnJlbnQgdGltZSBkaXJlY3RseSBmb3IgMjQtaG91ciBmb3JtYXRcbiAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldChjdXJyZW50SG91cik7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgnQU0nKTsgLy8gTm90IHVzZWQgaW4gMjQtaG91ciBmb3JtYXQgYnV0IGtlZXAgY29uc2lzdGVudFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudERhdGVJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5kYXRlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyh0aGlzLmRhdGEuZGF0ZSk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldChzZWxlY3RlZERhdGUueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZERhdGUueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWREYXRlLm1vbnRoKCkpO1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aChzZWxlY3RlZERhdGUubW9udGgoKSkpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsLnNldCh7XG4gICAgICAgICAgICAgIGRhdGU6IHNlbGVjdGVkRGF0ZS5kYXRlKCksXG4gICAgICAgICAgICAgIHdlZWtEYXk6IHNlbGVjdGVkRGF0ZS5kYXkoKSxcbiAgICAgICAgICAgICAgbW9udGg6IHNlbGVjdGVkRGF0ZS5tb250aCgpLFxuICAgICAgICAgICAgICB5ZWFyOiBzZWxlY3RlZERhdGUueWVhcigpLFxuICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQodGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLm1vbnRoKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhTaWduYWwuc2V0KGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSkpO1xuICB9XG5cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1pbk1heERheXMoKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5zdGFuY2UgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgaWYgKG1pbkRhdGU/LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAobWF4RGF0ZT8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkU2lnbmFsLnNldChtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCkge1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIFxuICAgIHRoaXMuZGlzYWJsZWRNb250aHNTaWduYWwuc2V0KHRoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKCkubWFwKChtb250aCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG1vbnRoRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkpLm1vbnRoKGluZGV4KTtcbiAgICAgIHJldHVybiAobWluRGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQmVmb3JlKG1pbkRhdGUsICdtb250aCcpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpO1xuICAgIH0pKTtcbiAgXG4gICAgdGhpcy5kaXNhYmxlZFllYXJzU2lnbmFsLnNldCh0aGlzLmF2YWlsYWJsZVllYXJzU2lnbmFsKCkubWFwKCh5ZWFyKSA9PiB7XG4gICAgICBjb25zdCB5ZWFyRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHllYXIpO1xuICAgICAgcmV0dXJuIChtaW5EYXRlLmlzVmFsaWQoKSAmJiB5ZWFyRGF0ZS5pc0JlZm9yZShtaW5EYXRlLCAneWVhcicpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgeWVhckRhdGUuaXNBZnRlcihtYXhEYXRlLCAneWVhcicpKTtcbiAgICB9KSk7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwoKSkge1xuICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWluRGF0ZS5pc1ZhbGlkKCkgJiYgKCh0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpIC0gNikgPD0gbWluRGF0ZS55ZWFyKCkpKTtcbiAgICAgIHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgKCh0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpICsgNSkgPj0gbWF4RGF0ZS55ZWFyKCkpKTtcbiAgICB9XG4gICAgXG4gIH1cblxuICBuYXZpZ2F0ZVZpZXcoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGlmICgoZGlyZWN0aW9uID09PSAnTkVYVCcgJiYgKHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZFNpZ25hbCgpIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbCgpKSkgfHxcbiAgICAgICAgKGRpcmVjdGlvbiA9PT0gJ1BSRVZJT1VTJyAmJiAodGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbCgpIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbCgpKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYodGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwoKSl7XG4gICAgICBjb25zdCBuZXdTZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpICsgKGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyAxMiA6IC0xMik7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbC5zZXQobmV3U2VsZWN0ZWRZZWFyKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwuc2V0KEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAxMiB9LFxuICAgICAgICAoXywgaW5kZXgpID0+IG5ld1NlbGVjdGVkWWVhciAtIDYgKyBpbmRleFxuICAgICAgKSk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKGBZZWFycyAke25ld1NlbGVjdGVkWWVhciAtIDZ9IHRvICR7bmV3U2VsZWN0ZWRZZWFyICsgNX1gLCAncG9saXRlJyk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBsZXQgdGhpc01vbnRoIDogZGF5anMuRGF5anMgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXNNb250aC5tb250aCgpKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aCh0aGlzTW9udGgubW9udGgoKSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXJTaWduYWwuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpc01vbnRoLnllYXIoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpc01vbnRoLm1vbnRoKCksIHRoaXNNb250aC55ZWFyKCkpKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gICAgICB0aGlzLmxpdmVBbm5vdW5jZXIuYW5ub3VuY2UoXG4gICAgICAgIGAke3RoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKClbdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKV19ICR7dGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpfWAsXG4gICAgICAgICdwb2xpdGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgdGhpc01vbnRoOiBkYXlqcy5EYXlqcyA9IGRheWpzKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJORVhUXCIpIHtcbiAgICAgICAgdGhpc01vbnRoID0gdGhpc01vbnRoLmFkZCgxLCBcIm1vbnRoXCIpO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICAgICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzTW9udGgubW9udGgoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpc01vbnRoLm1vbnRoKCkpKTtcbiAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXNNb250aC5tb250aCgpLCB0aGlzTW9udGgueWVhcigpKSk7XG4gICAgICBcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbmF2aWdhdGVNb250aCBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEYXRlcyhtb250aDogbnVtYmVyLCBjdXJyZW50WWVhck51bWJlcjogbnVtYmVyKTogSUN1cnJlbnRNb250aERhdGVzW10ge1xuICAgIGNvbnN0IGRhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRheWpzKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgICBcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1pbiBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtYXhEYXRlID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbWF4IGRhdGUgcGFyc2luZyBlcnJvclxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgbGV0IGlzRGlzYWJsZWREYXkgPSB0aGlzLmRhdGEuZGF0ZXNEaXNhYmxlZD8uc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpIHx8IGZhbHNlO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtaW5EYXRlPy5pc1ZhbGlkKCkgJiYgdGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlPy5pc1ZhbGlkKCkgJiYgdGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWREYXkgPSBtYXhEYXRlLmlzQmVmb3JlKGRhdGUsIFwiZGF5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZUluc3RhbmNlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgICAgICAvLyBPbmx5IG1hcmsgYXMgY3VycmVudCBkYXkgaWYgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICBjb25zdCBpc0N1cnJlbnREYXkgPSAhaXNEaXNhYmxlZERheSAmJiBjdXJyZW50RGF0ZUluc3RhbmNlLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA9PT0gZGF5anMoKS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgbGV0IGlzU2VsZWN0ZWREYXkgPSBmYWxzZTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBPbmx5IHNldCBzZWxlY3RlZCBkYXkgaWYgdGhlIGRhdGUgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgICAgICAvLyBQcmlvcml0aXplIGN1cnJlbnQgc2VsZWN0aW9uIG92ZXIgcHJldmlvdXNseSBhcHBsaWVkIGRhdGVcbiAgICAgICAgICAgIGlmICh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCkgJiYgXG4gICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCkuZGF0ZSA9PT0gY3VycmVudERhdGUgJiZcbiAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKS5tb250aCA9PT0gbW9udGggJiZcbiAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKS55ZWFyID09PSBjdXJyZW50WWVhck51bWJlcikge1xuICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmRhdGUgJiYgIXRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKSkge1xuICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHByZXZpb3VzbHkgYXBwbGllZCBkYXRlIGlmIG5vIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhLmRhdGUpO1xuICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZERheSA9IHNlbGVjdGVkRGF0ZS5pc1NhbWUoY3VycmVudERhdGVJbnN0YW5jZSwgJ2RheScpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3IgZGF0ZS1vbmx5IGZvcm1hdCwgY29tcGFyZSB0aGUgZGF0ZSBwYXJ0cyBvbmx5XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhLmRhdGUpO1xuICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZERheSA9IHNlbGVjdGVkRGF0ZS5pc1NhbWUoY3VycmVudERhdGVJbnN0YW5jZSwgJ2RheScpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc3RyaW5nIGNvbXBhcmlzb24gaWYgcGFyc2luZyBmYWlsc1xuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gZGF0ZVN0cmluZyA9PT0gdGhpcy5kYXRhLmRhdGU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBkYXRlIGNvbXBhcmlzb24gZXJyb3JcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyLFxuICAgICAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdGhpcy5kYXRhLm1lc3NhZ2VzPy5maW5kKHEgPT4gZGF0ZVN0cmluZyA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICAgICAgaXNEaXNhYmxlZERheVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBkYXRlIHByb2Nlc3NpbmcgZXJyb3JcbiAgICAgICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgd2Vla0RheTogdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKS5kYXkoKSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyLFxuICAgICAgICAgICAgaXNEaXNhYmxlZERheTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBkYXRlc1swXS53ZWVrRGF5OyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgZGF0ZXMudW5zaGlmdCh7IFxuICAgICAgICAgICAgZGF0ZTogMCwgXG4gICAgICAgICAgICB3ZWVrRGF5OiBpIC0gMSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGdlbmVyYXRlRGF0ZXMgZXJyb3JcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbiAgc2VsZWN0RGF5KGRheTogSUN1cnJlbnRNb250aERhdGVzKSB7XG4gICAgaWYgKGRheS5kYXRlIDw9IDApIHJldHVybjtcbiAgICBcbiAgICB0cnkge1xuICAgICAgLy8gQ3JlYXRlIHRoZSBiYXNlIGRhdGUgc2VsZWN0aW9uIHdpdGhvdXQgdGltZVxuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsLnNldCh0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpLmRhdGUoZGF5LmRhdGUpLmhvdXIoMCkubWludXRlKDApLnNlY29uZCgwKS5taWxsaXNlY29uZCgwKSk7XG4gICAgICBcbiAgICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IHRpbWUgdmFsdWVzIHRvIHRoZSBzZWxlY3Rpb25cbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgaG91ciA9IHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCk7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkgPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbVNpZ25hbCgpID09PSAnQU0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbC5zZXQodGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsKCkhXG4gICAgICAgICAgLmhvdXIoaG91cilcbiAgICAgICAgICAubWludXRlKHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSkpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBsZXQgbWF4RGF0ZSA9IG51bGw7XG4gICAgICBsZXQgbWluRGF0ZSA9IG51bGw7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1heERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KS5lbmRPZihcImRheVwiKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbWF4IGRhdGUgcGFyc2luZyBlcnJvclxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1pbkRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KS5zdGFydE9mKFwiZGF5XCIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtaW4gZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5U2lnbmFsLnNldCh0aGlzLmRhdGEuYWxsb3dCb29raW5nT25EaXNhYmxlZERheSk7XG4gICAgICBcbiAgICAgIGlmICgoKCFtaW5EYXRlIHx8IHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbCgpIS5pc1NhbWVPckFmdGVyKG1pbkRhdGUpKSAmJiAoIW1heERhdGUgfHwgdGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsKCkhLmlzU2FtZU9yQmVmb3JlKG1heERhdGUpKSAmJiB0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXlTaWduYWwoKSkgfHwgKCFkYXkuaXNEaXNhYmxlZERheSAmJiAhdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5U2lnbmFsKCkpKSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwuc2V0KHtcbiAgICAgICAgICAuLi5kYXksXG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvY3VzZWREYXRlU2lnbmFsLnNldCh7XG4gICAgICAgICAgZGF0ZTogZGF5LmRhdGUsXG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZvcmNlIGNhbGVuZGFyIHJlLXJlbmRlciB0byBzaG93IGhpZ2hsaWdodGluZ1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSwgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSk7XG4gICAgICAgIFxuICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IGFwcGx5IHdoZW4gbmVpdGhlciB0aW1lIG5vciBhcHBseSBidXR0b24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIHdhaXQgZm9yIHVzZXIgYWN0aW9uXG4gICAgICAgIGlmICghdGhpcy5kYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiAmJiAhdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGF0ZShkYXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghdGhpcy5kYXRhLnNob3dEYXRlTWVzc2FnZXNUb29sdGlwICYmIChkYXkudG9hc3RNZXNzYWdlIHx8ICh0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgJiYgZGF5LnRvYXN0TWVzc2FnZSkpKSB7XG4gICAgICAgIHRoaXMudG9hc3QuZGlzcGxheU1zZyhkYXkudG9hc3RNZXNzYWdlLCA0MDAwKTtcbiAgICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKGRheS50b2FzdE1lc3NhZ2UsICdhc3NlcnRpdmUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIHNlbGVjdERheSBlcnJvclxuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGF0ZShkYXk/OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBsZXQgZGF0ZTogc3RyaW5nO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgLy8gQWx3YXlzIHVzZSB0aW1lIGlucHV0IHZhbHVlcyB3aGVuIHRpbWUgaXMgZW5hYmxlZCwgcmVnYXJkbGVzcyBvZiBjdXJyZW50U2VsZWN0aW9uXG4gICAgICAgIGxldCBob3VyID0gdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG1TaWduYWwoKSA9PT0gJ1BNJyAmJiBob3VyICE9PSAxMikge1xuICAgICAgICAgICAgaG91ciArPSAxMjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkgPT09ICdBTScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGRhdGUgaW5zdGFuY2Ugd2l0aCB0aGUgc2VsZWN0ZWQgdGltZVxuICAgICAgICBjb25zdCBmaW5hbFNlbGVjdGlvbiA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLmRhdGUodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpPy5kYXRlIHx8IGRheT8uZGF0ZSB8fCBkYXlqcygpLmRhdGUoKSlcbiAgICAgICAgICAuaG91cihob3VyKVxuICAgICAgICAgIC5taW51dGUodGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbCgpKVxuICAgICAgICAgIC5zZWNvbmQoMClcbiAgICAgICAgICAubWlsbGlzZWNvbmQoMCk7XG4gICAgICAgIFxuICAgICAgICBkYXRlID0gZmluYWxTZWxlY3Rpb24uZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGF0ZS1vbmx5IGZvcm1hdCAtIG5vIHRpbWVcbiAgICAgICAgZGF0ZSA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLmRhdGUoZGF5ID8gZGF5LmRhdGUgOiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCk/LmRhdGUgfHwgZGF5anMoKS5kYXRlKCkpXG4gICAgICAgICAgLmhvdXIoMClcbiAgICAgICAgICAubWludXRlKDApXG4gICAgICAgICAgLnNlY29uZCgwKVxuICAgICAgICAgIC5taWxsaXNlY29uZCgwKVxuICAgICAgICAgIC5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkgfHwgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpIHx8ICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgdGhpcy5kYXRhLmRhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbmNlbERhdGVQaWNrZXIoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGFwcGx5RGF0ZSBlcnJvclxuICAgICAgdGhpcy5kYXRhLmRhdGVDaGFuZ2UoXCJcIik7XG4gICAgfVxuICB9XG5cbiAgb25EYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGNvbnN0IG5hdktleXMgPSBbJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93RG93bicsICdBcnJvd1VwJywgJ0hvbWUnLCAnRW5kJywgJ1BhZ2VVcCcsICdQYWdlRG93biddO1xuICAgIGlmICghbmF2S2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLmZvY3VzZWREYXRlU2lnbmFsKCk7XG4gICAgaWYgKCFmb2N1c2VkIHx8IGRheS5kYXRlIDw9IDApIHJldHVybjtcblxuICAgIGxldCB0YXJnZXQgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKClcbiAgICAgIC55ZWFyKGZvY3VzZWQueWVhcilcbiAgICAgIC5tb250aChmb2N1c2VkLm1vbnRoKVxuICAgICAgLmRhdGUoZm9jdXNlZC5kYXRlKTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzogdGFyZ2V0ID0gdGFyZ2V0LmFkZCgxLCAnZGF5Jyk7IGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzogIHRhcmdldCA9IHRhcmdldC5zdWJ0cmFjdCgxLCAnZGF5Jyk7IGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzogIHRhcmdldCA9IHRhcmdldC5hZGQoNywgJ2RheScpOyBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOiAgICB0YXJnZXQgPSB0YXJnZXQuc3VidHJhY3QoNywgJ2RheScpOyBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOiAgICAgICB0YXJnZXQgPSB0YXJnZXQuc3RhcnRPZignd2VlaycpOyBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6ICAgICAgICB0YXJnZXQgPSB0YXJnZXQuZW5kT2YoJ3dlZWsnKTsgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlRG93bic6ICAgdGFyZ2V0ID0gdGFyZ2V0LmFkZCgxLCAnbW9udGgnKTsgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlVXAnOiAgICAgdGFyZ2V0ID0gdGFyZ2V0LnN1YnRyYWN0KDEsICdtb250aCcpOyBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm1vbnRoKCkgIT09IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkgfHwgdGFyZ2V0LnllYXIoKSAhPT0gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQodGFyZ2V0Lm1vbnRoKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhTaWduYWwuc2V0KGdldE1vbnRoKHRhcmdldC5tb250aCgpKSk7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldCh0YXJnZXQueWVhcigpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldCh0YXJnZXQueWVhcigpKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0YXJnZXQubW9udGgoKSwgdGFyZ2V0LnllYXIoKSkpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgICAgIHRoaXMubGl2ZUFubm91bmNlci5hbm5vdW5jZShcbiAgICAgICAgYCR7dGhpcy5hdmFpbGFibGVNb250aHNTaWduYWwoKVt0YXJnZXQubW9udGgoKV19ICR7dGFyZ2V0LnllYXIoKX1gLFxuICAgICAgICAncG9saXRlJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIGRpc2FibGVkIGRheXMg4oCUIHdhbGsgZm9yd2FyZCBvciBiYWNrd2FyZCB1bnRpbCBhIG5vbi1kaXNhYmxlZCBkYXkgaXMgZm91bmRcbiAgICBjb25zdCBpc0ZvcndhcmRLZXkgPSBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJywgJ1BhZ2VEb3duJ10uaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgICBjb25zdCBzdGVwRGlyID0gaXNGb3J3YXJkS2V5ID8gMSA6IC0xO1xuICAgIGxldCBjYW5kaWRhdGUgPSB0YXJnZXQ7XG4gICAgbGV0IHNhZmV0eUxpbWl0ID0gNjA7XG4gICAgd2hpbGUgKHNhZmV0eUxpbWl0LS0gPiAwKSB7XG4gICAgICBpZiAoY2FuZGlkYXRlLm1vbnRoKCkgIT09IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkgfHwgY2FuZGlkYXRlLnllYXIoKSAhPT0gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldChjYW5kaWRhdGUubW9udGgoKSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aChjYW5kaWRhdGUubW9udGgoKSkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldChjYW5kaWRhdGUueWVhcigpKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFllYXJTaWduYWwuc2V0KGNhbmRpZGF0ZS55ZWFyKCkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXMoY2FuZGlkYXRlLm1vbnRoKCksIGNhbmRpZGF0ZS55ZWFyKCkpKTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgICAgfVxuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsKCkuZmluZChcbiAgICAgICAgZCA9PiBkLmRhdGUgPT09IGNhbmRpZGF0ZS5kYXRlKCkgJiYgIWQuaXNEaXNhYmxlZERheSAmJiBkLmRhdGUgPiAwXG4gICAgICApO1xuICAgICAgaWYgKGZvdW5kKSB7IHRhcmdldCA9IGNhbmRpZGF0ZTsgYnJlYWs7IH1cbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5hZGQoc3RlcERpciwgJ2RheScpO1xuICAgIH1cblxuICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogdGFyZ2V0LmRhdGUoKSwgbW9udGg6IHRhcmdldC5tb250aCgpLCB5ZWFyOiB0YXJnZXQueWVhcigpIH0pO1xuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9yID0gYFtkYXRhLWRhdGU9XCIke3RhcmdldC55ZWFyKCl9LSR7dGFyZ2V0Lm1vbnRoKCl9LSR7dGFyZ2V0LmRhdGUoKX1cIl1gO1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihzZWxlY3Rvcik7XG4gICAgICBlbD8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVzY1wiKVxuICBjbG9zZU9uRXNjKCkge1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEuZGF0ZUNoYW5nZShcIlwiKTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRoU2VsZWN0b3IoKSB7XG4gICAgaWYodGhpcy5pc1llYXJTZWxlY3Rpb25GbG93U2lnbmFsKCkpIHJldHVybjtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwuc2V0KCF0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwoKSk7XG4gICAgdGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgfVxuXG4gIHRvZ2dsZVllYXJTZWxlY3RvcigpIHtcbiAgICB0aGlzLmlzU2VsZWN0aW5nWWVhclNpZ25hbC5zZXQoIXRoaXMuaXNTZWxlY3RpbmdZZWFyU2lnbmFsKCkpO1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldCh0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICAgIHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwuc2V0KEFycmF5LmZyb20oXG4gICAgICB7IGxlbmd0aDogMTIgfSxcbiAgICAgIChfLCBpbmRleCkgPT4gdGhpcy5zZWxlY3RlZFllYXJTaWduYWwoKSAtIDYgKyBpbmRleFxuICAgICkpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuXG4gIH1cblxuICByZXNldERhdGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbC5zZXQoe1xuICAgICAgZGF0ZTogMCxcbiAgICAgIHdlZWtEYXk6IDAsXG4gICAgICBpc0N1cnJlbnREYXk6IGZhbHNlLFxuICAgICAgaXNTZWxlY3RlZERheTogZmFsc2UsXG4gICAgICBpc0Rpc2FibGVkRGF5OiBmYWxzZSxcbiAgICAgIHRvYXN0TWVzc2FnZTogJydcbiAgICB9KTtcbiAgICB0aGlzLmRhdGEuZGF0ZSA9ICcnO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzLmF2YWlsYWJsZU1vbnRoc1NpZ25hbCgpLmluZGV4T2YobW9udGgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXNZZWFyU2VsZWN0aW9uRmxvd1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXREYXRlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbC5zZXQoeWVhcik7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQoeWVhcik7XG4gICAgdGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwuc2V0KHRydWUpO1xuICAgIHRoaXMuaXNZZWFyU2VsZWN0aW9uRmxvd1NpZ25hbC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXNldERhdGVTZWxlY3Rpb24oKTtcbiAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YS5kaXNhYmxlQm94U2hhZG93PydyZW1vdmUtYm94LXNoYWRvdyc6JydcIiBhcmlhLWxhYmVsPVwiZGF0ZSBwaWNrZXJcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cbiAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2hlYWRlclwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVZpZXcoJ1BSRVZJT1VTJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIE1vbnRoXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSB8fCBpc1NlbGVjdGluZ01vbnRoKCkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpIHx8IGlzU2VsZWN0aW5nTW9udGgoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKCkgfHwgaXNTZWxlY3RpbmdNb250aCgpIH1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWlzU2VsZWN0aW5nWWVhcigpXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNb250aFNlbGVjdG9yKClcIlxuICAgICAgY2xhc3M9XCJtb250aC1oZWFkZXJcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY3QgbW9udGgsIGN1cnJlbnRseSAnICsgYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNTZWxlY3RpbmdNb250aCgpXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGluZ01vbnRoKClcIlxuICAgID5cbiAgICAgIHt7IGlzWWVhclNlbGVjdGlvbkZsb3coKSA/IHNlbGVjdGVkWWVhcigpIDogYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhaXNTZWxlY3RpbmdNb250aCgpXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVZZWFyU2VsZWN0b3IoKVwiXG4gICAgICBjbGFzcz1cInllYXItaGVhZGVyXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VsZWN0IHllYXIsIGN1cnJlbnRseSAnICsgY3VycmVudFllYXJOdW1iZXIoKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzU2VsZWN0aW5nWWVhcigpXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGluZ1llYXIoKVwiXG4gICAgPlxuICAgICAge3sgaXNTZWxlY3RpbmdZZWFyKCkgPyB5ZWFyUmFuZ2UgOiBjdXJyZW50WWVhck51bWJlcigpIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVWaWV3KCdORVhUJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIk5leHQgTW9udGhcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc05leHRNb250aERpc2FibGVkKCkgfHwgaXNTZWxlY3RpbmdNb250aCgpID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZCgpIHx8IGlzU2VsZWN0aW5nTW9udGgoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzTmV4dE1vbnRoRGlzYWJsZWQoKSB8fCBpc1NlbGVjdGluZ01vbnRoKCkgfVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTZWxlY3RpbmdNb250aCgpICYmICFpc1NlbGVjdGluZ1llYXIoKVwiIGNsYXNzPVwibW9udGgtc2VsZWN0b3JcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgbW9udGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgYXZhaWxhYmxlTW9udGhzKCk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwibW9udGhcIlxuICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb250aFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJtb250aCA9PT0gYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkTW9udGhzKClbaV0gPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRNb250aHMoKVtpXVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZE1vbnRocygpW2ldICYmIHNlbGVjdE1vbnRoKG1vbnRoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGUtbW9udGgnOiBkaXNhYmxlZE1vbnRocygpW2ldLFxuICAgICAgICAgICAgJ3NlbGVjdC1tb250aCc6ICFkaXNhYmxlZE1vbnRocygpW2N1cnJlbnRNb250aE51bWJlcigpXSAmJiBtb250aCA9PT0gYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBtb250aCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0aW5nWWVhcigpICYmICFpc1NlbGVjdGluZ01vbnRoKClcIiBjbGFzcz1cInllYXItc2VsZWN0b3JcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgeWVhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIGF2YWlsYWJsZVllYXJzKCk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwieWVhclwiXG4gICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInllYXIudG9TdHJpbmcoKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ5ZWFyID09PSBjdXJyZW50WWVhck51bWJlcigpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkWWVhcnMoKVtpXSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFllYXJzKClbaV1cIlxuICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWRZZWFycygpW2ldICYmIHNlbGVjdFllYXIoeWVhcilcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdkaXNhYmxlLXllYXInOiBkaXNhYmxlZFllYXJzKClbaV0sXG4gICAgICAgICAgICAnc2VsZWN0LXllYXInOiB5ZWFyID09PSBjdXJyZW50WWVhck51bWJlcigpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nTW9udGgoKSAmJiAhaXNTZWxlY3RpbmdZZWFyKClcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJDYWxlbmRhclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2dyaWRcIj5cbiAgICAgIDxkaXYgcm9sZT1cInJvd1wiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgIDxkaXYgcm9sZT1cImNvbHVtbmhlYWRlclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ3ZWVrRGF5LmxhYmVsXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSB9XCI+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgcm9sZT1cInJvd2dyb3VwXCIgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fZGF5c1wiPlxuICAgICAgICA8ZGl2IHJvbGU9XCJyb3dcIiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX193ZWVrXCIgKm5nRm9yPVwibGV0IHdlZWsgb2YgY3VycmVudE1vbnRoV2Vla3MoKVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJkYXkuZGF0ZSA+IDAgPyAhIWRheS5pc1NlbGVjdGVkRGF5IDogbnVsbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhZGF5LmlzU2VsZWN0ZWREYXlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2RheS1idG5cIlxuICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXNGb2N1c2VkRGF5KGRheSkgPyAwIDogLTFcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJldHJhY3REYXlNb250aChkYXkuZGF0ZSwgY3VycmVudE1vbnRoKCksIGN1cnJlbnRZZWFyTnVtYmVyKCkpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXkuaXNEaXNhYmxlZERheSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWRhdGVdPVwiY3VycmVudFllYXJOdW1iZXIoKSArICctJyArIGN1cnJlbnRNb250aE51bWJlcigpICsgJy0nICsgZGF5LmRhdGVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXksXG4gICAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBtaXNUb29sVGlwXG4gICAgICAgICAgICAgIFt0ZXh0XT1cImRheS50b2FzdE1lc3NhZ2UgfHwgJydcIlxuICAgICAgICAgICAgICBbc2hvd09uSG92ZXJdPVwiISFkYXkudG9hc3RNZXNzYWdlICYmIGRhdGEuc2hvd0RhdGVNZXNzYWdlc1Rvb2x0aXBcIlxuICAgICAgICAgICAgICBwb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwib25EYXlLZXlkb3duKCRldmVudCwgZGF5KVwiXG4gICAgICAgICAgICA+e3sgZGF5LmRhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUaW1lIFBpY2tlciBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3RpbWVcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPlRpbWU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRyb2xzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiaG91cklucHV0XCI+SG91cjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwiaG91cklucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBbbWluXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxIDogMFwiXG4gICAgICAgICAgW21heF09XCJpczEySG91ckZvcm1hdCgpID8gMTIgOiAyM1wiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRIb3VyKClcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkSG91clNpZ25hbC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSG91cklucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlSG91cklucHV0KClcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgW3RpdGxlXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAnRW50ZXIgaG91ciAoMS0xMiknIDogJ0VudGVyIGhvdXIgKDAtMjMpJ1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj46PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWludXRlSW5wdXRcIj5NaW51dGU8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cIm1pbnV0ZUlucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBtYXg9XCI1OVwiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRNaW51dGUoKVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRNaW51dGVTaWduYWwuc2V0KCRldmVudClcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbk1pbnV0ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlTWludXRlSW5wdXQoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0XCJcbiAgICAgICAgICB0aXRsZT1cIkVudGVyIG1pbnV0ZSAoMC01OSlcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFtLXBtLXNlbGVjdG9yXCIgKm5nSWY9XCJpczEySG91ckZvcm1hdCgpXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJhbVBtU2VsZWN0XCI+QU0vUE08L2xhYmVsPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgaWQ9XCJhbVBtU2VsZWN0XCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEFtUG0oKVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImFtLXBtLXNlbGVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBTVwiPkFNPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlBNXCI+UE08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19mb290ZXJcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuc2hvd0FwcGx5QnV0dG9uIHx8IGRhdGEuZHBDb25maWcuZW5hYmxlVGltZVwiPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwiJ25vbmUnXCIgKGNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGUoKVwiIFtkaXNhYmxlZF09XCIhKGRhdGEuZGF0ZSB8fCBsb2NhbFNlbGVjdGVkRGF0ZSgpPy5kYXRlKVwiPkFwcGx5PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
1049
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXJfdjIvdHotZHAtY29udGFpbmVyL3R6LWRwLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyX3YyL3R6LWRwLWNvbnRhaW5lci90ei1kcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBDLE9BQU8sS0FBb0IsTUFBTSxPQUFPLENBQUM7QUFDekMsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxjQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztJQ1MxRCxrQ0FRQztJQU5DLHFMQUFTLDRCQUFxQixLQUFDO0lBTy9CLFlBQ0Y7SUFBQSxpQkFBUzs7OztJQURQLGNBQ0Y7SUFERSw2SUFDRjs7OztJQUNBLGtDQVFDO0lBTkMscUxBQVMsMkJBQW9CLEtBQUM7SUFPOUIsWUFDRjtJQUFBLGlCQUFTOzs7O0lBRFAsY0FDRjtJQURFLHlHQUNGOzs7O0lBdUJJLGtDQWNDO0lBTEMsMlFBQVUsdUJBQWdCLFVBQU8sNEJBQWtC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RDtZQUN4RCxBQURBLDhFQUF3RCw2RkFDcUI7O1lBYXpFLGVBQThDO1lBQTlDLHVFQUE4QztZQXNCOUMsY0FBOEM7WUFBOUMsdUVBQThDO1lBc0I5QyxjQUErQztZQUEvQyx3RUFBK0M7WUErQ2QsY0FBdUM7WUFBdkMsNERBQXVDO1lBa0RyQyxjQUErRDtZQUEvRCx3RkFBK0Q7OztpRkRuTC9GLHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLFdBQVc7O3NCQXFIUixNQUFNO3VCQUFDLGNBQWM7NEVBNm9CbEMsVUFBVTtrQkFEVCxZQUFZO21CQUFDLGFBQWE7O2tGQTd2QmhCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5pbXBvcnQgeyBDT05UQUlORVJfREFUQSwgREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vZGF0ZXBpY2tlci1jb25zdGFudHNcIjtcbmltcG9ydCB7IElDdXJyZW50TW9udGgsIElDdXJyZW50TW9udGhEYXRlcywgSURhdGVQaWNrZXJEYXRhLCBJV2Vla0RheSB9IGZyb20gXCIuLi9tb2RlbHMvZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCBkYXlqcywgeyBEYXlqcywgdHogfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcic7XG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LWRwXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdHotZHAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90ei1kcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRhdGE6IElEYXRlUGlja2VyRGF0YTtcbiAgcHJpdmF0ZSBwYXJzZVpvbmVJbnN0YW5jZTogKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcy5EYXlqcztcblxuICAvKipcbiAgICogUGFyc2UgZGF0ZSBzdHJpbmcgdXNpbmcgY29uZmlndXJlZCBmb3JtYXQgd2l0aCBmYWxsYmFja1xuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKGRhdGVTdHJpbmc6IHN0cmluZyk6IGRheWpzLkRheWpzIHtcbiAgICBpZiAoIWRhdGVTdHJpbmcgfHwgZGF0ZVN0cmluZyA9PT0gJ0ludmFsaWQgRGF0ZScgfHwgZGF0ZVN0cmluZyA9PT0gJ3VuZGVmaW5lZCcgfHwgZGF0ZVN0cmluZyA9PT0gJ251bGwnKSB7XG4gICAgICByZXR1cm4gZGF5anMoJ2ludmFsaWQnKTtcbiAgICB9XG5cbiAgICAvLyBGaXJzdCB0cnkgdGhlIGNvbmZpZ3VyZWQgZm9ybWF0XG4gICAgY29uc3QgY29uZmlndXJlZEZvcm1hdCA9IHRoaXMuZGF0YT8uZHBDb25maWc/LmZvcm1hdDtcbiAgICBpZiAoY29uZmlndXJlZEZvcm1hdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZShkYXRlU3RyaW5nLCBjb25maWd1cmVkRm9ybWF0KTtcbiAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBDb250aW51ZSB0byBmYWxsYmFjayBmb3JtYXRzXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgdG8gY29tbW9uIGZvcm1hdHMgaWYgY29uZmlndXJlZCBmb3JtYXQgZmFpbHNcbiAgICBjb25zdCBmYWxsYmFja0Zvcm1hdHMgPSBbXG4gICAgICAnREQvTU1NL1lZWVknLFxuICAgICAgJ0REL01NL1lZWVknLFxuICAgICAgJ0RELU1NTS1ZWVlZJyxcbiAgICAgICdERC1NTS1ZWVlZJyxcbiAgICAgICdZWVlZLU1NLUREJ1xuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBmYWxsYmFja0Zvcm1hdHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoZGF0ZVN0cmluZywgZm9ybWF0KTtcbiAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBDb250aW51ZSB0byBuZXh0IGZvcm1hdFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGFsbCBmb3JtYXRzIGZhaWwsIHRyeSBwYXJzaW5nIHdpdGhvdXQgZm9ybWF0IChsZXQgZGF5anMgZ3Vlc3MpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBkYXRlIHdpdGggYW55IGZvcm1hdDonLCBkYXRlU3RyaW5nLCBlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRheWpzKCdpbnZhbGlkJyk7XG4gIH1cbiAgcHJpdmF0ZSByYXdXZWVrRGF5czogc3RyaW5nW10gPSBbXCJTVU5cIiwgXCJNT05cIiwgXCJUVUVcIiwgXCJXRURcIiwgXCJUSFVcIiwgXCJGUklcIiwgXCJTQVRcIl07XG4gIFxuICAvLyBTaWduYWwtYmFzZWQgc3RhdGUgbWFuYWdlbWVudFxuICBwcml2YXRlIHJlYWRvbmx5IHdlZWtEYXlzU2lnbmFsID0gc2lnbmFsPElXZWVrRGF5W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50TW9udGhOdW1iZXJTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50TW9udGhTaWduYWwgPSBzaWduYWw8SUN1cnJlbnRNb250aD4oXCJKYW51YXJ5XCIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudE1vbnRoRGF0ZXNTaWduYWwgPSBzaWduYWw8SUN1cnJlbnRNb250aERhdGVzW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNOZXh0TW9udGhEaXNhYmxlZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTZWxlY3RlZERhdGVTaWduYWwgPSBzaWduYWw8SUN1cnJlbnRNb250aERhdGVzIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGZvY3VzZWREYXRlU2lnbmFsID0gc2lnbmFsPHsgZGF0ZTogbnVtYmVyOyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfSB8IG51bGw+KG51bGwpO1xuICBmb2N1c2VkRGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9jdXNlZERhdGVTaWduYWwoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dCb29raW5nT25EaXNhYmxlZERheVNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblNpZ25hbCA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICBcbiAgLy8gVGltZSBmdW5jdGlvbmFsaXR5IHNpZ25hbHNcbiAgcmVhZG9ubHkgc2VsZWN0ZWRIb3VyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkTWludXRlU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQW1QbVNpZ25hbCA9IHNpZ25hbDxzdHJpbmc+KCdBTScpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTZWxlY3RpbmdNb250aFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTZWxlY3RpbmdZZWFyU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdmFpbGFibGVZZWFyc1NpZ25hbCA9IHNpZ25hbDxudW1iZXJbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGF2YWlsYWJsZU1vbnRoc1NpZ25hbCA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkTW9udGhzU2lnbmFsID0gc2lnbmFsPGJvb2xlYW5bXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkWWVhcnNTaWduYWwgPSBzaWduYWw8Ym9vbGVhbltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRZZWFyU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNZZWFyU2VsZWN0aW9uRmxvd1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBDb21wdXRlZCBwcm9wZXJ0aWVzIGZvciB0ZW1wbGF0ZSBhY2Nlc3NcbiAgd2Vla0RheXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLndlZWtEYXlzU2lnbmFsKCkpO1xuICBjdXJyZW50TW9udGhOdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpKTtcbiAgY3VycmVudE1vbnRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50TW9udGhTaWduYWwoKSk7XG4gIGN1cnJlbnRZZWFyTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKTtcbiAgY3VycmVudE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsKCkpO1xuICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNQcmV2aW91c01vbnRoRGlzYWJsZWRTaWduYWwoKSk7XG4gIGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTmV4dE1vbnRoRGlzYWJsZWRTaWduYWwoKSk7XG4gIGxvY2FsU2VsZWN0ZWREYXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpKTtcbiAgYWxsb3dCb29raW5nT25EaXNhYmxlZERheSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWxsb3dCb29raW5nT25EaXNhYmxlZERheVNpZ25hbCgpKTtcbiAgY3VycmVudFNlbGVjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbCgpKTtcbiAgXG4gIC8vIFRpbWUgZnVuY3Rpb25hbGl0eSBjb21wdXRlZCBwcm9wZXJ0aWVzXG4gIHNlbGVjdGVkSG91ciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCkpO1xuICBzZWxlY3RlZE1pbnV0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSk7XG4gIHNlbGVjdGVkQW1QbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkpO1xuXG4gIGlzU2VsZWN0aW5nTW9udGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwoKSk7XG4gIGlzU2VsZWN0aW5nWWVhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNTZWxlY3RpbmdZZWFyU2lnbmFsKCkpO1xuICBhdmFpbGFibGVZZWFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwoKSk7XG4gIGF2YWlsYWJsZU1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKCkpO1xuICBkaXNhYmxlZE1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGlzYWJsZWRNb250aHNTaWduYWwoKSk7XG4gIGRpc2FibGVkWWVhcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc2FibGVkWWVhcnNTaWduYWwoKSk7XG4gIHNlbGVjdGVkWWVhciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkpO1xuICBpc1llYXJTZWxlY3Rpb25GbG93ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc1llYXJTZWxlY3Rpb25GbG93U2lnbmFsKCkpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09OVEFJTkVSX0RBVEEpIGRhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGxpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIFxuICAgIGNvbnN0IHRpbWV6b25lID0gdGhpcy5kYXRhPy5kcENvbmZpZz8udGltZXpvbmU7XG4gICAgXG4gICAgdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSA9ICguLi5hcmdzOiBhbnlbXSk6IGRheWpzLkRheWpzID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aW1lem9uZSkge1xuICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCB8fCBhcmdzWzBdID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXlqcygpLnR6KHRpbWV6b25lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZm9ybWF0ID0gYXJnc1sxXSB8fCB0aGlzLmRhdGE/LmRwQ29uZmlnPy5mb3JtYXQgfHwgJ0REL01NL1lZWVknO1xuICAgICAgICAgIHJldHVybiBkYXlqcy50eihhcmdzWzBdLCBmb3JtYXQsIHRpbWV6b25lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF5anMoLi4uYXJncyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGRheWpzKC4uLmFyZ3MpO1xuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzIHNhZmVseSB1c2luZyBzaWduYWxzXG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5tb250aCgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKCkpO1xuICAgIHRoaXMud2Vla0RheXNTaWduYWwuc2V0KHRoaXMucmF3V2Vla0RheXMubWFwKChkYXksIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IGAke2RheVswXX0ke2RheS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICBpc0N1cnJlbnREYXk6IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS5kYXkoKSA9PT0gaW5kZXhcbiAgICB9KSkpO1xuICAgIFxuICAgIGlmICghdGhpcy5kYXRhPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEuZHBDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGF0YS5kcENvbmZpZyxcbiAgICAgICAgZm9ybWF0OiBEQVRFX0ZPUk1BVFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZighdGhpcy5kYXRhPy5kYXRlKXtcbiAgICAgIHRoaXMuZGF0YS5kYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KTtcbiAgICB9XG5cbiAgICB0aGlzLmF2YWlsYWJsZU1vbnRoc1NpZ25hbC5zZXQoQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IGRheWpzKCkubW9udGgoaSkuZm9ybWF0KCdNTU1NJykpKTtcbiAgICB0aGlzLmF2YWlsYWJsZVllYXJzU2lnbmFsLnNldChBcnJheS5mcm9tKFxuICAgICAgeyBsZW5ndGg6IDEyIH0sXG4gICAgICAoXywgaW5kZXgpID0+IHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSAtIDYgKyBpbmRleFxuICAgICkpO1xuICB9XG5cbiAgb25Ib3VySW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgICBpZiAodmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwuc2V0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTWludXRlSW5wdXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSAhPT0gdHJ1ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDU5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVIb3VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lICE9PSB0cnVlKSByZXR1cm47XG4gICAgXG4gICAgaWYgKHRoaXMuaXMxMkhvdXJGb3JtYXQoKSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCkgPCAxKSB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoMSk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKSA+IDEyKSB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoMTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKSA8IDApIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCgwKTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSG91clNpZ25hbCgpID4gMjMpIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldCgyMyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVNaW51dGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgIT09IHRydWUpIHJldHVybjtcbiAgICBcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbCgpIDwgMCkgdGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbC5zZXQoMCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSA+IDU5KSB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldCg1OSk7XG4gIH1cblxuICBpczEySG91ckZvcm1hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUgJiYgXG4gICAgICAgICAgICh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0LmluY2x1ZGVzKCdBJykgfHwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdC5pbmNsdWRlcygnYScpKTtcbiAgfVxuXG4gIHJldHJhY3REYXlNb250aChkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcjogYW55KTogYW55IHtcbiAgICByZXR1cm4gYCR7ZGF5fSAke21vbnRofSAke3llYXJ9YDtcbiAgfVxuXG4gIGlzRm9jdXNlZERheShkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvY3VzZWREYXRlU2lnbmFsKCk7XG4gICAgaWYgKCFmIHx8IGRheS5kYXRlIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZi5kYXRlID09PSBkYXkuZGF0ZSAmJlxuICAgICAgZi5tb250aCA9PT0gKGRheS5tb250aCA/PyB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpKSAmJlxuICAgICAgZi55ZWFyID09PSAoZGF5LnllYXIgPz8gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGVJbnN0YW5jZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIHRpbWUgaWYgZW5hYmxlZFxuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplVGltZVZhbHVlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpO1xuICAgIGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZC5kYXRlID4gMCkge1xuICAgICAgdGhpcy5mb2N1c2VkRGF0ZVNpZ25hbC5zZXQoeyBkYXRlOiBzZWxlY3RlZC5kYXRlLCBtb250aDogc2VsZWN0ZWQubW9udGggPz8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSwgeWVhcjogc2VsZWN0ZWQueWVhciA/PyB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRvZGF5ID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgdG9kYXlEYXkgPSB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsKCkuZmluZChkID0+IGQuZGF0ZSA9PT0gdG9kYXkuZGF0ZSgpICYmICFkLmlzRGlzYWJsZWREYXkpO1xuICAgICAgaWYgKHRvZGF5RGF5KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogdG9kYXlEYXkuZGF0ZSwgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHllYXI6IHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RW5hYmxlZCA9IHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwoKS5maW5kKGQgPT4gZC5kYXRlID4gMCAmJiAhZC5pc0Rpc2FibGVkRGF5KTtcbiAgICAgICAgaWYgKGZpcnN0RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogZmlyc3RFbmFibGVkLmRhdGUsIG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbCgpLCB5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0IHllYXJSYW5nZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpIC0gNn0gLSAke3RoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkgKyA1fWA7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaW1lVmFsdWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5kYXRlKSB7XG4gICAgICAgIC8vIFRyeSB0byBwYXJzZSBleGlzdGluZyBkYXRlIGZvciB0aW1lIHZhbHVlc1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgbGV0IGhvdXIgPSBjdXJyZW50RGF0ZS5ob3VyKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50RGF0ZS5taW51dGUoKSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdBTScpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSBob3VyIC0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFtUG1TaWduYWwuc2V0KCdQTScpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgnQU0nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91clNpZ25hbC5zZXQoaG91cik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEludmFsaWQgZGF0ZSwgdXNlIGRlZmF1bHRzXG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lVmFsdWVzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFBhcnNpbmcgZXJyb3IsIHVzZSBkZWZhdWx0c1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBcbiAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gZXhpc3RpbmcgZGF0ZSwgdXNlIGRlZmF1bHRzXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICBcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFRpbWVWYWx1ZXMoKTogdm9pZCB7XG4gICAgLy8gVXNlIGN1cnJlbnQgdGltZSBhcyBkZWZhdWx0IGluc3RlYWQgb2YgMTI6MDAgUE1cbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgIGNvbnN0IGN1cnJlbnRIb3VyID0gbm93LmhvdXIoKTtcbiAgICBjb25zdCBjdXJyZW50TWludXRlID0gbm93Lm1pbnV0ZSgpO1xuICAgIFxuICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgIC8vIENvbnZlcnQgY3VycmVudCB0aW1lIHRvIDEyLWhvdXIgZm9ybWF0XG4gICAgICBsZXQgaG91cjEyID0gY3VycmVudEhvdXI7XG4gICAgICBsZXQgYW1QbSA9ICdBTSc7XG4gICAgICBcbiAgICAgIGlmIChjdXJyZW50SG91ciA9PT0gMCkge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdBTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID09PSAxMikge1xuICAgICAgICBob3VyMTIgPSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRIb3VyID4gMTIpIHtcbiAgICAgICAgaG91cjEyID0gY3VycmVudEhvdXIgLSAxMjtcbiAgICAgICAgYW1QbSA9ICdQTSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbVBtID0gJ0FNJztcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwuc2V0KGhvdXIxMik7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldChhbVBtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIGN1cnJlbnQgdGltZSBkaXJlY3RseSBmb3IgMjQtaG91ciBmb3JtYXRcbiAgICAgIHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsLnNldChjdXJyZW50SG91cik7XG4gICAgICB0aGlzLnNlbGVjdGVkTWludXRlU2lnbmFsLnNldChjdXJyZW50TWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgnQU0nKTsgLy8gTm90IHVzZWQgaW4gMjQtaG91ciBmb3JtYXQgYnV0IGtlZXAgY29uc2lzdGVudFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudERhdGVJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5kYXRlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyh0aGlzLmRhdGEuZGF0ZSk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldChzZWxlY3RlZERhdGUueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldChzZWxlY3RlZERhdGUueWVhcigpKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQoc2VsZWN0ZWREYXRlLm1vbnRoKCkpO1xuICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aChzZWxlY3RlZERhdGUubW9udGgoKSkpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsLnNldCh7XG4gICAgICAgICAgICAgIGRhdGU6IHNlbGVjdGVkRGF0ZS5kYXRlKCksXG4gICAgICAgICAgICAgIHdlZWtEYXk6IHNlbGVjdGVkRGF0ZS5kYXkoKSxcbiAgICAgICAgICAgICAgbW9udGg6IHNlbGVjdGVkRGF0ZS5tb250aCgpLFxuICAgICAgICAgICAgICB5ZWFyOiBzZWxlY3RlZERhdGUueWVhcigpLFxuICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQodGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLm1vbnRoKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhTaWduYWwuc2V0KGdldE1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSkpO1xuICB9XG5cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1pbk1heERheXMoKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5zdGFuY2UgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgaWYgKG1pbkRhdGU/LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWluRGF0ZS5pc1NhbWVPckFmdGVyKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAobWF4RGF0ZT8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgdGhpcy5pc05leHRNb250aERpc2FibGVkU2lnbmFsLnNldChtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCkge1xuICAgIGNvbnN0IG1pbkRhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIGNvbnN0IG1heERhdGUgPSAhIXRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIFxuICAgIHRoaXMuZGlzYWJsZWRNb250aHNTaWduYWwuc2V0KHRoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKCkubWFwKChtb250aCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG1vbnRoRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsKCkpLm1vbnRoKGluZGV4KTtcbiAgICAgIHJldHVybiAobWluRGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQmVmb3JlKG1pbkRhdGUsICdtb250aCcpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgbW9udGhEYXRlLmlzQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpO1xuICAgIH0pKTtcbiAgXG4gICAgdGhpcy5kaXNhYmxlZFllYXJzU2lnbmFsLnNldCh0aGlzLmF2YWlsYWJsZVllYXJzU2lnbmFsKCkubWFwKCh5ZWFyKSA9PiB7XG4gICAgICBjb25zdCB5ZWFyRGF0ZSA9IHRoaXMucGFyc2Vab25lSW5zdGFuY2UoKS55ZWFyKHllYXIpO1xuICAgICAgcmV0dXJuIChtaW5EYXRlLmlzVmFsaWQoKSAmJiB5ZWFyRGF0ZS5pc0JlZm9yZShtaW5EYXRlLCAneWVhcicpKSB8fCBcbiAgICAgICAgICAgICAobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgeWVhckRhdGUuaXNBZnRlcihtYXhEYXRlLCAneWVhcicpKTtcbiAgICB9KSk7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwoKSkge1xuICAgICAgdGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWluRGF0ZS5pc1ZhbGlkKCkgJiYgKCh0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpIC0gNikgPD0gbWluRGF0ZS55ZWFyKCkpKTtcbiAgICAgIHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZFNpZ25hbC5zZXQobWF4RGF0ZS5pc1ZhbGlkKCkgJiYgKCh0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpICsgNSkgPj0gbWF4RGF0ZS55ZWFyKCkpKTtcbiAgICB9XG4gICAgXG4gIH1cblxuICBuYXZpZ2F0ZVZpZXcoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIGlmICgoZGlyZWN0aW9uID09PSAnTkVYVCcgJiYgKHRoaXMuaXNOZXh0TW9udGhEaXNhYmxlZFNpZ25hbCgpIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbCgpKSkgfHxcbiAgICAgICAgKGRpcmVjdGlvbiA9PT0gJ1BSRVZJT1VTJyAmJiAodGhpcy5pc1ByZXZpb3VzTW9udGhEaXNhYmxlZFNpZ25hbCgpIHx8IHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbCgpKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYodGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwoKSl7XG4gICAgICBjb25zdCBuZXdTZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbCgpICsgKGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyAxMiA6IC0xMik7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbC5zZXQobmV3U2VsZWN0ZWRZZWFyKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwuc2V0KEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAxMiB9LFxuICAgICAgICAoXywgaW5kZXgpID0+IG5ld1NlbGVjdGVkWWVhciAtIDYgKyBpbmRleFxuICAgICAgKSk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU1pbk1heERheXMoKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKGBZZWFycyAke25ld1NlbGVjdGVkWWVhciAtIDZ9IHRvICR7bmV3U2VsZWN0ZWRZZWFyICsgNX1gLCAncG9saXRlJyk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBsZXQgdGhpc01vbnRoIDogZGF5anMuRGF5anMgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgdGhpc01vbnRoID0gZGlyZWN0aW9uID09PSBcIk5FWFRcIiA/IHRoaXNNb250aC5hZGQoMSwgXCJtb250aFwiKSA6IHRoaXNNb250aC5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwuc2V0KHRoaXNNb250aC5tb250aCgpKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aCh0aGlzTW9udGgubW9udGgoKSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXJTaWduYWwuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQodGhpc01vbnRoLnllYXIoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpc01vbnRoLm1vbnRoKCksIHRoaXNNb250aC55ZWFyKCkpKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVEaXNhYmxlZE1vbnRoc0FuZFllYXJzKCk7XG4gICAgICB0aGlzLmxpdmVBbm5vdW5jZXIuYW5ub3VuY2UoXG4gICAgICAgIGAke3RoaXMuYXZhaWxhYmxlTW9udGhzU2lnbmFsKClbdGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKV19ICR7dGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpfWAsXG4gICAgICAgICdwb2xpdGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlTW9udGgoZGlyZWN0aW9uOiBcIk5FWFRcIiB8IFwiUFJFVklPVVNcIik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgdGhpc01vbnRoOiBkYXlqcy5EYXlqcyA9IGRheWpzKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJORVhUXCIpIHtcbiAgICAgICAgdGhpc01vbnRoID0gdGhpc01vbnRoLmFkZCgxLCBcIm1vbnRoXCIpO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwiUFJFVklPVVNcIikge1xuICAgICAgICB0aGlzTW9udGggPSB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzTW9udGgubW9udGgoKSk7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpc01vbnRoLm1vbnRoKCkpKTtcbiAgICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXNNb250aC5tb250aCgpLCB0aGlzTW9udGgueWVhcigpKSk7XG4gICAgICBcbiAgICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbmF2aWdhdGVNb250aCBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEYXRlcyhtb250aDogbnVtYmVyLCBjdXJyZW50WWVhck51bWJlcjogbnVtYmVyKTogSUN1cnJlbnRNb250aERhdGVzW10ge1xuICAgIGNvbnN0IGRhdGVzOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSA9IFtdO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRheWpzKCkueWVhcihjdXJyZW50WWVhck51bWJlcikubW9udGgobW9udGgpLmRheXNJbk1vbnRoKCk7XG4gICAgICBcbiAgICAgIGxldCBtaW5EYXRlID0gbnVsbDtcbiAgICAgIGxldCBtYXhEYXRlID0gbnVsbDtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWluRGF0ZSA9IHRoaXMucGFyc2VEYXRlV2l0aE11bHRpcGxlRm9ybWF0cyh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIG1pbiBkYXRlIHBhcnNpbmcgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtYXhEYXRlID0gdGhpcy5wYXJzZURhdGVXaXRoTXVsdGlwbGVGb3JtYXRzKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbWF4IGRhdGUgcGFyc2luZyBlcnJvclxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgbGV0IGlzRGlzYWJsZWREYXkgPSB0aGlzLmRhdGEuZGF0ZXNEaXNhYmxlZD8uc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpIHx8IGZhbHNlO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtaW5EYXRlPy5pc1ZhbGlkKCkgJiYgdGhpcy5kYXRhLmRwQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNEaXNhYmxlZERheSAmJiBtYXhEYXRlPy5pc1ZhbGlkKCkgJiYgdGhpcy5kYXRhLmRwQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWREYXkgPSBtYXhEYXRlLmlzQmVmb3JlKGRhdGUsIFwiZGF5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZUluc3RhbmNlID0gdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgICAgICAvLyBPbmx5IG1hcmsgYXMgY3VycmVudCBkYXkgaWYgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICBjb25zdCBpc0N1cnJlbnREYXkgPSAhaXNEaXNhYmxlZERheSAmJiBjdXJyZW50RGF0ZUluc3RhbmNlLmZvcm1hdCh0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KSA9PT0gZGF5anMoKS5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgXG4gICAgICAgICAgbGV0IGlzU2VsZWN0ZWREYXkgPSBmYWxzZTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBPbmx5IHNldCBzZWxlY3RlZCBkYXkgaWYgdGhlIGRhdGUgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5KSB7XG4gICAgICAgICAgICAvLyBQcmlvcml0aXplIGN1cnJlbnQgc2VsZWN0aW9uIG92ZXIgcHJldmlvdXNseSBhcHBsaWVkIGRhdGVcbiAgICAgICAgICAgIGlmICh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCkgJiYgXG4gICAgICAgICAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCkuZGF0ZSA9PT0gY3VycmVudERhdGUgJiZcbiAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKS5tb250aCA9PT0gbW9udGggJiZcbiAgICAgICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKS55ZWFyID09PSBjdXJyZW50WWVhck51bWJlcikge1xuICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmRhdGUgJiYgIXRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwoKSkge1xuICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHByZXZpb3VzbHkgYXBwbGllZCBkYXRlIGlmIG5vIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5kcENvbmZpZy5lbmFibGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhLmRhdGUpO1xuICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZERheSA9IHNlbGVjdGVkRGF0ZS5pc1NhbWUoY3VycmVudERhdGVJbnN0YW5jZSwgJ2RheScpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3IgZGF0ZS1vbmx5IGZvcm1hdCwgY29tcGFyZSB0aGUgZGF0ZSBwYXJ0cyBvbmx5XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZVdpdGhNdWx0aXBsZUZvcm1hdHModGhpcy5kYXRhLmRhdGUpO1xuICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZERheSA9IHNlbGVjdGVkRGF0ZS5pc1NhbWUoY3VycmVudERhdGVJbnN0YW5jZSwgJ2RheScpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc3RyaW5nIGNvbXBhcmlzb24gaWYgcGFyc2luZyBmYWlsc1xuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkRGF5ID0gZGF0ZVN0cmluZyA9PT0gdGhpcy5kYXRhLmRhdGU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBkYXRlIGNvbXBhcmlzb24gZXJyb3JcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgd2Vla0RheTogZGF0ZS5kYXkoKSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyLFxuICAgICAgICAgICAgaXNDdXJyZW50RGF5LFxuICAgICAgICAgICAgaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdGhpcy5kYXRhLm1lc3NhZ2VzPy5maW5kKHEgPT4gZGF0ZVN0cmluZyA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICAgICAgaXNEaXNhYmxlZERheVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBkYXRlIHByb2Nlc3NpbmcgZXJyb3JcbiAgICAgICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgd2Vla0RheTogdGhpcy5wYXJzZVpvbmVJbnN0YW5jZSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKS5kYXkoKSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyLFxuICAgICAgICAgICAgaXNEaXNhYmxlZERheTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBkYXRlc1swXS53ZWVrRGF5OyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgZGF0ZXMudW5zaGlmdCh7IFxuICAgICAgICAgICAgZGF0ZTogMCwgXG4gICAgICAgICAgICB3ZWVrRGF5OiBpIC0gMSxcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IGN1cnJlbnRZZWFyTnVtYmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGdlbmVyYXRlRGF0ZXMgZXJyb3JcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbiAgc2VsZWN0RGF5KGRheTogSUN1cnJlbnRNb250aERhdGVzKSB7XG4gICAgaWYgKGRheS5kYXRlIDw9IDApIHJldHVybjtcbiAgICBcbiAgICB0cnkge1xuICAgICAgLy8gQ3JlYXRlIHRoZSBiYXNlIGRhdGUgc2VsZWN0aW9uIHdpdGhvdXQgdGltZVxuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsLnNldCh0aGlzLnBhcnNlWm9uZUluc3RhbmNlKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpLmRhdGUoZGF5LmRhdGUpLmhvdXIoMCkubWludXRlKDApLnNlY29uZCgwKS5taWxsaXNlY29uZCgwKSk7XG4gICAgICBcbiAgICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IHRpbWUgdmFsdWVzIHRvIHRoZSBzZWxlY3Rpb25cbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgaG91ciA9IHRoaXMuc2VsZWN0ZWRIb3VyU2lnbmFsKCk7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5pczEySG91ckZvcm1hdCgpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkgPT09ICdQTScgJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQW1QbVNpZ25hbCgpID09PSAnQU0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbC5zZXQodGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsKCkhXG4gICAgICAgICAgLmhvdXIoaG91cilcbiAgICAgICAgICAubWludXRlKHRoaXMuc2VsZWN0ZWRNaW51dGVTaWduYWwoKSkpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBsZXQgbWF4RGF0ZSA9IG51bGw7XG4gICAgICBsZXQgbWluRGF0ZSA9IG51bGw7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1heERhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5tYXhEYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KS5lbmRPZihcImRheVwiKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBTaWxlbnRseSBoYW5kbGUgbWF4IGRhdGUgcGFyc2luZyBlcnJvclxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmRhdGEuZHBDb25maWcubWluRGF0ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1pbkRhdGUgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKHRoaXMuZGF0YS5kcENvbmZpZy5taW5EYXRlLCB0aGlzLmRhdGEuZHBDb25maWcuZm9ybWF0KS5zdGFydE9mKFwiZGF5XCIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGhhbmRsZSBtaW4gZGF0ZSBwYXJzaW5nIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5U2lnbmFsLnNldCh0aGlzLmRhdGEuYWxsb3dCb29raW5nT25EaXNhYmxlZERheSk7XG4gICAgICBcbiAgICAgIGlmICgoKCFtaW5EYXRlIHx8IHRoaXMuY3VycmVudFNlbGVjdGlvblNpZ25hbCgpIS5pc1NhbWVPckFmdGVyKG1pbkRhdGUpKSAmJiAoIW1heERhdGUgfHwgdGhpcy5jdXJyZW50U2VsZWN0aW9uU2lnbmFsKCkhLmlzU2FtZU9yQmVmb3JlKG1heERhdGUpKSAmJiB0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXlTaWduYWwoKSkgfHwgKCFkYXkuaXNEaXNhYmxlZERheSAmJiAhdGhpcy5hbGxvd0Jvb2tpbmdPbkRpc2FibGVkRGF5U2lnbmFsKCkpKSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWxlY3RlZERhdGVTaWduYWwuc2V0KHtcbiAgICAgICAgICAuLi5kYXksXG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvY3VzZWREYXRlU2lnbmFsLnNldCh7XG4gICAgICAgICAgZGF0ZTogZGF5LmRhdGUsXG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksXG4gICAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZvcmNlIGNhbGVuZGFyIHJlLXJlbmRlciB0byBzaG93IGhpZ2hsaWdodGluZ1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXModGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSwgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSk7XG4gICAgICAgIFxuICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IGFwcGx5IHdoZW4gbmVpdGhlciB0aW1lIG5vciBhcHBseSBidXR0b24gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIHdhaXQgZm9yIHVzZXIgYWN0aW9uXG4gICAgICAgIGlmICghdGhpcy5kYXRhLmRwQ29uZmlnLnNob3dBcHBseUJ1dHRvbiAmJiAhdGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGF0ZShkYXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICghdGhpcy5kYXRhLnNob3dEYXRlTWVzc2FnZXNUb29sdGlwICYmIChkYXkudG9hc3RNZXNzYWdlIHx8ICh0aGlzLmFsbG93Qm9va2luZ09uRGlzYWJsZWREYXkgJiYgZGF5LnRvYXN0TWVzc2FnZSkpKSB7XG4gICAgICAgIHRoaXMudG9hc3QuZGlzcGxheU1zZyhkYXkudG9hc3RNZXNzYWdlLCA0MDAwKTtcbiAgICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKGRheS50b2FzdE1lc3NhZ2UsICdhc3NlcnRpdmUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIHNlbGVjdERheSBlcnJvclxuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGF0ZShkYXk/OiBJQ3VycmVudE1vbnRoRGF0ZXMpIHtcbiAgICBsZXQgZGF0ZTogc3RyaW5nO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5kYXRhLmRwQ29uZmlnLmVuYWJsZVRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgLy8gQWx3YXlzIHVzZSB0aW1lIGlucHV0IHZhbHVlcyB3aGVuIHRpbWUgaXMgZW5hYmxlZCwgcmVnYXJkbGVzcyBvZiBjdXJyZW50U2VsZWN0aW9uXG4gICAgICAgIGxldCBob3VyID0gdGhpcy5zZWxlY3RlZEhvdXJTaWduYWwoKTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzMTJIb3VyRm9ybWF0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFtUG1TaWduYWwoKSA9PT0gJ1BNJyAmJiBob3VyICE9PSAxMikge1xuICAgICAgICAgICAgaG91ciArPSAxMjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRBbVBtU2lnbmFsKCkgPT09ICdBTScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGRhdGUgaW5zdGFuY2Ugd2l0aCB0aGUgc2VsZWN0ZWQgdGltZVxuICAgICAgICBjb25zdCBmaW5hbFNlbGVjdGlvbiA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLmRhdGUodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpPy5kYXRlIHx8IGRheT8uZGF0ZSB8fCBkYXlqcygpLmRhdGUoKSlcbiAgICAgICAgICAuaG91cihob3VyKVxuICAgICAgICAgIC5taW51dGUodGhpcy5zZWxlY3RlZE1pbnV0ZVNpZ25hbCgpKVxuICAgICAgICAgIC5zZWNvbmQoMClcbiAgICAgICAgICAubWlsbGlzZWNvbmQoMCk7XG4gICAgICAgIFxuICAgICAgICBkYXRlID0gZmluYWxTZWxlY3Rpb24uZm9ybWF0KHRoaXMuZGF0YS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGF0ZS1vbmx5IGZvcm1hdCAtIG5vIHRpbWVcbiAgICAgICAgZGF0ZSA9IGRheWpzKClcbiAgICAgICAgICAueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkpXG4gICAgICAgICAgLmRhdGUoZGF5ID8gZGF5LmRhdGUgOiB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlU2lnbmFsKCk/LmRhdGUgfHwgZGF5anMoKS5kYXRlKCkpXG4gICAgICAgICAgLmhvdXIoMClcbiAgICAgICAgICAubWludXRlKDApXG4gICAgICAgICAgLnNlY29uZCgwKVxuICAgICAgICAgIC5taWxsaXNlY29uZCgwKVxuICAgICAgICAgIC5mb3JtYXQodGhpcy5kYXRhLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChkYXkgfHwgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbCgpIHx8ICh0aGlzLmRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgdGhpcy5kYXRhLmRhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbmNlbERhdGVQaWNrZXIoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2lsZW50bHkgaGFuZGxlIGFwcGx5RGF0ZSBlcnJvclxuICAgICAgdGhpcy5kYXRhLmRhdGVDaGFuZ2UoXCJcIik7XG4gICAgfVxuICB9XG5cbiAgb25EYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGNvbnN0IG5hdktleXMgPSBbJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93RG93bicsICdBcnJvd1VwJywgJ0hvbWUnLCAnRW5kJywgJ1BhZ2VVcCcsICdQYWdlRG93biddO1xuICAgIGlmICghbmF2S2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLmZvY3VzZWREYXRlU2lnbmFsKCk7XG4gICAgaWYgKCFmb2N1c2VkIHx8IGRheS5kYXRlIDw9IDApIHJldHVybjtcblxuICAgIGxldCB0YXJnZXQgPSB0aGlzLnBhcnNlWm9uZUluc3RhbmNlKClcbiAgICAgIC55ZWFyKGZvY3VzZWQueWVhcilcbiAgICAgIC5tb250aChmb2N1c2VkLm1vbnRoKVxuICAgICAgLmRhdGUoZm9jdXNlZC5kYXRlKTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzogdGFyZ2V0ID0gdGFyZ2V0LmFkZCgxLCAnZGF5Jyk7IGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzogIHRhcmdldCA9IHRhcmdldC5zdWJ0cmFjdCgxLCAnZGF5Jyk7IGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzogIHRhcmdldCA9IHRhcmdldC5hZGQoNywgJ2RheScpOyBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOiAgICB0YXJnZXQgPSB0YXJnZXQuc3VidHJhY3QoNywgJ2RheScpOyBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOiAgICAgICB0YXJnZXQgPSB0YXJnZXQuc3RhcnRPZignd2VlaycpOyBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6ICAgICAgICB0YXJnZXQgPSB0YXJnZXQuZW5kT2YoJ3dlZWsnKTsgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlRG93bic6ICAgdGFyZ2V0ID0gdGFyZ2V0LmFkZCgxLCAnbW9udGgnKTsgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlVXAnOiAgICAgdGFyZ2V0ID0gdGFyZ2V0LnN1YnRyYWN0KDEsICdtb250aCcpOyBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm1vbnRoKCkgIT09IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkgfHwgdGFyZ2V0LnllYXIoKSAhPT0gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlclNpZ25hbC5zZXQodGFyZ2V0Lm1vbnRoKCkpO1xuICAgICAgdGhpcy5jdXJyZW50TW9udGhTaWduYWwuc2V0KGdldE1vbnRoKHRhcmdldC5tb250aCgpKSk7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldCh0YXJnZXQueWVhcigpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldCh0YXJnZXQueWVhcigpKTtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXNTaWduYWwuc2V0KHRoaXMuZ2VuZXJhdGVEYXRlcyh0YXJnZXQubW9udGgoKSwgdGFyZ2V0LnllYXIoKSkpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgICAgIHRoaXMubGl2ZUFubm91bmNlci5hbm5vdW5jZShcbiAgICAgICAgYCR7dGhpcy5hdmFpbGFibGVNb250aHNTaWduYWwoKVt0YXJnZXQubW9udGgoKV19ICR7dGFyZ2V0LnllYXIoKX1gLFxuICAgICAgICAncG9saXRlJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIGRpc2FibGVkIGRheXMg4oCUIHdhbGsgZm9yd2FyZCBvciBiYWNrd2FyZCB1bnRpbCBhIG5vbi1kaXNhYmxlZCBkYXkgaXMgZm91bmRcbiAgICBjb25zdCBpc0ZvcndhcmRLZXkgPSBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJywgJ1BhZ2VEb3duJ10uaW5jbHVkZXMoZXZlbnQua2V5KTtcbiAgICBjb25zdCBzdGVwRGlyID0gaXNGb3J3YXJkS2V5ID8gMSA6IC0xO1xuICAgIGxldCBjYW5kaWRhdGUgPSB0YXJnZXQ7XG4gICAgbGV0IHNhZmV0eUxpbWl0ID0gNjA7XG4gICAgd2hpbGUgKHNhZmV0eUxpbWl0LS0gPiAwKSB7XG4gICAgICBpZiAoY2FuZGlkYXRlLm1vbnRoKCkgIT09IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCkgfHwgY2FuZGlkYXRlLnllYXIoKSAhPT0gdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbCgpKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldChjYW5kaWRhdGUubW9udGgoKSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoU2lnbmFsLnNldChnZXRNb250aChjYW5kaWRhdGUubW9udGgoKSkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsLnNldChjYW5kaWRhdGUueWVhcigpKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFllYXJTaWduYWwuc2V0KGNhbmRpZGF0ZS55ZWFyKCkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsLnNldCh0aGlzLmdlbmVyYXRlRGF0ZXMoY2FuZGlkYXRlLm1vbnRoKCksIGNhbmRpZGF0ZS55ZWFyKCkpKTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNaW5NYXhEYXlzKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuICAgICAgfVxuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmN1cnJlbnRNb250aERhdGVzU2lnbmFsKCkuZmluZChcbiAgICAgICAgZCA9PiBkLmRhdGUgPT09IGNhbmRpZGF0ZS5kYXRlKCkgJiYgIWQuaXNEaXNhYmxlZERheSAmJiBkLmRhdGUgPiAwXG4gICAgICApO1xuICAgICAgaWYgKGZvdW5kKSB7IHRhcmdldCA9IGNhbmRpZGF0ZTsgYnJlYWs7IH1cbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5hZGQoc3RlcERpciwgJ2RheScpO1xuICAgIH1cblxuICAgIHRoaXMuZm9jdXNlZERhdGVTaWduYWwuc2V0KHsgZGF0ZTogdGFyZ2V0LmRhdGUoKSwgbW9udGg6IHRhcmdldC5tb250aCgpLCB5ZWFyOiB0YXJnZXQueWVhcigpIH0pO1xuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdG9yID0gYFtkYXRhLWRhdGU9XCIke3RhcmdldC55ZWFyKCl9LSR7dGFyZ2V0Lm1vbnRoKCl9LSR7dGFyZ2V0LmRhdGUoKX1cIl1gO1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihzZWxlY3Rvcik7XG4gICAgICBlbD8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVzY1wiKVxuICBjbG9zZU9uRXNjKCkge1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGEuZGF0ZUNoYW5nZShcIlwiKTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRoU2VsZWN0b3IoKSB7XG4gICAgaWYodGhpcy5pc1llYXJTZWxlY3Rpb25GbG93U2lnbmFsKCkpIHJldHVybjtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwuc2V0KCF0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwoKSk7XG4gICAgdGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgfVxuXG4gIHRvZ2dsZVllYXJTZWxlY3RvcigpIHtcbiAgICB0aGlzLmlzU2VsZWN0aW5nWWVhclNpZ25hbC5zZXQoIXRoaXMuaXNTZWxlY3RpbmdZZWFyU2lnbmFsKCkpO1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyU2lnbmFsLnNldCh0aGlzLmN1cnJlbnRZZWFyTnVtYmVyU2lnbmFsKCkpO1xuICAgIHRoaXMuYXZhaWxhYmxlWWVhcnNTaWduYWwuc2V0KEFycmF5LmZyb20oXG4gICAgICB7IGxlbmd0aDogMTIgfSxcbiAgICAgIChfLCBpbmRleCkgPT4gdGhpcy5zZWxlY3RlZFllYXJTaWduYWwoKSAtIDYgKyBpbmRleFxuICAgICkpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRNb250aHNBbmRZZWFycygpO1xuXG4gIH1cblxuICByZXNldERhdGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZVNpZ25hbC5zZXQoe1xuICAgICAgZGF0ZTogMCxcbiAgICAgIHdlZWtEYXk6IDAsXG4gICAgICBpc0N1cnJlbnREYXk6IGZhbHNlLFxuICAgICAgaXNTZWxlY3RlZERheTogZmFsc2UsXG4gICAgICBpc0Rpc2FibGVkRGF5OiBmYWxzZSxcbiAgICAgIHRvYXN0TWVzc2FnZTogJydcbiAgICB9KTtcbiAgICB0aGlzLmRhdGEuZGF0ZSA9ICcnO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsLnNldCh0aGlzLmF2YWlsYWJsZU1vbnRoc1NpZ25hbCgpLmluZGV4T2YobW9udGgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aFNpZ25hbC5zZXQoZ2V0TW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmdNb250aFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXNZZWFyU2VsZWN0aW9uRmxvd1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXREYXRlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5jdXJyZW50TW9udGhEYXRlc1NpZ25hbC5zZXQodGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyU2lnbmFsKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXJTaWduYWwoKSkpO1xuICAgIHRoaXMuY2FsY3VsYXRlTWluTWF4RGF5cygpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkWWVhclNpZ25hbC5zZXQoeWVhcik7XG4gICAgdGhpcy5jdXJyZW50WWVhck51bWJlclNpZ25hbC5zZXQoeWVhcik7XG4gICAgdGhpcy5pc1NlbGVjdGluZ1llYXJTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nTW9udGhTaWduYWwuc2V0KHRydWUpO1xuICAgIHRoaXMuaXNZZWFyU2VsZWN0aW9uRmxvd1NpZ25hbC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXNldERhdGVTZWxlY3Rpb24oKTtcbiAgICB0aGlzLmNhbGN1bGF0ZURpc2FibGVkTW9udGhzQW5kWWVhcnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YS5kaXNhYmxlQm94U2hhZG93PydyZW1vdmUtYm94LXNoYWRvdyc6JydcIiBhcmlhLWxhYmVsPVwiZGF0ZSBwaWNrZXJcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIj5cbiAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2hlYWRlclwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2Fycm93X19pY29uXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVZpZXcoJ1BSRVZJT1VTJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIE1vbnRoXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQoKSB8fCBpc1NlbGVjdGluZ01vbnRoKCkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpIHx8IGlzU2VsZWN0aW5nTW9udGgoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzUHJldmlvdXNNb250aERpc2FibGVkKCkgfHwgaXNTZWxlY3RpbmdNb250aCgpIH1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xOS43MDcxIDguNzA3MTFDMjAuMDk3NiA4LjMxNjU4IDIwLjA5NzYgNy42ODM0MiAxOS43MDcxIDcuMjkyODlMMTMuMzQzMSAwLjkyODkzM0MxMi45NTI2IDAuNTM4NDA5IDEyLjMxOTUgMC41Mzg0MDkgMTEuOTI4OSAwLjkyODkzM0MxMS41Mzg0IDEuMzE5NDYgMTEuNTM4NCAxLjk1MjYyIDExLjkyODkgMi4zNDMxNUwxNy41ODU4IDhMMTEuOTI4OSAxMy42NTY5QzExLjUzODQgMTQuMDQ3NCAxMS41Mzg0IDE0LjY4MDUgMTEuOTI4OSAxNS4wNzExQzEyLjMxOTUgMTUuNDYxNiAxMi45NTI2IDE1LjQ2MTYgMTMuMzQzMSAxNS4wNzExTDE5LjcwNzEgOC43MDcxMVpNLTguNzQyMjhlLTA4IDlMMTkgOUwxOSA3TDguNzQyMjhlLTA4IDdMLTguNzQyMjhlLTA4IDlaXCJcbiAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWlzU2VsZWN0aW5nWWVhcigpXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNb250aFNlbGVjdG9yKClcIlxuICAgICAgY2xhc3M9XCJtb250aC1oZWFkZXJcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlY3QgbW9udGgsIGN1cnJlbnRseSAnICsgYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNTZWxlY3RpbmdNb250aCgpXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGluZ01vbnRoKClcIlxuICAgID5cbiAgICAgIHt7IGlzWWVhclNlbGVjdGlvbkZsb3coKSA/IHNlbGVjdGVkWWVhcigpIDogYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhaXNTZWxlY3RpbmdNb250aCgpXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVZZWFyU2VsZWN0b3IoKVwiXG4gICAgICBjbGFzcz1cInllYXItaGVhZGVyXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VsZWN0IHllYXIsIGN1cnJlbnRseSAnICsgY3VycmVudFllYXJOdW1iZXIoKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzU2VsZWN0aW5nWWVhcigpXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc1NlbGVjdGluZ1llYXIoKVwiXG4gICAgPlxuICAgICAge3sgaXNTZWxlY3RpbmdZZWFyKCkgPyB5ZWFyUmFuZ2UgOiBjdXJyZW50WWVhck51bWJlcigpIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19hcnJvd19faWNvblwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVWaWV3KCdORVhUJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIk5leHQgTW9udGhcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc05leHRNb250aERpc2FibGVkKCkgfHwgaXNTZWxlY3RpbmdNb250aCgpID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZCgpIHx8IGlzU2VsZWN0aW5nTW9udGgoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1tb250aCc6IGlzTmV4dE1vbnRoRGlzYWJsZWQoKSB8fCBpc1NlbGVjdGluZ01vbnRoKCkgfVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTZWxlY3RpbmdNb250aCgpICYmICFpc1NlbGVjdGluZ1llYXIoKVwiIGNsYXNzPVwibW9udGgtc2VsZWN0b3JcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgbW9udGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgYXZhaWxhYmxlTW9udGhzKCk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwibW9udGhcIlxuICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb250aFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJtb250aCA9PT0gYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkTW9udGhzKClbaV0gPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRNb250aHMoKVtpXVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZE1vbnRocygpW2ldICYmIHNlbGVjdE1vbnRoKG1vbnRoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGUtbW9udGgnOiBkaXNhYmxlZE1vbnRocygpW2ldLFxuICAgICAgICAgICAgJ3NlbGVjdC1tb250aCc6ICFkaXNhYmxlZE1vbnRocygpW2N1cnJlbnRNb250aE51bWJlcigpXSAmJiBtb250aCA9PT0gYXZhaWxhYmxlTW9udGhzKClbY3VycmVudE1vbnRoTnVtYmVyKCldXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBtb250aCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0aW5nWWVhcigpICYmICFpc1NlbGVjdGluZ01vbnRoKClcIiBjbGFzcz1cInllYXItc2VsZWN0b3JcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgeWVhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIGF2YWlsYWJsZVllYXJzKCk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwieWVhclwiXG4gICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInllYXIudG9TdHJpbmcoKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ5ZWFyID09PSBjdXJyZW50WWVhck51bWJlcigpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkWWVhcnMoKVtpXSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFllYXJzKClbaV1cIlxuICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWRZZWFycygpW2ldICYmIHNlbGVjdFllYXIoeWVhcilcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdkaXNhYmxlLXllYXInOiBkaXNhYmxlZFllYXJzKClbaV0sXG4gICAgICAgICAgICAnc2VsZWN0LXllYXInOiB5ZWFyID09PSBjdXJyZW50WWVhck51bWJlcigpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzU2VsZWN0aW5nTW9udGgoKSAmJiAhaXNTZWxlY3RpbmdZZWFyKClcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWw9XCJDYWxlbmRhclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2dyaWRcIj5cbiAgICAgIDxkaXYgcm9sZT1cInJvd1wiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlzXCI+XG4gICAgICAgIDxkaXYgcm9sZT1cImNvbHVtbmhlYWRlclwiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3dlZWtkYXlcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5cygpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ3ZWVrRGF5LmxhYmVsXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSB9XCI+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgcm9sZT1cInJvd1wiIGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lcl9fZGF5XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXksXG4gICAgICAgICAgICAnZGlzYWJsZWQtZGF5JzogZGF5LmlzRGlzYWJsZWREYXksXG4gICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhZGF5LmlzU2VsZWN0ZWREYXlcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzKClcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJkYXkuZGF0ZSA+IDBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXNGb2N1c2VkRGF5KGRheSkgPyAwIDogLTFcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXRyYWN0RGF5TW9udGgoZGF5LmRhdGUsIGN1cnJlbnRNb250aCgpLCBjdXJyZW50WWVhck51bWJlcigpKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImRheS5pc1NlbGVjdGVkRGF5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGF5LmlzRGlzYWJsZWREYXkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGF0ZV09XCJjdXJyZW50WWVhck51bWJlcigpICsgJy0nICsgY3VycmVudE1vbnRoTnVtYmVyKCkgKyAnLScgKyBkYXkuZGF0ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdjdXJyZW50LWRheSc6IGRheS5pc0N1cnJlbnREYXksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIG1pc1Rvb2xUaXBcbiAgICAgICAgICAgIFt0ZXh0XT1cImRheS50b2FzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgW3Nob3dPbkhvdmVyXT1cIiEhZGF5LnRvYXN0TWVzc2FnZSAmJiBkYXRhLnNob3dEYXRlTWVzc2FnZXNUb29sdGlwXCJcbiAgICAgICAgICAgIHBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25EYXlLZXlkb3duKCRldmVudCwgZGF5KVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF5KGRheSlcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cInNlbGVjdERheShkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXkuZGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUaW1lIFBpY2tlciBTZWN0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJfX3RpbWVcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuZW5hYmxlVGltZSA9PT0gdHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuPlRpbWU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRyb2xzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiaG91cklucHV0XCI+SG91cjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwiaG91cklucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBbbWluXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAxIDogMFwiXG4gICAgICAgICAgW21heF09XCJpczEySG91ckZvcm1hdCgpID8gMTIgOiAyM1wiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRIb3VyKClcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkSG91clNpZ25hbC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSG91cklucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlSG91cklucHV0KClcIlxuICAgICAgICAgIGNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgW3RpdGxlXT1cImlzMTJIb3VyRm9ybWF0KCkgPyAnRW50ZXIgaG91ciAoMS0xMiknIDogJ0VudGVyIGhvdXIgKDAtMjMpJ1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj46PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWludXRlSW5wdXRcIj5NaW51dGU8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cIm1pbnV0ZUlucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBtYXg9XCI1OVwiXG4gICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRNaW51dGUoKVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRNaW51dGVTaWduYWwuc2V0KCRldmVudClcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbk1pbnV0ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cInZhbGlkYXRlTWludXRlSW5wdXQoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ0aW1lLWlucHV0XCJcbiAgICAgICAgICB0aXRsZT1cIkVudGVyIG1pbnV0ZSAoMC01OSlcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFtLXBtLXNlbGVjdG9yXCIgKm5nSWY9XCJpczEySG91ckZvcm1hdCgpXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJhbVBtU2VsZWN0XCI+QU0vUE08L2xhYmVsPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgaWQ9XCJhbVBtU2VsZWN0XCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEFtUG0oKVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRBbVBtU2lnbmFsLnNldCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImFtLXBtLXNlbGVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBTVwiPkFNPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlBNXCI+UE08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGFpbmVyX19mb290ZXJcIiAqbmdJZj1cImRhdGEuZHBDb25maWcuc2hvd0FwcGx5QnV0dG9uIHx8IGRhdGEuZHBDb25maWcuZW5hYmxlVGltZVwiPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwiJ25vbmUnXCIgKGNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGUoKVwiIFtkaXNhYmxlZF09XCIhKGRhdGEuZGF0ZSB8fCBsb2NhbFNlbGVjdGVkRGF0ZSgpPy5kYXRlKVwiPkFwcGx5PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=