Socket
Socket
Sign inDemoInstall

angular-extensions

Package Overview
Dependencies
24
Maintainers
1
Versions
220
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 12.0.24 to 12.0.25

9

bundles/angular-extensions-controls-datetime-control.umd.js

@@ -359,3 +359,9 @@ (function (global, factory) {

core.overrideFunction(i6.NgxMatTimepickerComponent.prototype, function (timePicker) { return timePicker.ngOnInit; }, function () { });
core.overrideFunction(i6.NgxMatTimepickerComponent.prototype, function (timePicker) { return timePicker._updateModel; }, function (updateModel, timePicker) { return timePicker._model && updateModel(); });
// ensure timepicker model is set when user performs interaction
core.overrideFunction(i6.NgxMatTimepickerComponent.prototype, function (timePicker) { return timePicker._updateModel; }, function (updateModel, timePicker) {
if (!timePicker._model) {
timePicker._model = new Date();
}
return updateModel();
});
core.overrideFunction(i6.NgxMatTimepickerComponent.prototype, function (timePicker) { return timePicker.writeValue; }, function (writeValue, timePicker, value) {

@@ -451,3 +457,2 @@ if (!value) {

var _this = this;
this.timePicker._model = new Date();
core.overrideFunction(this.datepickerContent, function (content) { return content._handleUserSelection; }, function (handleUserSelection, _, event) {

@@ -454,0 +459,0 @@ handleUserSelection(event);

@@ -504,3 +504,3 @@ (function (global, factory) {

SelectControlComponent.prototype.showClearButton = function () {
return this.clearable && !this.field.isQuerying && this.selection.hasValue();
return this.field.control.enabled && this.clearable && !this.field.isQuerying && this.selection.hasValue();
};

@@ -507,0 +507,0 @@ SelectControlComponent.prototype.isSearchAvailable = function () {

@@ -758,3 +758,2 @@ (function (global, factory) {

: function (option, filter) { var _a; return (_a = _this.optionLabel(option)) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(filter.toLowerCase()); };
this.visibilityProvider = function () { return true; };
this.optionGroupLabel = function (optionGroup) { return optionGroup === null || optionGroup === void 0 ? void 0 : optionGroup.toString(); };

@@ -811,3 +810,3 @@ this.optionId = function (option) { return option instanceof Option ? option.id : option; };

get: function () {
return !!this.visibilityProvider(this.value);
return !this.visibilityProvider || this.visibilityProvider();
},

@@ -814,0 +813,0 @@ /**

@@ -23,3 +23,9 @@ import { switchMap } from "rxjs/operators";

overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker.ngOnInit, () => { });
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker._updateModel, (updateModel, timePicker) => timePicker._model && updateModel());
// ensure timepicker model is set when user performs interaction
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker._updateModel, (updateModel, timePicker) => {
if (!timePicker._model) {
timePicker._model = new Date();
}
return updateModel();
});
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker.writeValue, (writeValue, timePicker, value) => {

@@ -96,3 +102,2 @@ if (!value) {

datePickerOpened() {
this.timePicker._model = new Date();
overrideFunction(this.datepickerContent, content => content._handleUserSelection, (handleUserSelection, _, event) => {

@@ -138,2 +143,2 @@ handleUserSelection(event);

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvZGF0ZXRpbWUtY29udHJvbC9zcmMvZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvZGF0ZXRpbWUtY29udHJvbC9zcmMvZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLHVCQUF1QixFQUFxQixTQUFTLEVBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLGlCQUFpQixHQUNoRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFdkUsU0FBUyxpQ0FBaUM7SUFDeEMscUVBQXFFO0lBQ3JFLGdCQUFnQixDQUNkLHlCQUF5QixDQUFDLFNBQVMsRUFDbkMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUNqQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUViLGdCQUFnQixDQUNkLHlCQUF5QixDQUFDLFNBQXFELEVBQy9FLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxD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V0FBVztzQkFEakIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSW5DLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERhdGVGb3JtYXRzLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlciwgTWF0RGF0ZXBpY2tlckNvbnRlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQgeyBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyXCI7XHJcblxyXG5pbXBvcnQgeyBvdmVycmlkZUZ1bmN0aW9uIH0gZnJvbSBcImFuZ3VsYXItZXh0ZW5zaW9ucy9jb3JlXCI7XHJcbmltcG9ydCB7IEFwcE1hdERhdGVwaWNrZXIsIEFwcE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiYW5ndWxhci1leHRlbnNpb25zL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBDb250cm9sQmFzZSB9IGZyb20gXCJhbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvYmFzZS1jb250cm9sXCI7XHJcblxyXG5mdW5jdGlvbiBhZGRUaW1lcGlja2VyTnVsbGFibGVNb2RlbFN1cHBvcnQoKSB7XHJcbiAgLy8gZGlzYWJsZSBkZWFkLWxvb3Agb2YgbW9kZWwgPT4gdmlldyBhbmQgdmlldyA8PSBtb2RlbCBjaGFuZ2UgZXZlbnRzXHJcbiAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgIE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQucHJvdG90eXBlLFxyXG4gICAgdGltZVBpY2tlciA9PiB0aW1lUGlja2VyLm5nT25Jbml0LFxyXG4gICAgKCkgPT4geyB9KTtcclxuXHJcbiAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgIE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQucHJvdG90eXBlIGFzIGFueSBhcyBBcHBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50PGFueT4sXHJcbiAgICB0aW1lUGlja2VyID0+IHRpbWVQaWNrZXIuX3VwZGF0ZU1vZGVsLFxyXG4gICAgKHVwZGF0ZU1vZGVsLCB0aW1lUGlja2VyKSA9PiB0aW1lUGlja2VyLl9tb2RlbCAmJiB1cGRhdGVNb2RlbCgpKTtcclxuXHJcbiAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgIE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQucHJvdG90eXBlIGFzIGFueSBhcyBBcHBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50PGFueT4sXHJcbiAgICB0aW1lUGlja2VyID0+IHRpbWVQaWNrZXIud3JpdGVWYWx1ZSxcclxuICAgICh3cml0ZVZhbHVlLCB0aW1lUGlja2VyLCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgdGltZVBpY2tlci5fbW9kZWwgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyh0aW1lUGlja2VyLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKFN0cmluZyh0aW1lUGlja2VyLmRlZmF1bHRUaW1lPy5baW5kZXhdIHx8IDApLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbXByb3ZlVGltZXBpY2tlclN0ZXBwZXIoKSB7XHJcbiAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgIE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQucHJvdG90eXBlIGFzIGFueSBhcyBBcHBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50PGFueT4sXHJcbiAgICB0aW1lUGlja2VyID0+IHRpbWVQaWNrZXIuX2dldE5leHRWYWx1ZUJ5UHJvcCxcclxuICAgIChnZXROZXh0VmFsdWVCeVByb3AsIHRpbWVQaWNrZXIsIHByb3BlcnR5LCB1cCkgPT4ge1xyXG4gICAgICBsZXQga2V5UHJvcCA9IHByb3BlcnR5WzBdLnRvVXBwZXJDYXNlKCkgKyBwcm9wZXJ0eS5zbGljZSgxKTtcclxuXHJcbiAgICAgIGxldCByZXN1bHQgPSBnZXROZXh0VmFsdWVCeVByb3AocHJvcGVydHksIHVwKTtcclxuXHJcbiAgICAgIGlmICh1cCAhPSBudWxsKSB7XHJcbiAgICAgICAgcmVzdWx0IC09IHJlc3VsdCAlICh0aW1lUGlja2VyIGFzIGFueSlbYHN0ZXAke2tleVByb3B9YF0gYXMgbnVtYmVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmltcHJvdmVUaW1lcGlja2VyU3RlcHBlcigpO1xyXG5cclxuYWRkVGltZXBpY2tlck51bGxhYmxlTW9kZWxTdXBwb3J0KCk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJkYXRldGltZS1jb250cm9sXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRldGltZS1jb250cm9sLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2RhdGV0aW1lLWNvbnRyb2wuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgQ29udHJvbEJhc2U8RGF0ZT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsVGltZTogbnVtYmVyW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNsZWFyYWJsZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZU1pbnV0ZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93U2Vjb25kcyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmb3JtYXQ6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZChNYXREYXRlcGlja2VyLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHB1YmxpYyBkYXRlUGlja2VyOiBBcHBNYXREYXRlcGlja2VyPERhdGU+O1xyXG5cclxuICBAVmlld0NoaWxkKE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHRpbWVQaWNrZXI6IEFwcE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQ8RGF0ZT47XHJcblxyXG4gIHByaXZhdGUgZ2V0IGRhdGVwaWNrZXJDb250ZW50KCk6IE1hdERhdGVwaWNrZXJDb250ZW50PERhdGU+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKHRoaXMuZGF0ZVBpY2tlci5fY29tcG9uZW50UmVmIHx8IHRoaXMuZGF0ZVBpY2tlci5fcG9wdXBDb21wb25lbnRSZWYpPy5pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChNQVRfREFURV9GT1JNQVRTKSBkYXRlRm9ybWF0czogTWF0RGF0ZUZvcm1hdHMsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMuZm9ybWF0ID0gYCR7ZGF0ZUZvcm1hdHMuZGlzcGxheS5kYXRlSW5wdXR9IEhIOm1tJHt0aGlzLnNob3dTZWNvbmRzID8gXCI6c3NcIiA6IFwiXCJ9YDtcclxuXHJcbiAgICAvLyBhdm9pZCBkYXRlcGlja2VyIGlucHV0IGJsdXIgd2hpbGUgcG9wdXAgaXMgb3BlblxyXG4gICAgZWxlbWVudFJlZlxyXG4gICAgICAubmF0aXZlRWxlbWVudFxyXG4gICAgICAuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgZXZlbnQgPT4gdGhpcy5kYXRlcGlja2VyQ29udGVudCAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24oKSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgLy8gTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudCB1cGRhdGVzIHZhbHVlIHdpdGhvdXQgXCJlbWl0TW9kZWxUb1ZpZXdDaGFuZ2VcIiwgc28gdGhpcyBsaXN0ZW5lciBwcm9wYWdhdGUgdGhvc2UgZXZlbnRzIGluc3RlYWRcclxuICAgIHRoaXMuZmllbGQkXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcChmaWVsZCA9PiBmaWVsZC5jb250cm9sLnZhbHVlQ2hhbmdlcykpXHJcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9mIHRoaXMuZmllbGQuY29udHJvbC5fb25DaGFuZ2UpIHtcclxuICAgICAgICAgIGNhbGxiYWNrKHZhbHVlLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZpZWxkQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLm1hdC1mb3JtLWZpZWxkLWZsZXhcIikuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xyXG4gICAgICB0aGlzLmRhdGVQaWNrZXIub3BlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmNsZWFyYWJsZSAmJiB0aGlzLmZpZWxkLmNvbnRyb2wuZW5hYmxlZCAmJiB0aGlzLmZpZWxkLnZhbHVlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZC5jb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgICAgdGhpcy5maWVsZC5jb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0ZVBpY2tlck9wZW5lZCgpIHtcclxuICAgIHRoaXMudGltZVBpY2tlci5fbW9kZWwgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlRnVuY3Rpb24oXHJcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNvbnRlbnQsXHJcbiAgICAgIGNvbnRlbnQgPT4gY29udGVudC5faGFuZGxlVXNlclNlbGVjdGlvbixcclxuICAgICAgKGhhbmRsZVVzZXJTZWxlY3Rpb24sIF8sIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaGFuZGxlVXNlclNlbGVjdGlvbihldmVudCk7XHJcblxyXG4gICAgICAgIGxldCB0aW1lVmFsdWVzID0gW3RoaXMudGltZVBpY2tlci5ob3VyLCB0aGlzLnRpbWVQaWNrZXIubWludXRlLCB0aGlzLnRpbWVQaWNrZXIuc2Vjb25kXTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lUGlja2VyLl9kYXRlQWRhcHRlci5zZXRUaW1lQnlEZWZhdWx0VmFsdWVzKGV2ZW50LnZhbHVlLCB0aW1lVmFsdWVzKTtcclxuXHJcbiAgICAgICAgdGhpcy50aW1lUGlja2VyLl9tb2RlbCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlci5fbW9kZWwuYWRkKGV2ZW50LnZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxiYXNlLWNvbnRyb2wgI2Jhc2VDb250cm9sXHJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidGhpc1wiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZmllbGRDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpZWxkQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1sYWJlbD5cclxuICAgICAge3sgZmllbGQubGFiZWwgfX1cclxuICAgIDwvbWF0LWxhYmVsPlxyXG5cclxuICAgIDxtYXQtaGludD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJhc2VDb250cm9sLmhpbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtaGludD5cclxuXHJcbiAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgIFtmb3JtYXRdPVwiZm9ybWF0XCJcclxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGQuY29udHJvbFwiXHJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiPlxyXG5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiZGF0ZVBpY2tlclwiPlxyXG4gICAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb25cclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImNsZWFyYWJsZSAmJiBmaWVsZC5jb250cm9sLmVuYWJsZWQgJiYgZmllbGQudmFsdWUgIT0gbnVsbCA/ICdDbGVhcicgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGUoJGV2ZW50KVwiPlxyXG4gICAgICAgIHt7IGNsZWFyYWJsZSAmJiBmaWVsZC5jb250cm9sLmVuYWJsZWQgJiYgZmllbGQudmFsdWUgIT0gbnVsbCA/ICdjbG9zZScgOiAndG9kYXknIH19XHJcbiAgICAgIDwvbWF0LWljb24+XHJcbiAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuXHJcbiAgICA8bWF0LWRhdGVwaWNrZXIgcGFuZWxDbGFzcz1cImRhdGV0aW1lLXBpY2tlci1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXN0b3JlRm9jdXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwiZGF0ZVBpY2tlck9wZW5lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImJsdXIoKTsgZmllbGQuY29udHJvbC5tYXJrQWxsQXNUb3VjaGVkKClcIj5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLWFjdGlvbnM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cInctMTAwIG1iLTJcIj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgICAgICAgIDxuZ3gtbWF0LXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sXT1cImZpZWxkLmNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBNaW51dGVdPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU1pbnV0ZV09XCJkaXNhYmxlTWludXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUaW1lXT1cImluaXRpYWxUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cInNob3dTZWNvbmRzXCI+PC9uZ3gtbWF0LXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cclxuICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcblxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImJhc2VDb250cm9sLmluaXRpYWxpemVkXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiYXNlQ29udHJvbC5lcnJvcnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtZXJyb3I+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9iYXNlLWNvbnRyb2w+XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvZGF0ZXRpbWUtY29udHJvbC9zcmMvZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvZGF0ZXRpbWUtY29udHJvbC9zcmMvZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLHVCQUF1QixFQUFxQixTQUFTLEVBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLGlCQUFpQixHQUNoRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFdkUsU0FBUyxpQ0FBaUM7SUFDeEMscUVBQXFFO0lBQ3JFLGdCQUFnQixDQUNkLHlCQUF5QixDQUFDLFNBQVMsRUFDbkMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUNqQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUViLGdFQUFnRTtJQUNoRSxnQkFBZ0IsQ0FDZCx5QkFBeUIsQ0FBQyxTQUFxRCxFQUMvRSxVQUFVLENBQUMsRUFB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QUFNO2lCQUNoRDs7MEJBK0JJLE1BQU07MkJBQUMsZ0JBQWdCOzRDQTNCbkIsV0FBVztzQkFEakIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxVQUFVO3NCQURoQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSW5DLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERhdGVGb3JtYXRzLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlciwgTWF0RGF0ZXBpY2tlckNvbnRlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQgeyBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyXCI7XHJcblxyXG5pbXBvcnQgeyBvdmVycmlkZUZ1bmN0aW9uIH0gZnJvbSBcImFuZ3VsYXItZXh0ZW5zaW9ucy9jb3JlXCI7XHJcbmltcG9ydCB7IEFwcE1hdERhdGVwaWNrZXIsIEFwcE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiYW5ndWxhci1leHRlbnNpb25zL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBDb250cm9sQmFzZSB9IGZyb20gXCJhbmd1bGFyLWV4dGVuc2lvbnMvY29udHJvbHMvYmFzZS1jb250cm9sXCI7XHJcblxyXG5mdW5jdGlvbiBhZGRUaW1lcGlja2VyTnVsbGFibGVNb2RlbFN1cHBvcnQoKSB7XHJcbiAgLy8gZGlzYWJsZSBkZWFkLWxvb3Agb2YgbW9kZWwgPT4gdmlldyBhbmQgdmlldyA8PSBtb2RlbCBjaGFuZ2UgZXZlbnRzXHJcbiAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgIE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQucHJvdG90eXBlLFxyXG4gICAgdGltZVBpY2tlciA9PiB0aW1lUGlja2VyLm5nT25Jbml0LFxyXG4gICAgKCkgPT4geyB9KTtcclxuXHJcbiAgLy8gZW5zdXJlIHRpbWVwaWNrZXIgbW9kZWwgaXMgc2V0IHdoZW4gdXNlciBwZXJmb3JtcyBpbnRlcmFjdGlvblxyXG4gIG92ZXJyaWRlRnVuY3Rpb24oXHJcbiAgICBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50LnByb3RvdHlwZSBhcyBhbnkgYXMgQXBwTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudDxhbnk+LFxyXG4gICAgdGltZVBpY2tlciA9PiB0aW1lUGlja2VyLl91cGRhdGVNb2RlbCxcclxuICAgICh1cGRhdGVNb2RlbCwgdGltZVBpY2tlcikgPT4ge1xyXG4gICAgICBpZiAoIXRpbWVQaWNrZXIuX21vZGVsKSB7XHJcbiAgICAgICAgdGltZVBpY2tlci5fbW9kZWwgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdXBkYXRlTW9kZWwoKTtcclxuICAgIH0pO1xyXG5cclxuICBvdmVycmlkZUZ1bmN0aW9uKFxyXG4gICAgTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudC5wcm90b3R5cGUgYXMgYW55IGFzIEFwcE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQ8YW55PixcclxuICAgIHRpbWVQaWNrZXIgPT4gdGltZVBpY2tlci53cml0ZVZhbHVlLFxyXG4gICAgKHdyaXRlVmFsdWUsIHRpbWVQaWNrZXIsIHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB0aW1lUGlja2VyLl9tb2RlbCA9IHZhbHVlO1xyXG5cclxuICAgICAgICBPYmplY3QudmFsdWVzKHRpbWVQaWNrZXIuZm9ybS5jb250cm9scykuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoU3RyaW5nKHRpbWVQaWNrZXIuZGVmYXVsdFRpbWU/LltpbmRleF0gfHwgMCkucGFkU3RhcnQoMiwgXCIwXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB3cml0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGltcHJvdmVUaW1lcGlja2VyU3RlcHBlcigpIHtcclxuICBvdmVycmlkZUZ1bmN0aW9uKFxyXG4gICAgTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudC5wcm90b3R5cGUgYXMgYW55IGFzIEFwcE5neE1hdFRpbWVwaWNrZXJDb21wb25lbnQ8YW55PixcclxuICAgIHRpbWVQaWNrZXIgPT4gdGltZVBpY2tlci5fZ2V0TmV4dFZhbHVlQnlQcm9wLFxyXG4gICAgKGdldE5leHRWYWx1ZUJ5UHJvcCwgdGltZVBpY2tlciwgcHJvcGVydHksIHVwKSA9PiB7XHJcbiAgICAgIGxldCBrZXlQcm9wID0gcHJvcGVydHlbMF0udG9VcHBlckNhc2UoKSArIHByb3BlcnR5LnNsaWNlKDEpO1xyXG5cclxuICAgICAgbGV0IHJlc3VsdCA9IGdldE5leHRWYWx1ZUJ5UHJvcChwcm9wZXJ0eSwgdXApO1xyXG5cclxuICAgICAgaWYgKHVwICE9IG51bGwpIHtcclxuICAgICAgICByZXN1bHQgLT0gcmVzdWx0ICUgKHRpbWVQaWNrZXIgYXMgYW55KVtgc3RlcCR7a2V5UHJvcH1gXSBhcyBudW1iZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxufVxyXG5cclxuaW1wcm92ZVRpbWVwaWNrZXJTdGVwcGVyKCk7XHJcblxyXG5hZGRUaW1lcGlja2VyTnVsbGFibGVNb2RlbFN1cHBvcnQoKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImRhdGV0aW1lLWNvbnRyb2xcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGV0aW1lLWNvbnRyb2wuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZGF0ZXRpbWUtY29udHJvbC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZUNvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBDb250cm9sQmFzZTxEYXRlPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGluaXRpYWxUaW1lOiBudW1iZXJbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2xlYXJhYmxlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkaXNhYmxlTWludXRlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dTZWNvbmRzID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcm1hdDogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdERhdGVwaWNrZXIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIGRhdGVQaWNrZXI6IEFwcE1hdERhdGVwaWNrZXI8RGF0ZT47XHJcblxyXG4gIEBWaWV3Q2hpbGQoTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgdGltZVBpY2tlcjogQXBwTmd4TWF0VGltZXBpY2tlckNvbXBvbmVudDxEYXRlPjtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgZGF0ZXBpY2tlckNvbnRlbnQoKTogTWF0RGF0ZXBpY2tlckNvbnRlbnQ8RGF0ZT4gfCBudWxsIHtcclxuICAgIHJldHVybiAodGhpcy5kYXRlUGlja2VyLl9jb21wb25lbnRSZWYgfHwgdGhpcy5kYXRlUGlja2VyLl9wb3B1cENvbXBvbmVudFJlZik/Lmluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KE1BVF9EQVRFX0ZPUk1BVFMpIGRhdGVGb3JtYXRzOiBNYXREYXRlRm9ybWF0cyxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5mb3JtYXQgPSBgJHtkYXRlRm9ybWF0cy5kaXNwbGF5LmRhdGVJbnB1dH0gSEg6bW0ke3RoaXMuc2hvd1NlY29uZHMgPyBcIjpzc1wiIDogXCJcIn1gO1xyXG5cclxuICAgIC8vIGF2b2lkIGRhdGVwaWNrZXIgaW5wdXQgYmx1ciB3aGlsZSBwb3B1cCBpcyBvcGVuXHJcbiAgICBlbGVtZW50UmVmXHJcbiAgICAgIC5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCBldmVudCA9PiB0aGlzLmRhdGVwaWNrZXJDb250ZW50ICYmIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpLCB7IGNhcHR1cmU6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBOZ3hNYXRUaW1lcGlja2VyQ29tcG9uZW50IHVwZGF0ZXMgdmFsdWUgd2l0aG91dCBcImVtaXRNb2RlbFRvVmlld0NoYW5nZVwiLCBzbyB0aGlzIGxpc3RlbmVyIHByb3BhZ2F0ZSB0aG9zZSBldmVudHMgaW5zdGVhZFxyXG4gICAgdGhpcy5maWVsZCRcclxuICAgICAgLnBpcGUoc3dpdGNoTWFwKGZpZWxkID0+IGZpZWxkLmNvbnRyb2wudmFsdWVDaGFuZ2VzKSlcclxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgdGhpcy5maWVsZC5jb250cm9sLl9vbkNoYW5nZSkge1xyXG4gICAgICAgICAgY2FsbGJhY2sodmFsdWUsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRmllbGRDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubWF0LWZvcm0tZmllbGQtZmxleFwiKS5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlci5vcGVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRvZ2dsZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2xlYXJhYmxlICYmIHRoaXMuZmllbGQuY29udHJvbC5lbmFibGVkICYmIHRoaXMuZmllbGQudmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLmNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcblxyXG4gICAgICB0aGlzLmZpZWxkLmNvbnRyb2wubWFya0FzVG91Y2hlZCh7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG5cclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkYXRlUGlja2VyT3BlbmVkKCkge1xyXG4gICAgb3ZlcnJpZGVGdW5jdGlvbihcclxuICAgICAgdGhpcy5kYXRlcGlja2VyQ29udGVudCxcclxuICAgICAgY29udGVudCA9PiBjb250ZW50Ll9oYW5kbGVVc2VyU2VsZWN0aW9uLFxyXG4gICAgICAoaGFuZGxlVXNlclNlbGVjdGlvbiwgXywgZXZlbnQpID0+IHtcclxuICAgICAgICBoYW5kbGVVc2VyU2VsZWN0aW9uKGV2ZW50KTtcclxuXHJcbiAgICAgICAgbGV0IHRpbWVWYWx1ZXMgPSBbdGhpcy50aW1lUGlja2VyLmhvdXIsIHRoaXMudGltZVBpY2tlci5taW51dGUsIHRoaXMudGltZVBpY2tlci5zZWNvbmRdO1xyXG5cclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXIuX2RhdGVBZGFwdGVyLnNldFRpbWVCeURlZmF1bHRWYWx1ZXMoZXZlbnQudmFsdWUsIHRpbWVWYWx1ZXMpO1xyXG5cclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXIuX21vZGVsID0gZXZlbnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyLl9tb2RlbC5hZGQoZXZlbnQudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGJhc2UtY29udHJvbCAjYmFzZUNvbnRyb2xcclxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ0aGlzXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmllbGRDbGljaygkZXZlbnQpXCI+XHJcbiAgICA8bWF0LWxhYmVsPlxyXG4gICAgICB7eyBmaWVsZC5sYWJlbCB9fVxyXG4gICAgPC9tYXQtbGFiZWw+XHJcblxyXG4gICAgPG1hdC1oaW50PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmFzZUNvbnRyb2wuaGludFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1oaW50PlxyXG5cclxuICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxyXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWVsZC5jb250cm9sXCJcclxuICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCI+XHJcblxyXG4gICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJkYXRlUGlja2VyXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvblxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY2xlYXJhYmxlICYmIGZpZWxkLmNvbnRyb2wuZW5hYmxlZCAmJiBmaWVsZC52YWx1ZSAhPSBudWxsID8gJ0NsZWFyJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZSgkZXZlbnQpXCI+XHJcbiAgICAgICAge3sgY2xlYXJhYmxlICYmIGZpZWxkLmNvbnRyb2wuZW5hYmxlZCAmJiBmaWVsZC52YWx1ZSAhPSBudWxsID8gJ2Nsb3NlJyA6ICd0b2RheScgfX1cclxuICAgICAgPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG5cclxuICAgIDxtYXQtZGF0ZXBpY2tlciBwYW5lbENsYXNzPVwiZGF0ZXRpbWUtcGlja2VyLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc3RvcmVGb2N1c109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJkYXRlUGlja2VyT3BlbmVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwiYmx1cigpOyBmaWVsZC5jb250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKVwiPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwidy0xMDAgbWItMlwiPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gICAgICAgICAgPG5neC1tYXQtdGltZXBpY2tlciBbZm9ybUNvbnRyb2xdPVwiZmllbGQuY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcE1pbnV0ZV09XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlTWludXRlXT1cImRpc2FibGVNaW51dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFRpbWVdPVwiaW5pdGlhbFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHNcIj48L25neC1tYXQtdGltZXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxyXG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cclxuXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiYmFzZUNvbnRyb2wuaW5pdGlhbGl6ZWRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJhc2VDb250cm9sLmVycm9yc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Jhc2UtY29udHJvbD5cclxuIl19

@@ -128,3 +128,2 @@ import { xorBy } from "lodash-es";

: (option, filter) => { var _a; return (_a = this.optionLabel(option)) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(filter.toLowerCase()); };
this.visibilityProvider = () => true;
this.optionGroupLabel = optionGroup => optionGroup === null || optionGroup === void 0 ? void 0 : optionGroup.toString();

@@ -173,3 +172,3 @@ this.optionId = option => option instanceof Option ? option.id : option;

get visible() {
return !!this.visibilityProvider(this.value);
return !this.visibilityProvider || this.visibilityProvider();
}

@@ -320,2 +319,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvbW9kZWxzL3NyYy9maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQTZCbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFFeEI7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsRUFBRSxDQUFDLEtBQXVCLEVBQVUsRUFBRTtRQUNwRCxPQUFPLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLEVBQUUsQ0FBQyxLQUF1QixFQUFVLEVBQUU7O1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxT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VUFBVSxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHhvckJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciBhcyBmaWx0ZXJQcmVkaWNhdGUsIGZpcnN0LCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gXCJhbmd1bGFyLWV4dGVuc2lvbnMvY29yZVwiO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGF0ZVRpbWVQaXBlLCBTdGFydENhc2VQaXBlIH0gZnJvbSBcImFuZ3VsYXItZXh0ZW5zaW9ucy9waXBlc1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uLCBWYWx1ZVByb3ZpZGVyLCBWYWxpZGF0aW9uQ29uc3RydWN0b3IgfSBmcm9tIFwiLi92YWxpZGF0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IE5HWF9EQVRFX0ZPUk1BVFMgfSBmcm9tIFwiLi9kYXRldGltZS1jb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcblxyXG4vKipcclxuICogQ29uc3RydWN0b3Igb2JqZWN0IGZvciBGaWVsZCBjbGFzc1xyXG4gKi9cclxudHlwZSBGaWVsZENvbnN0cnVjdG9yPFRWYWx1ZSwgVE9wdGlvbiA9IFRWYWx1ZSwgVE9wdGlvbkdyb3VwID0gYW55LCBURm9ybWF0dGVkVmFsdWUgPSBhbnksIFRDb250cm9sVmFsdWUgPSBhbnk+ID1cclxuICBQYXJ0aWFsPE9taXQ8RmllbGQ8VFZhbHVlLCBUT3B0aW9uLCBUT3B0aW9uR3JvdXAsIFRGb3JtYXR0ZWRWYWx1ZSwgVENvbnRyb2xWYWx1ZT4sXHJcbiAgICBcImNvbnRyb2xcIiB8IFwiZWxlbWVudFwiIHwgXCJvcHRpb25zXCIgfCBcIm9uVmFsdWVDaGFuZ2VcIiB8IFwib25PcHRpb25zQ2hhbmdlXCIgfCBcInZhbGlkYXRpb25cIiB8XHJcbiAgICBcImN1c3RvbU9wdGlvbkZpbHRlclByZWRpY2F0ZVwiIHwgXCJfaW5pdGlhbFN0YXR1c1wiIHwgXCJkZXN0cm95XCIgfCBcInNldE9wdGlvbnNcIiB8IFwic2V0RnJvbU9wdGlvbnNcIiB8XHJcbiAgICBcInVwZGF0ZVZhbGlkYXRpb25cIiB8IFwidmlzaWJsZVwiIHwgXCJmb3JtYXR0ZWRWYWx1ZVwiIHwgXCJmb3JtR3JvdXBcIiB8IFwib3B0aW9uQ2hhbmdlc1wiIHwgXCJkZXN0cm95JFwiPiAmIHtcclxuICAgICAgb3B0aW9uczogVE9wdGlvbltdIHwgT2JzZXJ2YWJsZTxUT3B0aW9uW10+O1xyXG5cclxuICAgICAgb25WYWx1ZUNoYW5nZTogKHZhbHVlOiBUVmFsdWUsIHByZXZpb3VzOiBUVmFsdWUpID0+IHZvaWQ7XHJcblxyXG4gICAgICBvbk9wdGlvbnNDaGFuZ2U6ICh2YWx1ZTogVE9wdGlvbltdKSA9PiB2b2lkO1xyXG5cclxuICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGlvbkNvbnN0cnVjdG9yPFRWYWx1ZT47XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogSW5kaWNhdGVzIGZpZWxkIGluaXRpYWwgc3RhdGVcclxuICAgICAgICovXHJcbiAgICAgIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIENvbmZpZ3VyZXMgd2hlbiB7QGxpbmsgdmFsdWVDaGFuZ2VzfSBzaG91bGQgZW1pdCBldmVudC5cclxuICAgICAgICovXHJcbiAgICAgIHVwZGF0ZU9uPzogXCJjaGFuZ2VcIiB8IFwiYmx1clwiIHwgXCJzdWJtaXRcIjtcclxuICAgIH0+O1xyXG5cclxuLyoqXHJcbiAqIENvbW1vbmx5IHVzZWQgRmllbGQgdmFsdWUgZm9ybWF0dGVyc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEZvcm1hdHRlcnMgPSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgRmllbGQ8RGF0ZT4gdmFsdWUgdG8gVVRDIGRhdGUgKFwieXl5eS1NTS1kZFwiKSBzdHJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQ8RGF0ZT5cclxuICAgKiBAcmV0dXJucyBTdHJpbmdcclxuICAgKi9cclxuICB1dGNEYXRlRm9ybWF0dGVyOiAoZmllbGQ6IEZpZWxkPERhdGUsIGFueT4pOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlUGlwZShOR1hfREFURV9GT1JNQVRTKS50cmFuc2Zvcm0oZmllbGQudmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIEZpZWxkPERhdGU+IHZhbHVlIHRvIFVUQyBkYXRlL3RpbWUgKFwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzJ1onXCIpIHN0cmluZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWVsZCBGaWVsZDxEYXRlPlxyXG4gICAqIEByZXR1cm5zIFN0cmluZ1xyXG4gICAqL1xyXG4gIHV0Y0RhdGVUaW1lRm9ybWF0dGVyOiAoZmllbGQ6IEZpZWxkPERhdGUsIGFueT4pOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlUGlwZShOR1hfREFURV9GT1JNQVRTKS50cmFuc2Zvcm0oZmllbGQudmFsdWU/LnRvVXRjRGF0ZSgpLCBcInl5eXktTU0tZGQnVCdISDptbTpzcydaJ1wiKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIEZpZWxkPERhdGU+IHZhbHVlIHRvIGRhdGUgc3RyaW5nIHdpdGgge0BsaW5rIERhdGVQaXBlfSBhbmQge0BsaW5rIE5HWF9EQVRFX0ZPUk1BVFN9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQ8RGF0ZT5cclxuICAgKiBAcmV0dXJucyBTdHJpbmdcclxuICAgKi9cclxuICBkYXRlRm9ybWF0dGVyOiAoZmllbGQ6IEZpZWxkPERhdGUsIGFueT4pID0+IHtcclxuICAgIHJldHVybiBuZXcgRGF0ZVBpcGUoTkdYX0RBVEVfRk9STUFUUykudHJhbnNmb3JtKGZpZWxkLnZhbHVlKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIEZpZWxkPERhdGU+IHZhbHVlIHRvIGRhdGUvdGltZSBzdHJpbmcgd2l0aCB7QGxpbmsgRGF0ZVRpbWVQaXBlfSBhbmQge0BsaW5rIE5HWF9EQVRFX0ZPUk1BVFN9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQ8RGF0ZT5cclxuICAgKiBAcmV0dXJucyBTdHJpbmdcclxuICAgKi9cclxuICBkYXRlVGltZUZvcm1hdHRlcjogKGZpZWxkOiBGaWVsZDxEYXRlLCBhbnk+KSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IERhdGVUaW1lUGlwZShOR1hfREFURV9GT1JNQVRTKS50cmFuc2Zvcm0oZmllbGQudmFsdWUpO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBGaWVsZCA8PT4gQ29udHJvbCB2YWx1ZSBjb252ZXJ0ZXIuXHJcbiAqIFVzZWZ1bCB3aGVuIEhUTUwgaW5wdXQgaGFzIGRpZmZlcmVudCBtb2RlbCB0aGF0IGFjdHVhbCBGaWVsZC5cclxuICpcclxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlIEZpZWxkIFZhbHVlXHJcbiAqIEB0ZW1wbGF0ZSBUQ29udHJvbFZhbHVlIEZpZWxkJ3MgQ29udHJvbCBWYWx1ZVxyXG4gKi9cclxuaW50ZXJmYWNlIEZpZWxkQ29udHJvbFZhbHVlQ29udmVydGVyPFRGaWVsZFZhbHVlLCBUQ29udHJvbFZhbHVlPiB7XHJcblxyXG4gIGZyb21Db250cm9sVmFsdWU6ICh2YWx1ZTogVENvbnRyb2xWYWx1ZSkgPT4gVEZpZWxkVmFsdWU7XHJcblxyXG4gIHRvQ29udHJvbFZhbHVlOiAodmFsdWU6IFRGaWVsZFZhbHVlKSA9PiBUQ29udHJvbFZhbHVlO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRm9ybWF0dGVyT3B0aW9ucyB7XHJcbiAgaW5zZXJ0U3BhY2VCZWZvcmVEaWdpdHM/OiBib29sZWFuO1xyXG4gIGluc2VydFNwYWNlQmVmb3JlQWJicmV2aWF0aW9ucz86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaWVsZCBvcHRpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBzZWxlY3QtY29udHJvbCwgZXRjLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE9wdGlvbjxUVmFsdWUsIFRJZCA9IHN0cmluZz4ge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBzdGFydENhc2VQaXBlID0gbmV3IFN0YXJ0Q2FzZVBpcGUoKTtcclxuXHJcbiAgcHVibGljIGlkOiBUSWQ7XHJcblxyXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgdmFsdWU6IFRWYWx1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHM/OiBQYXJ0aWFsPE9wdGlvbjxUVmFsdWUsIFRJZD4+KSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHByb3BzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLnZhbHVlPy50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmlkID0gdGhpcy5uYW1lIGFzIGFueTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgb3B0aW9ucyBmcm9tIHNwZWNpZmllZCBFbnVtXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZW51bVR5cGUgRW51bSB0eXBlXHJcbiAgICogQHBhcmFtIGluc2VydFNwYWNlQmVmb3JlRGlnaXRzIFNob3VsZCBpbnNlcnQgYSBzcGFjZSBiZWZvcmUgZGlnaXQgcHJlc2VudCBpbiBzdHJpbmcuIEUuZy4gXCJldmVyeTEwTW9udGhcIiA9PiBcIkV2ZXJ5IDEwIE1vbnRoXCJcclxuICAgKiBAcmV0dXJucyBDb2xsZWN0aW9uIG9mIG9wdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIEZvckVudW08VEVudW0gZXh0ZW5kcyBudW1iZXIgfCBzdHJpbmc+KFxyXG4gICAgZW51bVR5cGU6IGFueSxcclxuICAgIG9wdGlvbnM6IEZvcm1hdHRlck9wdGlvbnMgPSB7IGluc2VydFNwYWNlQmVmb3JlRGlnaXRzOiBmYWxzZSwgaW5zZXJ0U3BhY2VCZWZvcmVBYmJyZXZpYXRpb25zOiBmYWxzZSB9KTogT3B0aW9uPFRFbnVtPltdIHtcclxuICAgIGxldCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZW51bVR5cGUpIGFzIFtzdHJpbmcsIHN0cmluZyB8IG51bWJlcl1bXTs7XHJcblxyXG4gICAgbGV0IG51bWJlckVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcigoWywgdmFsdWVdKSA9PiB0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIikgYXMgW3N0cmluZywgbnVtYmVyXVtdO1xyXG5cclxuICAgIHJldHVybiAobnVtYmVyRW50cmllcy5sZW5ndGggPiAwID8gbnVtYmVyRW50cmllcyA6IGVudHJpZXMpXHJcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXTogW3N0cmluZywgc3RyaW5nIHwgbnVtYmVyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBPcHRpb248VEVudW0+KHtcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnN0YXJ0Q2FzZVBpcGUudHJhbnNmb3JtKGtleSwgb3B0aW9ucy5pbnNlcnRTcGFjZUJlZm9yZURpZ2l0cywgb3B0aW9ucy5pbnNlcnRTcGFjZUJlZm9yZUFiYnJldmlhdGlvbnMpLFxyXG4gICAgICAgICAgbmFtZToga2V5LFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlIGFzIFRFbnVtLFxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgc2ltcGxpZmllZCBhcGkgdG8gd29yayB3aXRoIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgYW5kIHByZWRlZmluZWQgY29udHJvbCBjb21wb25lbnRzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZpZWxkPFRWYWx1ZSwgVE9wdGlvbiA9IFRWYWx1ZSwgVE9wdGlvbkdyb3VwID0gYW55LCBURm9ybWF0dGVkVmFsdWUgPSBhbnksIFRDb250cm9sVmFsdWUgPSBUVmFsdWU+IHtcclxuXHJcbiAgcHJpdmF0ZSBvcHRpb25DaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PFRPcHRpb25bXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogVE9wdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBfaW5pdGlhbFN0YXR1czogeyBkaXNhYmxlZDogYm9vbGVhbiB9O1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKipcclxuICAgKiBBbmd1bGFyIEZvcm1Db250cm9sIG9mIGZpZWxkLiBDb250cm9sIGNvbXBvbmVudHMgY29tbXVuaWNhdGVzIHZpYSB0aGlzIGNvbnRyb2wgYmV0d2VlbiBGaWVsZCBhbmQgVUlcclxuICAgKi9cclxuICBwdWJsaWMgY29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byBjb250cm9sIHJvb3QgSFRNTCBlbGVtZW50XHJcbiAgICovXHJcbiAgcHVibGljIGVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBvZiBhIGZpZWxkIGluc2lkZSBwYXJlbnQncyBGb3JtR3JvdXAsIGV0Yy5cclxuICAgKi9cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBQbGFjZWhvbGRlciBvZiBhIGZpZWxkXHJcbiAgICovXHJcbiAgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCBvZiBhIGZpZWxkXHJcbiAgICovXHJcbiAgcHVibGljIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJbmZvIHRleHQgb2YgZmllbGQgc2hvd2VkIGluIG1hdC1oaW50XHJcbiAgICovXHJcbiAgcHVibGljIGluZm8/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRpb25zIG9mIGEgZmllbGRcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbjogVmFsaWRhdGlvbjxUVmFsdWU+O1xyXG5cclxuICAvKipcclxuICAgKiBGaWVsZCB2YWx1ZSBmb3JtYXR0ZXIgd2hpY2ggaXMgdXNlZCBieSB7QGxpbmsgZm9ybWF0dGVkVmFsdWV9LiBTZWUgbGlzdCBvZiBidWlsdC1pbiB7QGxpbmsgRm9ybWF0dGVyc31cclxuICAgKi9cclxuICBwdWJsaWMgZm9ybWF0dGVyOiAoZmllbGQ6IEZpZWxkPFRWYWx1ZSwgVE9wdGlvbiwgVE9wdGlvbkdyb3VwLCBURm9ybWF0dGVkVmFsdWUsIFRDb250cm9sVmFsdWU+KSA9PiBURm9ybWF0dGVkVmFsdWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpZWxkJ3MgQ29udHJvbCB2YWx1ZSBjb252ZXJ0ZXIsIGNvbnZlcnNpb24gaXMgZG9uZSB3aGVuZXZlciB2YWx1ZSBpcyBiZWluZyByZWFkIGZyb20vd3JpdHRlbiB0byBhIHtAbGluayBjb250cm9sfS5cclxuICAgKi9cclxuICBwdWJsaWMgY29udHJvbENvbnZlcnRlcjogRmllbGRDb250cm9sVmFsdWVDb252ZXJ0ZXI8VFZhbHVlLCBUQ29udHJvbFZhbHVlPiA9IHtcclxuICAgIGZyb21Db250cm9sVmFsdWU6IGNvbnRyb2xWYWx1ZSA9PiBjb250cm9sVmFsdWUgYXMgYW55IGFzIFRWYWx1ZSxcclxuICAgIHRvQ29udHJvbFZhbHVlOiB2YWx1ZSA9PiB2YWx1ZSBhcyBhbnkgYXMgVENvbnRyb2xWYWx1ZSxcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmVzIHdoZW4gZmllbGQgc2hvdWxkIGJlIHZpc2libGUsIGJ5IGRlZmF1bHQgaXMgYWx3YXlzIHZpc2libGUuXHJcbiAgICovXHJcbiAgcHVibGljIHZpc2liaWxpdHlQcm92aWRlcjogVmFsdWVQcm92aWRlcjxUVmFsdWUsIGJvb2xlYW4+O1xyXG5cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIGZpZWxkXHJcbiAgICovXHJcbiAgcHVibGljIGhpZ2hsaWdodD86ICgpID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciBmaWVsZCBpcyBxdWVyeWluZyBkYXRhOiBvcHRpb25zLCBldGMuXHJcbiAgICovXHJcbiAgcHVibGljIGlzUXVlcnlpbmc6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZmllbGQncyBwYXJlbnQgYXMgZm9ybSBncm91cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZm9ybUdyb3VwKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8ucGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGZpZWxkJ3MgdmlzaWJpbGl0eSBzdGF0dXMuIEJhc2VkIG9uIHtAbGluayB2aXNpYmlsaXR5UHJvdmlkZXJ9LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdmlzaWJsZSgpIHtcclxuICAgIHJldHVybiAhIXRoaXMudmlzaWJpbGl0eVByb3ZpZGVyKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBmaWVsZCdzIHZpc2liaWxpdHkgc3RhdHVzLiBCYXNlZCBvbiB7QGxpbmsgdmlzaWJpbGl0eVByb3ZpZGVyfS5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0IHZpc2libGUoaXNWaXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnZpc2liaWxpdHlQcm92aWRlciA9ICgpID0+ICEhaXNWaXNpYmxlO1xyXG5cclxuICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGZpZWxkJ3MgdmFsdWUuIEFwcGxpZXMgY29udmVyc2lvbiBpZiBzcGVjaWZpZWQgYXQge0BsaW5rIGNvbnRyb2xDb252ZXJ0ZXJ9LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ29udmVydGVyLmZyb21Db250cm9sVmFsdWUodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZmllbGQncyB2YWx1ZS4gQXBwbGllcyBjb252ZXJzaW9uIGlmIHNwZWNpZmllZCBhdCB7QGxpbmsgY29udHJvbENvbnZlcnRlcn0uXHJcbiAgICogSWYgcHJldmlvdXMgdmFsdWUgaXMgdGhlIHNhbWUgYXMgY3VycmVudCB2YWx1ZSwge0BsaW5rIG9uVmFsdWVDaGFuZ2V9IHdvbnQgZW1pdCBjaGFuZ2VzXHJcbiAgICovXHJcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVFZhbHVlKSB7XHJcbiAgICBsZXQgY29udmVydGVkVmFsdWUgPSB0aGlzLmNvbnRyb2xDb252ZXJ0ZXIudG9Db250cm9sVmFsdWUodmFsdWUpO1xyXG5cclxuICAgIGlmIChjb252ZXJ0ZWRWYWx1ZSAhPSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGNvbnZlcnRlZFZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBmb3JtYXR0ZWQgdmFsdWUsIGFwcGxpZXMge0BsaW5rIGZvcm1hdHRlcn0gaWYgZXhpc3RzXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBURm9ybWF0dGVkVmFsdWUge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyXHJcbiAgICAgID8gdGhpcy5mb3JtYXR0ZXIodGhpcylcclxuICAgICAgOiB0aGlzLnZhbHVlIGFzIGFueTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgRmllbGQncyBvcHRpb25zXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBvcHRpb25zKCk6IFRPcHRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgRmllbGQncyBvcHRpb25zIGFuZCBub3RpZmllcyBzdWJzY3JpYmVycy5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IFRPcHRpb25bXSkge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwgJiYgdGhpcy51cGRhdGVWYWx1ZVdoZW5PcHRpb25zQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLnNldEZyb21PcHRpb25zKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKHRoaXMub3B0aW9uSWQpLmNvbnRhaW5zKHRoaXMub3B0aW9uSWQob3B0aW9uKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU/LnZhbHVlT2YoKSA9PSB0aGlzLm9wdGlvblZhbHVlKG9wdGlvbik/LnZhbHVlT2YoKSB8fFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbklkKHRoaXMudmFsdWUgYXMgYW55KSA9PSB0aGlzLm9wdGlvbklkKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0cmlnZ2VycyBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBpbnRlcm5hbCBjb250cm9sc1xyXG4gICAgdGhpcy5jb250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKTtcclxuXHJcbiAgICB0aGlzLm9wdGlvbkNoYW5nZXMkLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBvcHRpb24gY2hhbmdlcyBzdHJlYW1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IG9wdGlvbkNoYW5nZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25DaGFuZ2VzJC5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tT3B0aW9uRmlsdGVyUHJlZGljYXRlOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBmaWVsZCB2YWx1ZXMgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiBvcHRpb25zIGNoYW5nZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlV2hlbk9wdGlvbnNDaGFuZ2VkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmVzIHdoZW4gRmllbGQgc2hvdWxkIGJlIGRlc3Ryb3llZC5cclxuICAgKiBJZiBcImNvbnRyb2xcIiAtIEZpZWxkIGlzIGRlc3Ryb3llZCB3aGVuIGNvbnRyb2wgbmdPbkRlc3Ryb3kgbWV0aG9kIGNhbGxlZC5cclxuICAgKiBJZiBcImVkaXRvclwiIC0gRmllbGQgaXMgZGVzdHJveWVkIHdoZW4gZWRpdG9yIGRlc3Ryb3kgbWV0aG9kIGNhbGxlZC5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IERlZmF1bHQgdmFsdWU6IFwiY29udHJvbFwiXHJcbiAgICovXHJcbiAgcHVibGljIGRlc3RvcnlXaXRoOiBcImNvbnRyb2xcIiB8IFwiZWRpdG9yXCIgPSBcImNvbnRyb2xcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9ucyBmaWx0ZXIgcHJlZGljYXRlIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbCwgYnkgZGVmYXVsdCBmaWx0ZXJzIGJ5IG9wdGlvbiBsYWJlbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25zRmlsdGVyUHJlZGljYXRlOiAob3B0aW9uOiBUT3B0aW9uLCBmaWx0ZXI6IHN0cmluZykgPT4gYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIG9wdGlvbiBpZGVudGlmaWVyIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbCB0byBjb21wYXJlIG9wdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uSWQ6IChvcHRpb246IFRPcHRpb24sIGluZGV4PzogbnVtYmVyKSA9PiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBvcHRpb24gbGFiZWwgcHJvdmlkZXIgdGhhdCBpcyB1c2VkIGJ5IHNlbGVjdC1jb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbkxhYmVsOiAob3B0aW9uOiBUT3B0aW9uKSA9PiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IG9wdGlvbiBkaXNwbGF5IGxhYmVsIHdoZW4gc2VsZWN0ZWQgb3IgYmVpbmcgaG92ZXJlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25EaXNwbGF5TGFiZWw/OiAob3B0aW9uOiBUT3B0aW9uKSA9PiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBvcHRpb24gdmFsdWUgcHJvdmlkZXIgdGhhdCBpcyB1c2VkIGJ5IHNlbGVjdC1jb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvblZhbHVlOiAob3B0aW9uOiBUT3B0aW9uKSA9PiBUQ29udHJvbFZhbHVlO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gb3B0aW9uIGF2YWlsYWJpbGl0eSBwcm92aWRlciB0aGF0IGlzIHVzZWQgYnkgc2VsZWN0LWNvbnRyb2xcclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uRGlzYWJsZWQ6IChvcHRpb246IFRPcHRpb24pID0+IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbnMgcHJvdmlkZXIgZnVuY3Rpb24gYWNjZXB0aW5nIHN0cmluZyBxdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25zUHJvdmlkZXI/OiAocXVlcnk6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxUT3B0aW9uW10+O1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25zIGdyb3VwIHByb3ZpZGVyIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbC5cclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uc0dyb3VwUHJvdmlkZXI/OiAob3B0aW9uOiBUT3B0aW9uKSA9PiBUT3B0aW9uR3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBvcHRpb24gZ3JvdXAgbGFiZWwgcHJvdmlkZXIgdGhhdCBpcyB1c2VkIGJ5IHNlbGVjdC1jb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbkdyb3VwTGFiZWw6IChvcHRpb25Hcm91cDogVE9wdGlvbkdyb3VwKSA9PiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBGaWVsZENvbnN0cnVjdG9yPFRWYWx1ZSwgVE9wdGlvbiwgVE9wdGlvbkdyb3VwLCBURm9ybWF0dGVkVmFsdWUsIFRDb250cm9sVmFsdWU+KSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBuZXcgVmFsaWRhdGlvbihwcm9wcy52YWxpZGF0aW9uIHx8IHt9KTtcclxuXHJcbiAgICB0aGlzLmNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgIHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb250cm9sQ29udmVydGVyLnRvQ29udHJvbFZhbHVlKHByb3BzLnZhbHVlKSxcclxuXHJcbiAgICAgICAgLy8gc3VwcHJlc3NlcyB2YWxpZGF0aW9uIHRoYXQgbWlnaHQgaGF2ZSBkZXBlbmRlbmNpZXNcclxuICAgICAgICAvLyBvbiBvdGhlciBmaWVsZHMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbnN0YW50aWF0ZWRcclxuICAgICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgPyBwcm9wcy5kaXNhYmxlZFxyXG4gICAgICAgICAgOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvbiksXHJcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiBWYWxpZGF0aW9uLmdldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb24pLFxyXG4gICAgICAgIHVwZGF0ZU9uOiBwcm9wcy51cGRhdGVPbixcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5jdXN0b21PcHRpb25GaWx0ZXJQcmVkaWNhdGUgPSAhIXByb3BzLm9wdGlvbnNGaWx0ZXJQcmVkaWNhdGU7XHJcblxyXG4gICAgLy8gZG8gbm90IGZpbHRlciBvcHRpb24gaWYgc2VhcmNoIHByb3ZpZGVyIGlzIHVzZWRcclxuICAgIHRoaXMub3B0aW9uc0ZpbHRlclByZWRpY2F0ZSA9IHByb3BzLm9wdGlvbnNQcm92aWRlclxyXG4gICAgICA/ICgpID0+IHRydWVcclxuICAgICAgOiAob3B0aW9uLCBmaWx0ZXIpID0+IHRoaXMub3B0aW9uTGFiZWwob3B0aW9uKT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgdGhpcy52aXNpYmlsaXR5UHJvdmlkZXIgPSAoKSA9PiB0cnVlO1xyXG4gICAgdGhpcy5vcHRpb25Hcm91cExhYmVsID0gb3B0aW9uR3JvdXAgPT4gb3B0aW9uR3JvdXA/LnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLm9wdGlvbklkID0gb3B0aW9uID0+IG9wdGlvbiBpbnN0YW5jZW9mIE9wdGlvbiA/IG9wdGlvbi5pZCA6IG9wdGlvbjtcclxuICAgIHRoaXMub3B0aW9uTGFiZWwgPSBvcHRpb24gPT4gb3B0aW9uIGluc3RhbmNlb2YgT3B0aW9uID8gb3B0aW9uLmxhYmVsIDogb3B0aW9uPy50b1N0cmluZygpO1xyXG4gICAgdGhpcy5vcHRpb25WYWx1ZSA9IG9wdGlvbiA9PiBvcHRpb24gaW5zdGFuY2VvZiBPcHRpb24gPyBvcHRpb24udmFsdWUgOiBvcHRpb247XHJcbiAgICB0aGlzLm9wdGlvbkRpc2FibGVkID0gXyA9PiBmYWxzZTtcclxuXHJcbiAgICAvLyBpbmRpY2F0ZWQgZm9ybSB0aGF0IGNvbnRyb2wgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZFxyXG4gICAgaWYgKHByb3BzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxTdGF0dXMgPSB7IGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCB9O1xyXG5cclxuICAgICAgZGVsZXRlIHByb3BzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wcy5vblZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgIGxldCBvblZhbHVlQ2hhbmdlID0gcHJvcHMub25WYWx1ZUNoYW5nZTtcclxuXHJcbiAgICAgIHRoaXMuY29udHJvbFxyXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlclByZWRpY2F0ZSgoKSA9PiB0aGlzLmNvbnRyb2wuZW5hYmxlZCksXHJcbiAgICAgICAgICBtYXAodGhpcy5jb250cm9sQ29udmVydGVyLmZyb21Db250cm9sVmFsdWUpLFxyXG4gICAgICAgICAgc3RhcnRXaXRoKHByb3BzLnZhbHVlKSxcclxuICAgICAgICAgIHBhaXJ3aXNlKCksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKFtwcmV2aW91cywgY3VycmVudF0pID0+IGhhbmRsZUVycm9yKCgpID0+IG9uVmFsdWVDaGFuZ2UoY3VycmVudCBhcyBUVmFsdWUsIHByZXZpb3VzKSkpO1xyXG5cclxuICAgICAgZGVsZXRlIHByb3BzLm9uVmFsdWVDaGFuZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHByb3BzLm9uT3B0aW9uc0NoYW5nZSkge1xyXG4gICAgICBsZXQgb25PcHRpb25zQ2hhbmdlID0gcHJvcHMub25PcHRpb25zQ2hhbmdlO1xyXG5cclxuICAgICAgdGhpcy5vcHRpb25DaGFuZ2VzJFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKG9wdGlvbnMgPT4gaGFuZGxlRXJyb3IoKCkgPT4gb25PcHRpb25zQ2hhbmdlKG9wdGlvbnMpKSk7XHJcblxyXG4gICAgICBkZWxldGUgcHJvcHMub25PcHRpb25zQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuc2V0T3B0aW9ucyhwcm9wcy5vcHRpb25zKTtcclxuXHJcbiAgICAgIGRlbGV0ZSBwcm9wcy5vcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSBwcm9wcy52YWxpZGF0aW9uO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcHJvcHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBGaWVsZCdzIG9wdGlvbnMuIFN1YnNjcmliZXMgdG8gT2JzZXJ2YWJsZSBpbnB1dCBhbmQgdHJhY2tzIHN0YXR1cyBpbiB7QGxpbmsgaXNRdWVyeWluZ30gcHJvcGVydHlcclxuICAgKi9cclxuICBwdWJsaWMgc2V0T3B0aW9ucyh2YWx1ZTogVE9wdGlvbltdIHwgT2JzZXJ2YWJsZTxUT3B0aW9uW10+KSB7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNRdWVyeWluZyA9IHRydWU7XHJcblxyXG4gICAgICAvLyBlbWl0IGNvbnRyb2wgc3RhdHVzIGNoYW5nZSBldmVudCB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYnkgY29udHJvbHNcclxuICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1BlbmRpbmcoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuXHJcbiAgICAgIHZhbHVlXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaXJzdCgpLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogb3B0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgICAgIHRoaXMuaXNRdWVyeWluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgLy8gb3Bwb3NpdGUgYWN0aW9uIHRvIFwiY29udHJvbC5tYXJrQXNQZW5kaW5nXCJcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgdmFsdWVzIGZyb20gYXZhaWxhYmxlIG9wdGlvbnMgYmFzZWQgb24gb3B0aW9ucyBwcmVkaWNhdGUuIEhvbm9yc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIG9wdGlvblByZWRpY2F0ZSBPcHRpb25zIHByZWRpY2F0ZSB0aGF0IHdpbGwgc2VsZWN0IHZhbHVlcyBmcm9tXHJcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmVzIGRlZmF1bHQgdmFsdWUgaWYgbm90aGluZyBzZWxlY3RlZCBvciBzaG91bGQgaXQgZW1pdCB2YWx1ZSBjaGFuZ2UgZXZlbnQuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRGcm9tT3B0aW9ucyhcclxuICAgIG9wdGlvblByZWRpY2F0ZTogKG9wdGlvbjogVE9wdGlvbikgPT4gYm9vbGVhbixcclxuICAgIGNvbmZpZzogeyBkZWZhdWx0VmFsdWU/OiBUVmFsdWU7IGVtaXRFdmVudD86IGJvb2xlYW4gfSA9IHsgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsIGVtaXRFdmVudDogdHJ1ZSB9LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xyXG4gICAgICBsZXQgb3B0aW9uc1Byb3ZpZGVyID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5vcHRpb25zLmZpbHRlcihvcHRpb25QcmVkaWNhdGUpLm1hcCh0aGlzLm9wdGlvblZhbHVlKTtcclxuXHJcbiAgICAgICAgICBpZiAoeG9yQnkodGhpcy5jb250cm9sLnZhbHVlLCB2YWx1ZSwgdGhpcy5vcHRpb25JZCBhcyBhbnkpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlIGFzIGFueSBhcyBUQ29udHJvbFZhbHVlLCB7IGVtaXRFdmVudDogY29uZmlnLmVtaXRFdmVudCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLm9wdGlvblZhbHVlKHRoaXMub3B0aW9ucy5maW5kKG9wdGlvblByZWRpY2F0ZSkpID8/IHRoaXMuY29udHJvbENvbnZlcnRlci50b0NvbnRyb2xWYWx1ZShjb25maWcuZGVmYXVsdFZhbHVlKTtcclxuXHJcbiAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wudmFsdWUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbklkKHZhbHVlIGFzIGFueSk/LnZhbHVlT2YoKSAhPT0gdGhpcy5vcHRpb25JZCh0aGlzLmNvbnRyb2wudmFsdWUgYXMgYW55KT8udmFsdWVPZigpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogY29uZmlnLmVtaXRFdmVudCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKCh2YWx1ZSAhPSBudWxsKSAhPSAodGhpcy5jb250cm9sLnZhbHVlICE9IG51bGwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGNvbmZpZy5lbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5pc1F1ZXJ5aW5nKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25DaGFuZ2VzJFxyXG4gICAgICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gb3B0aW9uc1Byb3ZpZGVyKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG9wdGlvbnNQcm92aWRlcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZmllbGQgdmFsaWRhdGlvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb24gVmFsaWRhdGlvbiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZVZhbGlkYXRpb24odmFsaWRhdGlvbjogVmFsaWRhdGlvbkNvbnN0cnVjdG9yPFRWYWx1ZT4pIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy52YWxpZGF0aW9uLCBuZXcgVmFsaWRhdGlvbih2YWxpZGF0aW9uKSk7XHJcblxyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvbikpO1xyXG4gICAgdGhpcy5jb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhWYWxpZGF0aW9uLmdldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb24pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryb3lzIGZpZWxkIGFuZCBpdHMgc3Vic2NyaXB0aW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWV4dGVuc2lvbnMvbW9kZWxzL3NyYy9maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQTZCbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFFeEI7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsRUFBRSxDQUFDLEtBQXVCLEVBQVUsRUFBRTtRQUNwRCxPQUFPLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLEVBQUUsQ0FBQyxLQUF1QixFQUFVLEVBQUU7O1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxT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VUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB4b3JCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIgYXMgZmlsdGVyUHJlZGljYXRlLCBmaXJzdCwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgaGFuZGxlRXJyb3IgfSBmcm9tIFwiYW5ndWxhci1leHRlbnNpb25zL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIERhdGVUaW1lUGlwZSwgU3RhcnRDYXNlUGlwZSB9IGZyb20gXCJhbmd1bGFyLWV4dGVuc2lvbnMvcGlwZXNcIjtcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiwgVmFsdWVQcm92aWRlciwgVmFsaWRhdGlvbkNvbnN0cnVjdG9yIH0gZnJvbSBcIi4vdmFsaWRhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOR1hfREFURV9GT1JNQVRTIH0gZnJvbSBcIi4vZGF0ZXRpbWUtY29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIG9iamVjdCBmb3IgRmllbGQgY2xhc3NcclxuICovXHJcbnR5cGUgRmllbGRDb25zdHJ1Y3RvcjxUVmFsdWUsIFRPcHRpb24gPSBUVmFsdWUsIFRPcHRpb25Hcm91cCA9IGFueSwgVEZvcm1hdHRlZFZhbHVlID0gYW55LCBUQ29udHJvbFZhbHVlID0gYW55PiA9XHJcbiAgUGFydGlhbDxPbWl0PEZpZWxkPFRWYWx1ZSwgVE9wdGlvbiwgVE9wdGlvbkdyb3VwLCBURm9ybWF0dGVkVmFsdWUsIFRDb250cm9sVmFsdWU+LFxyXG4gICAgXCJjb250cm9sXCIgfCBcImVsZW1lbnRcIiB8IFwib3B0aW9uc1wiIHwgXCJvblZhbHVlQ2hhbmdlXCIgfCBcIm9uT3B0aW9uc0NoYW5nZVwiIHwgXCJ2YWxpZGF0aW9uXCIgfFxyXG4gICAgXCJjdXN0b21PcHRpb25GaWx0ZXJQcmVkaWNhdGVcIiB8IFwiX2luaXRpYWxTdGF0dXNcIiB8IFwiZGVzdHJveVwiIHwgXCJzZXRPcHRpb25zXCIgfCBcInNldEZyb21PcHRpb25zXCIgfFxyXG4gICAgXCJ1cGRhdGVWYWxpZGF0aW9uXCIgfCBcInZpc2libGVcIiB8IFwiZm9ybWF0dGVkVmFsdWVcIiB8IFwiZm9ybUdyb3VwXCIgfCBcIm9wdGlvbkNoYW5nZXNcIiB8IFwiZGVzdHJveSRcIj4gJiB7XHJcbiAgICAgIG9wdGlvbnM6IFRPcHRpb25bXSB8IE9ic2VydmFibGU8VE9wdGlvbltdPjtcclxuXHJcbiAgICAgIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogVFZhbHVlLCBwcmV2aW91czogVFZhbHVlKSA9PiB2b2lkO1xyXG5cclxuICAgICAgb25PcHRpb25zQ2hhbmdlOiAodmFsdWU6IFRPcHRpb25bXSkgPT4gdm9pZDtcclxuXHJcbiAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRpb25Db25zdHJ1Y3RvcjxUVmFsdWU+O1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIEluZGljYXRlcyBmaWVsZCBpbml0aWFsIHN0YXRlXHJcbiAgICAgICAqL1xyXG4gICAgICBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBDb25maWd1cmVzIHdoZW4ge0BsaW5rIHZhbHVlQ2hhbmdlc30gc2hvdWxkIGVtaXQgZXZlbnQuXHJcbiAgICAgICAqL1xyXG4gICAgICB1cGRhdGVPbj86IFwiY2hhbmdlXCIgfCBcImJsdXJcIiB8IFwic3VibWl0XCI7XHJcbiAgICB9PjtcclxuXHJcbi8qKlxyXG4gKiBDb21tb25seSB1c2VkIEZpZWxkIHZhbHVlIGZvcm1hdHRlcnNcclxuICovXHJcbmV4cG9ydCBjb25zdCBGb3JtYXR0ZXJzID0ge1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIEZpZWxkPERhdGU+IHZhbHVlIHRvIFVUQyBkYXRlIChcInl5eXktTU0tZGRcIikgc3RyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkPERhdGU+XHJcbiAgICogQHJldHVybnMgU3RyaW5nXHJcbiAgICovXHJcbiAgdXRjRGF0ZUZvcm1hdHRlcjogKGZpZWxkOiBGaWVsZDxEYXRlLCBhbnk+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBuZXcgRGF0ZVBpcGUoTkdYX0RBVEVfRk9STUFUUykudHJhbnNmb3JtKGZpZWxkLnZhbHVlLCBcInl5eXktTU0tZGRcIik7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBGaWVsZDxEYXRlPiB2YWx1ZSB0byBVVEMgZGF0ZS90aW1lIChcInl5eXktTU0tZGQnVCdISDptbTpzcydaJ1wiKSBzdHJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQ8RGF0ZT5cclxuICAgKiBAcmV0dXJucyBTdHJpbmdcclxuICAgKi9cclxuICB1dGNEYXRlVGltZUZvcm1hdHRlcjogKGZpZWxkOiBGaWVsZDxEYXRlLCBhbnk+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBuZXcgRGF0ZVBpcGUoTkdYX0RBVEVfRk9STUFUUykudHJhbnNmb3JtKGZpZWxkLnZhbHVlPy50b1V0Y0RhdGUoKSwgXCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3MnWidcIik7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBGaWVsZDxEYXRlPiB2YWx1ZSB0byBkYXRlIHN0cmluZyB3aXRoIHtAbGluayBEYXRlUGlwZX0gYW5kIHtAbGluayBOR1hfREFURV9GT1JNQVRTfVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkPERhdGU+XHJcbiAgICogQHJldHVybnMgU3RyaW5nXHJcbiAgICovXHJcbiAgZGF0ZUZvcm1hdHRlcjogKGZpZWxkOiBGaWVsZDxEYXRlLCBhbnk+KSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IERhdGVQaXBlKE5HWF9EQVRFX0ZPUk1BVFMpLnRyYW5zZm9ybShmaWVsZC52YWx1ZSk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBGaWVsZDxEYXRlPiB2YWx1ZSB0byBkYXRlL3RpbWUgc3RyaW5nIHdpdGgge0BsaW5rIERhdGVUaW1lUGlwZX0gYW5kIHtAbGluayBOR1hfREFURV9GT1JNQVRTfVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkPERhdGU+XHJcbiAgICogQHJldHVybnMgU3RyaW5nXHJcbiAgICovXHJcbiAgZGF0ZVRpbWVGb3JtYXR0ZXI6IChmaWVsZDogRmllbGQ8RGF0ZSwgYW55PikgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZVBpcGUoTkdYX0RBVEVfRk9STUFUUykudHJhbnNmb3JtKGZpZWxkLnZhbHVlKTtcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogRmllbGQgPD0+IENvbnRyb2wgdmFsdWUgY29udmVydGVyLlxyXG4gKiBVc2VmdWwgd2hlbiBIVE1MIGlucHV0IGhhcyBkaWZmZXJlbnQgbW9kZWwgdGhhdCBhY3R1YWwgRmllbGQuXHJcbiAqXHJcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZSBGaWVsZCBWYWx1ZVxyXG4gKiBAdGVtcGxhdGUgVENvbnRyb2xWYWx1ZSBGaWVsZCdzIENvbnRyb2wgVmFsdWVcclxuICovXHJcbmludGVyZmFjZSBGaWVsZENvbnRyb2xWYWx1ZUNvbnZlcnRlcjxURmllbGRWYWx1ZSwgVENvbnRyb2xWYWx1ZT4ge1xyXG5cclxuICBmcm9tQ29udHJvbFZhbHVlOiAodmFsdWU6IFRDb250cm9sVmFsdWUpID0+IFRGaWVsZFZhbHVlO1xyXG5cclxuICB0b0NvbnRyb2xWYWx1ZTogKHZhbHVlOiBURmllbGRWYWx1ZSkgPT4gVENvbnRyb2xWYWx1ZTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEZvcm1hdHRlck9wdGlvbnMge1xyXG4gIGluc2VydFNwYWNlQmVmb3JlRGlnaXRzPzogYm9vbGVhbjtcclxuICBpbnNlcnRTcGFjZUJlZm9yZUFiYnJldmlhdGlvbnM/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogRmllbGQgb3B0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gc2VsZWN0LWNvbnRyb2wsIGV0Yy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBPcHRpb248VFZhbHVlLCBUSWQgPSBzdHJpbmc+IHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc3RhcnRDYXNlUGlwZSA9IG5ldyBTdGFydENhc2VQaXBlKCk7XHJcblxyXG4gIHB1YmxpYyBpZDogVElkO1xyXG5cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHZhbHVlOiBUVmFsdWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogUGFydGlhbDxPcHRpb248VFZhbHVlLCBUSWQ+Pikge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwcm9wcyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgdGhpcy5uYW1lID0gdGhpcy52YWx1ZT8udG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5pZCA9IHRoaXMubmFtZSBhcyBhbnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIG9wdGlvbnMgZnJvbSBzcGVjaWZpZWQgRW51bVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGVudW1UeXBlIEVudW0gdHlwZVxyXG4gICAqIEBwYXJhbSBpbnNlcnRTcGFjZUJlZm9yZURpZ2l0cyBTaG91bGQgaW5zZXJ0IGEgc3BhY2UgYmVmb3JlIGRpZ2l0IHByZXNlbnQgaW4gc3RyaW5nLiBFLmcuIFwiZXZlcnkxME1vbnRoXCIgPT4gXCJFdmVyeSAxMCBNb250aFwiXHJcbiAgICogQHJldHVybnMgQ29sbGVjdGlvbiBvZiBvcHRpb25zXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBGb3JFbnVtPFRFbnVtIGV4dGVuZHMgbnVtYmVyIHwgc3RyaW5nPihcclxuICAgIGVudW1UeXBlOiBhbnksXHJcbiAgICBvcHRpb25zOiBGb3JtYXR0ZXJPcHRpb25zID0geyBpbnNlcnRTcGFjZUJlZm9yZURpZ2l0czogZmFsc2UsIGluc2VydFNwYWNlQmVmb3JlQWJicmV2aWF0aW9uczogZmFsc2UgfSk6IE9wdGlvbjxURW51bT5bXSB7XHJcbiAgICBsZXQgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGVudW1UeXBlKSBhcyBbc3RyaW5nLCBzdHJpbmcgfCBudW1iZXJdW107O1xyXG5cclxuICAgIGxldCBudW1iZXJFbnRyaWVzID0gZW50cmllcy5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIGFzIFtzdHJpbmcsIG51bWJlcl1bXTtcclxuXHJcbiAgICByZXR1cm4gKG51bWJlckVudHJpZXMubGVuZ3RoID4gMCA/IG51bWJlckVudHJpZXMgOiBlbnRyaWVzKVxyXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHN0cmluZyB8IG51bWJlcl0pID0+IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgT3B0aW9uPFRFbnVtPih7XHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5zdGFydENhc2VQaXBlLnRyYW5zZm9ybShrZXksIG9wdGlvbnMuaW5zZXJ0U3BhY2VCZWZvcmVEaWdpdHMsIG9wdGlvbnMuaW5zZXJ0U3BhY2VCZWZvcmVBYmJyZXZpYXRpb25zKSxcclxuICAgICAgICAgIG5hbWU6IGtleSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSBhcyBURW51bSxcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIHNpbXBsaWZpZWQgYXBpIHRvIHdvcmsgd2l0aCBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIGFuZCBwcmVkZWZpbmVkIGNvbnRyb2wgY29tcG9uZW50cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWVsZDxUVmFsdWUsIFRPcHRpb24gPSBUVmFsdWUsIFRPcHRpb25Hcm91cCA9IGFueSwgVEZvcm1hdHRlZFZhbHVlID0gYW55LCBUQ29udHJvbFZhbHVlID0gVFZhbHVlPiB7XHJcblxyXG4gIHByaXZhdGUgb3B0aW9uQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDxUT3B0aW9uW10+KCk7XHJcblxyXG4gIHByaXZhdGUgX29wdGlvbnM6IFRPcHRpb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgX2luaXRpYWxTdGF0dXM6IHsgZGlzYWJsZWQ6IGJvb2xlYW4gfTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQW5ndWxhciBGb3JtQ29udHJvbCBvZiBmaWVsZC4gQ29udHJvbCBjb21wb25lbnRzIGNvbW11bmljYXRlcyB2aWEgdGhpcyBjb250cm9sIGJldHdlZW4gRmllbGQgYW5kIFVJXHJcbiAgICovXHJcbiAgcHVibGljIGNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gY29udHJvbCByb290IEhUTUwgZWxlbWVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBlbGVtZW50PzogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgYSBmaWVsZCBpbnNpZGUgcGFyZW50J3MgRm9ybUdyb3VwLCBldGMuXHJcbiAgICovXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogUGxhY2Vob2xkZXIgb2YgYSBmaWVsZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgb2YgYSBmaWVsZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5mbyB0ZXh0IG9mIGZpZWxkIHNob3dlZCBpbiBtYXQtaGludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmZvPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0aW9ucyBvZiBhIGZpZWxkXHJcbiAgICovXHJcbiAgcHVibGljIHZhbGlkYXRpb246IFZhbGlkYXRpb248VFZhbHVlPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRmllbGQgdmFsdWUgZm9ybWF0dGVyIHdoaWNoIGlzIHVzZWQgYnkge0BsaW5rIGZvcm1hdHRlZFZhbHVlfS4gU2VlIGxpc3Qgb2YgYnVpbHQtaW4ge0BsaW5rIEZvcm1hdHRlcnN9XHJcbiAgICovXHJcbiAgcHVibGljIGZvcm1hdHRlcjogKGZpZWxkOiBGaWVsZDxUVmFsdWUsIFRPcHRpb24sIFRPcHRpb25Hcm91cCwgVEZvcm1hdHRlZFZhbHVlLCBUQ29udHJvbFZhbHVlPikgPT4gVEZvcm1hdHRlZFZhbHVlO1xyXG5cclxuICAvKipcclxuICAgKiBGaWVsZCdzIENvbnRyb2wgdmFsdWUgY29udmVydGVyLCBjb252ZXJzaW9uIGlzIGRvbmUgd2hlbmV2ZXIgdmFsdWUgaXMgYmVpbmcgcmVhZCBmcm9tL3dyaXR0ZW4gdG8gYSB7QGxpbmsgY29udHJvbH0uXHJcbiAgICovXHJcbiAgcHVibGljIGNvbnRyb2xDb252ZXJ0ZXI6IEZpZWxkQ29udHJvbFZhbHVlQ29udmVydGVyPFRWYWx1ZSwgVENvbnRyb2xWYWx1ZT4gPSB7XHJcbiAgICBmcm9tQ29udHJvbFZhbHVlOiBjb250cm9sVmFsdWUgPT4gY29udHJvbFZhbHVlIGFzIGFueSBhcyBUVmFsdWUsXHJcbiAgICB0b0NvbnRyb2xWYWx1ZTogdmFsdWUgPT4gdmFsdWUgYXMgYW55IGFzIFRDb250cm9sVmFsdWUsXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJlcyB3aGVuIGZpZWxkIHNob3VsZCBiZSB2aXNpYmxlLCBieSBkZWZhdWx0IGlzIGFsd2F5cyB2aXNpYmxlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB2aXNpYmlsaXR5UHJvdmlkZXI/OiAoKSA9PiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIGZpZWxkXHJcbiAgICovXHJcbiAgcHVibGljIGhpZ2hsaWdodD86ICgpID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciBmaWVsZCBpcyBxdWVyeWluZyBkYXRhOiBvcHRpb25zLCBldGMuXHJcbiAgICovXHJcbiAgcHVibGljIGlzUXVlcnlpbmc6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZmllbGQncyBwYXJlbnQgYXMgZm9ybSBncm91cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZm9ybUdyb3VwKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8ucGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGZpZWxkJ3MgdmlzaWJpbGl0eSBzdGF0dXMuIEJhc2VkIG9uIHtAbGluayB2aXNpYmlsaXR5UHJvdmlkZXJ9LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdmlzaWJsZSgpIHtcclxuICAgIHJldHVybiAhdGhpcy52aXNpYmlsaXR5UHJvdmlkZXIgfHwgdGhpcy52aXNpYmlsaXR5UHJvdmlkZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZmllbGQncyB2aXNpYmlsaXR5IHN0YXR1cy4gQmFzZWQgb24ge0BsaW5rIHZpc2liaWxpdHlQcm92aWRlcn0uXHJcbiAgICovXHJcbiAgcHVibGljIHNldCB2aXNpYmxlKGlzVmlzaWJsZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy52aXNpYmlsaXR5UHJvdmlkZXIgPSAoKSA9PiAhIWlzVmlzaWJsZTtcclxuXHJcbiAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBmaWVsZCdzIHZhbHVlLiBBcHBsaWVzIGNvbnZlcnNpb24gaWYgc3BlY2lmaWVkIGF0IHtAbGluayBjb250cm9sQ29udmVydGVyfS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbENvbnZlcnRlci5mcm9tQ29udHJvbFZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGZpZWxkJ3MgdmFsdWUuIEFwcGxpZXMgY29udmVyc2lvbiBpZiBzcGVjaWZpZWQgYXQge0BsaW5rIGNvbnRyb2xDb252ZXJ0ZXJ9LlxyXG4gICAqIElmIHByZXZpb3VzIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgdmFsdWUsIHtAbGluayBvblZhbHVlQ2hhbmdlfSB3b250IGVtaXQgY2hhbmdlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFRWYWx1ZSkge1xyXG4gICAgbGV0IGNvbnZlcnRlZFZhbHVlID0gdGhpcy5jb250cm9sQ29udmVydGVyLnRvQ29udHJvbFZhbHVlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAoY29udmVydGVkVmFsdWUgIT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShjb252ZXJ0ZWRWYWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZm9ybWF0dGVkIHZhbHVlLCBhcHBsaWVzIHtAbGluayBmb3JtYXR0ZXJ9IGlmIGV4aXN0c1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogVEZvcm1hdHRlZFZhbHVlIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdHRlclxyXG4gICAgICA/IHRoaXMuZm9ybWF0dGVyKHRoaXMpXHJcbiAgICAgIDogdGhpcy52YWx1ZSBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIEZpZWxkJ3Mgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBUT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIEZpZWxkJ3Mgb3B0aW9ucyBhbmQgbm90aWZpZXMgc3Vic2NyaWJlcnMuXHJcbiAgICovXHJcbiAgcHVibGljIHNldCBvcHRpb25zKHZhbHVlOiBUT3B0aW9uW10pIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsICYmIHRoaXMudXBkYXRlVmFsdWVXaGVuT3B0aW9uc0NoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zZXRGcm9tT3B0aW9ucyhvcHRpb24gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLm1hcCh0aGlzLm9wdGlvbklkKS5jb250YWlucyh0aGlzLm9wdGlvbklkKG9wdGlvbikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy52YWx1ZU9mKCkgPT0gdGhpcy5vcHRpb25WYWx1ZShvcHRpb24pPy52YWx1ZU9mKCkgfHxcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25JZCh0aGlzLnZhbHVlIGFzIGFueSkgPT0gdGhpcy5vcHRpb25JZChvcHRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvbiBmb3IgaW50ZXJuYWwgY29udHJvbHNcclxuICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycyk7XHJcblxyXG4gICAgdGhpcy5vcHRpb25DaGFuZ2VzJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgb3B0aW9uIGNoYW5nZXMgc3RyZWFtXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBvcHRpb25DaGFuZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9uQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGN1c3RvbU9wdGlvbkZpbHRlclByZWRpY2F0ZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgZmllbGQgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gb3B0aW9ucyBjaGFuZ2VkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZVdoZW5PcHRpb25zQ2hhbmdlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJlcyB3aGVuIEZpZWxkIHNob3VsZCBiZSBkZXN0cm95ZWQuXHJcbiAgICogSWYgXCJjb250cm9sXCIgLSBGaWVsZCBpcyBkZXN0cm95ZWQgd2hlbiBjb250cm9sIG5nT25EZXN0cm95IG1ldGhvZCBjYWxsZWQuXHJcbiAgICogSWYgXCJlZGl0b3JcIiAtIEZpZWxkIGlzIGRlc3Ryb3llZCB3aGVuIGVkaXRvciBkZXN0cm95IG1ldGhvZCBjYWxsZWQuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBEZWZhdWx0IHZhbHVlOiBcImNvbnRyb2xcIlxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZXN0b3J5V2l0aDogXCJjb250cm9sXCIgfCBcImVkaXRvclwiID0gXCJjb250cm9sXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbnMgZmlsdGVyIHByZWRpY2F0ZSB0aGF0IGlzIHVzZWQgYnkgc2VsZWN0LWNvbnRyb2wsIGJ5IGRlZmF1bHQgZmlsdGVycyBieSBvcHRpb24gbGFiZWxcclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uc0ZpbHRlclByZWRpY2F0ZTogKG9wdGlvbjogVE9wdGlvbiwgZmlsdGVyOiBzdHJpbmcpID0+IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBvcHRpb24gaWRlbnRpZmllciB0aGF0IGlzIHVzZWQgYnkgc2VsZWN0LWNvbnRyb2wgdG8gY29tcGFyZSBvcHRpb25zXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbklkOiAob3B0aW9uOiBUT3B0aW9uLCBpbmRleD86IG51bWJlcikgPT4gbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gb3B0aW9uIGxhYmVsIHByb3ZpZGVyIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25MYWJlbDogKG9wdGlvbjogVE9wdGlvbikgPT4gc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgdG8gc3BlY2lmeSBvcHRpb24gZGlzcGxheSBsYWJlbCB3aGVuIHNlbGVjdGVkIG9yIGJlaW5nIGhvdmVyZWRcclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uRGlzcGxheUxhYmVsPzogKG9wdGlvbjogVE9wdGlvbikgPT4gc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gb3B0aW9uIHZhbHVlIHByb3ZpZGVyIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25WYWx1ZTogKG9wdGlvbjogVE9wdGlvbikgPT4gVENvbnRyb2xWYWx1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIG9wdGlvbiBhdmFpbGFiaWxpdHkgcHJvdmlkZXIgdGhhdCBpcyB1c2VkIGJ5IHNlbGVjdC1jb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbkRpc2FibGVkOiAob3B0aW9uOiBUT3B0aW9uKSA9PiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25zIHByb3ZpZGVyIGZ1bmN0aW9uIGFjY2VwdGluZyBzdHJpbmcgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgb3B0aW9uc1Byb3ZpZGVyPzogKHF1ZXJ5OiBzdHJpbmcpID0+IE9ic2VydmFibGU8VE9wdGlvbltdPjtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9ucyBncm91cCBwcm92aWRlciB0aGF0IGlzIHVzZWQgYnkgc2VsZWN0LWNvbnRyb2wuXHJcbiAgICovXHJcbiAgcHVibGljIG9wdGlvbnNHcm91cFByb3ZpZGVyPzogKG9wdGlvbjogVE9wdGlvbikgPT4gVE9wdGlvbkdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gb3B0aW9uIGdyb3VwIGxhYmVsIHByb3ZpZGVyIHRoYXQgaXMgdXNlZCBieSBzZWxlY3QtY29udHJvbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcHRpb25Hcm91cExhYmVsOiAob3B0aW9uR3JvdXA6IFRPcHRpb25Hcm91cCkgPT4gc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wczogRmllbGRDb25zdHJ1Y3RvcjxUVmFsdWUsIFRPcHRpb24sIFRPcHRpb25Hcm91cCwgVEZvcm1hdHRlZFZhbHVlLCBUQ29udHJvbFZhbHVlPikge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uID0gbmV3IFZhbGlkYXRpb24ocHJvcHMudmFsaWRhdGlvbiB8fCB7fSk7XHJcblxyXG4gICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICB7XHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29udHJvbENvbnZlcnRlci50b0NvbnRyb2xWYWx1ZShwcm9wcy52YWx1ZSksXHJcblxyXG4gICAgICAgIC8vIHN1cHByZXNzZXMgdmFsaWRhdGlvbiB0aGF0IG1pZ2h0IGhhdmUgZGVwZW5kZW5jaWVzXHJcbiAgICAgICAgLy8gb24gb3RoZXIgZmllbGRzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgaW5zdGFudGlhdGVkXHJcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgID8gcHJvcHMuZGlzYWJsZWRcclxuICAgICAgICAgIDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRpb24uZ2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb24pLFxyXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yczogVmFsaWRhdGlvbi5nZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uKSxcclxuICAgICAgICB1cGRhdGVPbjogcHJvcHMudXBkYXRlT24sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3VzdG9tT3B0aW9uRmlsdGVyUHJlZGljYXRlID0gISFwcm9wcy5vcHRpb25zRmlsdGVyUHJlZGljYXRlO1xyXG5cclxuICAgIC8vIGRvIG5vdCBmaWx0ZXIgb3B0aW9uIGlmIHNlYXJjaCBwcm92aWRlciBpcyB1c2VkXHJcbiAgICB0aGlzLm9wdGlvbnNGaWx0ZXJQcmVkaWNhdGUgPSBwcm9wcy5vcHRpb25zUHJvdmlkZXJcclxuICAgICAgPyAoKSA9PiB0cnVlXHJcbiAgICAgIDogKG9wdGlvbiwgZmlsdGVyKSA9PiB0aGlzLm9wdGlvbkxhYmVsKG9wdGlvbik/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpO1xyXG5cclxuICAgIHRoaXMub3B0aW9uR3JvdXBMYWJlbCA9IG9wdGlvbkdyb3VwID0+IG9wdGlvbkdyb3VwPy50b1N0cmluZygpO1xyXG4gICAgdGhpcy5vcHRpb25JZCA9IG9wdGlvbiA9PiBvcHRpb24gaW5zdGFuY2VvZiBPcHRpb24gPyBvcHRpb24uaWQgOiBvcHRpb247XHJcbiAgICB0aGlzLm9wdGlvbkxhYmVsID0gb3B0aW9uID0+IG9wdGlvbiBpbnN0YW5jZW9mIE9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbj8udG9TdHJpbmcoKTtcclxuICAgIHRoaXMub3B0aW9uVmFsdWUgPSBvcHRpb24gPT4gb3B0aW9uIGluc3RhbmNlb2YgT3B0aW9uID8gb3B0aW9uLnZhbHVlIDogb3B0aW9uO1xyXG4gICAgdGhpcy5vcHRpb25EaXNhYmxlZCA9IF8gPT4gZmFsc2U7XHJcblxyXG4gICAgLy8gaW5kaWNhdGVkIGZvcm0gdGhhdCBjb250cm9sIHNob3VsZCByZW1haW4gZGlzYWJsZWRcclxuICAgIGlmIChwcm9wcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLl9pbml0aWFsU3RhdHVzID0geyBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgfTtcclxuXHJcbiAgICAgIGRlbGV0ZSBwcm9wcy5kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvcHMub25WYWx1ZUNoYW5nZSkge1xyXG4gICAgICBsZXQgb25WYWx1ZUNoYW5nZSA9IHByb3BzLm9uVmFsdWVDaGFuZ2U7XHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2xcclxuICAgICAgICAudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXJQcmVkaWNhdGUoKCkgPT4gdGhpcy5jb250cm9sLmVuYWJsZWQpLFxyXG4gICAgICAgICAgbWFwKHRoaXMuY29udHJvbENvbnZlcnRlci5mcm9tQ29udHJvbFZhbHVlKSxcclxuICAgICAgICAgIHN0YXJ0V2l0aChwcm9wcy52YWx1ZSksXHJcbiAgICAgICAgICBwYWlyd2lzZSgpLFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChbcHJldmlvdXMsIGN1cnJlbnRdKSA9PiBoYW5kbGVFcnJvcigoKSA9PiBvblZhbHVlQ2hhbmdlKGN1cnJlbnQgYXMgVFZhbHVlLCBwcmV2aW91cykpKTtcclxuXHJcbiAgICAgIGRlbGV0ZSBwcm9wcy5vblZhbHVlQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wcy5vbk9wdGlvbnNDaGFuZ2UpIHtcclxuICAgICAgbGV0IG9uT3B0aW9uc0NoYW5nZSA9IHByb3BzLm9uT3B0aW9uc0NoYW5nZTtcclxuXHJcbiAgICAgIHRoaXMub3B0aW9uQ2hhbmdlcyRcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZShvcHRpb25zID0+IGhhbmRsZUVycm9yKCgpID0+IG9uT3B0aW9uc0NoYW5nZShvcHRpb25zKSkpO1xyXG5cclxuICAgICAgZGVsZXRlIHByb3BzLm9uT3B0aW9uc0NoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvcHMub3B0aW9ucykge1xyXG4gICAgICB0aGlzLnNldE9wdGlvbnMocHJvcHMub3B0aW9ucyk7XHJcblxyXG4gICAgICBkZWxldGUgcHJvcHMub3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUgcHJvcHMudmFsaWRhdGlvbjtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHByb3BzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgRmllbGQncyBvcHRpb25zLiBTdWJzY3JpYmVzIHRvIE9ic2VydmFibGUgaW5wdXQgYW5kIHRyYWNrcyBzdGF0dXMgaW4ge0BsaW5rIGlzUXVlcnlpbmd9IHByb3BlcnR5XHJcbiAgICovXHJcbiAgcHVibGljIHNldE9wdGlvbnModmFsdWU6IFRPcHRpb25bXSB8IE9ic2VydmFibGU8VE9wdGlvbltdPikge1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xyXG4gICAgICB0aGlzLmlzUXVlcnlpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gZW1pdCBjb250cm9sIHN0YXR1cyBjaGFuZ2UgZXZlbnQgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGJ5IGNvbnRyb2xzXHJcbiAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNQZW5kaW5nKHsgb25seVNlbGY6IHRydWUgfSk7XHJcblxyXG4gICAgICB2YWx1ZVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlyc3QoKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IG9wdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgICAgICB0aGlzLmlzUXVlcnlpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vIG9wcG9zaXRlIGFjdGlvbiB0byBcImNvbnRyb2wubWFya0FzUGVuZGluZ1wiXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RzIHZhbHVlcyBmcm9tIGF2YWlsYWJsZSBvcHRpb25zIGJhc2VkIG9uIG9wdGlvbnMgcHJlZGljYXRlLiBIb25vcnNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBvcHRpb25QcmVkaWNhdGUgT3B0aW9ucyBwcmVkaWNhdGUgdGhhdCB3aWxsIHNlbGVjdCB2YWx1ZXMgZnJvbVxyXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJlcyBkZWZhdWx0IHZhbHVlIGlmIG5vdGhpbmcgc2VsZWN0ZWQgb3Igc2hvdWxkIGl0IGVtaXQgdmFsdWUgY2hhbmdlIGV2ZW50LlxyXG4gICAqIEByZXR1cm5zIFByb21pc2VcclxuICAgKi9cclxuICBwdWJsaWMgc2V0RnJvbU9wdGlvbnMoXHJcbiAgICBvcHRpb25QcmVkaWNhdGU6IChvcHRpb246IFRPcHRpb24pID0+IGJvb2xlYW4sXHJcbiAgICBjb25maWc6IHsgZGVmYXVsdFZhbHVlPzogVFZhbHVlOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0gPSB7IGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLCBlbWl0RXZlbnQ6IHRydWUgfSxcclxuICApIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcclxuICAgICAgbGV0IG9wdGlvbnNQcm92aWRlciA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMub3B0aW9ucy5maWx0ZXIob3B0aW9uUHJlZGljYXRlKS5tYXAodGhpcy5vcHRpb25WYWx1ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHhvckJ5KHRoaXMuY29udHJvbC52YWx1ZSwgdmFsdWUsIHRoaXMub3B0aW9uSWQgYXMgYW55KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSBhcyBhbnkgYXMgVENvbnRyb2xWYWx1ZSwgeyBlbWl0RXZlbnQ6IGNvbmZpZy5lbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZSh0aGlzLm9wdGlvbnMuZmluZChvcHRpb25QcmVkaWNhdGUpKSA/PyB0aGlzLmNvbnRyb2xDb252ZXJ0ZXIudG9Db250cm9sVmFsdWUoY29uZmlnLmRlZmF1bHRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdGhpcy5jb250cm9sLnZhbHVlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25JZCh2YWx1ZSBhcyBhbnkpPy52YWx1ZU9mKCkgIT09IHRoaXMub3B0aW9uSWQodGhpcy5jb250cm9sLnZhbHVlIGFzIGFueSk/LnZhbHVlT2YoKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGNvbmZpZy5lbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICgodmFsdWUgIT0gbnVsbCkgIT0gKHRoaXMuY29udHJvbC52YWx1ZSAhPSBudWxsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBjb25maWcuZW1pdEV2ZW50IH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNRdWVyeWluZykge1xyXG4gICAgICAgIHRoaXMub3B0aW9uQ2hhbmdlcyRcclxuICAgICAgICAgIC5waXBlKGZpcnN0KCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IG9wdGlvbnNQcm92aWRlcigpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBvcHRpb25zUHJvdmlkZXIoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGZpZWxkIHZhbGlkYXRpb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uIFZhbGlkYXRpb24gY29uc3RydWN0b3IgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVWYWxpZGF0aW9uKHZhbGlkYXRpb246IFZhbGlkYXRpb25Db25zdHJ1Y3RvcjxUVmFsdWU+KSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudmFsaWRhdGlvbiwgbmV3IFZhbGlkYXRpb24odmFsaWRhdGlvbikpO1xyXG5cclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRpb24uZ2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb24pKTtcclxuICAgIHRoaXMuY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoVmFsaWRhdGlvbi5nZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXN0cm95cyBmaWVsZCBhbmQgaXRzIHN1YnNjcmlwdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dChudWxsKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19

@@ -31,3 +31,9 @@ import { switchMap } from 'rxjs/operators';

overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker.ngOnInit, () => { });
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker._updateModel, (updateModel, timePicker) => timePicker._model && updateModel());
// ensure timepicker model is set when user performs interaction
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker._updateModel, (updateModel, timePicker) => {
if (!timePicker._model) {
timePicker._model = new Date();
}
return updateModel();
});
overrideFunction(NgxMatTimepickerComponent.prototype, timePicker => timePicker.writeValue, (writeValue, timePicker, value) => {

@@ -104,3 +110,2 @@ if (!value) {

datePickerOpened() {
this.timePicker._model = new Date();
overrideFunction(this.datepickerContent, content => content._handleUserSelection, (handleUserSelection, _, event) => {

@@ -107,0 +112,0 @@ handleUserSelection(event);

@@ -156,3 +156,3 @@ import { castArray } from 'lodash-es';

showClearButton() {
return this.clearable && !this.field.isQuerying && this.selection.hasValue();
return this.field.control.enabled && this.clearable && !this.field.isQuerying && this.selection.hasValue();
}

@@ -159,0 +159,0 @@ isSearchAvailable() {

@@ -413,3 +413,2 @@ import { from, Observable, Subject, of, forkJoin } from 'rxjs';

: (option, filter) => { var _a; return (_a = this.optionLabel(option)) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(filter.toLowerCase()); };
this.visibilityProvider = () => true;
this.optionGroupLabel = optionGroup => optionGroup === null || optionGroup === void 0 ? void 0 : optionGroup.toString();

@@ -458,3 +457,3 @@ this.optionId = option => option instanceof Option ? option.id : option;

get visible() {
return !!this.visibilityProvider(this.value);
return !this.visibilityProvider || this.visibilityProvider();
}

@@ -461,0 +460,0 @@ /**

import { Observable, Subject } from "rxjs";
import { FormControl, FormGroup } from "@angular/forms";
import { Validation, ValueProvider, ValidationConstructor } from "./validation.model";
import { Validation, ValidationConstructor } from "./validation.model";
/**

@@ -137,3 +137,3 @@ * Constructor object for Field class

*/
visibilityProvider: ValueProvider<TValue, boolean>;
visibilityProvider?: () => boolean;
/**

@@ -140,0 +140,0 @@ * Highlights field

{
"name": "angular-extensions",
"version": "12.0.24",
"version": "12.0.25",
"repository": "https://github.com/nazar-kuzo/angular-extensions.git",

@@ -5,0 +5,0 @@ "author": "Nazar Kuzo",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc