@ohioepa/oepa-ui-lib 2.0.0 → 2.0.2
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/README.md +24 -24
- package/esm2022/lib/account-search-input/account-search-input.component.mjs +3 -3
- package/esm2022/lib/account-search-input/account-search.service.mjs +1 -1
- package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +4 -5
- package/esm2022/lib/action-btn/action-btn.component.mjs +3 -3
- package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +3 -3
- package/esm2022/lib/address/address.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +3 -3
- package/esm2022/lib/comment-modal/comment-modal.component.mjs +3 -3
- package/esm2022/lib/common-forms.module.mjs +6 -2
- package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +3 -3
- package/esm2022/lib/contact/contact.component.mjs +3 -3
- package/esm2022/lib/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +6 -3
- package/esm2022/lib/datepicker/datepicker.component.mjs +7 -3
- package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +7 -3
- package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +3 -3
- package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +3 -3
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +3 -3
- package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +3 -3
- package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +3 -3
- package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +4 -4
- package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +3 -3
- package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +3 -3
- package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +4 -4
- package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +3 -3
- package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +4 -4
- package/esm2022/lib/file-upload/file-upload.component.mjs +3 -3
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +3 -3
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +3 -3
- package/esm2022/lib/notes-modal/notes-modal.component.mjs +4 -4
- package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +3 -3
- package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +10 -2
- package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +35 -20
- package/esm2022/lib/params-help-button/params-help.service.mjs +1 -1
- package/esm2022/lib/pin-modal/pin-modal.component.mjs +3 -3
- package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +3 -3
- package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +4 -4
- package/esm2022/lib/table/oepa-table-config.mjs +1 -1
- package/esm2022/lib/table/oepa-table-popover.mjs +1 -1
- package/esm2022/lib/table/p-table/p-table.component.mjs +27 -6
- package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +3 -3
- package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +3 -3
- package/esm2022/lib/table/table.component.mjs +13 -14
- package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +3 -3
- package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +3 -3
- package/esm2022/lib/util/oepa-http-interceptor.mjs +22 -9
- package/esm2022/lib/yes-no/yes-no.component.mjs +3 -3
- package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +3 -3
- package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +3 -3
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +195 -124
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/common-forms.module.d.ts +3 -2
- package/lib/date-input-modal/date-input-modal.component.d.ts +3 -1
- package/lib/datepicker/datepicker.component.d.ts +2 -1
- package/lib/daterangepicker/daterangepicker.component.d.ts +2 -1
- package/lib/oepa-reference/oepa-reference.service.d.ts +5 -0
- package/lib/oepa-user-account/oepa-user-account.service.d.ts +3 -1
- package/lib/table/oepa-table-config.d.ts +6 -0
- package/lib/table/oepa-table-popover.d.ts +1 -1
- package/lib/table/p-table/p-table.component.d.ts +4 -0
- package/ohioepa-oepa-ui-lib-2.0.2.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-2.0.0.tgz +0 -0
|
@@ -6,6 +6,10 @@ import * as i3 from "@angular/forms";
|
|
|
6
6
|
import * as i4 from "ngx-bootstrap/datepicker";
|
|
7
7
|
export class DaterangepickerComponent {
|
|
8
8
|
idService;
|
|
9
|
+
//Exposes the input element's id for parent label association.
|
|
10
|
+
get inputId() {
|
|
11
|
+
return this.componentId + '_Input';
|
|
12
|
+
}
|
|
9
13
|
componentId = 'OepaDaterangepickerComponent';
|
|
10
14
|
minDate;
|
|
11
15
|
maxDate;
|
|
@@ -53,11 +57,11 @@ export class DaterangepickerComponent {
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DaterangepickerComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DaterangepickerComponent, selector: "oepa-daterangepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n
|
|
60
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DaterangepickerComponent, selector: "oepa-daterangepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation" }, exportAs: ["oepa-datepicker"], ngImport: i0, template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #drp=\"bsDaterangepicker\"\n bsDaterangepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"isDisabled\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n role=\"textbox\"\n >\n <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n <button class=\"btn btn-primary\"\n (click)=\"drp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n aria-label=\"Toggle Date Picker\"\n type=\"button\"\n tabindex=\"0\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n <span class=\"visually-hidden\">Open calendar picker</span>\n </button>\n <button class=\"btn btn-primary\"\n (click)=\"clearRange()\"\n [id]=\"componentId+'_ClearBtn'\"\n aria-label=\"Clear Range\"\n type=\"button\"\n tabindex=\"0\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n <span class=\"visually-hidden\">Clear selected date range</span>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", 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]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i4.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }] });
|
|
57
61
|
}
|
|
58
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DaterangepickerComponent, decorators: [{
|
|
59
63
|
type: Component,
|
|
60
|
-
args: [{ selector: 'oepa-daterangepicker', template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n
|
|
64
|
+
args: [{ selector: 'oepa-daterangepicker', exportAs: 'oepa-datepicker', template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #drp=\"bsDaterangepicker\"\n bsDaterangepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"isDisabled\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n role=\"textbox\"\n >\n <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n <button class=\"btn btn-primary\"\n (click)=\"drp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n aria-label=\"Toggle Date Picker\"\n type=\"button\"\n tabindex=\"0\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n <span class=\"visually-hidden\">Open calendar picker</span>\n </button>\n <button class=\"btn btn-primary\"\n (click)=\"clearRange()\"\n [id]=\"componentId+'_ClearBtn'\"\n aria-label=\"Clear Range\"\n type=\"button\"\n tabindex=\"0\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n <span class=\"visually-hidden\">Clear selected date range</span>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n </div>\n</div>" }]
|
|
61
65
|
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
|
|
62
66
|
type: Input
|
|
63
67
|
}], field: [{
|
|
@@ -67,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
67
71
|
}], showValidation: [{
|
|
68
72
|
type: Input
|
|
69
73
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWF6RCxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JmO0lBZnBCLDhEQUE4RDtJQUM5RCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBRU0sV0FBVyxHQUFHLDhCQUE4QixDQUFDO0lBQzdDLE9BQU8sQ0FBbUI7SUFDMUIsT0FBTyxDQUFtQjtJQUMxQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRWpCLEtBQUssQ0FBYTtJQUNsQixLQUFLLENBQVU7SUFDZixRQUFRLENBQStCO0lBQ3ZDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFaEMsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFBSSxDQUFDO0lBRTFELGFBQWE7UUFDWCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVTtRQUNSLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsb0JBQW9CO1FBQ3BFLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO3dHQXBEVSx3QkFBd0I7NEZBQXhCLHdCQUF3QiwrTENickMsNHFEQXdDTTs7NEZEM0JPLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxzQkFBc0IsWUFHdEIsaUJBQWlCOzJGQWFsQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kYXRlcmFuZ2VwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5jc3MnXSxcbiAgZXhwb3J0QXM6ICdvZXBhLWRhdGVwaWNrZXInXG59KVxuZXhwb3J0IGNsYXNzIERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vRXhwb3NlcyB0aGUgaW5wdXQgZWxlbWVudCdzIGlkIGZvciBwYXJlbnQgbGFiZWwgYXNzb2NpYXRpb24uXG4gIHB1YmxpYyBnZXQgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudElkICsgJ19JbnB1dCc7XG4gIH1cbiAgXG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdPZXBhRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50JztcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBmaWVsZCE6IHN0cmluZztcbiAgQElucHV0KCkgYnNDb25maWchOiBQYXJ0aWFsPEJzRGF0ZXBpY2tlckNvbmZpZz47XG4gIEBJbnB1dCgpIHNob3dWYWxpZGF0aW9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZFNlcnZpY2U6IE9lcGFDb21wb25lbnRJZFNlcnZpY2UpIHsgfVxuXG4gIGNoZWNrVmFsaWRpdHkoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5ncm91cC5jb250cm9scykge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAuY29udHJvbHMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgPT09IHRoaXMuZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuY29udHJvbHNba2V5XS5zdGF0dXMgPT09ICdWQUxJRCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2xlYXJSYW5nZSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5taW5EYXRlKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IHRoaXMuYnNDb25maWcubWluRGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB0aGlzLmJzQ29uZmlnLm1heERhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdGhpcy5ic0NvbmZpZy5pc0Rpc2FibGVkOyAvLyBkZWZhdWx0cyB0byBmYWxzZVxuICAgIH1cbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICA8aW5wdXQgIFtpZF09XCJjb21wb25lbnRJZCsnX0lucHV0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgICAgICAjZHJwPVwiYnNEYXRlcmFuZ2VwaWNrZXJcIlxuICAgICAgICAgICAgICBic0RhdGVyYW5nZXBpY2tlclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgW2JzQ29uZmlnXT1cImJzQ29uZmlnXCJcbiAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKX1cIlxuICAgICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzRGlzYWJsZWRcIiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkcnAudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19Ub2dnbGVCdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRvZ2dsZSBEYXRlIFBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNhbGVuZGFyM1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5PcGVuIGNhbGVuZGFyIHBpY2tlcjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclJhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19DbGVhckJ0bidcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgUmFuZ2VcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS14LWxnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkNsZWFyIHNlbGVjdGVkIGRhdGUgcmFuZ2U8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBkLWJsb2NrXCIgKm5nSWY9XCJzaG93VmFsaWRhdGlvbiAmJiAhY2hlY2tWYWxpZGl0eSgpXCI+RGF0ZSBpcyByZXF1aXJlZDwvc21hbGw+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -284,7 +284,7 @@ export class DualListBoxComponent {
|
|
|
284
284
|
provide: NG_VALUE_ACCESSOR,
|
|
285
285
|
useExisting: forwardRef(() => DualListBoxComponent),
|
|
286
286
|
multi: true
|
|
287
|
-
}], ngImport: i0, template: "<div class=\"row\" [formGroup]=\"listBoxForm\">\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <
|
|
287
|
+
}], ngImport: i0, template: "<div class=\"row\" [formGroup]=\"listBoxForm\">\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <span class=\"text-center vertical-spacing-5\" id=\"availableListLabel\">{{availableText}}</span>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{availableFilterPlaceholder}}\"\n formControlName=\"availableSearchInput\"\n aria-label=\"Filter available items\"\n role=\"searchbox\"\n />\n <select class=\"form-control list-box\" formControlName=\"availableListBox\" multiple [size]=\"listSize\"\n aria-labelledby=\"availableListLabel\"\n aria-multiselectable=\"true\"\n role=\"listbox\"\n >\n <option *ngFor=\"let item of availableItems | arrayFilter:['text', searchTermAvailable] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n [id]=\"item?.value+'Option'\"\n (dblclick)=\"moveAvailableItemToSelected(item)\"\n role=\"option\"\n >{{item?.text}}</option>\n </select>\n </div>\n <div class=\"col-md-2 col-lg-2 col-sm-12 center-block text-center\">\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atr top80 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToSelected()\" aria-label=\"Move All Items To Selected\">\n <span class=\"bi bi-list-task\"></span>\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 str vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !availableListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneBtn'\"\n (click)=\"moveMarkedAvailableItemsToSelected()\" aria-label=\"Move Marked Available Items To Selected\">\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 stl vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !selectedListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneLeftBtn'\"\n (click)=\"moveMarkedSelectedItemsToAvailable()\" aria-label=\"Move Marked Selected Items To Available\">\n <span class=\"bi bi-chevron-left\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atl bottom10 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllLeftBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToAvailable()\" aria-label=\"Move All Items To Available\">\n <span class=\"bi bi-chevron-left\"></span>\n <span class=\"bi bi-list-task\"></span>\n </button>\n </div>\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <span class=\"text-center vertical-spacing-5\" id=\"selectedListLabel\">{{selectedText}}</span>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{selectedFilterPlaceholder}}\"\n formControlName=\"selectedSearchInput\"\n aria-label=\"Filter selected items\"\n role=\"searchbox\"\n />\n <select class=\"form-control list-box\" formControlName=\"selectedListBox\" multiple [size]=\"listSize\"\n aria-labelledby=\"selectedListLabel\"\n aria-multiselectable=\"true\"\n role=\"listbox\"\n >\n <option *ngFor=\"let item of selectedItems | arrayFilter:['text', searchTermSelected] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n (dblclick)=\"moveSelectedItemToAvailable(item)\"\n role=\"option\"\n >{{item?.text}}</option>\n </select>\n </div>\n</div>\n", styles: [".list-box{min-height:200px;width:100%}.top100{margin-top:100px}.top80{margin-top:80px}.bottom10{margin-bottom:10px}.vertical-spacing-5{margin-top:5px;margin-bottom:5px}.center-block{min-height:50px}@media only screen and (max-width : 768px){.sm-spacing{margin-top:10px;margin-bottom:10px}}@media only screen and (min-width : 768px) and (max-width : 992px){.sm-spacing{margin-top:10px;margin-bottom:10px}}@media only screen and (max-width : 480px){.sm-spacing{margin-top:10px;margin-bottom:10px}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.ArrayFilterPipe, name: "arrayFilter" }, { kind: "pipe", type: i4.ArraySortPipe, name: "arraySort" }] });
|
|
288
288
|
}
|
|
289
289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DualListBoxComponent, decorators: [{
|
|
290
290
|
type: Component,
|
|
@@ -292,7 +292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
292
292
|
provide: NG_VALUE_ACCESSOR,
|
|
293
293
|
useExisting: forwardRef(() => DualListBoxComponent),
|
|
294
294
|
multi: true
|
|
295
|
-
}], template: "<div class=\"row\" [formGroup]=\"listBoxForm\">\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <
|
|
295
|
+
}], template: "<div class=\"row\" [formGroup]=\"listBoxForm\">\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <span class=\"text-center vertical-spacing-5\" id=\"availableListLabel\">{{availableText}}</span>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{availableFilterPlaceholder}}\"\n formControlName=\"availableSearchInput\"\n aria-label=\"Filter available items\"\n role=\"searchbox\"\n />\n <select class=\"form-control list-box\" formControlName=\"availableListBox\" multiple [size]=\"listSize\"\n aria-labelledby=\"availableListLabel\"\n aria-multiselectable=\"true\"\n role=\"listbox\"\n >\n <option *ngFor=\"let item of availableItems | arrayFilter:['text', searchTermAvailable] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n [id]=\"item?.value+'Option'\"\n (dblclick)=\"moveAvailableItemToSelected(item)\"\n role=\"option\"\n >{{item?.text}}</option>\n </select>\n </div>\n <div class=\"col-md-2 col-lg-2 col-sm-12 center-block text-center\">\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atr top80 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToSelected()\" aria-label=\"Move All Items To Selected\">\n <span class=\"bi bi-list-task\"></span>\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 str vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !availableListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneBtn'\"\n (click)=\"moveMarkedAvailableItemsToSelected()\" aria-label=\"Move Marked Available Items To Selected\">\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 stl vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !selectedListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneLeftBtn'\"\n (click)=\"moveMarkedSelectedItemsToAvailable()\" aria-label=\"Move Marked Selected Items To Available\">\n <span class=\"bi bi-chevron-left\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atl bottom10 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllLeftBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToAvailable()\" aria-label=\"Move All Items To Available\">\n <span class=\"bi bi-chevron-left\"></span>\n <span class=\"bi bi-list-task\"></span>\n </button>\n </div>\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <span class=\"text-center vertical-spacing-5\" id=\"selectedListLabel\">{{selectedText}}</span>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{selectedFilterPlaceholder}}\"\n formControlName=\"selectedSearchInput\"\n aria-label=\"Filter selected items\"\n role=\"searchbox\"\n />\n <select class=\"form-control list-box\" formControlName=\"selectedListBox\" multiple [size]=\"listSize\"\n aria-labelledby=\"selectedListLabel\"\n aria-multiselectable=\"true\"\n role=\"listbox\"\n >\n <option *ngFor=\"let item of selectedItems | arrayFilter:['text', searchTermSelected] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n (dblclick)=\"moveSelectedItemToAvailable(item)\"\n role=\"option\"\n >{{item?.text}}</option>\n </select>\n </div>\n</div>\n", styles: [".list-box{min-height:200px;width:100%}.top100{margin-top:100px}.top80{margin-top:80px}.bottom10{margin-bottom:10px}.vertical-spacing-5{margin-top:5px;margin-bottom:5px}.center-block{min-height:50px}@media only screen and (max-width : 768px){.sm-spacing{margin-top:10px;margin-bottom:10px}}@media only screen and (min-width : 768px) and (max-width : 992px){.sm-spacing{margin-top:10px;margin-bottom:10px}}@media only screen and (max-width : 480px){.sm-spacing{margin-top:10px;margin-bottom:10px}}\n"] }]
|
|
296
296
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ToastrService }], propDecorators: { available: [{
|
|
297
297
|
type: Input
|
|
298
298
|
}], selected: [{
|
|
@@ -336,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
336
336
|
}], onItemsMoved: [{
|
|
337
337
|
type: Output
|
|
338
338
|
}] } });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbC1saXN0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2R1YWwtbGlzdC1ib3gvZHVhbC1saXN0LWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2R1YWwtbGlzdC1ib3gvZHVhbC1saXN0LWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQTBCLFdBQVcsRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFPLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTlFLE9BQU8sZ0JBQWdCLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUVuRDs7O0dBR0c7QUFZSCxNQUFNLE9BQU8sb0JBQW9CO0lBb0ZaO0lBQXlCO0lBbEY1Qyx3Q0FBd0M7SUFDeEMsSUFBYSxTQUFTLENBQUMsS0FBaUI7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7SUFBQSxDQUFDO0lBQ0YseUNBQXlDO0lBQ3pDLElBQWEsUUFBUSxDQUFDLEtBQWlCO1FBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBQUEsQ0FBQztJQUNGLG1FQUFtRTtJQUNuRSxJQUFhLGVBQWUsQ0FBQyxVQUFrQjtRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUFBLENBQUM7SUFDRixrRUFBa0U7SUFDbEUsSUFBYSxjQUFjLENBQUMsVUFBa0I7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQSxDQUFDO0lBQ0YsbUNBQW1DO0lBQzFCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsMENBQTBDO0lBQ2pDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsMkNBQTJDO0lBQ2xDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsdUNBQXVDO0lBQzlCLFlBQVksR0FBRyxHQUFHLENBQUM7SUFDNUIsbURBQW1EO0lBQzFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsbURBQW1EO0lBQzFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztJQUMzQyxrREFBa0Q7SUFDekMsWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3pDLG1EQUFtRDtJQUMxQywwQkFBMEIsR0FBRSxXQUFXLENBQUM7SUFDakQsa0RBQWtEO0lBQ3pDLHlCQUF5QixHQUFHLFdBQVcsQ0FBQztJQUNqRCwyQkFBMkI7SUFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixvQkFBb0I7SUFDcEIsSUFBYSxRQUFRLENBQUMsUUFBaUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNRLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFZCxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBRWhCLGtCQUFrQixHQUF1QixTQUFTLENBQUM7SUFFNUQsNkVBQTZFO0lBQ25FLHVCQUF1QixHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUNyRyw2RUFBNkU7SUFDbkUsdUJBQXVCLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO0lBQ3JHLDhGQUE4RjtJQUNwRixZQUFZLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO0lBRTlGLG9DQUFvQztJQUNwQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDekIsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBQ3pDLGFBQWEsR0FBd0IsRUFBRSxDQUFDO0lBQ3hDLFdBQVcsQ0FBWTtJQUN2Qix1QkFBdUIsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN6RCxzQkFBc0IsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN4RCwyQkFBMkIsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM3RCwwQkFBMEIsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUU1RCwwQkFBMEI7SUFDMUIsU0FBUyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUIsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV2QixZQUFtQixFQUFlLEVBQVUsTUFBcUI7UUFBOUMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM3QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQzlDLGVBQWUsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQzVDLG9CQUFvQixFQUFFLElBQUksQ0FBQywyQkFBMkI7WUFDdEQsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtTQUN2RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyx1QkFBdUI7YUFDdkIsWUFBWTthQUNaLFNBQVMsQ0FBQyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsc0JBQXNCO2FBQ3RCLFlBQVk7YUFDWixTQUFTLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLDJCQUEyQjthQUMzQixZQUFZLENBQUMsSUFBSSxDQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQy9CLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxDQUM3RCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQywwQkFBMEI7YUFDMUIsWUFBWSxDQUFDLElBQUksQ0FDZCxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUMvQixvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsQ0FDNUQsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNsSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsSixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUs7WUFDOUMsSUFBSSxFQUFFLFdBQVc7WUFDakIsRUFBRSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSztZQUM3QyxJQUFJLEVBQUUsVUFBVTtZQUNoQixFQUFFLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0NBQWtDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDMUosSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDekcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbEosT0FBTztRQUNULENBQUM7UUFDRCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWE7WUFDdkMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQ3ZFLENBQUMsSUFBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFDNUYsQ0FBQyxJQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSztZQUM5QyxJQUFJLEVBQUUsV0FBVztZQUNqQixFQUFFLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQ0FBa0M7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDekMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQ3JFLENBQUMsSUFBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFDekYsQ0FBQyxJQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSztZQUM3QyxJQUFJLEVBQUUsVUFBVTtZQUNoQixFQUFFLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsMkJBQTJCLENBQUMsSUFBa0I7UUFFMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUM1QixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksRUFBRSxXQUFXO1lBQ2pCLEVBQUUsRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCwyQkFBMkIsQ0FBQyxJQUFrQjtRQUUxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBc0IsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzVCLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsRUFBRSxFQUFFLFdBQVc7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsbUdBQW1HO0lBQ25HLFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDdkMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQWtCLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUMvRCxDQUFDLElBQWtCLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWtCO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFZO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxpR0FBaUc7SUFFakc7OztPQUdHO0lBQ0ssU0FBUztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO3dHQXBTVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw0dUJBTnBCLENBQUM7Z0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDZCxDQUFDLDBCQ3ZCSix5ekdBdURBOzs0RkQ5QmEsb0JBQW9CO2tCQVZoQyxTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDOzRCQUNSLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDZCxDQUFDOzRHQUtXLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT08sUUFBUTtzQkFBcEIsS0FBSztnQkFPTyxlQUFlO3NCQUEzQixLQUFLO2dCQUtPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFFRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUdJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTtcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IElJdGVtc01vdmVkRXZlbnQgfSBmcm9tICcuL2l0ZW1zLW1vdmVkLWV2ZW50JztcbmltcG9ydCB7IElMaXN0Qm94SXRlbSB9IGZyb20gJy4vbGlzdC1ib3gtaXRlbSc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uV2l0aCBmcm9tICdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCc7XG5pbXBvcnQgZGlmZmVyZW5jZVdpdGggZnJvbSAnbG9kYXNoL2RpZmZlcmVuY2VXaXRoJztcblxuLyoqXG4gKiBOT1RFOiBUaGlzIGNvZGUgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBwcm9qZWN0OiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9uZzItZHVhbC1saXN0LWJveFxuICogTElDRU5TRTogTUlUIMKpIFtFbGRhciBHcmFudWxvXShtYWlsdG86ZWxkYXIzMkBnbWFpbC5jb20pXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kdWFsLWxpc3QtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R1YWwtbGlzdC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kdWFsLWxpc3QtYm94LmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEdWFsTGlzdEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBEdWFsTGlzdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIC8vIGFycmF5IG9mIGl0ZW1zIHRvIGRpc3BsYXkgaW4gbGVmdCBib3hcbiAgQElucHV0KCkgc2V0IGF2YWlsYWJsZShpdGVtczogQXJyYXk8YW55Pikge1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi4oaXRlbXMgfHwgW10pLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgIHZhbHVlOiBpdGVtW3RoaXMudmFsdWVGaWVsZF0udG9TdHJpbmcoKSxcbiAgICAgICAgICB0ZXh0OiBpdGVtW3RoaXMudGV4dEZpZWxkXVxuICAgICAgfSkpXTtcbiAgfTtcbiAgLy8gYXJyYXkgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiByaWdodCBib3hcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkKGl0ZW1zOiBBcnJheTxhbnk+KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4uKGl0ZW1zIHx8IFtdKS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogaXRlbVt0aGlzLnZhbHVlRmllbGRdLnRvU3RyaW5nKCksXG4gICAgICAgICAgdGV4dDogaXRlbVt0aGlzLnRleHRGaWVsZF1cbiAgICAgIH0pKV07XG4gIH07XG4gIC8vIGlucHV0IHRvIHNldCBzZWFyY2ggdGVybSBmb3IgYXZhaWxhYmxlIGxpc3QgYm94IGZyb20gdGhlIG91dHNpZGVcbiAgQElucHV0KCkgc2V0IGF2YWlsYWJsZVNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUF2YWlsYWJsZSA9IHNlYXJjaFRlcm07XG4gICAgICB0aGlzLmF2YWlsYWJsZVNlYXJjaElucHV0Q29udHJvbC5zZXRWYWx1ZShzZWFyY2hUZXJtKTtcbiAgfTtcbiAgLy8gaW5wdXQgdG8gc2V0IHNlYXJjaCB0ZXJtIGZvciBzZWxlY3RlZCBsaXN0IGJveCBmcm9tIHRoZSBvdXRzaWRlXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybVNlbGVjdGVkID0gc2VhcmNoVGVybTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hJbnB1dENvbnRyb2wuc2V0VmFsdWUoc2VhcmNoVGVybSk7XG4gIH07XG4gIC8vIGZpZWxkIHRvIHVzZSBmb3IgdmFsdWUgb2Ygb3B0aW9uXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQgPSAnaWQnO1xuICAvLyBmaWVsZCB0byB1c2UgZm9yIGRpc3BsYXlpbmcgb3B0aW9uIHRleHRcbiAgQElucHV0KCkgdGV4dEZpZWxkID0gJ25hbWUnO1xuICAvLyB0ZXh0IHRvIGRpc3BsYXkgYXMgdGl0bGUgYWJvdmUgY29tcG9uZW50XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgLy8gdGltZSB0byBkZWJvdW5jZSBzZWFyY2ggb3V0cHV0IGluIG1zXG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZSA9IDUwMDtcbiAgLy8gc2hvdy9oaWRlIGJ1dHRvbiB0byBtb3ZlIGFsbCBpdGVtcyBiZXR3ZWVuIGJveGVzXG4gIEBJbnB1dCgpIG1vdmVBbGxCdXR0b24gPSB0cnVlO1xuICAvLyB0ZXh0IGRpc3BsYXllZCBvdmVyIHRoZSBhdmFpbGFibGUgaXRlbXMgbGlzdCBib3hcbiAgQElucHV0KCkgYXZhaWxhYmxlVGV4dCA9ICdBdmFpbGFibGUgaXRlbXMnO1xuICAvLyB0ZXh0IGRpc3BsYXllZCBvdmVyIHRoZSBzZWxlY3RlZCBpdGVtcyBsaXN0IGJveFxuICBASW5wdXQoKSBzZWxlY3RlZFRleHQgPSAnU2VsZWN0ZWQgaXRlbXMnO1xuICAvLyBzZXQgcGxhY2Vob2xkZXIgdGV4dCBpbiBhdmFpbGFibGUgaXRlbXMgbGlzdCBib3hcbiAgQElucHV0KCkgYXZhaWxhYmxlRmlsdGVyUGxhY2Vob2xkZXI9ICdGaWx0ZXIuLi4nO1xuICAvLyBzZXQgcGxhY2Vob2xkZXIgdGV4dCBpbiBzZWxlY3RlZCBpdGVtcyBsaXN0IGJveFxuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlclBsYWNlaG9sZGVyID0gJ0ZpbHRlci4uLic7XG4gIC8vIGZpZWxkIHRvIHVzZSBmb3IgaHRtbCBpZFxuICBASW5wdXQoKSBpZEZpZWxkID0gJ2lkJztcbiAgLy8gZGlzYWJsZSBjb21wb25lbnRcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICBpZiAodGhpcy5saXN0Qm94Rm9ybSkge1xuICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLmxpc3RCb3hGb3JtLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxpc3RCb3hGb3JtLmVuYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICBASW5wdXQoKSBsaXN0U2l6ZSA9IDEwO1xuXG4gIEBJbnB1dCgpIHNvcnRCeSA9ICd0ZXh0JztcblxuICBASW5wdXQoKSBtYXhTZWxlY3RhYmxlSXRlbXM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtIG9yIGl0ZW1zIGZyb20gYXZhaWxhYmxlIGl0ZW1zKGxlZnQgYm94KSBpcyBzZWxlY3RlZFxuICBAT3V0cHV0KCkgb25BdmFpbGFibGVJdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjx7fSB8IEFycmF5PHt9Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9IHwgQXJyYXk8e30+PigpO1xuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtIG9yIGl0ZW1zIGZyb20gc2VsZWN0ZWQgaXRlbXMocmlnaHQgYm94KSBpcyBzZWxlY3RlZFxuICBAT3V0cHV0KCkgb25TZWxlY3RlZEl0ZW1zU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjx7fSB8IEFycmF5PHt9Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9IHwgQXJyYXk8e30+PigpO1xuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtcyBhcmUgbW92ZWQgYmV0d2VlbiBib3hlcywgcmV0dXJucyBzdGF0ZSBvZiBib3RoIGJveGVzIGFuZCBpdGVtIG1vdmVkXG4gIEBPdXRwdXQoKSBvbkl0ZW1zTW92ZWQ6IEV2ZW50RW1pdHRlcjxJSXRlbXNNb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SUl0ZW1zTW92ZWRFdmVudD4oKTtcblxuICAvLyBwcml2YXRlIHZhcmlhYmxlcyB0byBtYW5hZ2UgY2xhc3NcbiAgc2VhcmNoVGVybUF2YWlsYWJsZSA9ICcnO1xuICBzZWFyY2hUZXJtU2VsZWN0ZWQgPSAnJztcbiAgYXZhaWxhYmxlSXRlbXM6IEFycmF5PElMaXN0Qm94SXRlbT4gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtczogQXJyYXk8SUxpc3RCb3hJdGVtPiA9IFtdO1xuICBsaXN0Qm94Rm9ybTogRm9ybUdyb3VwO1xuICBhdmFpbGFibGVMaXN0Qm94Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgc2VsZWN0ZWRMaXN0Qm94Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBzZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yc1xuICBfb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7IH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UpIHsgXG4gICAgdGhpcy5saXN0Qm94Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBhdmFpbGFibGVMaXN0Qm94OiB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLFxuICAgICAgICBzZWxlY3RlZExpc3RCb3g6IHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbCxcbiAgICAgICAgYXZhaWxhYmxlU2VhcmNoSW5wdXQ6IHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLFxuICAgICAgICBzZWxlY3RlZFNlYXJjaElucHV0OiB0aGlzLnNlbGVjdGVkU2VhcmNoSW5wdXRDb250cm9sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IEFycmF5PHt9PikgPT4gdGhpcy5vbkF2YWlsYWJsZUl0ZW1TZWxlY3RlZC5lbWl0KGl0ZW1zKSk7XG4gICAgdGhpcy5zZWxlY3RlZExpc3RCb3hDb250cm9sXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IEFycmF5PHt9PikgPT4gdGhpcy5vblNlbGVjdGVkSXRlbXNTZWxlY3RlZC5lbWl0KGl0ZW1zKSk7XG4gICAgdGhpcy5hdmFpbGFibGVTZWFyY2hJbnB1dENvbnRyb2xcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0YXAoKHNlYXJjaDogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaFRlcm1BdmFpbGFibGUgPSBzZWFyY2gpXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbFxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoc2VhcmNoOiBzdHJpbmcpID0+IHRoaXMuc2VhcmNoVGVybVNlbGVjdGVkID0gc2VhcmNoKVxuICAgICAgICApLnN1YnNjcmliZSgpO1xuICB9XG4gIC8qKlxuICAgKiBNb3ZlIGFsbCBpdGVtcyBmcm9tIGF2YWlsYWJsZSB0byBzZWxlY3RlZFxuICAgKi9cbiAgbW92ZUFsbEl0ZW1zVG9TZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0ci5jbGVhcigpO1xuICAgICAgaWYgKCF0aGlzLmF2YWlsYWJsZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heFNlbGVjdGFibGVJdGVtcyAmJiAodGhpcy5hdmFpbGFibGVJdGVtcy5sZW5ndGggKyB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gdGhpcy5tYXhTZWxlY3RhYmxlSXRlbXMpKSB7XG4gICAgICAgIHRoaXMudG9hc3RyLmluZm8oJ09ubHkgJyArIHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zICsgJyBpdGVtcyBtYXkgYmUgYWRkZWQgdG8gJyArIHRoaXMuc2VsZWN0ZWRUZXh0LCAnJywgeyBkaXNhYmxlVGltZU91dDogZmFsc2UsIHRpbWVPdXQ6IDUwMDAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMsIC4uLnRoaXMuYXZhaWxhYmxlSXRlbXNdO1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnYXZhaWxhYmxlJyxcbiAgICAgICAgICB0bzogJ3NlbGVjdGVkJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmdldFZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGFsbCBpdGVtcyBmcm9tIHNlbGVjdGVkIHRvIGF2YWlsYWJsZVxuICAgKi9cbiAgbW92ZUFsbEl0ZW1zVG9BdmFpbGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcblxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLCAuLi50aGlzLnNlbGVjdGVkSXRlbXNdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLm9uSXRlbXNNb3ZlZC5lbWl0KHtcbiAgICAgICAgICBhdmFpbGFibGU6IHRoaXMuYXZhaWxhYmxlSXRlbXMsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICBtb3ZlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgZnJvbTogJ3NlbGVjdGVkJyxcbiAgICAgICAgICB0bzogJ2F2YWlsYWJsZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZExpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShbXSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBtYXJrZWQgaXRlbXMgZnJvbSBhdmFpbGFibGUgaXRlbXMgdG8gc2VsZWN0ZWQgaXRlbXNcbiAgICovXG4gIG1vdmVNYXJrZWRBdmFpbGFibGVJdGVtc1RvU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcbiAgICBsZXQgcGVuZGluZ0l0ZW1zID0gaW50ZXJzZWN0aW9uV2l0aCh0aGlzLmF2YWlsYWJsZUl0ZW1zLCB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnZhbHVlLCAoaXRlbTogSUxpc3RCb3hJdGVtLCB2YWx1ZTogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgaWYgKHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zICYmIChwZW5kaW5nSXRlbXMubGVuZ3RoICsgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zKSkge1xuICAgICAgICB0aGlzLnRvYXN0ci5pbmZvKCdPbmx5ICcgKyB0aGlzLm1heFNlbGVjdGFibGVJdGVtcyArICcgaXRlbXMgbWF5IGJlIGFkZGVkIHRvICcgKyB0aGlzLnNlbGVjdGVkVGV4dCwgJycsIHsgZGlzYWJsZVRpbWVPdXQ6IGZhbHNlLCB0aW1lT3V0OiA1MDAwIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBmaXJzdCBtb3ZlIGl0ZW1zIHRvIHNlbGVjdGVkXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIC4uLmludGVyc2VjdGlvbldpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsdWU6IHN0cmluZykgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpXTtcbiAgICAgIC8vIG5vdyBmaWx0ZXIgYXZhaWxhYmxlIGl0ZW1zIHRvIG5vdCBpbmNsdWRlIG1hcmtlZCB2YWx1ZXNcbiAgICAgIHRoaXMuYXZhaWxhYmxlSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICAoaXRlbTogSUxpc3RCb3hJdGVtLCB2YWx1ZTogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSldO1xuICAgICAgLy8gY2xlYXIgbWFya2VkIGF2YWlsYWJsZSBpdGVtcyBhbmQgZW1pdCBldmVudFxuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnYXZhaWxhYmxlJyxcbiAgICAgICAgICB0bzogJ3NlbGVjdGVkJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmdldFZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIG1hcmtlZCBpdGVtcyBmcm9tIHNlbGVjdGVkIGl0ZW1zIHRvIGF2YWlsYWJsZSBpdGVtc1xuICAgKi9cbiAgbW92ZU1hcmtlZFNlbGVjdGVkSXRlbXNUb0F2YWlsYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0ci5jbGVhcigpO1xuXG4gICAgICAvLyBmaXJzdCBtb3ZlIGl0ZW1zIHRvIGF2YWlsYWJsZVxuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIC4uLmludGVyc2VjdGlvbldpdGgodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIChpdGVtOiBJTGlzdEJveEl0ZW0sIHZhbHVlOiBzdHJpbmcpID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKV07XG4gICAgICAvLyBub3cgZmlsdGVyIGF2YWlsYWJsZSBpdGVtcyB0byBub3QgaW5jbHVkZSBtYXJrZWQgdmFsdWVzXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsdWU6IHN0cmluZykgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpXTtcbiAgICAgIC8vIGNsZWFyIG1hcmtlZCBhdmFpbGFibGUgaXRlbXMgYW5kIGVtaXQgZXZlbnRcbiAgICAgIHRoaXMub25JdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVJdGVtcyxcbiAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIG1vdmVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnc2VsZWN0ZWQnLFxuICAgICAgICAgIHRvOiAnYXZhaWxhYmxlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5nZXRWYWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBzaW5nbGUgaXRlbSBmcm9tIGF2YWlsYWJsZSB0byBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgbW92ZUF2YWlsYWJsZUl0ZW1Ub1NlbGVjdGVkKGl0ZW06IElMaXN0Qm94SXRlbSk6IHZvaWQge1xuXG4gICAgICB0aGlzLmF2YWlsYWJsZUl0ZW1zID0gdGhpcy5hdmFpbGFibGVJdGVtcy5maWx0ZXIoKGxpc3RJdGVtOiBJTGlzdEJveEl0ZW0pID0+IGxpc3RJdGVtLnZhbHVlICE9PSBpdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMsIGl0ZW1dO1xuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogW2l0ZW0udmFsdWVdLFxuICAgICAgICAgIGZyb206ICdhdmFpbGFibGUnLFxuICAgICAgICAgIHRvOiAnc2VsZWN0ZWQnXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGlzdEJveENvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuZ2V0VmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgc2luZ2xlIGl0ZW0gZnJvbSBzZWxlY3RlZCB0byBhdmFpbGFibGVcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIG1vdmVTZWxlY3RlZEl0ZW1Ub0F2YWlsYWJsZShpdGVtOiBJTGlzdEJveEl0ZW0pOiB2b2lkIHtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigobGlzdEl0ZW06IElMaXN0Qm94SXRlbSkgPT4gbGlzdEl0ZW0udmFsdWUgIT09IGl0ZW0udmFsdWUpO1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLCBpdGVtXTtcbiAgICAgIHRoaXMub25JdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVJdGVtcyxcbiAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIG1vdmVkSXRlbXM6IFtpdGVtLnZhbHVlXSxcbiAgICAgICAgICBmcm9tOiAnc2VsZWN0ZWQnLFxuICAgICAgICAgIHRvOiAnYXZhaWxhYmxlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5nZXRWYWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gcGFzcyB0byBuZ0ZvciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLCB0cmFja3MgaXRlbXNcbiAgICogYnkgdGhlIHZhbHVlIGZpZWxkXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgdHJhY2tCeVZhbHVlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gaXRlbVt0aGlzLnZhbHVlRmllbGRdO1xuICB9XG5cbiAgLyogTWV0aG9kcyBmcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSwgcmVxdWlyZWQgZm9yIG5nTW9kZWwgYW5kIGZvcm1Db250cm9sTmFtZSAtIGJlZ2luICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICAgLi4uaW50ZXJzZWN0aW9uV2l0aCh0aGlzLmF2YWlsYWJsZUl0ZW1zLCB2YWx1ZSwgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsOiBzdHJpbmcpID0+IGl0ZW0udmFsdWUgPT09IHZhbCldO1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdmFsdWUsXG4gICAgICAgICAgICAgIChpdGVtOiBJTGlzdEJveEl0ZW0sIHZhbDogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWwpXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICAvKiBNZXRob2RzIGZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLCByZXF1aXJlZCBmb3IgbmdNb2RlbCBhbmQgZm9ybUNvbnRyb2xOYW1lIC0gZW5kICovXG5cbiAgLyoqXG4gICAqIFV0aWxpdHkgbWV0aG9kIHRvIGdldCB2YWx1ZXMgZnJvbVxuICAgKiBzZWxlY3RlZCBpdGVtc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWx1ZXMoKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGVkSXRlbXMgfHwgW10pLm1hcCgoaXRlbTogSUxpc3RCb3hJdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG59XG5cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIiBbZm9ybUdyb3VwXT1cImxpc3RCb3hGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IGNvbC1sZy01IGNvbC1zbS0xMlwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlciB2ZXJ0aWNhbC1zcGFjaW5nLTVcIj57e2F2YWlsYWJsZVRleHR9fTwvaDQ+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHZlcnRpY2FsLXNwYWNpbmctNVwiIHBsYWNlaG9sZGVyPVwie3thdmFpbGFibGVGaWx0ZXJQbGFjZWhvbGRlcn19XCJcbiAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJsZVNlYXJjaElucHV0XCIgLz5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBsaXN0LWJveFwiIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJsZUxpc3RCb3hcIiBtdWx0aXBsZSBbc2l6ZV09XCJsaXN0U2l6ZVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhdmFpbGFibGVJdGVtcyB8IGFycmF5RmlsdGVyOlsndGV4dCcsIHNlYXJjaFRlcm1BdmFpbGFibGVdIHwgYXJyYXlTb3J0Oltzb3J0QnksICdBU0MnXTt0cmFja0J5OnRyYWNrQnlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtPy52YWx1ZSsnT3B0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJtb3ZlQXZhaWxhYmxlSXRlbVRvU2VsZWN0ZWQoaXRlbSlcIj57e2l0ZW0/LnRleHR9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLWxnLTIgY29sLXNtLTEyIGNlbnRlci1ibG9jayB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGNvbC1tZC04IGNvbC1tZC1vZmZzZXQtMiBhdHIgdG9wODAgc20tc3BhY2luZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxpc3RCb3hGb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRGaWVsZCsnTW92ZUFsbEJ0bidcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibW92ZUFsbEJ1dHRvblwiIChjbGljayk9XCJtb3ZlQWxsSXRlbXNUb1NlbGVjdGVkKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktbGlzdC10YXNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1jaGV2cm9uLXJpZ2h0XCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgc3RyIHZlcnRpY2FsLXNwYWNpbmctNSBzbS1zcGFjaW5nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibGlzdEJveEZvcm0uZGlzYWJsZWQgfHwgIWF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJpZEZpZWxkKydNb3ZlT25lQnRuJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVNYXJrZWRBdmFpbGFibGVJdGVtc1RvU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1jaGV2cm9uLXJpZ2h0XCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgc3RsIHZlcnRpY2FsLXNwYWNpbmctNSBzbS1zcGFjaW5nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibGlzdEJveEZvcm0uZGlzYWJsZWQgfHwgIXNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkRmllbGQrJ01vdmVPbmVMZWZ0QnRuJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVNYXJrZWRTZWxlY3RlZEl0ZW1zVG9BdmFpbGFibGUoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGNvbC1tZC04IGNvbC1tZC1vZmZzZXQtMiBhdGwgYm90dG9tMTAgc20tc3BhY2luZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxpc3RCb3hGb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRGaWVsZCsnTW92ZUFsbExlZnRCdG4nXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1vdmVBbGxCdXR0b25cIiAoY2xpY2spPVwibW92ZUFsbEl0ZW1zVG9BdmFpbGFibGUoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpIGJpLWxpc3QtdGFza1wiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IGNvbC1sZy01IGNvbC1zbS0xMlwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlciB2ZXJ0aWNhbC1zcGFjaW5nLTVcIj57e3NlbGVjdGVkVGV4dH19PC9oND5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdmVydGljYWwtc3BhY2luZy01XCIgcGxhY2Vob2xkZXI9XCJ7e3NlbGVjdGVkRmlsdGVyUGxhY2Vob2xkZXJ9fVwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFNlYXJjaElucHV0XCIgLz5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBsaXN0LWJveFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkTGlzdEJveFwiIG11bHRpcGxlIFtzaXplXT1cImxpc3RTaXplXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXMgfCBhcnJheUZpbHRlcjpbJ3RleHQnLCBzZWFyY2hUZXJtU2VsZWN0ZWRdIHwgYXJyYXlTb3J0Oltzb3J0QnksICdBU0MnXTt0cmFja0J5OnRyYWNrQnlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJtb3ZlU2VsZWN0ZWRJdGVtVG9BdmFpbGFibGUoaXRlbSlcIj57e2l0ZW0/LnRleHR9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbC1saXN0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2R1YWwtbGlzdC1ib3gvZHVhbC1saXN0LWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2R1YWwtbGlzdC1ib3gvZHVhbC1saXN0LWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQTBCLFdBQVcsRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFPLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTlFLE9BQU8sZ0JBQWdCLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUVuRDs7O0dBR0c7QUFZSCxNQUFNLE9BQU8sb0JBQW9CO0lBb0ZaO0lBQXlCO0lBbEY1Qyx3Q0FBd0M7SUFDeEMsSUFBYSxTQUFTLENBQUMsS0FBaUI7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7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VTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFFRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUdJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTtcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IElJdGVtc01vdmVkRXZlbnQgfSBmcm9tICcuL2l0ZW1zLW1vdmVkLWV2ZW50JztcbmltcG9ydCB7IElMaXN0Qm94SXRlbSB9IGZyb20gJy4vbGlzdC1ib3gtaXRlbSc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uV2l0aCBmcm9tICdsb2Rhc2gvaW50ZXJzZWN0aW9uV2l0aCc7XG5pbXBvcnQgZGlmZmVyZW5jZVdpdGggZnJvbSAnbG9kYXNoL2RpZmZlcmVuY2VXaXRoJztcblxuLyoqXG4gKiBOT1RFOiBUaGlzIGNvZGUgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBwcm9qZWN0OiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9uZzItZHVhbC1saXN0LWJveFxuICogTElDRU5TRTogTUlUIMKpIFtFbGRhciBHcmFudWxvXShtYWlsdG86ZWxkYXIzMkBnbWFpbC5jb20pXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kdWFsLWxpc3QtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R1YWwtbGlzdC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kdWFsLWxpc3QtYm94LmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEdWFsTGlzdEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBEdWFsTGlzdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIC8vIGFycmF5IG9mIGl0ZW1zIHRvIGRpc3BsYXkgaW4gbGVmdCBib3hcbiAgQElucHV0KCkgc2V0IGF2YWlsYWJsZShpdGVtczogQXJyYXk8YW55Pikge1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi4oaXRlbXMgfHwgW10pLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgIHZhbHVlOiBpdGVtW3RoaXMudmFsdWVGaWVsZF0udG9TdHJpbmcoKSxcbiAgICAgICAgICB0ZXh0OiBpdGVtW3RoaXMudGV4dEZpZWxkXVxuICAgICAgfSkpXTtcbiAgfTtcbiAgLy8gYXJyYXkgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiByaWdodCBib3hcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkKGl0ZW1zOiBBcnJheTxhbnk+KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4uKGl0ZW1zIHx8IFtdKS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogaXRlbVt0aGlzLnZhbHVlRmllbGRdLnRvU3RyaW5nKCksXG4gICAgICAgICAgdGV4dDogaXRlbVt0aGlzLnRleHRGaWVsZF1cbiAgICAgIH0pKV07XG4gIH07XG4gIC8vIGlucHV0IHRvIHNldCBzZWFyY2ggdGVybSBmb3IgYXZhaWxhYmxlIGxpc3QgYm94IGZyb20gdGhlIG91dHNpZGVcbiAgQElucHV0KCkgc2V0IGF2YWlsYWJsZVNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUF2YWlsYWJsZSA9IHNlYXJjaFRlcm07XG4gICAgICB0aGlzLmF2YWlsYWJsZVNlYXJjaElucHV0Q29udHJvbC5zZXRWYWx1ZShzZWFyY2hUZXJtKTtcbiAgfTtcbiAgLy8gaW5wdXQgdG8gc2V0IHNlYXJjaCB0ZXJtIGZvciBzZWxlY3RlZCBsaXN0IGJveCBmcm9tIHRoZSBvdXRzaWRlXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybVNlbGVjdGVkID0gc2VhcmNoVGVybTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hJbnB1dENvbnRyb2wuc2V0VmFsdWUoc2VhcmNoVGVybSk7XG4gIH07XG4gIC8vIGZpZWxkIHRvIHVzZSBmb3IgdmFsdWUgb2Ygb3B0aW9uXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQgPSAnaWQnO1xuICAvLyBmaWVsZCB0byB1c2UgZm9yIGRpc3BsYXlpbmcgb3B0aW9uIHRleHRcbiAgQElucHV0KCkgdGV4dEZpZWxkID0gJ25hbWUnO1xuICAvLyB0ZXh0IHRvIGRpc3BsYXkgYXMgdGl0bGUgYWJvdmUgY29tcG9uZW50XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgLy8gdGltZSB0byBkZWJvdW5jZSBzZWFyY2ggb3V0cHV0IGluIG1zXG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZSA9IDUwMDtcbiAgLy8gc2hvdy9oaWRlIGJ1dHRvbiB0byBtb3ZlIGFsbCBpdGVtcyBiZXR3ZWVuIGJveGVzXG4gIEBJbnB1dCgpIG1vdmVBbGxCdXR0b24gPSB0cnVlO1xuICAvLyB0ZXh0IGRpc3BsYXllZCBvdmVyIHRoZSBhdmFpbGFibGUgaXRlbXMgbGlzdCBib3hcbiAgQElucHV0KCkgYXZhaWxhYmxlVGV4dCA9ICdBdmFpbGFibGUgaXRlbXMnO1xuICAvLyB0ZXh0IGRpc3BsYXllZCBvdmVyIHRoZSBzZWxlY3RlZCBpdGVtcyBsaXN0IGJveFxuICBASW5wdXQoKSBzZWxlY3RlZFRleHQgPSAnU2VsZWN0ZWQgaXRlbXMnO1xuICAvLyBzZXQgcGxhY2Vob2xkZXIgdGV4dCBpbiBhdmFpbGFibGUgaXRlbXMgbGlzdCBib3hcbiAgQElucHV0KCkgYXZhaWxhYmxlRmlsdGVyUGxhY2Vob2xkZXI9ICdGaWx0ZXIuLi4nO1xuICAvLyBzZXQgcGxhY2Vob2xkZXIgdGV4dCBpbiBzZWxlY3RlZCBpdGVtcyBsaXN0IGJveFxuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlclBsYWNlaG9sZGVyID0gJ0ZpbHRlci4uLic7XG4gIC8vIGZpZWxkIHRvIHVzZSBmb3IgaHRtbCBpZFxuICBASW5wdXQoKSBpZEZpZWxkID0gJ2lkJztcbiAgLy8gZGlzYWJsZSBjb21wb25lbnRcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICBpZiAodGhpcy5saXN0Qm94Rm9ybSkge1xuICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICB0aGlzLmxpc3RCb3hGb3JtLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxpc3RCb3hGb3JtLmVuYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICBASW5wdXQoKSBsaXN0U2l6ZSA9IDEwO1xuXG4gIEBJbnB1dCgpIHNvcnRCeSA9ICd0ZXh0JztcblxuICBASW5wdXQoKSBtYXhTZWxlY3RhYmxlSXRlbXM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtIG9yIGl0ZW1zIGZyb20gYXZhaWxhYmxlIGl0ZW1zKGxlZnQgYm94KSBpcyBzZWxlY3RlZFxuICBAT3V0cHV0KCkgb25BdmFpbGFibGVJdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjx7fSB8IEFycmF5PHt9Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9IHwgQXJyYXk8e30+PigpO1xuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtIG9yIGl0ZW1zIGZyb20gc2VsZWN0ZWQgaXRlbXMocmlnaHQgYm94KSBpcyBzZWxlY3RlZFxuICBAT3V0cHV0KCkgb25TZWxlY3RlZEl0ZW1zU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjx7fSB8IEFycmF5PHt9Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9IHwgQXJyYXk8e30+PigpO1xuICAvLyBldmVudCBjYWxsZWQgd2hlbiBpdGVtcyBhcmUgbW92ZWQgYmV0d2VlbiBib3hlcywgcmV0dXJucyBzdGF0ZSBvZiBib3RoIGJveGVzIGFuZCBpdGVtIG1vdmVkXG4gIEBPdXRwdXQoKSBvbkl0ZW1zTW92ZWQ6IEV2ZW50RW1pdHRlcjxJSXRlbXNNb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SUl0ZW1zTW92ZWRFdmVudD4oKTtcblxuICAvLyBwcml2YXRlIHZhcmlhYmxlcyB0byBtYW5hZ2UgY2xhc3NcbiAgc2VhcmNoVGVybUF2YWlsYWJsZSA9ICcnO1xuICBzZWFyY2hUZXJtU2VsZWN0ZWQgPSAnJztcbiAgYXZhaWxhYmxlSXRlbXM6IEFycmF5PElMaXN0Qm94SXRlbT4gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtczogQXJyYXk8SUxpc3RCb3hJdGVtPiA9IFtdO1xuICBsaXN0Qm94Rm9ybTogRm9ybUdyb3VwO1xuICBhdmFpbGFibGVMaXN0Qm94Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgc2VsZWN0ZWRMaXN0Qm94Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBzZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yc1xuICBfb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7IH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UpIHsgXG4gICAgdGhpcy5saXN0Qm94Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBhdmFpbGFibGVMaXN0Qm94OiB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLFxuICAgICAgICBzZWxlY3RlZExpc3RCb3g6IHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbCxcbiAgICAgICAgYXZhaWxhYmxlU2VhcmNoSW5wdXQ6IHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLFxuICAgICAgICBzZWxlY3RlZFNlYXJjaElucHV0OiB0aGlzLnNlbGVjdGVkU2VhcmNoSW5wdXRDb250cm9sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IEFycmF5PHt9PikgPT4gdGhpcy5vbkF2YWlsYWJsZUl0ZW1TZWxlY3RlZC5lbWl0KGl0ZW1zKSk7XG4gICAgdGhpcy5zZWxlY3RlZExpc3RCb3hDb250cm9sXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IEFycmF5PHt9PikgPT4gdGhpcy5vblNlbGVjdGVkSXRlbXNTZWxlY3RlZC5lbWl0KGl0ZW1zKSk7XG4gICAgdGhpcy5hdmFpbGFibGVTZWFyY2hJbnB1dENvbnRyb2xcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0YXAoKHNlYXJjaDogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaFRlcm1BdmFpbGFibGUgPSBzZWFyY2gpXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbFxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoc2VhcmNoOiBzdHJpbmcpID0+IHRoaXMuc2VhcmNoVGVybVNlbGVjdGVkID0gc2VhcmNoKVxuICAgICAgICApLnN1YnNjcmliZSgpO1xuICB9XG4gIC8qKlxuICAgKiBNb3ZlIGFsbCBpdGVtcyBmcm9tIGF2YWlsYWJsZSB0byBzZWxlY3RlZFxuICAgKi9cbiAgbW92ZUFsbEl0ZW1zVG9TZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0ci5jbGVhcigpO1xuICAgICAgaWYgKCF0aGlzLmF2YWlsYWJsZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heFNlbGVjdGFibGVJdGVtcyAmJiAodGhpcy5hdmFpbGFibGVJdGVtcy5sZW5ndGggKyB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gdGhpcy5tYXhTZWxlY3RhYmxlSXRlbXMpKSB7XG4gICAgICAgIHRoaXMudG9hc3RyLmluZm8oJ09ubHkgJyArIHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zICsgJyBpdGVtcyBtYXkgYmUgYWRkZWQgdG8gJyArIHRoaXMuc2VsZWN0ZWRUZXh0LCAnJywgeyBkaXNhYmxlVGltZU91dDogZmFsc2UsIHRpbWVPdXQ6IDUwMDAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMsIC4uLnRoaXMuYXZhaWxhYmxlSXRlbXNdO1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnYXZhaWxhYmxlJyxcbiAgICAgICAgICB0bzogJ3NlbGVjdGVkJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmdldFZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGFsbCBpdGVtcyBmcm9tIHNlbGVjdGVkIHRvIGF2YWlsYWJsZVxuICAgKi9cbiAgbW92ZUFsbEl0ZW1zVG9BdmFpbGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcblxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLCAuLi50aGlzLnNlbGVjdGVkSXRlbXNdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLm9uSXRlbXNNb3ZlZC5lbWl0KHtcbiAgICAgICAgICBhdmFpbGFibGU6IHRoaXMuYXZhaWxhYmxlSXRlbXMsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICBtb3ZlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgZnJvbTogJ3NlbGVjdGVkJyxcbiAgICAgICAgICB0bzogJ2F2YWlsYWJsZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZExpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShbXSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBtYXJrZWQgaXRlbXMgZnJvbSBhdmFpbGFibGUgaXRlbXMgdG8gc2VsZWN0ZWQgaXRlbXNcbiAgICovXG4gIG1vdmVNYXJrZWRBdmFpbGFibGVJdGVtc1RvU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcbiAgICBsZXQgcGVuZGluZ0l0ZW1zID0gaW50ZXJzZWN0aW9uV2l0aCh0aGlzLmF2YWlsYWJsZUl0ZW1zLCB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnZhbHVlLCAoaXRlbTogSUxpc3RCb3hJdGVtLCB2YWx1ZTogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgaWYgKHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zICYmIChwZW5kaW5nSXRlbXMubGVuZ3RoICsgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IHRoaXMubWF4U2VsZWN0YWJsZUl0ZW1zKSkge1xuICAgICAgICB0aGlzLnRvYXN0ci5pbmZvKCdPbmx5ICcgKyB0aGlzLm1heFNlbGVjdGFibGVJdGVtcyArICcgaXRlbXMgbWF5IGJlIGFkZGVkIHRvICcgKyB0aGlzLnNlbGVjdGVkVGV4dCwgJycsIHsgZGlzYWJsZVRpbWVPdXQ6IGZhbHNlLCB0aW1lT3V0OiA1MDAwIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBmaXJzdCBtb3ZlIGl0ZW1zIHRvIHNlbGVjdGVkXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIC4uLmludGVyc2VjdGlvbldpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsdWU6IHN0cmluZykgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpXTtcbiAgICAgIC8vIG5vdyBmaWx0ZXIgYXZhaWxhYmxlIGl0ZW1zIHRvIG5vdCBpbmNsdWRlIG1hcmtlZCB2YWx1ZXNcbiAgICAgIHRoaXMuYXZhaWxhYmxlSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICAoaXRlbTogSUxpc3RCb3hJdGVtLCB2YWx1ZTogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSldO1xuICAgICAgLy8gY2xlYXIgbWFya2VkIGF2YWlsYWJsZSBpdGVtcyBhbmQgZW1pdCBldmVudFxuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogdGhpcy5hdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnYXZhaWxhYmxlJyxcbiAgICAgICAgICB0bzogJ3NlbGVjdGVkJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxpc3RCb3hDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmdldFZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIG1hcmtlZCBpdGVtcyBmcm9tIHNlbGVjdGVkIGl0ZW1zIHRvIGF2YWlsYWJsZSBpdGVtc1xuICAgKi9cbiAgbW92ZU1hcmtlZFNlbGVjdGVkSXRlbXNUb0F2YWlsYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0ci5jbGVhcigpO1xuXG4gICAgICAvLyBmaXJzdCBtb3ZlIGl0ZW1zIHRvIGF2YWlsYWJsZVxuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIC4uLmludGVyc2VjdGlvbldpdGgodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIChpdGVtOiBJTGlzdEJveEl0ZW0sIHZhbHVlOiBzdHJpbmcpID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKV07XG4gICAgICAvLyBub3cgZmlsdGVyIGF2YWlsYWJsZSBpdGVtcyB0byBub3QgaW5jbHVkZSBtYXJrZWQgdmFsdWVzXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsdWU6IHN0cmluZykgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpXTtcbiAgICAgIC8vIGNsZWFyIG1hcmtlZCBhdmFpbGFibGUgaXRlbXMgYW5kIGVtaXQgZXZlbnRcbiAgICAgIHRoaXMub25JdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVJdGVtcyxcbiAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIG1vdmVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbC52YWx1ZSxcbiAgICAgICAgICBmcm9tOiAnc2VsZWN0ZWQnLFxuICAgICAgICAgIHRvOiAnYXZhaWxhYmxlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTGlzdEJveENvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaElucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5nZXRWYWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBzaW5nbGUgaXRlbSBmcm9tIGF2YWlsYWJsZSB0byBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgbW92ZUF2YWlsYWJsZUl0ZW1Ub1NlbGVjdGVkKGl0ZW06IElMaXN0Qm94SXRlbSk6IHZvaWQge1xuXG4gICAgICB0aGlzLmF2YWlsYWJsZUl0ZW1zID0gdGhpcy5hdmFpbGFibGVJdGVtcy5maWx0ZXIoKGxpc3RJdGVtOiBJTGlzdEJveEl0ZW0pID0+IGxpc3RJdGVtLnZhbHVlICE9PSBpdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMsIGl0ZW1dO1xuICAgICAgdGhpcy5vbkl0ZW1zTW92ZWQuZW1pdCh7XG4gICAgICAgICAgYXZhaWxhYmxlOiB0aGlzLmF2YWlsYWJsZUl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgbW92ZWRJdGVtczogW2l0ZW0udmFsdWVdLFxuICAgICAgICAgIGZyb206ICdhdmFpbGFibGUnLFxuICAgICAgICAgIHRvOiAnc2VsZWN0ZWQnXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGlzdEJveENvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuZ2V0VmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgc2luZ2xlIGl0ZW0gZnJvbSBzZWxlY3RlZCB0byBhdmFpbGFibGVcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIG1vdmVTZWxlY3RlZEl0ZW1Ub0F2YWlsYWJsZShpdGVtOiBJTGlzdEJveEl0ZW0pOiB2b2lkIHtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigobGlzdEl0ZW06IElMaXN0Qm94SXRlbSkgPT4gbGlzdEl0ZW0udmFsdWUgIT09IGl0ZW0udmFsdWUpO1xuICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9IFsuLi50aGlzLmF2YWlsYWJsZUl0ZW1zLCBpdGVtXTtcbiAgICAgIHRoaXMub25JdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVJdGVtcyxcbiAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIG1vdmVkSXRlbXM6IFtpdGVtLnZhbHVlXSxcbiAgICAgICAgICBmcm9tOiAnc2VsZWN0ZWQnLFxuICAgICAgICAgIHRvOiAnYXZhaWxhYmxlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoSW5wdXRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0Qm94Q29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5nZXRWYWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gcGFzcyB0byBuZ0ZvciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLCB0cmFja3MgaXRlbXNcbiAgICogYnkgdGhlIHZhbHVlIGZpZWxkXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgdHJhY2tCeVZhbHVlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gaXRlbVt0aGlzLnZhbHVlRmllbGRdO1xuICB9XG5cbiAgLyogTWV0aG9kcyBmcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSwgcmVxdWlyZWQgZm9yIG5nTW9kZWwgYW5kIGZvcm1Db250cm9sTmFtZSAtIGJlZ2luICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICAgLi4uaW50ZXJzZWN0aW9uV2l0aCh0aGlzLmF2YWlsYWJsZUl0ZW1zLCB2YWx1ZSwgKGl0ZW06IElMaXN0Qm94SXRlbSwgdmFsOiBzdHJpbmcpID0+IGl0ZW0udmFsdWUgPT09IHZhbCldO1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlSXRlbXMgPSBbLi4uZGlmZmVyZW5jZVdpdGgodGhpcy5hdmFpbGFibGVJdGVtcywgdmFsdWUsXG4gICAgICAgICAgICAgIChpdGVtOiBJTGlzdEJveEl0ZW0sIHZhbDogc3RyaW5nKSA9PiBpdGVtLnZhbHVlID09PSB2YWwpXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICAvKiBNZXRob2RzIGZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLCByZXF1aXJlZCBmb3IgbmdNb2RlbCBhbmQgZm9ybUNvbnRyb2xOYW1lIC0gZW5kICovXG5cbiAgLyoqXG4gICAqIFV0aWxpdHkgbWV0aG9kIHRvIGdldCB2YWx1ZXMgZnJvbVxuICAgKiBzZWxlY3RlZCBpdGVtc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWx1ZXMoKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGVkSXRlbXMgfHwgW10pLm1hcCgoaXRlbTogSUxpc3RCb3hJdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG59XG5cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIiBbZm9ybUdyb3VwXT1cImxpc3RCb3hGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IGNvbC1sZy01IGNvbC1zbS0xMlwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIHZlcnRpY2FsLXNwYWNpbmctNVwiIGlkPVwiYXZhaWxhYmxlTGlzdExhYmVsXCI+e3thdmFpbGFibGVUZXh0fX08L3NwYW4+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHZlcnRpY2FsLXNwYWNpbmctNVwiIHBsYWNlaG9sZGVyPVwie3thdmFpbGFibGVGaWx0ZXJQbGFjZWhvbGRlcn19XCJcbiAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJsZVNlYXJjaElucHV0XCJcbiAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWx0ZXIgYXZhaWxhYmxlIGl0ZW1zXCJcbiAgICAgICAgICAgICAgIHJvbGU9XCJzZWFyY2hib3hcIlxuICAgICAgICAvPlxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGxpc3QtYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwiYXZhaWxhYmxlTGlzdEJveFwiIG11bHRpcGxlIFtzaXplXT1cImxpc3RTaXplXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImF2YWlsYWJsZUxpc3RMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGF2YWlsYWJsZUl0ZW1zIHwgYXJyYXlGaWx0ZXI6Wyd0ZXh0Jywgc2VhcmNoVGVybUF2YWlsYWJsZV0gfCBhcnJheVNvcnQ6W3NvcnRCeSwgJ0FTQyddO3RyYWNrQnk6dHJhY2tCeVZhbHVlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtPy52YWx1ZSsnT3B0aW9uJ1wiXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm1vdmVBdmFpbGFibGVJdGVtVG9TZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICA+e3tpdGVtPy50ZXh0fX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC1sZy0yIGNvbC1zbS0xMiBjZW50ZXItYmxvY2sgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgYXRyIHRvcDgwIHNtLXNwYWNpbmdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsaXN0Qm94Rm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkRmllbGQrJ01vdmVBbGxCdG4nXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1vdmVBbGxCdXR0b25cIiAoY2xpY2spPVwibW92ZUFsbEl0ZW1zVG9TZWxlY3RlZCgpXCIgYXJpYS1sYWJlbD1cIk1vdmUgQWxsIEl0ZW1zIFRvIFNlbGVjdGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpIGJpLWxpc3QtdGFza1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktY2hldnJvbi1yaWdodFwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgY29sLW1kLTggY29sLW1kLW9mZnNldC0yIHN0ciB2ZXJ0aWNhbC1zcGFjaW5nLTUgc20tc3BhY2luZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxpc3RCb3hGb3JtLmRpc2FibGVkIHx8ICFhdmFpbGFibGVMaXN0Qm94Q29udHJvbC52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRGaWVsZCsnTW92ZU9uZUJ0bidcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlTWFya2VkQXZhaWxhYmxlSXRlbXNUb1NlbGVjdGVkKClcIiBhcmlhLWxhYmVsPVwiTW92ZSBNYXJrZWQgQXZhaWxhYmxlIEl0ZW1zIFRvIFNlbGVjdGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpIGJpLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGNvbC1tZC04IGNvbC1tZC1vZmZzZXQtMiBzdGwgdmVydGljYWwtc3BhY2luZy01IHNtLXNwYWNpbmdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsaXN0Qm94Rm9ybS5kaXNhYmxlZCB8fCAhc2VsZWN0ZWRMaXN0Qm94Q29udHJvbC52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRGaWVsZCsnTW92ZU9uZUxlZnRCdG4nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZU1hcmtlZFNlbGVjdGVkSXRlbXNUb0F2YWlsYWJsZSgpXCIgYXJpYS1sYWJlbD1cIk1vdmUgTWFya2VkIFNlbGVjdGVkIEl0ZW1zIFRvIEF2YWlsYWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGNvbC1tZC04IGNvbC1tZC1vZmZzZXQtMiBhdGwgYm90dG9tMTAgc20tc3BhY2luZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxpc3RCb3hGb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRGaWVsZCsnTW92ZUFsbExlZnRCdG4nXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1vdmVBbGxCdXR0b25cIiAoY2xpY2spPVwibW92ZUFsbEl0ZW1zVG9BdmFpbGFibGUoKVwiIGFyaWEtbGFiZWw9XCJNb3ZlIEFsbCBJdGVtcyBUbyBBdmFpbGFibGVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktY2hldnJvbi1sZWZ0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1saXN0LXRhc2tcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSBjb2wtbGctNSBjb2wtc20tMTJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlciB2ZXJ0aWNhbC1zcGFjaW5nLTVcIiBpZD1cInNlbGVjdGVkTGlzdExhYmVsXCI+e3tzZWxlY3RlZFRleHR9fTwvc3Bhbj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdmVydGljYWwtc3BhY2luZy01XCIgcGxhY2Vob2xkZXI9XCJ7e3NlbGVjdGVkRmlsdGVyUGxhY2Vob2xkZXJ9fVwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFNlYXJjaElucHV0XCJcbiAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWx0ZXIgc2VsZWN0ZWQgaXRlbXNcIlxuICAgICAgICAgICAgICAgcm9sZT1cInNlYXJjaGJveFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbGlzdC1ib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZExpc3RCb3hcIiBtdWx0aXBsZSBbc2l6ZV09XCJsaXN0U2l6ZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzZWxlY3RlZExpc3RMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXMgfCBhcnJheUZpbHRlcjpbJ3RleHQnLCBzZWFyY2hUZXJtU2VsZWN0ZWRdIHwgYXJyYXlTb3J0Oltzb3J0QnksICdBU0MnXTt0cmFja0J5OnRyYWNrQnlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwibW92ZVNlbGVjdGVkSXRlbVRvQXZhaWxhYmxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgID57e2l0ZW0/LnRleHR9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -34,11 +34,11 @@ export class EbizAddressComponent {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EbizAddressComponent, deps: [{ token: i1.OepaAddressService }, { token: i2.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EbizAddressComponent, selector: "oepa-ebiz-address", inputs: { group: "group", showValidation: "showValidation", addressOneLabel: "addressOneLabel", addressTwoLabel: "addressTwoLabel", cityLabel: "cityLabel", stateLabel: "stateLabel", zipCodeLabel: "zipCodeLabel" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EbizAddressComponent, selector: "oepa-ebiz-address", inputs: { group: "group", showValidation: "showValidation", addressOneLabel: "addressOneLabel", addressTwoLabel: "addressTwoLabel", cityLabel: "cityLabel", stateLabel: "stateLabel", zipCodeLabel: "zipCodeLabel" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line1Input'\">{{addressOneLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine1'].status === 'INVALID'}\" \n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine1\" [id]=\"componentId+'_Line1Input'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line2Input'\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine2'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine2\" [id]=\"componentId+'_Line2Input'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CityInput'\">{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [id]=\"componentId+'_CityInput'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates\" class=\"form-group\">\n <label [for]=\"componentId+'_StateSelect'\">{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\"\n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" role=\"combobox\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_ZipInput'\">{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['zip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Zip Code\" formControlName=\"zip\" [id]=\"componentId+'_ZipInput'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('required')\">Zip code is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('pattern')\">Zip code must contain exactly 5 digits</small>\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EbizAddressComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'oepa-ebiz-address', template: "<div [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n
|
|
41
|
+
args: [{ selector: 'oepa-ebiz-address', template: "<div [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line1Input'\">{{addressOneLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine1'].status === 'INVALID'}\" \n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine1\" [id]=\"componentId+'_Line1Input'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line2Input'\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine2'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine2\" [id]=\"componentId+'_Line2Input'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CityInput'\">{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [id]=\"componentId+'_CityInput'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates\" class=\"form-group\">\n <label [for]=\"componentId+'_StateSelect'\">{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\"\n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" role=\"combobox\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_ZipInput'\">{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['zip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Zip Code\" formControlName=\"zip\" [id]=\"componentId+'_ZipInput'\" role=\"textbox\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('required')\">Zip code is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('pattern')\">Zip code must contain exactly 5 digits</small>\n </div>\n </div>\n </div>\n</div>" }]
|
|
42
42
|
}], ctorParameters: () => [{ type: i1.OepaAddressService }, { type: i2.OepaComponentIdService }], propDecorators: { group: [{
|
|
43
43
|
type: Input
|
|
44
44
|
}], showValidation: [{
|
|
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
59
59
|
type: Input,
|
|
60
60
|
args: ['zipCodeLabel']
|
|
61
61
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWJpei1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZWJpei1hZGRyZXNzL2ViaXotYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2ViaXotYWRkcmVzcy9lYml6LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVl6RCxNQUFNLE9BQU8sb0JBQW9CO0lBY1g7SUFBNEM7SUFiekQsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNsQixRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztJQUVuQyxLQUFLLENBQWE7SUFDbEIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVDLGVBQWUsR0FBVyxXQUFXLENBQUM7SUFDdEMsZUFBZSxHQUFXLFdBQVcsQ0FBQztJQUM1QyxTQUFTLEdBQVcsTUFBTSxDQUFDO0lBQzFCLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDM0IsWUFBWSxHQUFXLFVBQVUsQ0FBQztJQUVoRSxZQUFvQixjQUFrQyxFQUFVLFNBQWlDO1FBQTdFLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBQy9GLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN6QixDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDN0QsQ0FBQztTQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzt3R0EzQlUsb0JBQW9COzRGQUFwQixvQkFBb0IsK1FDWmpDLG0xSEFxRE07OzRGRHpDTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsbUJBQW1COzRIQVNwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFMkIsZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ1MsZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQUNVLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFDVyxZQUFZO3NCQUF6QyxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2VwYUNvbXBvbmVudElkU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5pbXBvcnQgeyBPZXBhQWRkcmVzc1NlcnZpY2UgfSBmcm9tICcuLi9hZGRyZXNzL29lcGEtYWRkcmVzcy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWViaXotYWRkcmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lYml6LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lYml6LWFkZHJlc3MuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEViaXpBZGRyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHNob3dTdGF0ZXMgPSB0cnVlO1xuICBwdWJsaWMgdXNTdGF0ZXM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdFYml6QWRkcmVzc0NvbXBvbmVudCc7XG5cbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHNob3dWYWxpZGF0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KCdhZGRyZXNzT25lTGFiZWwnKSBwdWJsaWMgYWRkcmVzc09uZUxhYmVsOiBzdHJpbmcgPSAnQWRkcmVzcyAxJztcbiAgQElucHV0KCdhZGRyZXNzVHdvTGFiZWwnKSBwdWJsaWMgYWRkcmVzc1R3b0xhYmVsOiBzdHJpbmcgPSAnQWRkcmVzcyAyJztcbiAgQElucHV0KCdjaXR5TGFiZWwnKSBwdWJsaWMgY2l0eUxhYmVsOiBzdHJpbmcgPSAnQ2l0eSc7XG4gIEBJbnB1dCgnc3RhdGVMYWJlbCcpIHB1YmxpYyBzdGF0ZUxhYmVsOiBzdHJpbmcgPSAnU3RhdGUnO1xuICBASW5wdXQoJ3ppcENvZGVMYWJlbCcpIHB1YmxpYyB6aXBDb2RlTGFiZWw6IHN0cmluZyA9ICdaaXAgQ29kZSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGRyZXNzU2VydmljZTogT2VwYUFkZHJlc3NTZXJ2aWNlLCBwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkge1xuICAgIHRoaXMuYWRkcmVzc1NlcnZpY2UuZ2V0U3RhdGVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZXMpID0+IHtcbiAgICAgIHRoaXMudXNTdGF0ZXMgPSBzdGF0ZXM7XG4gICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnRVJST1IgcmV0cmlldmluZyBzdGF0ZXMgZm9yIGFkZHJlc3M6ICcgKyBlcnIpO1xuICAgIH19KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbXBvbmVudElkKydfTGluZTFJbnB1dCdcIj57e2FkZHJlc3NPbmVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2FkZHJlc3NMaW5lMSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiIFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBZGRyZXNzXCIgbWF4bGVuZ3RoPVwiNDBcIiBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZTFcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MaW5lMUlucHV0J1wiIHJvbGU9XCJ0ZXh0Ym94XCI+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydhZGRyZXNzTGluZTEnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7YWRkcmVzc09uZUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snYWRkcmVzc0xpbmUxJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3thZGRyZXNzT25lTGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX0xpbmUySW5wdXQnXCI+e3thZGRyZXNzVHdvTGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydhZGRyZXNzTGluZTInXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBZGRyZXNzXCIgbWF4bGVuZ3RoPVwiNDBcIiBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZTJcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MaW5lMklucHV0J1wiIHJvbGU9XCJ0ZXh0Ym94XCI+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydhZGRyZXNzTGluZTInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7YWRkcmVzc1R3b0xhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snYWRkcmVzc0xpbmUyJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3thZGRyZXNzVHdvTGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbXBvbmVudElkKydfQ2l0eUlucHV0J1wiPnt7Y2l0eUxhYmVsfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snY2l0eSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkNpdHlcIiBtYXhsZW5ndGg9XCIzMFwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19DaXR5SW5wdXQnXCIgcm9sZT1cInRleHRib3hcIj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NpdHknXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7Y2l0eUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snY2l0eSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7Y2l0eUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U3RhdGVzXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX1N0YXRlU2VsZWN0J1wiPnt7c3RhdGVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ3N0YXRlJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiQWRkcmVzc1N0YXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19TdGF0ZVNlbGVjdCdcIiByb2xlPVwiY29tYm9ib3hcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcyBvZiB1c1N0YXRlc1wiIFtuZ1ZhbHVlXT1cInNcIj57e3N9fTwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydzdGF0ZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+U3RhdGUgaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19aaXBJbnB1dCdcIj57e3ppcENvZGVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ3ppcCddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlppcCBDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwiemlwXCIgW2lkXT1cImNvbXBvbmVudElkKydfWmlwSW5wdXQnXCIgcm9sZT1cInRleHRib3hcIj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3ppcCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+WmlwIGNvZGUgaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snemlwJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlppcCBjb2RlIG11c3QgY29udGFpbiBleGFjdGx5IDUgZGlnaXRzPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|