@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
package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs
CHANGED
|
@@ -97,11 +97,11 @@ export class OrganizationSearchInputComponent {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationSearchInputComponent, deps: [{ token: i1.OepaComponentIdService }, { token: i2.BsModalService }, { token: i3.EntityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OrganizationSearchInputComponent, selector: "oepa-organization-search-input", inputs: { group: "group", organizationID: "organizationID", field: "field", title: "title", errorMessageAddendum: "errorMessageAddendum", rowLayout: "rowLayout" }, outputs: { organizationSelected: "organizationSelected" }, ngImport: i0, template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <
|
|
100
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OrganizationSearchInputComponent, selector: "oepa-organization-search-input", inputs: { group: "group", organizationID: "organizationID", field: "field", title: "title", errorMessageAddendum: "errorMessageAddendum", rowLayout: "rowLayout" }, outputs: { organizationSelected: "organizationSelected" }, ngImport: i0, template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\" [attr.for]=\"componentId + '_OrganizationSearch'\" id=\"organizationSearchLabel\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\" aria-live=\"polite\" aria-label=\"Searching\"></span></span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"advancedSearch()\" aria-label=\"Advanced Search\">Advanced Search</button>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\" [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID'}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onOrganizationSelect($event)\" [id]=\"componentId + '_OrganizationSearch'\"\n [typeaheadItemTemplate]=\"organizationTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Organization\"\n [attr.aria-labelledby]=\"'organizationSearchLabel'\" [attr.aria-describedby]=\"componentId + '_OrganizationSearchError'\">\n <small id=\"{{componentId + '_OrganizationSearchError'}}\" class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">\n {{title}} is required {{errorMessageAddendum}}\n </small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.TypeaheadDirective, selector: "[typeahead]", inputs: ["typeahead", "typeaheadMinLength", "adaptivePosition", "isAnimated", "typeaheadWaitMs", "typeaheadOptionsLimit", "typeaheadOptionField", "typeaheadGroupField", "typeaheadOrderBy", "typeaheadAsync", "typeaheadLatinize", "typeaheadSingleWords", "typeaheadWordDelimiters", "typeaheadMultipleSearch", "typeaheadMultipleSearchDelimiters", "typeaheadPhraseDelimiters", "typeaheadItemTemplate", "optionsListTemplate", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadHideResultsOnBlur", "typeaheadSelectFirstItem", "typeaheadIsFirstItemActive", "container", "dropup"], outputs: ["typeaheadLoading", "typeaheadNoResults", "typeaheadOnSelect", "typeaheadOnPreview", "typeaheadOnBlur"], exportAs: ["bs-typeahead"] }] });
|
|
101
101
|
}
|
|
102
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationSearchInputComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
104
|
-
args: [{ selector: 'oepa-organization-search-input', template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <
|
|
104
|
+
args: [{ selector: 'oepa-organization-search-input', template: "<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\" [attr.for]=\"componentId + '_OrganizationSearch'\" id=\"organizationSearchLabel\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\" aria-live=\"polite\" aria-label=\"Searching\"></span></span>\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"advancedSearch()\" aria-label=\"Advanced Search\">Advanced Search</button>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\" [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID'}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onOrganizationSelect($event)\" [id]=\"componentId + '_OrganizationSearch'\"\n [typeaheadItemTemplate]=\"organizationTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Organization\"\n [attr.aria-labelledby]=\"'organizationSearchLabel'\" [attr.aria-describedby]=\"componentId + '_OrganizationSearchError'\">\n <small id=\"{{componentId + '_OrganizationSearchError'}}\" class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">\n {{title}} is required {{errorMessageAddendum}}\n </small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>" }]
|
|
105
105
|
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }, { type: i2.BsModalService }, { type: i3.EntityService }], propDecorators: { group: [{
|
|
106
106
|
type: Input,
|
|
107
107
|
args: ['group']
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
124
124
|
type: Output,
|
|
125
125
|
args: ['organizationSelected']
|
|
126
126
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2VudGl0eS9vcmdhbml6YXRpb24tc2VhcmNoLWlucHV0L29yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvb3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC9vcmdhbml6YXRpb24tc2VhcmNoLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7Ozs7Ozs7O0FBT3BILE1BQU0sT0FBTyxnQ0FBZ0M7SUFnQnZCO0lBQ1Y7SUFDQTtJQWpCVixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsQ0FBaUM7SUFDM0MsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFWCxLQUFLLENBQWE7SUFDVCxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQ3JDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsS0FBSyxHQUFXLGNBQWMsQ0FBQztJQUNoQixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDckMsU0FBUyxHQUFHLEtBQUssQ0FBQztJ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QUFDLEVBQUU7WUFDaEcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTNGVSxnQ0FBZ0M7NEZBQWhDLGdDQUFnQyxxU0NqQjdDLGlpREFxQk07OzRGREpPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7b0pBVzFCLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUF0QyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDUCxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNpQixvQkFBb0I7c0JBQWxELEtBQUs7dUJBQUMsc0JBQXNCO2dCQUNULFNBQVM7c0JBQTVCLEtBQUs7dUJBQUMsV0FBVztnQkFFYyxvQkFBb0I7c0JBQW5ELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHlwZWFoZWFkTWF0Y2ggfSBmcm9tICduZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZWFyY2hNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwvb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLW9yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbmFtZVNlYXJjaCA9ICcnO1xuICBuYW1lU291cmNlOiBPYnNlcnZhYmxlPE9FUEFPcmdhbml6YXRpb25bXT47XG4gIGNvbXBvbmVudElkOiBzdHJpbmcgPSAnJztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdncm91cCcpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoJ29yZ2FuaXphdGlvbklEJykgb3JnYW5pemF0aW9uSUQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ2ZpZWxkJykgZmllbGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ3RpdGxlJykgdGl0bGU6IHN0cmluZyA9ICdPcmdhbml6YXRpb24nO1xuICBASW5wdXQoJ2Vycm9yTWVzc2FnZUFkZGVuZHVtJykgZXJyb3JNZXNzYWdlQWRkZW5kdW0gPSAnJztcbiAgQElucHV0KCdyb3dMYXlvdXQnKSByb3dMYXlvdXQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCdvcmdhbml6YXRpb25TZWxlY3RlZCcpIG9yZ2FuaXphdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8T0VQQU9yZ2FuaXphdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFPcmdhbml6YXRpb24+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZFNlcnZpY2U6IE9lcGFDb21wb25lbnRJZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZTogRW50aXR5U2VydmljZSkge1xuICAgICAgdGhpcy5uYW1lU291cmNlID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5ncm91cC5nZXQodGhpcy5maWVsZCk/LnZhbHVlKTtcbiAgICAgIH0pLnBpcGUobWVyZ2VNYXAoKHRva2VuOiBhbnkpID0+IHRoaXMuc2VhcmNoT3JnYW5pemF0aW9ucyh0b2tlbikpKTtcbiAgICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICBpZiAodGhpcy5vcmdhbml6YXRpb25JRCkge1xuICAgICAgY29uc3QgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgICBpZDogdGhpcy5vcmdhbml6YXRpb25JRFxuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlLnNlYXJjaE9yZ2FuaXphdGlvbnMoZmlsdGVyKS5zdWJzY3JpYmUob3JnYW5pemF0aW9uTGlzdCA9PiB7XG4gICAgICAgIGlmIChvcmdhbml6YXRpb25MaXN0ICYmIG9yZ2FuaXphdGlvbkxpc3QubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdhbml6YXRpb25JbkZvcm0ob3JnYW5pemF0aW9uTGlzdFswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6IFplcm8gb3IgbXVsdGlwbGUgb3JnYW5pemF0aW9ucyB3aWggaWQ6ICcgKyB0aGlzLm9yZ2FuaXphdGlvbklEO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLmZpZWxkKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlbGVjdGVkLmVtaXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9yZ2FuaXphdGlvblNlbGVjdChlOiBUeXBlYWhlYWRNYXRjaCkge1xuICAgIGlmIChlLml0ZW0pIHtcbiAgICAgIHRoaXMubG9hZE9yZ2FuaXphdGlvbkluRm9ybShlLml0ZW0pO1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KGUuaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JnYW5pemF0aW9uSW5Gb3JtKG9yZ2FuaXphdGlvbjogT0VQQU9yZ2FuaXphdGlvbikge1xuICAgIGxldCBkYXRhOiBhbnkgPSB7fTtcbiAgICBkYXRhW3RoaXMuZmllbGRdID0gb3JnYW5pemF0aW9uLm5hbWUgPyAob3JnYW5pemF0aW9uLm5hbWUgKyAnICgnICsgb3JnYW5pemF0aW9uLmlkICsgJyknKSA6ICcnO1xuICAgIGlmIChvcmdhbml6YXRpb24pIHtcbiAgICAgIHRoaXMuZ3JvdXAucGF0Y2hWYWx1ZShkYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaE9yZ2FuaXphdGlvbnModG9rZW46IGFueSk6IE9ic2VydmFibGU8T0VQQU9yZ2FuaXphdGlvbltdPiB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgY29uc3QgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgbmFtZTogaXNOYU4odG9rZW4pID8gdG9rZW4gOiB1bmRlZmluZWQsXG4gICAgICBpZDogaXNOYU4odG9rZW4pID8gdW5kZWZpbmVkIDogdG9rZW5cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hPcmdhbml6YXRpb25zKGZpbHRlcikucGlwZShcbiAgICAgIG1hcCgob3JnYW5pemF0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb3JnYW5pemF0aW9ucztcbiAgICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1NlYXJjaCBmYWlsZWQ6ICcgKyBlcnI7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZHZhbmNlZFNlYXJjaCgpIHtcbiAgICBsZXQgbW9kYWwgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KE9yZ2FuaXphdGlvblNlYXJjaE1vZGFsQ29tcG9uZW50LCB7Y2xhc3M6ICdtb2RhbC14bCcsaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZX0pO1xuICAgICg8T3JnYW5pemF0aW9uU2VhcmNoTW9kYWxDb21wb25lbnQ+bW9kYWwuY29udGVudCkub25Pcmdhbml6YXRpb25TZWxlY3RlZC5zdWJzY3JpYmUob3JnYW5pemF0aW9uID0+IHtcbiAgICAgIHRoaXMubG9hZE9yZ2FuaXphdGlvbkluRm9ybShvcmdhbml6YXRpb24pO1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KG9yZ2FuaXphdGlvbik7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydyb3cgdGV4dC1yaWdodCc6IHJvd0xheW91dH1cIj5cbiAgICA8bmctdGVtcGxhdGUgI29yZ2FuaXphdGlvblRlbXBsYXRlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8aDU+e3sgKG1vZGVsLm5hbWUgfHwgJycpICtcbiAgICAgICAgICAgIChtb2RlbC5hZGRyZXNzTGlzdCAmJiBtb2RlbC5hZGRyZXNzTGlzdFswXSA/ICgnIC0gJyArIG1vZGVsLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3MuYWRkcmVzc0xpbmUxICsgJywgJyArIG1vZGVsLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3MuY2l0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbW9kZWwuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcy5zdGF0ZSkgOiAnJykgKyAnICgnICsgbW9kZWwuaWQgKyAnKScgfX08L2g1PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnY29sLXNtLTQgY29sLWZvcm0tbGFiZWwnOiByb3dMYXlvdXR9XCI+XG4gICAgICAgIHt7dGl0bGV9fVxuICAgICAgICA8c3BhbiAqbmdJZj1cInNlYXJjaGluZ1wiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj48L3NwYW4+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiYWR2YW5jZWRTZWFyY2goKVwiPkFkdmFuY2VkIFNlYXJjaDwvYT5cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydjb2wtc20tOCc6IHJvd0xheW91dH1cIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdHlwZT1cInNlYXJjaFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6Z3JvdXAuY29udHJvbHNbZmllbGRdPy5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZFwiIFt0eXBlYWhlYWRdPVwibmFtZVNvdXJjZVwiIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKHR5cGVhaGVhZE9uU2VsZWN0KT1cIm9uT3JnYW5pemF0aW9uU2VsZWN0KCRldmVudClcIiBbaWRdPVwiY29tcG9uZW50SWQgKyAnX09yZ2FuaXphdGlvblNlYXJjaCdcIlxuICAgICAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJvcmdhbml6YXRpb25UZW1wbGF0ZVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwiM1wiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIE9yZ2FuaXphdGlvblwiPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1tmaWVsZF0/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3t0aXRsZX19IGlzIHJlcXVpcmVkIHt7ZXJyb3JNZXNzYWdlQWRkZW5kdW19fTwvc21hbGw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cbjwvZGl2PiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2VudGl0eS9vcmdhbml6YXRpb24tc2VhcmNoLWlucHV0L29yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvb3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC9vcmdhbml6YXRpb24tc2VhcmNoLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7Ozs7Ozs7O0FBT3BILE1BQU0sT0FBTyxnQ0FBZ0M7SUFnQnZCO0lBQ1Y7SUFDQTtJQWpCVixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsQ0FBaUM7SUFDM0MsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFWCxLQUFLLENBQWE7SUFDVCxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQ3JDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsS0FBSyxHQUFXLGNBQWMsQ0FBQztJQUNoQixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDckMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVOLG9CQUFvQixHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUU1SCxZQUFvQixTQUFpQyxFQUMzQyxZQUE0QixFQUM1QixhQUE0QjtRQUZsQixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUMzQyxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLE1BQU0sR0FBMkI7Z0JBQ3JDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYzthQUN4QixDQUFBO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDMUUsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFlBQVksR0FBRywyRUFBMkUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUN4SCxDQUFDO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxvQ0FBb0MsR0FBRyxHQUFHLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG9CQUFvQixDQUFDLENBQWlCO1FBQzNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFlBQThCO1FBQzNELElBQUksSUFBSSxHQUFRLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsWUFBWSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9GLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFVO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUEyQjtZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdEMsRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLO1NBQ3JDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7WUFDNUMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakYsS0FBSyxDQUFDLE9BQVEsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTNGVSxnQ0FBZ0M7NEZBQWhDLGdDQUFnQyxxU0NqQjdDLDQ2REF3Qk07OzRGRFBPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7b0pBVzFCLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUF0QyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDUCxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNpQixvQkFBb0I7c0JBQWxELEtBQUs7dUJBQUMsc0JBQXNCO2dCQUNULFNBQVM7c0JBQTVCLEtBQUs7dUJBQUMsV0FBVztnQkFFYyxvQkFBb0I7c0JBQW5ELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHlwZWFoZWFkTWF0Y2ggfSBmcm9tICduZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZWFyY2hNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwvb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLW9yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3JnYW5pemF0aW9uLXNlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZ2FuaXphdGlvbi1zZWFyY2gtaW5wdXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbmFtZVNlYXJjaCA9ICcnO1xuICBuYW1lU291cmNlOiBPYnNlcnZhYmxlPE9FUEFPcmdhbml6YXRpb25bXT47XG4gIGNvbXBvbmVudElkOiBzdHJpbmcgPSAnJztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdncm91cCcpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoJ29yZ2FuaXphdGlvbklEJykgb3JnYW5pemF0aW9uSUQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ2ZpZWxkJykgZmllbGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoJ3RpdGxlJykgdGl0bGU6IHN0cmluZyA9ICdPcmdhbml6YXRpb24nO1xuICBASW5wdXQoJ2Vycm9yTWVzc2FnZUFkZGVuZHVtJykgZXJyb3JNZXNzYWdlQWRkZW5kdW0gPSAnJztcbiAgQElucHV0KCdyb3dMYXlvdXQnKSByb3dMYXlvdXQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCdvcmdhbml6YXRpb25TZWxlY3RlZCcpIG9yZ2FuaXphdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8T0VQQU9yZ2FuaXphdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFPcmdhbml6YXRpb24+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZFNlcnZpY2U6IE9lcGFDb21wb25lbnRJZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZTogRW50aXR5U2VydmljZSkge1xuICAgICAgdGhpcy5uYW1lU291cmNlID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5ncm91cC5nZXQodGhpcy5maWVsZCk/LnZhbHVlKTtcbiAgICAgIH0pLnBpcGUobWVyZ2VNYXAoKHRva2VuOiBhbnkpID0+IHRoaXMuc2VhcmNoT3JnYW5pemF0aW9ucyh0b2tlbikpKTtcbiAgICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICBpZiAodGhpcy5vcmdhbml6YXRpb25JRCkge1xuICAgICAgY29uc3QgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgICBpZDogdGhpcy5vcmdhbml6YXRpb25JRFxuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlLnNlYXJjaE9yZ2FuaXphdGlvbnMoZmlsdGVyKS5zdWJzY3JpYmUob3JnYW5pemF0aW9uTGlzdCA9PiB7XG4gICAgICAgIGlmIChvcmdhbml6YXRpb25MaXN0ICYmIG9yZ2FuaXphdGlvbkxpc3QubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdhbml6YXRpb25JbkZvcm0ob3JnYW5pemF0aW9uTGlzdFswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6IFplcm8gb3IgbXVsdGlwbGUgb3JnYW5pemF0aW9ucyB3aWggaWQ6ICcgKyB0aGlzLm9yZ2FuaXphdGlvbklEO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLmZpZWxkKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlbGVjdGVkLmVtaXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9yZ2FuaXphdGlvblNlbGVjdChlOiBUeXBlYWhlYWRNYXRjaCkge1xuICAgIGlmIChlLml0ZW0pIHtcbiAgICAgIHRoaXMubG9hZE9yZ2FuaXphdGlvbkluRm9ybShlLml0ZW0pO1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KGUuaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JnYW5pemF0aW9uSW5Gb3JtKG9yZ2FuaXphdGlvbjogT0VQQU9yZ2FuaXphdGlvbikge1xuICAgIGxldCBkYXRhOiBhbnkgPSB7fTtcbiAgICBkYXRhW3RoaXMuZmllbGRdID0gb3JnYW5pemF0aW9uLm5hbWUgPyAob3JnYW5pemF0aW9uLm5hbWUgKyAnICgnICsgb3JnYW5pemF0aW9uLmlkICsgJyknKSA6ICcnO1xuICAgIGlmIChvcmdhbml6YXRpb24pIHtcbiAgICAgIHRoaXMuZ3JvdXAucGF0Y2hWYWx1ZShkYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaE9yZ2FuaXphdGlvbnModG9rZW46IGFueSk6IE9ic2VydmFibGU8T0VQQU9yZ2FuaXphdGlvbltdPiB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgY29uc3QgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgbmFtZTogaXNOYU4odG9rZW4pID8gdG9rZW4gOiB1bmRlZmluZWQsXG4gICAgICBpZDogaXNOYU4odG9rZW4pID8gdW5kZWZpbmVkIDogdG9rZW5cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hPcmdhbml6YXRpb25zKGZpbHRlcikucGlwZShcbiAgICAgIG1hcCgob3JnYW5pemF0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb3JnYW5pemF0aW9ucztcbiAgICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1NlYXJjaCBmYWlsZWQ6ICcgKyBlcnI7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZHZhbmNlZFNlYXJjaCgpIHtcbiAgICBsZXQgbW9kYWwgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KE9yZ2FuaXphdGlvblNlYXJjaE1vZGFsQ29tcG9uZW50LCB7Y2xhc3M6ICdtb2RhbC14bCcsaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZX0pO1xuICAgICg8T3JnYW5pemF0aW9uU2VhcmNoTW9kYWxDb21wb25lbnQ+bW9kYWwuY29udGVudCkub25Pcmdhbml6YXRpb25TZWxlY3RlZC5zdWJzY3JpYmUob3JnYW5pemF0aW9uID0+IHtcbiAgICAgIHRoaXMubG9hZE9yZ2FuaXphdGlvbkluRm9ybShvcmdhbml6YXRpb24pO1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KG9yZ2FuaXphdGlvbik7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydyb3cgdGV4dC1yaWdodCc6IHJvd0xheW91dH1cIj5cbiAgICA8bmctdGVtcGxhdGUgI29yZ2FuaXphdGlvblRlbXBsYXRlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8aDU+e3sgKG1vZGVsLm5hbWUgfHwgJycpICtcbiAgICAgICAgICAgIChtb2RlbC5hZGRyZXNzTGlzdCAmJiBtb2RlbC5hZGRyZXNzTGlzdFswXSA/ICgnIC0gJyArIG1vZGVsLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3MuYWRkcmVzc0xpbmUxICsgJywgJyArIG1vZGVsLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3MuY2l0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbW9kZWwuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcy5zdGF0ZSkgOiAnJykgKyAnICgnICsgbW9kZWwuaWQgKyAnKScgfX08L2g1PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnY29sLXNtLTQgY29sLWZvcm0tbGFiZWwnOiByb3dMYXlvdXR9XCIgW2F0dHIuZm9yXT1cImNvbXBvbmVudElkICsgJ19Pcmdhbml6YXRpb25TZWFyY2gnXCIgaWQ9XCJvcmdhbml6YXRpb25TZWFyY2hMYWJlbFwiPlxuICAgICAgICB7e3RpdGxlfX1cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWFyY2hpbmdcIj48c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWxhYmVsPVwiU2VhcmNoaW5nXCI+PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCIgKGNsaWNrKT1cImFkdmFuY2VkU2VhcmNoKClcIiBhcmlhLWxhYmVsPVwiQWR2YW5jZWQgU2VhcmNoXCI+QWR2YW5jZWQgU2VhcmNoPC9idXR0b24+XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnY29sLXNtLTgnOiByb3dMYXlvdXR9XCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJzZWFyY2hcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOmdyb3VwLmNvbnRyb2xzW2ZpZWxkXT8uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIiBbdHlwZWFoZWFkXT1cIm5hbWVTb3VyY2VcIiBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICh0eXBlYWhlYWRPblNlbGVjdCk9XCJvbk9yZ2FuaXphdGlvblNlbGVjdCgkZXZlbnQpXCIgW2lkXT1cImNvbXBvbmVudElkICsgJ19Pcmdhbml6YXRpb25TZWFyY2gnXCJcbiAgICAgICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwib3JnYW5pemF0aW9uVGVtcGxhdGVcIiBbdHlwZWFoZWFkTWluTGVuZ3RoXT1cIjNcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBPcmdhbml6YXRpb25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidvcmdhbml6YXRpb25TZWFyY2hMYWJlbCdcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvbXBvbmVudElkICsgJ19Pcmdhbml6YXRpb25TZWFyY2hFcnJvcidcIj5cbiAgICAgICAgPHNtYWxsIGlkPVwie3tjb21wb25lbnRJZCArICdfT3JnYW5pemF0aW9uU2VhcmNoRXJyb3InfX1cIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIHt7dGl0bGV9fSBpcyByZXF1aXJlZCB7e2Vycm9yTWVzc2FnZUFkZGVuZHVtfX1cbiAgICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+XG4gICAge3tlcnJvck1lc3NhZ2V9fVxuPC9kaXY+Il19
|
package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import * as i2 from "ngx-bootstrap/modal";
|
|
|
8
8
|
import * as i3 from "../../oepa-forms.service";
|
|
9
9
|
import * as i4 from "../entity.service";
|
|
10
10
|
import * as i5 from "@angular/common";
|
|
11
|
-
import * as i6 from "
|
|
11
|
+
import * as i6 from "@angular/material/expansion";
|
|
12
12
|
import * as i7 from "ngx-mask";
|
|
13
13
|
import * as i8 from "../../address/address.component";
|
|
14
14
|
import * as i9 from "../../table/table.component";
|
|
@@ -293,12 +293,12 @@ export class OrganizationSearchModalComponent {
|
|
|
293
293
|
return this.modalFormGroup.controls[name];
|
|
294
294
|
}
|
|
295
295
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationSearchModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.BsModalRef }, { token: i2.BsModalService }, { token: i3.OepaFormsService }, { token: i4.EntityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
296
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OrganizationSearchModalComponent, selector: "oepa-organization-search-modal", outputs: { onOrganizationSelected: "onOrganizationSelected" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Organization Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"organizationSearchCriteria\" name=\"organizationSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Organization Search Criteria</b>\n </div>\n </div>\n </div>\n <div *ngIf=\"initializing\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span>\n Initializing...\n </div>\n <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\"> \n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\"> \n <label>Program</label>\n <select id=\"programSelect\" formControlName=\"programID\" class=\"form-select\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization Type</label>\n <select id=\"subTypeSelect\" formControlName=\"subType\" class=\"form-select\">\n <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"organizationIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization Name</label>\n <input type=\"search\" class=\"form-control\" id=\"organizationNameInput\" formControlName=\"name\" maxlength=\"40\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Organization List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationBtn\"\n [disabled]=\"!selectedOrganization || inProgressMsg\"\n (click)=\"save()\">Save</button>\n\t\t\t<button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"CreateOrganizationButton\"\n (click)=\"createNewOrganization()\">Create New Organization</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "component", type: i6.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i6.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: i7.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: i8.AddressComponent, selector: "oepa-address", inputs: ["group", "showValidation", "addressOneLabel", "addressTwoLabel", "cityLabel", "stateLabel", "zipCodeLabel", "disableState", "isSearch", "hideLine2", "line1MaxLength", "line2MaxLength", "cityMaxLength", "foreignStateLabel", "foreignZipLabel", "countryLabel", "sameAsGroup", "sameAsLabel", "sameAsChecked"] }, { kind: "component", type: i9.TableComponent, selector: "oepa-table", inputs: ["tableId", "config", "complexHeader", "header", "customBtnLabel", "customBtnVisible", "customBtnEnabled", "data", "totalRow"], outputs: ["cellClicked", "actionClicked", "rowSelected", "customBtnClicked"] }] });
|
|
296
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OrganizationSearchModalComponent, selector: "oepa-organization-search-modal", outputs: { onOrganizationSelected: "onOrganizationSelected" }, ngImport: i0, template: "<div class=\"modal-header\" role=\"banner\">\n <h1 class=\"modal-title pull-left\" id=\"organizationSearchModalTitle\">Advanced Organization Search</h1>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close dialog\" (click)=\"bsModalRef.hide()\" tabindex=\"0\">\n <!-- Icon visually hidden for screen readers -->\n </button>\n</div>\n<div class=\"modal-body\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"organizationSearchModalTitle\">\n <mat-accordion class=\"accordion\" multi>\n <mat-expansion-panel class=\"accordion-item\">\n <mat-expansion-panel-header>\n <div id=\"organizationSearchCriteria\">\n <mat-panel-title>\n Organization Search Criteria\n </mat-panel-title>\n </div>\n </mat-expansion-panel-header>\n <div *ngIf=\"initializing\" aria-live=\"polite\" aria-atomic=\"true\">\n <span class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading\"></span>\n <span class=\"visually-hidden\">Initializing...</span>\n </div>\n <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\" aria-describedby=\"organizationSearchCriteria\" (keydown.enter)=\"$event.preventDefault()\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\"> \n <label for=\"programSelect\">Program</label>\n <select id=\"programSelect\" formControlName=\"programID\" class=\"form-select\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"subTypeSelect\">Organization Type</label>\n <select id=\"subTypeSelect\" formControlName=\"subType\" class=\"form-select\">\n <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"organizationIDInput\">Organization ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"organizationIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"organizationNameInput\">Organization Name</label>\n <input type=\"search\" class=\"form-control\" id=\"organizationNameInput\" formControlName=\"name\" maxlength=\"40\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"secondaryIDInput\">Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"addressTypeSelect\">Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\" aria-label=\"Address search fields\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label for=\"phoneNumberTypeSelect\">Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label for=\"areaCodeInput\">Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label for=\"phoneNumberInput\">Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label for=\"extensionInput\">Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\" aria-live=\"polite\" aria-atomic=\"true\"><span class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Searching\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\" aria-label=\"Search\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\" aria-label=\"Reset search form\">Reset</button>\n </div>\n </div>\n </form>\n </mat-expansion-panel>\n </mat-accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\" aria-live=\"polite\" aria-atomic=\"true\">\n <div class=\"card-header\" id=\"organizationListHeader\">\n <b>Organization List </b><span class=\"badge bg-secondary\" aria-label=\"Number of organizations\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\" aria-labelledby=\"organizationListHeader\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\" role=\"contentinfo\">\n <div *ngIf=\"errorMessage\" aria-live=\"assertive\" aria-atomic=\"true\">\n <div class=\"alert alert-danger\" role=\"alert\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\" aria-live=\"polite\" aria-atomic=\"true\">\n <div class=\"alert alert-info\" role=\"status\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationBtn\"\n [disabled]=\"!selectedOrganization || inProgressMsg\"\n (click)=\"save()\" aria-label=\"Save organization\">Save</button>\n\t\t\t<button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"CreateOrganizationButton\"\n (click)=\"createNewOrganization()\" aria-label=\"Create new organization\">Create New Organization</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\" aria-label=\"Cancel and close dialog\">Cancel</button>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "directive", type: i6.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i6.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: i8.AddressComponent, selector: "oepa-address", inputs: ["group", "showValidation", "addressOneLabel", "addressTwoLabel", "cityLabel", "stateLabel", "zipCodeLabel", "disableState", "isSearch", "hideLine2", "line1MaxLength", "line2MaxLength", "cityMaxLength", "foreignStateLabel", "foreignZipLabel", "countryLabel", "sameAsGroup", "sameAsLabel", "sameAsChecked"] }, { kind: "component", type: i9.TableComponent, selector: "oepa-table", inputs: ["tableId", "config", "complexHeader", "header", "customBtnLabel", "customBtnVisible", "customBtnEnabled", "data", "totalRow"], outputs: ["cellClicked", "actionClicked", "rowSelected", "customBtnClicked"] }] });
|
|
297
297
|
}
|
|
298
298
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationSearchModalComponent, decorators: [{
|
|
299
299
|
type: Component,
|
|
300
|
-
args: [{ selector: 'oepa-organization-search-modal', template: "<div class=\"modal-header\">\n <
|
|
300
|
+
args: [{ selector: 'oepa-organization-search-modal', template: "<div class=\"modal-header\" role=\"banner\">\n <h1 class=\"modal-title pull-left\" id=\"organizationSearchModalTitle\">Advanced Organization Search</h1>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close dialog\" (click)=\"bsModalRef.hide()\" tabindex=\"0\">\n <!-- Icon visually hidden for screen readers -->\n </button>\n</div>\n<div class=\"modal-body\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"organizationSearchModalTitle\">\n <mat-accordion class=\"accordion\" multi>\n <mat-expansion-panel class=\"accordion-item\">\n <mat-expansion-panel-header>\n <div id=\"organizationSearchCriteria\">\n <mat-panel-title>\n Organization Search Criteria\n </mat-panel-title>\n </div>\n </mat-expansion-panel-header>\n <div *ngIf=\"initializing\" aria-live=\"polite\" aria-atomic=\"true\">\n <span class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Loading\"></span>\n <span class=\"visually-hidden\">Initializing...</span>\n </div>\n <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\" aria-describedby=\"organizationSearchCriteria\" (keydown.enter)=\"$event.preventDefault()\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\"> \n <label for=\"programSelect\">Program</label>\n <select id=\"programSelect\" formControlName=\"programID\" class=\"form-select\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"subTypeSelect\">Organization Type</label>\n <select id=\"subTypeSelect\" formControlName=\"subType\" class=\"form-select\">\n <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"organizationIDInput\">Organization ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"organizationIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"organizationNameInput\">Organization Name</label>\n <input type=\"search\" class=\"form-control\" id=\"organizationNameInput\" formControlName=\"name\" maxlength=\"40\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label for=\"secondaryIDInput\">Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"addressTypeSelect\">Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\" aria-label=\"Address search fields\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label for=\"phoneNumberTypeSelect\">Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label for=\"areaCodeInput\">Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label for=\"phoneNumberInput\">Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label for=\"extensionInput\">Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\" aria-live=\"polite\" aria-atomic=\"true\"><span class=\"spinner-border text-primary\" role=\"status\" aria-label=\"Searching\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\" aria-label=\"Search\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\" aria-label=\"Reset search form\">Reset</button>\n </div>\n </div>\n </form>\n </mat-expansion-panel>\n </mat-accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\" aria-live=\"polite\" aria-atomic=\"true\">\n <div class=\"card-header\" id=\"organizationListHeader\">\n <b>Organization List </b><span class=\"badge bg-secondary\" aria-label=\"Number of organizations\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\" aria-labelledby=\"organizationListHeader\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\" role=\"contentinfo\">\n <div *ngIf=\"errorMessage\" aria-live=\"assertive\" aria-atomic=\"true\">\n <div class=\"alert alert-danger\" role=\"alert\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\" aria-live=\"polite\" aria-atomic=\"true\">\n <div class=\"alert alert-info\" role=\"status\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationBtn\"\n [disabled]=\"!selectedOrganization || inProgressMsg\"\n (click)=\"save()\" aria-label=\"Save organization\">Save</button>\n\t\t\t<button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"CreateOrganizationButton\"\n (click)=\"createNewOrganization()\" aria-label=\"Create new organization\">Create New Organization</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\" aria-label=\"Cancel and close dialog\">Cancel</button>\n </div>\n </div>\n</div>" }]
|
|
301
301
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.BsModalRef }, { type: i2.BsModalService }, { type: i3.OepaFormsService }, { type: i4.EntityService }], propDecorators: { onOrganizationSelected: [{
|
|
302
302
|
type: Output
|
|
303
303
|
}] } });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2VudGl0eS9vcmdhbml6YXRpb24tc2VhcmNoLW1vZGFsL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC9vcmdhbml6YXRpb24tc2VhcmNoLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF4RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVVqRCxNQUFNLE9BQU8sZ0NBQWdDO0lBdUJ2QjtJQUNYO0lBQ0M7SUFDQTtJQUNBO0lBMUJILGNBQWMsQ0FBYTtJQUMzQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUEwQjtJQUNoQyxvQkFBb0IsQ0FBK0I7SUFDbkQsaUJBQWlCLEdBQW9CLEVBQUUsQ0FBQztJQUN4QyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUM3QixZQUFZLEdBQW9CLEVBQUUsQ0FBQztJQUNuQyxnQkFBZ0IsR0FBb0IsRUFBRSxDQUFDO0lBQ3ZD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QzFELElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUNoRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUs7WUFDNUQsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFBLENBQUMsQ0FBQSxJQUFJO1lBQ3pJLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUs7WUFDMU0sWUFBWSxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUss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QUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssS0FBSyxFQUFDLENBQUM7WUFDdEUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDdEosS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDeEosQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNwSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNoSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuTSxDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxlQUFlLElBQUksWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLDhCQUE4QixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3RPLE9BQU87WUFDTCxLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxZQUFZO1lBQ3hCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDbEQsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVELHlCQUF5QjtJQUMzQixDQUFDO0lBQ00scUJBQXFCO1FBQzFCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLEtBQUssQ0FBQyxPQUFRLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBOEIsRUFBRSxFQUFFO1lBQ25ILEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBYyxDQUFDO0lBQ3pELENBQUM7d0dBNVNVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHFJQ3BCN0MsMnRQQStJTTs7NEZEM0hPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7aU1BeUJsQyxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgT0VQQU9yZ2FuaXphdGlvbiwgT0VQQVByb2dyYW0gfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPRVBBUmVmZXJlbmNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNyZWF0ZU1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9vcmdhbml6YXRpb24tY3JlYXRlLW1vZGFsL29yZ2FuaXphdGlvbi1jcmVhdGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2VwYVRhYmxlUm93IH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1yb3cnO1xuaW1wb3J0IHsgT2VwYVRhYmxlSGVhZGVyIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgT2VwYUZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uL29lcGEtZm9ybXMuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLW9yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIG1vZGFsRm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGluUHJvZ3Jlc3NNc2c6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZmlsdGVyITogT0VQQU9yZ2FuaXphdGlvbkZpbHRlcjtcbiAgcHVibGljIHNlbGVjdGVkT3JnYW5pemF0aW9uOiBPRVBBT3JnYW5pemF0aW9uIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgb3JnYW5pemF0aW9uVHlwZXM6IE9FUEFSZWZlcmVuY2VbXSA9IFtdO1xuICBwdWJsaWMgb3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgcHVibGljIGFsbG93Q3JlYXRlTmV3ID0gZmFsc2U7XG4gIHB1YmxpYyBwcm9ncmFtczogT0VQQVByb2dyYW1bXSA9IFtdO1xuICBwdWJsaWMgYWRkcmVzc1R5cGVzOiBPRVBBUmVmZXJlbmNlW10gPSBbXTtcbiAgcHVibGljIHBob25lTnVtYmVyVHlwZXM6IE9FUEFSZWZlcmVuY2VbXSA9IFtdO1xuICBwdWJsaWMgaW5pdGlhbGl6aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIHRhYmxlRGF0YTogQXJyYXk8T2VwYVRhYmxlUm93PiA9IFtdID0gW107XG4gIHB1YmxpYyB0YWJsZUhlYWRlciE6IE9lcGFUYWJsZUhlYWRlcjtcbiAgcHVibGljIHRhYmxlQ29uZmlnOiBPZXBhVGFibGVDb25maWcgPSB7XG4gICAgcm93c1BlclBhZ2U6IDUsXG4gICAgY2xhc3NOYW1lczogWyd0YWJsZS1zdHJpcGVkJywgJ3RhYmxlLWJvcmRlcmVkJywgJ3RhYmxlLXNtJ11cbiAgfTtcblxuQE91dHB1dCgpIG9uT3JnYW5pemF0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxPRVBBT3JnYW5pemF0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8T0VQQU9yZ2FuaXphdGlvbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgXG4gICAgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IE9lcGFGb3Jtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlOiBFbnRpdHlTZXJ2aWNlKSB7IFxuXG4gICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRSZWZlcmVuY2VEYXRhKCkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVmZXJlbmNlRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCB0YXNrcyA9IFtdO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZU9yZ2FuaXphdGlvblR5cGVzKCkpO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZVByb2dyYW1zKCkpO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZUFkZHJlc3NUeXBlcygpKTtcbiAgICB0YXNrcy5wdXNoKHRoaXMucmV0cmlldmVQaG9uZU51bWJlclR5cGVzKCkpO1xuICAgIHJldHVybiBmb3JrSm9pbih0YXNrcyk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlUHJvZ3JhbXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlTZXJ2aWNlLnJldHJpZXZlUHJvZ3JhbXMoKS5waXBlKFxuICAgICAgbWFwKHByb2dyYW1zID0+IHtcbiAgICAgIHRoaXMucHJvZ3JhbXMgPSBbXTtcbiAgICAgIGlmIChwcm9ncmFtcyAmJiBwcm9ncmFtcy5sZW5ndGgpIHtcbiAgICAgICAgcHJvZ3JhbXMuZm9yRWFjaChwcm9ncmFtID0+IHtcbiAgICAgICAgICB0aGlzLnByb2dyYW1zLnB1c2gocHJvZ3JhbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbXMubGVuZ3RoO1xuICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlT3JnYW5pemF0aW9uVHlwZXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlTZXJ2aWNlLnJldHJpZXZlT3JnYW5pemF0aW9uVHlwZXMoKS5waXBlKG1hcChzdWJUeXBlcyA9PiB7XG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblR5cGVzID0gc3ViVHlwZXM7XG4gICAgICByZXR1cm4gdGhpcy5vcmdhbml6YXRpb25UeXBlcyA/IHRoaXMub3JnYW5pemF0aW9uVHlwZXMubGVuZ3RoIDogMDtcbiAgICB9KSwgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6ICcgKyBlcnI7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRyaWV2ZUFkZHJlc3NUeXBlcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eVNlcnZpY2UucmV0cmlldmVBZGRyZXNzVHlwZXMoKS5waXBlKFxuICAgICAgbWFwKHR5cGVzID0+IHtcbiAgICAgIHRoaXMuYWRkcmVzc1R5cGVzID0gW107XG4gICAgICBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoKSB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzVHlwZXMucHVzaCh0eXBlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5hZGRyZXNzVHlwZXMubGVuZ3RoO1xuICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlUGhvbmVOdW1iZXJUeXBlcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eVNlcnZpY2UucmV0cmlldmVUZWxlcGhvbmVUeXBlcygpLnBpcGUoXG4gICAgICBtYXAodHlwZXMgPT4ge1xuICAgICAgdGhpcy5waG9uZU51bWJlclR5cGVzID0gW107XG4gICAgICBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoKSB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgdGhpcy5waG9uZU51bWJlclR5cGVzLnB1c2godHlwZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGhvbmVOdW1iZXJUeXBlcy5sZW5ndGg7XG4gICAgfSksIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0FuIGluaXRpYWxpemF0aW9uIGVycm9yIG9jY3VycmVkOiAnICsgZXJyO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH0pKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMubW9kYWxGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiAnJyxcbiAgICAgIHNlY29uZGFyeUlEOiAnJyxcbiAgICAgIHN1YlR5cGU6IG51bGwsXG4gICAgICBwcm9ncmFtSUQ6ICcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhZGRyZXNzVHlwZTogJycsIFxuICAgICAgYWRkcmVzczogdGhpcy5mYi5ncm91cCh0aGlzLmZvcm1TZXJ2aWNlLmJ1aWxkQWRkcmVzc0Zvcm1XaXRoQ291bnRyeSh7fSkpLFxuICAgICAgcGhvbmVOdW1iZXJUeXBlOiAnJyxcbiAgICAgIGFyZWFDb2RlOiAnJyxcbiAgICAgIHBob25lTnVtYmVyOiAnJyxcbiAgICAgIGV4dGVuc2lvbjogJydcbiAgICB9KTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdzdGF0ZScpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tRm9ybSgpOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIHtcbiAgICBsZXQgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgaWQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdpZCcpPy52YWx1ZSxcbiAgICAgIHByb2dyYW1JRDogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Byb2dyYW1JRCcpPy52YWx1ZSxcbiAgICAgIG9yZ2FuaXphdGlvblR5cGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdzdWJUeXBlJyk/LnZhbHVlLFxuICAgICAgc2Vjb25kYXJ5SUQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdzZWNvbmRhcnlJRCcpPy52YWx1ZSxcbiAgICAgIG5hbWU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCduYW1lJyk/LnZhbHVlLFxuICAgICAgYWRkcmVzc1R5cGVDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzc1R5cGUnKT8udmFsdWUsXG4gICAgICBhZGRyZXNzOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2xpbmUxJyk/LnZhbHVlLFxuICAgICAgY2l0eTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjaXR5Jyk/LnZhbHVlLFxuICAgICAgc3RhdGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSA9PT0gJ1VTQScgPyB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ3N0YXRlJyk/LnZhbHVlOm51bGwsXG4gICAgICB6aXBDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09ICdVU0EnID8gdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdwb3N0YWxDb2RlJyk/LnZhbHVlIDogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdmb3JlaWduWmlwJyk/LnZhbHVlLFxuICAgICAgZm9yZWlnblN0YXRlOnRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSAhPT0gJ1VTQScgPyB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2ZvcmVpZ25TdGF0ZScpPy52YWx1ZTpudWxsLFxuICAgICAgY291bnRyeTogdGhpcy5mb3JtU2VydmljZS5nZXRDb3VudHJ5Q29kZSh0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUpLFxuICAgICAgcGhvbmVUeXBlQ29kZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Bob25lTnVtYmVyVHlwZScpPy52YWx1ZSxcbiAgICAgIHBob25lQXJlYUNvZGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhcmVhQ29kZScpPy52YWx1ZSxcbiAgICAgIHBob25lTnVtYmVyOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgncGhvbmVOdW1iZXInKT8udmFsdWUsXG4gICAgICBwaG9uZUV4dGVuc2lvbjogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2V4dGVuc2lvbicpPy52YWx1ZSxcbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBcblxuICBwcml2YXRlIGZpbHRlcklzRW1wdHkoZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgbGV0IGVtcHR5ID0gdHJ1ZTtcbiAgICBpZiAoZmlsdGVyLmlkICYmIGZpbHRlci5pZC5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLm9yZ2FuaXphdGlvblR5cGUpIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIucHJvZ3JhbUlEKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLnNlY29uZGFyeUlEICYmIGZpbHRlci5zZWNvbmRhcnlJRC5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLm5hbWUgJiYgZmlsdGVyLm5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5hZGRyZXNzVHlwZUNvZGUpIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuYWRkcmVzcyAmJiBmaWx0ZXIuYWRkcmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLmNpdHkgJiYgZmlsdGVyLmNpdHkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci56aXBDb2RlICYmIGZpbHRlci56aXBDb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIGlmICggZmlsdGVyLmNvdW50cnkgJiYgZmlsdGVyLmNvdW50cnkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGZpbHRlci5waG9uZVR5cGVDb2RlKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLnBob25lQXJlYUNvZGUgJiYgZmlsdGVyLnBob25lQXJlYUNvZGUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZU51bWJlciAmJiBmaWx0ZXIucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZUV4dGVuc2lvbiAmJiBmaWx0ZXIucGhvbmVFeHRlbnNpb24ubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFNlYXJjaCgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21Gb3JtKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdQbGVhc2Ugc3BlY2lmeSBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluUHJvZ3Jlc3NNc2cgPSAnU2VhcmNoaW5nLi4uJztcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICAgIHRoaXMuYnVpbGRUYWJsZUhlYWRlcigpO1xuICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hPcmdhbml6YXRpb25zKGZpbHRlcikuc3Vic2NyaWJlKG9yZ2FuaXphdGlvbnMgPT4ge1xuICAgICAgdGhpcy5pblByb2dyZXNzTXNnID0gJyc7XG4gICAgICBpZiAob3JnYW5pemF0aW9ucyAmJiBvcmdhbml6YXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5vcGVuU2VhcmNoQ3JpdGVyaWEgPSBmYWxzZTtcbiAgICAgICAgb3JnYW5pemF0aW9ucy5mb3JFYWNoKG9yZ2FuaXphdGlvbiA9PiB7XG4gICAgICAgICAgbGV0IHJvdyA9IHRoaXMuY29udmVydE9yZ2FuaXphdGlvblRvVGFibGVSb3cob3JnYW5pemF0aW9uKTtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKHJvdyk7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YS5zbGljZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnTm8gb3JnYW5pemF0aW9ucyBmb3VuZCBtYXRjaGluZyBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGxvd0NyZWF0ZU5ldyA9IHRydWU7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMuaW5Qcm9ncmVzc01zZyA9ICcnO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnU2VhcmNoIEZhaWxlZDogJyArIGVycjtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGJ1aWxkVGFibGVIZWFkZXIoKXtcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0ge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgdGl0bGU6ICcnLCBpZDogJ3NlbGVjdCcsIHNvcnQ6ICdub25lJywgc2luZ2xlU2VsZWN0Q29sdW1uOiB0cnVlLCBjbGFzc05hbWU6ICdzZWxlY3QtY29sJyB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdJRCcsIGlkOiAnaWQnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnVHlwZScsIGlkOiAndHlwZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdOYW1lJywgaWQ6ICduYW1lJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyB0aXRsZTogJ0FkZHJlc3MnLCBpZDogJ2FkZHJlc3MnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnQ2l0eScsIGlkOiAnY2l0eScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIFxuICAgICAgXVxuICB9O1xuICBcbiAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1N0YXRlJywgaWQ6ICdzdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdaaXAgQ29kZScsIGlkOiAnemlwQ29kZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduU3RhdGUnLCBpZDogJ2ZvcmVpZ25TdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduWmlwJywgaWQ6ICdmb3JlaWduWmlwJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0pXG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ2NvdW50cnknLCBpZDogJ2NvdW50cnknLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG4gIH1cbiAgXG4gIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdQaG9uZScsIGlkOiAncGhvbmUnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG5cbiAgfVxuICBwcml2YXRlIGNvbnZlcnRPcmdhbml6YXRpb25Ub1RhYmxlUm93KG9yZ2FuaXphdGlvbjogT0VQQU9yZ2FuaXphdGlvbik6IE9lcGFUYWJsZVJvdyB7XG4gICAgXG4gICAgICBsZXQgY2VsbHM6QXJyYXk8YW55Pj1bXG4gICAgICAgIHsgaWQ6ICdpZCcsIHZhbHVlOiBvcmdhbml6YXRpb24uaWQgfSxcbiAgICAgICAgeyBpZDogJ3R5cGUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvblR5cGUgPyBvcmdhbml6YXRpb24ub3JnYW5pemF0aW9uVHlwZS5uYW1lIDogJycgfSxcbiAgICAgICAgeyBpZDogJ25hbWUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLm5hbWUgfSxcbiAgICAgICAgeyBpZDogJ2FkZHJlc3MnLCB2YWx1ZTogb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0ICYmIG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmFkZHJlc3NMaW5lMSAgOiAnJyB9LFxuICAgICAgICB7IGlkOiAnY2l0eScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uY2l0eSAgOiAnJyB9XTtcbiAgICAgICAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnc3RhdGUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0ICYmIG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnN0YXRlICA6ICcnIH0pXG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnemlwQ29kZScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uemlwICA6ICcnIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblN0YXRlJywgdmFsdWU6IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdCAmJiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduU3RhdGUgIDogJycgfSlcbiAgICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdmb3JlaWduWmlwJywgdmFsdWU6IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdCAmJiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduWmlwICA6ICcnIH0pXG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnY291bnRyeScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlOYW1lKG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5jb3VudHJ5IHx8ICcnKSAgOiAnJyB9KVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdwaG9uZScsIHZhbHVlOiBvcmdhbml6YXRpb24ucGhvbmVOdW1iZXJMaXN0ICYmIG9yZ2FuaXphdGlvbi5waG9uZU51bWJlckxpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5waG9uZU51bWJlckxpc3RbMF0ucGhvbmVOdW1iZXI/LnBob25lTnVtYmVyPy5yZXBsYWNlKC9eKFxcZHswLDN9KShcXGR7MCwzfSkoXFxkezAsNH0pLywgJygkMSkgJDItJDMnKSA6ICcnIH0pXG4gICAgcmV0dXJuIHtcbiAgICAgIGNlbGxzOiBjZWxscyxcbiAgICAgIGRhdGFTb3VyY2U6IG9yZ2FuaXphdGlvbixcbiAgICAgIHNlbGVjdGFibGU6IHRydWVcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5vcGVuU2VhcmNoQ3JpdGVyaWEgPSB0cnVlO1xuICAgIHRoaXMubW9kYWxGb3JtR3JvdXAucmVzZXQoKTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdjb3VudHJ5Jyk/LnNldFZhbHVlKCdVU0EnKTtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICB9XG5cbiAgcHVibGljIG9uUm93U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3JnYW5pemF0aW9uID0gZXZlbnRbMF0uZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCkge1xuICAgIHRoaXMub25Pcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRPcmdhbml6YXRpb24pO1xuICAgIC8vdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuICBwdWJsaWMgY3JlYXRlTmV3T3JnYW5pemF0aW9uKCkge1xuICAgIGxldCBtb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coT3JnYW5pemF0aW9uQ3JlYXRlTW9kYWxDb21wb25lbnQsIHsgY2xhc3M6ICdtb2RhbC14bCcsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxPcmdhbml6YXRpb25DcmVhdGVNb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5vbk9yZ2FuaXphdGlvbkNyZWF0ZWQuc3Vic2NyaWJlKChvcmdhbml6YXRpb246IE9FUEFPcmdhbml6YXRpb24pID0+IHtcbiAgICAgIG1vZGFsLmhpZGUoKTtcbiAgICAgIHRoaXMub25Pcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KG9yZ2FuaXphdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9kYWxGb3JtR3JvdXAobmFtZTogc3RyaW5nKSA6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxGb3JtR3JvdXAuY29udHJvbHNbbmFtZV0gYXMgRm9ybUdyb3VwO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+QWR2YW5jZWQgT3JnYW5pemF0aW9uIFNlYXJjaDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgICAgIFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8YWNjb3JkaW9uPlxuICAgICAgICAgICAgPGFjY29yZGlvbi1ncm91cCBwYW5lbENsYXNzPVwicGFuZWwtaW5mb1wiICNzZWFyY2hHcm91cCBbaXNPcGVuXT1cIm9wZW5TZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgYWNjb3JkaW9uLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmxvYXQteHMtcmlnaHQgYmlcIiBpZD1cIm9yZ2FuaXphdGlvblNlYXJjaENyaXRlcmlhXCIgbmFtZT1cIm9yZ2FuaXphdGlvblNlYXJjaENyaXRlcmlhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiaS1jaGV2cm9uLWRvd24nOiBzZWFyY2hHcm91cD8uaXNPcGVuLCAnYmktY2hldnJvbi1yaWdodCc6ICFzZWFyY2hHcm91cD8uaXNPcGVufVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+T3JnYW5pemF0aW9uIFNlYXJjaCBDcml0ZXJpYTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6aW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6aW5nLi4uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGZvcm0gKm5nSWY9XCIhaW5pdGlhbGl6aW5nXCIgW2Zvcm1Hcm91cF09XCJtb2RhbEZvcm1Hcm91cFwiPiAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPiAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+UHJvZ3JhbTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJwcm9ncmFtU2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvZ3JhbUlEXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0IG9mIHByb2dyYW1zXCIgW25nVmFsdWVdPVwidC5pZFwiPnt7dC5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Pcmdhbml6YXRpb24gVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJzdWJUeXBlU2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3ViVHlwZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHQgb2Ygb3JnYW5pemF0aW9uVHlwZXNcIiBbbmdWYWx1ZV09XCJ0XCI+e3t0Lm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk9yZ2FuaXphdGlvbiBJRDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5OTk5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIm9yZ2FuaXphdGlvbklESW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk9yZ2FuaXphdGlvbiBOYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJvcmdhbml6YXRpb25OYW1lSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgbWF4bGVuZ3RoPVwiNDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZWNvbmRhcnkgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNlY29uZGFyeUlESW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRhcnlJRFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+QWRkcmVzcyBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwiYWRkcmVzc1R5cGVTZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzVHlwZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdCBvZiBhZGRyZXNzVHlwZXNcIiBbbmdWYWx1ZV09XCJ0LmNvZGVcIj57e3QubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG9lcGEtYWRkcmVzcyBbZ3JvdXBdPVwiZ2V0TW9kYWxGb3JtR3JvdXAoJ2FkZHJlc3MnKVwiIFtpc1NlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzc09uZUxhYmVsPVwiQWRkcmVzc1wiIFtoaWRlTGluZTJdPVwidHJ1ZVwiPjwvb2VwYS1hZGRyZXNzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QaG9uZSBOdW1iZXIgVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInBob25lTnVtYmVyVHlwZVNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyVHlwZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdCBvZiBwaG9uZU51bWJlclR5cGVzXCIgW25nVmFsdWVdPVwidC5jb2RlXCI+e3t0Lm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkFyZWEgQ29kZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFyZWFDb2RlSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJhcmVhQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBob25lIE51bWJlcjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5LTk5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGhvbmVOdW1iZXJJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RXh0ZW5zaW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImV4dGVuc2lvbklucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZXh0ZW5zaW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluUHJvZ3Jlc3NNc2dcIj48c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj48L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgKm5nSWY9XCIhaW5Qcm9ncmVzc01zZ1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0yXCIgaWQ9XCJzdWJtaXRTZWFyY2hCdG5cIiAoY2xpY2spPVwic3VibWl0U2VhcmNoKClcIj5TZWFyY2g8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJyZXNldFNlYXJjaEJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCI+UmVzZXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2FjY29yZGlvbi1ncm91cD5cbiAgICAgICAgPC9hY2NvcmRpb24+XG4gICAgPGRpdiAqbmdJZj1cInRhYmxlRGF0YSAmJiB0YWJsZURhdGEubGVuZ3RoID4gMFwiIGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxiPk9yZ2FuaXphdGlvbiBMaXN0Jm5ic3A7PC9iPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+e3t0YWJsZURhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8b2VwYS10YWJsZSB0YWJsZUlkPVwib3JnYW5pemF0aW9uU2VhcmNoVGFibGVcIiBbY29uZmlnXT1cInRhYmxlQ29uZmlnXCIgW2RhdGFdPVwidGFibGVEYXRhXCIgW2hlYWRlcl09XCJ0YWJsZUhlYWRlclwiIChyb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L29lcGEtdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIGQtYmxvY2tcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIj5cbiAgICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImluUHJvZ3Jlc3NNc2dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIj5cbiAgICAgICAgICAgIHt7aW5Qcm9ncmVzc01zZ319XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJTYXZlT3JnYW5pemF0aW9uQnRuXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkT3JnYW5pemF0aW9uIHx8IGluUHJvZ3Jlc3NNc2dcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIj5TYXZlPC9idXR0b24+XG5cdFx0XHQ8YnV0dG9uICpuZ0lmPVwiYWxsb3dDcmVhdGVOZXdcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDcmVhdGVPcmdhbml6YXRpb25CdXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVOZXdPcmdhbml6YXRpb24oKVwiPkNyZWF0ZSBOZXcgT3JnYW5pemF0aW9uPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwiQ2FuY2VsUGF5bWVudEJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2VudGl0eS9vcmdhbml6YXRpb24tc2VhcmNoLW1vZGFsL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC9vcmdhbml6YXRpb24tc2VhcmNoLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF4RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVVqRCxNQUFNLE9BQU8sZ0NBQWdDO0lBdUJ2QjtJQUNYO0lBQ0M7SUFDQTtJQUNBO0lBMUJILGNBQWMsQ0FBYTtJQUMzQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUEwQjtJQUNoQyxvQkFBb0IsQ0FBK0I7SUFDbkQsaUJBQWlCLEdBQW9CLEVBQUUsQ0FBQztJQUN4QyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQWtCLEVBQUUsQ0FBQztJQUM3QixZQUFZLEdBQW9CLEVBQUUsQ0FBQztJQUNuQyxnQkFBZ0IsR0FBb0IsRUFBRSxDQUFDO0lBQ3ZD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QzFELElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQzVDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUNoRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUs7WUFDNUQsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFBLENBQUMsQ0FBQSxJQUFJO1lBQ3pJLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUs7WUFDMU0sWUFBWSxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUss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QUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssS0FBSyxFQUFDLENBQUM7WUFDdEUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDdEosS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDeEosQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNwSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNoSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuTSxDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxlQUFlLElBQUksWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLDhCQUE4QixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3RPLE9BQU87WUFDTCxLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRSxZQUFZO1lBQ3hCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDbEQsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVELHlCQUF5QjtJQUMzQixDQUFDO0lBQ00scUJBQXFCO1FBQzFCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLEtBQUssQ0FBQyxPQUFRLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBOEIsRUFBRSxFQUFFO1lBQ25ILEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBYyxDQUFDO0lBQ3pELENBQUM7d0dBNVNVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHFJQ3BCN0MsMHpRQTZJTTs7NEZEekhPLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSxnQ0FBZ0M7aU1BeUJsQyxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgT0VQQU9yZ2FuaXphdGlvbiwgT0VQQVByb2dyYW0gfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBPRVBBUmVmZXJlbmNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNyZWF0ZU1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9vcmdhbml6YXRpb24tY3JlYXRlLW1vZGFsL29yZ2FuaXphdGlvbi1jcmVhdGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2VwYVRhYmxlUm93IH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1yb3cnO1xuaW1wb3J0IHsgT2VwYVRhYmxlSGVhZGVyIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgT2VwYUZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uL29lcGEtZm9ybXMuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLW9yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3JnYW5pemF0aW9uLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZ2FuaXphdGlvbi1zZWFyY2gtbW9kYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIG1vZGFsRm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGluUHJvZ3Jlc3NNc2c6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZmlsdGVyITogT0VQQU9yZ2FuaXphdGlvbkZpbHRlcjtcbiAgcHVibGljIHNlbGVjdGVkT3JnYW5pemF0aW9uOiBPRVBBT3JnYW5pemF0aW9uIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgb3JnYW5pemF0aW9uVHlwZXM6IE9FUEFSZWZlcmVuY2VbXSA9IFtdO1xuICBwdWJsaWMgb3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgcHVibGljIGFsbG93Q3JlYXRlTmV3ID0gZmFsc2U7XG4gIHB1YmxpYyBwcm9ncmFtczogT0VQQVByb2dyYW1bXSA9IFtdO1xuICBwdWJsaWMgYWRkcmVzc1R5cGVzOiBPRVBBUmVmZXJlbmNlW10gPSBbXTtcbiAgcHVibGljIHBob25lTnVtYmVyVHlwZXM6IE9FUEFSZWZlcmVuY2VbXSA9IFtdO1xuICBwdWJsaWMgaW5pdGlhbGl6aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIHRhYmxlRGF0YTogQXJyYXk8T2VwYVRhYmxlUm93PiA9IFtdID0gW107XG4gIHB1YmxpYyB0YWJsZUhlYWRlciE6IE9lcGFUYWJsZUhlYWRlcjtcbiAgcHVibGljIHRhYmxlQ29uZmlnOiBPZXBhVGFibGVDb25maWcgPSB7XG4gICAgcm93c1BlclBhZ2U6IDUsXG4gICAgY2xhc3NOYW1lczogWyd0YWJsZS1zdHJpcGVkJywgJ3RhYmxlLWJvcmRlcmVkJywgJ3RhYmxlLXNtJ11cbiAgfTtcblxuQE91dHB1dCgpIG9uT3JnYW5pemF0aW9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxPRVBBT3JnYW5pemF0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8T0VQQU9yZ2FuaXphdGlvbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgXG4gICAgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IE9lcGFGb3Jtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlOiBFbnRpdHlTZXJ2aWNlKSB7IFxuXG4gICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRSZWZlcmVuY2VEYXRhKCkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVmZXJlbmNlRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCB0YXNrcyA9IFtdO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZU9yZ2FuaXphdGlvblR5cGVzKCkpO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZVByb2dyYW1zKCkpO1xuICAgIHRhc2tzLnB1c2godGhpcy5yZXRyaWV2ZUFkZHJlc3NUeXBlcygpKTtcbiAgICB0YXNrcy5wdXNoKHRoaXMucmV0cmlldmVQaG9uZU51bWJlclR5cGVzKCkpO1xuICAgIHJldHVybiBmb3JrSm9pbih0YXNrcyk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlUHJvZ3JhbXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlTZXJ2aWNlLnJldHJpZXZlUHJvZ3JhbXMoKS5waXBlKFxuICAgICAgbWFwKHByb2dyYW1zID0+IHtcbiAgICAgIHRoaXMucHJvZ3JhbXMgPSBbXTtcbiAgICAgIGlmIChwcm9ncmFtcyAmJiBwcm9ncmFtcy5sZW5ndGgpIHtcbiAgICAgICAgcHJvZ3JhbXMuZm9yRWFjaChwcm9ncmFtID0+IHtcbiAgICAgICAgICB0aGlzLnByb2dyYW1zLnB1c2gocHJvZ3JhbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbXMubGVuZ3RoO1xuICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlT3JnYW5pemF0aW9uVHlwZXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlTZXJ2aWNlLnJldHJpZXZlT3JnYW5pemF0aW9uVHlwZXMoKS5waXBlKG1hcChzdWJUeXBlcyA9PiB7XG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblR5cGVzID0gc3ViVHlwZXM7XG4gICAgICByZXR1cm4gdGhpcy5vcmdhbml6YXRpb25UeXBlcyA/IHRoaXMub3JnYW5pemF0aW9uVHlwZXMubGVuZ3RoIDogMDtcbiAgICB9KSwgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQW4gaW5pdGlhbGl6YXRpb24gZXJyb3Igb2NjdXJyZWQ6ICcgKyBlcnI7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRyaWV2ZUFkZHJlc3NUeXBlcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eVNlcnZpY2UucmV0cmlldmVBZGRyZXNzVHlwZXMoKS5waXBlKFxuICAgICAgbWFwKHR5cGVzID0+IHtcbiAgICAgIHRoaXMuYWRkcmVzc1R5cGVzID0gW107XG4gICAgICBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoKSB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzVHlwZXMucHVzaCh0eXBlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5hZGRyZXNzVHlwZXMubGVuZ3RoO1xuICAgIH0pLCBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdBbiBpbml0aWFsaXphdGlvbiBlcnJvciBvY2N1cnJlZDogJyArIGVycjtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlUGhvbmVOdW1iZXJUeXBlcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eVNlcnZpY2UucmV0cmlldmVUZWxlcGhvbmVUeXBlcygpLnBpcGUoXG4gICAgICBtYXAodHlwZXMgPT4ge1xuICAgICAgdGhpcy5waG9uZU51bWJlclR5cGVzID0gW107XG4gICAgICBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoKSB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgdGhpcy5waG9uZU51bWJlclR5cGVzLnB1c2godHlwZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGhvbmVOdW1iZXJUeXBlcy5sZW5ndGg7XG4gICAgfSksIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0FuIGluaXRpYWxpemF0aW9uIGVycm9yIG9jY3VycmVkOiAnICsgZXJyO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH0pKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMubW9kYWxGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiAnJyxcbiAgICAgIHNlY29uZGFyeUlEOiAnJyxcbiAgICAgIHN1YlR5cGU6IG51bGwsXG4gICAgICBwcm9ncmFtSUQ6ICcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBhZGRyZXNzVHlwZTogJycsIFxuICAgICAgYWRkcmVzczogdGhpcy5mYi5ncm91cCh0aGlzLmZvcm1TZXJ2aWNlLmJ1aWxkQWRkcmVzc0Zvcm1XaXRoQ291bnRyeSh7fSkpLFxuICAgICAgcGhvbmVOdW1iZXJUeXBlOiAnJyxcbiAgICAgIGFyZWFDb2RlOiAnJyxcbiAgICAgIHBob25lTnVtYmVyOiAnJyxcbiAgICAgIGV4dGVuc2lvbjogJydcbiAgICB9KTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdzdGF0ZScpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tRm9ybSgpOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyIHtcbiAgICBsZXQgZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyID0ge1xuICAgICAgaWQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdpZCcpPy52YWx1ZSxcbiAgICAgIHByb2dyYW1JRDogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Byb2dyYW1JRCcpPy52YWx1ZSxcbiAgICAgIG9yZ2FuaXphdGlvblR5cGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdzdWJUeXBlJyk/LnZhbHVlLFxuICAgICAgc2Vjb25kYXJ5SUQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdzZWNvbmRhcnlJRCcpPy52YWx1ZSxcbiAgICAgIG5hbWU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCduYW1lJyk/LnZhbHVlLFxuICAgICAgYWRkcmVzc1R5cGVDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzc1R5cGUnKT8udmFsdWUsXG4gICAgICBhZGRyZXNzOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2xpbmUxJyk/LnZhbHVlLFxuICAgICAgY2l0eTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjaXR5Jyk/LnZhbHVlLFxuICAgICAgc3RhdGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSA9PT0gJ1VTQScgPyB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ3N0YXRlJyk/LnZhbHVlOm51bGwsXG4gICAgICB6aXBDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09ICdVU0EnID8gdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdwb3N0YWxDb2RlJyk/LnZhbHVlIDogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdmb3JlaWduWmlwJyk/LnZhbHVlLFxuICAgICAgZm9yZWlnblN0YXRlOnRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSAhPT0gJ1VTQScgPyB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2ZvcmVpZ25TdGF0ZScpPy52YWx1ZTpudWxsLFxuICAgICAgY291bnRyeTogdGhpcy5mb3JtU2VydmljZS5nZXRDb3VudHJ5Q29kZSh0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUpLFxuICAgICAgcGhvbmVUeXBlQ29kZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Bob25lTnVtYmVyVHlwZScpPy52YWx1ZSxcbiAgICAgIHBob25lQXJlYUNvZGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhcmVhQ29kZScpPy52YWx1ZSxcbiAgICAgIHBob25lTnVtYmVyOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgncGhvbmVOdW1iZXInKT8udmFsdWUsXG4gICAgICBwaG9uZUV4dGVuc2lvbjogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2V4dGVuc2lvbicpPy52YWx1ZSxcbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBcblxuICBwcml2YXRlIGZpbHRlcklzRW1wdHkoZmlsdGVyOiBPRVBBT3JnYW5pemF0aW9uRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgbGV0IGVtcHR5ID0gdHJ1ZTtcbiAgICBpZiAoZmlsdGVyLmlkICYmIGZpbHRlci5pZC5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLm9yZ2FuaXphdGlvblR5cGUpIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIucHJvZ3JhbUlEKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLnNlY29uZGFyeUlEICYmIGZpbHRlci5zZWNvbmRhcnlJRC5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLm5hbWUgJiYgZmlsdGVyLm5hbWUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5hZGRyZXNzVHlwZUNvZGUpIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuYWRkcmVzcyAmJiBmaWx0ZXIuYWRkcmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLmNpdHkgJiYgZmlsdGVyLmNpdHkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci56aXBDb2RlICYmIGZpbHRlci56aXBDb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIGlmICggZmlsdGVyLmNvdW50cnkgJiYgZmlsdGVyLmNvdW50cnkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGZpbHRlci5waG9uZVR5cGVDb2RlKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLnBob25lQXJlYUNvZGUgJiYgZmlsdGVyLnBob25lQXJlYUNvZGUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZU51bWJlciAmJiBmaWx0ZXIucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZUV4dGVuc2lvbiAmJiBmaWx0ZXIucGhvbmVFeHRlbnNpb24ubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFNlYXJjaCgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21Gb3JtKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdQbGVhc2Ugc3BlY2lmeSBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluUHJvZ3Jlc3NNc2cgPSAnU2VhcmNoaW5nLi4uJztcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICAgIHRoaXMuYnVpbGRUYWJsZUhlYWRlcigpO1xuICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hPcmdhbml6YXRpb25zKGZpbHRlcikuc3Vic2NyaWJlKG9yZ2FuaXphdGlvbnMgPT4ge1xuICAgICAgdGhpcy5pblByb2dyZXNzTXNnID0gJyc7XG4gICAgICBpZiAob3JnYW5pemF0aW9ucyAmJiBvcmdhbml6YXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5vcGVuU2VhcmNoQ3JpdGVyaWEgPSBmYWxzZTtcbiAgICAgICAgb3JnYW5pemF0aW9ucy5mb3JFYWNoKG9yZ2FuaXphdGlvbiA9PiB7XG4gICAgICAgICAgbGV0IHJvdyA9IHRoaXMuY29udmVydE9yZ2FuaXphdGlvblRvVGFibGVSb3cob3JnYW5pemF0aW9uKTtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKHJvdyk7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YS5zbGljZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnTm8gb3JnYW5pemF0aW9ucyBmb3VuZCBtYXRjaGluZyBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGxvd0NyZWF0ZU5ldyA9IHRydWU7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMuaW5Qcm9ncmVzc01zZyA9ICcnO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnU2VhcmNoIEZhaWxlZDogJyArIGVycjtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGJ1aWxkVGFibGVIZWFkZXIoKXtcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0ge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgdGl0bGU6ICcnLCBpZDogJ3NlbGVjdCcsIHNvcnQ6ICdub25lJywgc2luZ2xlU2VsZWN0Q29sdW1uOiB0cnVlLCBjbGFzc05hbWU6ICdzZWxlY3QtY29sJyB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdJRCcsIGlkOiAnaWQnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnVHlwZScsIGlkOiAndHlwZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdOYW1lJywgaWQ6ICduYW1lJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyB0aXRsZTogJ0FkZHJlc3MnLCBpZDogJ2FkZHJlc3MnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnQ2l0eScsIGlkOiAnY2l0eScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIFxuICAgICAgXVxuICB9O1xuICBcbiAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1N0YXRlJywgaWQ6ICdzdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdaaXAgQ29kZScsIGlkOiAnemlwQ29kZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduU3RhdGUnLCBpZDogJ2ZvcmVpZ25TdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduWmlwJywgaWQ6ICdmb3JlaWduWmlwJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0pXG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ2NvdW50cnknLCBpZDogJ2NvdW50cnknLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG4gIH1cbiAgXG4gIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdQaG9uZScsIGlkOiAncGhvbmUnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG5cbiAgfVxuICBwcml2YXRlIGNvbnZlcnRPcmdhbml6YXRpb25Ub1RhYmxlUm93KG9yZ2FuaXphdGlvbjogT0VQQU9yZ2FuaXphdGlvbik6IE9lcGFUYWJsZVJvdyB7XG4gICAgXG4gICAgICBsZXQgY2VsbHM6QXJyYXk8YW55Pj1bXG4gICAgICAgIHsgaWQ6ICdpZCcsIHZhbHVlOiBvcmdhbml6YXRpb24uaWQgfSxcbiAgICAgICAgeyBpZDogJ3R5cGUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvblR5cGUgPyBvcmdhbml6YXRpb24ub3JnYW5pemF0aW9uVHlwZS5uYW1lIDogJycgfSxcbiAgICAgICAgeyBpZDogJ25hbWUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLm5hbWUgfSxcbiAgICAgICAgeyBpZDogJ2FkZHJlc3MnLCB2YWx1ZTogb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0ICYmIG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmFkZHJlc3NMaW5lMSAgOiAnJyB9LFxuICAgICAgICB7IGlkOiAnY2l0eScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uY2l0eSAgOiAnJyB9XTtcbiAgICAgICAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnc3RhdGUnLCB2YWx1ZTogb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0ICYmIG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnN0YXRlICA6ICcnIH0pXG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnemlwQ29kZScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uemlwICA6ICcnIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblN0YXRlJywgdmFsdWU6IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdCAmJiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduU3RhdGUgIDogJycgfSlcbiAgICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdmb3JlaWduWmlwJywgdmFsdWU6IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdCAmJiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduWmlwICA6ICcnIH0pXG4gICAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnY291bnRyeScsIHZhbHVlOiBvcmdhbml6YXRpb24uYWRkcmVzc0xpc3QgJiYgb3JnYW5pemF0aW9uLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlOYW1lKG9yZ2FuaXphdGlvbi5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5jb3VudHJ5IHx8ICcnKSAgOiAnJyB9KVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdwaG9uZScsIHZhbHVlOiBvcmdhbml6YXRpb24ucGhvbmVOdW1iZXJMaXN0ICYmIG9yZ2FuaXphdGlvbi5waG9uZU51bWJlckxpc3QubGVuZ3RoID4gMCA/IG9yZ2FuaXphdGlvbi5waG9uZU51bWJlckxpc3RbMF0ucGhvbmVOdW1iZXI/LnBob25lTnVtYmVyPy5yZXBsYWNlKC9eKFxcZHswLDN9KShcXGR7MCwzfSkoXFxkezAsNH0pLywgJygkMSkgJDItJDMnKSA6ICcnIH0pXG4gICAgcmV0dXJuIHtcbiAgICAgIGNlbGxzOiBjZWxscyxcbiAgICAgIGRhdGFTb3VyY2U6IG9yZ2FuaXphdGlvbixcbiAgICAgIHNlbGVjdGFibGU6IHRydWVcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5vcGVuU2VhcmNoQ3JpdGVyaWEgPSB0cnVlO1xuICAgIHRoaXMubW9kYWxGb3JtR3JvdXAucmVzZXQoKTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdjb3VudHJ5Jyk/LnNldFZhbHVlKCdVU0EnKTtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICB9XG5cbiAgcHVibGljIG9uUm93U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3JnYW5pemF0aW9uID0gZXZlbnRbMF0uZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCkge1xuICAgIHRoaXMub25Pcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRPcmdhbml6YXRpb24pO1xuICAgIC8vdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuICBwdWJsaWMgY3JlYXRlTmV3T3JnYW5pemF0aW9uKCkge1xuICAgIGxldCBtb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coT3JnYW5pemF0aW9uQ3JlYXRlTW9kYWxDb21wb25lbnQsIHsgY2xhc3M6ICdtb2RhbC14bCcsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxPcmdhbml6YXRpb25DcmVhdGVNb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5vbk9yZ2FuaXphdGlvbkNyZWF0ZWQuc3Vic2NyaWJlKChvcmdhbml6YXRpb246IE9FUEFPcmdhbml6YXRpb24pID0+IHtcbiAgICAgIG1vZGFsLmhpZGUoKTtcbiAgICAgIHRoaXMub25Pcmdhbml6YXRpb25TZWxlY3RlZC5lbWl0KG9yZ2FuaXphdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9kYWxGb3JtR3JvdXAobmFtZTogc3RyaW5nKSA6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxGb3JtR3JvdXAuY29udHJvbHNbbmFtZV0gYXMgRm9ybUdyb3VwO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCIgcm9sZT1cImJhbm5lclwiPlxuICAgIDxoMSBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiIGlkPVwib3JnYW5pemF0aW9uU2VhcmNoTW9kYWxUaXRsZVwiPkFkdmFuY2VkIE9yZ2FuaXphdGlvbiBTZWFyY2g8L2gxPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiIGFyaWEtbGFiZWw9XCJDbG9zZSBkaWFsb2dcIiAoY2xpY2spPVwiYnNNb2RhbFJlZi5oaWRlKClcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgPCEtLSBJY29uIHZpc3VhbGx5IGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgLS0+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgYXJpYS1sYWJlbGxlZGJ5PVwib3JnYW5pemF0aW9uU2VhcmNoTW9kYWxUaXRsZVwiPlxuICAgIDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiYWNjb3JkaW9uXCIgbXVsdGk+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwib3JnYW5pemF0aW9uU2VhcmNoQ3JpdGVyaWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIE9yZ2FuaXphdGlvbiBTZWFyY2ggQ3JpdGVyaWFcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemluZ1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+SW5pdGlhbGl6aW5nLi4uPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9ybSAqbmdJZj1cIiFpbml0aWFsaXppbmdcIiBbZm9ybUdyb3VwXT1cIm1vZGFsRm9ybUdyb3VwXCIgYXJpYS1kZXNjcmliZWRieT1cIm9yZ2FuaXphdGlvblNlYXJjaENyaXRlcmlhXCIgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+ICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByb2dyYW1TZWxlY3RcIj5Qcm9ncmFtPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwicHJvZ3JhbVNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cInByb2dyYW1JRFwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdCBvZiBwcm9ncmFtc1wiIFtuZ1ZhbHVlXT1cInQuaWRcIj57e3QubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN1YlR5cGVTZWxlY3RcIj5Pcmdhbml6YXRpb24gVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInN1YlR5cGVTZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJzdWJUeXBlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0IG9mIG9yZ2FuaXphdGlvblR5cGVzXCIgW25nVmFsdWVdPVwidFwiPnt7dC5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJvcmdhbml6YXRpb25JRElucHV0XCI+T3JnYW5pemF0aW9uIElEPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgbWFzaz1cIjk5OTk5OTk5OVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJvcmdhbml6YXRpb25JRElucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwib3JnYW5pemF0aW9uTmFtZUlucHV0XCI+T3JnYW5pemF0aW9uIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwib3JnYW5pemF0aW9uTmFtZUlucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIG1heGxlbmd0aD1cIjQwXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlY29uZGFyeUlESW5wdXRcIj5TZWNvbmRhcnkgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic2Vjb25kYXJ5SURJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cInNlY29uZGFyeUlEXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NUeXBlU2VsZWN0XCI+QWRkcmVzcyBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJhZGRyZXNzVHlwZVNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NUeXBlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHQgb2YgYWRkcmVzc1R5cGVzXCIgW25nVmFsdWVdPVwidC5jb2RlXCI+e3t0Lm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8b2VwYS1hZGRyZXNzIFtncm91cF09XCJnZXRNb2RhbEZvcm1Hcm91cCgnYWRkcmVzcycpXCIgW2lzU2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGFkZHJlc3NPbmVMYWJlbD1cIkFkZHJlc3NcIiBbaGlkZUxpbmUyXT1cInRydWVcIiBhcmlhLWxhYmVsPVwiQWRkcmVzcyBzZWFyY2ggZmllbGRzXCI+PC9vZXBhLWFkZHJlc3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGhvbmVOdW1iZXJUeXBlU2VsZWN0XCI+UGhvbmUgTnVtYmVyIFR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInBob25lTnVtYmVyVHlwZVNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyVHlwZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0IG9mIHBob25lTnVtYmVyVHlwZXNcIiBbbmdWYWx1ZV09XCJ0LmNvZGVcIj57e3QubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXJlYUNvZGVJbnB1dFwiPkFyZWEgQ29kZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYXJlYUNvZGVJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImFyZWFDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBob25lTnVtYmVySW5wdXRcIj5QaG9uZSBOdW1iZXI8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5LTk5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGhvbmVOdW1iZXJJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4dGVuc2lvbklucHV0XCI+RXh0ZW5zaW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgbWFzaz1cIjk5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZXh0ZW5zaW9uSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJleHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5Qcm9ncmVzc01zZ1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWw9XCJTZWFyY2hpbmdcIj48L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICAqbmdJZj1cIiFpblByb2dyZXNzTXNnXCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIiBpZD1cInN1Ym1pdFNlYXJjaEJ0blwiIChjbGljayk9XCJzdWJtaXRTZWFyY2goKVwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIj5TZWFyY2g8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInJlc2V0U2VhcmNoQnRuXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInJlc2V0U2VhcmNoKClcIiBhcmlhLWxhYmVsPVwiUmVzZXQgc2VhcmNoIGZvcm1cIj5SZXNldDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgIDwvbWF0LWFjY29yZGlvbj5cbiAgICA8ZGl2ICpuZ0lmPVwidGFibGVEYXRhICYmIHRhYmxlRGF0YS5sZW5ndGggPiAwXCIgY2xhc3M9XCJjYXJkXCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwib3JnYW5pemF0aW9uTGlzdEhlYWRlclwiPlxuICAgICAgICAgICAgPGI+T3JnYW5pemF0aW9uIExpc3QmbmJzcDs8L2I+PHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1zZWNvbmRhcnlcIiBhcmlhLWxhYmVsPVwiTnVtYmVyIG9mIG9yZ2FuaXphdGlvbnNcIj57e3RhYmxlRGF0YS5sZW5ndGh9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxvZXBhLXRhYmxlIHRhYmxlSWQ9XCJvcmdhbml6YXRpb25TZWFyY2hUYWJsZVwiIFtjb25maWddPVwidGFibGVDb25maWdcIiBbZGF0YV09XCJ0YWJsZURhdGFcIiBbaGVhZGVyXT1cInRhYmxlSGVhZGVyXCIgKHJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0KCRldmVudClcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmdhbml6YXRpb25MaXN0SGVhZGVyXCI+XG4gICAgICAgICAgICA8L29lcGEtdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIGQtYmxvY2tcIiByb2xlPVwiY29udGVudGluZm9cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImluUHJvZ3Jlc3NNc2dcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICAgICAgICB7e2luUHJvZ3Jlc3NNc2d9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIlxuICAgICAgICAgICAgICAgIGlkPVwiU2F2ZU9yZ2FuaXphdGlvbkJ0blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZE9yZ2FuaXphdGlvbiB8fCBpblByb2dyZXNzTXNnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCIgYXJpYS1sYWJlbD1cIlNhdmUgb3JnYW5pemF0aW9uXCI+U2F2ZTwvYnV0dG9uPlxuXHRcdFx0PGJ1dHRvbiAqbmdJZj1cImFsbG93Q3JlYXRlTmV3XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIlxuICAgICAgICAgICAgICAgIGlkPVwiQ3JlYXRlT3JnYW5pemF0aW9uQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlTmV3T3JnYW5pemF0aW9uKClcIiBhcmlhLWxhYmVsPVwiQ3JlYXRlIG5ldyBvcmdhbml6YXRpb25cIj5DcmVhdGUgTmV3IE9yZ2FuaXphdGlvbjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cIkNhbmNlbFBheW1lbnRCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJic01vZGFsUmVmLmhpZGUoKVwiIGFyaWEtbGFiZWw9XCJDYW5jZWwgYW5kIGNsb3NlIGRpYWxvZ1wiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|