@skyux/datetime 11.22.0 → 11.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/documentation.json +2248 -2178
  2. package/esm2022/lib/modules/date-range-picker/date-range-picker.component.mjs +20 -5
  3. package/esm2022/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +2 -2
  4. package/esm2022/lib/modules/datepicker/datepicker-host.service.mjs +61 -0
  5. package/esm2022/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +27 -10
  6. package/esm2022/lib/modules/datepicker/datepicker-input.directive.mjs +27 -15
  7. package/esm2022/lib/modules/datepicker/datepicker.component.mjs +16 -3
  8. package/esm2022/lib/modules/datepicker/daypicker-button.component.mjs +2 -2
  9. package/esm2022/lib/modules/timepicker/timepicker.component.mjs +6 -3
  10. package/esm2022/testing/legacy/datepicker-fixture.mjs +56 -0
  11. package/esm2022/testing/legacy/timepicker-fixture.mjs +52 -0
  12. package/esm2022/testing/modules/date-range-picker/date-range-picker-harness.filters.mjs +2 -0
  13. package/esm2022/testing/modules/date-range-picker/date-range-picker-harness.mjs +143 -0
  14. package/esm2022/testing/modules/datepicker/datepicker-calendar-harness.filters.mjs +2 -0
  15. package/esm2022/testing/modules/datepicker/datepicker-calendar-harness.mjs +88 -0
  16. package/esm2022/testing/modules/datepicker/datepicker-harness.filters.mjs +2 -0
  17. package/esm2022/testing/modules/datepicker/datepicker-harness.mjs +59 -0
  18. package/esm2022/testing/modules/datepicker/datepicker-input-harness.mjs +29 -0
  19. package/esm2022/testing/public-api.mjs +6 -6
  20. package/fesm2022/skyux-datetime-testing.mjs +157 -146
  21. package/fesm2022/skyux-datetime-testing.mjs.map +1 -1
  22. package/fesm2022/skyux-datetime.mjs +145 -33
  23. package/fesm2022/skyux-datetime.mjs.map +1 -1
  24. package/lib/modules/datepicker/datepicker-host.service.d.ts +21 -0
  25. package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +1 -0
  26. package/lib/modules/datepicker/datepicker-input.directive.d.ts +1 -1
  27. package/lib/modules/datepicker/datepicker.component.d.ts +8 -2
  28. package/lib/modules/timepicker/timepicker.component.d.ts +1 -0
  29. package/package.json +9 -9
  30. package/testing/{datepicker-fixture.d.ts → legacy/datepicker-fixture.d.ts} +1 -0
  31. package/testing/{datepicker → modules/datepicker}/datepicker-harness.d.ts +1 -1
  32. package/testing/{datepicker/datepicker-harness-input.d.ts → modules/datepicker/datepicker-input-harness.d.ts} +4 -0
  33. package/testing/public-api.d.ts +8 -8
  34. package/esm2022/testing/date-range-picker/date-range-picker-harness.filters.mjs +0 -2
  35. package/esm2022/testing/date-range-picker/date-range-picker-harness.mjs +0 -143
  36. package/esm2022/testing/datepicker/datepicker-calendar-harness.filters.mjs +0 -2
  37. package/esm2022/testing/datepicker/datepicker-calendar-harness.mjs +0 -88
  38. package/esm2022/testing/datepicker/datepicker-harness-input.mjs +0 -19
  39. package/esm2022/testing/datepicker/datepicker-harness.filters.mjs +0 -2
  40. package/esm2022/testing/datepicker/datepicker-harness.mjs +0 -59
  41. package/esm2022/testing/datepicker-fixture.mjs +0 -55
  42. package/esm2022/testing/timepicker-fixture.mjs +0 -52
  43. /package/testing/{timepicker-fixture.d.ts → legacy/timepicker-fixture.d.ts} +0 -0
  44. /package/testing/{date-range-picker → modules/date-range-picker}/date-range-picker-harness.d.ts +0 -0
  45. /package/testing/{date-range-picker → modules/date-range-picker}/date-range-picker-harness.filters.d.ts +0 -0
  46. /package/testing/{datepicker → modules/datepicker}/datepicker-calendar-harness.d.ts +0 -0
  47. /package/testing/{datepicker → modules/datepicker}/datepicker-calendar-harness.filters.d.ts +0 -0
  48. /package/testing/{datepicker → modules/datepicker}/datepicker-harness.filters.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, Injector, Input, booleanAttribute, computed, inject, signal, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, Injector, Input, booleanAttribute, computed, inject, runInInjectionContext, signal, } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
4
4
  import { FormBuilder, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, ReactiveFormsModule, StatusChangeEvent, TouchedChangeEvent, } from '@angular/forms';
5
5
  import { SkyLogService } from '@skyux/core';
@@ -78,7 +78,7 @@ export class SkyDateRangePickerComponent {
78
78
  });
79
79
  this.calculatorIdHasErrors = computed(() => {
80
80
  const touched = this.#calculatorIdTouched();
81
- const invalid = this.#calculatorIdInvalid();
81
+ const invalid = this.#calculatorIdInvalid() || this.#hostHasCustomError?.();
82
82
  return touched && invalid;
83
83
  });
84
84
  this.endDateHasErrors = computed(() => {
@@ -160,6 +160,7 @@ export class SkyDateRangePickerComponent {
160
160
  #startDateControl;
161
161
  #startDateInvalid;
162
162
  #startDateTouched;
163
+ #hostHasCustomError;
163
164
  #_calculatorIds;
164
165
  #_label;
165
166
  #_value;
@@ -168,6 +169,11 @@ export class SkyDateRangePickerComponent {
168
169
  optional: true,
169
170
  self: true,
170
171
  })?.control;
172
+ runInInjectionContext(this.#injector, () => {
173
+ if (this.hostControl) {
174
+ this.#hostHasCustomError = this.#createHostCustomErrorChangeSignal(this.hostControl);
175
+ }
176
+ });
171
177
  // Set a default value on the control if it's undefined on init.
172
178
  // We need to use setTimeout to avoid interfering with the first
173
179
  // validation cycle.
@@ -342,6 +348,15 @@ export class SkyDateRangePickerComponent {
342
348
  this.showEndDatePicker.set(showEndDatePicker);
343
349
  this.showStartDatePicker.set(showStartDatePicker);
344
350
  }
351
+ #createHostCustomErrorChangeSignal(control) {
352
+ return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => {
353
+ const errors = evt.source.errors ?? [];
354
+ const knownErrors = ['required', 'skyDate'];
355
+ return Object.keys(errors).some((error) => {
356
+ return !knownErrors.includes(error);
357
+ });
358
+ })));
359
+ }
345
360
  #createStatusChangeSignal(control) {
346
361
  return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => evt.status === 'INVALID'), takeUntilDestroyed(this.#destroyRef)));
347
362
  }
@@ -361,7 +376,7 @@ export class SkyDateRangePickerComponent {
361
376
  multi: true,
362
377
  },
363
378
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
364
- ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: i3.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: i4.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i6.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i6.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
379
+ ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: i3.SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: i4.SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i6.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i6.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
365
380
  }
366
381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
367
382
  type: Component,
@@ -387,7 +402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
387
402
  multi: true,
388
403
  },
389
404
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
390
- ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
405
+ ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
391
406
  }], propDecorators: { calculatorIds: [{
392
407
  type: Input
393
408
  }], dateFormat: [{
@@ -414,4 +429,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
414
429
  }], helpKey: [{
415
430
  type: Input
416
431
  }] } });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBR0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJB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RDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUIsY0FDckIsSUFBSTs4QkFrQkwsYUFBYTtzQkFEdkIsS0FBSztnQkE4QkMsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDhCQUE4QjtnQkFTcEMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgU3RhdHVzQ2hhbmdlRXZlbnQsXG4gIFRvdWNoZWRDaGFuZ2VFdmVudCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUlucHV0Qm94TW9kdWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3IgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFMgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG50eXBlIERhdGVWYWx1ZSA9IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBhcmVEYXRlUmFuZ2VzRXF1YWwoXG4gIHJhbmdlQTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4gIHJhbmdlQjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXJhbmdlQSAmJlxuICAgICEhcmFuZ2VCICYmXG4gICAgcmFuZ2VBLmNhbGN1bGF0b3JJZCA9PT0gcmFuZ2VCLmNhbGN1bGF0b3JJZCAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXJlRGF0ZXNFcXVhbChhOiBEYXRlVmFsdWUsIGI6IERhdGVWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFhICYmICFiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSAmJiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWxWYWx1ZShcbiAgdmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZhbHVlIGlzIFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8XG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKSB8fFxuICAgICEoJ2VuZERhdGUnIGluIHZhbHVlKSB8fFxuICAgICEoJ3N0YXJ0RGF0ZScgaW4gdmFsdWUpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreURhdGVwaWNrZXJNb2R1bGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSxcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5SW5wdXRCb3hNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIHJlYWRvbmx5ICNkYXRlUmFuZ2VTdmMgPSBpbmplY3QoU2t5RGF0ZVJhbmdlU2VydmljZSk7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBJRHMgZm9yIHRoZSBkYXRlIHJhbmdlIG9wdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgcGlja2VyJ3MgZHJvcGRvd24uXG4gICAqIFRoZSBvcHRpb25zIHNwZWNpZnkgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmV0dXJuIHR3byBgRGF0ZWAgb2JqZWN0cyB0byByZXByZXNlbnQgZGF0ZSByYW5nZXMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgaW5jbHVkZXMgYWxsIGBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRgIHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2FsY3VsYXRvcklkcyhcbiAgICBjYWxjdWxhdG9ySWRzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgY29uc3QgY3VycmVudENhbGN1bGF0b3JJZCA9IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkO1xuXG4gICAgdGhpcy4jX2NhbGN1bGF0b3JJZHMgPSBjYWxjdWxhdG9ySWRzID8/IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTO1xuICAgIHRoaXMuY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuZmlsdGVyQ2FsY3VsYXRvcnMoXG4gICAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyxcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjYWxjdWxhdG9yIGlzbid0IGF2YWlsYWJsZSBhbnltb3JlLFxuICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgY2FsY3VsYXRvciBpbiB0aGUgbmV3IGFycmF5LlxuICAgIGlmICghdGhpcy4jX2NhbGN1bGF0b3JJZHMuaW5jbHVkZXMoY3VycmVudENhbGN1bGF0b3JJZCkpIHtcbiAgICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiB0aGlzLmNhbGN1bGF0b3JJZHNbMF0gfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ySWRzKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGN1bGF0b3JJZHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvclxuICAgKiBbdGhlIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50c10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGVwaWNrZXIpXG4gICAqIHRoYXQgbWFrZSB1cCB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSB0ZXh0IGlucHV0IGlzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBvZlxuICAgKiB1cCB0byB0d28gYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZVxuICAgKiB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZVxuICAgKiB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy4gVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcyxcbiAgICogdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIGRhdGUgcmFuZ2UgcGlja2VyLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQubGFiZWwnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiAxMCxcbiAgICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgaW5zdGVhZC4nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgZGF0ZSByYW5nZSBwaWNrZXIncyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1maWVsZC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRvcnMgPSB0aGlzLiNkYXRlUmFuZ2VTdmMuY2FsY3VsYXRvcnM7XG4gIHByb3RlY3RlZCBob3N0Q29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuY2FsY3VsYXRvcnNbMF07XG4gIHByb3RlY3RlZCBzaG93RW5kRGF0ZVBpY2tlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93U3RhcnREYXRlUGlja2VyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAjY2FsY3VsYXRvcklkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KFxuICAgIHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfSxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZEludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZFRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICk7XG5cbiAgI2VuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPERhdGVWYWx1ZT4odGhpcy4jZ2V0VmFsdWUoKS5lbmREYXRlKTtcbiAgI2VuZERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcbiAgI2VuZERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNlbmREYXRlQ29udHJvbCk7XG5cbiAgI3N0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLnN0YXJ0RGF0ZSk7XG4gICNzdGFydERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wpO1xuICAjc3RhcnREYXRlVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgICBzdGFydERhdGU6IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wsXG4gICAgZW5kRGF0ZTogdGhpcy4jZW5kRGF0ZUNvbnRyb2wsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2NhbGN1bGF0b3JJZFRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jY2FsY3VsYXRvcklkSW52YWxpZCgpO1xuXG4gICAgcmV0dXJuIHRvdWNoZWQgJiYgaW52YWxpZDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVuZERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jZW5kRGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jZW5kRGF0ZUludmFsaWQoKTtcblxuICAgIHJldHVybiBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgfHwgKHRvdWNoZWQgJiYgaW52YWxpZCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jc3RhcnREYXRlVG91Y2hlZCgpO1xuICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLiNzdGFydERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICAjX2NhbGN1bGF0b3JJZHMgPSBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUztcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IuZ2V0VmFsdWUoKTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdENvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgfSk/LmNvbnRyb2w7XG5cbiAgICAvLyBTZXQgYSBkZWZhdWx0IHZhbHVlIG9uIHRoZSBjb250cm9sIGlmIGl0J3MgdW5kZWZpbmVkIG9uIGluaXQuXG4gICAgLy8gV2UgbmVlZCB0byB1c2Ugc2V0VGltZW91dCB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBmaXJzdFxuICAgIC8vIHZhbGlkYXRpb24gY3ljbGUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHRoaXMuaG9zdENvbnRyb2w/LnZhbHVlKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkYXRlcGlja2Vycycgc3RhdHVzZXMgY2hhbmdlLCB3ZSB3YW50IHRvIHJldHJpZ2dlciB0aGUgaG9zdFxuICAgIC8vIGNvbnRyb2wncyB2YWxpZGF0aW9uIHNvIHRoYXQgdGhlaXIgZXJyb3JzIGFyZSByZWZsZWN0ZWQgYmFjayB0byB0aGUgaG9zdC5cbiAgICB0aGlzLmZvcm1Hcm91cC5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgU3RhdHVzQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogU3RhdHVzQ2hhbmdlRXZlbnQpID0+IGV2dC5zdGF0dXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ob3N0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIGlmIHRoZSBob3N0IGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICB0aGlzLmhvc3RDb250cm9sPy5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgVG91Y2hlZENoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFRvdWNoZWRDaGFuZ2VFdmVudCkgPT4gZXZ0LnRvdWNoZWQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IHVua25vd24pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgVmFsaWRhdG9yLlxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhbGN1bGF0b3JFcnJvcnMgPSB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvci52YWxpZGF0ZShjb250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBzdGFydERhdGVFcnJvcnMgPSB0aGlzLiNzdGFydERhdGVDb250cm9sLmVycm9ycztcbiAgICBjb25zdCBlbmREYXRlRXJyb3JzID0gdGhpcy4jZW5kRGF0ZUNvbnRyb2wuZXJyb3JzO1xuXG4gICAgaWYgKGNhbGN1bGF0b3JFcnJvcnMpIHtcbiAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgc2t5RGF0ZVJhbmdlOiB7XG4gICAgICAgICAgY2FsY3VsYXRvcklkOiB0aGlzLiNnZXRWYWx1ZSgpLmNhbGN1bGF0b3JJZCxcbiAgICAgICAgICBlcnJvcnM6IGNhbGN1bGF0b3JFcnJvcnMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFNldCBjYWxjdWxhdG9yIGVycm9ycyBvbiB0aGUgc2VsZWN0IHNvIHRoYXQgdGhleSBhcHBlYXIgYmVuZWF0aCBpdC5cbiAgICB0aGlzLiNjYWxjdWxhdG9ySWRDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuXG4gICAgaWYgKHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlcigpICYmIHN0YXJ0RGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5zdGFydERhdGVFcnJvcnMgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93RW5kRGF0ZVBpY2tlcigpICYmIGVuZERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZW5kRGF0ZUVycm9ycyB9O1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBUaGUgZGF0ZSByYW5nZSBwaWNrZXIgYWx3YXlzIGhhcyBhIHZhbHVlLCBzbyBpZiB0aGUgY29uc3VtZXIgcGFzc2VzIGluIGFcbiAgLy8gcGFydGlhbCB2YWx1ZSAodmlhIGBwYXRjaFZhbHVlYCkgb3IgbnVsbCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGhvc3QgY29udHJvbCdzXG4gIC8vIHZhbHVlIHdpdGggdGhlIGNvbXBsZXRlIHZhbHVlIGFmdGVyIGl0J3MgYmVlbiBtb2RpZmllZC5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jcGF0Y2hWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGhvc3QgY29udHJvbCBpZiBpdCBpcyBzZXQgdG8gYSBwYXJ0aWFsIG9yIG51bGwgdmFsdWUuXG4gICAgaWYgKGlzUGFydGlhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgdGhpcy5ob3N0Q29udHJvbD8uc2V0VmFsdWUodGhpcy4jZ2V0VmFsdWUoKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbGN1bGF0b3JJZENoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgdmFsdWUgd2hlbiB0aGUgY2FsY3VsYXRvciBJRCBjaGFuZ2VzLlxuICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiArdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC52YWx1ZSB9KTtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIGludGVyYWN0cyB3aXRoIGEgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgdW50aWwgdGhlIGZvcm0gY29udHJvbCBpcyB1cGRhdGVkIGJlZm9yZSByZXRyaWV2aW5nIGl0cyB2YWx1ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIGFzIFNreURhdGVSYW5nZUNhbGN1bGF0aW9uLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRDYWxjdWxhdG9yKGNhbGN1bGF0b3JJZDogbnVtYmVyKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNhbGN1bGF0b3JzLmZpbmQoKGMpID0+IGMuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHNhZmV0eSBjaGVjayovXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBkYXRlIHJhbmdlIGNhbGN1bGF0b3Igd2l0aCBJRCAoJHtjYWxjdWxhdG9ySWR9KSBjb3VsZCBub3QgYmUgZm91bmQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICAvLyBJbXBvcnRhbnQhIFJldHVybiBhIGNsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIGJ5IHJlZmVyZW5jZS5cbiAgICByZXR1cm4geyAuLi50aGlzLiNfdmFsdWUgfTtcbiAgfVxuXG4gICNwYXRjaFZhbHVlKFxuICAgIHBhcnRpYWxWYWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gSWYgdGhlIG5ldyBJRCBpcyBkaXN0aW5jdCwgZXJhc2UgdGhlIG9sZCBzdGFydCBhbmQgZW5kIGRhdGVzIGJlY2F1c2VcbiAgICAvLyB0aGV5J3JlIG5vIGxvbmdlciBhcHBsaWNhYmxlLlxuICAgIGlmIChcbiAgICAgICFpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkKSAmJlxuICAgICAgb2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSBwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkXG4gICAgKSB7XG4gICAgICBkZWxldGUgb2xkVmFsdWUuZW5kRGF0ZTtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5zdGFydERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAuLi5vbGRWYWx1ZSxcbiAgICAgIC4uLnBhcnRpYWxWYWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZSh2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUVtcHR5ID0gIXZhbHVlIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCk7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSBpc1ZhbHVlRW1wdHlcbiAgICAgID8gdGhpcy5jYWxjdWxhdG9yc1swXS5nZXRWYWx1ZSgpXG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLiNnZXRDYWxjdWxhdG9yKHZhbHVlLmNhbGN1bGF0b3JJZCkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgIC8vIEVuc3VyZSBmYWxzeSB2YWx1ZXMgYXJlIHNldCB0byBudWxsLlxuICAgIHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5lbmREYXRlIHx8IG51bGw7XG4gICAgdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlID0gdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlIHx8IG51bGw7XG5cbiAgICBpZiAoIWFyZURhdGVSYW5nZXNFcXVhbChvbGRWYWx1ZSwgdmFsdWVPckRlZmF1bHQpKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZU9yRGVmYXVsdDtcblxuICAgICAgaWYgKG9sZFZhbHVlLmNhbGN1bGF0b3JJZCAhPT0gdmFsdWVPckRlZmF1bHQuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy4jZ2V0Q2FsY3VsYXRvcihcbiAgICAgICAgICB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IpOiB2b2lkIHtcbiAgICBsZXQgc2hvd0VuZERhdGVQaWNrZXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjYWxjdWxhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2U6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dFbmREYXRlUGlja2VyLnNldChzaG93RW5kRGF0ZVBpY2tlcik7XG4gICAgdGhpcy5zaG93U3RhcnREYXRlUGlja2VyLnNldChzaG93U3RhcnREYXRlUGlja2VyKTtcbiAgfVxuXG4gICNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoY29udHJvbDogRm9ybUNvbnRyb2wpOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4gZXZ0LnN0YXR1cyA9PT0gJ0lOVkFMSUQnKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwoXG4gICAgY29udHJvbDogRm9ybUNvbnRyb2wsXG4gICk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFRvdWNoZWRDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBUb3VjaGVkQ2hhbmdlRXZlbnQpID0+IGV2dC50b3VjaGVkKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtcGlja2VyLXNlbGVjdC1jYWxjdWxhdG9yXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICAhc2hvd1N0YXJ0RGF0ZVBpY2tlcigpICYmICFzaG93RW5kRGF0ZVBpY2tlcigpXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWlucHV0LWJveFxuICAgICAgW2hhc0Vycm9yc109XCJjYWxjdWxhdG9ySWRIYXNFcnJvcnMoKVwiXG4gICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgIFtoZWxwUG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgIFtoZWxwUG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgW2hpbnRUZXh0XT1cImhpbnRUZXh0XCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIGxhYmVsVGV4dCB8fFxuICAgICAgICBsYWJlbCB8fFxuICAgICAgICAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhbGN1bGF0b3JJZFwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNhbGN1bGF0b3JJZENoYW5nZSgpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoY2FsY3VsYXRvciBvZiBjYWxjdWxhdG9yczsgdHJhY2sgY2FsY3VsYXRvci5jYWxjdWxhdG9ySWQpIHtcbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJjYWxjdWxhdG9yLmNhbGN1bGF0b3JJZFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgPyAoY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5IHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgIDogY2FsY3VsYXRvci5zaG9ydERlc2NyaXB0aW9uXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIEBpZiAoXG4gICAgICAgIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ10/LmVycm9ycz8uW1xuICAgICAgICAgICdlbmREYXRlQmVmb3JlU3RhcnREYXRlJ1xuICAgICAgICBdICYmIGxhYmVsVGV4dFxuICAgICAgKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cImVuZERhdGVCZWZvcmVTdGFydERhdGVcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktaW5wdXQtYm94LWRlc2NlbmRlbnQtZm9ybS1lcnJvclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U3RhcnREYXRlUGlja2VyKClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIoKSAmJiAhc2hvd0VuZERhdGVQaWNrZXIoKVxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwic3RhcnREYXRlSGFzRXJyb3JzKClcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBuYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc2t5LWRhdGVwaWNrZXI+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZVwiXG4gICAgW2hpZGRlbl09XCIhc2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlcigpIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiZW5kRGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXIgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBuYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBR0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUdMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBR25CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDbEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQs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S0FBSztnQkE4QkMsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDhCQUE4QjtnQkFTcEMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1zTW9kdWxlLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTmdDb250cm9sLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBTdGF0dXNDaGFuZ2VFdmVudCxcbiAgVG91Y2hlZENoYW5nZUV2ZW50LFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCxcbiAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgU2t5SW5wdXRCb3hNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZGF0ZXRpbWUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLWVuZC1kYXRlLXJlc291cmNlLWtleS5waXBlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5UGlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRpb24nO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLWlkJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItdHlwZSc7XG5pbXBvcnQgeyBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUyB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1kZWZhdWx0LWNhbGN1bGF0b3ItY29uZmlncyc7XG5cbnR5cGUgRGF0ZVZhbHVlID0gRGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGFyZURhdGVSYW5nZXNFcXVhbChcbiAgcmFuZ2VBOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbiB8IHVuZGVmaW5lZCxcbiAgcmFuZ2VCOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbiB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgICEhcmFuZ2VBICYmXG4gICAgISFyYW5nZUIgJiZcbiAgICByYW5nZUEuY2FsY3VsYXRvcklkID09PSByYW5nZUIuY2FsY3VsYXRvcklkICYmXG4gICAgYXJlRGF0ZXNFcXVhbChyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLmVuZERhdGUsIHJhbmdlQi5lbmREYXRlKVxuICApO1xufVxuXG5mdW5jdGlvbiBhcmVEYXRlc0VxdWFsKGE6IERhdGVWYWx1ZSwgYjogRGF0ZVZhbHVlKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWEgJiYgIWIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycgJiYgYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlICYmIGEuZ2V0VGltZSgpID09PSBiLmdldFRpbWUoKTtcbn1cblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyB1bmRlZmluZWQgfCBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzUGFydGlhbFZhbHVlKFxuICB2YWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogdmFsdWUgaXMgUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChcbiAgICBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHxcbiAgICBpc051bGxPclVuZGVmaW5lZCh2YWx1ZS5jYWxjdWxhdG9ySWQpIHx8XG4gICAgISgnZW5kRGF0ZScgaW4gdmFsdWUpIHx8XG4gICAgISgnc3RhcnREYXRlJyBpbiB2YWx1ZSlcbiAgKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU2t5RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlLFxuICAgIFNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5UGlwZSxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lJbnB1dEJveE1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBzZWxlY3RvcjogJ3NreS1kYXRlLXJhbmdlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsOiAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgcmVhZG9ubHkgI2RhdGVSYW5nZVN2YyA9IGluamVjdChTa3lEYXRlUmFuZ2VTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIElEcyBmb3IgdGhlIGRhdGUgcmFuZ2Ugb3B0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBwaWNrZXIncyBkcm9wZG93bi5cbiAgICogVGhlIG9wdGlvbnMgc3BlY2lmeSBjYWxjdWxhdG9yIG9iamVjdHMgdGhhdCByZXR1cm4gdHdvIGBEYXRlYCBvYmplY3RzIHRvIHJlcHJlc2VudCBkYXRlIHJhbmdlcy5cbiAgICogQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpbmNsdWRlcyBhbGwgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYWxjdWxhdG9ySWRzKFxuICAgIGNhbGN1bGF0b3JJZHM6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBjb25zdCBjdXJyZW50Q2FsY3VsYXRvcklkID0gdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQ7XG5cbiAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyA9IGNhbGN1bGF0b3JJZHMgPz8gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5maWx0ZXJDYWxjdWxhdG9ycyhcbiAgICAgIHRoaXMuI19jYWxjdWxhdG9ySWRzLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGN1bGF0b3IgaXNuJ3QgYXZhaWxhYmxlIGFueW1vcmUsXG4gICAgLy8gc2VsZWN0IHRoZSBmaXJzdCBjYWxjdWxhdG9yIGluIHRoZSBuZXcgYXJyYXkuXG4gICAgaWYgKCF0aGlzLiNfY2FsY3VsYXRvcklkcy5pbmNsdWRlcyhjdXJyZW50Q2FsY3VsYXRvcklkKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoeyBjYWxjdWxhdG9ySWQ6IHRoaXMuY2FsY3VsYXRvcklkc1swXSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbGN1bGF0b3JJZHMoKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10ge1xuICAgIHJldHVybiB0aGlzLiNfY2FsY3VsYXRvcklkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmb3JtYXQgZm9yXG4gICAqIFt0aGUgYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0ZXBpY2tlcilcbiAgICogdGhhdCBtYWtlIHVwIHRoZSBkYXRlIHJhbmdlIHBpY2tlci4gVGhlIHRleHQgaW5wdXQgaXMgYSBjb21wb3NpdGUgY29tcG9uZW50IG9mXG4gICAqIHVwIHRvIHR3byBgc2t5LWRhdGVwaWNrZXJgIGNvbXBvbmVudHMuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlXG4gICAqIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlXG4gICAqIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLFxuICAgKiB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBkYXRlIHJhbmdlIHBpY2tlcidzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1mb3JtLWZpZWxkLXN0YWNrZWQnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5jYWxjdWxhdG9ycztcbiAgcHJvdGVjdGVkIGhvc3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy5jYWxjdWxhdG9yc1swXTtcbiAgcHJvdGVjdGVkIHNob3dFbmREYXRlUGlja2VyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dTdGFydERhdGVQaWNrZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICNub3RpZnlDaGFuZ2U6ICgoXzogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAjbm90aWZ5VG91Y2hlZDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICNjYWxjdWxhdG9ySWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sPG51bWJlcj4oXG4gICAgdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQsXG4gICAgeyBub25OdWxsYWJsZTogdHJ1ZSB9LFxuICApO1xuICAjY2FsY3VsYXRvcklkSW52YWxpZCA9IHRoaXMuI2NyZWF0ZVN0YXR1c0NoYW5nZVNpZ25hbChcbiAgICB0aGlzLiNjYWxjdWxhdG9ySWRDb250cm9sLFxuICApO1xuICAjY2FsY3VsYXRvcklkVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcblxuICAjZW5kRGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLmVuZERhdGUpO1xuICAjZW5kRGF0ZUludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwodGhpcy4jZW5kRGF0ZUNvbnRyb2wpO1xuICAjZW5kRGF0ZVRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcblxuICAjc3RhcnREYXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxEYXRlVmFsdWU+KHRoaXMuI2dldFZhbHVlKCkuc3RhcnREYXRlKTtcbiAgI3N0YXJ0RGF0ZUludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG4gICNzdGFydERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNzdGFydERhdGVDb250cm9sKTtcbiAgI2hvc3RIYXNDdXN0b21FcnJvcjogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBmb3JtR3JvdXAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLmdyb3VwKHtcbiAgICBjYWxjdWxhdG9ySWQ6IHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICAgc3RhcnREYXRlOiB0aGlzLiNzdGFydERhdGVDb250cm9sLFxuICAgIGVuZERhdGU6IHRoaXMuI2VuZERhdGVDb250cm9sLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdWNoZWQgPSB0aGlzLiNjYWxjdWxhdG9ySWRUb3VjaGVkKCk7XG4gICAgY29uc3QgaW52YWxpZCA9IHRoaXMuI2NhbGN1bGF0b3JJZEludmFsaWQoKSB8fCB0aGlzLiNob3N0SGFzQ3VzdG9tRXJyb3I/LigpO1xuICAgIHJldHVybiB0b3VjaGVkICYmIGludmFsaWQ7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBlbmREYXRlSGFzRXJyb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZEhhc0Vycm9ycyA9IHRoaXMuY2FsY3VsYXRvcklkSGFzRXJyb3JzKCk7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2VuZERhdGVUb3VjaGVkKCk7XG4gICAgY29uc3QgaW52YWxpZCA9IHRoaXMuI2VuZERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhcnREYXRlSGFzRXJyb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZEhhc0Vycm9ycyA9IHRoaXMuY2FsY3VsYXRvcklkSGFzRXJyb3JzKCk7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI3N0YXJ0RGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jc3RhcnREYXRlSW52YWxpZCgpO1xuXG4gICAgcmV0dXJuIGNhbGN1bGF0b3JJZEhhc0Vycm9ycyB8fCAodG91Y2hlZCAmJiBpbnZhbGlkKTtcbiAgfSk7XG5cbiAgI19jYWxjdWxhdG9ySWRzID0gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICNfbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI192YWx1ZSA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLmdldFZhbHVlKCk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RDb250cm9sID0gdGhpcy4jaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICBzZWxmOiB0cnVlLFxuICAgIH0pPy5jb250cm9sO1xuXG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuI2luamVjdG9yLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ob3N0Q29udHJvbCkge1xuICAgICAgICB0aGlzLiNob3N0SGFzQ3VzdG9tRXJyb3IgPSB0aGlzLiNjcmVhdGVIb3N0Q3VzdG9tRXJyb3JDaGFuZ2VTaWduYWwoXG4gICAgICAgICAgdGhpcy5ob3N0Q29udHJvbCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNldCBhIGRlZmF1bHQgdmFsdWUgb24gdGhlIGNvbnRyb2wgaWYgaXQncyB1bmRlZmluZWQgb24gaW5pdC5cbiAgICAvLyBXZSBuZWVkIHRvIHVzZSBzZXRUaW1lb3V0IHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggdGhlIGZpcnN0XG4gICAgLy8gdmFsaWRhdGlvbiBjeWNsZS5cbiAgICBpZiAoaXNQYXJ0aWFsVmFsdWUodGhpcy5ob3N0Q29udHJvbD8udmFsdWUpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5ob3N0Q29udHJvbD8uc2V0VmFsdWUodGhpcy4jZ2V0VmFsdWUoKSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGRhdGVwaWNrZXJzJyBzdGF0dXNlcyBjaGFuZ2UsIHdlIHdhbnQgdG8gcmV0cmlnZ2VyIHRoZSBob3N0XG4gICAgLy8gY29udHJvbCdzIHZhbGlkYXRpb24gc28gdGhhdCB0aGVpciBlcnJvcnMgYXJlIHJlZmxlY3RlZCBiYWNrIHRvIHRoZSBob3N0LlxuICAgIHRoaXMuZm9ybUdyb3VwLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4gZXZ0LnN0YXR1cyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvc3RDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICAgIG9ubHlTZWxmOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTWFyayBhbGwgZmllbGRzIGFzIHRvdWNoZWQgaWYgdGhlIGhvc3QgY29udHJvbCBpcyB0b3VjaGVkLlxuICAgIHRoaXMuaG9zdENvbnRyb2w/LmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBUb3VjaGVkQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogVG91Y2hlZENoYW5nZUV2ZW50KSA9PiBldnQudG91Y2hlZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBWYWxpZGF0b3IuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3QgY2FsY3VsYXRvckVycm9ycyA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZUVycm9ycyA9IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wuZXJyb3JzO1xuICAgIGNvbnN0IGVuZERhdGVFcnJvcnMgPSB0aGlzLiNlbmREYXRlQ29udHJvbC5lcnJvcnM7XG5cbiAgICBpZiAoY2FsY3VsYXRvckVycm9ycykge1xuICAgICAgZXJyb3JzID0ge1xuICAgICAgICBza3lEYXRlUmFuZ2U6IHtcbiAgICAgICAgICBjYWxjdWxhdG9ySWQ6IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgICAgICAgIGVycm9yczogY2FsY3VsYXRvckVycm9ycyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU2V0IGNhbGN1bGF0b3IgZXJyb3JzIG9uIHRoZSBzZWxlY3Qgc28gdGhhdCB0aGV5IGFwcGVhciBiZW5lYXRoIGl0LlxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG5cbiAgICBpZiAodGhpcy5zaG93U3RhcnREYXRlUGlja2VyKCkgJiYgc3RhcnREYXRlRXJyb3JzKSB7XG4gICAgICBlcnJvcnMgfHw9IHt9O1xuICAgICAgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLnN0YXJ0RGF0ZUVycm9ycyB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dFbmREYXRlUGlja2VyKCkgJiYgZW5kRGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5lbmREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFRoZSBkYXRlIHJhbmdlIHBpY2tlciBhbHdheXMgaGFzIGEgdmFsdWUsIHNvIGlmIHRoZSBjb25zdW1lciBwYXNzZXMgaW4gYVxuICAvLyBwYXJ0aWFsIHZhbHVlICh2aWEgYHBhdGNoVmFsdWVgKSBvciBudWxsLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaG9zdCBjb250cm9sJ3NcbiAgLy8gdmFsdWUgd2l0aCB0aGUgY29tcGxldGUgdmFsdWUgYWZ0ZXIgaXQncyBiZWVuIG1vZGlmaWVkLlxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNwYXRjaFZhbHVlKHZhbHVlKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgaG9zdCBjb250cm9sIGlmIGl0IGlzIHNldCB0byBhIHBhcnRpYWwgb3IgbnVsbCB2YWx1ZS5cbiAgICBpZiAoaXNQYXJ0aWFsVmFsdWUodmFsdWUpKSB7XG4gICAgICB0aGlzLmhvc3RDb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNnZXRWYWx1ZSgpLCB7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIG9ubHlTZWxmOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgdXNlciBjaGFuZ2VzIHRoZSBzZWxlY3RlZCBjYWxjdWxhdG9yIElELlxuICAgKi9cbiAgcHJvdGVjdGVkIG9uQ2FsY3VsYXRvcklkQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IHRoZSB2YWx1ZSB3aGVuIHRoZSBjYWxjdWxhdG9yIElEIGNoYW5nZXMuXG4gICAgdGhpcy4jc2V0VmFsdWUoeyBjYWxjdWxhdG9ySWQ6ICt0aGlzLiNjYWxjdWxhdG9ySWRDb250cm9sLnZhbHVlIH0pO1xuICAgIHRoaXMub25EYXRlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgaW50ZXJhY3RzIHdpdGggYSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIHByb3RlY3RlZCBvbkRhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gV2FpdCB1bnRpbCB0aGUgZm9ybSBjb250cm9sIGlzIHVwZGF0ZWQgYmVmb3JlIHJldHJpZXZpbmcgaXRzIHZhbHVlLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4oXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkgYXMgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24sXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI2dldENhbGN1bGF0b3IoY2FsY3VsYXRvcklkOiBudW1iZXIpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuY2FsY3VsYXRvcnMuZmluZCgoYykgPT4gYy5jYWxjdWxhdG9ySWQgPT09IGNhbGN1bGF0b3JJZCk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBpZjogc2FmZXR5IGNoZWNrKi9cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBIGRhdGUgcmFuZ2UgY2FsY3VsYXRvciB3aXRoIElEICgke2NhbGN1bGF0b3JJZH0pIGNvdWxkIG5vdCBiZSBmb3VuZC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICAjZ2V0VmFsdWUoKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24ge1xuICAgIC8vIEltcG9ydGFudCEgUmV0dXJuIGEgY2xvbmUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHByb3BlcnRpZXMgYnkgcmVmZXJlbmNlLlxuICAgIHJldHVybiB7IC4uLnRoaXMuI192YWx1ZSB9O1xuICB9XG5cbiAgI3BhdGNoVmFsdWUoXG4gICAgcGFydGlhbFZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUpKSB7XG4gICAgICB0aGlzLiNzZXRWYWx1ZShudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICAvLyBJZiB0aGUgbmV3IElEIGlzIGRpc3RpbmN0LCBlcmFzZSB0aGUgb2xkIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgYmVjYXVzZVxuICAgIC8vIHRoZXkncmUgbm8gbG9uZ2VyIGFwcGxpY2FibGUuXG4gICAgaWYgKFxuICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKHBhcnRpYWxWYWx1ZS5jYWxjdWxhdG9ySWQpICYmXG4gICAgICBvbGRWYWx1ZS5jYWxjdWxhdG9ySWQgIT09IHBhcnRpYWxWYWx1ZS5jYWxjdWxhdG9ySWRcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5lbmREYXRlO1xuICAgICAgZGVsZXRlIG9sZFZhbHVlLnN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIC4uLm9sZFZhbHVlLFxuICAgICAgLi4ucGFydGlhbFZhbHVlLFxuICAgIH07XG5cbiAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgdG8gYmUgdXNlZCBieSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgI3NldFZhbHVlKHZhbHVlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbiB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICBjb25zdCBpc1ZhbHVlRW1wdHkgPSAhdmFsdWUgfHwgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKTtcbiAgICBjb25zdCB2YWx1ZU9yRGVmYXVsdCA9IGlzVmFsdWVFbXB0eVxuICAgICAgPyB0aGlzLmNhbGN1bGF0b3JzWzBdLmdldFZhbHVlKClcbiAgICAgIDoge1xuICAgICAgICAgIC4uLnRoaXMuI2dldENhbGN1bGF0b3IodmFsdWUuY2FsY3VsYXRvcklkKS5nZXRWYWx1ZSgpLFxuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICB9O1xuXG4gICAgLy8gRW5zdXJlIGZhbHN5IHZhbHVlcyBhcmUgc2V0IHRvIG51bGwuXG4gICAgdmFsdWVPckRlZmF1bHQuZW5kRGF0ZSA9IHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgfHwgbnVsbDtcbiAgICB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgfHwgbnVsbDtcblxuICAgIGlmICghYXJlRGF0ZVJhbmdlc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZU9yRGVmYXVsdCkpIHtcbiAgICAgIHRoaXMuI192YWx1ZSA9IHZhbHVlT3JEZWZhdWx0O1xuXG4gICAgICBpZiAob2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IgPSB0aGlzLiNnZXRDYWxjdWxhdG9yKFxuICAgICAgICAgIHZhbHVlT3JEZWZhdWx0LmNhbGN1bGF0b3JJZCxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLiN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZU9yRGVmYXVsdCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVBpY2tlclZpc2liaWxpdHkoY2FsY3VsYXRvcjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcik6IHZvaWQge1xuICAgIGxldCBzaG93RW5kRGF0ZVBpY2tlciA9IGZhbHNlO1xuICAgIGxldCBzaG93U3RhcnREYXRlUGlja2VyID0gZmFsc2U7XG5cbiAgICBzd2l0Y2ggKGNhbGN1bGF0b3IudHlwZSkge1xuICAgICAgY2FzZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5CZWZvcmU6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQWZ0ZXI6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SYW5nZTpcbiAgICAgICAgc2hvd0VuZERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0VuZERhdGVQaWNrZXIuc2V0KHNob3dFbmREYXRlUGlja2VyKTtcbiAgICB0aGlzLnNob3dTdGFydERhdGVQaWNrZXIuc2V0KHNob3dTdGFydERhdGVQaWNrZXIpO1xuICB9XG5cbiAgI2NyZWF0ZUhvc3RDdXN0b21FcnJvckNoYW5nZVNpZ25hbChcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFN0YXR1c0NoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFN0YXR1c0NoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gZXZ0LnNvdXJjZS5lcnJvcnMgPz8gW107XG4gICAgICAgICAgY29uc3Qga25vd25FcnJvcnMgPSBbJ3JlcXVpcmVkJywgJ3NreURhdGUnXTtcblxuICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWtub3duRXJyb3JzLmluY2x1ZGVzKGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAjY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKGNvbnRyb2w6IEZvcm1Db250cm9sKTogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoXG4gICAgICBjb250cm9sLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgU3RhdHVzQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogU3RhdHVzQ2hhbmdlRXZlbnQpID0+IGV2dC5zdGF0dXMgPT09ICdJTlZBTElEJyksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gICNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIGNvbnRyb2w6IEZvcm1Db250cm9sLFxuICApOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBUb3VjaGVkQ2hhbmdlRXZlbnQpLFxuICAgICAgICBtYXAoKGV2dDogVG91Y2hlZENoYW5nZUV2ZW50KSA9PiBldnQudG91Y2hlZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLXBpY2tlci1zZWxlY3QtY2FsY3VsYXRvclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1kYXRlLXJhbmdlLXBpY2tlci1sYXN0LWlucHV0JzpcbiAgICAgICAgIXNob3dTdGFydERhdGVQaWNrZXIoKSAmJiAhc2hvd0VuZERhdGVQaWNrZXIoKVxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiY2FsY3VsYXRvcklkSGFzRXJyb3JzKClcIlxuICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICBbaGVscFBvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICBbaGVscFBvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtoaW50VGV4dF09XCJoaW50VGV4dFwiXG4gICAgICBbbGFiZWxUZXh0XT1cIlxuICAgICAgICBsYWJlbFRleHQgfHxcbiAgICAgICAgbGFiZWwgfHxcbiAgICAgICAgKCdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYWxjdWxhdG9ySWRcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25DYWxjdWxhdG9ySWRDaGFuZ2UoKVwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKGNhbGN1bGF0b3Igb2YgY2FsY3VsYXRvcnM7IHRyYWNrIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiY2FsY3VsYXRvci5jYWxjdWxhdG9ySWRcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIGNhbGN1bGF0b3IuX3Nob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgID8gKGNhbGN1bGF0b3IuX3Nob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleSB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICA6IGNhbGN1bGF0b3Iuc2hvcnREZXNjcmlwdGlvblxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9zZWxlY3Q+XG4gICAgICBAaWYgKFxuICAgICAgICBob3N0Q29udHJvbD8uZXJyb3JzPy5bJ3NreURhdGVSYW5nZSddPy5lcnJvcnM/LltcbiAgICAgICAgICAnZW5kRGF0ZUJlZm9yZVN0YXJ0RGF0ZSdcbiAgICAgICAgXSAmJiBsYWJlbFRleHRcbiAgICAgICkge1xuICAgICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgICBlcnJvck5hbWU9XCJlbmREYXRlQmVmb3JlU3RhcnREYXRlXCJcbiAgICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2VuZF9kYXRlX2JlZm9yZV9zdGFydF9kYXRlX2Vycm9yX2xhYmVsX3RleHQnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWlucHV0LWJveC1kZXNjZW5kZW50LWZvcm0tZXJyb3JcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLWRhdGVwaWNrZXItd3JhcHBlciBza3ktZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZVwiXG4gICAgW2hpZGRlbl09XCIhc2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyKCkgJiYgIXNob3dFbmREYXRlUGlja2VyKClcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cInN0YXJ0RGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxza3ktZGF0ZXBpY2tlciAoY2FsZW5kYXJEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgbmFtZT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICA6IChsYWJlbFRleHQgPyBsYWJlbFRleHQgOiBsYWJlbCkpXG4gICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInNob3dTdGFydERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLWRhdGVwaWNrZXItd3JhcHBlciBza3ktZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGVcIlxuICAgIFtoaWRkZW5dPVwiIXNob3dFbmREYXRlUGlja2VyKClcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1kYXRlLXJhbmdlLXBpY2tlci1sYXN0LWlucHV0Jzogc2hvd0VuZERhdGVQaWNrZXIoKSB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cImVuZERhdGVIYXNFcnJvcnMoKVwiXG4gICAgICBbbGFiZWxUZXh0XT1cIlxuICAgICAgICBzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgbmFtZT1cImVuZERhdGVcIlxuICAgICAgICAgIHNreURhdGVwaWNrZXJJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgbGFiZWxUZXh0IHx8IGxhYmVsXG4gICAgICAgICAgICAgID8gKCdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInNob3dFbmREYXRlUGlja2VyKClcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9za3ktZGF0ZXBpY2tlcj5cbiAgICA8L3NreS1pbnB1dC1ib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -356,11 +356,11 @@ export class SkyDatepickerCalendarInnerComponent {
356
356
  return undefined;
357
357
  }
358
358
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
359
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { customDates: "customDates", startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", startAtDate: "startAtDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "@if (datepickerMode) {\n <div class=\"sky-datepicker-calendar-inner\">\n <div class=\"sky-datepicker-calendar-header\">\n <span class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n [attr.aria-label]=\"previousLabel\"\n (click)=\"moveCalendar($event, -1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-left\" />\n </button>\n </span>\n <span class=\"sky-datepicker-header-center\">\n <!-- display: inline -->\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n [id]=\"datepickerId + '-title'\"\n [disabled]=\"datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepickerMode === maxMode\n }\"\n (click)=\"toggleModeCalendar($event)\"\n >{{ title }}</button\n >\n </span>\n <span class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n [attr.aria-label]=\"nextLabel\"\n (click)=\"moveCalendar($event, 1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-right\" />\n </button>\n </span>\n </div>\n <ng-content />\n </div>\n}\n", styles: [".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-button-box-shadow: none;--sky-override-secondary-date-color: #686c73;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-chevron-color: #212327;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-weekday-font-weight: 900;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5}.sky-theme-modern:not(.sky-theme-brand-blackbaud) .sky-datepicker-calendar-inner{--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-title-font-style: 700;--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-weekday-font-weight: 900;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-day-btn-font-size: 12px}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-bottomless-top-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-right-m)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-left-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-balanced-xs))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-pillarbox-1_4-top-s) var(--sky-space-inset-pillarbox-1_4-right-s) var(--sky-space-inset-pillarbox-1_4-bottom-s) var(--sky-space-inset-pillarbox-1_4-left-s))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-datepicker-chevron-size, var(--sky-size-icon-s))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-space-inset-pillarbox-1_2-top-s) var(--sky-space-inset-pillarbox-1_2-right-s) var(--sky-space-inset-pillarbox-1_2-bottom-s) var(--sky-space-inset-pillarbox-1_2-left-s))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
359
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: SkyDatepickerCalendarInnerComponent, selector: "sky-datepicker-inner", inputs: { customDates: "customDates", startingDay: "startingDay", minDate: "minDate", maxDate: "maxDate", startAtDate: "startAtDate", selectedDate: "selectedDate" }, outputs: { selectedDateChange: "selectedDateChange", calendarModeChange: "calendarModeChange" }, usesOnChanges: true, ngImport: i0, template: "@if (datepickerMode) {\n <div class=\"sky-datepicker-calendar-inner\">\n <div class=\"sky-datepicker-calendar-header\">\n <span class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n [attr.aria-label]=\"previousLabel\"\n (click)=\"moveCalendar($event, -1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-left\" />\n </button>\n </span>\n <span class=\"sky-datepicker-header-center\">\n <!-- display: inline -->\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n [id]=\"datepickerId + '-title'\"\n [disabled]=\"datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepickerMode === maxMode\n }\"\n (click)=\"toggleModeCalendar($event)\"\n >{{ title }}</button\n >\n </span>\n <span class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n [attr.aria-label]=\"nextLabel\"\n (click)=\"moveCalendar($event, 1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-right\" />\n </button>\n </span>\n </div>\n <ng-content />\n </div>\n}\n", styles: [".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-blackbaud) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-bottomless-top-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-right-m)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-left-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-balanced-xs))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-pillarbox-1_4-top-s) var(--sky-space-inset-pillarbox-1_4-right-s) var(--sky-space-inset-pillarbox-1_4-bottom-s) var(--sky-space-inset-pillarbox-1_4-left-s))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-datepicker-chevron-size, var(--sky-size-icon-s))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-space-inset-pillarbox-1_2-top-s) var(--sky-space-inset-pillarbox-1_2-right-s) var(--sky-space-inset-pillarbox-1_2-bottom-s) var(--sky-space-inset-pillarbox-1_2-left-s))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
360
360
  }
361
361
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{
362
362
  type: Component,
363
- args: [{ selector: 'sky-datepicker-inner', encapsulation: ViewEncapsulation.None, template: "@if (datepickerMode) {\n <div class=\"sky-datepicker-calendar-inner\">\n <div class=\"sky-datepicker-calendar-header\">\n <span class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n [attr.aria-label]=\"previousLabel\"\n (click)=\"moveCalendar($event, -1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-left\" />\n </button>\n </span>\n <span class=\"sky-datepicker-header-center\">\n <!-- display: inline -->\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n [id]=\"datepickerId + '-title'\"\n [disabled]=\"datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepickerMode === maxMode\n }\"\n (click)=\"toggleModeCalendar($event)\"\n >{{ title }}</button\n >\n </span>\n <span class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n [attr.aria-label]=\"nextLabel\"\n (click)=\"moveCalendar($event, 1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-right\" />\n </button>\n </span>\n </div>\n <ng-content />\n </div>\n}\n", styles: [".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-button-box-shadow: none;--sky-override-secondary-date-color: #686c73;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-chevron-color: #212327;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-weekday-font-weight: 900;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5}.sky-theme-modern:not(.sky-theme-brand-blackbaud) .sky-datepicker-calendar-inner{--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-title-font-style: 700;--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-weekday-font-weight: 900;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-day-btn-font-size: 12px}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-bottomless-top-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-right-m)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-left-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-balanced-xs))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-pillarbox-1_4-top-s) var(--sky-space-inset-pillarbox-1_4-right-s) var(--sky-space-inset-pillarbox-1_4-bottom-s) var(--sky-space-inset-pillarbox-1_4-left-s))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-datepicker-chevron-size, var(--sky-size-icon-s))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-space-inset-pillarbox-1_2-top-s) var(--sky-space-inset-pillarbox-1_2-right-s) var(--sky-space-inset-pillarbox-1_2-bottom-s) var(--sky-space-inset-pillarbox-1_2-left-s))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\n"] }]
363
+ args: [{ selector: 'sky-datepicker-inner', encapsulation: ViewEncapsulation.None, template: "@if (datepickerMode) {\n <div class=\"sky-datepicker-calendar-inner\">\n <div class=\"sky-datepicker-calendar-header\">\n <span class=\"sky-datepicker-header-left\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n [attr.aria-label]=\"previousLabel\"\n (click)=\"moveCalendar($event, -1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-left\" />\n </button>\n </span>\n <span class=\"sky-datepicker-header-center\">\n <!-- display: inline -->\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n [id]=\"datepickerId + '-title'\"\n [disabled]=\"datepickerMode === maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled': datepickerMode === maxMode\n }\"\n (click)=\"toggleModeCalendar($event)\"\n >{{ title }}</button\n >\n </span>\n <span class=\"sky-datepicker-header-right\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n [attr.aria-label]=\"nextLabel\"\n (click)=\"moveCalendar($event, 1)\"\n >\n <sky-icon class=\"sky-datepicker-chevron\" icon=\"chevron-right\" />\n </button>\n </span>\n </div>\n <ng-content />\n </div>\n}\n", styles: [".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-blackbaud) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-blackbaud .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-bottomless-top-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-right-m)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-bottomless-left-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-vertical-padding, var(--sky-space-inset-balanced-m)) var(--sky-override-datepicker-horizontal-padding, var(--sky-space-inset-balanced-m))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-balanced-xs))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-space-inset-pillarbox-1_4-top-s) var(--sky-space-inset-pillarbox-1_4-right-s) var(--sky-space-inset-pillarbox-1_4-bottom-s) var(--sky-space-inset-pillarbox-1_4-left-s))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-datepicker-chevron-size, var(--sky-size-icon-s))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-space-inset-pillarbox-1_2-top-s) var(--sky-space-inset-pillarbox-1_2-right-s) var(--sky-space-inset-pillarbox-1_2-bottom-s) var(--sky-space-inset-pillarbox-1_2-left-s))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\n"] }]
364
364
  }], propDecorators: { customDates: [{
365
365
  type: Input
366
366
  }], startingDay: [{