@sbb-esta/lyne-elements 2.3.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete-base-element.d.ts +1 -0
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete/autocomplete.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid.js +0 -1
- package/autocomplete.js +28 -28
- package/button/common/button-common.d.ts.map +1 -1
- package/calendar/calendar.d.ts +55 -11
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar.js +374 -224
- package/card/common/card-action-common.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/checkbox/checkbox-group.js +1 -1
- package/checkbox/common/checkbox-common.d.ts.map +1 -1
- package/core/controllers/escapable-overlay-controller.d.ts +11 -0
- package/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
- package/core/controllers.d.ts +1 -0
- package/core/controllers.d.ts.map +1 -1
- package/core/controllers.js +73 -47
- package/core/datetime/date-adapter.d.ts +4 -2
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.d.ts +1 -1
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime.js +51 -43
- package/core/decorators/date-converter.d.ts +8 -0
- package/core/decorators/date-converter.d.ts.map +1 -0
- package/core/decorators/date-only-type.d.ts +8 -0
- package/core/decorators/date-only-type.d.ts.map +1 -0
- package/core/decorators/get-override.d.ts.map +1 -1
- package/core/decorators/handle-distinct-change.d.ts.map +1 -1
- package/core/decorators/host-attributes.d.ts.map +1 -1
- package/core/decorators/slot-state.d.ts.map +1 -1
- package/core/decorators.d.ts +2 -0
- package/core/decorators.d.ts.map +1 -1
- package/core/decorators.js +52 -31
- package/core/dom/input-element.d.ts +1 -1
- package/core/dom/input-element.d.ts.map +1 -1
- package/core/dom.js +5 -5
- package/core/eventing/throttle.d.ts.map +1 -1
- package/core/i18n/i18n.d.ts +4 -0
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n.js +87 -63
- package/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-input-mixin.d.ts +25 -0
- package/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
- package/core/mixins/form-associated-mixin.d.ts +13 -0
- package/core/mixins/form-associated-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
- package/core/mixins/hydration-mixin.d.ts.map +1 -1
- package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
- package/core/mixins/negative-mixin.d.ts.map +1 -1
- package/core/mixins/panel-mixin.d.ts.map +1 -1
- package/core/mixins/required-mixin.d.ts.map +1 -1
- package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
- package/core/mixins.d.ts +1 -0
- package/core/mixins.d.ts.map +1 -1
- package/core/mixins.js +518 -333
- package/core/styles/core.scss +3 -1
- package/core/testing/mocha-extensions.d.ts.map +1 -1
- package/core/testing/wait-for-render.d.ts.map +1 -1
- package/core.css +2 -2
- package/custom-elements.json +18176 -14267
- package/date-input/date-input.d.ts +67 -0
- package/date-input/date-input.d.ts.map +1 -0
- package/date-input.d.ts +2 -0
- package/date-input.d.ts.map +1 -0
- package/date-input.js +149 -0
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common.js +49 -45
- package/datepicker/datepicker/datepicker.d.ts +16 -6
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/datepicker/datepicker-toggle.js +41 -38
- package/datepicker/datepicker.js +94 -76
- package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid.js +1 -2
- package/development/autocomplete.js +9 -4
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/calendar/calendar.d.ts +55 -11
- package/development/calendar/calendar.d.ts.map +1 -1
- package/development/calendar.js +301 -87
- package/development/card/common/card-action-common.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/development/checkbox/checkbox-group.js +2 -2
- package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
- package/development/core/controllers/escapable-overlay-controller.d.ts +11 -0
- package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
- package/development/core/controllers.d.ts +1 -0
- package/development/core/controllers.d.ts.map +1 -1
- package/development/core/controllers.js +36 -1
- package/development/core/datetime/date-adapter.d.ts +4 -2
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.d.ts +1 -1
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime.js +14 -2
- package/development/core/decorators/date-converter.d.ts +8 -0
- package/development/core/decorators/date-converter.d.ts.map +1 -0
- package/development/core/decorators/date-only-type.d.ts +8 -0
- package/development/core/decorators/date-only-type.d.ts.map +1 -0
- package/development/core/decorators/get-override.d.ts.map +1 -1
- package/development/core/decorators/handle-distinct-change.d.ts.map +1 -1
- package/development/core/decorators/host-attributes.d.ts.map +1 -1
- package/development/core/decorators/slot-state.d.ts.map +1 -1
- package/development/core/decorators.d.ts +2 -0
- package/development/core/decorators.d.ts.map +1 -1
- package/development/core/decorators.js +23 -2
- package/development/core/dom/input-element.d.ts +1 -1
- package/development/core/dom/input-element.d.ts.map +1 -1
- package/development/core/dom.js +3 -3
- package/development/core/eventing/throttle.d.ts.map +1 -1
- package/development/core/i18n/i18n.d.ts +4 -0
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n.js +29 -1
- package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-input-mixin.d.ts +25 -0
- package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
- package/development/core/mixins/form-associated-mixin.d.ts +13 -0
- package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
- package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
- package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
- package/development/core/mixins/negative-mixin.d.ts.map +1 -1
- package/development/core/mixins/panel-mixin.d.ts.map +1 -1
- package/development/core/mixins/required-mixin.d.ts.map +1 -1
- package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
- package/development/core/mixins.d.ts +1 -0
- package/development/core/mixins.d.ts.map +1 -1
- package/development/core/mixins.js +379 -88
- package/development/core/testing/mocha-extensions.d.ts.map +1 -1
- package/development/core/testing/wait-for-render.d.ts.map +1 -1
- package/development/date-input/date-input.d.ts +67 -0
- package/development/date-input/date-input.d.ts.map +1 -0
- package/development/date-input.d.ts +2 -0
- package/development/date-input.d.ts.map +1 -0
- package/development/date-input.js +259 -0
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common.js +11 -2
- package/development/datepicker/datepicker/datepicker.d.ts +16 -6
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle.js +12 -3
- package/development/datepicker/datepicker.js +65 -39
- package/development/dialog/dialog/dialog.d.ts.map +1 -1
- package/development/dialog/dialog.js +3 -1
- package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel.js +2 -2
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/development/form-field/form-field/form-field.d.ts +1 -1
- package/development/form-field/form-field/form-field.d.ts.map +1 -1
- package/development/form-field/form-field.js +19 -13
- package/development/header/common/header-action-common.d.ts.map +1 -1
- package/development/icon/icon-name-mixin.d.ts.map +1 -1
- package/development/icon/icon-request.d.ts.map +1 -1
- package/development/icon/icon-validate.d.ts.map +1 -1
- package/development/link/common/block-link-common.d.ts.map +1 -1
- package/development/link/common/inline-link-common.d.ts.map +1 -1
- package/development/link/common/link-common.d.ts.map +1 -1
- package/development/menu/common/menu-action-common.d.ts.map +1 -1
- package/development/menu/menu/menu.d.ts +1 -1
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu.js +5 -15
- package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.d.ts +1 -3
- package/development/navigation/navigation/navigation.d.ts.map +1 -1
- package/development/navigation/navigation.js +8 -21
- package/development/overlay/overlay-base-element.d.ts +2 -2
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay.d.ts.map +1 -1
- package/development/overlay.js +6 -13
- package/development/paginator/common/paginator-common.d.ts.map +1 -1
- package/development/popover/popover/popover.d.ts +1 -1
- package/development/popover/popover/popover.d.ts.map +1 -1
- package/development/popover/popover.js +5 -15
- package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +2 -2
- package/development/select/select.d.ts +3 -1
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +12 -8
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/development/selection-expansion-panel.js +2 -2
- package/development/stepper/step/step.d.ts +0 -2
- package/development/stepper/step/step.d.ts.map +1 -1
- package/development/stepper/step.js +1 -16
- package/development/stepper/stepper/stepper.d.ts +11 -0
- package/development/stepper/stepper/stepper.d.ts.map +1 -1
- package/development/stepper/stepper.js +30 -3
- package/development/tag/tag/tag.d.ts +11 -0
- package/development/tag/tag/tag.d.ts.map +1 -1
- package/development/tag/tag-group/tag-group.d.ts +1 -1
- package/development/tag/tag-group/tag-group.d.ts.map +1 -1
- package/development/tag/tag-group.js +9 -3
- package/development/tag/tag.js +37 -10
- package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
- package/dialog/dialog/dialog.d.ts.map +1 -1
- package/dialog/dialog.js +2 -2
- package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
- package/expansion-panel/expansion-panel.js +1 -1
- package/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/form-field/form-field/form-field.d.ts +1 -1
- package/form-field/form-field/form-field.d.ts.map +1 -1
- package/form-field/form-field.js +30 -24
- package/header/common/header-action-common.d.ts.map +1 -1
- package/icon/icon-name-mixin.d.ts.map +1 -1
- package/icon/icon-request.d.ts.map +1 -1
- package/icon/icon-validate.d.ts.map +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/link/common/block-link-common.d.ts.map +1 -1
- package/link/common/inline-link-common.d.ts.map +1 -1
- package/link/common/link-common.d.ts.map +1 -1
- package/menu/common/menu-action-common.d.ts.map +1 -1
- package/menu/menu/menu.d.ts +1 -1
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +25 -34
- package/navigation/common/navigation-action-common.d.ts.map +1 -1
- package/navigation/navigation/navigation.d.ts +1 -3
- package/navigation/navigation/navigation.d.ts.map +1 -1
- package/navigation/navigation.js +45 -54
- package/overlay/overlay-base-element.d.ts +2 -2
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay.d.ts.map +1 -1
- package/overlay.js +57 -63
- package/package.json +6 -1
- package/paginator/common/paginator-common.d.ts.map +1 -1
- package/popover/popover/popover.d.ts +1 -1
- package/popover/popover/popover.d.ts.map +1 -1
- package/popover/popover.js +101 -110
- package/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +1 -1
- package/select/select.d.ts +3 -1
- package/select/select.d.ts.map +1 -1
- package/select.js +39 -37
- package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/selection-expansion-panel.js +1 -1
- package/standard-theme.css +2 -2
- package/stepper/step/step.d.ts +0 -2
- package/stepper/step/step.d.ts.map +1 -1
- package/stepper/step.js +24 -36
- package/stepper/stepper/stepper.d.ts +11 -0
- package/stepper/stepper/stepper.d.ts.map +1 -1
- package/stepper/stepper.js +59 -41
- package/tag/tag/tag.d.ts +11 -0
- package/tag/tag/tag.d.ts.map +1 -1
- package/tag/tag-group/tag-group.d.ts +1 -1
- package/tag/tag-group/tag-group.d.ts.map +1 -1
- package/tag/tag-group.js +32 -29
- package/tag/tag.js +60 -41
- package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
|
@@ -46,6 +46,7 @@ sbb-popover {
|
|
|
46
46
|
height: auto;
|
|
47
47
|
background-color: transparent;
|
|
48
48
|
}`;
|
|
49
|
+
const isDateInput = (element) => (element == null ? void 0 : element.localName) === "sbb-date-input";
|
|
49
50
|
let SbbDatepickerToggleElement = (() => {
|
|
50
51
|
var _view_accessor_storage, __disabled_accessor_storage, __min_accessor_storage, __max_accessor_storage, __renderCalendar_accessor_storage, _a;
|
|
51
52
|
let _classDecorators = [customElement("sbb-datepicker-toggle")];
|
|
@@ -244,11 +245,19 @@ let SbbDatepickerToggleElement = (() => {
|
|
|
244
245
|
.max=${this._max}
|
|
245
246
|
.now=${this._nowOrNull()}
|
|
246
247
|
?wide=${(_a2 = this.datepicker) == null ? void 0 : _a2.wide}
|
|
247
|
-
.dateFilter=${(_b = this.datepicker) == null ? void 0 : _b.dateFilter}
|
|
248
|
+
.dateFilter=${((_b = this.datepicker) == null ? void 0 : _b.dateFilter) ?? null}
|
|
248
249
|
@dateSelected=${(d) => {
|
|
249
250
|
this._calendarElement.selected = d.detail;
|
|
250
251
|
if (this.datepicker) {
|
|
251
|
-
this.datepicker.
|
|
252
|
+
const input = this.datepicker.inputElement;
|
|
253
|
+
if (isDateInput(input)) {
|
|
254
|
+
input.valueAsDate = d.detail;
|
|
255
|
+
input.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
|
|
256
|
+
input.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
|
|
257
|
+
input.dispatchEvent(new Event("blur", { composed: true }));
|
|
258
|
+
} else {
|
|
259
|
+
this.datepicker.valueAsDate = d.detail;
|
|
260
|
+
}
|
|
252
261
|
}
|
|
253
262
|
}}
|
|
254
263
|
${ref((calendar) => this._assignCalendar(calendar))}
|
|
@@ -295,4 +304,4 @@ let SbbDatepickerToggleElement = (() => {
|
|
|
295
304
|
export {
|
|
296
305
|
SbbDatepickerToggleElement
|
|
297
306
|
};
|
|
298
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk1pbmlCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uL21pbmktYnV0dG9uLmpzJztcbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJWaWV3LCBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJQb3BvdmVyRWxlbWVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci5qcyc7XG5pbXBvcnQgeyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Db250cm9sQ29udHJvbGxlciwgdHlwZSBTYmJEYXRlcGlja2VyQ29udHJvbCB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItdG9nZ2xlLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0ICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuanMnO1xuaW1wb3J0ICcuLi8uLi9idXR0b24vbWluaS1idXR0b24uanMnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWRhdGVwaWNrZXJgLCBpdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBgc2JiLWNhbGVuZGFyYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQgPSBEYXRlPlxuICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpXG4gIGltcGxlbWVudHMgU2JiRGF0ZXBpY2tlckNvbnRyb2w8VD5cbntcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERhdGVwaWNrZXIgcmVmZXJlbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHByb3BlcnR5L2F0dHJpYnV0ZSBgZGF0ZXBpY2tlcmAgaW5zdGVhZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RhdGUtcGlja2VyJyB9KVxuICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCkge1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBQcm9wZXJ0eSBkYXRlUGlja2VyL0F0dHJpYnV0ZSBkYXRlLXBpY2tlciBpcyBkZXByZWNhdGVkLiBVc2UgJ2RhdGVwaWNrZXInIGluc3RlYWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlciA9IHZhbHVlIGFzIHVua25vd24gYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsO1xuICB9XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlcjtcbiAgfVxuXG4gIC8qKiBEYXRlcGlja2VyIHJlZmVyZW5jZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZXBpY2tlcicgfSlcbiAgcHVibGljIHNldCBkYXRlcGlja2VyKHZhbHVlOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9kYXRlcGlja2VyID1cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoKHRoaXMuZ2V0Um9vdE5vZGU/LigpIGFzIFBhcmVudE5vZGUpPy5xdWVyeVNlbGVjdG9yPy4oYCMke3ZhbHVlfWApID8/IG51bGwpXG4gICAgICAgIDogdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlcGlja2VyKCk6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVwaWNrZXIgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9kYXRlcGlja2VyPzogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsO1xuXG4gIC8qKiBUaGUgaW5pdGlhbCB2aWV3IG9mIGNhbGVuZGFyIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gb3BlbmluZy4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIHZpZXc6IENhbGVuZGFyVmlldyA9ICdkYXknO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9tYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX3JlbmRlckNhbGVuZGFyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJFbGVtZW50ITogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+O1xuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudCE6IFNiYk1pbmlCdXR0b25FbGVtZW50O1xuICBwcml2YXRlIF9wb3BvdmVyRWxlbWVudCE6IFNiYlBvcG92ZXJFbGVtZW50O1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKG5ldyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Db250cm9sQ29udHJvbGxlcih0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gPT09IHRoaXMpIHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+ICh0aGlzLl9yZW5kZXJDYWxlbmRhciA9IHRydWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1taW5pLWJ1dHRvbicpITtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc2xvdCB8fD0gJ3ByZWZpeCc7XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5kYXRlcGlja2VyLmlucHV0RWxlbWVudD8uZGlzYWJsZWQgfHwgdGhpcy5kYXRlcGlja2VyLmlucHV0RWxlbWVudD8ucmVhZE9ubHkpID8/IHRydWU7XG4gICAgICB0aGlzLl9taW4gPSB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5taW47XG4gICAgICB0aGlzLl9tYXggPSB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5tYXg7XG5cbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKCk7XG4gICAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuZGF0ZXBpY2tlci52YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLl9taW4gPSBudWxsO1xuICAgICAgdGhpcy5fbWF4ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVDYWxlbmRhcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyRWxlbWVudCB8fCAhdGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC53aWRlID0gdGhpcy5kYXRlcGlja2VyLndpZGU7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50Lm5vdyA9IHRoaXMuX25vd09yTnVsbCgpO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5kYXRlRmlsdGVyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmICghKCd2YWx1ZUFzRGF0ZScgaW4gKHRoaXMuZGF0ZXBpY2tlciA/PyB7fSkpIHx8ICF0aGlzLl9jYWxlbmRhckVsZW1lbnQ/LnJlc2V0UG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5kYXRlcGlja2VyIS52YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JOdWxsKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyPy5oYXNDdXN0b21Ob3coKSA/IHRoaXMuZGF0ZXBpY2tlci5ub3cgOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLW1pbmktYnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2JiLWRhdGVwaWNrZXItdG9nZ2xlX190cmlnZ2VyXCJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5kYXRlcGlja2VyIHx8IHRoaXMuX2Rpc2FibGVkKX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiTWluaUJ1dHRvbkVsZW1lbnQpKX1cbiAgICAgID48L3NiYi1taW5pLWJ1dHRvbj5cbiAgICAgIDxzYmItcG9wb3ZlclxuICAgICAgICBAd2lsbE9wZW49JHsoKSA9PiB0aGlzLl9jYWxlbmRhckVsZW1lbnQucmVzZXRQb3NpdGlvbigpfVxuICAgICAgICBAZGlkT3Blbj0keygpID0+IHtcbiAgICAgICAgICBpZiAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLnZpZXc9JHt0aGlzLnZpZXd9XG4gICAgICAgICAgICAgIC5taW49JHt0aGlzLl9taW59XG4gICAgICAgICAgICAgIC5tYXg9JHt0aGlzLl9tYXh9XG4gICAgICAgICAgICAgIC5ub3c9JHt0aGlzLl9ub3dPck51bGwoKX1cbiAgICAgICAgICAgICAgP3dpZGU9JHt0aGlzLmRhdGVwaWNrZXI/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5kYXRlcGlja2VyPy5kYXRlRmlsdGVyfVxuICAgICAgICAgICAgICBAZGF0ZVNlbGVjdGVkPSR7KGQ6IEN1c3RvbUV2ZW50PFQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlcGlja2VyLnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyIGFzIFNiYkNhbGVuZGFyRWxlbWVudDxUPiksXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+PC9zYmItY2FsZW5kYXI+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJzogU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMEJNLDhCQUEwQixNQUFBOzswQkFEL0IsY0FBYyx1QkFBdUIsQ0FBQzs7OztBQUU3QixNQUFBLGNBQUEsaUJBQWlCLGtCQUFrQixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdEQsRUFBQSxtQkFBUSxZQUErQztBQUFBLElBcUR2RCxjQUFBOzs7QUFmWTtBQUVIO0FBRUE7QUFFQTtBQUVBO0FBWFUsV0FBQSxjQXBDZjtBQXVDd0IseUJBQUEsd0JBQUEsa0JBQUEsTUFBQSxvQkFBcUIsS0FBSztBQUU1Qix5QkFBQSw4QkFBQSxrQkFBQSxNQUFBLHVCQUFBLEdBQUEsa0JBQUEsTUFBQSx5QkFBWSxLQUFLO0FBRWpCLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsNEJBQUEsR0FBQSxrQkFBQSxNQUFBLG9CQUEyQyxJQUFJO0FBRS9DLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLG9CQUEyQyxJQUFJO0FBRS9DLHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUFrQixLQUFLO0FBRXpDLFdBQUEsbUJBQXlDLGtCQUFBLE1BQUEsa0NBQUE7QUFHekMsV0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFJaEQsV0FBSyxjQUFjLElBQUksMENBQTBDLElBQUksQ0FBQztBQUNqRSxPQUFBQSxNQUFBLEtBQUEscUJBQUEsZ0JBQUFBLElBQUEsV0FBbUIsU0FBUyxDQUFDLFVBQVM7QUFDekMsWUFBSSxNQUFNLGFBQUEsRUFBZSxDQUFDLE1BQU0sTUFBTTtBQUNwQyxlQUFLLEtBQUk7QUFBQSxRQUFBO0FBQUEsTUFDWDtBQUVGLFVBQUksQ0FBQyxVQUFVO0FBQ2IsYUFBSyxrQkFBa0IsS0FBSyxNQUFPLEtBQUssa0JBQWtCLElBQUs7QUFBQSxNQUFBO0FBQUEsSUFDakU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFwREYsSUFBVyxXQUFXLE9BQThDO0FBQ3pDO0FBQ3ZCLGdCQUFRLEtBQ04sb0ZBQW9GO0FBQUEsTUFBQTtBQUd4RixXQUFLLGFBQWE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUdwQixJQUFXLGFBQVU7QUFDbkIsYUFBTyxLQUFLO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFLZCxJQUFXLFdBQVcsT0FBcUM7O0FBQ3pELFdBQUssY0FDSCxPQUFPLFVBQVUsYUFDWCxZQUFBQSxNQUFBLEtBQUssZ0JBQUwsZ0JBQUFBLElBQUEsa0NBQXFDLGtCQUFyQyw0QkFBcUQsSUFBSSxLQUFLLFFBQU8sT0FDdkU7QUFBQSxJQUFBO0FBQUEsSUFFUixJQUFXLGFBQVU7QUFDbkIsYUFBTyxLQUFLLGVBQWU7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUtqQixJQUFnQixPQUEyQjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBM0MsSUFBZ0IsS0FBMkIsT0FBQTtBQUFBLHlCQUFBLHdCQUFBO0FBQUEsSUFBQTtBQUFBLElBRTlDLElBQWlCLFlBQWtCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFuQyxJQUFpQixVQUFrQixPQUFBO0FBQUEseUJBQUEsNkJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFbkMsSUFBaUIsT0FBZ0Q7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQWpFLElBQWlCLEtBQWdELE9BQUE7QUFBQSx5QkFBQSx3QkFBQTtBQUFBLElBQUE7QUFBQSxJQUVqRSxJQUFpQixPQUFnRDtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBakUsSUFBaUIsS0FBZ0QsT0FBQTtBQUFBLHlCQUFBLHdCQUFBO0FBQUEsSUFBQTtBQUFBLElBRWpFLElBQWlCLGtCQUF3QjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBekMsSUFBaUIsZ0JBQXdCLE9BQUE7QUFBQSx5QkFBQSxtQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXVCM0MsT0FBSTtBQUNMLFVBQUEsQ0FBQyxLQUFLLGlCQUFpQjtBQUN6QixhQUFLLGtCQUFrQixLQUFLLFdBQVksY0FBYyxpQkFBaUI7QUFBQSxNQUFBO0FBRXpFLFdBQUssZ0JBQWdCOztJQUdQLG9CQUFpQjs7QUFDL0IsWUFBTSxrQkFBaUI7QUFDdkIsV0FBSyxTQUFMLEtBQUssT0FBUztBQUNkLFlBQU0sY0FBWUEsTUFBQSxLQUFLLFlBQUwsZ0JBQUFBLElBQUEsV0FBZSx3QkFBcUIsVUFBSyxZQUFMLDhCQUFlO0FBQ3JFLFVBQUksV0FBVztBQUNSLGFBQUEsV0FBVyxVQUFVLGFBQWEsVUFBVTtBQUFBLE1BQUE7QUFBQSxJQUNuRDtBQUFBLElBR2lCLFdBQVcsbUJBQXVDOztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBQ2xDLFVBQUksS0FBSyxZQUFZO0FBQ2QsYUFBQSxlQUNGQSxNQUFBLEtBQUssV0FBVyxpQkFBaEIsZ0JBQUFBLElBQThCLGVBQVksVUFBSyxXQUFXLGlCQUFoQixtQkFBOEIsY0FBYTtBQUNuRixhQUFBLFFBQU8sVUFBSyxXQUFXLGlCQUFoQixtQkFBOEI7QUFDckMsYUFBQSxRQUFPLFVBQUssV0FBVyxpQkFBaEIsbUJBQThCO0FBRTFDLGFBQUssbUJBQWtCO0FBQ3ZCLFlBQUksS0FBSyxrQkFBa0I7QUFDekIsZUFBSyxpQkFBaUIsV0FBVyxLQUFLLFdBQVcsZUFBZTtBQUFBLFFBQUE7QUFBQSxNQUNsRSxPQUNLO0FBQ0wsYUFBSyxZQUFZO0FBQ2pCLGFBQUssT0FBTztBQUNaLGFBQUssT0FBTztBQUFBLE1BQUE7QUFBQSxJQUNkO0FBQUEsSUFHTSxxQkFBa0I7QUFDeEIsVUFBSSxDQUFDLEtBQUssb0JBQW9CLENBQUMsS0FBSyxZQUFZO0FBQzlDO0FBQUEsTUFBQTtBQUVHLFdBQUEsaUJBQWlCLE9BQU8sS0FBSyxXQUFXO0FBQ3hDLFdBQUEsaUJBQWlCLE1BQU0sS0FBSyxXQUFVO0FBQ3RDLFdBQUEsaUJBQWlCLGFBQWEsS0FBSyxXQUFXO0FBQUEsSUFBQTtBQUFBLElBRzdDLGdCQUFnQixVQUErQjs7QUFDckQsVUFBSSxLQUFLLG9CQUFvQixLQUFLLHFCQUFxQixVQUFVO0FBQy9EO0FBQUEsTUFBQTtBQUVGLFdBQUssbUJBQW1CO0FBQ3BCLFVBQUEsRUFBRSxrQkFBa0IsS0FBSyxjQUFjLENBQUEsT0FBUSxHQUFDQSxNQUFBLEtBQUsscUJBQUwsZ0JBQUFBLElBQXVCLGdCQUFlO0FBQ3hGO0FBQUEsTUFBQTtBQUVGLFdBQUssaUJBQWlCLFdBQVcsS0FBSyxXQUFZLGVBQWU7QUFDakUsV0FBSyxtQkFBa0I7QUFDdkIsV0FBSyxpQkFBaUI7O0lBR0wsUUFBUSxtQkFBdUM7QUFDaEUsWUFBTSxRQUFRLGlCQUFpQjtBQUUxQixXQUFBLGdCQUFnQixVQUFVLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFHOUIsYUFBVTs7QUFDaEIsZUFBT0EsTUFBQSxLQUFLLGVBQUwsZ0JBQUFBLElBQWlCLGtCQUFpQixLQUFLLFdBQVcsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUc5QyxTQUFNOztBQUNoQixhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBSVUsaUJBQWlCLEtBQUssVUFBVSxPQUFPLENBQUM7QUFBQSxvQkFDekMsQ0FBQyxhQUFhLENBQUMsS0FBSyxjQUFjLEtBQUssVUFBVTtBQUFBLG9CQUNqRCxLQUFLLFFBQVE7QUFBQSxVQUN2QixJQUFJLENBQUMsT0FBa0IsS0FBSyxrQkFBa0IsRUFBMkIsQ0FBQztBQUFBO0FBQUE7QUFBQSxvQkFHaEUsTUFBTSxLQUFLLGlCQUFpQixjQUFlLENBQUE7QUFBQSxtQkFDNUMsTUFBSztBQUNWLFlBQUEseUJBQXlCLHVCQUF1QixZQUFZO0FBQzlELGVBQUssaUJBQWlCOztNQUV6QixDQUFBO0FBQUEsbUJBQ1UsS0FBSyxlQUFlO0FBQUE7QUFBQSxVQUU3QixJQUFJLENBQUMsT0FBa0IsS0FBSyxrQkFBa0IsRUFBd0IsQ0FBQztBQUFBO0FBQUEsVUFFdkUsS0FBSyxrQkFDSDtBQUFBLHNCQUNVLEtBQUssSUFBSTtBQUFBLHFCQUNWLEtBQUssSUFBSTtBQUFBLHFCQUNULEtBQUssSUFBSTtBQUFBLHFCQUNULEtBQUssV0FBWSxDQUFBO0FBQUEsdUJBQ2hCQSxNQUFBLEtBQUssZUFBTCxnQkFBQUEsSUFBaUIsSUFBSTtBQUFBLDZCQUNmLFVBQUssZUFBTCxtQkFBaUIsVUFBVTtBQUFBLDhCQUN6QixDQUFDLE1BQXFCO0FBQy9CLGFBQUEsaUJBQWlCLFdBQVcsRUFBRTtBQUNuQyxZQUFJLEtBQUssWUFBWTtBQUNkLGVBQUEsV0FBVyxjQUFjLEVBQUU7QUFBQSxRQUFBO0FBQUEsTUFFbkMsQ0FBQTtBQUFBLGdCQUNDLElBQUksQ0FBQyxhQUNMLEtBQUssZ0JBQWdCLFFBQWlDLENBQUMsQ0FDeEQ7QUFBQSxnQ0FFSCxPQUFPO0FBQUE7QUFBQTtBQUFBLElBQUE7QUFBQSxLQXpJTCx3Q0FFSCw2Q0FFQSx3Q0FFQSx3Q0FFQTs7QUFwQ1IsaUNBQUEsQ0FBQSxTQUFTLEVBQUUsV0FBVyxjQUFlLENBQUEsQ0FBQztBQWV0QyxpQ0FBQSxDQUFBLFNBQVMsRUFBRSxXQUFXLGFBQWMsQ0FBQSxDQUFDO0FBYXJDLHVCQUFBLENBQUEsVUFBVTtBQUVWLDRCQUFBLENBQUEsT0FBTztBQUVQLHVCQUFBLENBQUEsT0FBTztBQUVQLHVCQUFBLENBQUEsT0FBTztBQUVQLGtDQUFBLENBQUEsT0FBTztBQW5DUixpQkFBQSxJQUFBLE1BQUEsNEJBQUEsRUFBQSxNQUFBLFVBQUEsTUFBQSxjQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGdCQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsYUFPVjtBQUFBLFNBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7QUFRRCxpQkFBQSxJQUFBLE1BQUEsNEJBQUEsRUFBQSxNQUFBLFVBQUEsTUFBQSxjQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGdCQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsYUFLVjtBQUFBLFNBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7QUFPMkIsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxNQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLE9BQTJCO0FBQUEsU0FBQSxVQUFBLGFBQUEsb0JBQUEsdUJBQUE7QUFFN0IsaUJBQUEsSUFBQSxNQUFBLHVCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsYUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxlQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxXQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLFlBQWtCO0FBQUEsU0FBQSxVQUFBLGFBQUEseUJBQUEsNEJBQUE7QUFFbEIsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxNQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLE9BQWdEO0FBQUEsU0FBQSxVQUFBLGFBQUEsb0JBQUEsdUJBQUE7QUFFaEQsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxNQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLE9BQWdEO0FBQUEsU0FBQSxVQUFBLGFBQUEsb0JBQUEsdUJBQUE7QUFFaEQsaUJBQUEsSUFBQSxNQUFBLDZCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsbUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEscUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGlCQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGtCQUF3QjtBQUFBLFNBQUEsVUFBQSxhQUFBLCtCQUFBLGtDQUFBO0FBL0NwRCxpQkFvTEMsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQWhMd0IsR0FBTSxTQUFtQixPQUo1QyxrQkFBMEIsWUFBQSx1QkFBQSxHQUM5Qjs7OyJ9
|
|
307
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk1pbmlCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uL21pbmktYnV0dG9uLmpzJztcbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJWaWV3LCBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vZGF0ZS1pbnB1dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50IH0gZnJvbSAnLi4vLi4vcG9wb3Zlci9wb3BvdmVyLmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkNvbnRyb2xDb250cm9sbGVyLCB0eXBlIFNiYkRhdGVwaWNrZXJDb250cm9sIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci10b2dnbGUuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci5qcyc7XG5pbXBvcnQgJy4uLy4uL2J1dHRvbi9taW5pLWJ1dHRvbi5qcyc7XG5cbmNvbnN0IGlzRGF0ZUlucHV0ID0gPFQ+KFxuICBlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiB8IG51bGwsXG4pOiBlbGVtZW50IGlzIFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gPT4gZWxlbWVudD8ubG9jYWxOYW1lID09PSAnc2JiLWRhdGUtaW5wdXQnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWRhdGVwaWNrZXJgLCBpdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBgc2JiLWNhbGVuZGFyYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQgPSBEYXRlPlxuICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpXG4gIGltcGxlbWVudHMgU2JiRGF0ZXBpY2tlckNvbnRyb2w8VD5cbntcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIERhdGVwaWNrZXIgcmVmZXJlbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHByb3BlcnR5L2F0dHJpYnV0ZSBgZGF0ZXBpY2tlcmAgaW5zdGVhZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RhdGUtcGlja2VyJyB9KVxuICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCkge1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBQcm9wZXJ0eSBkYXRlUGlja2VyL0F0dHJpYnV0ZSBkYXRlLXBpY2tlciBpcyBkZXByZWNhdGVkLiBVc2UgJ2RhdGVwaWNrZXInIGluc3RlYWQuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlciA9IHZhbHVlIGFzIHVua25vd24gYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsO1xuICB9XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlcjtcbiAgfVxuXG4gIC8qKiBEYXRlcGlja2VyIHJlZmVyZW5jZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZXBpY2tlcicgfSlcbiAgcHVibGljIHNldCBkYXRlcGlja2VyKHZhbHVlOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9kYXRlcGlja2VyID1cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoKHRoaXMuZ2V0Um9vdE5vZGU/LigpIGFzIFBhcmVudE5vZGUpPy5xdWVyeVNlbGVjdG9yPy4oYCMke3ZhbHVlfWApID8/IG51bGwpXG4gICAgICAgIDogdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlcGlja2VyKCk6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVwaWNrZXIgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9kYXRlcGlja2VyPzogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsO1xuXG4gIC8qKiBUaGUgaW5pdGlhbCB2aWV3IG9mIGNhbGVuZGFyIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gb3BlbmluZy4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIHZpZXc6IENhbGVuZGFyVmlldyA9ICdkYXknO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbWluOiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbWF4OiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfcmVuZGVyQ2FsZW5kYXIgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jYWxlbmRhckVsZW1lbnQhOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD47XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50ITogU2JiTWluaUJ1dHRvbkVsZW1lbnQ7XG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIobmV3IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkNvbnRyb2xDb250cm9sbGVyKHRoaXMpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jb21wb3NlZFBhdGgoKVswXSA9PT0gdGhpcykge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX3JlbmRlckNhbGVuZGFyID0gdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2JiLW1pbmktYnV0dG9uJykhO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90IHx8PSAncHJlZml4JztcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9XG4gICAgICAgICh0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5kaXNhYmxlZCB8fCB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5yZWFkT25seSkgPz8gdHJ1ZTtcbiAgICAgIHRoaXMuX21pbiA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ/Lm1pbjtcbiAgICAgIHRoaXMuX21heCA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ/Lm1heDtcblxuICAgICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIoKTtcbiAgICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5kYXRlcGlja2VyLnZhbHVlQXNEYXRlID8/IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21pbiA9IG51bGw7XG4gICAgICB0aGlzLl9tYXggPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUNhbGVuZGFyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2FsZW5kYXJFbGVtZW50IHx8ICF0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LndpZGUgPSB0aGlzLmRhdGVwaWNrZXIud2lkZTtcbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQubm93ID0gdGhpcy5fbm93T3JOdWxsKCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LmRhdGVGaWx0ZXIgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50ICYmIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9PT0gY2FsZW5kYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID0gY2FsZW5kYXI7XG4gICAgaWYgKCEoJ3ZhbHVlQXNEYXRlJyBpbiAodGhpcy5kYXRlcGlja2VyID8/IHt9KSkgfHwgIXRoaXMuX2NhbGVuZGFyRWxlbWVudD8ucmVzZXRQb3NpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSB0aGlzLmRhdGVwaWNrZXIhLnZhbHVlQXNEYXRlID8/IG51bGw7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQucmVzZXRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9wb3BvdmVyRWxlbWVudC50cmlnZ2VyID0gdGhpcy5fdHJpZ2dlckVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIF9ub3dPck51bGwoKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXI/Lmhhc0N1c3RvbU5vdygpID8gdGhpcy5kYXRlcGlja2VyLm5vdyA6IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItbWluaS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJzYmItZGF0ZXBpY2tlci10b2dnbGVfX3RyaWdnZXJcIlxuICAgICAgICBpY29uLW5hbWU9XCJjYWxlbmRhci1zbWFsbFwiXG4gICAgICAgIGFyaWEtbGFiZWw9JHtpMThuU2hvd0NhbGVuZGFyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/ZGlzYWJsZWQ9JHshaXNTZXJ2ZXIgJiYgKCF0aGlzLmRhdGVwaWNrZXIgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBlbCBhcyBTYmJNaW5pQnV0dG9uRWxlbWVudCkpfVxuICAgICAgPjwvc2JiLW1pbmktYnV0dG9uPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIGlmIChzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIC50cmlnZ2VyPSR7dGhpcy5fdHJpZ2dlckVsZW1lbnR9XG4gICAgICAgIGhpZGUtY2xvc2UtYnV0dG9uXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl9wb3BvdmVyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyQ2FsZW5kYXJcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYWxlbmRhclxuICAgICAgICAgICAgICAudmlldz0ke3RoaXMudmlld31cbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yTnVsbCgpfVxuICAgICAgICAgICAgICA/d2lkZT0ke3RoaXMuZGF0ZXBpY2tlcj8ud2lkZX1cbiAgICAgICAgICAgICAgLmRhdGVGaWx0ZXI9JHt0aGlzLmRhdGVwaWNrZXI/LmRhdGVGaWx0ZXIgPz8gbnVsbH1cbiAgICAgICAgICAgICAgQGRhdGVTZWxlY3RlZD0keyhkOiBDdXN0b21FdmVudDxUPikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5kYXRlcGlja2VyLmlucHV0RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgIGlmIChpc0RhdGVJbnB1dChpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWVBc0RhdGUgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICAgICAgICAgICAgICAgIC8vIGZyYW1ld29ya3MgdGhhdCByZWx5IG9uIHRoYXQgZXZlbnQgdG8gdXBkYXRlIGZvcm0gc3RhdHVzLlxuICAgICAgICAgICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlcGlja2VyLnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyIGFzIFNiYkNhbGVuZGFyRWxlbWVudDxUPiksXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+PC9zYmItY2FsZW5kYXI+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJzogU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLE1BQU0sY0FBYyxDQUNsQixhQUNzQyxtQ0FBUyxlQUFjO0lBT3pELDhCQUEwQixNQUFBOzswQkFEL0IsY0FBYyx1QkFBdUIsQ0FBQzs7OztBQUU3QixNQUFBLGNBQUEsaUJBQWlCLGtCQUFrQixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdEQsRUFBQSxtQkFBUSxZQUErQztBQUFBLElBcUR2RCxjQUFBOzs7QUFmWTtBQUVIO0FBRUE7QUFFQTtBQUVBO0FBWFUsV0FBQSxjQXBDZjtBQXVDd0IseUJBQUEs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
|
|
@@ -39,8 +39,10 @@ const datepickerControlRegisteredEventFactory = () => new CustomEvent("datepicke
|
|
|
39
39
|
composed: true
|
|
40
40
|
});
|
|
41
41
|
let nextId = 0;
|
|
42
|
+
let warningLogged = false;
|
|
43
|
+
const isDateInput = (element) => (element == null ? void 0 : element.localName) === "sbb-date-input";
|
|
42
44
|
let SbbDatepickerElement = (() => {
|
|
43
|
-
var _wide_accessor_storage,
|
|
45
|
+
var _wide_accessor_storage, _input_accessor_storage, __inputElement_accessor_storage, _a;
|
|
44
46
|
let _classDecorators = [customElement("sbb-datepicker")];
|
|
45
47
|
let _classDescriptor;
|
|
46
48
|
let _classExtraInitializers = [];
|
|
@@ -50,9 +52,7 @@ let SbbDatepickerElement = (() => {
|
|
|
50
52
|
let _wide_decorators;
|
|
51
53
|
let _wide_initializers = [];
|
|
52
54
|
let _wide_extraInitializers = [];
|
|
53
|
-
let
|
|
54
|
-
let _dateFilter_initializers = [];
|
|
55
|
-
let _dateFilter_extraInitializers = [];
|
|
55
|
+
let _set_dateFilter_decorators;
|
|
56
56
|
let _input_decorators;
|
|
57
57
|
let _input_initializers = [];
|
|
58
58
|
let _input_extraInitializers = [];
|
|
@@ -66,12 +66,11 @@ let SbbDatepickerElement = (() => {
|
|
|
66
66
|
var _a2;
|
|
67
67
|
super();
|
|
68
68
|
__privateAdd(this, _wide_accessor_storage);
|
|
69
|
-
__privateAdd(this, _dateFilter_accessor_storage);
|
|
70
69
|
__privateAdd(this, _input_accessor_storage);
|
|
71
70
|
__privateAdd(this, __inputElement_accessor_storage);
|
|
72
71
|
__privateSet(this, _wide_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _wide_initializers, false)));
|
|
73
|
-
|
|
74
|
-
__privateSet(this, _input_accessor_storage,
|
|
72
|
+
this._dateFilter = __runInitializers(this, _wide_extraInitializers);
|
|
73
|
+
__privateSet(this, _input_accessor_storage, __runInitializers(this, _input_initializers, null));
|
|
75
74
|
this._now = __runInitializers(this, _input_extraInitializers);
|
|
76
75
|
__privateSet(this, __inputElement_accessor_storage, __runInitializers(this, __inputElement_initializers, null));
|
|
77
76
|
this._change = (__runInitializers(this, __inputElement_extraInitializers), new EventEmitter(this, SbbDatepickerElement2.events.change, {
|
|
@@ -88,22 +87,13 @@ let SbbDatepickerElement = (() => {
|
|
|
88
87
|
var _a3;
|
|
89
88
|
this._emitInputUpdated();
|
|
90
89
|
(_a3 = this._associationController) == null ? void 0 : _a3.updateControls();
|
|
91
|
-
if (this.inputElement && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
|
|
90
|
+
if (this.inputElement && !isDateInput(this.inputElement) && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
|
|
92
91
|
const value = this.inputElement.getAttribute("value");
|
|
93
92
|
this.valueAsDate = this._dateAdapter.parse(value, this.now) ?? value;
|
|
94
93
|
}
|
|
95
94
|
}) : null;
|
|
96
95
|
this._dateAdapter = ((_a2 = readConfig().datetime) == null ? void 0 : _a2.dateAdapter) ?? defaultDateAdapter;
|
|
97
|
-
this._language = new SbbLanguageController(this)
|
|
98
|
-
if (this.inputElement) {
|
|
99
|
-
if (this._inputElementPlaceholderMutable) {
|
|
100
|
-
this.inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
101
|
-
}
|
|
102
|
-
if (this.valueAsDate) {
|
|
103
|
-
this.inputElement.value = this._dateAdapter.format(this.valueAsDate);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
});
|
|
96
|
+
this._language = new SbbLanguageController(this);
|
|
107
97
|
this._associationController = new SbbDatepickerAssociationHostController(this);
|
|
108
98
|
}
|
|
109
99
|
/** If set to true, two months are displayed. */
|
|
@@ -113,15 +103,18 @@ let SbbDatepickerElement = (() => {
|
|
|
113
103
|
set wide(value) {
|
|
114
104
|
__privateSet(this, _wide_accessor_storage, value);
|
|
115
105
|
}
|
|
116
|
-
/**
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
106
|
+
/**
|
|
107
|
+
* A function used to filter out dates.
|
|
108
|
+
* @deprecated Use dateFilter from SbbDateInputElement.
|
|
109
|
+
*/
|
|
120
110
|
set dateFilter(value) {
|
|
121
|
-
|
|
111
|
+
this._dateFilter = value;
|
|
112
|
+
}
|
|
113
|
+
get dateFilter() {
|
|
114
|
+
return this._dateFilter ?? (isDateInput(this.inputElement) ? this.inputElement.dateFilter : null) ?? (() => true);
|
|
122
115
|
}
|
|
123
116
|
/**
|
|
124
|
-
* Reference of the native input connected to the datepicker.
|
|
117
|
+
* Reference of the sbb-date-input instance or the native input connected to the datepicker.
|
|
125
118
|
* If given a string, it will be treated as an id reference and an attempt is
|
|
126
119
|
* made to be resolved for the containing document fragment.
|
|
127
120
|
* If given a HTMLElement instance, it will be used as is.
|
|
@@ -142,14 +135,24 @@ let SbbDatepickerElement = (() => {
|
|
|
142
135
|
get now() {
|
|
143
136
|
return this._now ?? this._dateAdapter.today();
|
|
144
137
|
}
|
|
145
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* The currently selected date as a Date or custom date provider instance.
|
|
140
|
+
* @deprecated Use valueAsDate from SbbDateInputElement.
|
|
141
|
+
*/
|
|
146
142
|
set valueAsDate(value) {
|
|
143
|
+
if (isDateInput(this.inputElement)) {
|
|
144
|
+
this.inputElement.valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
147
|
this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
|
|
148
148
|
if (this._tryApplyFormatToInput()) {
|
|
149
149
|
this.inputElement.dispatchEvent(new Event("blur", { composed: true }));
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
get valueAsDate() {
|
|
153
|
+
if (isDateInput(this.inputElement)) {
|
|
154
|
+
return this.inputElement.valueAsDate;
|
|
155
|
+
}
|
|
153
156
|
return this._valueAsDate ?? null;
|
|
154
157
|
}
|
|
155
158
|
/** The resolved associated input element, as defined by `input`. */
|
|
@@ -167,6 +170,17 @@ let SbbDatepickerElement = (() => {
|
|
|
167
170
|
super.connectedCallback();
|
|
168
171
|
this._attachInput();
|
|
169
172
|
}
|
|
173
|
+
requestUpdate(name, oldValue, options) {
|
|
174
|
+
super.requestUpdate(name, oldValue, options);
|
|
175
|
+
if (this.hasUpdated && !name && this.inputElement) {
|
|
176
|
+
if (this._inputElementPlaceholderMutable) {
|
|
177
|
+
this.inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
178
|
+
}
|
|
179
|
+
if (this.valueAsDate) {
|
|
180
|
+
this.inputElement.value = this._dateAdapter.format(this.valueAsDate);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
170
184
|
willUpdate(changedProperties) {
|
|
171
185
|
super.willUpdate(changedProperties);
|
|
172
186
|
if (changedProperties.has("input")) {
|
|
@@ -198,23 +212,30 @@ let SbbDatepickerElement = (() => {
|
|
|
198
212
|
}
|
|
199
213
|
_attachInput() {
|
|
200
214
|
var _a2, _b, _c, _d;
|
|
201
|
-
const input = findInput(this, this.input);
|
|
215
|
+
const input = findInput(this, this.input, "input,sbb-date-input");
|
|
202
216
|
if (this.inputElement === input) {
|
|
203
217
|
return;
|
|
204
218
|
} else if (this.inputElement) {
|
|
205
219
|
(_a2 = this._datePickerController) == null ? void 0 : _a2.abort();
|
|
206
220
|
(_b = this._inputObserver) == null ? void 0 : _b.disconnect();
|
|
207
221
|
}
|
|
222
|
+
const isNativeInput = !isDateInput(input);
|
|
223
|
+
if (isNativeInput && true && !warningLogged) {
|
|
224
|
+
warningLogged = true;
|
|
225
|
+
console.warn("Using <sbb-datepicker> with a native <input> is deprecated. Use a <sbb-date-input> instead of <input>.");
|
|
226
|
+
}
|
|
208
227
|
this._inputElement = input;
|
|
209
228
|
if (input) {
|
|
210
229
|
this._datePickerController = new AbortController();
|
|
211
230
|
(_c = this._inputObserver) == null ? void 0 : _c.observe(input, {
|
|
212
231
|
attributeFilter: ["disabled", "readonly", "min", "max", "value"]
|
|
213
232
|
});
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
233
|
+
if (isNativeInput) {
|
|
234
|
+
this._inputElementPlaceholderMutable = !input.placeholder;
|
|
235
|
+
input.type = "text";
|
|
236
|
+
if (this._inputElementPlaceholderMutable) {
|
|
237
|
+
input.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
238
|
+
}
|
|
218
239
|
}
|
|
219
240
|
const options = { signal: this._datePickerController.signal };
|
|
220
241
|
input.addEventListener("input", (e) => {
|
|
@@ -230,7 +251,9 @@ let SbbDatepickerElement = (() => {
|
|
|
230
251
|
}
|
|
231
252
|
}
|
|
232
253
|
_emitInputUpdated() {
|
|
233
|
-
const { disabled, readOnly: readonly, min, max } = this.inputElement ?? {};
|
|
254
|
+
const { disabled, readOnly: readonly, min: minValue, max: maxValue } = this.inputElement ?? {};
|
|
255
|
+
const min = minValue && typeof minValue !== "string" ? this._dateAdapter.toIso8601(minValue) : minValue;
|
|
256
|
+
const max = maxValue && typeof maxValue !== "string" ? this._dateAdapter.toIso8601(maxValue) : maxValue;
|
|
234
257
|
this._inputUpdated.emit({ disabled, readonly, min, max });
|
|
235
258
|
}
|
|
236
259
|
_handleInputChange() {
|
|
@@ -244,7 +267,7 @@ let SbbDatepickerElement = (() => {
|
|
|
244
267
|
(_a2 = this._associationController) == null ? void 0 : _a2.updateControls();
|
|
245
268
|
}
|
|
246
269
|
_tryApplyFormatToInput() {
|
|
247
|
-
if (!this.inputElement) {
|
|
270
|
+
if (!this.inputElement || isDateInput(this.inputElement)) {
|
|
248
271
|
return false;
|
|
249
272
|
}
|
|
250
273
|
const formattedDate = this.valueAsDate ? this._dateAdapter.format(this.valueAsDate) : "";
|
|
@@ -269,6 +292,9 @@ let SbbDatepickerElement = (() => {
|
|
|
269
292
|
}
|
|
270
293
|
}
|
|
271
294
|
_parseInput(deserializeAsFallback = false) {
|
|
295
|
+
if (isDateInput(this.inputElement)) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
272
298
|
const value = this.inputElement.value;
|
|
273
299
|
this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.parse(value, this.now));
|
|
274
300
|
if (deserializeAsFallback && !this._valueAsDate) {
|
|
@@ -337,7 +363,7 @@ let SbbDatepickerElement = (() => {
|
|
|
337
363
|
* and `min` and `max` parameters (e.g. from the self-named input's attributes).
|
|
338
364
|
*/
|
|
339
365
|
_isDateAvailable() {
|
|
340
|
-
var _a2, _b;
|
|
366
|
+
var _a2, _b, _c;
|
|
341
367
|
if (!this.valueAsDate) {
|
|
342
368
|
return false;
|
|
343
369
|
}
|
|
@@ -346,12 +372,12 @@ let SbbDatepickerElement = (() => {
|
|
|
346
372
|
if (this._dateAdapter.isValid(dateMin) && this._dateAdapter.compareDate(this.valueAsDate, dateMin) < 0 || this._dateAdapter.isValid(dateMax) && this._dateAdapter.compareDate(this.valueAsDate, dateMax) > 0) {
|
|
347
373
|
return false;
|
|
348
374
|
}
|
|
349
|
-
return this.dateFilter ?
|
|
375
|
+
return ((_c = this.dateFilter) == null ? void 0 : _c.call(this, this.valueAsDate)) ?? true;
|
|
350
376
|
}
|
|
351
|
-
}, _wide_accessor_storage = new WeakMap(),
|
|
377
|
+
}, _wide_accessor_storage = new WeakMap(), _input_accessor_storage = new WeakMap(), __inputElement_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
352
378
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
353
379
|
_wide_decorators = [forceType(), property({ type: Boolean })];
|
|
354
|
-
|
|
380
|
+
_set_dateFilter_decorators = [property({ attribute: false })];
|
|
355
381
|
_input_decorators = [property()];
|
|
356
382
|
_set_now_decorators = [property()];
|
|
357
383
|
_set_valueAsDate_decorators = [property({ attribute: false })];
|
|
@@ -359,9 +385,9 @@ let SbbDatepickerElement = (() => {
|
|
|
359
385
|
__esDecorate(_a, null, _wide_decorators, { kind: "accessor", name: "wide", static: false, private: false, access: { has: (obj) => "wide" in obj, get: (obj) => obj.wide, set: (obj, value) => {
|
|
360
386
|
obj.wide = value;
|
|
361
387
|
} }, metadata: _metadata }, _wide_initializers, _wide_extraInitializers);
|
|
362
|
-
__esDecorate(_a, null,
|
|
388
|
+
__esDecorate(_a, null, _set_dateFilter_decorators, { kind: "setter", name: "dateFilter", static: false, private: false, access: { has: (obj) => "dateFilter" in obj, set: (obj, value) => {
|
|
363
389
|
obj.dateFilter = value;
|
|
364
|
-
} }, metadata: _metadata },
|
|
390
|
+
} }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
365
391
|
__esDecorate(_a, null, _input_decorators, { kind: "accessor", name: "input", static: false, private: false, access: { has: (obj) => "input" in obj, get: (obj) => obj.input, set: (obj, value) => {
|
|
366
392
|
obj.input = value;
|
|
367
393
|
} }, metadata: _metadata }, _input_initializers, _input_extraInitializers);
|
|
@@ -390,4 +416,4 @@ export {
|
|
|
390
416
|
datepickerControlRegisteredEventFactory,
|
|
391
417
|
getDatePicker
|
|
392
418
|
};
|
|
393
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBmaW5kSW5wdXQsIGZpbmRSZWZlcmVuY2VkRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgZm9yd2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckFzc29jaWF0aW9uSG9zdENvbnRyb2xsZXIsIHR5cGUgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci10b2dnbGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiSW5wdXRVcGRhdGVFdmVudCB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBtaW4/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1heD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQsIGEgU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50IG9yIGEgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgY29tcG9uZW50LFxuICogaXQgcmV0dXJucyB0aGUgcmVsYXRlZCBTYmJEYXRlcGlja2VyRWxlbWVudCByZWZlcmVuY2UsIGlmIGV4aXN0cy5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHBvdGVudGlhbGx5IGNvbm5lY3RlZCB0byB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gdHJpZ2dlciBUaGUgaWQgb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgU2JiRGF0ZVBpY2tlci5cbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBpbiB1c2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlUGlja2VyPFQgPSBEYXRlPihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50PFQ+LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm4gZWxlbWVudFxuICAgICAgLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKVxuICAgICAgPy5xdWVyeVNlbGVjdG9yPFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pignc2JiLWRhdGVwaWNrZXInKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8U2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4+KHRyaWdnZXIpO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBpbiB1c2UuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkgPSAoKTogQ3VzdG9tRXZlbnQgPT5cbiAgbmV3IEN1c3RvbUV2ZW50KCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY29tcG9zZWQ6IHRydWUsXG4gIH0pO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGNoYW5nZSAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGlucHV0IC0gTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGZpcmVkIHRoZSBpbnB1dCBldmVudC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD59IGlucHV0VXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkYXRlUGlja2VyVXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+fSB2YWxpZGF0aW9uQ2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXInKVxuY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBjaGFuZ2U6ICdjaGFuZ2UnLFxuICAgIGlucHV0VXBkYXRlZDogJ2lucHV0VXBkYXRlZCcsXG4gICAgZGF0ZVBpY2tlclVwZGF0ZWQ6ICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgdmFsaWRhdGlvbkNoYW5nZTogJ3ZhbGlkYXRpb25DaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdHdvIG1vbnRocyBhcmUgZGlzcGxheWVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igd2lkZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgYWNjZXNzb3IgZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT5cbiAgICB0cnVlO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIGdpdmVuIGEgc3RyaW5nLCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gaWQgcmVmZXJlbmNlIGFuZCBhbiBhdHRlbXB0IGlzXG4gICAqIG1hZGUgdG8gYmUgcmVzb2x2ZWQgZm9yIHRoZSBjb250YWluaW5nIGRvY3VtZW50IGZyYWdtZW50LlxuICAgKiBJZiBnaXZlbiBhIEhUTUxFbGVtZW50IGluc3RhbmNlLCBpdCB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgaW5wdXQ6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS5cbiAgICogUmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2U8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fbm93ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyB0aGlzLl9kYXRlQWRhcHRlci50b2RheSgpO1xuICB9XG4gIHByaXZhdGUgX25vdz86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgYXMgYSBEYXRlIG9yIGN1c3RvbSBkYXRlIHByb3ZpZGVyIGluc3RhbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50IS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVBc0RhdGUgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZUFzRGF0ZT86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IGBpbnB1dGAuICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50O1xuICB9XG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9pbnB1dE9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgICAgICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIHRoaXMgbG9naWMgYnkgYWRkaW5nIGEgdmFsdWUgcHJvcGVydHkgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCAmJiBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgICAgdGhpcy52YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLm5vdykgPz8gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHByaXZhdGUgX2Fzc29jaWF0aW9uQ29udHJvbGxlciA9IG5ldyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Ib3N0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLWRhdGVwaWNrZXItJHsrK25leHRJZH1gO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaW5wdXQnKSkge1xuICAgICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3aWRlJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGF0ZUZpbHRlcicpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25vdycpXG4gICAgKSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyVXBkYXRlZC5lbWl0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlQXNEYXRlJykpIHtcbiAgICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoSW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50ID09PSBpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0RWxlbWVudCA9IGlucHV0O1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5vYnNlcnZlKGlucHV0LCB7XG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seScsICdtaW4nLCAnbWF4JywgJ3ZhbHVlJ10sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gIWlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgaW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgaW5wdXQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dCcsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgZm9yd2FyZEV2ZW50KGUsIHRoaXMpO1xuICAgICAgICAgIHRoaXMuX3BhcnNlSW5wdXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLl9oYW5kbGVJbnB1dENoYW5nZSgpLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuX3BhcnNlSW5wdXQodHJ1ZSk7XG4gICAgICB0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKTtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRJbnB1dFVwZGF0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRvbmx5LCBtaW4sIG1heCB9ID0gdGhpcy5pbnB1dEVsZW1lbnQgPz8ge307XG4gICAgdGhpcy5faW5wdXRVcGRhdGVkLmVtaXQoeyBkaXNhYmxlZCwgcmVhZG9ubHksIG1pbiwgbWF4IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy52YWx1ZUFzRGF0ZSA/IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlISkgOiAnJztcbiAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy5pbnB1dEVsZW1lbnQsIGZvcm1hdHRlZERhdGUpO1xuXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSB8fCB0aGlzLl9pc0RhdGVBdmFpbGFibGUoKTtcbiAgICBjb25zdCB3YXNWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgIGlmICh3YXNWYWxpZCAhPT0gaXNFbXB0eU9yVmFsaWQpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25DaGFuZ2UuZW1pdCh7IHZhbGlkOiBpc0VtcHR5T3JWYWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUlucHV0KGRlc2VyaWFsaXplQXNGYWxsYmFjayA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudCEudmFsdWU7XG4gICAgLy8gV2UgYXJlIGFzc2lnbmluZyBkaXJlY3RseSB0byB0aGUgcHJpdmF0ZSBiYWNraW5nIHByb3BlcnR5IG9mIHZhbHVlQXNEYXRlXG4gICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgYmx1ciBldmVudCBkdXJpbmcgdGhpcyB0aW1lLlxuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSxcbiAgICApO1xuICAgIGlmIChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgJiYgIXRoaXMuX3ZhbHVlQXNEYXRlKSB7XG4gICAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudDogSFRNTFBhcmFncmFwaEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3Rvcj8uPEhUTUxQYXJhZ3JhcGhFbGVtZW50PignI3N0YXR1cy1jb250YWluZXInKTtcblxuICAgIGlmICghY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSwgeyB3ZWVrZGF5U3R5bGU6ICdsb25nJyB9KTtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gYCR7aTE4bkRhdGVDaGFuZ2VkVG9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGF0ZX1gO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGUoZGF0ZTogVCk6IFQge1xuICAgIGNvbnN0IHByZXZpb3VzRGF0ZSA9IHRoaXMuX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGUsIC0xKTtcbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1pbik7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1pbiB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1heGAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmROZXh0QXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgbmV4dERhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAxKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1heCB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dERhdGU7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuIG9uZSwgY29uc2lkZXJpbmcgdGhlIGBkYXRlRmlsdGVyYCBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAgICogQHBhcmFtIGRlbHRhIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQvc3VidHJhY3QgZnJvbSB0aGUgc3RhcnRpbmcgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZEF2YWlsYWJsZURhdGUoZGF0ZTogVCwgZGVsdGE6IG51bWJlcik6IFQge1xuICAgIGxldCBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIGRlbHRhKTtcblxuICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcbiAgICAgIHdoaWxlICghdGhpcy5kYXRlRmlsdGVyKGF2YWlsYWJsZURhdGUpKSB7XG4gICAgICAgIGF2YWlsYWJsZURhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhdmFpbGFibGVEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2YWx1ZUFzRGF0ZSBpcyB2YWxpZCwgY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eVxuICAgKiBhbmQgYG1pbmAgYW5kIGBtYXhgIHBhcmFtZXRlcnMgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNEYXRlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWluKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1heCEpID4gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlRmlsdGVyID8gdGhpcy5kYXRlRmlsdGVyKHRoaXMudmFsdWVBc0RhdGUpIDogdHJ1ZTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJEYXRlcGlja2VyRWxlbWVudCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDZ0IsU0FBQSxjQUNkLFNBQ0EsU0FBOEI7O0FBRTlCLE1BQUksQ0FBQyxTQUFTO0FBQ1osWUFBTyxtQkFDSixZQURJLGlDQUNNLHNCQUROLG1CQUVILGNBQXVDO0FBQUEsRUFBZ0I7QUFHN0QsU0FBTyxzQkFBK0MsT0FBTztBQUMvRDtBQUtPLE1BQU0sMENBQTBDLE1BQ3JELElBQUksWUFBWSwrQkFBK0I7QUFBQSxFQUM3QyxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQ1gsQ0FBQTtBQUVILElBQUksU0FBUztJQWFQLHdCQUFvQixNQUFBOzswQkFEekIsY0FBYyxnQkFBZ0IsQ0FBQzs7OztvQkFDYTs7Ozs7Ozs7Ozs7Ozs7OztBQUFSQSxNQUFBQSx5QkFBQSxtQkFBUSxZQUFVO0FBQUEsSUFzSHJELGNBQUE7OztBQTFHQTtBQUdnQztBQVNwQjtBQWtDSDtBQTFETCx5QkFBQSx5QkFBQSxrQkFBQSxNQUFBLDBCQUFBLEdBWTRCLGtCQUFBLE1BQUEsb0JBQUEsS0FBSztBQUdXLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLDBCQUEwQyxNQUN4RixJQUFJO0FBUXNCLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsNkJBQUEsR0FBQSxrQkFBQSxNQUFBLHFCQUFxQyxJQUFJO0FBYTdELFdBQUEsT0FBZ0Isa0JBQUEsTUFBQSx3QkFBQTtBQXFCRSx5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLDZCQUF5QyxJQUFJO0FBR3hELFdBQUEsV0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQWlCLElBQUksYUFBYSxNQUFNQSxzQkFBcUIsT0FBTyxRQUFRO0FBQUEsUUFDekYsU0FBUztBQUFBLE1BQUEsQ0FDVjtBQUdPLFdBQWEsZ0JBQXNDLElBQUksYUFDN0QsTUFDQUEsc0JBQXFCLE9BQU8sY0FDNUIsRUFBRSxTQUFTLE1BQU0sWUFBWSxLQUFBLENBQU07QUFJN0IsV0FBa0IscUJBQWlCLElBQUksYUFDN0MsTUFDQUEsc0JBQXFCLE9BQU8sbUJBQzVCO0FBQUEsUUFDRSxTQUFTO0FBQUEsUUFDVCxZQUFZO0FBQUEsTUFBQSxDQUNiO0FBSUssV0FBQSxvQkFBNEQsSUFBSSxhQUN0RSxNQUNBQSxzQkFBcUIsT0FBTyxnQkFBZ0I7QUFHdEMsV0FBK0Isa0NBQUc7QUFJbEMsV0FBYyxpQkFBRyxDQUFDLFdBQ3RCLElBQUksaUJBQWlCLENBQUMsa0JBQWlCOztBQUNyQyxhQUFLLGtCQUFpQjtBQUN0QixTQUFBQyxNQUFBLEtBQUssMkJBQUwsZ0JBQUFBLElBQTZCO0FBRXpCLFlBQUEsS0FBSyxpQkFBZ0IsK0NBQWUsS0FBSyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsV0FBVTtBQUNoRixnQkFBTSxRQUFRLEtBQUssYUFBYSxhQUFhLE9BQU87QUFDcEQsZUFBSyxjQUFjLEtBQUssYUFBYSxNQUFNLE9BQU8sS0FBSyxHQUFHLEtBQUs7QUFBQSxRQUFBO0FBQUEsTUFFbEUsQ0FBQSxJQUNEO0FBRUksV0FBWSxpQkFBbUJBLE1BQUEsV0FBYSxFQUFBLGFBQWIsZ0JBQUFBLElBQXVCLGdCQUFlO0FBRXJFLFdBQVMsWUFBRyxJQUFJLHNCQUFzQixJQUFJLEVBQUUsWUFBWSxNQUFLO0FBQ25FLFlBQUksS0FBSyxjQUFjO0FBQ3JCLGNBQUksS0FBSyxpQ0FBaUM7QUFDeEMsaUJBQUssYUFBYSxjQUFjLDBCQUEwQixLQUFLLFVBQVUsT0FBTztBQUFBLFVBQUE7QUFFbEYsY0FBSSxLQUFLLGFBQWE7QUFDcEIsaUJBQUssYUFBYSxRQUFRLEtBQUssYUFBYSxPQUFPLEtBQUssV0FBVztBQUFBLFVBQUE7QUFBQSxRQUNyRTtBQUFBLE1BQ0YsQ0FDRDtBQUNPLFdBQUEseUJBQXlCLElBQUksdUNBQXVDLElBQUk7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQXhHaEYsSUFBZ0IsT0FBc0I7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXRDLElBQWdCLEtBQXNCLE9BQUE7QUFBQSx5QkFBQSx3QkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBLElBR04sSUFBZ0IsYUFDekM7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBRHlCLElBQWdCLFdBQ3pDLE9BQUE7QUFBQSx5QkFBQSw4QkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQVFLLElBQWdCLFFBQTBDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUExRCxJQUFnQixNQUEwQyxPQUFBO0FBQUEseUJBQUEseUJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQU90RSxJQUFXLElBQUksT0FBNEI7QUFDcEMsV0FBQSxPQUFPLEtBQUssYUFBYSxtQkFBbUIsS0FBSyxhQUFhLFlBQVksS0FBSyxDQUFDO0FBQUEsSUFBQTtBQUFBLElBRXZGLElBQVcsTUFBRztBQUNaLGFBQU8sS0FBSyxRQUFRLEtBQUssYUFBYSxNQUFLO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFNN0MsSUFBVyxZQUFZLE9BQTRCO0FBQzVDLFdBQUEsZUFBZSxLQUFLLGFBQWEsbUJBQW1CLEtBQUssYUFBYSxZQUFZLEtBQUssQ0FBQztBQUN6RixVQUFBLEtBQUssMEJBQTBCO0FBRzVCLGFBQUEsYUFBYyxjQUFjLElBQUksTUFBTSxRQUFRLEVBQUUsVUFBVSxLQUFNLENBQUEsQ0FBQztBQUFBLE1BQUE7QUFBQSxJQUN4RTtBQUFBLElBRUYsSUFBVyxjQUFXO0FBQ3BCLGFBQU8sS0FBSyxnQkFBZ0I7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUs5QixJQUFXLGVBQVk7QUFDckIsYUFBTyxLQUFLO0FBQUEsSUFBQTtBQUFBLElBRUwsSUFBaUIsZ0JBQThDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUEvRCxJQUFpQixjQUE4QyxPQUFBO0FBQUEseUJBQUEsaUNBQUE7QUFBQSxJQUFBO0FBQUEsSUFnRXhELG9CQUFpQjtBQUMxQixXQUFBLE9BQUEsS0FBQSxLQUFPLGtCQUFrQixFQUFFLE1BQU07QUFDdEMsWUFBTSxrQkFBaUI7QUFDdkIsV0FBSyxhQUFZO0FBQUEsSUFBQTtBQUFBLElBR0EsV0FBVyxtQkFBdUM7QUFDbkUsWUFBTSxXQUFXLGlCQUFpQjtBQUU5QixVQUFBLGtCQUFrQixJQUFJLE9BQU8sR0FBRztBQUNsQyxhQUFLLGFBQVk7QUFBQSxNQUFBO0FBR2pCLFVBQUEsa0JBQWtCLElBQUksTUFBTSxLQUM1QixrQkFBa0IsSUFBSSxZQUFZLEtBQ2xDLGtCQUFrQixJQUFJLEtBQUssR0FDM0I7QUFDQSxhQUFLLG1CQUFtQjs7QUFFdEIsVUFBQSxrQkFBa0IsSUFBSSxhQUFhLEdBQUc7QUFDeEMsYUFBSyxvQkFBbUI7QUFBQSxNQUFBO0FBQUEsSUFDMUI7QUFBQSxJQUdjLHVCQUFvQjs7QUFDbEMsWUFBTSxxQkFBb0I7QUFDMUIsT0FBQUEsTUFBQSxLQUFLLG1CQUFMLGdCQUFBQSxJQUFxQjtBQUNyQixpQkFBSywwQkFBTCxtQkFBNEI7QUFBQTtJQUdYLGFBQWEsbUJBQXVDO0FBQ3JFLFlBQU0sYUFBYSxpQkFBaUI7QUFDcEMsV0FBSyxvQkFBbUI7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQU9uQixlQUFZO0FBQ1YsYUFBQSxDQUFDLENBQUMsS0FBSztBQUFBLElBQUE7QUFBQSxJQUdSLGVBQVk7O0FBQ2xCLFlBQU0sUUFBUSxVQUFVLE1BQU0sS0FBSyxLQUFLO0FBQ3BDLFVBQUEsS0FBSyxpQkFBaUIsT0FBTztBQUMvQjtBQUFBLE1BQUEsV0FDUyxLQUFLLGNBQWM7QUFDNUIsU0FBQUEsTUFBQSxLQUFLLDBCQUFMLGdCQUFBQSxJQUE0QjtBQUM1QixtQkFBSyxtQkFBTCxtQkFBcUI7QUFBQTtBQUd2QixXQUFLLGdCQUFnQjtBQUNyQixVQUFJLE9BQU87QUFDSixhQUFBLHdCQUF3QixJQUFJO0FBQzVCLG1CQUFBLG1CQUFBLG1CQUFnQixRQUFRLE9BQU87QUFBQSxVQUNsQyxpQkFBaUIsQ0FBQyxZQUFZLFlBQVksT0FBTyxPQUFPLE9BQU87QUFBQSxRQUFBO0FBRzVELGFBQUEsa0NBQWtDLENBQUMsTUFBTTtBQUM5QyxjQUFNLE9BQU87QUFDYixZQUFJLEtBQUssaUNBQWlDO0FBQ3hDLGdCQUFNLGNBQWMsMEJBQTBCLEtBQUssVUFBVSxPQUFPO0FBQUEsUUFBQTtBQUd0RSxjQUFNLFVBQW1DLEVBQUUsUUFBUSxLQUFLLHNCQUFzQixPQUFNO0FBQzlFLGNBQUEsaUJBQ0osU0FDQSxDQUFDLE1BQUs7QUFDSix1QkFBYSxHQUFHLElBQUk7QUFDcEIsZUFBSyxZQUFXO0FBQUEsV0FFbEIsT0FBTztBQUVULGNBQU0saUJBQWlCLFVBQVUsTUFBTSxLQUFLLHNCQUFzQixPQUFPO0FBQ3pFLGFBQUssWUFBWSxJQUFJO0FBQ3JCLGFBQUssdUJBQXNCO0FBQzNCLGFBQUssY0FBYTtBQUNsQixhQUFLLGtCQUFpQjtBQUN0QixtQkFBSywyQkFBTCxtQkFBNkI7QUFBQTtJQUMvQjtBQUFBLElBR00sb0JBQWlCO0FBQ2pCLFlBQUEsRUFBRSxVQUFVLFVBQVUsVUFBVSxLQUFLLFFBQVEsS0FBSyxnQkFBZ0I7QUFDeEUsV0FBSyxjQUFjLEtBQUssRUFBRSxVQUFVLFVBQVUsS0FBSyxLQUFLO0FBQUEsSUFBQTtBQUFBLElBR2xELHFCQUFrQjs7QUFDcEIsVUFBQSxLQUFLLDBCQUEwQjtBQUNqQztBQUFBLE1BQUE7QUFFRixXQUFLLGNBQWE7QUFDbEIsV0FBSyxvQkFBbUI7QUFDeEIsV0FBSyxRQUFRO0FBQ2IsT0FBQUEsTUFBQSxLQUFLLDJCQUFMLGdCQUFBQSxJQUE2QjtBQUFBO0lBR3ZCLHlCQUFzQjtBQUN4QixVQUFBLENBQUMsS0FBSyxjQUFjO0FBQ2YsZUFBQTtBQUFBLE1BQUE7QUFHSCxZQUFBLGdCQUFnQixLQUFLLGNBQWMsS0FBSyxhQUFhLE9BQU8sS0FBSyxXQUFZLElBQUk7QUFDdkYsVUFBSSxpQkFBaUIsS0FBSyxhQUFhLFVBQVUsZUFBZTtBQUc5RCxjQUFNLFdBQVcsT0FBTyx5QkFBeUIsaUJBQWlCLFdBQVcsT0FBTyxFQUFHO0FBQzlFLGlCQUFBLEtBQUssS0FBSyxjQUFjLGFBQWE7QUFFekMsYUFBQSxhQUFhLGNBQWMsSUFBSSxXQUFXLFNBQVMsRUFBRSxTQUFTLE1BQU0sVUFBVSxLQUFNLENBQUEsQ0FBQztBQUNyRixhQUFBLGFBQWEsY0FBYyxJQUFJLE1BQU0sVUFBVSxFQUFFLFNBQVMsTUFBTSxVQUFVLEtBQU0sQ0FBQSxDQUFDO0FBQy9FLGVBQUE7QUFBQSxNQUFBO0FBR0YsYUFBQTtBQUFBLElBQUE7QUFBQSxJQUdELGdCQUFhO0FBQ2YsVUFBQSxDQUFDLEtBQUssY0FBYztBQUN0QjtBQUFBLE1BQUE7QUFHRixZQUFNLGlCQUFpQixDQUFDLEtBQUssYUFBYSxTQUFTLEtBQUs7QUFDeEQsWUFBTSxXQUFXLENBQUMsS0FBSyxhQUFhLGFBQWEsa0JBQWtCO0FBQ25FLFdBQUssYUFBYSxnQkFBZ0Isb0JBQW9CLENBQUMsY0FBYztBQUNyRSxVQUFJLGFBQWEsZ0JBQWdCO0FBQy9CLGFBQUssa0JBQWtCLEtBQUssRUFBRSxPQUFPLGdCQUFnQjtBQUFBLE1BQUE7QUFBQSxJQUN2RDtBQUFBLElBR00sWUFBWSx3QkFBd0IsT0FBSztBQUN6QyxZQUFBLFFBQVEsS0FBSyxhQUFjO0FBRzVCLFdBQUEsZUFBZSxLQUFLLGFBQWEsbUJBQ3BDLEtBQUssYUFBYSxNQUFNLE9BQU8sS0FBSyxHQUFHLENBQUM7QUFFdEMsVUFBQSx5QkFBeUIsQ0FBQyxLQUFLLGNBQWM7QUFDMUMsYUFBQSxlQUFlLEtBQUssYUFBYSxtQkFDcEMsS0FBSyxhQUFhLFlBQVksS0FBSyxDQUFDO0FBQUEsTUFBQTtBQUFBLElBRXhDO0FBQUEsSUFHTSxzQkFBbUI7O0FBQ3pCLFlBQU0sb0JBQ0osTUFBQUEsTUFBQSxLQUFLLGVBQUwsZ0JBQUFBLElBQWlCLGtCQUFqQix3QkFBQUEsS0FBdUQ7QUFFekQsVUFBSSxDQUFDLGtCQUFrQjtBQUNyQjtBQUFBLE1BQUEsV0FDUyxDQUFDLEtBQUssYUFBYTtBQUM1Qix5QkFBaUIsWUFBWTtBQUFBLE1BQUEsT0FDeEI7QUFDQyxjQUFBLE9BQU8sS0FBSyxhQUFhLE9BQU8sS0FBSyxhQUFhLEVBQUUsY0FBYyxRQUFRO0FBQy9ELHlCQUFBLFlBQVksR0FBRyxrQkFBa0IsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFJLElBQUk7QUFBQSxNQUFBO0FBQUEsSUFDbkY7QUFBQSxJQUdpQixTQUFNO0FBQ2hCLGFBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBUUYsMEJBQTBCLE1BQU87O0FBQ3RDLFlBQU0sZUFBZSxLQUFLLG1CQUFtQixNQUFNLEVBQUU7QUFDckQsWUFBTSxVQUFVLEtBQUssYUFBYSxhQUFZQSxNQUFBLEtBQUssaUJBQUwsZ0JBQUFBLElBQW1CLEdBQUc7QUFFcEUsVUFDRSxDQUFDLFdBQ0EsS0FBSyxhQUFhLFFBQVEsT0FBTyxLQUNoQyxLQUFLLGFBQWEsWUFBWSxjQUFjLE9BQU8sS0FBSyxHQUMxRDtBQUNPLGVBQUE7QUFBQSxNQUFBO0FBRUYsYUFBQTtBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFRRixzQkFBc0IsTUFBTzs7QUFDbEMsWUFBTSxXQUFXLEtBQUssbUJBQW1CLE1BQU0sQ0FBQztBQUNoRCxZQUFNLFVBQVUsS0FBSyxhQUFhLGFBQVlBLE1BQUEsS0FBSyxpQkFBTCxnQkFBQUEsSUFBbUIsR0FBRztBQUVwRSxVQUNFLENBQUMsV0FDQSxLQUFLLGFBQWEsUUFBUSxPQUFPLEtBQUssS0FBSyxhQUFhLFlBQVksVUFBVSxPQUFPLEtBQUssR0FDM0Y7QUFDTyxlQUFBO0FBQUEsTUFBQTtBQUVGLGFBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBUUQsbUJBQW1CLE1BQVMsT0FBYTtBQUMvQyxVQUFJLGdCQUFnQixLQUFLLGFBQWEsZ0JBQWdCLE1BQU0sS0FBSztBQUVqRSxVQUFJLEtBQUssWUFBWTtBQUNuQixlQUFPLENBQUMsS0FBSyxXQUFXLGFBQWEsR0FBRztBQUN0QywwQkFBZ0IsS0FBSyxhQUFhLGdCQUFnQixlQUFlLEtBQUs7QUFBQSxRQUFBO0FBQUEsTUFDeEU7QUFHSyxhQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFPRCxtQkFBZ0I7O0FBQ2xCLFVBQUEsQ0FBQyxLQUFLLGFBQWE7QUFDZCxlQUFBO0FBQUEsTUFBQTtBQUdULFlBQU0sVUFBVSxLQUFLLGFBQWEsYUFBWUEsTUFBQSxLQUFLLGlCQUFMLGdCQUFBQSxJQUFtQixHQUFHO0FBQ3BFLFlBQU0sVUFBVSxLQUFLLGFBQWEsYUFBWSxVQUFLLGlCQUFMLG1CQUFtQixHQUFHO0FBR2pFLFVBQUEsS0FBSyxhQUFhLFFBQVEsT0FBTyxLQUNoQyxLQUFLLGFBQWEsWUFBWSxLQUFLLGFBQWEsT0FBUSxJQUFJLEtBQzdELEtBQUssYUFBYSxRQUFRLE9BQU8sS0FDaEMsS0FBSyxhQUFhLFlBQVksS0FBSyxhQUFhLE9BQVEsSUFBSSxHQUM5RDtBQUNPLGVBQUE7QUFBQSxNQUFBO0FBR1QsYUFBTyxLQUFLLGFBQWEsS0FBSyxXQUFXLEtBQUssV0FBVyxJQUFJO0FBQUEsSUFBQTtBQUFBLEtBNVYvRCx3Q0FHZ0MsOENBU3BCLHlDQWtDSDs7d0JBaERSLGFBQ0EsU0FBUyxFQUFFLE1BQU0sUUFBQSxDQUFTLENBQUM7QUFJM0IsNkJBQUEsQ0FBQSxTQUFTLEVBQUUsV0FBVyxNQUFPLENBQUEsQ0FBQztBQVM5Qix3QkFBQSxDQUFBLFVBQVU7QUFNViwwQkFBQSxDQUFBLFVBQVU7QUFVVixrQ0FBQSxDQUFBLFNBQVMsRUFBRSxXQUFXLE1BQU8sQ0FBQSxDQUFDO0FBa0I5QixnQ0FBQSxDQUFBLE9BQU87QUE5Q1EsaUJBQUEsSUFBQSxNQUFBLGtCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsUUFBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxVQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxNQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLE9BQXNCO0FBQUEsU0FBQSxVQUFBLGFBQUEsb0JBQUEsdUJBQUE7QUFHVSxpQkFBQSxJQUFBLE1BQUEsd0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxjQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGdCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxZQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGFBQ3pDO0FBQUEsU0FBQSxVQUFBLGFBQUEsMEJBQUEsNkJBQUE7QUFRcUIsaUJBQUEsSUFBQSxNQUFBLG1CQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsU0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxXQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxPQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLFFBQTBDO0FBQUEsU0FBQSxVQUFBLGFBQUEscUJBQUEsd0JBQUE7QUFPdEUsaUJBQUEsSUFBQSxNQUFBLHFCQUFBLEVBQUEsTUFBQSxVQUFBLE1BQUEsT0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxTQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsTUFFVjtBQUFBLFNBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7QUFRRCxpQkFBQSxJQUFBLE1BQUEsNkJBQUEsRUFBQSxNQUFBLFVBQUEsTUFBQSxlQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGlCQUFBLEtBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVcsY0FPVjtBQUFBLFNBQUEsVUFBQSxhQUFBLE1BQUEsMEJBQUE7QUFVeUIsaUJBQUEsSUFBQSxNQUFBLDJCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsaUJBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsbUJBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsZ0JBQThDO0FBQUEsU0FBQSxVQUFBLGFBQUEsNkJBQUEsZ0NBQUE7QUExRDFFLGlCQTBXQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBeld3QixHQUFNLFNBQW1CLE9BQ3pCLEdBQUEsU0FBUztBQUFBLElBQzlCLFFBQVE7QUFBQSxJQUNSLGNBQWM7QUFBQSxJQUNkLG1CQUFtQjtBQUFBLElBQ25CLGtCQUFrQjtBQUFBLEVBQ1YsR0FQTixrQkFBb0IsWUFBQSx1QkFBQSxHQUFXOzs7In0=
|
|
419
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IHR5cGUgRGF0ZUFkYXB0ZXIsIGRlZmF1bHREYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBmb3J3YXJkRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5EYXRlQ2hhbmdlZFRvLCBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZUxpa2UsIFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVJbnB1dEVsZW1lbnQgfSBmcm9tICcuLi8uLi9kYXRlLWlucHV0LmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkhvc3RDb250cm9sbGVyLCB0eXBlIFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXItdG9nZ2xlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYklucHV0VXBkYXRlRXZlbnQge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgbWluPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50LCBhIFNiYkRhdGVwaWNrZXJOZXh0RGF5RWxlbWVudCBvciBhIFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50IGNvbXBvbmVudCxcbiAqIGl0IHJldHVybnMgdGhlIHJlbGF0ZWQgU2JiRGF0ZXBpY2tlckVsZW1lbnQgcmVmZXJlbmNlLCBpZiBleGlzdHMuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBwb3RlbnRpYWxseSBjb25uZWN0ZWQgdG8gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIHRyaWdnZXIgVGhlIGlkIG9yIHRoZSByZWZlcmVuY2Ugb2YgdGhlIFNiYkRhdGVQaWNrZXIuXG4gKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgaW4gdXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcjxUID0gRGF0ZT4oXG4gIGVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJCdXR0b248VD4gfCBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUPixcbiAgdHJpZ2dlcj86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgIC5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJylcbiAgICAgID8ucXVlcnlTZWxlY3RvcjxTYmJEYXRlcGlja2VyRWxlbWVudDxUPj4oJ3NiYi1kYXRlcGlja2VyJyk7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pih0cmlnZ2VyKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgaW4gdXNlLlxuICovXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxubGV0IG5leHRJZCA9IDA7XG5sZXQgd2FybmluZ0xvZ2dlZCA9IGZhbHNlO1xuY29uc3QgaXNEYXRlSW5wdXQgPSA8VD4oXG4gIGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+IHwgbnVsbCxcbik6IGVsZW1lbnQgaXMgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiA9PiBlbGVtZW50Py5sb2NhbE5hbWUgPT09ICdzYmItZGF0ZS1pbnB1dCc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgdGhlIGlucHV0J3MgdmFsdWUgYXMgYSBmb3JtYXR0ZWQgZGF0ZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBmaXJlZCB0aGUgaW5wdXQgZXZlbnQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHdpZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciBvdXQgZGF0ZXMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBkYXRlRmlsdGVyIGZyb20gU2JiRGF0ZUlucHV0RWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBkYXRlRmlsdGVyKHZhbHVlOiAoZGF0ZTogVCB8IG51bGwpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kYXRlRmlsdGVyID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlRmlsdGVyKCk6IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPz9cbiAgICAgIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkgPyB0aGlzLmlucHV0RWxlbWVudC5kYXRlRmlsdGVyIDogbnVsbCkgPz9cbiAgICAgICgoKSA9PiB0cnVlKVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0ZUZpbHRlcj86IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIG9mIHRoZSBzYmItZGF0ZS1pbnB1dCBpbnN0YW5jZSBvciB0aGUgbmF0aXZlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlci5cbiAgICogSWYgZ2l2ZW4gYSBzdHJpbmcsIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhbiBpZCByZWZlcmVuY2UgYW5kIGFuIGF0dGVtcHQgaXNcbiAgICogbWFkZSB0byBiZSByZXNvbHZlZCBmb3IgdGhlIGNvbnRhaW5pbmcgZG9jdW1lbnQgZnJhZ21lbnQuXG4gICAqIElmIGdpdmVuIGEgSFRNTEVsZW1lbnQgaW5zdGFuY2UsIGl0IHdpbGwgYmUgdXNlZCBhcyBpcy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBpbnB1dDogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQSBjb25maWd1cmVkIGRhdGUgd2hpY2ggYWN0cyBhcyB0aGUgY3VycmVudCBkYXRlIGluc3RlYWQgb2YgdGhlIHJlYWwgY3VycmVudCBkYXRlLlxuICAgKiBSZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbm93KHZhbHVlOiBTYmJEYXRlTGlrZTxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9ub3cgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5vdygpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fbm93ID8/IHRoaXMuX2RhdGVBZGFwdGVyLnRvZGF5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfbm93PzogVCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZSBhcyBhIERhdGUgb3IgY3VzdG9tIGRhdGUgcHJvdmlkZXIgaW5zdGFuY2UuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB2YWx1ZUFzRGF0ZSBmcm9tIFNiYkRhdGVJbnB1dEVsZW1lbnQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIGlmIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSksXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICAvLyBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICAvLyBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy5cbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50IS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNEYXRlKCk6IFQgfCBudWxsIHtcbiAgICBpZiAoaXNEYXRlSW5wdXQodGhpcy5pbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudmFsdWVBc0RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNEYXRlID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWVBc0RhdGU/OiBUIHwgbnVsbDtcblxuICAvKiogVGhlIHJlc29sdmVkIGFzc29jaWF0ZWQgaW5wdXQgZWxlbWVudCwgYXMgZGVmaW5lZCBieSBgaW5wdXRgLiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dEVsZW1lbnQ7XG4gIH1cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9pbnB1dE9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgICAgICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIHRoaXMgbG9naWMgYnkgYWRkaW5nIGEgdmFsdWUgcHJvcGVydHkgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudCAmJlxuICAgICAgICAgICFpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkgJiZcbiAgICAgICAgICBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgICAgIHRoaXMudmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpID8/IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9kYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4gPSByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2Fzc29jaWF0aW9uQ29udHJvbGxlciA9IG5ldyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Ib3N0Q29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmlkIHx8PSBgc2JiLWRhdGVwaWNrZXItJHsrK25leHRJZH1gO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgIW5hbWUgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnB1dCcpKSB7XG4gICAgICB0aGlzLl9hdHRhY2hJbnB1dCgpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3dpZGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlRmlsdGVyJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JylcbiAgICApIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJVcGRhdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWVBc0RhdGUnKSkge1xuICAgICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIG5vdyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGhhc0N1c3RvbU5vdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub3c7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGZpbmRJbnB1dCh0aGlzLCB0aGlzLmlucHV0LCAnaW5wdXQsc2JiLWRhdGUtaW5wdXQnKTtcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQgPT09IGlucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIGNvbnN0IGlzTmF0aXZlSW5wdXQgPSAhaXNEYXRlSW5wdXQoaW5wdXQpO1xuICAgIGlmIChpc05hdGl2ZUlucHV0ICYmIGltcG9ydC5tZXRhLmVudi5ERVYgJiYgIXdhcm5pbmdMb2dnZWQpIHtcbiAgICAgIHdhcm5pbmdMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVXNpbmcgPHNiYi1kYXRlcGlja2VyPiB3aXRoIGEgbmF0aXZlIDxpbnB1dD4gaXMgZGVwcmVjYXRlZC4gVXNlIGEgPHNiYi1kYXRlLWlucHV0PiBpbnN0ZWFkIG9mIDxpbnB1dD4uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/Lm9ic2VydmUoaW5wdXQsIHtcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ21pbicsICdtYXgnLCAndmFsdWUnXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaXNOYXRpdmVJbnB1dCkge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSAhaW5wdXQucGxhY2Vob2xkZXI7XG4gICAgICAgIGlucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgICBpbnB1dC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH07XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXQnLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIGZvcndhcmRFdmVudChlLCB0aGlzKTtcbiAgICAgICAgICB0aGlzLl9wYXJzZUlucHV0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXRDaGFuZ2UoKSwgb3B0aW9ucyk7XG4gICAgICB0aGlzLl9wYXJzZUlucHV0KHRydWUpO1xuICAgICAgdGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk7XG4gICAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICAgIHRoaXMuX2VtaXRJbnB1dFVwZGF0ZWQoKTtcbiAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRVcGRhdGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkb25seSwgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9ID0gdGhpcy5pbnB1dEVsZW1lbnQgPz8ge307XG4gICAgY29uc3QgbWluID0gKFxuICAgICAgbWluVmFsdWUgJiYgdHlwZW9mIG1pblZhbHVlICE9PSAnc3RyaW5nJyA/IHRoaXMuX2RhdGVBZGFwdGVyLnRvSXNvODYwMShtaW5WYWx1ZSkgOiBtaW5WYWx1ZVxuICAgICkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1heCA9IChcbiAgICAgIG1heFZhbHVlICYmIHR5cGVvZiBtYXhWYWx1ZSAhPT0gJ3N0cmluZycgPyB0aGlzLl9kYXRlQWRhcHRlci50b0lzbzg2MDEobWF4VmFsdWUpIDogbWF4VmFsdWVcbiAgICApIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7IGRpc2FibGVkLCByZWFkb25seSwgbWluLCBtYXggfSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgdGhpcy5fY2hhbmdlLmVtaXQoKTtcbiAgICB0aGlzLl9hc3NvY2lhdGlvbkNvbnRyb2xsZXI/LnVwZGF0ZUNvbnRyb2xzKCk7XG4gIH1cblxuICBwcml2YXRlIF90cnlBcHBseUZvcm1hdFRvSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudCB8fCBpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy52YWx1ZUFzRGF0ZSA/IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlISkgOiAnJztcbiAgICBpZiAoZm9ybWF0dGVkRGF0ZSAmJiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy5pbnB1dEVsZW1lbnQsIGZvcm1hdHRlZERhdGUpO1xuXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC52YWx1ZSB8fCB0aGlzLl9pc0RhdGVBdmFpbGFibGUoKTtcbiAgICBjb25zdCB3YXNWYWxpZCA9ICF0aGlzLmlucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICB0aGlzLmlucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgIGlmICh3YXNWYWxpZCAhPT0gaXNFbXB0eU9yVmFsaWQpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25DaGFuZ2UuZW1pdCh7IHZhbGlkOiBpc0VtcHR5T3JWYWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUlucHV0KGRlc2VyaWFsaXplQXNGYWxsYmFjayA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKGlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQhLnZhbHVlO1xuICAgIC8vIFdlIGFyZSBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhlIHByaXZhdGUgYmFja2luZyBwcm9wZXJ0eSBvZiB2YWx1ZUFzRGF0ZVxuICAgIC8vIGFzIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGJsdXIgZXZlbnQgZHVyaW5nIHRoaXMgdGltZS5cbiAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLm5vdyksXG4gICAgKTtcbiAgICBpZiAoZGVzZXJpYWxpemVBc0ZhbGxiYWNrICYmICF0aGlzLl92YWx1ZUFzRGF0ZSkge1xuICAgICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUxpdmVNZXNzYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxQYXJhZ3JhcGhFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MUGFyYWdyYXBoRWxlbWVudD4oJyNzdGF0dXMtY29udGFpbmVyJyk7XG5cbiAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50LmlubmVyVGV4dCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUsIHsgd2Vla2RheVN0eWxlOiAnbG9uZycgfSk7XG4gICAgICBjb250YWluZXJFbGVtZW50LmlubmVyVGV4dCA9IGAke2kxOG5EYXRlQ2hhbmdlZFRvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RhdGV9YDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8cCBpZD1cInN0YXR1cy1jb250YWluZXJcIiByb2xlPVwic3RhdHVzXCI+PC9wPmA7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYmVmb3JlIHRoZSBnaXZlbiBvbmUsXG4gICAqIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkgYW5kIGBtaW5gIHBhcmFtZXRlciAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlKS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlKGRhdGU6IFQpOiBUIHtcbiAgICBjb25zdCBwcmV2aW91c0RhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAtMSk7XG4gICAgY29uc3QgZGF0ZU1pbiA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHRoaXMuaW5wdXRFbGVtZW50Py5taW4pO1xuXG4gICAgaWYgKFxuICAgICAgIWRhdGVNaW4gfHxcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNaW4pICYmXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHByZXZpb3VzRGF0ZSwgZGF0ZU1pbikgPj0gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBwcmV2aW91c0RhdGU7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGFmdGVyIHRoZSBnaXZlbiBvbmUsXG4gICAqIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkgYW5kIGBtYXhgIHBhcmFtZXRlciAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlKS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBmaW5kTmV4dEF2YWlsYWJsZURhdGUoZGF0ZTogVCk6IFQge1xuICAgIGNvbnN0IG5leHREYXRlID0gdGhpcy5fZmluZEF2YWlsYWJsZURhdGUoZGF0ZSwgMSk7XG4gICAgY29uc3QgZGF0ZU1heCA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHRoaXMuaW5wdXRFbGVtZW50Py5tYXgpO1xuXG4gICAgaWYgKFxuICAgICAgIWRhdGVNYXggfHxcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNYXgpICYmIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKG5leHREYXRlLCBkYXRlTWF4KSA8PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5leHREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgb3IgYWZ0ZXIgYSBnaXZlbiBvbmUsIGNvbnNpZGVyaW5nIHRoZSBgZGF0ZUZpbHRlcmAgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQsIGRlbHRhOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgYXZhaWxhYmxlRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgICBpZiAodGhpcy5kYXRlRmlsdGVyKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuZGF0ZUZpbHRlcihhdmFpbGFibGVEYXRlKSkge1xuICAgICAgICBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGF2YWlsYWJsZURhdGUsIGRlbHRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmFsdWVBc0RhdGUgaXMgdmFsaWQsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAgICogYW5kIGBtaW5gIGFuZCBgbWF4YCBwYXJhbWV0ZXJzIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGVzKS5cbiAgICovXG4gIHByaXZhdGUgX2lzRGF0ZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1pbik7XG4gICAgY29uc3QgZGF0ZU1heCA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHRoaXMuaW5wdXRFbGVtZW50Py5tYXgpO1xuXG4gICAgaWYgKFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1pbiEpIDwgMCkgfHxcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNYXgpICYmXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMudmFsdWVBc0RhdGUsIGRhdGVNYXghKSA+IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZpbHRlcj8uKHRoaXMudmFsdWVBc0RhdGUpID8/IHRydWU7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyJzogU2JiRGF0ZXBpY2tlckVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBpbnB1dFVwZGF0ZWQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiRGF0ZXBpY2tlckVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1Q2dCLFNBQUEsY0FDZCxTQUNBLFNBQThCOztBQUU5QixNQUFJLENBQUMsU0FBUztBQUNaLFlBQU8sbUJBQ0osWUFESSxpQ0FDTSxzQkFETixtQkFFSCxjQUF1QztBQUFBLEVBQWdCO0FBRzdELFNBQU8sc0JBQStDLE9BQU87QUFDL0Q7QUFLTyxNQUFNLDBDQUEwQyxNQUNyRCxJQUFJLFlBQVksK0JBQStCO0FBQUEsRUFDN0MsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUNYLENBQUE7QUFFSCxJQUFJLFNBQVM7QUFDYixJQUFJLGdCQUFnQjtBQUNwQixNQUFNLGNBQWMsQ0FDbEIsYUFDc0MsbUNBQVMsZUFBYztJQWF6RCx3QkFBb0IsTUFBQTs7MEJBRHpCLGNBQWMsZ0JBQWdCLENBQUM7Ozs7b0JBQ2E7Ozs7Ozs7Ozs7Ozs7O0FBQVJBLE1BQUFBLHlCQUFBLG1CQUFRLFlBQVU7QUFBQSxJQTRJckQsY0FBQTs7O0FBaElBO0FBeUJZO0FBZ0RIO0FBckZMLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsMEJBQUEsR0FZNEIsa0JBQUEsTUFBQSxvQkFBQSxLQUFLO0FBaUI3QixXQUFBLGNBQTBDLGtCQUFBLE1BQUEsdUJBQUE7QUFRdEIseUJBQUEseUJBQUEsa0JBQUEsTUFBQSxxQkFBcUMsSUFBSTtBQWE3RCxXQUFBLE9BQWdCLGtCQUFBLE1BQUEsd0JBQUE7QUFtQ0UseUJBQUEsaUNBQUEsa0JBQUEsTUFBQSw2QkFBa0UsSUFBSTtBQUdqRixXQUFBLFdBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFpQixJQUFJLGFBQWEsTUFBTUEsc0JBQXFCLE9BQU8sUUFBUTtBQUFBLFFBQ3pGLFNB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAEV,wBAAwB;IACxB,SAAoE,QAAQ,EACxE,QAAQ,GACR,aAAa,CAAY;IAM7B,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;;IAStD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAmCnB,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/elements/dialog/dialog/dialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1E,OAAO,EAAe,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMtE,OAAO,6BAA6B,CAAC;AAIrC;;;;;;;;;;;GAWG;AACH,qBAEM,gBAAiB,SAAQ,qBAAqB;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,6BAA6B;IAC7B,SAA4D,cAAc,EAAE,OAAO,GAAG,MAAM,CAClF;IAEV,wBAAwB;IACxB,SAAoE,QAAQ,EACxE,QAAQ,GACR,aAAa,CAAY;IAM7B,OAAO,CAAC,4BAA4B,CAIjC;IAEH,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAsB;;IAStD,2BAA2B;IACpB,IAAI,IAAI,IAAI;IAmCnB,SAAS,CAAC,uBAAuB,IAAI,OAAO;IAI5C,SAAS,CAAC,aAAa,IAAI,IAAI;IA2B/B,OAAO,CAAC,cAAc;cAgBH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAO3D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,uBAAuB,IAAI,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAS5D,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,oBAAoB,CAS1B;IAGF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;cAMf,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
|