@sbb-esta/lyne-elements 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/common/button-common.d.ts.map +1 -1
- package/button/common.js +20 -20
- package/button/mini-button/mini-button.d.ts +0 -1
- package/button/mini-button/mini-button.d.ts.map +1 -1
- package/button/mini-button.js +16 -18
- package/calendar/calendar.d.ts.map +1 -1
- package/calendar.js +22 -20
- package/checkbox/checkbox/checkbox.d.ts +0 -1
- package/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/checkbox/checkbox-group.js +5 -3
- package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
- package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/checkbox/checkbox-panel.js +12 -11
- package/checkbox/checkbox.js +12 -11
- package/core/datetime/date-adapter.d.ts +23 -13
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.d.ts +0 -1
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime.js +23 -23
- package/core/decorators/host-attributes.d.ts +1 -1
- package/core/decorators/slot-state.d.ts +18 -0
- package/core/decorators/slot-state.d.ts.map +1 -0
- package/core/decorators.d.ts +1 -0
- package/core/decorators.d.ts.map +1 -1
- package/core/decorators.js +15 -9
- package/core/styles/mixins/buttons.scss +15 -48
- package/custom-elements.json +463 -302
- package/datepicker/common/datepicker-button.d.ts +5 -5
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common.js +21 -20
- package/datepicker/datepicker/datepicker.d.ts +55 -38
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -1
- package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
- package/datepicker/datepicker-next-day.js +16 -16
- package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -1
- package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
- package/datepicker/datepicker-previous-day.js +14 -14
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/datepicker/datepicker-toggle.js +25 -23
- package/datepicker/datepicker.js +147 -181
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/button/common.js +30 -25
- package/development/button/mini-button/mini-button.d.ts +0 -1
- package/development/button/mini-button/mini-button.d.ts.map +1 -1
- package/development/button/mini-button.js +17 -55
- package/development/calendar/calendar.d.ts.map +1 -1
- package/development/calendar.js +4 -2
- package/development/checkbox/checkbox/checkbox.d.ts +0 -1
- package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/development/checkbox/checkbox-group.js +6 -5
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel.js +5 -5
- package/development/checkbox/checkbox.js +5 -5
- package/development/core/datetime/date-adapter.d.ts +23 -13
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.d.ts +0 -1
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime.js +28 -26
- package/development/core/decorators/host-attributes.d.ts +1 -1
- package/development/core/decorators/slot-state.d.ts +18 -0
- package/development/core/decorators/slot-state.d.ts.map +1 -0
- package/development/core/decorators.d.ts +1 -0
- package/development/core/decorators.d.ts.map +1 -1
- package/development/core/decorators.js +11 -2
- package/development/datepicker/common/datepicker-button.d.ts +5 -5
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common.js +10 -9
- package/development/datepicker/datepicker/datepicker.d.ts +55 -38
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day.js +14 -54
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -1
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
- package/development/datepicker/datepicker-previous-day.js +14 -54
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle.js +16 -10
- package/development/datepicker/datepicker.js +134 -159
- package/development/dialog/dialog.js +1 -1
- package/development/file-selector/file-selector.d.ts +0 -1
- package/development/file-selector/file-selector.d.ts.map +1 -1
- package/development/file-selector.js +6 -5
- package/development/form-field/form-field/form-field.d.ts +1 -2
- package/development/form-field/form-field/form-field.d.ts.map +1 -1
- package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
- package/development/form-field/form-field-clear.js +15 -51
- package/development/form-field/form-field.js +8 -7
- package/development/link/common/link-common.d.ts.map +1 -1
- package/development/link/common.js +6 -7
- package/development/link-list/link-list.d.ts +0 -1
- package/development/link-list/link-list.d.ts.map +1 -1
- package/development/link-list.js +5 -5
- package/development/map-container.js +5 -2
- package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
- package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
- package/development/navigation/navigation-list.js +5 -5
- package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
- package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
- package/development/navigation/navigation-section.js +6 -6
- package/development/notification/notification.d.ts +5 -16
- package/development/notification/notification.d.ts.map +1 -1
- package/development/notification.js +8 -9
- package/development/option/option/option.d.ts.map +1 -1
- package/development/option/option.js +5 -5
- package/development/popover/popover/popover.d.ts +3 -1
- package/development/popover/popover/popover.d.ts.map +1 -1
- package/development/popover/popover-trigger.js +14 -49
- package/development/popover/popover.js +11 -4
- package/development/radio-button/radio-button/radio-button.d.ts +0 -1
- package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +6 -6
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel.js +4 -7
- package/development/radio-button/radio-button.js +4 -7
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/development/selection-expansion-panel.js +6 -5
- package/development/skiplink-list/skiplink-list.d.ts +0 -1
- package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
- package/development/skiplink-list.js +5 -5
- package/development/status/status.d.ts +0 -1
- package/development/status/status.d.ts.map +1 -1
- package/development/status.js +5 -5
- package/development/stepper/stepper/stepper.d.ts +3 -1
- package/development/stepper/stepper/stepper.d.ts.map +1 -1
- package/development/stepper/stepper.js +3 -2
- package/development/tabs/tab-group/tab-group.d.ts +3 -1
- package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/development/tabs/tab-group.js +3 -2
- package/development/tabs/tab-label/tab-label.d.ts +0 -1
- package/development/tabs/tab-label/tab-label.d.ts.map +1 -1
- package/development/tabs/tab-label.js +5 -5
- package/development/tag/tag/tag.d.ts +0 -1
- package/development/tag/tag/tag.d.ts.map +1 -1
- package/development/tag/tag.js +6 -5
- package/development/teaser/teaser.d.ts +0 -1
- package/development/teaser/teaser.d.ts.map +1 -1
- package/development/teaser.js +5 -5
- package/development/toast/toast.d.ts +1 -2
- package/development/toast/toast.d.ts.map +1 -1
- package/development/toast.js +10 -8
- package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
- package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
- package/development/toggle/toggle-option.js +6 -6
- package/development/toggle-check/toggle-check.d.ts +0 -1
- package/development/toggle-check/toggle-check.d.ts.map +1 -1
- package/development/toggle-check.js +5 -5
- package/dialog/dialog.js +1 -1
- package/file-selector/file-selector.d.ts +0 -1
- package/file-selector/file-selector.d.ts.map +1 -1
- package/file-selector.js +17 -15
- package/form-field/form-field/form-field.d.ts +1 -2
- package/form-field/form-field/form-field.d.ts.map +1 -1
- package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
- package/form-field/form-field-clear.js +17 -18
- package/form-field/form-field.js +16 -14
- package/link/common/link-common.d.ts.map +1 -1
- package/link/common.js +9 -9
- package/link-list/link-list.d.ts +0 -1
- package/link-list/link-list.d.ts.map +1 -1
- package/link-list.js +8 -7
- package/map-container.js +1 -1
- package/navigation/navigation-list/navigation-list.d.ts +0 -1
- package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
- package/navigation/navigation-list.js +9 -8
- package/navigation/navigation-section/navigation-section.d.ts +0 -1
- package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
- package/navigation/navigation-section.js +10 -9
- package/notification/notification.d.ts +5 -16
- package/notification/notification.d.ts.map +1 -1
- package/notification.js +9 -9
- package/option/option/option.d.ts.map +1 -1
- package/option/option.js +6 -5
- package/package.json +1 -1
- package/popover/popover/popover.d.ts +3 -1
- package/popover/popover/popover.d.ts.map +1 -1
- package/popover/popover-trigger.js +13 -13
- package/popover/popover.js +55 -48
- package/radio-button/radio-button/radio-button.d.ts +0 -1
- package/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +7 -6
- package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
- package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/radio-button/radio-button-panel.js +12 -14
- package/radio-button/radio-button.js +7 -9
- package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
- package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/selection-expansion-panel.js +15 -13
- package/skiplink-list/skiplink-list.d.ts +0 -1
- package/skiplink-list/skiplink-list.d.ts.map +1 -1
- package/skiplink-list.js +4 -3
- package/status/status.d.ts +0 -1
- package/status/status.d.ts.map +1 -1
- package/status.js +9 -8
- package/stepper/stepper/stepper.d.ts +3 -1
- package/stepper/stepper/stepper.d.ts.map +1 -1
- package/stepper/stepper.js +7 -6
- package/tabs/tab-group/tab-group.d.ts +3 -1
- package/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/tabs/tab-group.js +14 -13
- package/tabs/tab-label/tab-label.d.ts +0 -1
- package/tabs/tab-label/tab-label.d.ts.map +1 -1
- package/tabs/tab-label.js +4 -3
- package/tag/tag/tag.d.ts +0 -1
- package/tag/tag/tag.d.ts.map +1 -1
- package/tag/tag.js +6 -4
- package/teaser/teaser.d.ts +0 -1
- package/teaser/teaser.d.ts.map +1 -1
- package/teaser.js +4 -3
- package/toast/toast.d.ts +1 -2
- package/toast/toast.d.ts.map +1 -1
- package/toast.js +15 -12
- package/toggle/toggle-option/toggle-option.d.ts +0 -1
- package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
- package/toggle/toggle-option.js +12 -11
- package/toggle-check/toggle-check.d.ts +0 -1
- package/toggle-check/toggle-check.d.ts.map +1 -1
- package/toggle-check.js +4 -3
|
@@ -48,12 +48,10 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
48
48
|
if (kind && result) __defProp(target, key, result);
|
|
49
49
|
return result;
|
|
50
50
|
};
|
|
51
|
-
const FORMAT_DATE = /(^0?[1-9]?|[12]?[0-9]?|3?[01]?)[.,\\/\-\s](0?[1-9]?|1?[0-2]?)?[.,\\/\-\s](\d{1,4}$)?/;
|
|
52
51
|
function getDatePicker(element, trigger) {
|
|
53
|
-
var _a;
|
|
52
|
+
var _a, _b;
|
|
54
53
|
if (!trigger) {
|
|
55
|
-
|
|
56
|
-
return parent == null ? void 0 : parent.querySelector("sbb-datepicker");
|
|
54
|
+
return (_b = (_a = element.closest) == null ? void 0 : _a.call(element, "sbb-form-field")) == null ? void 0 : _b.querySelector("sbb-datepicker");
|
|
57
55
|
}
|
|
58
56
|
return findReferencedElement(trigger);
|
|
59
57
|
}
|
|
@@ -83,7 +81,8 @@ function findNextAvailableDate(date, dateFilter, dateAdapter, max) {
|
|
|
83
81
|
return date;
|
|
84
82
|
}
|
|
85
83
|
function isDateAvailable(date, dateFilter, min, max) {
|
|
86
|
-
|
|
84
|
+
var _a;
|
|
85
|
+
const dateAdapter = ((_a = readConfig().datetime) == null ? void 0 : _a.dateAdapter) ?? defaultDateAdapter;
|
|
87
86
|
const dateMin = dateAdapter.deserialize(min);
|
|
88
87
|
const dateMax = dateAdapter.deserialize(max);
|
|
89
88
|
if (dateAdapter.isValid(dateMin) && dateAdapter.compareDate(date, dateMin) < 0 || dateAdapter.isValid(dateMax) && dateAdapter.compareDate(date, dateMax) > 0) {
|
|
@@ -101,7 +100,6 @@ let SbbDatepickerElement = class extends LitElement {
|
|
|
101
100
|
super(...arguments);
|
|
102
101
|
this.wide = false;
|
|
103
102
|
this.dateFilter = () => true;
|
|
104
|
-
this._now = null;
|
|
105
103
|
this._didChange = new EventEmitter(this, SbbDatepickerElement.events.didChange, {
|
|
106
104
|
bubbles: true,
|
|
107
105
|
cancelable: true
|
|
@@ -126,16 +124,24 @@ let SbbDatepickerElement = class extends LitElement {
|
|
|
126
124
|
this,
|
|
127
125
|
SbbDatepickerElement.events.validationChange
|
|
128
126
|
);
|
|
129
|
-
this.
|
|
130
|
-
this.
|
|
127
|
+
this._inputElement = null;
|
|
128
|
+
this._inputElementPlaceholderMutable = false;
|
|
129
|
+
this._inputObserver = new AgnosticMutationObserver((mutationsList) => {
|
|
130
|
+
this._emitInputUpdated();
|
|
131
|
+
if (this._inputElement && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
|
|
132
|
+
const value = this._inputElement.getAttribute("value");
|
|
133
|
+
this.valueAsDate = this._dateAdapter.parse(value, this.now) ?? value;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
131
136
|
this._dateAdapter = ((_a = readConfig().datetime) == null ? void 0 : _a.dateAdapter) ?? defaultDateAdapter;
|
|
132
137
|
this._abort = new SbbConnectedAbortController(this);
|
|
133
138
|
this._language = new SbbLanguageController(this).withHandler(() => {
|
|
134
139
|
if (this._inputElement) {
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
140
|
+
if (this._inputElementPlaceholderMutable) {
|
|
141
|
+
this._inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
142
|
+
}
|
|
143
|
+
if (this.valueAsDate) {
|
|
144
|
+
this._inputElement.value = this._format(this.valueAsDate);
|
|
139
145
|
}
|
|
140
146
|
}
|
|
141
147
|
});
|
|
@@ -146,107 +152,36 @@ let SbbDatepickerElement = class extends LitElement {
|
|
|
146
152
|
get now() {
|
|
147
153
|
return this._now ?? this._dateAdapter.today();
|
|
148
154
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
set _inputElement(value) {
|
|
153
|
-
const oldValue = this._inputElementState;
|
|
154
|
-
this._inputElementState = value;
|
|
155
|
-
this._registerInputElement(this._inputElementState, oldValue);
|
|
156
|
-
}
|
|
157
|
-
_findInput(newValue, oldValue) {
|
|
158
|
-
if (newValue !== oldValue) {
|
|
159
|
-
this._inputElement = findInput(this, this.input);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
_registerInputElement(newValue, oldValue) {
|
|
163
|
-
var _a, _b;
|
|
164
|
-
if (newValue !== oldValue) {
|
|
165
|
-
(_a = this._datePickerController) == null ? void 0 : _a.abort();
|
|
166
|
-
this._datePickerController = new AbortController();
|
|
167
|
-
if (!this._inputElement) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
(_b = this._inputObserver) == null ? void 0 : _b.disconnect();
|
|
171
|
-
this._inputObserver.observe(this._inputElement, {
|
|
172
|
-
attributeFilter: ["disabled", "readonly", "min", "max", "value"]
|
|
173
|
-
});
|
|
174
|
-
this._inputElement.type = "text";
|
|
175
|
-
if (!this._inputElement.placeholder) {
|
|
176
|
-
this._inputElement.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
177
|
-
}
|
|
178
|
-
this._inputElement.addEventListener(
|
|
179
|
-
"change",
|
|
180
|
-
(event) => {
|
|
181
|
-
if (!(event instanceof CustomEvent)) {
|
|
182
|
-
this._valueChanged(event);
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
signal: this._datePickerController.signal
|
|
187
|
-
}
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/** Gets the input value with the correct date format. */
|
|
192
|
-
getValueAsDate() {
|
|
193
|
-
if (this._inputElement && this._inputElement.value) {
|
|
194
|
-
return this._parse(this._inputElement.value);
|
|
195
|
-
}
|
|
196
|
-
return void 0;
|
|
197
|
-
}
|
|
198
|
-
/** Set the input value to the correctly formatted value. */
|
|
199
|
-
setValueAsDate(date) {
|
|
200
|
-
const parsedDate = date instanceof Date ? date : new Date(date);
|
|
201
|
-
if (this._inputElement) {
|
|
202
|
-
this._formatAndUpdateValue(this._inputElement.value, parsedDate);
|
|
155
|
+
set valueAsDate(value) {
|
|
156
|
+
this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
|
|
157
|
+
if (this._tryApplyFormatToInput()) {
|
|
203
158
|
this._inputElement.dispatchEvent(new Event("blur", { composed: true }));
|
|
204
159
|
}
|
|
205
160
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
* Whether a custom now is configured.
|
|
209
|
-
*/
|
|
210
|
-
hasCustomNow() {
|
|
211
|
-
return !!this._now;
|
|
212
|
-
}
|
|
213
|
-
_onInputPropertiesChange(mutationsList) {
|
|
214
|
-
var _a, _b, _c, _d;
|
|
215
|
-
this._inputUpdated.emit({
|
|
216
|
-
disabled: (_a = this._inputElement) == null ? void 0 : _a.disabled,
|
|
217
|
-
readonly: (_b = this._inputElement) == null ? void 0 : _b.readOnly,
|
|
218
|
-
min: (_c = this._inputElement) == null ? void 0 : _c.min,
|
|
219
|
-
max: (_d = this._inputElement) == null ? void 0 : _d.max
|
|
220
|
-
});
|
|
221
|
-
if (this._inputElement && mutationsList && Array.from(mutationsList).some((e) => e.attributeName === "value")) {
|
|
222
|
-
this._inputElement.value = this._getValidValue(this._inputElement.getAttribute("value"));
|
|
223
|
-
}
|
|
161
|
+
get valueAsDate() {
|
|
162
|
+
return this._valueAsDate ?? null;
|
|
224
163
|
}
|
|
225
164
|
connectedCallback() {
|
|
226
165
|
super.connectedCallback();
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
signal
|
|
166
|
+
this.addEventListener("datepickerControlRegistered", () => this._emitInputUpdated(), {
|
|
167
|
+
signal: this._abort.signal
|
|
230
168
|
});
|
|
231
|
-
this.
|
|
169
|
+
this._attachInput();
|
|
232
170
|
if (this._inputElement) {
|
|
233
|
-
this.
|
|
234
|
-
this._inputUpdated.emit({
|
|
235
|
-
disabled: this._inputElement.disabled,
|
|
236
|
-
readonly: this._inputElement.readOnly,
|
|
237
|
-
min: this._inputElement.min,
|
|
238
|
-
max: this._inputElement.max
|
|
239
|
-
});
|
|
171
|
+
this._emitInputUpdated();
|
|
240
172
|
}
|
|
241
173
|
}
|
|
242
174
|
willUpdate(changedProperties) {
|
|
243
175
|
super.willUpdate(changedProperties);
|
|
244
176
|
if (changedProperties.has("input")) {
|
|
245
|
-
this.
|
|
177
|
+
this._attachInput();
|
|
246
178
|
}
|
|
247
179
|
if (changedProperties.has("wide") || changedProperties.has("dateFilter") || changedProperties.has("now")) {
|
|
248
180
|
this._datePickerUpdated.emit();
|
|
249
181
|
}
|
|
182
|
+
if (changedProperties.has("valueAsDate")) {
|
|
183
|
+
this._setAriaLiveMessage();
|
|
184
|
+
}
|
|
250
185
|
}
|
|
251
186
|
disconnectedCallback() {
|
|
252
187
|
var _a, _b;
|
|
@@ -256,86 +191,123 @@ let SbbDatepickerElement = class extends LitElement {
|
|
|
256
191
|
}
|
|
257
192
|
firstUpdated(changedProperties) {
|
|
258
193
|
super.firstUpdated(changedProperties);
|
|
259
|
-
this._setAriaLiveMessage(
|
|
194
|
+
this._setAriaLiveMessage();
|
|
260
195
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
196
|
+
/**
|
|
197
|
+
* Gets the input value with the correct date format.
|
|
198
|
+
* @deprecated Use property valueAsDate instead.
|
|
199
|
+
*/
|
|
200
|
+
getValueAsDate() {
|
|
201
|
+
return this.valueAsDate ?? void 0;
|
|
264
202
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
203
|
+
/**
|
|
204
|
+
* Set the input value to the correctly formatted value.
|
|
205
|
+
* @deprecated Use property valueAsDate instead.
|
|
206
|
+
*/
|
|
207
|
+
setValueAsDate(date) {
|
|
208
|
+
this.valueAsDate = date;
|
|
268
209
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
210
|
+
/**
|
|
211
|
+
* @internal
|
|
212
|
+
* Whether a custom now is configured.
|
|
213
|
+
*/
|
|
214
|
+
hasCustomNow() {
|
|
215
|
+
return !!this._now;
|
|
272
216
|
}
|
|
273
|
-
|
|
274
|
-
_formatAndUpdateValue(value, valueAsDate) {
|
|
217
|
+
_attachInput() {
|
|
275
218
|
var _a, _b;
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this.
|
|
286
|
-
|
|
287
|
-
|
|
219
|
+
const input = findInput(this, this.input);
|
|
220
|
+
if (this._inputElement === input) {
|
|
221
|
+
return;
|
|
222
|
+
} else if (this._inputElement) {
|
|
223
|
+
(_a = this._datePickerController) == null ? void 0 : _a.abort();
|
|
224
|
+
(_b = this._inputObserver) == null ? void 0 : _b.disconnect();
|
|
225
|
+
}
|
|
226
|
+
this._inputElement = input;
|
|
227
|
+
if (input) {
|
|
228
|
+
this._datePickerController = new AbortController();
|
|
229
|
+
this._inputObserver.observe(input, {
|
|
230
|
+
attributeFilter: ["disabled", "readonly", "min", "max", "value"]
|
|
231
|
+
});
|
|
232
|
+
this._inputElementPlaceholderMutable = !input.placeholder;
|
|
233
|
+
input.type = "text";
|
|
234
|
+
if (this._inputElementPlaceholderMutable) {
|
|
235
|
+
input.placeholder = i18nDatePickerPlaceholder[this._language.current];
|
|
288
236
|
}
|
|
289
|
-
this.
|
|
237
|
+
const options = { signal: this._datePickerController.signal };
|
|
238
|
+
input.addEventListener("input", () => this._parseInput(), options);
|
|
239
|
+
input.addEventListener("change", () => this._handleInputChange(), options);
|
|
240
|
+
this._parseInput(true);
|
|
241
|
+
this._tryApplyFormatToInput();
|
|
242
|
+
this._validateDate();
|
|
290
243
|
}
|
|
291
244
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
this.
|
|
245
|
+
_emitInputUpdated() {
|
|
246
|
+
const { disabled, readOnly: readonly, min, max } = this._inputElement ?? {};
|
|
247
|
+
this._inputUpdated.emit({ disabled, readonly, min, max });
|
|
248
|
+
}
|
|
249
|
+
_handleInputChange() {
|
|
250
|
+
if (this._tryApplyFormatToInput()) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
this._validateDate();
|
|
254
|
+
this._setAriaLiveMessage();
|
|
295
255
|
this._change.emit();
|
|
296
256
|
this._didChange.emit();
|
|
297
|
-
|
|
257
|
+
}
|
|
258
|
+
_tryApplyFormatToInput() {
|
|
259
|
+
if (!this._inputElement) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
const formattedDate = this.valueAsDate ? this._format(this.valueAsDate) : "";
|
|
263
|
+
if (formattedDate && this._inputElement.value !== formattedDate) {
|
|
264
|
+
this._inputElement.value = formattedDate;
|
|
298
265
|
this._inputElement.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
|
|
299
|
-
this._inputElement.dispatchEvent(
|
|
300
|
-
|
|
301
|
-
);
|
|
266
|
+
this._inputElement.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
|
|
267
|
+
return true;
|
|
302
268
|
}
|
|
269
|
+
return false;
|
|
303
270
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
271
|
+
_validateDate() {
|
|
272
|
+
var _a, _b;
|
|
273
|
+
if (!this._inputElement) {
|
|
274
|
+
return;
|
|
307
275
|
}
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
276
|
+
const isEmptyOrValid = !this._inputElement.value || !!this.valueAsDate && isDateAvailable(
|
|
277
|
+
this.valueAsDate,
|
|
278
|
+
this.dateFilter,
|
|
279
|
+
(_a = this._inputElement) == null ? void 0 : _a.min,
|
|
280
|
+
(_b = this._inputElement) == null ? void 0 : _b.max
|
|
281
|
+
);
|
|
282
|
+
const wasValid = !this._inputElement.hasAttribute("data-sbb-invalid");
|
|
283
|
+
this._inputElement.toggleAttribute("data-sbb-invalid", !isEmptyOrValid);
|
|
284
|
+
if (wasValid !== isEmptyOrValid) {
|
|
285
|
+
this._validationChange.emit({ valid: isEmptyOrValid });
|
|
315
286
|
}
|
|
316
|
-
return value;
|
|
317
287
|
}
|
|
318
|
-
|
|
319
|
-
|
|
288
|
+
_parseInput(deserializeAsFallback = false) {
|
|
289
|
+
const value = this._inputElement.value;
|
|
290
|
+
const parse = this.dateParser ?? ((v) => this._dateAdapter.parse(v, this.now));
|
|
291
|
+
this._valueAsDate = this._dateAdapter.getValidDateOrNull(parse(value));
|
|
292
|
+
if (deserializeAsFallback && !this._valueAsDate) {
|
|
293
|
+
this._valueAsDate = this._dateAdapter.getValidDateOrNull(
|
|
294
|
+
this._dateAdapter.deserialize(value)
|
|
295
|
+
);
|
|
296
|
+
}
|
|
320
297
|
}
|
|
321
298
|
_format(date) {
|
|
322
299
|
return this.format ? this.format(date) : this._dateAdapter.format(date);
|
|
323
300
|
}
|
|
324
|
-
_setAriaLiveMessage(
|
|
301
|
+
_setAriaLiveMessage() {
|
|
325
302
|
var _a, _b;
|
|
326
|
-
const ariaLiveFormatter = new Intl.DateTimeFormat(`${this._language.current}-CH`, {
|
|
327
|
-
weekday: "long"
|
|
328
|
-
});
|
|
329
|
-
const dateFormatter = new Intl.DateTimeFormat("de-CH", {
|
|
330
|
-
day: "2-digit",
|
|
331
|
-
month: "2-digit",
|
|
332
|
-
year: "numeric"
|
|
333
|
-
});
|
|
334
303
|
const containerElement = (_b = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector) == null ? void 0 : _b.call(_a, "#status-container");
|
|
335
|
-
if (containerElement) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
304
|
+
if (!containerElement) {
|
|
305
|
+
return;
|
|
306
|
+
} else if (!this.valueAsDate) {
|
|
307
|
+
containerElement.innerText = "";
|
|
308
|
+
} else {
|
|
309
|
+
const date = this._dateAdapter.format(this.valueAsDate, { weekdayStyle: "long" });
|
|
310
|
+
containerElement.innerText = `${i18nDateChangedTo[this._language.current]} ${date}`;
|
|
339
311
|
}
|
|
340
312
|
}
|
|
341
313
|
render() {
|
|
@@ -354,13 +326,13 @@ __decorateClass([
|
|
|
354
326
|
property({ type: Boolean })
|
|
355
327
|
], SbbDatepickerElement.prototype, "wide", 2);
|
|
356
328
|
__decorateClass([
|
|
357
|
-
property({ attribute:
|
|
329
|
+
property({ attribute: false })
|
|
358
330
|
], SbbDatepickerElement.prototype, "dateFilter", 2);
|
|
359
331
|
__decorateClass([
|
|
360
|
-
property({ attribute:
|
|
332
|
+
property({ attribute: false })
|
|
361
333
|
], SbbDatepickerElement.prototype, "dateParser", 2);
|
|
362
334
|
__decorateClass([
|
|
363
|
-
property()
|
|
335
|
+
property({ attribute: false })
|
|
364
336
|
], SbbDatepickerElement.prototype, "format", 2);
|
|
365
337
|
__decorateClass([
|
|
366
338
|
property()
|
|
@@ -368,9 +340,12 @@ __decorateClass([
|
|
|
368
340
|
__decorateClass([
|
|
369
341
|
property()
|
|
370
342
|
], SbbDatepickerElement.prototype, "now", 1);
|
|
343
|
+
__decorateClass([
|
|
344
|
+
property({ attribute: false })
|
|
345
|
+
], SbbDatepickerElement.prototype, "valueAsDate", 1);
|
|
371
346
|
__decorateClass([
|
|
372
347
|
state()
|
|
373
|
-
], SbbDatepickerElement.prototype, "_inputElement",
|
|
348
|
+
], SbbDatepickerElement.prototype, "_inputElement", 2);
|
|
374
349
|
SbbDatepickerElement = __decorateClass([
|
|
375
350
|
customElement("sbb-datepicker")
|
|
376
351
|
], SbbDatepickerElement);
|
|
@@ -383,4 +358,4 @@ export {
|
|
|
383
358
|
getDatePicker,
|
|
384
359
|
isDateAvailable
|
|
385
360
|
};
|
|
386
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKF4wP1sxLTldP3xbMTJdP1swLTldP3wzP1swMV0/KVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldP3wxP1swLTJdPyk/Wy4sXFxcXC9cXC1cXHNdKFxcZHsxLDR9JCk/LztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcihcbiAgZWxlbWVudDogU2JiRGF0ZXBpY2tlckJ1dHRvbiB8IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQsXG4pOiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICByZXR1cm4gcGFyZW50Py5xdWVyeVNlbGVjdG9yKCdzYmItZGF0ZXBpY2tlcicpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxTYmJEYXRlcGlja2VyRWxlbWVudD4odHJpZ2dlcik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZW4gb25lLCBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5LlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkZWx0YSBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkL3N1YnRyYWN0IGZyb20gdGhlIHN0YXJ0aW5nIG9uZS5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgZGVsdGE6IG51bWJlcixcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPixcbik6IERhdGUge1xuICBsZXQgYXZhaWxhYmxlRGF0ZSA9IGRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgaWYgKGRhdGVGaWx0ZXIpIHtcbiAgICB3aGlsZSAoIWRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgIGF2YWlsYWJsZURhdGUgPSBkYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdmFpbGFibGVEYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtaW46IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgcHJldmlvdXNEYXRlID0gZ2V0QXZhaWxhYmxlRGF0ZShkYXRlLCAtMSwgZGF0ZUZpbHRlciwgZGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBkYXRlTWluID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWluKTtcblxuICBpZiAoXG4gICAgIWRhdGVNaW4gfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShwcmV2aW91c0RhdGUsIGRhdGVNaW4pID49IDApXG4gICkge1xuICAgIHJldHVybiBwcmV2aW91c0RhdGU7XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAqIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkgYW5kIGBtYXhgIHBhcmFtZXRlciAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlKS5cbiAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gKiBAcGFyYW0gZGF0ZUZpbHRlciBUaGUgZGF0ZUZpbHRlciBmdW5jdGlvbiBmcm9tIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSBkYXRlQWRhcHRlciBUaGUgYWRhcHRlciBjbGFzcy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5leHRBdmFpbGFibGVEYXRlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwsXG4pOiBEYXRlIHtcbiAgY29uc3QgbmV4dERhdGUgPSBnZXRBdmFpbGFibGVEYXRlKGRhdGUsIDEsIGRhdGVGaWx0ZXIsIGRhdGVBZGFwdGVyKTtcbiAgY29uc3QgZGF0ZU1heCA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1heCk7XG5cbiAgaWYgKFxuICAgICFkYXRlTWF4IHx8XG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICkge1xuICAgIHJldHVybiBuZXh0RGF0ZTtcbiAgfVxuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgYSB2YWxpZCBvbmUsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHlcbiAqIGFuZCBgbWluYCBhbmQgYG1heGAgcGFyYW1ldGVycyAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlcykuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIHRvIGNvbnNpZGVyIGluIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlQXZhaWxhYmxlKFxuICBkYXRlOiBEYXRlLFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgLy8gVE9ETzogR2V0IGRhdGUgYWRhcHRlciBmcm9tIGNvbmZpZ1xuICBjb25zdCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RGF0ZT4gPSBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG4gIGNvbnN0IGRhdGVNaW4gPSBkYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShtaW4pO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUoZGF0ZSwgZGF0ZU1pbiEpIDwgMCkgfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCBkYXRlTWF4ISkgPiAwKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0ZUZpbHRlciA/IGRhdGVGaWx0ZXIoZGF0ZSkgOiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5ID0gKCk6IEN1c3RvbUV2ZW50ID0+XG4gIG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkJywge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNvbXBvc2VkOiB0cnVlLFxuICB9KTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyB0aGUgaW5wdXQncyB2YWx1ZSBhcyBhIGZvcm1hdHRlZCBkYXRlLlxuICpcbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENoYW5nZSAtIERlcHJlY2F0ZWQuIHVzZWQgZm9yIFJlYWN0LiBXaWxsIHByb2JhYmx5IGJlIHJlbW92ZWQgb25jZSBSZWFjdCAxOSBpcyBhdmFpbGFibGUuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZGF0ZXBpY2tlcicpXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlckVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGRpZENoYW5nZTogJ2RpZENoYW5nZScsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgd2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1maWx0ZXInIH0pIHB1YmxpYyBkYXRlRmlsdGVyOiAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IGJvb2xlYW4gPSAoKSA9PlxuICAgIHRydWU7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBwYXJzZSBzdHJpbmcgdmFsdWUgaW50byBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZS1wYXJzZXInIH0pIHB1YmxpYyBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgZGF0ZXMgaW50byB0aGUgcHJlZmVycmVkIHN0cmluZyBmb3JtYXQuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBmb3JtYXQ/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8qKiBSZWZlcmVuY2Ugb2YgdGhlIG5hdGl2ZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBpbnB1dD86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5vdygpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbm93ID8/IHRoaXMuX2RhdGVBZGFwdGVyLnRvZGF5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfbm93OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIG9ubHkgdXNlZCBmb3IgUmVhY3QuIFdpbGwgcHJvYmFibHkgYmUgcmVtb3ZlZCBvbmNlIFJlYWN0IDE5IGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIHByaXZhdGUgX2RpZENoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICB9KTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGhhcyBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9jaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmNoYW5nZSwge1xuICAgIGJ1YmJsZXM6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9pbnB1dFVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxTYmJJbnB1dFVwZGF0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuaW5wdXRVcGRhdGVkLFxuICAgIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlclVwZGF0ZWQ6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGF0ZVBpY2tlclVwZGF0ZWQsXG4gICAge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLnZhbGlkYXRpb25DaGFuZ2UsXG4gICk7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBnZXQgX2lucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgX2lucHV0RWxlbWVudCh2YWx1ZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faW5wdXRFbGVtZW50U3RhdGU7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50U3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0RWxlbWVudCh0aGlzLl9pbnB1dEVsZW1lbnRTdGF0ZSwgb2xkVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50U3RhdGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9maW5kSW5wdXQobmV3VmFsdWU6IHN0cmluZyB8IEhUTUxFbGVtZW50LCBvbGRWYWx1ZTogc3RyaW5nIHwgSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBmaW5kSW5wdXQodGhpcywgdGhpcy5pbnB1dCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRFbGVtZW50KFxuICAgIG5ld1ZhbHVlOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCxcbiAgICBvbGRWYWx1ZTogSFRNTElucHV0RWxlbWVudCB8IG51bGwsXG4gICk6IHZvaWQge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAgIGlmICghdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAnbWluJywgJ21heCcsICd2YWx1ZSddLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50eXBlID0gJ3RleHQnO1xuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudC5wbGFjZWhvbGRlcikge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIEN1c3RvbUV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldHMgdGhlIGlucHV0IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgZGF0ZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRWYWx1ZUFzRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogU2V0IHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgY29ycmVjdGx5IGZvcm1hdHRlZCB2YWx1ZS4gKi9cbiAgcHVibGljIHNldFZhbHVlQXNEYXRlKGRhdGU6IFNiYkRhdGVMaWtlKTogdm9pZCB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZSA6IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdEFuZFVwZGF0ZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSwgcGFyc2VkRGF0ZSk7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnYmx1cicsIHsgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm93O1xuICB9XG5cbiAgcHJpdmF0ZSBfb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UobXV0YXRpb25zTGlzdD86IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dFVwZGF0ZWQuZW1pdCh7XG4gICAgICBkaXNhYmxlZDogdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5OiB0aGlzLl9pbnB1dEVsZW1lbnQ/LnJlYWRPbmx5LFxuICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1pbixcbiAgICAgIG1heDogdGhpcy5faW5wdXRFbGVtZW50Py5tYXgsXG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgJiZcbiAgICAgIG11dGF0aW9uc0xpc3QgJiZcbiAgICAgIEFycmF5LmZyb20obXV0YXRpb25zTGlzdCkuc29tZSgoZSkgPT4gZS5hdHRyaWJ1dGVOYW1lID09PSAndmFsdWUnKVxuICAgICkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0VmFsaWRWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpISk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9IG5ldyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIodGhpcy5fb25JbnB1dFByb3BlcnRpZXNDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+ID1cbiAgICByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKS53aXRoSGFuZGxlcigoKSA9PiB7XG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyID0gaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XTtcbiAgICAgIGNvbnN0IHZhbHVlQXNEYXRlID0gdGhpcy5nZXRWYWx1ZUFzRGF0ZSgpO1xuICAgICAgaWYgKHZhbHVlQXNEYXRlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCAoKSA9PiB0aGlzLl9vbklucHV0UHJvcGVydGllc0NoYW5nZSgpLCB7XG4gICAgICBzaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gZmluZElucHV0KHRoaXMsIHRoaXMuaW5wdXQpO1xuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2dldFZhbGlkVmFsdWUodGhpcy5faW5wdXRFbGVtZW50LnZhbHVlKTtcbiAgICAgIHRoaXMuX2lucHV0VXBkYXRlZC5lbWl0KHtcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuX2lucHV0RWxlbWVudC5kaXNhYmxlZCxcbiAgICAgICAgcmVhZG9ubHk6IHRoaXMuX2lucHV0RWxlbWVudC5yZWFkT25seSxcbiAgICAgICAgbWluOiB0aGlzLl9pbnB1dEVsZW1lbnQubWluLFxuICAgICAgICBtYXg6IHRoaXMuX2lucHV0RWxlbWVudC5tYXgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2lucHV0JykpIHtcbiAgICAgIHRoaXMuX2ZpbmRJbnB1dCh0aGlzLmlucHV0ISwgY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdpbnB1dCcpISk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnd2lkZScpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVGaWx0ZXInKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdub3cnKVxuICAgICkge1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlclVwZGF0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UodGhpcy5nZXRWYWx1ZUFzRGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZCA9IHRoaXMuX3BhcnNlKHZhbHVlKTtcbiAgICByZXR1cm4gIXRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZCkgPyB2YWx1ZSA6IHRoaXMuX2Zvcm1hdChkISk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVBbmRDb21wb3NlRGF0ZSh2YWx1ZTogU2JiRGF0ZUxpa2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdChkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLl9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZSwgdGhpcy5fcGFyc2UodmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBBcHBsaWVzIHRoZSBjb3JyZWN0IGZvcm1hdCB0byB2YWx1ZXMgYW5kIHRyaWdnZXJzIGV2ZW50IGRpc3BhdGNoLiAqL1xuICBwcml2YXRlIF9mb3JtYXRBbmRVcGRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nLCB2YWx1ZUFzRGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSAhdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZCh2YWx1ZUFzRGF0ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICA6IHRoaXMuX2Zvcm1hdCh2YWx1ZUFzRGF0ZSEpO1xuXG4gICAgICBjb25zdCBpc0VtcHR5T3JWYWxpZCA9XG4gICAgICAgICF2YWx1ZSB8fFxuICAgICAgICAoISF2YWx1ZUFzRGF0ZSAmJlxuICAgICAgICAgIGlzRGF0ZUF2YWlsYWJsZShcbiAgICAgICAgICAgIHZhbHVlQXNEYXRlLFxuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50Py5taW4sXG4gICAgICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/Lm1heCxcbiAgICAgICAgICApKTtcbiAgICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuX2lucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnLCAhaXNFbXB0eU9yVmFsaWQpO1xuICAgICAgaWYgKHdhc1ZhbGlkICE9PSBpc0VtcHR5T3JWYWxpZCkge1xuICAgICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKHZhbHVlQXNEYXRlISk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXRzIHRoZSBjaGFuZ2UgZXZlbnQuICovXG4gIHByaXZhdGUgX2VtaXRDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZShkYXRlKTtcblxuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcblxuICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gdmFsdWUubWF0Y2goRk9STUFUX0RBVEUpO1xuXG4gICAgaWYgKG1hdGNoPy5pbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlQW5kRm9ybWF0VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcigrdmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlQW5kQ29tcG9zZURhdGUoK3ZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQobmV3IERhdGUodmFsdWUpKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFuZENvbXBvc2VEYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBhcnNlciA/IHRoaXMuZGF0ZVBhcnNlcih2YWx1ZSkgOiB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KGRhdGUpIDogdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUxpdmVNZXNzYWdlKGRhdGU/OiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgYXJpYUxpdmVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChgJHt0aGlzLl9sYW5ndWFnZS5jdXJyZW50fS1DSGAsIHtcbiAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZGUtQ0gnLCB7XG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gZGF0ZVxuICAgICAgICA/IGAke2kxOG5EYXRlQ2hhbmdlZFRvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2FyaWFMaXZlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgKX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQoZGF0ZSl9YFxuICAgICAgICA6ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFNLGNBQ0o7QUFlYyxTQUFBLGNBQ2QsU0FDQSxTQUN5Qzs7QUFDekMsTUFBSSxDQUFDLFNBQVM7QUFDTixVQUFBLFVBQVMsYUFBUSxZQUFSLGlDQUFrQjtBQUMxQixXQUFBLGlDQUFRLGNBQWM7QUFBQSxFQUMvQjtBQUVBLFNBQU8sc0JBQTRDLE9BQU87QUFDNUQ7QUFTTyxTQUFTLGlCQUNkLE1BQ0EsT0FDQSxZQUNBLGFBQ007QUFDTixNQUFJLGdCQUFnQixZQUFZLGdCQUFnQixNQUFNLEtBQUs7QUFFM0QsTUFBSSxZQUFZO0FBQ1AsV0FBQSxDQUFDLFdBQVcsYUFBYSxHQUFHO0FBQ2pCLHNCQUFBLFlBQVksZ0JBQWdCLGVBQWUsS0FBSztBQUFBLElBQ2xFO0FBQUEsRUFDRjtBQUVPLFNBQUE7QUFDVDtBQVVPLFNBQVMsMEJBQ2QsTUFDQSxZQUNBLGFBQ0EsS0FDTTtBQUNOLFFBQU0sZUFBZSxpQkFBaUIsTUFBTSxJQUFJLFlBQVksV0FBVztBQUNqRSxRQUFBLFVBQVUsWUFBWSxZQUFZLEdBQUc7QUFHekMsTUFBQSxDQUFDLFdBQ0EsWUFBWSxRQUFRLE9BQU8sS0FBSyxZ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
|
|
361
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZpbmRJbnB1dCwgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZS9vYnNlcnZlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRvZ2dsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXIuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBTYmJJbnB1dFVwZGF0ZUV2ZW50IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1pbj86IHN0cmluZyB8IG51bWJlcjtcbiAgbWF4Pzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vLyBUT0RPKGJyZWFraW5nLWNoYW5nZSk6IElubGluZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBpbiBTYmJEYXRlcGlja2VyRWxlbWVudCBhcyBwdWJsaWMgbWV0aG9kc1xuLy8gd2hlcmUgcG9zc2libGUgYW5kIHVzZSB0aGVzZSBtZXRob2RzIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1c2VkLlxuXG4vKipcbiAqIEdpdmVuIGEgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudCwgYSBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQgb3IgYSBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBjb21wb25lbnQsXG4gKiBpdCByZXR1cm5zIHRoZSByZWxhdGVkIFNiYkRhdGVwaWNrZXJFbGVtZW50IHJlZmVyZW5jZSwgaWYgZXhpc3RzLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgcG90ZW50aWFsbHkgY29ubmVjdGVkIHRvIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBpZCBvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBTYmJEYXRlUGlja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0ZVBpY2tlcjxUID0gRGF0ZT4oXG4gIGVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJCdXR0b248VD4gfCBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUPixcbiAgdHJpZ2dlcj86IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgIC5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJylcbiAgICAgID8ucXVlcnlTZWxlY3RvcjxTYmJEYXRlcGlja2VyRWxlbWVudDxUPj4oJ3NiYi1kYXRlcGlja2VyJyk7XG4gIH1cblxuICByZXR1cm4gZmluZFJlZmVyZW5jZWRFbGVtZW50PFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+Pih0cmlnZ2VyKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgb3IgYWZ0ZXIgYSBnaXZlbiBvbmUsIGNvbnNpZGVyaW5nIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudCBgZGF0ZUZpbHRlcmAgcHJvcGVydHkuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRlbHRhIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQvc3VidHJhY3QgZnJvbSB0aGUgc3RhcnRpbmcgb25lLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0ZUFkYXB0ZXIgVGhlIGFkYXB0ZXIgY2xhc3MuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdmFpbGFibGVEYXRlPFQgPSBEYXRlPihcbiAgZGF0ZTogVCxcbiAgZGVsdGE6IG51bWJlcixcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBUKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPixcbik6IFQge1xuICBsZXQgYXZhaWxhYmxlRGF0ZSA9IGRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCBkZWx0YSk7XG5cbiAgaWYgKGRhdGVGaWx0ZXIpIHtcbiAgICB3aGlsZSAoIWRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgIGF2YWlsYWJsZURhdGUgPSBkYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhdmFpbGFibGVEYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAqIEBwYXJhbSBkYXRlRmlsdGVyIFRoZSBkYXRlRmlsdGVyIGZ1bmN0aW9uIGZyb20gdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50LlxuICogQHBhcmFtIGRhdGVBZGFwdGVyIFRoZSBhZGFwdGVyIGNsYXNzLlxuICogQHBhcmFtIG1pbiBUaGUgbWluaW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlPFQgPSBEYXRlPihcbiAgZGF0ZTogVCxcbiAgZGF0ZUZpbHRlcjogKChkYXRlOiBUKSA9PiBib29sZWFuKSB8IG51bGwsXG4gIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPixcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsLFxuKTogVCB7XG4gIGNvbnN0IHByZXZpb3VzRGF0ZSA9IGdldEF2YWlsYWJsZURhdGUoZGF0ZSwgLTEsIGRhdGVGaWx0ZXIsIGRhdGVBZGFwdGVyKTtcbiAgY29uc3QgZGF0ZU1pbiA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1pbik7XG5cbiAgaWYgKFxuICAgICFkYXRlTWluIHx8XG4gICAgKGRhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiYgZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICApIHtcbiAgICByZXR1cm4gcHJldmlvdXNEYXRlO1xuICB9XG4gIHJldHVybiBkYXRlO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGFmdGVyIHRoZSBnaXZlbiBvbmUsXG4gKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWF4YCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIGRhdGVGaWx0ZXIgVGhlIGRhdGVGaWx0ZXIgZnVuY3Rpb24gZnJvbSB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gZGF0ZUFkYXB0ZXIgVGhlIGFkYXB0ZXIgY2xhc3MuXG4gKiBAcGFyYW0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIHRvIGNvbnNpZGVyIGluIGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBOb3QgaW50ZW5kZWQgYXMgcHVibGljIEFQSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXh0QXZhaWxhYmxlRGF0ZTxUID0gRGF0ZT4oXG4gIGRhdGU6IFQsXG4gIGRhdGVGaWx0ZXI6ICgoZGF0ZTogVCkgPT4gYm9vbGVhbikgfCBudWxsLFxuICBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4sXG4gIG1heDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCxcbik6IFQge1xuICBjb25zdCBuZXh0RGF0ZSA9IGdldEF2YWlsYWJsZURhdGUoZGF0ZSwgMSwgZGF0ZUZpbHRlciwgZGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBkYXRlTWF4ID0gZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUobWF4KTtcblxuICBpZiAoXG4gICAgIWRhdGVNYXggfHxcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShuZXh0RGF0ZSwgZGF0ZU1heCkgPD0gMClcbiAgKSB7XG4gICAgcmV0dXJuIG5leHREYXRlO1xuICB9XG4gIHJldHVybiBkYXRlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBhIHZhbGlkIG9uZSwgY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eVxuICogYW5kIGBtaW5gIGFuZCBgbWF4YCBwYXJhbWV0ZXJzIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGVzKS5cbiAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gKiBAcGFyYW0gZGF0ZUZpbHRlciBUaGUgZGF0ZUZpbHRlciBmdW5jdGlvbiBmcm9tIHRoZSBTYmJEYXRlcGlja2VyRWxlbWVudC5cbiAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gY29uc2lkZXIgaW4gY2FsY3VsYXRpb25zLlxuICogQHBhcmFtIG1heCBUaGUgbWF4aW11bSB2YWx1ZSB0byBjb25zaWRlciBpbiBjYWxjdWxhdGlvbnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgTm90IGludGVuZGVkIGFzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVBdmFpbGFibGU8VCA9IERhdGU+KFxuICBkYXRlOiBULFxuICBkYXRlRmlsdGVyOiAoKGRhdGU6IFQpID0+IGJvb2xlYW4pIHwgbnVsbCxcbiAgbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBtYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgLy8gVE9ETzogR2V0IGRhdGUgYWRhcHRlciBmcm9tIGNvbmZpZ1xuICBjb25zdCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8VD4gPSByZWFkQ29uZmlnKCkuZGF0ZXRpbWU/LmRhdGVBZGFwdGVyID8/IGRlZmF1bHREYXRlQWRhcHRlcjtcbiAgY29uc3QgZGF0ZU1pbiA9IGRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKG1pbik7XG4gIGNvbnN0IGRhdGVNYXggPSBkYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShtYXgpO1xuXG4gIGlmIChcbiAgICAoZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJiBkYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgIChkYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNYXgpICYmIGRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKGRhdGUsIGRhdGVNYXghKSA+IDApXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBkYXRlRmlsdGVyID8gZGF0ZUZpbHRlcihkYXRlKSA6IHRydWU7XG59XG5cbmV4cG9ydCBjb25zdCBkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWRFdmVudEZhY3RvcnkgPSAoKTogQ3VzdG9tRXZlbnQgPT5cbiAgbmV3IEN1c3RvbUV2ZW50KCdkYXRlcGlja2VyQ29udHJvbFJlZ2lzdGVyZWQnLCB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY29tcG9zZWQ6IHRydWUsXG4gIH0pO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIHRoZSBpbnB1dCdzIHZhbHVlIGFzIGEgZm9ybWF0dGVkIGRhdGUuXG4gKlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkQ2hhbmdlIC0gRGVwcmVjYXRlZC4gdXNlZCBmb3IgUmVhY3QuIFdpbGwgcHJvYmFibHkgYmUgcmVtb3ZlZCBvbmNlIFJlYWN0IDE5IGlzIGF2YWlsYWJsZS5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGNoYW5nZSAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD59IGlucHV0VXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkYXRlUGlja2VyVXBkYXRlZCAtIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+fSB2YWxpZGF0aW9uQ2hhbmdlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyRWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGRpZENoYW5nZTogJ2RpZENoYW5nZScsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgd2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIG91dCBkYXRlcy4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KSBwdWJsaWMgZGF0ZUZpbHRlcjogKGRhdGU6IFQgfCBudWxsKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIHBhcnNlIHN0cmluZyB2YWx1ZSBpbnRvIGRhdGVzLlxuICAgKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgcmVxdWlyZWQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pIHB1YmxpYyBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IFQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgZGF0ZXMgaW50byB0aGUgcHJlZmVycmVkIHN0cmluZyBmb3JtYXQuXG4gICAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciByZXF1aXJlZC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSkgcHVibGljIGZvcm1hdD86IChkYXRlOiBUKSA9PiBzdHJpbmc7XG5cbiAgLyoqIFJlZmVyZW5jZSBvZiB0aGUgbmF0aXZlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGlucHV0Pzogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbiAgLy8gVE9ETzogQ2hhbmdlIHVuZGVmaW5lZCB0byBudWxsIGFzIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAvKiogQSBjb25maWd1cmVkIGRhdGUgd2hpY2ggYWN0cyBhcyB0aGUgY3VycmVudCBkYXRlIGluc3RlYWQgb2YgdGhlIHJlYWwgY3VycmVudCBkYXRlLiBSZWNvbW1lbmRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBub3codmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbm93ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyB0aGlzLl9kYXRlQWRhcHRlci50b2RheSgpO1xuICB9XG4gIHByaXZhdGUgX25vdz86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgYXMgYSBEYXRlIG9yIGN1c3RvbSBkYXRlIHByb3ZpZGVyIGluc3RhbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgdmFsdWVBc0RhdGUodmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICAvKiBFbWl0IGJsdXIgZXZlbnQgd2hlbiB2YWx1ZSBpcyBjaGFuZ2VkIHByb2dyYW1tYXRpY2FsbHkgdG8gbm90aWZ5XG4gICAgICBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy4gKi9cbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudCEuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZUFzRGF0ZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNEYXRlID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWVBc0RhdGU/OiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgb25seSB1c2VkIGZvciBSZWFjdC4gV2lsbCBwcm9iYWJseSBiZSByZW1vdmVkIG9uY2UgUmVhY3QgMTkgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBfZGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kaWRDaGFuZ2UsIHtcbiAgICBidWJibGVzOiB0cnVlLFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZTogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcih0aGlzLCBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuY2hhbmdlLCB7XG4gICAgYnViYmxlczogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGlucHV0IGNvbm5lY3RlZCB0byB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2lucHV0VXBkYXRlZDogRXZlbnRFbWl0dGVyPFNiYklucHV0VXBkYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5pbnB1dFVwZGF0ZWQsXG4gICAgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9kYXRlUGlja2VyVXBkYXRlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5kYXRlUGlja2VyVXBkYXRlZCxcbiAgICB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgaW50ZXJuYWwgdmFsaWRhdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF92YWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMudmFsaWRhdGlvbkNoYW5nZSxcbiAgKTtcblxuICBAc3RhdGUoKVxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9IG5ldyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIHRoaXMgbG9naWMgYnkgYWRkaW5nIGEgdmFsdWUgcHJvcGVydHkgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCAmJiBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2lucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICB0aGlzLnZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSA/PyB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpLndpdGhIYW5kbGVyKCgpID0+IHtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlKSB7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl9mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZCcsICgpID0+IHRoaXMuX2VtaXRJbnB1dFVwZGF0ZWQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydC5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy5fYXR0YWNoSW5wdXQoKTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnB1dCcpKSB7XG4gICAgICB0aGlzLl9hdHRhY2hJbnB1dCgpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3dpZGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlRmlsdGVyJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JylcbiAgICApIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJVcGRhdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndmFsdWVBc0RhdGUnKSkge1xuICAgICAgdGhpcy5fc2V0QXJpYUxpdmVNZXNzYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlucHV0IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgZGF0ZSBmb3JtYXQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBwcm9wZXJ0eSB2YWx1ZUFzRGF0ZSBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldFZhbHVlQXNEYXRlKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQXNEYXRlID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGlucHV0IHZhbHVlIHRvIHRoZSBjb3JyZWN0bHkgZm9ybWF0dGVkIHZhbHVlLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgcHJvcGVydHkgdmFsdWVBc0RhdGUgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBzZXRWYWx1ZUFzRGF0ZShkYXRlOiBTYmJEYXRlTGlrZTxUPik6IHZvaWQge1xuICAgIHRoaXMudmFsdWVBc0RhdGUgPSBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIG5vdyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGhhc0N1c3RvbU5vdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub3c7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGZpbmRJbnB1dCh0aGlzLCB0aGlzLmlucHV0KTtcbiAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50ID09PSBpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRPYnNlcnZlci5vYnNlcnZlKGlucHV0LCB7XG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seScsICdtaW4nLCAnbWF4JywgJ3ZhbHVlJ10sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gIWlucHV0LnBsYWNlaG9sZGVyO1xuICAgICAgaW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgaW5wdXQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyA9IHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5fcGFyc2VJbnB1dCgpLCBvcHRpb25zKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHRoaXMuX2hhbmRsZUlucHV0Q2hhbmdlKCksIG9wdGlvbnMpO1xuICAgICAgdGhpcy5fcGFyc2VJbnB1dCh0cnVlKTtcbiAgICAgIHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpO1xuICAgICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdElucHV0VXBkYXRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGRpc2FibGVkLCByZWFkT25seTogcmVhZG9ubHksIG1pbiwgbWF4IH0gPSB0aGlzLl9pbnB1dEVsZW1lbnQgPz8ge307XG4gICAgdGhpcy5faW5wdXRVcGRhdGVkLmVtaXQoeyBkaXNhYmxlZCwgcmVhZG9ubHksIG1pbiwgbWF4IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fZGlkQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLnZhbHVlQXNEYXRlID8gdGhpcy5fZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUhKSA6ICcnO1xuICAgIGlmIChmb3JtYXR0ZWREYXRlICYmIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlID0gZm9ybWF0dGVkRGF0ZTtcbiAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlRGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRW1wdHlPclZhbGlkID1cbiAgICAgICF0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUgfHxcbiAgICAgICghIXRoaXMudmFsdWVBc0RhdGUgJiZcbiAgICAgICAgaXNEYXRlQXZhaWxhYmxlKFxuICAgICAgICAgIHRoaXMudmFsdWVBc0RhdGUsXG4gICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxuICAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudD8ubWluLFxuICAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudD8ubWF4LFxuICAgICAgICApKTtcbiAgICBjb25zdCB3YXNWYWxpZCA9ICF0aGlzLl9pbnB1dEVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJyk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW52YWxpZCcsICFpc0VtcHR5T3JWYWxpZCk7XG4gICAgaWYgKHdhc1ZhbGlkICE9PSBpc0VtcHR5T3JWYWxpZCkge1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbkNoYW5nZS5lbWl0KHsgdmFsaWQ6IGlzRW1wdHlPclZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlSW5wdXQoZGVzZXJpYWxpemVBc0ZhbGxiYWNrID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2lucHV0RWxlbWVudCEudmFsdWU7XG4gICAgY29uc3QgcGFyc2UgPSB0aGlzLmRhdGVQYXJzZXIgPz8gKCh2OiBzdHJpbmcpID0+IHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHYsIHRoaXMubm93KSk7XG4gICAgLy8gV2UgYXJlIGFzc2lnbmluZyBkaXJlY3RseSB0byB0aGUgcHJpdmF0ZSBiYWNraW5nIHByb3BlcnR5IG9mIHZhbHVlQXNEYXRlXG4gICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgYmx1ciBldmVudCBkdXJpbmcgdGhpcyB0aW1lLlxuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHBhcnNlKHZhbHVlKSk7XG4gICAgaWYgKGRlc2VyaWFsaXplQXNGYWxsYmFjayAmJiAhdGhpcy5fdmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1hdChkYXRlOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQgPyB0aGlzLmZvcm1hdChkYXRlKSA6IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdChkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldEFyaWFMaXZlTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlLCB7IHdlZWtkYXlTdHlsZTogJ2xvbmcnIH0pO1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSBgJHtpMThuRGF0ZUNoYW5nZWRUb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkYXRlfWA7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHAgaWQ9XCJzdGF0dXMtY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiPjwvcD5gO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlcic6IFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgaW5wdXRVcGRhdGVkOiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50PjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUNnQixTQUFBLGNBQ2QsU0FDQSxTQUM0Qzs7QUFDNUMsTUFBSSxDQUFDLFNBQVM7QUFDWixZQUFPLG1CQUNKLFlBREksaUNBQ00sc0JBRE4sbUJBRUgsY0FB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
|
|
@@ -52,7 +52,7 @@ const style = css`/**
|
|
|
52
52
|
--sbb-dialog-border-radius: var(--sbb-border-radius-8x);
|
|
53
53
|
--sbb-dialog-padding-block: var(--sbb-spacing-responsive-s);
|
|
54
54
|
--sbb-dialog-animation-duration: var(
|
|
55
|
-
--sbb-disable-animation-
|
|
55
|
+
--sbb-disable-animation-time,
|
|
56
56
|
var(--sbb-animation-duration-6x)
|
|
57
57
|
);
|
|
58
58
|
--sbb-dialog-animation-easing: ease;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-selector.d.ts","sourceRoot":"","sources":["../../../../src/elements/file-selector/file-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"file-selector.d.ts","sourceRoot":"","sources":["../../../../src/elements/file-selector/file-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAoB1C,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;;AAExC;;;;;GAKG;AACH,qBAEa,sBAAuB,SAAQ,2BAA4B;IACtE,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX,wDAAwD;IACrC,OAAO,EAAE,SAAS,GAAG,UAAU,CAAa;IAE/D,mCAAmC;IACC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAO;IAE1D,kDAAkD;IACd,QAAQ,EAAE,OAAO,CAAS;IAE9D,+EAA+E;IAExE,YAAY,EAAE,SAAS,GAAG,YAAY,CAAa;IAE1D,qEAAqE;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEnC,iDAAiD;IACA,YAAY,CAAC,EAAE,MAAM,CAAC;IAEvE,wEAAwE;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9F,kCAAkC;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;IAEjC,iEAAiE;IACjE,OAAO,CAAC,iBAAiB,CAGvB;IAEF;;OAEG;IACH,IAAW,KAAK,IAAI,IAAI,EAAE,CAEzB;IAED;;OAEG;IACI,QAAQ,IAAI,IAAI,EAAE;IAMzB,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,WAAW,CAAwB;IAE3C,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,WAAW;IAYnB,uDAAuD;IACvD,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,eAAe;cA4BJ,MAAM,IAAI,cAAc;CA2C5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
|