@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.48
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/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
- package/esm2020/lib/components/loader/loader.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +2 -2
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
- package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
- package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
- package/esm2020/lib/services/base-tab.service.mjs +4 -4
- package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
- package/esm2020/lib/services/content.service.mjs +4 -4
- package/esm2020/lib/services/filter.service.mjs +4 -4
- package/esm2020/lib/services/intervention.service.mjs +4 -4
- package/esm2020/lib/services/locale.service.mjs +4 -4
- package/esm2020/lib/services/matterport-import.service.mjs +4 -4
- package/esm2020/lib/services/matterport.service.mjs +4 -4
- package/esm2020/lib/services/models/affectation.service.mjs +4 -4
- package/esm2020/lib/services/models/base-object.service.mjs +4 -4
- package/esm2020/lib/services/models/capture.service.mjs +4 -4
- package/esm2020/lib/services/models/comment.service.mjs +4 -4
- package/esm2020/lib/services/models/domain.service.mjs +4 -4
- package/esm2020/lib/services/models/equipment.service.mjs +4 -4
- package/esm2020/lib/services/models/event.service.mjs +4 -4
- package/esm2020/lib/services/models/feature.service.mjs +4 -4
- package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
- package/esm2020/lib/services/models/layer.service.mjs +4 -4
- package/esm2020/lib/services/models/measurement.service.mjs +4 -4
- package/esm2020/lib/services/models/mission.service.mjs +4 -4
- package/esm2020/lib/services/models/navigation.service.mjs +4 -4
- package/esm2020/lib/services/models/node.service.mjs +4 -4
- package/esm2020/lib/services/models/object3D.service.mjs +4 -4
- package/esm2020/lib/services/models/operation.service.mjs +4 -4
- package/esm2020/lib/services/models/organisation.service.mjs +4 -4
- package/esm2020/lib/services/models/plan.service.mjs +4 -4
- package/esm2020/lib/services/models/poi.service.mjs +4 -4
- package/esm2020/lib/services/models/profile.service.mjs +4 -4
- package/esm2020/lib/services/models/property.service.mjs +4 -4
- package/esm2020/lib/services/models/space.service.mjs +4 -4
- package/esm2020/lib/services/models/template.service.mjs +4 -4
- package/esm2020/lib/services/models/ticket.service.mjs +4 -4
- package/esm2020/lib/services/models/visit.service.mjs +4 -4
- package/esm2020/lib/services/models/zone.service.mjs +4 -4
- package/esm2020/lib/services/navigator.service.mjs +4 -4
- package/esm2020/lib/services/search.service.mjs +4 -4
- package/esm2020/lib/services/support.service.mjs +4 -4
- package/esm2020/lib/services/tag.service.mjs +4 -4
- package/esm2020/lib/services/user.service.mjs +4 -4
- package/esm2020/lib/services/validators.service.mjs +4 -4
- package/esm2020/lib/services/viewer.service.mjs +4 -4
- package/esm2020/lib/services/zoneChange.service.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +182 -182
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +182 -182
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/package.json +13 -13
- package/src/assets/vs-app.json +67 -0
|
@@ -136,12 +136,12 @@ export class RangeDatePickerComponent {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
RangeDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
140
|
-
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
139
|
+
RangeDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, deps: [{ token: i1.NgbCalendar }, { token: i1.NgbDateParserFormatter }, { token: i2.FilterService }, { token: i3.AmplifyCacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<form class=\"form-inline\">\r\n <div class=\"mb-3 hidden\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 ms-0 ms-md-2\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <button class=\"btn btn-outline-primary rounded-pill ms-3\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-3\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-3\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>\r\n", styles: [".mb-3.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}.mb-3{margin-bottom:15px}}.mb-3.hidden{opacity:0}.confirmation-button{display:flex;padding:.5rem}\n"], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "formatDateNumberToDigits": i6.FormatDateNumberToDigitsPipe, "translate": i7.TranslatePipe } });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
143
|
args: [{ selector: 'lib-range-date-picker', template: "<form class=\"form-inline\">\r\n <div class=\"mb-3 hidden\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 ms-0 ms-md-2\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <button class=\"btn btn-outline-primary rounded-pill ms-3\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-3\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-3\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>\r\n", styles: [".mb-3.hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}.mb-3{margin-bottom:15px}}.mb-3.hidden{opacity:0}.confirmation-button{display:flex;padding:.5rem}\n"] }]
|
|
144
144
|
}], ctorParameters: function () { return [{ type: i1.NgbCalendar }, { type: i1.NgbDateParserFormatter }, { type: i2.FilterService }, { type: i3.AmplifyCacheService }]; }, propDecorators: { cacheName: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL3JhbmdlLWRhdGUtcGlja2VyL3JhbmdlLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9yYW5nZS1kYXRlLXBpY2tlci9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVNwQyxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQ1UsUUFBcUIsRUFDdEIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFIakMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFsQjNDLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQVVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFRM0Isa0VBQWtFO1FBQ2xFLHFDQUFxQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3RDtR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QUMsS0FBSyxHQUFHLENBQUMsRUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2hCLENBQUM7WUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7O3FIQW5MVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpR0NkckMsa25GQStDQTsyRkRqQ2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFXeEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiQ2FsZW5kYXIsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFtcGxpZnlDYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcmFuZ2UtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHVibGljIGZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBbXBsaWZ5Q2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmZyb21EYXRlID0gY2FsZW5kYXIuZ2V0UHJldihjYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgMzApO1xyXG4gICAgLy8gdGhpcy50b0RhdGUgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jYWNoZSkge1xyXG4gICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSB0cnVlO1xyXG4gICAgICBsZXQgeyBmcm9tLCB0byB9ID0gdGhpcy5jYWNoZTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKGZyb20pO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIGZyb20udG9TdHJpbmcoKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgdG8udG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbbmV3IERhdGUoZnJvbSksIG5ldyBEYXRlKHRvKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy9nZXQgY3VycmVudCB0aW1lc3RhbXBcclxuICAgICAgY29uc3QgdGhpcnR5RGF5c0Fnb0RhdGUgPSBjdXJyZW50RGF0ZSAtIDMwICogMjQgKiA2MCAqIDYwICogMTAwMDsgLy9zdWJzdHJhY3QgMzAgZGF5cyBpbiBtaWxpc2Vjb25kcyBmcm9tIHRoZSBjdXJyZW50IHRpbWVzdGFtcFxyXG5cclxuICAgICAgLy8gYWRkIGRhdGVzIHRvIGxvY2Fsc3RvcmFnZSBmb3IgcmV0b29sIHVybHNQYXJhbXNcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIHRoaXJ0eURheXNBZ29EYXRlLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIGN1cnJlbnREYXRlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgLy8gdXBkYXRlcyBkYXRlIHJhbmdlIGRhdGVzIHRvIGxhc3QgMzAgZGF5cyByYW5nZXMgZnJvbSB0b2RheVxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRoaXJ0eURheXNBZ29EYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUoY3VycmVudERhdGUpO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmRhdGVGaWx0ZXJVcGRhdGVkKFtcclxuICAgICAgICBuZXcgRGF0ZSh0aGlydHlEYXlzQWdvRGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgICBuZXcgRGF0ZShjdXJyZW50RGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ2JEYXRlKGRhdGU6IG51bWJlcik6IE5nYkRhdGUge1xyXG4gICAgbGV0IGR0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBkdC5zZXRNaW51dGVzKGR0LmdldE1pbnV0ZXMoKSAtIGR0LmdldFRpbWV6b25lT2Zmc2V0KCkpOyAvLyBjb252ZXJ0IHRvIFVUQ1xyXG4gICAgcmV0dXJuIG5ldyBOZ2JEYXRlKFxyXG4gICAgICBkdC5nZXRVVENGdWxsWWVhcigpLFxyXG4gICAgICBkdC5nZXRVVENNb250aCgpICsgMSxcclxuICAgICAgZHQuZ2V0VVRDRGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0aW9uKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIGlmICghdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICBkYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0RhdGVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVDaGFuZ2VkKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICF0aGlzLmZyb21EYXRlLmVxdWFscyh0aGlzLmdldE5nYkRhdGUodGhpcy5jYWNoZS5mcm9tKSkgfHxcclxuICAgICAgICAgICF0aGlzLnRvRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUudG8pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiZcclxuICAgICAgIXRoaXMudG9EYXRlICYmXHJcbiAgICAgIHRoaXMuaG92ZXJlZERhdGUgJiZcclxuICAgICAgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJlxyXG4gICAgICBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuICAgIHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKVxyXG4gICAgICA/IE5nYkRhdGUuZnJvbShwYXJzZWQpXHJcbiAgICAgIDogY3VycmVudFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZW1pdFJhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUueWVhcixcclxuICAgICAgICB0aGlzLmZyb21EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLmZyb21EYXRlLmRheVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB0byA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMudG9EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy50b0RhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLmRheSxcclxuICAgICAgICAyMyxcclxuICAgICAgICA1OVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5wdXRJbkNhY2hlKHRoaXMuY2FjaGVOYW1lLCB7XHJcbiAgICAgICAgZnJvbTogZnJvbS5nZXRUaW1lKCksXHJcbiAgICAgICAgdG86IHRvLmdldFRpbWUoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbZnJvbSwgdG9dKTtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhckRhdGVzKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjb25zb2xlLmxvZygndGVzdCBzZXRJdGVtIGZyb20gOiAnICsgc3RhcnREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvRGF0ZSkge1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy50b0RhdGUueWVhcixcclxuICAgICAgICB0aGlzLnRvRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy50b0RhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgZW5kRGF0ZS5nZXRUaW1lKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nYkRhdGVwaWNrZXIgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIiBbZGlzcGxheU1vbnRoc109XCIyXCIgW2RheVRlbXBsYXRlXT1cInRcIlxyXG4gICAgICAgICAgICAgICAgb3V0c2lkZURheXM9XCJoaWRkZW5cIiBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0IGxldC1kYXRlIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCIgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkRGF0ZSA9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwRnJvbURhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImRkL01NL3l5eXlcIiBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZnJvbURhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cImZyb21EYXRlID0gdmFsaWRhdGVJbnB1dChmcm9tRGF0ZSwgZHBGcm9tRGF0ZS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY2FsZW5kYXJcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIG1zLTAgbXMtbWQtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9NTS95eXl5XCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b0RhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1idXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25BcHBseSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNEYXRlRmlsdGVyQXBwbGllZCB8fCBkYXRlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGllZFRleHQgbXMtM1wiICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5XCIgZGF0YS1pY29uPVwiaW9uOmNoZWNrbWFya1wiIGRhdGEtd2lkdGg9XCIxNVwiIGRhdGEtaGVpZ2h0PVwiMTVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIHt7XCJBcHBsaWVkXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25DbGVhckRhdGVzKClcIj57eydDbGVhcicgfFxyXG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL3JhbmdlLWRhdGUtcGlja2VyL3JhbmdlLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9yYW5nZS1kYXRlLXBpY2tlci9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVNwQyxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQ1UsUUFBcUIsRUFDdEIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFIakMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFsQjNDLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQVVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFRM0Isa0VBQWtFO1FBQ2xFLHFDQUFxQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3RDtR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QUMsS0FBSyxHQUFHLENBQUMsRUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2hCLENBQUM7WUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7O3NIQW5MVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixpR0NkckMsa25GQStDQTs0RkRqQ2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFXeEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiQ2FsZW5kYXIsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFtcGxpZnlDYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcmFuZ2UtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHVibGljIGZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBbXBsaWZ5Q2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmZyb21EYXRlID0gY2FsZW5kYXIuZ2V0UHJldihjYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgMzApO1xyXG4gICAgLy8gdGhpcy50b0RhdGUgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jYWNoZSkge1xyXG4gICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSB0cnVlO1xyXG4gICAgICBsZXQgeyBmcm9tLCB0byB9ID0gdGhpcy5jYWNoZTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKGZyb20pO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIGZyb20udG9TdHJpbmcoKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgdG8udG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbbmV3IERhdGUoZnJvbSksIG5ldyBEYXRlKHRvKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy9nZXQgY3VycmVudCB0aW1lc3RhbXBcclxuICAgICAgY29uc3QgdGhpcnR5RGF5c0Fnb0RhdGUgPSBjdXJyZW50RGF0ZSAtIDMwICogMjQgKiA2MCAqIDYwICogMTAwMDsgLy9zdWJzdHJhY3QgMzAgZGF5cyBpbiBtaWxpc2Vjb25kcyBmcm9tIHRoZSBjdXJyZW50IHRpbWVzdGFtcFxyXG5cclxuICAgICAgLy8gYWRkIGRhdGVzIHRvIGxvY2Fsc3RvcmFnZSBmb3IgcmV0b29sIHVybHNQYXJhbXNcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIHRoaXJ0eURheXNBZ29EYXRlLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIGN1cnJlbnREYXRlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgLy8gdXBkYXRlcyBkYXRlIHJhbmdlIGRhdGVzIHRvIGxhc3QgMzAgZGF5cyByYW5nZXMgZnJvbSB0b2RheVxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRoaXJ0eURheXNBZ29EYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUoY3VycmVudERhdGUpO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmRhdGVGaWx0ZXJVcGRhdGVkKFtcclxuICAgICAgICBuZXcgRGF0ZSh0aGlydHlEYXlzQWdvRGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgICBuZXcgRGF0ZShjdXJyZW50RGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ2JEYXRlKGRhdGU6IG51bWJlcik6IE5nYkRhdGUge1xyXG4gICAgbGV0IGR0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBkdC5zZXRNaW51dGVzKGR0LmdldE1pbnV0ZXMoKSAtIGR0LmdldFRpbWV6b25lT2Zmc2V0KCkpOyAvLyBjb252ZXJ0IHRvIFVUQ1xyXG4gICAgcmV0dXJuIG5ldyBOZ2JEYXRlKFxyXG4gICAgICBkdC5nZXRVVENGdWxsWWVhcigpLFxyXG4gICAgICBkdC5nZXRVVENNb250aCgpICsgMSxcclxuICAgICAgZHQuZ2V0VVRDRGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0aW9uKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIGlmICghdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICBkYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0RhdGVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVDaGFuZ2VkKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICF0aGlzLmZyb21EYXRlLmVxdWFscyh0aGlzLmdldE5nYkRhdGUodGhpcy5jYWNoZS5mcm9tKSkgfHxcclxuICAgICAgICAgICF0aGlzLnRvRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUudG8pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiZcclxuICAgICAgIXRoaXMudG9EYXRlICYmXHJcbiAgICAgIHRoaXMuaG92ZXJlZERhdGUgJiZcclxuICAgICAgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJlxyXG4gICAgICBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuICAgIHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKVxyXG4gICAgICA/IE5nYkRhdGUuZnJvbShwYXJzZWQpXHJcbiAgICAgIDogY3VycmVudFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZW1pdFJhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUueWVhcixcclxuICAgICAgICB0aGlzLmZyb21EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLmZyb21EYXRlLmRheVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB0byA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMudG9EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy50b0RhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLmRheSxcclxuICAgICAgICAyMyxcclxuICAgICAgICA1OVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5wdXRJbkNhY2hlKHRoaXMuY2FjaGVOYW1lLCB7XHJcbiAgICAgICAgZnJvbTogZnJvbS5nZXRUaW1lKCksXHJcbiAgICAgICAgdG86IHRvLmdldFRpbWUoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbZnJvbSwgdG9dKTtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhckRhdGVzKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjb25zb2xlLmxvZygndGVzdCBzZXRJdGVtIGZyb20gOiAnICsgc3RhcnREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvRGF0ZSkge1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy50b0RhdGUueWVhcixcclxuICAgICAgICB0aGlzLnRvRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy50b0RhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgZW5kRGF0ZS5nZXRUaW1lKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nYkRhdGVwaWNrZXIgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIiBbZGlzcGxheU1vbnRoc109XCIyXCIgW2RheVRlbXBsYXRlXT1cInRcIlxyXG4gICAgICAgICAgICAgICAgb3V0c2lkZURheXM9XCJoaWRkZW5cIiBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0IGxldC1kYXRlIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCIgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkRGF0ZSA9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwRnJvbURhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImRkL01NL3l5eXlcIiBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZnJvbURhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cImZyb21EYXRlID0gdmFsaWRhdGVJbnB1dChmcm9tRGF0ZSwgZHBGcm9tRGF0ZS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY2FsZW5kYXJcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIG1zLTAgbXMtbWQtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9NTS95eXl5XCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b0RhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1idXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25BcHBseSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNEYXRlRmlsdGVyQXBwbGllZCB8fCBkYXRlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGllZFRleHQgbXMtM1wiICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5XCIgZGF0YS1pY29uPVwiaW9uOmNoZWNrbWFya1wiIGRhdGEtd2lkdGg9XCIxNVwiIGRhdGEtaGVpZ2h0PVwiMTVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIHt7XCJBcHBsaWVkXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25DbGVhckRhdGVzKClcIj57eydDbGVhcicgfFxyXG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|
|
@@ -23,9 +23,9 @@ export class ModalSwitchVisitComponent {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
ModalSwitchVisitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
27
|
-
ModalSwitchVisitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
26
|
+
ModalSwitchVisitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ModalSwitchVisitComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.Router }, { token: i3.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
ModalSwitchVisitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ModalSwitchVisitComponent, selector: "lib-modal-switch-visit", inputs: { content: "content", model3D: "model3D", spaceID: "spaceID", dataToMove: "dataToMove" }, ngImport: i0, template: "<div class=\"modal-container\">\r\n <p>{{content}}</p>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\r\n</div>\r\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"], pipes: { "translate": i4.TranslatePipe } });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ModalSwitchVisitComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{ selector: 'lib-modal-switch-visit', template: "<div class=\"modal-container\">\r\n <p>{{content}}</p>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\r\n</div>\r\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"] }]
|
|
31
31
|
}], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.Router }, { type: i3.ViewerService }]; }, propDecorators: { content: [{
|
|
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
37
37
|
}], dataToMove: [{
|
|
38
38
|
type: Input
|
|
39
39
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVekQsTUFBTSxPQUFPLHlCQUF5QjtJQUtsQyxZQUFtQixXQUEyQixFQUFVLE1BQWMsRUFBVSxhQUE0QjtRQUF6RixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFFeEcsQ0FBQztJQUVMLFFBQVEsS0FBVyxDQUFDO0lBRXBCLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRTtRQUNELHFGQUFxRjtRQUNyRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDekMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUhBckJRLHlCQUF5QjsyR0FBekIseUJBQXlCLGdLQ1Z0QyxzVkFLQTs0RkRLYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksd0JBQXdCO3NKQUt6QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld2VyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1tb2RhbC1zd2l0Y2gtdmlzaXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXN3aXRjaC12aXNpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC1zd2l0Y2gtdmlzaXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxTd2l0Y2hWaXNpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBtb2RlbDNEOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzcGFjZUlEOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkYXRhVG9Nb3ZlOiB7IHN3ZWVwVG9Nb3ZlOiBzdHJpbmcsIHJvdGF0aW9uOiBhbnk7IH07XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBvYmplY3RTdWJTZXJ2aWNlOiBPYmplY3RTdWJzY3JpcHRpb25TZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgc3dpdGNoVmlzaXQoKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGFUb01vdmUpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnNldFN3ZWVwVG9Nb3ZlKHRoaXMuZGF0YVRvTW92ZS5zd2VlcFRvTW92ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRSb3RhdGlvblRvTW92ZSh0aGlzLmRhdGFUb01vdmUucm90YXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLm9iamVjdFN1YlNlcnZpY2UuZm9yY2VSZW1vdmUgPSB0cnVlOyAvLyB3ZSByZXNldCB0aGUgdGFncyB3aGVuIGNoYW5naW5nIHZpc2l0XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1widmlzaXRcIiwgdGhpcy5zcGFjZUlEXSwge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyBtb2RlbDNEOiB0aGlzLm1vZGVsM0QgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgPHA+e3tjb250ZW50fX08L3A+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cInN3aXRjaFZpc2l0KClcIj57eydZZXMsIHN3aXRjaCB2aXNpdCcgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIihjbGljayk9XCJhY3RpdmVNb2RhbC5jbG9zZSgpXCI+e3snTm8sIHN0YXkgaGVyZScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -48,9 +48,9 @@ export class SearchBarComponent {
|
|
|
48
48
|
this.searchEvent.emit(results);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
52
|
-
SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
51
|
+
SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.SearchService }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: SearchBarComponent, selector: "lib-search-bar", inputs: { searchable: "searchable", objectType: "objectType" }, outputs: { searchEvent: "searchEvent" }, ngImport: i0, template: "<div class=\"col-md-8 searchbar\">\r\n <div class=\"row depend\">\r\n <div class=\"col-md-5\">\r\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\r\n </div>\r\n <div class=\"col-md-5\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n</div>", styles: [".searchbar{margin-bottom:10px}\n"], pipes: { "translate": i2.TranslatePipe } });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SearchBarComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{ selector: 'lib-search-bar', template: "<div class=\"col-md-8 searchbar\">\r\n <div class=\"row depend\">\r\n <div class=\"col-md-5\">\r\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\r\n </div>\r\n <div class=\"col-md-5\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n</div>", styles: [".searchbar{margin-bottom:10px}\n"] }]
|
|
56
56
|
}], ctorParameters: function () { return [{ type: i1.SearchService }]; }, propDecorators: { searchable: [{
|
|
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
60
60
|
}], searchEvent: [{
|
|
61
61
|
type: Output
|
|
62
62
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sa0JBQWtCO0lBVTNCLHdEQUF3RDtJQUV4RCwwREFBMEQ7SUFDMUQsaUNBQWlDO0lBQ2pDLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLGtDQUFrQztJQUNsQyx3QkFBd0I7SUFDeEIsMEJBQTBCO0lBQzFCLHVCQUF1QjtJQUN2QixvQ0FBb0M7SUFDcEMscUNBQXFDO0lBQ3JDLHdFQUF3RTtJQUN4RSx3QkFBd0I7SUFDeEIscUNBQXFDO0lBQ3JDLGFBQWE7SUFDYixTQUFTO0lBRVQsMENBQTBDO0lBRTFDLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBekJ0QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUF5QlMsQ0FBQztJQUVyRCxRQUFRO1FBQ0osTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQXFCLENBQUM7UUFDdkUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUMxQyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNuQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBcUIsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUM5RCxJQUFJLEVBQ0osSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsVUFBVSxDQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Z0hBM0RRLGtCQUFrQjtvR0FBbEIsa0JBQWtCLCtKQ1IvQixvY0FVTTs0RkRGTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO29HQU1mLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWFyY2hPYmplY3RUeXBlLCBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VhcmNoLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc2VhcmNoLWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1iYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBzZWFyY2hhYmxlOiBhbnk7XHJcblxyXG4gICAgQElucHV0KCkgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgc2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIG1vZGVsOiBhbnk7XHJcblxyXG4gICAgLy8gZm9ybWF0dGVyID0gKHJlc3VsdDogc3RyaW5nKSA9PiByZXN1bHQudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAvLyBzZWFyY2g6IE9wZXJhdG9yRnVuY3Rpb248c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4gPSAoXHJcbiAgICAvLyAgICAgdGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPixcclxuICAgIC8vICkgPT5cclxuICAgIC8vICAgICB0ZXh0JC5waXBlKFxyXG4gICAgLy8gICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgIC8vICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgIC8vICAgICAgICAgbWFwKCh0ZXJtKSA9PlxyXG4gICAgLy8gICAgICAgICAgICAgdGVybSA9PT0gXCJcIlxyXG4gICAgLy8gICAgICAgICAgICAgICAgID8gW11cclxuICAgIC8vICAgICAgICAgICAgICAgICA6IHRoaXMuc2VhcmNoYWJsZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh2KSA9PlxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSksXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIClcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIDEwKSxcclxuICAgIC8vICAgICAgICAgKSxcclxuICAgIC8vICAgICApO1xyXG5cclxuICAgIC8vIGZpbHRlciA9IChpbnB1dDogc3RyaW5nW10pID0+IHN0cmluZ1tdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3NlYXJjaGJhclwiKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsICh7IGtleSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWJtaXQoKSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3NlYXJjaGJhclwiKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFZhbHVlID0gaW5wdXQudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAoc2VhcmNoVmFsdWUgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIoc2VhcmNoVmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRXZlbnQuZW1pdChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyKHRlcm06IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoRm9yVGVybUZvclR5cGVJbk1hcChcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RUeXBlLFxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGFibGUsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlYXJjaEV2ZW50LmVtaXQocmVzdWx0cyk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC04IHNlYXJjaGJhclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBkZXBlbmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwic2VhcmNoYmFyXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwia2V5d29yZFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPnt7ICdTZWFyY2gnIHxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -57,10 +57,10 @@ export class SupportModalComponent {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
SupportModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
61
|
-
SupportModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
60
|
+
SupportModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SupportModalComponent, deps: [{ token: i1.SupportService }, { token: i2.NgbActiveModal }, { token: i3.FormBuilder }, { token: i4.BaseUserService }, { token: i5.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
+
SupportModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: SupportModalComponent, selector: "app-support-modal", ngImport: i0, template: "<div class=\"modal-header\">\r\n <h5 class=\"modal-title\" translate=\"Help\"></h5>\r\n</div>\r\n<div class=\"modal-body\">\r\n <div class=\"support-loader-container\">\r\n <lib-loader *ngIf=\"loading\"></lib-loader>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"supportForm\" style=\"margin-top:1rem;\" *ngIf=\"!loading && status==='new'\">\r\n <div>\r\n <label>{{'Title' | translate}} *</label>\r\n <div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" data-testid=\"new-support-title\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['title'])}\"\r\n maxlength=\"255\">\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"new-support-title-invalid\" [translate]=\"validatorsService.getError(supportForm.controls['title'])\"\r\n *ngIf=\" validatorsService.isControlError(supportForm.controls['title'])\"></span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!currentUser\">\r\n <label>{{'Email' | translate}} *</label>\r\n <div>\r\n <input type=\"email\" class=\"form-control\" formControlName=\"email\" data-testid=\"new-support-email\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['email'])}\"\r\n maxlength=\"255\">\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"new-support-email-invalid\" [translate]=\"validatorsService.getError(supportForm.controls['email'])\"\r\n *ngIf=\" validatorsService.isControlError(supportForm.controls['email'])\"></span>\r\n </div>\r\n </div>\r\n <div>\r\n <label>{{'Description' | translate}} *</label>\r\n <div>\r\n <textarea formControlName=\"description\" class=\"form-control\"\r\n data-testid=\"new-support-description\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['description'])}\"></textarea>\r\n </div>\r\n <div class=\"invalid-feedback\" >\r\n <span data-testid=\"new-support-description-invalid\" [translate]=\" validatorsService.getError(supportForm.controls['description'])\"\r\n *ngIf=\"validatorsService.isControlError(supportForm.controls['description'])\"></span>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"status ==='send'\" translate=\"Your request has been registered\" data-testid=\"new-support-send-info\">\r\n </div>\r\n <div *ngIf=\"status ==='error'\" translate=\"An error has occurred, please renew your request\"\r\n data-testid=\"new-support-error-info\">\r\n\r\n </div>\r\n</div>\r\n<div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn rounded-pill btn-museum\" data-dismiss=\"modal\" translate=\"Close\" (click)=\"onClose()\"\r\n data-testid=\"new-support-close-btn\"></button>\r\n <button *ngIf=\"!loading && status==='new'\" type=\"button\" class=\"btn rounded-pill btn-museum\" translate=\"Submit\"\r\n (click)=\"onSubmit()\" [disabled]=\"!supportForm.valid\" data-testid=\"new-support-submit-btn\"></button>\r\n</div>", styles: [".support-loader-container{width:88px;margin:auto}.invalid-feedback{height:16px}\n"], components: [{ type: i6.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }], directives: [{ type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i7.TranslatePipe } });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SupportModalComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
64
|
args: [{ selector: 'app-support-modal', template: "<div class=\"modal-header\">\r\n <h5 class=\"modal-title\" translate=\"Help\"></h5>\r\n</div>\r\n<div class=\"modal-body\">\r\n <div class=\"support-loader-container\">\r\n <lib-loader *ngIf=\"loading\"></lib-loader>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"supportForm\" style=\"margin-top:1rem;\" *ngIf=\"!loading && status==='new'\">\r\n <div>\r\n <label>{{'Title' | translate}} *</label>\r\n <div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" data-testid=\"new-support-title\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['title'])}\"\r\n maxlength=\"255\">\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"new-support-title-invalid\" [translate]=\"validatorsService.getError(supportForm.controls['title'])\"\r\n *ngIf=\" validatorsService.isControlError(supportForm.controls['title'])\"></span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!currentUser\">\r\n <label>{{'Email' | translate}} *</label>\r\n <div>\r\n <input type=\"email\" class=\"form-control\" formControlName=\"email\" data-testid=\"new-support-email\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['email'])}\"\r\n maxlength=\"255\">\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <span data-testid=\"new-support-email-invalid\" [translate]=\"validatorsService.getError(supportForm.controls['email'])\"\r\n *ngIf=\" validatorsService.isControlError(supportForm.controls['email'])\"></span>\r\n </div>\r\n </div>\r\n <div>\r\n <label>{{'Description' | translate}} *</label>\r\n <div>\r\n <textarea formControlName=\"description\" class=\"form-control\"\r\n data-testid=\"new-support-description\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(supportForm.controls['description'])}\"></textarea>\r\n </div>\r\n <div class=\"invalid-feedback\" >\r\n <span data-testid=\"new-support-description-invalid\" [translate]=\" validatorsService.getError(supportForm.controls['description'])\"\r\n *ngIf=\"validatorsService.isControlError(supportForm.controls['description'])\"></span>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"status ==='send'\" translate=\"Your request has been registered\" data-testid=\"new-support-send-info\">\r\n </div>\r\n <div *ngIf=\"status ==='error'\" translate=\"An error has occurred, please renew your request\"\r\n data-testid=\"new-support-error-info\">\r\n\r\n </div>\r\n</div>\r\n<div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn rounded-pill btn-museum\" data-dismiss=\"modal\" translate=\"Close\" (click)=\"onClose()\"\r\n data-testid=\"new-support-close-btn\"></button>\r\n <button *ngIf=\"!loading && status==='new'\" type=\"button\" class=\"btn rounded-pill btn-museum\" translate=\"Submit\"\r\n (click)=\"onSubmit()\" [disabled]=\"!supportForm.valid\" data-testid=\"new-support-submit-btn\"></button>\r\n</div>", styles: [".support-loader-container{width:88px;margin:auto}.invalid-feedback{height:16px}\n"] }]
|
|
65
65
|
}], ctorParameters: function () { return [{ type: i1.SupportService }, { type: i2.NgbActiveModal }, { type: i3.FormBuilder }, { type: i4.BaseUserService }, { type: i5.ValidatorsService }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc3VwcG9ydC1tb2RhbC9zdXBwb3J0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zdXBwb3J0LW1vZGFsL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7OztBQU9oRSxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLFlBQ1UsY0FBOEIsRUFDL0IsV0FBMkIsRUFDMUIsV0FBd0IsRUFDeEIsV0FBNEIsRUFDN0IsaUJBQXFDO1FBSnBDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFiOUMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQU1mLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFRcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNuQyxJQUFJO2dCQUNGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2xELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDOUM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN4QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ25HLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsRUFBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDL0ksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDOUUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNILENBQUM7O2tIQXBEVSxxQkFBcUI7c0dBQXJCLHFCQUFxQix5RENoQmxDLG0zR0EwRE07MkZEMUNPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9FbXB0eVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvbm8tZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlbWFpbFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvZW1haWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgdGV4dFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvdGV4dC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VwcG9ydC1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0dXMgPSAnbmV3JztcclxuXHJcbiAgc3VwcG9ydEZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY3VycmVudFVzZXI6IGFueTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdXBwb3J0U2VydmljZTogU3VwcG9ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmFsaWRhdG9yc1NlcnZpY2UgOiBWYWxpZGF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbmlGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q3VycmVudFVzZXIoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNhdSA9IGF3YWl0IEF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XHJcbiAgICAgICAgcmVzb2x2ZShhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoY2F1KSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pRm9ybSgpIHtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICB0aGlzLnN1cHBvcnRGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRpdGxlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkICwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSwgbm9FbXB0eVZhbGlkYXRvcigpLCB0ZXh0VmFsaWRhdG9yKCldXSxcclxuICAgICAgZW1haWw6IFsodGhpcy5jdXJyZW50VXNlciA/IHRoaXMuY3VycmVudFVzZXIuZW1haWwgOiAnJyksIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBlbWFpbFZhbGlkYXRvcigpLCAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSwgdGV4dFZhbGlkYXRvcigpXV0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBub0VtcHR5VmFsaWRhdG9yKCksIHRleHRWYWxpZGF0b3IoKV1dLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBpZih0aGlzLnN1cHBvcnRGb3JtLnZhbGlkKXtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGF0dXMgPSBhd2FpdCB0aGlzLnN1cHBvcnRTZXJ2aWNlLnNlbmRTdXBwb3J0KHRoaXMuc3VwcG9ydEZvcm0udmFsdWUpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiB0cmFuc2xhdGU9XCJIZWxwXCI+PC9oNT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VwcG9ydC1sb2FkZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGxpYi1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nXCI+PC9saWItbG9hZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Zm9ybSAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIFtmb3JtR3JvdXBdPVwic3VwcG9ydEZvcm1cIiBzdHlsZT1cIm1hcmdpbi10b3A6MXJlbTtcIiAqbmdJZj1cIiFsb2FkaW5nICYmIHN0YXR1cz09PSduZXcnXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsPnt7J1RpdGxlJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCcgOiB2YWxpZGF0b3JzU2VydmljZS5pc0NvbnRyb2xFcnJvcihzdXBwb3J0Rm9ybS5jb250cm9sc1sndGl0bGUnXSl9XCJcclxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LXRpdGxlLWludmFsaWRcIiBbdHJhbnNsYXRlXT1cInZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWyd0aXRsZSddKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIgdmFsaWRhdG9yc1NlcnZpY2UuaXNDb250cm9sRXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ3RpdGxlJ10pXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnRVc2VyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eydFbWFpbCcgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgZGF0YS10ZXN0aWQ9XCJuZXctc3VwcG9ydC1lbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJyA6IHZhbGlkYXRvcnNTZXJ2aWNlLmlzQ29udHJvbEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydlbWFpbCddKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtZW1haWwtaW52YWxpZFwiIFt0cmFuc2xhdGVdPVwidmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ2VtYWlsJ10pXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiB2YWxpZGF0b3JzU2VydmljZS5pc0NvbnRyb2xFcnJvcihzdXBwb3J0Rm9ybS5jb250cm9sc1snZW1haWwnXSlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eydEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LWRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnIDogdmFsaWRhdG9yc1NlcnZpY2UuaXNDb250cm9sRXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10pfVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtZGVzY3JpcHRpb24taW52YWxpZFwiIFt0cmFuc2xhdGVdPVwiIHZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddKVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbGlkYXRvcnNTZXJ2aWNlLmlzQ29udHJvbEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInN0YXR1cyA9PT0nc2VuZCdcIiB0cmFuc2xhdGU9XCJZb3VyIHJlcXVlc3QgaGFzIGJlZW4gcmVnaXN0ZXJlZFwiIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtc2VuZC1pbmZvXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMgPT09J2Vycm9yJ1wiIHRyYW5zbGF0ZT1cIkFuIGVycm9yIGhhcyBvY2N1cnJlZCwgcGxlYXNlIHJlbmV3IHlvdXIgcmVxdWVzdFwiXHJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJuZXctc3VwcG9ydC1lcnJvci1pbmZvXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biByb3VuZGVkLXBpbGwgYnRuLW11c2V1bVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgdHJhbnNsYXRlPVwiQ2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCJcclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LWNsb3NlLWJ0blwiPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cIiFsb2FkaW5nICYmIHN0YXR1cz09PSduZXcnXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHJvdW5kZWQtcGlsbCBidG4tbXVzZXVtXCIgdHJhbnNsYXRlPVwiU3VibWl0XCJcclxuICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiIFtkaXNhYmxlZF09XCIhc3VwcG9ydEZvcm0udmFsaWRcIiBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LXN1Ym1pdC1idG5cIj48L2J1dHRvbj5cclxuPC9kaXY+Il19
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc3VwcG9ydC1tb2RhbC9zdXBwb3J0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zdXBwb3J0LW1vZGFsL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7OztBQU9oRSxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLFlBQ1UsY0FBOEIsRUFDL0IsV0FBMkIsRUFDMUIsV0FBd0IsRUFDeEIsV0FBNEIsRUFDN0IsaUJBQXFDO1FBSnBDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFiOUMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQU1mLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFRcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNuQyxJQUFJO2dCQUNGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2xELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDOUM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN4QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ25HLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsRUFBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDL0ksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDOUUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNILENBQUM7O21IQXBEVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5RENoQmxDLG0zR0EwRE07NEZEMUNPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9FbXB0eVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvbm8tZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlbWFpbFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvZW1haWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgdGV4dFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvdGV4dC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VwcG9ydC1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1cHBvcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0dXMgPSAnbmV3JztcclxuXHJcbiAgc3VwcG9ydEZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY3VycmVudFVzZXI6IGFueTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdXBwb3J0U2VydmljZTogU3VwcG9ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmFsaWRhdG9yc1NlcnZpY2UgOiBWYWxpZGF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbmlGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q3VycmVudFVzZXIoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNhdSA9IGF3YWl0IEF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XHJcbiAgICAgICAgcmVzb2x2ZShhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoY2F1KSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pRm9ybSgpIHtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICB0aGlzLnN1cHBvcnRGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRpdGxlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkICwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSwgbm9FbXB0eVZhbGlkYXRvcigpLCB0ZXh0VmFsaWRhdG9yKCldXSxcclxuICAgICAgZW1haWw6IFsodGhpcy5jdXJyZW50VXNlciA/IHRoaXMuY3VycmVudFVzZXIuZW1haWwgOiAnJyksIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBlbWFpbFZhbGlkYXRvcigpLCAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSwgdGV4dFZhbGlkYXRvcigpXV0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBub0VtcHR5VmFsaWRhdG9yKCksIHRleHRWYWxpZGF0b3IoKV1dLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBpZih0aGlzLnN1cHBvcnRGb3JtLnZhbGlkKXtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGF0dXMgPSBhd2FpdCB0aGlzLnN1cHBvcnRTZXJ2aWNlLnNlbmRTdXBwb3J0KHRoaXMuc3VwcG9ydEZvcm0udmFsdWUpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiB0cmFuc2xhdGU9XCJIZWxwXCI+PC9oNT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VwcG9ydC1sb2FkZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGxpYi1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nXCI+PC9saWItbG9hZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Zm9ybSAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIFtmb3JtR3JvdXBdPVwic3VwcG9ydEZvcm1cIiBzdHlsZT1cIm1hcmdpbi10b3A6MXJlbTtcIiAqbmdJZj1cIiFsb2FkaW5nICYmIHN0YXR1cz09PSduZXcnXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsPnt7J1RpdGxlJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCcgOiB2YWxpZGF0b3JzU2VydmljZS5pc0NvbnRyb2xFcnJvcihzdXBwb3J0Rm9ybS5jb250cm9sc1sndGl0bGUnXSl9XCJcclxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LXRpdGxlLWludmFsaWRcIiBbdHJhbnNsYXRlXT1cInZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWyd0aXRsZSddKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIgdmFsaWRhdG9yc1NlcnZpY2UuaXNDb250cm9sRXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ3RpdGxlJ10pXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnRVc2VyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eydFbWFpbCcgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgZGF0YS10ZXN0aWQ9XCJuZXctc3VwcG9ydC1lbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJyA6IHZhbGlkYXRvcnNTZXJ2aWNlLmlzQ29udHJvbEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydlbWFpbCddKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtZW1haWwtaW52YWxpZFwiIFt0cmFuc2xhdGVdPVwidmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ2VtYWlsJ10pXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiB2YWxpZGF0b3JzU2VydmljZS5pc0NvbnRyb2xFcnJvcihzdXBwb3J0Rm9ybS5jb250cm9sc1snZW1haWwnXSlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eydEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LWRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnIDogdmFsaWRhdG9yc1NlcnZpY2UuaXNDb250cm9sRXJyb3Ioc3VwcG9ydEZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10pfVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtZGVzY3JpcHRpb24taW52YWxpZFwiIFt0cmFuc2xhdGVdPVwiIHZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddKVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbGlkYXRvcnNTZXJ2aWNlLmlzQ29udHJvbEVycm9yKHN1cHBvcnRGb3JtLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInN0YXR1cyA9PT0nc2VuZCdcIiB0cmFuc2xhdGU9XCJZb3VyIHJlcXVlc3QgaGFzIGJlZW4gcmVnaXN0ZXJlZFwiIGRhdGEtdGVzdGlkPVwibmV3LXN1cHBvcnQtc2VuZC1pbmZvXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMgPT09J2Vycm9yJ1wiIHRyYW5zbGF0ZT1cIkFuIGVycm9yIGhhcyBvY2N1cnJlZCwgcGxlYXNlIHJlbmV3IHlvdXIgcmVxdWVzdFwiXHJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJuZXctc3VwcG9ydC1lcnJvci1pbmZvXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biByb3VuZGVkLXBpbGwgYnRuLW11c2V1bVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgdHJhbnNsYXRlPVwiQ2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCJcclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LWNsb3NlLWJ0blwiPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cIiFsb2FkaW5nICYmIHN0YXR1cz09PSduZXcnXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHJvdW5kZWQtcGlsbCBidG4tbXVzZXVtXCIgdHJhbnNsYXRlPVwiU3VibWl0XCJcclxuICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiIFtkaXNhYmxlZF09XCIhc3VwcG9ydEZvcm0udmFsaWRcIiBkYXRhLXRlc3RpZD1cIm5ldy1zdXBwb3J0LXN1Ym1pdC1idG5cIj48L2J1dHRvbj5cclxuPC9kaXY+Il19
|
|
@@ -316,7 +316,7 @@ export function getSpaceIDFromUrl(url) {
|
|
|
316
316
|
/**
|
|
317
317
|
* Download related
|
|
318
318
|
*/
|
|
319
|
-
import FileSaver from "file-saver";
|
|
319
|
+
import * as FileSaver from "file-saver";
|
|
320
320
|
export function downloadFile(fileUrl, fileName) {
|
|
321
321
|
FileSaver.saveAs(fileUrl + fileName, fileName);
|
|
322
322
|
}
|
|
@@ -467,4 +467,4 @@ export function durationToString(duration, translate) {
|
|
|
467
467
|
}
|
|
468
468
|
return `${seconds} ${secondsString}`;
|
|
469
469
|
}
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9oZWxwZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxFQUFXLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RyxNQUFNLFVBQVUsMkJBQTJCLENBQUMsVUFBVSxFQUFFLFFBQVE7SUFDNUQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWE7SUFDekMsUUFBUSxJQUFJLEVBQUU7UUFDVixLQUFLLE9BQU8sQ0FBQyxTQUFTO1lBQ2xCLE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLEtBQUssT0FBTyxDQUFDLE1BQU07WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNwQixLQUFLLE9BQU8sQ0FBQyxJ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QyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFckQsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDMUIsT0FBTyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztLQUNsQztJQUNELElBQUksUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUU7UUFDdEIsT0FBTyxHQUFHLElBQUksSUFBSSxVQUFVLElBQUksS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO0tBQzFEO0lBQ0QsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1FBQ25CLE9BQU8sR0FBRyxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7S0FDdEM7SUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEVBQUU7UUFDakIsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQ2YsT0FBTyxHQUFHLEtBQUssSUFBSSxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUNELE9BQU8sR0FBRyxLQUFLLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztLQUNoRTtJQUNELElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRTtRQUNoQixJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPLEdBQUcsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxHQUFHLE9BQU8sSUFBSSxhQUFhLElBQUksT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQ3BFO0lBQ0QsT0FBTyxHQUFHLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IE1vZGFsU3dpdGNoVmlzaXRDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL21vZGFsLXN3aXRjaC12aXNpdC9tb2RhbC1zd2l0Y2gtdmlzaXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IGRvd25sb2FkRmlsZUFzT2JqZWN0IH0gZnJvbSBcIi4vc2VydmljZXMvczMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXVpcG1lbnREb2N1bWVudCwgTGV2ZWxTdGF0dXMsIExvY2FsZSwgTWlzc2lvbiwgUG9pVHlwZSwgUm9sZVN0YXR1cyB9IGZyb20gXCIuL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXN0YW5jZUJldHdlZW5Ud29Qb2ludHMoc3RhcnRQb2ludCwgZW5kUG9pbnQpIHtcclxuICAgIGNvbnN0IGR4ID0gZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueDtcclxuICAgIGNvbnN0IGR5ID0gZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueTtcclxuICAgIGNvbnN0IGR6ID0gZW5kUG9pbnQueiAtIHN0YXJ0UG9pbnQuejtcclxuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkeik7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChkaXN0YW5jZSAqIDEwMCkgLyAxMDA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwb2lUeXBlVG9TdHJpbmcodHlwZTogUG9pVHlwZSk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJlcXVpcG1lbnRcIjtcclxuICAgICAgICBjYXNlIFBvaVR5cGUuVElDS0VUOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJ0aWNrZXRcIjtcclxuICAgICAgICBjYXNlIFBvaVR5cGUuREFUQTpcclxuICAgICAgICAgICAgcmV0dXJuIFwiZGF0YVwiO1xyXG4gICAgICAgIGNhc2UgUG9pVHlwZS5ERVNLOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJkYXRhXCI7XHJcbiAgICAgICAgY2FzZSBQb2lUeXBlLklORk9STUFUSU9OOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJpbmZvcm1hdGlvblwiO1xyXG4gICAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJtZWFzdXJlXCI7XHJcbiAgICAgICAgY2FzZSBQb2lUeXBlLlBFT1BMRTpcclxuICAgICAgICAgICAgcmV0dXJuIFwicGVvcGxlXCI7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIFwidGlja2V0XCI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3YWl0KHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgdGltZW91dCA9IHRpbWVvdXQgfHwgMjAwMDtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB3YWl0VW50aWwgPSAoY29uZGl0aW9uOiAoKSA9PiBib29sZWFuKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25kaXRpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDMwKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVudW1Ub0FycmF5KGVudW1lcmFibGU6IGFueSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudW1lcmFibGUpXHJcbiAgICAgICAgLmZpbHRlcigodmFsdWUpID0+IGlzTmFOKE51bWJlcih2YWx1ZSkpID09PSB0cnVlKVxyXG4gICAgICAgIC5tYXAoKGtleSkgPT4gZW51bWVyYWJsZVtrZXldKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldExldmVsc0JlbG93KGxldmVsOiBMZXZlbFN0YXR1cyk6IExldmVsU3RhdHVzW10ge1xyXG4gICAgY29uc3QgYWxsID0gW1xyXG4gICAgICAgIExldmVsU3RhdHVzLk1JTklNVU0sXHJcbiAgICAgICAgTGV2ZWxTdGF0dXMuTE9XLFxyXG4gICAgICAgIExldmVsU3RhdHVzLk1FRElVTSxcclxuICAgICAgICBMZXZlbFN0YXR1cy5ISUdILFxyXG4gICAgICAgIExldmVsU3RhdHVzLk1BWElNVU0sXHJcbiAgICBdO1xyXG4gICAgc3dpdGNoIChsZXZlbCkge1xyXG4gICAgICAgIGNhc2UgTGV2ZWxTdGF0dXMuTUFYSU1VTTpcclxuICAgICAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgICAgICBjYXNlIExldmVsU3RhdHVzLkhJR0g6XHJcbiAgICAgICAgICAgIGFsbC5zcGxpY2UoNCwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBhbGw7XHJcbiAgICAgICAgY2FzZSBMZXZlbFN0YXR1cy5NRURJVU06XHJcbiAgICAgICAgICAgIGFsbC5zcGxpY2UoMywgMik7XHJcbiAgICAgICAgICAgIHJldHVybiBhbGw7XHJcbiAgICAgICAgY2FzZSBMZXZlbFN0YXR1cy5MT1c6XHJcbiAgICAgICAgICAgIHJldHVybiBbTGV2ZWxTdGF0dXMuTUlOSU1VTSwgTGV2ZWxTdGF0dXMuTE9XXTtcclxuICAgICAgICBjYXNlIExldmVsU3RhdHVzLk1JTklNVU06XHJcbiAgICAgICAgICAgIHJldHVybiBbTGV2ZWxTdGF0dXMuTUlOSU1VTV07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIFtMZXZlbFN0YXR1cy5NSU5JTVVNXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zKG1pc3Npb25zOiBNaXNzaW9uW10pOiBMZXZlbFN0YXR1cyB7XHJcbiAgICBsZXQgbGF0ZXN0VmlzaWJsZUxldmVscyA9IFtMZXZlbFN0YXR1cy5NSU5JTVVNXTtcclxuICAgIGZvciAoY29uc3QgbSBvZiBtaXNzaW9ucykge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVMZXZlbHMgPSBnZXRMZXZlbHNCZWxvdyhtLmxldmVsKTtcclxuICAgICAgICBpZiAodmlzaWJsZUxldmVscy5sZW5ndGggPiBsYXRlc3RWaXNpYmxlTGV2ZWxzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsYXRlc3RWaXNpYmxlTGV2ZWxzID0gdmlzaWJsZUxldmVscztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGxhdGVzdFZpc2libGVMZXZlbHMubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICByZXR1cm4gTGV2ZWxTdGF0dXMuTUlOSU1VTTtcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHJldHVybiBMZXZlbFN0YXR1cy5MT1c7XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICByZXR1cm4gTGV2ZWxTdGF0dXMuTUVESVVNO1xyXG4gICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgcmV0dXJuIExldmVsU3RhdHVzLkhJR0g7XHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICByZXR1cm4gTGV2ZWxTdGF0dXMuTUFYSU1VTTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gTGV2ZWxTdGF0dXMuTUlOSU1VTTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMobWlzc2lvbnM6IE1pc3Npb25bXSk6IFJvbGVTdGF0dXMge1xyXG4gICAgbGV0IGhpZ2hlc3RSb2xlID0gUm9sZVN0YXR1cy5WSVNJVE9SO1xyXG4gICAgZm9yIChjb25zdCBtIG9mIG1pc3Npb25zKSB7XHJcbiAgICAgICAgaWYgKG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTikge1xyXG4gICAgICAgICAgICByZXR1cm4gUm9sZVN0YXR1cy5BRE1JTjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhpZ2hlc3RSb2xlID09PSBSb2xlU3RhdHVzLk9XTkVSKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobS5yb2xlID09PSBSb2xlU3RhdHVzLk9XTkVSKSB7XHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlID0gUm9sZVN0YXR1cy5PV05FUjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5NQU5BR0VSKSB7XHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlID0gUm9sZVN0YXR1cy5NQU5BR0VSO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFICYmXHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlICE9PSBSb2xlU3RhdHVzLk1BTkFHRVJcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLlNFUlZJQ0U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLk9DQ1VQQU5UICYmXHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLk9DQ1VQQU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobS5yb2xlID09PSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTSkge1xyXG4gICAgICAgICAgICBoaWdoZXN0Um9sZSA9IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobS5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNKSB7XHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlID0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGlnaGVzdFJvbGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlcihyb2xlOiBSb2xlU3RhdHVzKTogUm9sZVN0YXR1c1tdIHtcclxuICAgIGNvbnN0IGFsbCA9IFtcclxuICAgICAgICBSb2xlU3RhdHVzLlZJU0lUT1IsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5PQ0NVUEFOVCxcclxuICAgICAgICBSb2xlU3RhdHVzLlNFUlZJQ0UsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5NQU5BR0VSLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuT1dORVIsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcclxuICAgIF07XHJcbiAgICBjb25zdCBtdXNldW0gPSBbUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSwgUm9sZVN0YXR1cy5HVUlERV9NVVNFVU1dO1xyXG4gICAgc3dpdGNoIChyb2xlKSB7XHJcbiAgICAgICAgY2FzZSBSb2xlU3RhdHVzLkFETUlOOlxyXG4gICAgICAgICAgICByZXR1cm4gWy4uLmFsbCwgLi4ubXVzZXVtXTtcclxuICAgICAgICBjYXNlIFJvbGVTdGF0dXMuT1dORVI6XHJcbiAgICAgICAgICAgIGFsbC5zcGxpY2UoNSwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBhbGw7XHJcbiAgICAgICAgY2FzZSBSb2xlU3RhdHVzLk1BTkFHRVI6XHJcbiAgICAgICAgICAgIGFsbC5zcGxpY2UoNCwgMik7XHJcbiAgICAgICAgICAgIHJldHVybiBhbGw7XHJcbiAgICAgICAgY2FzZSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTpcclxuICAgICAgICAgICAgcmV0dXJuIG11c2V1bTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gYWxsLnNwbGljZSg0LCAyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclVuaXF1ZUFycmF5QnlJRChhcnJheU9mT2JqZWN0czogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gYXJyYXlPZk9iamVjdHMuZmlsdGVyKFxyXG4gICAgICAgICh2LCBpbmRleCwgYSkgPT4gYS5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IHYuaWQpID09PSBpbmRleCxcclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3Qob2JqZWN0OiBPYmplY3QpIHtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcclxuICAgICAgICBpZiAob2JqZWN0W2tleV0gPT09IG51bGwpIHtcclxuICAgICAgICAgICAgZGVsZXRlIG9iamVjdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRlc3QgaWYgYSBkYXRlIGhhcyBleHBpcmVkXHJcbiAqIEBwYXJhbSBkYXRlXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGRhdGUgaGFzIGV4cGlyZWQsIGZhbHNlIG90aGVyd2lzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVIYXNFeHBpcmVkKFxyXG4gICAgZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXHJcbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGRhdGUpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkgPD0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0xvY2FsZVRvRW51bShsb2NhbGU6IHN0cmluZyk6IExvY2FsZSB7XHJcbiAgICBzd2l0Y2ggKGxvY2FsZSkge1xyXG4gICAgICAgIGNhc2UgXCJlblwiOlxyXG4gICAgICAgICAgICByZXR1cm4gTG9jYWxlLkVOO1xyXG4gICAgICAgIGNhc2UgXCJmclwiOlxyXG4gICAgICAgICAgICByZXR1cm4gTG9jYWxlLkZSO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiBMb2NhbGUuRU47XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YUZvckltYWdlKHVybCk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG5cclxuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKGltZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoKSA9PiByZWplY3QoKSk7XHJcbiAgICAgICAgaW1nLnNyYyA9IHVybDtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKGFycmF5OiB7IG5hbWU6IHN0cmluZzsgfVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGFycmF5LnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRFbWFpbChlbWFpbDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZSA9XHJcbiAgICAgICAgL14oKFteXFxzXCIoKSwuOjs8PkBbXFxcXFxcXV0rKFxcLlteXFxzXCIoKSwuOjs8PkBbXFxcXFxcXV0rKSopfChcIi4rXCIpKUAoKFxcWyg/OlxcZHsxLDN9XFwuKXszfVxcZHsxLDN9XSl8KChbXFxkQS1aYS16XFwtXStcXC4pK1tBLVphLXpdezIsfSkpJC87XHJcbiAgICByZXR1cm4gcmUudGVzdChlbWFpbCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZEJsb2IoYmxvYiwgZmlsZW5hbWUpIHtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICBhLmRvd25sb2FkID0gZmlsZW5hbWUgfHwgXCJkb3dubG9hZFwiO1xyXG4gICAgY29uc3QgY2xpY2tIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgICAgIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsaWNrSGFuZGxlcik7XHJcbiAgICAgICAgfSwgMTUwKTtcclxuICAgIH07XHJcbiAgICBhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjbGlja0hhbmRsZXIsIGZhbHNlKTtcclxuICAgIGEuY2xpY2soKTtcclxuICAgIHJldHVybiBhO1xyXG59XHJcblxyXG4vKlxyXG4gICAgT3BlbiBtb2RhbCBpZiBvbmUgaGFzIHRvIHN3aXRjaCB2aXJ0dWFsIHZpc2l0XHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaChcclxuICAgIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBtb2RlbDNEOiBzdHJpbmcsXHJcbiAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICBkYXRhVG9Nb3ZlOiB7IHN3ZWVwVG9Nb3ZlOiBzdHJpbmcsIHJvdGF0aW9uOiBhbnk7IH0gfCBudWxsID0gbnVsbFxyXG4pIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmZXJlbmNlID0gbW9kYWxTZXJ2aWNlLm9wZW4oTW9kYWxTd2l0Y2hWaXNpdENvbXBvbmVudCk7XHJcbiAgICBtb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5jb250ZW50ID1cclxuICAgICAgICBcIlRoaXMgb2JqZWN0IGJlbG9uZ3MgdG8gYW5vdGhlciAzRCB2aXNpdC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN3aXRjaCB0aGUgdmlzaXQ/XCI7XHJcbiAgICBtb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5tb2RlbDNEID0gbW9kZWwzRDtcclxuICAgIG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgaWYgKGRhdGFUb01vdmUpIHtcclxuICAgICAgICBtb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5kYXRhVG9Nb3ZlID0gZGF0YVRvTW92ZTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gYSBzdHJpbmcgb2YgYSBnaXZlbiBkYXRlIHRpbWUgaW4gbG9jYWwgZm9ybWF0LlxyXG4gKiBUaGUgZm9ybWF0IGlzIGRldGVybWluZWQgYnkgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVUb0xvY2FsU3RyaW5nKFxyXG4gICAgZGF0ZTogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSxcclxuICAgIHRyYW5zbGF0ZT86IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBtb2RlPyxcclxuKTogc3RyaW5nIHtcclxuICAgIGxldCBsYW5nID0gXCJlbi1FTlwiO1xyXG4gICAgaWYgKHRyYW5zbGF0ZSkge1xyXG4gICAgICAgIC8qKiBHZXQgY3VycmVudCBsYW5ndWFnZSAqL1xyXG4gICAgICAgIGxhbmcgPSB0cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICAgICAgPyB0cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICAgICAgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmc7XHJcbiAgICAgICAgLyoqIFRyYW5zZm9ybWUgJ19mcicgdG8gJ2ZyJyAqL1xyXG4gICAgICAgIGlmIChsYW5nKSB7XHJcbiAgICAgICAgICAgIGxhbmcgPSBsYW5nLnNsaWNlKDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnM6IHtcclxuICAgICAgICBtb250aD87XHJcbiAgICAgICAgeWVhcj87XHJcbiAgICAgICAgZGF5PztcclxuICAgICAgICBob3VyPztcclxuICAgICAgICBtaW51dGU/O1xyXG4gICAgICAgIHNlY29uZD87XHJcbiAgICAgICAgZGF0ZVN0eWxlPztcclxuICAgICAgICB0aW1lU3R5bGU/O1xyXG4gICAgICAgIHdlZWtkYXk/O1xyXG4gICAgICAgIHRpbWVab25lPztcclxuICAgICAgICB0aW1lWm9uZU5hbWU/O1xyXG4gICAgfTtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgIGNhc2UgXCJkYXlfbnVtZXJpY1wiOlxyXG4gICAgICAgICAgICBvcHRpb25zID0geyBkYXk6IFwibnVtZXJpY1wiIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJkYXlcIjpcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgd2Vla2RheTogXCJsb25nXCIgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRhdGVcIjpcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgZGF0ZVN0eWxlOiBcImxvbmdcIiB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwic2hvcnRfZGF0ZV90aW1lXCI6XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgICAgIGRheTogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJ0aW1lXCI6XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IGhvdXI6IFwibnVtZXJpY1wiLCBtaW51dGU6IFwibnVtZXJpY1wiIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJkYXlfdGltZV96b25lXCI6XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICB3ZWVrZGF5OiBcImxvbmdcIixcclxuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgICAgICAgbW9udGg6IFwibG9uZ1wiLFxyXG4gICAgICAgICAgICAgICAgZGF5OiBcIm51bWVyaWNcIixcclxuICAgICAgICAgICAgICAgIGhvdXI6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIm51bWVyaWNcIixcclxuICAgICAgICAgICAgICAgIHRpbWVab25lTmFtZTogXCJzaG9ydE9mZnNldFwiLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgZGF0ZVN0eWxlOiBcImxvbmdcIixcclxuICAgICAgICAgICAgICAgIHRpbWVTdHlsZTogXCJzaG9ydFwiLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvTG9jYWxlU3RyaW5nKGxhbmcsIG9wdGlvbnMpO1xyXG59XHJcblxyXG4vKipcclxuICogQ29tcGFyZXMgdHdvIHN0cmluZyBhcnJheXNcclxuICogQHBhcmFtIGFycmF5MVxyXG4gKiBAcGFyYW0gYXJyYXkyXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlzQ29udGFpblNhbWVFbGVtZW50cyhcclxuICAgIGFycmF5MTogc3RyaW5nW10sXHJcbiAgICBhcnJheTI6IHN0cmluZ1tdLFxyXG4pOiBib29sZWFuIHtcclxuICAgIGFycmF5MS5zb3J0KCk7XHJcbiAgICBhcnJheTIuc29ydCgpO1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFycmF5MSkgPT09IEpTT04uc3RyaW5naWZ5KGFycmF5Mik7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaXRVcmwoY3VycmVudFVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhdGggPSBjdXJyZW50VXJsLnNwbGl0KFwiL1wiKTtcclxuICAgIHBhdGguc3BsaWNlKDMsIHBhdGgubGVuZ3RoIC0gMik7XHJcbiAgICByZXR1cm4gcGF0aC5qb2luKFwiL1wiKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3Qgc3BhY2VJRCBmcm9tIHVybCB3aGVuIGluIHZpc2l0IDNEXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BhY2VJREZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmlzaXRVcmwgPSBnZXRWaXNpdFVybCh1cmwpO1xyXG4gICAgcmV0dXJuIHZpc2l0VXJsLnNwbGl0KFwiL1wiKVsyXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERvd25sb2FkIHJlbGF0ZWRcclxuICovXHJcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSBcImZpbGUtc2F2ZXJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZEZpbGUoZmlsZVVybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGZpbGVVcmwgKyBmaWxlTmFtZSwgZmlsZU5hbWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRvY3VtZW50KGZpbGVVcmw6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgaWQ6IG51bWJlcikge1xyXG4gICAgd2luZG93Lm9wZW4oYCR7ZmlsZVVybCArIGZpbGVOYW1lfSNkb2M9JHtpZH1gLCBcIl9ibGFua1wiLCBcIlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25sb2FkRXF1aXBtZW50RG9jdW1lbnQgPSBhc3luYyAoXHJcbiAgICBkb2N1bWVudF86IEVxdWlwbWVudERvY3VtZW50LFxyXG4pOiBQcm9taXNlPE9iamVjdCB8IHZvaWQ+ID0+IHtcclxuICAgIGNvbnN0IHNpZ25lZEZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChkb2N1bWVudF8udXJsKTtcclxuICAgIGlmIChzaWduZWRGaWxlKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvd25sb2FkQmxvYihzaWduZWRGaWxlLkJvZHksIGRvY3VtZW50Xy5maWxlbmFtZSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tFbGVtZW50QnlJZChzZWxlY3Rvcikge1xyXG4gICAgbGV0IHF1ZXJ5U2VsZWN0b3IgPSBudWxsO1xyXG4gICAgd2hpbGUgKHF1ZXJ5U2VsZWN0b3IgPT09IG51bGwpIHtcclxuICAgICAgICBhd2FpdCByYWZBc3luYygpO1xyXG4gICAgICAgIHF1ZXJ5U2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlTZWxlY3RvcjtcclxufVxyXG5cclxuZnVuY3Rpb24gcmFmQXN5bmMoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7IC8vIGZhc3RlciB0aGFuIHNldCB0aW1lIG91dFxyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8qIEBwYXJhbSB7QXJyYXl9IG51bWJlcnMgQW4gYXJyYXkgb2YgbnVtYmVycy5cclxuICogQHJldHVybiB7TnVtYmVyfSBUaGUgY2FsY3VsYXRlZCBhdmVyYWdlIChvciBtZWFuKSB2YWx1ZSBmcm9tIHRoZSBzcGVjaWZpZWRcclxuICogICAgIG51bWJlcnMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWVhbihudW1iZXJzOiBudW1iZXJbXSkge1xyXG4gICAgbGV0IHRvdGFsID0gMDtcclxuICAgIGZvciAoY29uc3QgbnVtYmVyIG9mIG51bWJlcnMpIHtcclxuICAgICAgICB0b3RhbCArPSBudW1iZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG90YWwgLyBudW1iZXJzLmxlbmd0aDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUaW1lc3RhbXBUb0xvY2FsWm9uZSh0aW1lc3RhbXA6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xyXG4gICAgY29uc3QgbG9jYWxPZmZzZXQgPSAtMSAqIHNlbGVjdGVkRGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XHJcbiAgICBjb25zdCBzdGFtcCA9IHRpbWVzdGFtcCArIGxvY2FsT2Zmc2V0O1xyXG4gICAgcmV0dXJuIHN0YW1wO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHN0cmluZyBmb3IgcGVyaW9kIG9mIHRpbWUuIFBhcmFtZXRlcnMgYXJlIERhdGVUaW1lIG9iamVjdHMgb2YgbHV4b24gbGlicmFyeS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVEYXRlUGVyaW9kKFxyXG4gICAgdHJhbnNsYXRlU2VydmljZTogYW55LFxyXG4gICAgZGF0ZVN0YXJ0UGVyaW9kOiBhbnksXHJcbiAgICBkYXRlRW5kUGVyaW9kOiBhbnksXHJcbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBnZXRMb2NhbGVMb25nKHRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcmV0dXJuIGAke2RhdGVTdGFydFBlcmlvZC50b0xvY2FsZVN0cmluZyh7XHJcbiAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgIG1vbnRoOiBcImxvbmdcIixcclxuICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxyXG4gICAgfSl9IC0gJHtkYXRlRW5kUGVyaW9kLnRvTG9jYWxlU3RyaW5nKHtcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgbW9udGg6IFwibG9uZ1wiLFxyXG4gICAgICAgIGRheTogXCIyLWRpZ2l0XCIsXHJcbiAgICB9KX0gYDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4qIFJldHVybiBsb2NhbCBpbiB0aGUgY2Fub25pY2FsIGZvcm06IFwiZW4tR0JcIiwgXCJmci1GUlwiXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVMb25nKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFuZyA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgID8gdHJhbnNsYXRlLmN1cnJlbnRMYW5nXHJcbiAgICAgICAgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmc7XHJcblxyXG4gICAgLyoqIFRyYW5zZm9ybSAnX2ZyJyB0byAnZnInICovXHJcbiAgICBsYW5nID0gbGFuZy5zbGljZSgxKTtcclxuICAgIGlmIChsYW5nID09PSBcImVuXCIpIHtcclxuICAgICAgICByZXR1cm4gXCJlbi1HQlwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke2xhbmd9LSR7bGFuZy50b1VwcGVyQ2FzZSgpfWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gbG9jYWwgaW4gdGhlIHNob3J0IGZvcm06IFwiZW5cIiwgXCJmclwiXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxlU2hvcnQodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogc3RyaW5nIHtcclxuICAgIGxldCBsYW5nID0gdHJhbnNsYXRlLmN1cnJlbnRMYW5nXHJcbiAgICAgICAgPyB0cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICA6IHRyYW5zbGF0ZS5kZWZhdWx0TGFuZztcclxuXHJcbiAgICAvKiogVHJhbnNmb3JtICdfZnInIHRvICdmcicgKi9cclxuICAgIGxhbmcgPSBsYW5nLnNsaWNlKDEpO1xyXG4gICAgcmV0dXJuIGxhbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXQgc3RyaW5nIHRvIGxvd2VyY2FzZSwgbm8gc3BhY2VzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9Mb3dlcmNhc2VOb1NwYWNlcyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHdvcmRzID0gaW5wdXQudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pO1xyXG4gICAgcmV0dXJuIHdvcmRzLmpvaW4oXCJcIik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUZXN0IGlmIHRoZSBvYmplY3QgPT09IHt9XHJcbiAqIEBwYXJhbSBvYmogb2JqZWN0IHtrZXk6dmFsdWV9XHJcbiAqIEByZXR1cm5zIGJvb2xlYW5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5T2JqZWN0KG9iamVjdCk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCB4IGluIG9iamVjdCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2h1ZmZsZUFycmF5KGFycmF5OiBhbnlbXSkge1xyXG4gICAgY29uc3QgbmV3QXJyYXkgPSBbLi4uYXJyYXldO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSBhcnJheS5sZW5ndGggLSAxOyBpbmRleCA+IDA7IGluZGV4LS0pIHtcclxuICAgICAgICBjb25zdCBpbmRleE5ldyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpbmRleCArIDEpKTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cclxuICAgICAgICBbbmV3QXJyYXlbaW5kZXhdLCBuZXdBcnJheVtpbmRleE5ld11dID0gW1xyXG4gICAgICAgICAgICBuZXdBcnJheVtpbmRleE5ld10sXHJcbiAgICAgICAgICAgIG5ld0FycmF5W2luZGV4XSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld0FycmF5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyVG9EYXRlU3RyaW5nKHRpbWVzdGFtcDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGpzRGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XHJcbiAgICByZXR1cm4ganNEYXRlLnRvTG9jYWxlU3RyaW5nKFwiZnItRlJcIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvblRvU3RyaW5nKFxyXG4gICAgZHVyYXRpb246IG51bWJlcixcclxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGR1cmF0aW9uIC8gMzYwMCAvIDI0KTtcclxuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigoZHVyYXRpb24gLSBkYXlzICogMjQgKiAzNjAwKSAvIDM2MDApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKGR1cmF0aW9uICUgMzYwMCkgLyA2MCk7XHJcbiAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcihkdXJhdGlvbiAlIDYwKTtcclxuXHJcbiAgICBjb25zdCBkYXlzU3RyaW5nID0gdHJhbnNsYXRlLmluc3RhbnQoXCJkYXkocylcIik7XHJcbiAgICBjb25zdCBob3Vyc1N0cmluZyA9IHRyYW5zbGF0ZS5pbnN0YW50KFwiaG91cihzKVwiKTtcclxuICAgIGNvbnN0IG9uZUhvdXJTdHJpbmcgPSB0cmFuc2xhdGUuaW5zdGFudChcImhvdXJcIik7XHJcbiAgICBjb25zdCBtaW51dGVzU3RyaW5nID0gdHJhbnNsYXRlLmluc3RhbnQoXCJtaW51dGUocylcIik7XHJcbiAgICBjb25zdCBzZWNvbmRzU3RyaW5nID0gdHJhbnNsYXRlLmluc3RhbnQoXCJzZWNvbmQocylcIik7XHJcblxyXG4gICAgaWYgKGR1cmF0aW9uID4gMzYwMCAqIDI0ICogNykge1xyXG4gICAgICAgIHJldHVybiBgJHtkYXlzfSAke2RheXNTdHJpbmd9YDtcclxuICAgIH1cclxuICAgIGlmIChkdXJhdGlvbiA+IDM2MDAgKiAyNCkge1xyXG4gICAgICAgIHJldHVybiBgJHtkYXlzfSAke2RheXNTdHJpbmd9ICR7aG91cnN9ICR7aG91cnNTdHJpbmd9YDtcclxuICAgIH1cclxuICAgIGlmIChkdXJhdGlvbiA9PT0gMzYwMCkge1xyXG4gICAgICAgIHJldHVybiBgJHtob3Vyc30gJHtvbmVIb3VyU3RyaW5nfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZHVyYXRpb24gPiAzNjAwKSB7XHJcbiAgICAgICAgaWYgKG1pbnV0ZXMgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2hvdXJzfSAke2hvdXJzU3RyaW5nfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHtob3Vyc30gJHtob3Vyc1N0cmluZ30gJHttaW51dGVzfSAke21pbnV0ZXNTdHJpbmd9YDtcclxuICAgIH1cclxuICAgIGlmIChkdXJhdGlvbiA+PSA2MCkge1xyXG4gICAgICAgIGlmIChzZWNvbmRzID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHttaW51dGVzfSAke21pbnV0ZXNTdHJpbmd9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9ICR7bWludXRlc1N0cmluZ30gJHtzZWNvbmRzfSAke3NlY29uZHNTdHJpbmd9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtzZWNvbmRzfSAke3NlY29uZHNTdHJpbmd9YDtcclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9oZWxwZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxFQUFXLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RyxNQUFNLFVBQVUsMkJBQTJCLENBQUMsVUFBVSxFQUFFLFFBQVE7SUFDNUQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWE7SUFDekMsUUFBUSxJQUFJLEVBQUU7UUFDVixLQUFLLE9BQU8sQ0FBQyxTQUFTO1lBQ2xCLE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLEtBQUssT0FBTyxDQUFDLE1BQU07WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNwQixLQUFLLE9BQU8sQ0FBQyxJ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UyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVyRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUMxQixPQUFPLEdBQUcsSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO0tBQ2xDO0lBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRTtRQUN0QixPQUFPLEdBQUcsSUFBSSxJQUFJLFVBQVUsSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7S0FDMUQ7SUFDRCxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDbkIsT0FBTyxHQUFHLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztLQUN0QztJQUNELElBQUksUUFBUSxHQUFHLElBQUksRUFBRTtRQUNqQixJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPLEdBQUcsS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxHQUFHLEtBQUssSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQ2hFO0lBQ0QsSUFBSSxRQUFRLElBQUksRUFBRSxFQUFFO1FBQ2hCLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sR0FBRyxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7U0FDeEM7UUFDRCxPQUFPLEdBQUcsT0FBTyxJQUFJLGFBQWEsSUFBSSxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7S0FDcEU7SUFDRCxPQUFPLEdBQUcsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgTW9kYWxTd2l0Y2hWaXNpdENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbW9kYWwtc3dpdGNoLXZpc2l0L21vZGFsLXN3aXRjaC12aXNpdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgZG93bmxvYWRGaWxlQXNPYmplY3QgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zMy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudERvY3VtZW50LCBMZXZlbFN0YXR1cywgTG9jYWxlLCBNaXNzaW9uLCBQb2lUeXBlLCBSb2xlU3RhdHVzIH0gZnJvbSBcIi4vdHlwZXMuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlQmV0d2VlblR3b1BvaW50cyhzdGFydFBvaW50LCBlbmRQb2ludCkge1xyXG4gICAgY29uc3QgZHggPSBlbmRQb2ludC54IC0gc3RhcnRQb2ludC54O1xyXG4gICAgY29uc3QgZHkgPSBlbmRQb2ludC55IC0gc3RhcnRQb2ludC55O1xyXG4gICAgY29uc3QgZHogPSBlbmRQb2ludC56IC0gc3RhcnRQb2ludC56O1xyXG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKGRpc3RhbmNlICogMTAwKSAvIDEwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBvaVR5cGVUb1N0cmluZyh0eXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgIHJldHVybiBcImVxdWlwbWVudFwiO1xyXG4gICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6XHJcbiAgICAgICAgICAgIHJldHVybiBcInRpY2tldFwiO1xyXG4gICAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJkYXRhXCI7XHJcbiAgICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6XHJcbiAgICAgICAgICAgIHJldHVybiBcImRhdGFcIjtcclxuICAgICAgICBjYXNlIFBvaVR5cGUuSU5GT1JNQVRJT046XHJcbiAgICAgICAgICAgIHJldHVybiBcImluZm9ybWF0aW9uXCI7XHJcbiAgICAgICAgY2FzZSBQb2lUeXBlLk1FQVNVUkU6XHJcbiAgICAgICAgICAgIHJldHVybiBcIm1lYXN1cmVcIjtcclxuICAgICAgICBjYXNlIFBvaVR5cGUuUEVPUExFOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJwZW9wbGVcIjtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gXCJ0aWNrZXRcIjtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdhaXQodGltZW91dDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICB0aW1lb3V0ID0gdGltZW91dCB8fCAyMDAwO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHdhaXRVbnRpbCA9IChjb25kaXRpb246ICgpID0+IGJvb2xlYW4pID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbigpKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMzApO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZW51bVRvQXJyYXkoZW51bWVyYWJsZTogYW55KSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZW51bWVyYWJsZSlcclxuICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gaXNOYU4oTnVtYmVyKHZhbHVlKSkgPT09IHRydWUpXHJcbiAgICAgICAgLm1hcCgoa2V5KSA9PiBlbnVtZXJhYmxlW2tleV0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGV2ZWxzQmVsb3cobGV2ZWw6IExldmVsU3RhdHVzKTogTGV2ZWxTdGF0dXNbXSB7XHJcbiAgICBjb25zdCBhbGwgPSBbXHJcbiAgICAgICAgTGV2ZWxTdGF0dXMuTUlOSU1VTSxcclxuICAgICAgICBMZXZlbFN0YXR1cy5MT1csXHJcbiAgICAgICAgTGV2ZWxTdGF0dXMuTUVESVVNLFxyXG4gICAgICAgIExldmVsU3RhdHVzLkhJR0gsXHJcbiAgICAgICAgTGV2ZWxTdGF0dXMuTUFYSU1VTSxcclxuICAgIF07XHJcbiAgICBzd2l0Y2ggKGxldmVsKSB7XHJcbiAgICAgICAgY2FzZSBMZXZlbFN0YXR1cy5NQVhJTVVNOlxyXG4gICAgICAgICAgICByZXR1cm4gYWxsO1xyXG4gICAgICAgIGNhc2UgTGV2ZWxTdGF0dXMuSElHSDpcclxuICAgICAgICAgICAgYWxsLnNwbGljZSg0LCAxKTtcclxuICAgICAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgICAgICBjYXNlIExldmVsU3RhdHVzLk1FRElVTTpcclxuICAgICAgICAgICAgYWxsLnNwbGljZSgzLCAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgICAgICBjYXNlIExldmVsU3RhdHVzLkxPVzpcclxuICAgICAgICAgICAgcmV0dXJuIFtMZXZlbFN0YXR1cy5NSU5JTVVNLCBMZXZlbFN0YXR1cy5MT1ddO1xyXG4gICAgICAgIGNhc2UgTGV2ZWxTdGF0dXMuTUlOSU1VTTpcclxuICAgICAgICAgICAgcmV0dXJuIFtMZXZlbFN0YXR1cy5NSU5JTVVNXTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gW0xldmVsU3RhdHVzLk1JTklNVU1dO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMobWlzc2lvbnM6IE1pc3Npb25bXSk6IExldmVsU3RhdHVzIHtcclxuICAgIGxldCBsYXRlc3RWaXNpYmxlTGV2ZWxzID0gW0xldmVsU3RhdHVzLk1JTklNVU1dO1xyXG4gICAgZm9yIChjb25zdCBtIG9mIG1pc3Npb25zKSB7XHJcbiAgICAgICAgY29uc3QgdmlzaWJsZUxldmVscyA9IGdldExldmVsc0JlbG93KG0ubGV2ZWwpO1xyXG4gICAgICAgIGlmICh2aXNpYmxlTGV2ZWxzLmxlbmd0aCA+IGxhdGVzdFZpc2libGVMZXZlbHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxhdGVzdFZpc2libGVMZXZlbHMgPSB2aXNpYmxlTGV2ZWxzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAobGF0ZXN0VmlzaWJsZUxldmVscy5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHJldHVybiBMZXZlbFN0YXR1cy5NSU5JTVVNO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgcmV0dXJuIExldmVsU3RhdHVzLkxPVztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgIHJldHVybiBMZXZlbFN0YXR1cy5NRURJVU07XHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICByZXR1cm4gTGV2ZWxTdGF0dXMuSElHSDtcclxuICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICAgIHJldHVybiBMZXZlbFN0YXR1cy5NQVhJTVVNO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiBMZXZlbFN0YXR1cy5NSU5JTVVNO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhtaXNzaW9uczogTWlzc2lvbltdKTogUm9sZVN0YXR1cyB7XHJcbiAgICBsZXQgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLlZJU0lUT1I7XHJcbiAgICBmb3IgKGNvbnN0IG0gb2YgbWlzc2lvbnMpIHtcclxuICAgICAgICBpZiAobS5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBSb2xlU3RhdHVzLkFETUlOO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGlnaGVzdFJvbGUgPT09IFJvbGVTdGF0dXMuT1dORVIpIHtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtLnJvbGUgPT09IFJvbGVTdGF0dXMuT1dORVIpIHtcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLk9XTkVSO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobS5yb2xlID09PSBSb2xlU3RhdHVzLk1BTkFHRVIpIHtcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLk1BTkFHRVI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0UgJiZcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgIT09IFJvbGVTdGF0dXMuTUFOQUdFUlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBoaWdoZXN0Um9sZSA9IFJvbGVTdGF0dXMuU0VSVklDRTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuT0NDVVBBTlQgJiZcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBoaWdoZXN0Um9sZSA9IFJvbGVTdGF0dXMuT0NDVVBBTlQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtLnJvbGUgPT09IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNKSB7XHJcbiAgICAgICAgICAgIGhpZ2hlc3RSb2xlID0gUm9sZVN0YXR1cy5HVUlERV9NVVNFVU07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pIHtcclxuICAgICAgICAgICAgaGlnaGVzdFJvbGUgPSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBoaWdoZXN0Um9sZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvbGVzQmVsb3dGb3JNYW5hZ2VyKHJvbGU6IFJvbGVTdGF0dXMpOiBSb2xlU3RhdHVzW10ge1xyXG4gICAgY29uc3QgYWxsID0gW1xyXG4gICAgICAgIFJvbGVTdGF0dXMuVklTSVRPUixcclxuICAgICAgICBSb2xlU3RhdHVzLk9DQ1VQQU5ULFxyXG4gICAgICAgIFJvbGVTdGF0dXMuU0VSVklDRSxcclxuICAgICAgICBSb2xlU3RhdHVzLk1BTkFHRVIsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5PV05FUixcclxuICAgICAgICBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgXTtcclxuICAgIGNvbnN0IG11c2V1bSA9IFtSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNLCBSb2xlU3RhdHVzLkdVSURFX01VU0VVTV07XHJcbiAgICBzd2l0Y2ggKHJvbGUpIHtcclxuICAgICAgICBjYXNlIFJvbGVTdGF0dXMuQURNSU46XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCAuLi5tdXNldW1dO1xyXG4gICAgICAgIGNhc2UgUm9sZVN0YXR1cy5PV05FUjpcclxuICAgICAgICAgICAgYWxsLnNwbGljZSg1LCAxKTtcclxuICAgICAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgICAgICBjYXNlIFJvbGVTdGF0dXMuTUFOQUdFUjpcclxuICAgICAgICAgICAgYWxsLnNwbGljZSg0LCAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgICAgICBjYXNlIFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNOlxyXG4gICAgICAgICAgICByZXR1cm4gbXVzZXVtO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiBhbGwuc3BsaWNlKDQsIDIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGFycmF5T2ZPYmplY3RzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBhcnJheU9mT2JqZWN0cy5maWx0ZXIoXHJcbiAgICAgICAgKHYsIGluZGV4LCBhKSA9PiBhLmZpbmRJbmRleCgodCkgPT4gdC5pZCA9PT0gdi5pZCkgPT09IGluZGV4LFxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU51bGxLZXlzRnJvbU9iamVjdChvYmplY3Q6IE9iamVjdCkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqZWN0KSkge1xyXG4gICAgICAgIGlmIChvYmplY3Rba2V5XSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkZWxldGUgb2JqZWN0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVGVzdCBpZiBhIGRhdGUgaGFzIGV4cGlyZWRcclxuICogQHBhcmFtIGRhdGVcclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0ZSBoYXMgZXhwaXJlZCwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUhhc0V4cGlyZWQoXHJcbiAgICBkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKSA8PSBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nTG9jYWxlVG9FbnVtKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlIHtcclxuICAgIHN3aXRjaCAobG9jYWxlKSB7XHJcbiAgICAgICAgY2FzZSBcImVuXCI6XHJcbiAgICAgICAgICAgIHJldHVybiBMb2NhbGUuRU47XHJcbiAgICAgICAgY2FzZSBcImZyXCI6XHJcbiAgICAgICAgICAgIHJldHVybiBMb2NhbGUuRlI7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIExvY2FsZS5FTjtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhRm9ySW1hZ2UodXJsKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcblxyXG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoaW1nKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsICgpID0+IHJlamVjdCgpKTtcclxuICAgICAgICBpbWcuc3JjID0gdXJsO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzb3J0QWxwaGFiZXRpY2FsbHlPbk5hbWUoYXJyYXk6IHsgbmFtZTogc3RyaW5nOyB9W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gYXJyYXkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZEVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJlID1cclxuICAgICAgICAvXigoW15cXHNcIigpLC46Ozw+QFtcXFxcXFxdXSsoXFwuW15cXHNcIigpLC46Ozw+QFtcXFxcXFxdXSspKil8KFwiLitcIikpQCgoXFxbKD86XFxkezEsM31cXC4pezN9XFxkezEsM31dKXwoKFtcXGRBLVphLXpcXC1dK1xcLikrW0EtWmEtel17Mix9KSkkLztcclxuICAgIHJldHVybiByZS50ZXN0KGVtYWlsKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkQmxvYihibG9iLCBmaWxlbmFtZSkge1xyXG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZSB8fCBcImRvd25sb2FkXCI7XHJcbiAgICBjb25zdCBjbGlja0hhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICAgICAgYS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2tIYW5kbGVyKTtcclxuICAgICAgICB9LCAxNTApO1xyXG4gICAgfTtcclxuICAgIGEuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsaWNrSGFuZGxlciwgZmFsc2UpO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgcmV0dXJuIGE7XHJcbn1cclxuXHJcbi8qXHJcbiAgICBPcGVuIG1vZGFsIGlmIG9uZSBoYXMgdG8gc3dpdGNoIHZpcnR1YWwgdmlzaXRcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxyXG4gICAgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIG1vZGVsM0Q6IHN0cmluZyxcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgIGRhdGFUb01vdmU6IHsgc3dlZXBUb01vdmU6IHN0cmluZywgcm90YXRpb246IGFueTsgfSB8IG51bGwgPSBudWxsXHJcbikge1xyXG4gICAgY29uc3QgbW9kYWxSZWZlcmVuY2UgPSBtb2RhbFNlcnZpY2Uub3BlbihNb2RhbFN3aXRjaFZpc2l0Q29tcG9uZW50KTtcclxuICAgIG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmNvbnRlbnQgPVxyXG4gICAgICAgIFwiVGhpcyBvYmplY3QgYmVsb25ncyB0byBhbm90aGVyIDNEIHZpc2l0LiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc3dpdGNoIHRoZSB2aXNpdD9cIjtcclxuICAgIG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLm1vZGVsM0QgPSBtb2RlbDNEO1xyXG4gICAgbW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICBpZiAoZGF0YVRvTW92ZSkge1xyXG4gICAgICAgIG1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmRhdGFUb01vdmUgPSBkYXRhVG9Nb3ZlO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBhIHN0cmluZyBvZiBhIGdpdmVuIGRhdGUgdGltZSBpbiBsb2NhbCBmb3JtYXQuXHJcbiAqIFRoZSBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgY3VycmVudCBsYW5ndWFnZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVRvTG9jYWxTdHJpbmcoXHJcbiAgICBkYXRlOiBudW1iZXIgfCBzdHJpbmcgfCBEYXRlLFxyXG4gICAgdHJhbnNsYXRlPzogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIG1vZGU/LFxyXG4pOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhbmcgPSBcImVuLUVOXCI7XHJcbiAgICBpZiAodHJhbnNsYXRlKSB7XHJcbiAgICAgICAgLyoqIEdldCBjdXJyZW50IGxhbmd1YWdlICovXHJcbiAgICAgICAgbGFuZyA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgICAgICA/IHRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgICAgICA6IHRyYW5zbGF0ZS5kZWZhdWx0TGFuZztcclxuICAgICAgICAvKiogVHJhbnNmb3JtZSAnX2ZyJyB0byAnZnInICovXHJcbiAgICAgICAgaWYgKGxhbmcpIHtcclxuICAgICAgICAgICAgbGFuZyA9IGxhbmcuc2xpY2UoMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBsZXQgb3B0aW9uczoge1xyXG4gICAgICAgIG1vbnRoPztcclxuICAgICAgICB5ZWFyPztcclxuICAgICAgICBkYXk/O1xyXG4gICAgICAgIGhvdXI/O1xyXG4gICAgICAgIG1pbnV0ZT87XHJcbiAgICAgICAgc2Vjb25kPztcclxuICAgICAgICBkYXRlU3R5bGU/O1xyXG4gICAgICAgIHRpbWVTdHlsZT87XHJcbiAgICAgICAgd2Vla2RheT87XHJcbiAgICAgICAgdGltZVpvbmU/O1xyXG4gICAgICAgIHRpbWVab25lTmFtZT87XHJcbiAgICB9O1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgICAgY2FzZSBcImRheV9udW1lcmljXCI6XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IGRheTogXCJudW1lcmljXCIgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRheVwiOlxyXG4gICAgICAgICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiBcImxvbmdcIiB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiZGF0ZVwiOlxyXG4gICAgICAgICAgICBvcHRpb25zID0geyBkYXRlU3R5bGU6IFwibG9uZ1wiIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJzaG9ydF9kYXRlX3RpbWVcIjpcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgIHllYXI6IFwiMi1kaWdpdFwiLFxyXG4gICAgICAgICAgICAgICAgbW9udGg6IFwiMi1kaWdpdFwiLFxyXG4gICAgICAgICAgICAgICAgZGF5OiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxyXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgaG91cjogXCJudW1lcmljXCIsIG1pbnV0ZTogXCJudW1lcmljXCIgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImRheV90aW1lX3pvbmVcIjpcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgIHdlZWtkYXk6IFwibG9uZ1wiLFxyXG4gICAgICAgICAgICAgICAgeWVhcjogXCJudW1lcmljXCIsXHJcbiAgICAgICAgICAgICAgICBtb250aDogXCJsb25nXCIsXHJcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgICAgICAgaG91cjogXCJudW1lcmljXCIsXHJcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiBcInNob3J0T2Zmc2V0XCIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlU3R5bGU6IFwibG9uZ1wiLFxyXG4gICAgICAgICAgICAgICAgdGltZVN0eWxlOiBcInNob3J0XCIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVTdHJpbmcobGFuZywgb3B0aW9ucyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb21wYXJlcyB0d28gc3RyaW5nIGFycmF5c1xyXG4gKiBAcGFyYW0gYXJyYXkxXHJcbiAqIEBwYXJhbSBhcnJheTJcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcnJheXNDb250YWluU2FtZUVsZW1lbnRzKFxyXG4gICAgYXJyYXkxOiBzdHJpbmdbXSxcclxuICAgIGFycmF5Mjogc3RyaW5nW10sXHJcbik6IGJvb2xlYW4ge1xyXG4gICAgYXJyYXkxLnNvcnQoKTtcclxuICAgIGFycmF5Mi5zb3J0KCk7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJyYXkxKSA9PT0gSlNPTi5zdHJpbmdpZnkoYXJyYXkyKTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpdFVybChjdXJyZW50VXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGF0aCA9IGN1cnJlbnRVcmwuc3BsaXQoXCIvXCIpO1xyXG4gICAgcGF0aC5zcGxpY2UoMywgcGF0aC5sZW5ndGggLSAyKTtcclxuICAgIHJldHVybiBwYXRoLmpvaW4oXCIvXCIpO1xyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdCBzcGFjZUlEIGZyb20gdXJsIHdoZW4gaW4gdmlzaXQgM0RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGFjZUlERnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2aXNpdFVybCA9IGdldFZpc2l0VXJsKHVybCk7XHJcbiAgICByZXR1cm4gdmlzaXRVcmwuc3BsaXQoXCIvXCIpWzJdO1xyXG59XHJcblxyXG4vKipcclxuICogRG93bmxvYWQgcmVsYXRlZFxyXG4gKi9cclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gXCJmaWxlLXNhdmVyXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKGZpbGVVcmw6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhmaWxlVXJsICsgZmlsZU5hbWUsIGZpbGVOYW1lKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5Eb2N1bWVudChmaWxlVXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIpIHtcclxuICAgIHdpbmRvdy5vcGVuKGAke2ZpbGVVcmwgKyBmaWxlTmFtZX0jZG9jPSR7aWR9YCwgXCJfYmxhbmtcIiwgXCJcIik7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEVxdWlwbWVudERvY3VtZW50ID0gYXN5bmMgKFxyXG4gICAgZG9jdW1lbnRfOiBFcXVpcG1lbnREb2N1bWVudCxcclxuKTogUHJvbWlzZTxPYmplY3QgfCB2b2lkPiA9PiB7XHJcbiAgICBjb25zdCBzaWduZWRGaWxlID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QoZG9jdW1lbnRfLnVybCk7XHJcbiAgICBpZiAoc2lnbmVkRmlsZSkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb3dubG9hZEJsb2Ioc2lnbmVkRmlsZS5Cb2R5LCBkb2N1bWVudF8uZmlsZW5hbWUpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrRWxlbWVudEJ5SWQoc2VsZWN0b3IpIHtcclxuICAgIGxldCBxdWVyeVNlbGVjdG9yID0gbnVsbDtcclxuICAgIHdoaWxlIChxdWVyeVNlbGVjdG9yID09PSBudWxsKSB7XHJcbiAgICAgICAgYXdhaXQgcmFmQXN5bmMoKTtcclxuICAgICAgICBxdWVyeVNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0b3IpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3I7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJhZkFzeW5jKCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOyAvLyBmYXN0ZXIgdGhhbiBzZXQgdGltZSBvdXRcclxuICAgIH0pO1xyXG59XHJcblxyXG4vKiBAcGFyYW0ge0FycmF5fSBudW1iZXJzIEFuIGFycmF5IG9mIG51bWJlcnMuXHJcbiAqIEByZXR1cm4ge051bWJlcn0gVGhlIGNhbGN1bGF0ZWQgYXZlcmFnZSAob3IgbWVhbikgdmFsdWUgZnJvbSB0aGUgc3BlY2lmaWVkXHJcbiAqICAgICBudW1iZXJzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1lYW4obnVtYmVyczogbnVtYmVyW10pIHtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IG51bWJlciBvZiBudW1iZXJzKSB7XHJcbiAgICAgICAgdG90YWwgKz0gbnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvdGFsIC8gbnVtYmVycy5sZW5ndGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VGltZXN0YW1wVG9Mb2NhbFpvbmUodGltZXN0YW1wOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGltZXN0YW1wKTtcclxuICAgIGNvbnN0IGxvY2FsT2Zmc2V0ID0gLTEgKiBzZWxlY3RlZERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xyXG4gICAgY29uc3Qgc3RhbXAgPSB0aW1lc3RhbXAgKyBsb2NhbE9mZnNldDtcclxuICAgIHJldHVybiBzdGFtcDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBzdHJpbmcgZm9yIHBlcmlvZCBvZiB0aW1lLiBQYXJhbWV0ZXJzIGFyZSBEYXRlVGltZSBvYmplY3RzIG9mIGx1eG9uIGxpYnJhcnkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlRGF0ZVBlcmlvZChcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IGFueSxcclxuICAgIGRhdGVTdGFydFBlcmlvZDogYW55LFxyXG4gICAgZGF0ZUVuZFBlcmlvZDogYW55LFxyXG4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbG9jYWxlID0gZ2V0TG9jYWxlTG9uZyh0cmFuc2xhdGVTZXJ2aWNlKTtcclxuICAgIHJldHVybiBgJHtkYXRlU3RhcnRQZXJpb2QudG9Mb2NhbGVTdHJpbmcoe1xyXG4gICAgICAgIGxvY2FsZSxcclxuICAgICAgICBtb250aDogXCJsb25nXCIsXHJcbiAgICAgICAgZGF5OiBcIjItZGlnaXRcIixcclxuICAgIH0pfSAtICR7ZGF0ZUVuZFBlcmlvZC50b0xvY2FsZVN0cmluZyh7XHJcbiAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgIG1vbnRoOiBcImxvbmdcIixcclxuICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxyXG4gICAgfSl9IGA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuKiBSZXR1cm4gbG9jYWwgaW4gdGhlIGNhbm9uaWNhbCBmb3JtOiBcImVuLUdCXCIsIFwiZnItRlJcIlxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxlTG9uZyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhbmcgPSB0cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICA/IHRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgIDogdHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xyXG5cclxuICAgIC8qKiBUcmFuc2Zvcm0gJ19mcicgdG8gJ2ZyJyAqL1xyXG4gICAgbGFuZyA9IGxhbmcuc2xpY2UoMSk7XHJcbiAgICBpZiAobGFuZyA9PT0gXCJlblwiKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiZW4tR0JcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtsYW5nfS0ke2xhbmcudG9VcHBlckNhc2UoKX1gO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIGxvY2FsIGluIHRoZSBzaG9ydCBmb3JtOiBcImVuXCIsIFwiZnJcIlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZVNob3J0KHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFuZyA9IHRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgID8gdHJhbnNsYXRlLmN1cnJlbnRMYW5nXHJcbiAgICAgICAgOiB0cmFuc2xhdGUuZGVmYXVsdExhbmc7XHJcblxyXG4gICAgLyoqIFRyYW5zZm9ybSAnX2ZyJyB0byAnZnInICovXHJcbiAgICBsYW5nID0gbGFuZy5zbGljZSgxKTtcclxuICAgIHJldHVybiBsYW5nO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0IHN0cmluZyB0byBsb3dlcmNhc2UsIG5vIHNwYWNlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvTG93ZXJjYXNlTm9TcGFjZXMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB3b3JkcyA9IGlucHV0LnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcclxuICAgIHJldHVybiB3b3Jkcy5qb2luKFwiXCIpO1xyXG59XHJcblxyXG4vKipcclxuICogVGVzdCBpZiB0aGUgb2JqZWN0ID09PSB7fVxyXG4gKiBAcGFyYW0gb2JqIG9iamVjdCB7a2V5OnZhbHVlfVxyXG4gKiBAcmV0dXJucyBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eU9iamVjdChvYmplY3QpOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3QgeCBpbiBvYmplY3QpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNodWZmbGVBcnJheShhcnJheTogYW55W10pIHtcclxuICAgIGNvbnN0IG5ld0FycmF5ID0gWy4uLmFycmF5XTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gYXJyYXkubGVuZ3RoIC0gMTsgaW5kZXggPiAwOyBpbmRleC0tKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXhOZXcgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaW5kZXggKyAxKSk7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXHJcbiAgICAgICAgW25ld0FycmF5W2luZGV4XSwgbmV3QXJyYXlbaW5kZXhOZXddXSA9IFtcclxuICAgICAgICAgICAgbmV3QXJyYXlbaW5kZXhOZXddLFxyXG4gICAgICAgICAgICBuZXdBcnJheVtpbmRleF0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdBcnJheTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclRvRGF0ZVN0cmluZyh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBqc0RhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xyXG4gICAgcmV0dXJuIGpzRGF0ZS50b0xvY2FsZVN0cmluZyhcImZyLUZSXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHVyYXRpb25Ub1N0cmluZyhcclxuICAgIGR1cmF0aW9uOiBudW1iZXIsXHJcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDM2MDAgLyAyNCk7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IoKGR1cmF0aW9uIC0gZGF5cyAqIDI0ICogMzYwMCkgLyAzNjAwKTtcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChkdXJhdGlvbiAlIDM2MDApIC8gNjApO1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZHVyYXRpb24gJSA2MCk7XHJcblxyXG4gICAgY29uc3QgZGF5c1N0cmluZyA9IHRyYW5zbGF0ZS5pbnN0YW50KFwiZGF5KHMpXCIpO1xyXG4gICAgY29uc3QgaG91cnNTdHJpbmcgPSB0cmFuc2xhdGUuaW5zdGFudChcImhvdXIocylcIik7XHJcbiAgICBjb25zdCBvbmVIb3VyU3RyaW5nID0gdHJhbnNsYXRlLmluc3RhbnQoXCJob3VyXCIpO1xyXG4gICAgY29uc3QgbWludXRlc1N0cmluZyA9IHRyYW5zbGF0ZS5pbnN0YW50KFwibWludXRlKHMpXCIpO1xyXG4gICAgY29uc3Qgc2Vjb25kc1N0cmluZyA9IHRyYW5zbGF0ZS5pbnN0YW50KFwic2Vjb25kKHMpXCIpO1xyXG5cclxuICAgIGlmIChkdXJhdGlvbiA+IDM2MDAgKiAyNCAqIDcpIHtcclxuICAgICAgICByZXR1cm4gYCR7ZGF5c30gJHtkYXlzU3RyaW5nfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZHVyYXRpb24gPiAzNjAwICogMjQpIHtcclxuICAgICAgICByZXR1cm4gYCR7ZGF5c30gJHtkYXlzU3RyaW5nfSAke2hvdXJzfSAke2hvdXJzU3RyaW5nfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IDM2MDApIHtcclxuICAgICAgICByZXR1cm4gYCR7aG91cnN9ICR7b25lSG91clN0cmluZ31gO1xyXG4gICAgfVxyXG4gICAgaWYgKGR1cmF0aW9uID4gMzYwMCkge1xyXG4gICAgICAgIGlmIChtaW51dGVzID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gJHtob3Vyc1N0cmluZ31gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYCR7aG91cnN9ICR7aG91cnNTdHJpbmd9ICR7bWludXRlc30gJHttaW51dGVzU3RyaW5nfWA7XHJcbiAgICB9XHJcbiAgICBpZiAoZHVyYXRpb24gPj0gNjApIHtcclxuICAgICAgICBpZiAoc2Vjb25kcyA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7bWludXRlc30gJHttaW51dGVzU3RyaW5nfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHttaW51dGVzfSAke21pbnV0ZXNTdHJpbmd9ICR7c2Vjb25kc30gJHtzZWNvbmRzU3RyaW5nfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7c2Vjb25kc30gJHtzZWNvbmRzU3RyaW5nfWA7XHJcbn1cclxuXHJcblxyXG4iXX0=
|