@ohioepa/oepa-ui-lib 1.4.16 → 2.0.1
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/esm2022/lib/account-search-modal/account-search-modal.component.mjs +3 -3
- 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/comment-modal/comment-modal.component.mjs +3 -3
- package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +3 -3
- package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +3 -3
- package/esm2022/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +3 -3
- package/esm2022/lib/dual-list-box/dual-list-box.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-modal/organization-search-modal.component.mjs +3 -3
- package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +3 -3
- package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +3 -3
- package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +3 -3
- 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 +3 -3
- 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 +3 -3
- package/esm2022/lib/table/p-table/p-table.component.mjs +3 -3
- 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 +3 -3
- 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/fesm2022/ohioepa-oepa-ui-lib.mjs +56 -56
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/ohioepa-oepa-ui-lib-2.0.1.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-1.4.16.tgz +0 -0
|
@@ -205,12 +205,12 @@ export class PlaceSearchModalComponent {
|
|
|
205
205
|
return this.modalFormGroup.controls[name];
|
|
206
206
|
}
|
|
207
207
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceSearchModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.BsModalRef }, { token: i3.OepaFormsService }, { token: i4.EntityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
208
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PlaceSearchModalComponent, selector: "oepa-place-search-modal", outputs: { onPlaceSelected: "onPlaceSelected" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place 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=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\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 <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\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-6\">\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-3\">\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>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [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=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\">Save</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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "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"] }] });
|
|
208
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PlaceSearchModalComponent, selector: "oepa-place-search-modal", outputs: { onPlaceSelected: "onPlaceSelected" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place 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=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"placeIDInput\">Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"placeNameInput\">Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\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 <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\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-6\">\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-3\">\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\"><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()\" aria-label=\"Search\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\" aria-label=\"Reset\">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>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [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=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\" aria-label=\"Save\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\" aria-label=\"Cancel\">Cancel</button>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "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"] }] });
|
|
209
209
|
}
|
|
210
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceSearchModalComponent, decorators: [{
|
|
211
211
|
type: Component,
|
|
212
|
-
args: [{ selector: 'oepa-place-search-modal', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place 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=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\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 <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\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-6\">\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-3\">\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>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [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=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>" }]
|
|
212
|
+
args: [{ selector: 'oepa-place-search-modal', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place 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=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"placeIDInput\">Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label for=\"placeNameInput\">Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\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 <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\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-6\">\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-3\">\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\"><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()\" aria-label=\"Search\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\" aria-label=\"Reset\">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>Place List </b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [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=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\" aria-label=\"Save\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\" aria-label=\"Cancel\">Cancel</button>\n </div>\n </div>\n</div>" }]
|
|
213
213
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.BsModalRef }, { type: i3.OepaFormsService }, { type: i4.EntityService }], propDecorators: { onPlaceSelected: [{
|
|
214
214
|
type: Output
|
|
215
215
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utc2VhcmNoLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZW50aXR5L3BsYWNlLXNlYXJjaC1tb2RhbC9wbGFjZS1zZWFyY2gtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvcGxhY2Utc2VhcmNoLW1vZGFsL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZ0J4RSxNQUFNLE9BQU8seUJBQXlCO0lBaUJoQjtJQUF3QjtJQUNsQztJQUNBO0lBbEJILGNBQWMsQ0FBYTtJQUMzQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFvQjtJQUMxQixhQUFhLENBQXdCO0lBQ3JDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUUxQixTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUNwQyxXQUFXLENBQW1CO0lBQzlCLFdBQVcsR0FBb0I7UUFDcEMsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDO0tBQzlELENBQUM7SUFFUSxlQUFlLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7SUFFakYsWUFBb0IsRUFBZSxFQUFTLFVBQXNCLEVBQ3hELFdBQTZCLEVBQzdCLGFBQTRCO1FBRmxCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3hELGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFB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QUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FHcEgsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN0RSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNqSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuSSxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQy9JLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzNJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzlLLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsOEJBQThCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFdFAsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQTtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBYyxDQUFDO0lBQ3pELENBQUM7d0dBN01VLHlCQUF5Qjs0RkFBekIseUJBQXlCLGdIQ2hCdEMsa3RLQXVHTTs7NEZEdkZPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7b0tBbUIzQixlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgT0VQQVBsYWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0VQQUVudGl0eUZpbHRlciB9IGZyb20gJ0BvaGlvZXBhL29lcGEtZWJpei1saWInO1xuaW1wb3J0IHsgT2VwYVRhYmxlUm93IH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1yb3cnO1xuaW1wb3J0IHsgT2VwYVRhYmxlSGVhZGVyIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgT2VwYUZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uL29lcGEtZm9ybXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGxhY2Utc2VhcmNoLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VTZWFyY2hNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBtb2RhbEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBpblByb2dyZXNzTXNnOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZpbHRlciE6IE9FUEFFbnRpdHlGaWx0ZXI7XG4gIHB1YmxpYyBzZWxlY3RlZFBsYWNlOiBPRVBBUGxhY2UgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBvcGVuU2VhcmNoQ3JpdGVyaWEgPSB0cnVlO1xuXG4gIHB1YmxpYyB0YWJsZURhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHVibGljIHRhYmxlSGVhZGVyITogT2VwYVRhYmxlSGVhZGVyO1xuICBwdWJsaWMgdGFibGVDb25maWc6IE9lcGFUYWJsZUNvbmZpZyA9IHtcbiAgICByb3dzUGVyUGFnZTogNSxcbiAgICBjbGFzc05hbWVzOiBbJ3RhYmxlLXN0cmlwZWQnLCAndGFibGUtYm9yZGVyZWQnLCAndGFibGUtc20nXVxufTtcblxuQE91dHB1dCgpIG9uUGxhY2VTZWxlY3RlZDogRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogT2VwYUZvcm1zU2VydmljZSxcbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2UpIHsgXG5cbiAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogJycsXG4gICAgICBzZWNvbmRhcnlJRDogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFkZHJlc3M6IHRoaXMuZmIuZ3JvdXAodGhpcy5mb3JtU2VydmljZS5idWlsZEFkZHJlc3NGb3JtV2l0aENvdW50cnkoeyBzdGF0ZTogJ09IJ30pKSxcbiAgICAgIGFyZWFDb2RlOiAnJyxcbiAgICAgIHBob25lTnVtYmVyOiAnJyxcbiAgICAgIGV4dGVuc2lvbjogJydcbiAgICB9KTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdzdGF0ZScpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tRm9ybSgpOiBPRVBBRW50aXR5RmlsdGVyIHtcbiAgICBsZXQgZmlsdGVyOiBPRVBBRW50aXR5RmlsdGVyID0ge1xuICAgICAgaWQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdpZCcpPy52YWx1ZSxcbiAgICAgIHNlY29uZGFyeUlEOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnc2Vjb25kYXJ5SUQnKT8udmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnbmFtZScpPy52YWx1ZSxcbiAgICAgIGFkZHJlc3M6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnbGluZTEnKT8udmFsdWUsXG4gICAgICBjaXR5OiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NpdHknKT8udmFsdWUsXG4gICAgICBzdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdzdGF0ZScpPy52YWx1ZSxcbiAgICAgIHppcENvZGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgncG9zdGFsQ29kZScpPy52YWx1ZSxcbiAgICAgIGZvcmVpZ25TdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdmb3JlaWduU3RhdGUnKT8udmFsdWUsXG4gICAgICBjb3VudHJ5OiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlDb2RlKHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSksXG4gICAgICBwaG9uZUFyZWFDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYXJlYUNvZGUnKT8udmFsdWUsXG4gICAgICBwaG9uZU51bWJlcjogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Bob25lTnVtYmVyJyk/LnZhbHVlLFxuICAgICAgcGhvbmVFeHRlbnNpb246IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdleHRlbnNpb24nKT8udmFsdWUsXG4gICAgfTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJc0VtcHR5KGZpbHRlcjogT0VQQUVudGl0eUZpbHRlcik6IGJvb2xlYW4ge1xuICAgIGxldCBlbXB0eSA9IHRydWU7XG4gICAgaWYgKGZpbHRlci5pZCAmJiBmaWx0ZXIuaWQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5zZWNvbmRhcnlJRCAmJiBmaWx0ZXIuc2Vjb25kYXJ5SUQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5uYW1lICYmIGZpbHRlci5uYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuYWRkcmVzcyAmJiBmaWx0ZXIuYWRkcmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLmNpdHkgJiYgZmlsdGVyLmNpdHkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci56aXBDb2RlICYmIGZpbHRlci56aXBDb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuY291bnRyeSAmJiBmaWx0ZXIuY291bnRyeS5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZmlsdGVyLnBob25lQXJlYUNvZGUgJiYgZmlsdGVyLnBob25lQXJlYUNvZGUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZU51bWJlciAmJiBmaWx0ZXIucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZUV4dGVuc2lvbiAmJiBmaWx0ZXIucGhvbmVFeHRlbnNpb24ubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFNlYXJjaCgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21Gb3JtKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdQbGVhc2Ugc3BlY2lmeSBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluUHJvZ3Jlc3NNc2cgPSAnU2VhcmNoaW5nLi4uJztcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICAgIHRoaXMuYnVpbGRUYWJsZUhlYWRlcigpO1xuICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hQbGFjZXMoZmlsdGVyKS5zdWJzY3JpYmUocGxhY2VzID0+IHtcbiAgICAgIHRoaXMuaW5Qcm9ncmVzc01zZyA9ICcnO1xuICAgICAgaWYgKHBsYWNlcyAmJiBwbGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IGZhbHNlO1xuICAgICAgICBwbGFjZXMuZm9yRWFjaChwbGFjZSA9PiB7XG4gICAgICAgICAgbGV0IHJvdyA9IHRoaXMuY29udmVydFBsYWNlVG9UYWJsZVJvdyhwbGFjZSk7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChyb3cpO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGEuc2xpY2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ05vIHBsYWNlcyBmb3VuZCBtYXRjaGluZyBzZWFyY2ggY3JpdGVyaWEuIFBsZWFzZSB1c2UgdGhlIFBsYWNlcyBhcHBsaWNhdGlvbiB0byBjcmVhdGUgYSBuZXcgcGxhY2UuJztcbiAgICAgIH1cbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5pblByb2dyZXNzTXNnID0gJyc7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdTZWFyY2ggRmFpbGVkOiAnICsgZXJyO1xuICAgIH0pO1xuICB9XG5wcml2YXRlIGJ1aWxkVGFibGVIZWFkZXIoKXtcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0ge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgdGl0bGU6ICcnLCBpZDogJ3NlbGVjdCcsIHNvcnQ6ICdub25lJywgc2luZ2xlU2VsZWN0Q29sdW1uOiB0cnVlLCBjbGFzc05hbWU6ICdzZWxlY3QtY29sJyB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdJRCcsIGlkOiAnaWQnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnTmFtZScsIGlkOiAnbmFtZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdTZWNvbmRhcnkgSUQnLCBpZDogJ3NlY29uZGFyeUlEJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyB0aXRsZTogJ0FkZHJlc3MnLCBpZDogJ2FkZHJlc3MnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnQ2l0eScsIGlkOiAnY2l0eScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIFxuICAgICAgXVxuICB9O1xuICBcbiAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1N0YXRlJywgaWQ6ICdzdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdaaXAgQ29kZScsIGlkOiAnemlwQ29kZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduU3RhdGUnLCBpZDogJ2ZvcmVpZ25TdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduWmlwJywgaWQ6ICdmb3JlaWduWmlwJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0pXG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ2NvdW50cnknLCBpZDogJ2NvdW50cnknLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG4gIH1cbiAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1Bob25lJywgaWQ6ICdwaG9uZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KTtcbn1cbiAgcHJpdmF0ZSBjb252ZXJ0UGxhY2VUb1RhYmxlUm93KHBsYWNlOiBPRVBBUGxhY2UpOiBPZXBhVGFibGVSb3cge1xuICAgICAgbGV0IHNlY29uZGFyeUlEczpzdHJpbmc9Jyc7XG4gICAgICBsZXQgc2Vjb25kYXJ5SUREZXNjTGlzdDpBcnJheTxzdHJpbmc+PVtdO1xuICAgICAgaWYocGxhY2Uuc2Vjb25kYXJ5SURMaXN0ICYmIHBsYWNlLnNlY29uZGFyeUlETGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgcGxhY2Uuc2Vjb25kYXJ5SURMaXN0LmZvckVhY2goc2Vjb25kYXJ5SUQ9PnsgXG4gICAgICAgICAgY29uc3QgbWF0Y2hEZXNjID0gc2Vjb25kYXJ5SUREZXNjTGlzdC5maW5kKChkZXNjKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVzYyA9PT0gc2Vjb25kYXJ5SUQuZGVzY3JpcHRpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoIW1hdGNoRGVzYyAmJiBzZWNvbmRhcnlJRC5lbmREYXRlPT09bnVsbCl7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlERGVzY0xpc3QucHVzaChzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbiB8fCAnJyk7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlEcyArPSBzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbisnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICB9KVxuICAgICAgICBzZWNvbmRhcnlJRHMgPSBzZWNvbmRhcnlJRHMuc2xpY2UoMCwgc2Vjb25kYXJ5SURzLmxlbmd0aC0yKTtcbiAgICAgIH1cbiAgICAgIGxldCBjZWxsczpBcnJheTxhbnk+PSBbXG4gICAgICAgIHsgaWQ6ICdpZCcsIHZhbHVlOiBwbGFjZS5pZCB9LFxuICAgICAgICB7IGlkOiAnbmFtZScsIHZhbHVlOiBwbGFjZS5uYW1lIH0sXG4gICAgICAgIHsgaWQ6ICdzZWNvbmRhcnlJRCcsIHZhbHVlOiBzZWNvbmRhcnlJRHMgfSxcbiAgICAgICAgeyBpZDogJ2FkZHJlc3MnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmFkZHJlc3NMaW5lMSAgOiAnJyB9LFxuICAgICAgICB7IGlkOiAnY2l0eScsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uY2l0eSAgOiAnJyB9LFxuICAgICAgIFxuICAgICAgICBcbiAgICAgIF07XG4gICAgICBpZih0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09ICdVU0EnKXtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnc3RhdGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnN0YXRlICA6ICcnIH0pXG4gICAgICAgIGNlbGxzLnB1c2goeyBpZDogJ3ppcENvZGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnppcCAgOiAnJyB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblN0YXRlJywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBwbGFjZS5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduU3RhdGUgIDogJycgfSlcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblppcCcsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uZm9yZWlnblppcCAgOiAnJyB9KVxuICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdjb3VudHJ5JywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlOYW1lKHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmNvdW50cnkgfHwgJycpICA6ICcnIH0pXG4gICAgICB9XG4gICAgICBjZWxscy5wdXNoKHsgaWQ6ICdwaG9uZScsIHZhbHVlOiBwbGFjZS5waG9uZU51bWJlckxpc3QgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0Lmxlbmd0aCA+IDAgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyID8gcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyLnBob25lTnVtYmVyPy5yZXBsYWNlKC9eKFxcZHswLDN9KShcXGR7MCwzfSkoXFxkezAsNH0pLywgJygkMSkgJDItJDMnKSA6ICcnIH0pXG4gICAgICBcbiAgICByZXR1cm4ge1xuICAgICAgY2VsbHM6IGNlbGxzLFxuICAgICAgZGF0YVNvdXJjZTogcGxhY2UsXG4gICAgICBzZWxlY3RhYmxlOiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMub3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5tb2RhbEZvcm1Hcm91cC5jb250cm9sc1snYWRkcmVzcyddLmdldCgnY291bnRyeScpPy5zZXRWYWx1ZSgnVVNBJyk7XG4gICAgdGhpcy50YWJsZURhdGEgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd1NlbGVjdChldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFBsYWNlID0gZXZlbnRbMF0uZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCkge1xuICAgIHRoaXMub25QbGFjZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFBsYWNlKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIGdldE1vZGFsRm9ybUdyb3VwKG5hbWU6IHN0cmluZykgOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdIGFzIEZvcm1Hcm91cDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPkFkdmFuY2VkIFBsYWNlIFNlYXJjaDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgICAgIFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8YWNjb3JkaW9uPlxuICAgICAgICAgICAgPGFjY29yZGlvbi1ncm91cCBwYW5lbENsYXNzPVwicGFuZWwtaW5mb1wiICNzZWFyY2hHcm91cCBbaXNPcGVuXT1cIm9wZW5TZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgYWNjb3JkaW9uLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmxvYXQteHMtcmlnaHQgYmlcIiBpZD1cInBsYWNlU2VhcmNoQ3JpdGVyaWFcIiBuYW1lPVwicGxhY2VTZWFyY2hDcml0ZXJpYVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYmktY2hldnJvbi1kb3duJzogc2VhcmNoR3JvdXA/LmlzT3BlbiwgJ2JpLWNoZXZyb24tcmlnaHQnOiAhc2VhcmNoR3JvdXA/LmlzT3Blbn1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlBsYWNlIFNlYXJjaCBDcml0ZXJpYTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm1vZGFsRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QbGFjZSBJRDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5OTk5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlSURJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBsYWNlIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlTmFtZUlucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZWNvbmRhcnkgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNlY29uZGFyeUlESW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRhcnlJRFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxvZXBhLWFkZHJlc3MgW2dyb3VwXT1cImdldE1vZGFsRm9ybUdyb3VwKCdhZGRyZXNzJylcIiBbaXNTZWFyY2hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3NPbmVMYWJlbD1cIkFkZHJlc3NcIiBbaGlkZUxpbmUyXT1cInRydWVcIj48L29lcGEtYWRkcmVzcz5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+QXJlYSBDb2RlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYXJlYUNvZGVJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImFyZWFDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+UGhvbmUgTnVtYmVyPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTktOTk5OVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaG9uZU51bWJlcklucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVOdW1iZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5FeHRlbnNpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgbWFzaz1cIjk5OTlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZXh0ZW5zaW9uSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJleHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5Qcm9ncmVzc01zZ1wiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluUHJvZ3Jlc3NNc2dcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMlwiIGlkPVwic3VibWl0U2VhcmNoQnRuXCIgKGNsaWNrKT1cInN1Ym1pdFNlYXJjaCgpXCI+U2VhcmNoPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwicmVzZXRTZWFyY2hCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwicmVzZXRTZWFyY2goKVwiPlJlc2V0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9hY2NvcmRpb24tZ3JvdXA+XG4gICAgICAgIDwvYWNjb3JkaW9uPlxuICAgIDxkaXYgKm5nSWY9XCJ0YWJsZURhdGEgJiYgdGFibGVEYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8Yj5QbGFjZSBMaXN0Jm5ic3A7PC9iPjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+e3t0YWJsZURhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8b2VwYS10YWJsZSB0YWJsZUlkPVwicGxhY2VTZWFyY2hUYWJsZVwiIFtjb25maWddPVwidGFibGVDb25maWdcIiBbZGF0YV09XCJ0YWJsZURhdGFcIiBbaGVhZGVyXT1cInRhYmxlSGVhZGVyXCIgKHJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgICAgIDwvb2VwYS10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgZC1ibG9ja1wiPlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgICAgICAgICAge3tlcnJvck1lc3NhZ2V9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5Qcm9ncmVzc01zZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiPlxuICAgICAgICAgICAge3tpblByb2dyZXNzTXNnfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0yXCJcbiAgICAgICAgICAgICAgICBpZD1cIlNhdmVQbGFjZUJ0blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFBsYWNlIHx8IGluUHJvZ3Jlc3NNc2dcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwiQ2FuY2VsUGF5bWVudEJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utc2VhcmNoLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZW50aXR5L3BsYWNlLXNlYXJjaC1tb2RhbC9wbGFjZS1zZWFyY2gtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9lbnRpdHkvcGxhY2Utc2VhcmNoLW1vZGFsL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZ0J4RSxNQUFNLE9BQU8seUJBQXlCO0lBaUJoQjtJQUF3QjtJQUNsQztJQUNBO0lBbEJILGNBQWMsQ0FBYTtJQUMzQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFvQjtJQUMxQixhQUFhLENBQXdCO0lBQ3JDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUUxQixTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUNwQyxXQUFXLENBQW1CO0lBQzlCLFdBQVcsR0FBb0I7UUFDcEMsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDO0tBQzlELENBQUM7SUFFUSxlQUFlLEdBQTRCLElBQUksWUFBWSxFQUFhLENBQUM7SUFFakYsWUFBb0IsRUFBZSxFQUFTLFVBQXNCLEVBQ3hELFdBQTZCLEVBQzdCLGFBQTRCO1FBRmxCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3hELGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVwQyxDQUFDO0lBRUgsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEVBQUUsRUFBRSxFQUFFO1lBQ04sV0FBVyxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsRUFBRTtZQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDcEYsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksTUFBTSxHQUFxQjtZQUM3QixFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSztZQUN4QyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztZQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSztZQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUs7WUFDaEUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUM5RCxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUs7WUFDckUsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLO1lBQzVFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ25HLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1lBQ3pELFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLO1lBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLO1NBQzVELENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQXdCO1FBQzVDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUQsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLGdDQUFnQyxDQUFDO1lBQ3JELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxvR0FBb0csQ0FBQztZQUMzSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0ssZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsT0FBTyxFQUFFO2dCQUNMLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7Z0JBQzVGLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtnQkFDekQsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2dCQUM3RCxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQzVFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtnQkFDbkUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2FBRWhFO1NBQ0osQ0FBQztRQUVGLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUM5RixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNyRyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzVHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3hHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBQ1Msc0JBQXNCLENBQUMsS0FBZ0I7UUFDM0MsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksbUJBQW1CLEdBQWUsRUFBRSxDQUFDO1FBQ3pDLElBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztZQUM1RCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUEsRUFBRTtnQkFDekMsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2xELE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLE9BQU8sS0FBRyxJQUFJLEVBQUMsQ0FBQztvQkFDekMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hELFlBQVksSUFBSSxXQUFXLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztnQkFDakQsQ0FBQztZQUVILENBQUMsQ0FBQyxDQUFBO1lBQ0YsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksS0FBSyxHQUFhO1lBQ3BCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDakMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDMUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FHcEgsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLEVBQUMsQ0FBQztZQUN0RSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNqSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuSSxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQy9JLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzNJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzlLLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsOEJBQThCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFdFAsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQTtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDM0MsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBYyxDQUFDO0lBQ3pELENBQUM7d0dBN01VLHlCQUF5Qjs0RkFBekIseUJBQXlCLGdIQ2hCdEMsazdLQXVHTTs7NEZEdkZPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7b0tBbUIzQixlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgT0VQQVBsYWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1lYml6LWxpYic7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT0VQQUVudGl0eUZpbHRlciB9IGZyb20gJ0BvaGlvZXBhL29lcGEtZWJpei1saWInO1xuaW1wb3J0IHsgT2VwYVRhYmxlUm93IH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1yb3cnO1xuaW1wb3J0IHsgT2VwYVRhYmxlSGVhZGVyIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgT2VwYVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvb2VwYS10YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgT2VwYUZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uL29lcGEtZm9ybXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGxhY2Utc2VhcmNoLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYWNlLXNlYXJjaC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VTZWFyY2hNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBtb2RhbEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBpblByb2dyZXNzTXNnOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZpbHRlciE6IE9FUEFFbnRpdHlGaWx0ZXI7XG4gIHB1YmxpYyBzZWxlY3RlZFBsYWNlOiBPRVBBUGxhY2UgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBvcGVuU2VhcmNoQ3JpdGVyaWEgPSB0cnVlO1xuXG4gIHB1YmxpYyB0YWJsZURhdGE6IEFycmF5PE9lcGFUYWJsZVJvdz4gPSBbXTtcbiAgcHVibGljIHRhYmxlSGVhZGVyITogT2VwYVRhYmxlSGVhZGVyO1xuICBwdWJsaWMgdGFibGVDb25maWc6IE9lcGFUYWJsZUNvbmZpZyA9IHtcbiAgICByb3dzUGVyUGFnZTogNSxcbiAgICBjbGFzc05hbWVzOiBbJ3RhYmxlLXN0cmlwZWQnLCAndGFibGUtYm9yZGVyZWQnLCAndGFibGUtc20nXVxufTtcblxuQE91dHB1dCgpIG9uUGxhY2VTZWxlY3RlZDogRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE9FUEFQbGFjZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogT2VwYUZvcm1zU2VydmljZSxcbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2UpIHsgXG5cbiAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogJycsXG4gICAgICBzZWNvbmRhcnlJRDogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFkZHJlc3M6IHRoaXMuZmIuZ3JvdXAodGhpcy5mb3JtU2VydmljZS5idWlsZEFkZHJlc3NGb3JtV2l0aENvdW50cnkoeyBzdGF0ZTogJ09IJ30pKSxcbiAgICAgIGFyZWFDb2RlOiAnJyxcbiAgICAgIHBob25lTnVtYmVyOiAnJyxcbiAgICAgIGV4dGVuc2lvbjogJydcbiAgICB9KTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzWydhZGRyZXNzJ10uZ2V0KCdzdGF0ZScpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJGcm9tRm9ybSgpOiBPRVBBRW50aXR5RmlsdGVyIHtcbiAgICBsZXQgZmlsdGVyOiBPRVBBRW50aXR5RmlsdGVyID0ge1xuICAgICAgaWQ6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdpZCcpPy52YWx1ZSxcbiAgICAgIHNlY29uZGFyeUlEOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnc2Vjb25kYXJ5SUQnKT8udmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnbmFtZScpPy52YWx1ZSxcbiAgICAgIGFkZHJlc3M6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnbGluZTEnKT8udmFsdWUsXG4gICAgICBjaXR5OiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NpdHknKT8udmFsdWUsXG4gICAgICBzdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdzdGF0ZScpPy52YWx1ZSxcbiAgICAgIHppcENvZGU6IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgncG9zdGFsQ29kZScpPy52YWx1ZSxcbiAgICAgIGZvcmVpZ25TdGF0ZTogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdmb3JlaWduU3RhdGUnKT8udmFsdWUsXG4gICAgICBjb3VudHJ5OiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlDb2RlKHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJyk/LmdldCgnY291bnRyeScpPy52YWx1ZSksXG4gICAgICBwaG9uZUFyZWFDb2RlOiB0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYXJlYUNvZGUnKT8udmFsdWUsXG4gICAgICBwaG9uZU51bWJlcjogdGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ3Bob25lTnVtYmVyJyk/LnZhbHVlLFxuICAgICAgcGhvbmVFeHRlbnNpb246IHRoaXMubW9kYWxGb3JtR3JvdXAuZ2V0KCdleHRlbnNpb24nKT8udmFsdWUsXG4gICAgfTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJc0VtcHR5KGZpbHRlcjogT0VQQUVudGl0eUZpbHRlcik6IGJvb2xlYW4ge1xuICAgIGxldCBlbXB0eSA9IHRydWU7XG4gICAgaWYgKGZpbHRlci5pZCAmJiBmaWx0ZXIuaWQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5zZWNvbmRhcnlJRCAmJiBmaWx0ZXIuc2Vjb25kYXJ5SUQubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5uYW1lICYmIGZpbHRlci5uYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuYWRkcmVzcyAmJiBmaWx0ZXIuYWRkcmVzcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLmNpdHkgJiYgZmlsdGVyLmNpdHkubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci56aXBDb2RlICYmIGZpbHRlci56aXBDb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmaWx0ZXIuY291bnRyeSAmJiBmaWx0ZXIuY291bnRyeS5sZW5ndGggPiAwKSB7XG4gICAgICBlbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZmlsdGVyLnBob25lQXJlYUNvZGUgJiYgZmlsdGVyLnBob25lQXJlYUNvZGUubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZU51bWJlciAmJiBmaWx0ZXIucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5waG9uZUV4dGVuc2lvbiAmJiBmaWx0ZXIucGhvbmVFeHRlbnNpb24ubGVuZ3RoID4gMCkge1xuICAgICAgZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFNlYXJjaCgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlckZyb21Gb3JtKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdQbGVhc2Ugc3BlY2lmeSBzZWFyY2ggY3JpdGVyaWEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluUHJvZ3Jlc3NNc2cgPSAnU2VhcmNoaW5nLi4uJztcbiAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xuICAgIHRoaXMuYnVpbGRUYWJsZUhlYWRlcigpO1xuICAgIHRoaXMuZW50aXR5U2VydmljZS5zZWFyY2hQbGFjZXMoZmlsdGVyKS5zdWJzY3JpYmUocGxhY2VzID0+IHtcbiAgICAgIHRoaXMuaW5Qcm9ncmVzc01zZyA9ICcnO1xuICAgICAgaWYgKHBsYWNlcyAmJiBwbGFjZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IGZhbHNlO1xuICAgICAgICBwbGFjZXMuZm9yRWFjaChwbGFjZSA9PiB7XG4gICAgICAgICAgbGV0IHJvdyA9IHRoaXMuY29udmVydFBsYWNlVG9UYWJsZVJvdyhwbGFjZSk7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChyb3cpO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGEuc2xpY2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hDcml0ZXJpYSA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ05vIHBsYWNlcyBmb3VuZCBtYXRjaGluZyBzZWFyY2ggY3JpdGVyaWEuIFBsZWFzZSB1c2UgdGhlIFBsYWNlcyBhcHBsaWNhdGlvbiB0byBjcmVhdGUgYSBuZXcgcGxhY2UuJztcbiAgICAgIH1cbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5pblByb2dyZXNzTXNnID0gJyc7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdTZWFyY2ggRmFpbGVkOiAnICsgZXJyO1xuICAgIH0pO1xuICB9XG5wcml2YXRlIGJ1aWxkVGFibGVIZWFkZXIoKXtcbiAgICB0aGlzLnRhYmxlSGVhZGVyID0ge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgdGl0bGU6ICcnLCBpZDogJ3NlbGVjdCcsIHNvcnQ6ICdub25lJywgc2luZ2xlU2VsZWN0Q29sdW1uOiB0cnVlLCBjbGFzc05hbWU6ICdzZWxlY3QtY29sJyB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdJRCcsIGlkOiAnaWQnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnTmFtZScsIGlkOiAnbmFtZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgdGl0bGU6ICdTZWNvbmRhcnkgSUQnLCBpZDogJ3NlY29uZGFyeUlEJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0sXG4gICAgICAgICAgeyB0aXRsZTogJ0FkZHJlc3MnLCBpZDogJ2FkZHJlc3MnLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSxcbiAgICAgICAgICB7IHRpdGxlOiAnQ2l0eScsIGlkOiAnY2l0eScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9LFxuICAgICAgICAgIFxuICAgICAgXVxuICB9O1xuICBcbiAgaWYodGhpcy5tb2RhbEZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKT8uZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSAnVVNBJyl7XG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1N0YXRlJywgaWQ6ICdzdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdaaXAgQ29kZScsIGlkOiAnemlwQ29kZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduU3RhdGUnLCBpZDogJ2ZvcmVpZ25TdGF0ZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KVxuICAgIHRoaXMudGFibGVIZWFkZXIuY29sdW1ucy5wdXNoKHsgdGl0bGU6ICdmb3JlaWduWmlwJywgaWQ6ICdmb3JlaWduWmlwJywgc29ydDogJ25vbmUnLCBmaWx0ZXJhYmxlOiB0cnVlIH0pXG4gICAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ2NvdW50cnknLCBpZDogJ2NvdW50cnknLCBzb3J0OiAnbm9uZScsIGZpbHRlcmFibGU6IHRydWUgfSk7XG4gIH1cbiAgdGhpcy50YWJsZUhlYWRlci5jb2x1bW5zLnB1c2goeyB0aXRsZTogJ1Bob25lJywgaWQ6ICdwaG9uZScsIHNvcnQ6ICdub25lJywgZmlsdGVyYWJsZTogdHJ1ZSB9KTtcbn1cbiAgcHJpdmF0ZSBjb252ZXJ0UGxhY2VUb1RhYmxlUm93KHBsYWNlOiBPRVBBUGxhY2UpOiBPZXBhVGFibGVSb3cge1xuICAgICAgbGV0IHNlY29uZGFyeUlEczpzdHJpbmc9Jyc7XG4gICAgICBsZXQgc2Vjb25kYXJ5SUREZXNjTGlzdDpBcnJheTxzdHJpbmc+PVtdO1xuICAgICAgaWYocGxhY2Uuc2Vjb25kYXJ5SURMaXN0ICYmIHBsYWNlLnNlY29uZGFyeUlETGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgcGxhY2Uuc2Vjb25kYXJ5SURMaXN0LmZvckVhY2goc2Vjb25kYXJ5SUQ9PnsgXG4gICAgICAgICAgY29uc3QgbWF0Y2hEZXNjID0gc2Vjb25kYXJ5SUREZXNjTGlzdC5maW5kKChkZXNjKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVzYyA9PT0gc2Vjb25kYXJ5SUQuZGVzY3JpcHRpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoIW1hdGNoRGVzYyAmJiBzZWNvbmRhcnlJRC5lbmREYXRlPT09bnVsbCl7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlERGVzY0xpc3QucHVzaChzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbiB8fCAnJyk7XG4gICAgICAgICAgICAgIHNlY29uZGFyeUlEcyArPSBzZWNvbmRhcnlJRC5kZXNjcmlwdGlvbisnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICB9KVxuICAgICAgICBzZWNvbmRhcnlJRHMgPSBzZWNvbmRhcnlJRHMuc2xpY2UoMCwgc2Vjb25kYXJ5SURzLmxlbmd0aC0yKTtcbiAgICAgIH1cbiAgICAgIGxldCBjZWxsczpBcnJheTxhbnk+PSBbXG4gICAgICAgIHsgaWQ6ICdpZCcsIHZhbHVlOiBwbGFjZS5pZCB9LFxuICAgICAgICB7IGlkOiAnbmFtZScsIHZhbHVlOiBwbGFjZS5uYW1lIH0sXG4gICAgICAgIHsgaWQ6ICdzZWNvbmRhcnlJRCcsIHZhbHVlOiBzZWNvbmRhcnlJRHMgfSxcbiAgICAgICAgeyBpZDogJ2FkZHJlc3MnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmFkZHJlc3NMaW5lMSAgOiAnJyB9LFxuICAgICAgICB7IGlkOiAnY2l0eScsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uY2l0eSAgOiAnJyB9LFxuICAgICAgIFxuICAgICAgICBcbiAgICAgIF07XG4gICAgICBpZih0aGlzLm1vZGFsRm9ybUdyb3VwLmdldCgnYWRkcmVzcycpPy5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09ICdVU0EnKXtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnc3RhdGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnN0YXRlICA6ICcnIH0pXG4gICAgICAgIGNlbGxzLnB1c2goeyBpZDogJ3ppcENvZGUnLCB2YWx1ZTogcGxhY2UuYWRkcmVzc0xpc3QgJiYgcGxhY2UuYWRkcmVzc0xpc3QubGVuZ3RoID4gMCA/IHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LnppcCAgOiAnJyB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblN0YXRlJywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyBwbGFjZS5hZGRyZXNzTGlzdFswXS5hZGRyZXNzPy5mb3JlaWduU3RhdGUgIDogJycgfSlcbiAgICAgICAgY2VsbHMucHVzaCh7IGlkOiAnZm9yZWlnblppcCcsIHZhbHVlOiBwbGFjZS5hZGRyZXNzTGlzdCAmJiBwbGFjZS5hZGRyZXNzTGlzdC5sZW5ndGggPiAwID8gcGxhY2UuYWRkcmVzc0xpc3RbMF0uYWRkcmVzcz8uZm9yZWlnblppcCAgOiAnJyB9KVxuICAgICAgICBjZWxscy5wdXNoKHsgaWQ6ICdjb3VudHJ5JywgdmFsdWU6IHBsYWNlLmFkZHJlc3NMaXN0ICYmIHBsYWNlLmFkZHJlc3NMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1TZXJ2aWNlLmdldENvdW50cnlOYW1lKHBsYWNlLmFkZHJlc3NMaXN0WzBdLmFkZHJlc3M/LmNvdW50cnkgfHwgJycpICA6ICcnIH0pXG4gICAgICB9XG4gICAgICBjZWxscy5wdXNoKHsgaWQ6ICdwaG9uZScsIHZhbHVlOiBwbGFjZS5waG9uZU51bWJlckxpc3QgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0Lmxlbmd0aCA+IDAgJiYgcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyID8gcGxhY2UucGhvbmVOdW1iZXJMaXN0WzBdLnBob25lTnVtYmVyLnBob25lTnVtYmVyPy5yZXBsYWNlKC9eKFxcZHswLDN9KShcXGR7MCwzfSkoXFxkezAsNH0pLywgJygkMSkgJDItJDMnKSA6ICcnIH0pXG4gICAgICBcbiAgICByZXR1cm4ge1xuICAgICAgY2VsbHM6IGNlbGxzLFxuICAgICAgZGF0YVNvdXJjZTogcGxhY2UsXG4gICAgICBzZWxlY3RhYmxlOiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMub3BlblNlYXJjaENyaXRlcmlhID0gdHJ1ZTtcbiAgICB0aGlzLm1vZGFsRm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5tb2RhbEZvcm1Hcm91cC5jb250cm9sc1snYWRkcmVzcyddLmdldCgnY291bnRyeScpPy5zZXRWYWx1ZSgnVVNBJyk7XG4gICAgdGhpcy50YWJsZURhdGEgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd1NlbGVjdChldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFBsYWNlID0gZXZlbnRbMF0uZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCkge1xuICAgIHRoaXMub25QbGFjZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFBsYWNlKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIGdldE1vZGFsRm9ybUdyb3VwKG5hbWU6IHN0cmluZykgOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLm1vZGFsRm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdIGFzIEZvcm1Hcm91cDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPkFkdmFuY2VkIFBsYWNlIFNlYXJjaDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgICAgIFxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8YWNjb3JkaW9uPlxuICAgICAgICAgICAgPGFjY29yZGlvbi1ncm91cCBwYW5lbENsYXNzPVwicGFuZWwtaW5mb1wiICNzZWFyY2hHcm91cCBbaXNPcGVuXT1cIm9wZW5TZWFyY2hDcml0ZXJpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgYWNjb3JkaW9uLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmxvYXQteHMtcmlnaHQgYmlcIiBpZD1cInBsYWNlU2VhcmNoQ3JpdGVyaWFcIiBuYW1lPVwicGxhY2VTZWFyY2hDcml0ZXJpYVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYmktY2hldnJvbi1kb3duJzogc2VhcmNoR3JvdXA/LmlzT3BlbiwgJ2JpLWNoZXZyb24tcmlnaHQnOiAhc2VhcmNoR3JvdXA/LmlzT3Blbn1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlBsYWNlIFNlYXJjaCBDcml0ZXJpYTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm1vZGFsRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwbGFjZUlESW5wdXRcIj5QbGFjZSBJRDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5OTk5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlSURJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cImlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBsYWNlTmFtZUlucHV0XCI+UGxhY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGxhY2VOYW1lSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlY29uZGFyeUlESW5wdXRcIj5TZWNvbmRhcnkgSUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInNlY29uZGFyeUlESW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRhcnlJRFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxvZXBhLWFkZHJlc3MgW2dyb3VwXT1cImdldE1vZGFsRm9ybUdyb3VwKCdhZGRyZXNzJylcIiBbaXNTZWFyY2hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3NPbmVMYWJlbD1cIkFkZHJlc3NcIiBbaGlkZUxpbmUyXT1cInRydWVcIj48L29lcGEtYWRkcmVzcz5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXJlYUNvZGVJbnB1dFwiPkFyZWEgQ29kZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIiBtYXNrPVwiOTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFyZWFDb2RlSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJhcmVhQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBob25lTnVtYmVySW5wdXRcIj5QaG9uZSBOdW1iZXI8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgbWFzaz1cIjk5OS05OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBob25lTnVtYmVySW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZU51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4dGVuc2lvbklucHV0XCI+RXh0ZW5zaW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIG1hc2s9XCI5OTk5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImV4dGVuc2lvbklucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZXh0ZW5zaW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluUHJvZ3Jlc3NNc2dcIj48c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj48L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpblByb2dyZXNzTXNnXCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIiBpZD1cInN1Ym1pdFNlYXJjaEJ0blwiIChjbGljayk9XCJzdWJtaXRTZWFyY2goKVwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIj5TZWFyY2g8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJyZXNldFNlYXJjaEJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCIgYXJpYS1sYWJlbD1cIlJlc2V0XCI+UmVzZXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2FjY29yZGlvbi1ncm91cD5cbiAgICAgICAgPC9hY2NvcmRpb24+XG4gICAgPGRpdiAqbmdJZj1cInRhYmxlRGF0YSAmJiB0YWJsZURhdGEubGVuZ3RoID4gMFwiIGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxiPlBsYWNlIExpc3QmbmJzcDs8L2I+PHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1zZWNvbmRhcnlcIj57e3RhYmxlRGF0YS5sZW5ndGh9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxvZXBhLXRhYmxlIHRhYmxlSWQ9XCJwbGFjZVNlYXJjaFRhYmxlXCIgW2NvbmZpZ109XCJ0YWJsZUNvbmZpZ1wiIFtkYXRhXT1cInRhYmxlRGF0YVwiIFtoZWFkZXJdPVwidGFibGVIZWFkZXJcIiAocm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9vZXBhLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBkLWJsb2NrXCI+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+XG4gICAgICAgICAgICB7e2Vycm9yTWVzc2FnZX19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpblByb2dyZXNzTXNnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCI+XG4gICAgICAgICAgICB7e2luUHJvZ3Jlc3NNc2d9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIlxuICAgICAgICAgICAgICAgIGlkPVwiU2F2ZVBsYWNlQnRuXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUGxhY2UgfHwgaW5Qcm9ncmVzc01zZ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiIGFyaWEtbGFiZWw9XCJTYXZlXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cIkNhbmNlbFBheW1lbnRCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJic01vZGFsUmVmLmhpZGUoKVwiIGFyaWEtbGFiZWw9XCJDYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -107,11 +107,11 @@ export class FileUploadComponent {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.OepaComponentIdService }, { token: i1.OepaFileUtilService }, { token: i2.BsModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadComponent, selector: "oepa-file-upload", inputs: { group: "group", field: "field", label: "label", errorLabel: "errorLabel", blankForm: "blankForm", blankFormUrl: "blankFormUrl", showValidation: "showValidation", domain: "domain", attachment: "attachment", accept: "accept", removeAllowed: "removeAllowed", parserName: "parserName", parserReport: "parserReport" }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", download: "download" }, ngImport: i0, template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\"> <a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\"> <a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse… \n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n \n\t\t\t</span>\n </div>\n </div>\n </div>\n</form>", styles: ["a:hover{cursor:pointer}a{color:#3399f3!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
110
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadComponent, selector: "oepa-file-upload", inputs: { group: "group", field: "field", label: "label", errorLabel: "errorLabel", blankForm: "blankForm", blankFormUrl: "blankFormUrl", showValidation: "showValidation", domain: "domain", attachment: "attachment", accept: "accept", removeAllowed: "removeAllowed", parserName: "parserName", parserReport: "parserReport" }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", download: "download" }, ngImport: i0, template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\"> <a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\"> <a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse… \n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\" id=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\" aria-label=\"Remove Attachment\">Remove Attachment</button>\n \n\t\t\t</span>\n </div>\n </div>\n </div>\n</form>", styles: ["a:hover{cursor:pointer}a{color:#3399f3!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
111
111
|
}
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
113
113
|
type: Component,
|
|
114
|
-
args: [{ selector: 'oepa-file-upload', template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\"> <a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\"> <a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse… \n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n \n\t\t\t</span>\n </div>\n </div>\n </div>\n</form>", styles: ["a:hover{cursor:pointer}a{color:#3399f3!important}\n"] }]
|
|
114
|
+
args: [{ selector: 'oepa-file-upload', template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\"> <a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\"> <a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse… \n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\" id=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\" aria-label=\"Remove Attachment\">Remove Attachment</button>\n \n\t\t\t</span>\n </div>\n </div>\n </div>\n</form>", styles: ["a:hover{cursor:pointer}a{color:#3399f3!important}\n"] }]
|
|
115
115
|
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }, { type: i1.OepaFileUtilService }, { type: i2.BsModalService }], propDecorators: { group: [{
|
|
116
116
|
type: Input
|
|
117
117
|
}], field: [{
|
|
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
145
145
|
}], download: [{
|
|
146
146
|
type: Output
|
|
147
147
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQVNoRyxNQUFNLE9BQU8sbUJBQW1CO0lBc0JWO0lBQTJDO0lBQ3JEO0lBdEJILFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztJQUN4QyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBRXZCLEtBQUssQ0FBYTtJQUNsQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQTZCO0lBQ3RDLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixNQUFNLEdBQUcsYUFBYSxDQUFDO0lBQ3ZCLFVBQVUsQ0FBNEI7SUFDdEMsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsWUFBWSxDQUFvQjtJQUUvQixZQUFZLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDaEUsV0FBVyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQy9ELFFBQVEsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV0RSxZ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QUFHLFVBQVUsQ0FBQyxZQUFZLEdBQUcsOEJBQThCLENBQUM7Z0JBQzVHLENBQUM7WUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRywwQkFBMEIsR0FBRyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7WUFDdkYsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzt3R0F6R1UsbUJBQW1COzRGQUFuQixtQkFBbUIseWRDaEJoQyx1eUZBa0RPOzs0RkRsQ00sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGtCQUFrQjswSkFRbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5cbmltcG9ydCB7IE9lcGFBdHRhY2htZW50LCBPZXBhUGFyc2VyUmVwb3J0LCBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2VwYUZpbGVVdGlsU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGNvbXBvbmVudElkID0gJ09lcGFGaWxlVXBsb2FkQ29tcG9uZW50JztcbiAgcHVibGljIHVwbG9hZEVycm9yOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yTGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBibGFua0Zvcm06IE9lcGFBdHRhY2htZW50IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBibGFua0Zvcm1Vcmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkb21haW4gPSAnYXBwbGljYXRpb24nO1xuICBASW5wdXQoKSBhdHRhY2htZW50OiBPZXBhQXR0YWNobWVudHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZW1vdmVBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFyc2VyTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhcnNlclJlcG9ydCE6IE9lcGFQYXJzZXJSZXBvcnQ7XG5cbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZDogRXZlbnRFbWl0dGVyPE9lcGFBdHRhY2htZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkOiBFdmVudEVtaXR0ZXI8T2VwYUF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZG93bmxvYWQ6IEV2ZW50RW1pdHRlcjxPZXBhQXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZFNlcnZpY2U6IE9lcGFDb21wb25lbnRJZFNlcnZpY2UsIHByaXZhdGUgZmlsZVV0aWxTZXJ2aWNlOiBPZXBhRmlsZVV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgKz0gKHRoaXMuY29tcG9uZW50SWQubGVuZ3RoID4gMCA/ICdfJyA6ICcnKSArIHRoaXMuZmllbGQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnJztcbiAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgaWYgKGZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBmaWxlTGlzdFswXTtcblxuICAgICAgaWYgKHRoaXMuZmlsZVR5cGVDYW5CZUFjY2VwdGVkKGZpbGUpKSB7XG4gICAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoYXR0YWNobWVudDogT2VwYUF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoYXR0YWNobWVudC51c2VyRmlsZW5hbWUpO1xuICAgICAgICAgICAgYXR0YWNobWVudC5maWxlUGFyc2VyID0gdGhpcy5wYXJzZXJOYW1lIHx8ICcnO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkZWQuZW1pdChhdHRhY2htZW50KTtcbiAgICAgICAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnRXJyb3IgdXBsb2FkaW5nIGZpbGUgJyArIGVyciB8fCAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdDYW5ub3QgYWNjZXB0IHRoaXMgdHlwZSBvZiBmaWxlLiBQbGVhc2UgdXBsb2FkIGEgZmlsZSBvZiB0eXBlOiAnICsgdGhpcy5hY2NlcHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBcbiAgcHJpdmF0ZSBmaWxlVHlwZUNhbkJlQWNjZXB0ZWQoZmlsZTphbnkpOiBib29sZWFuIHtcbiAgICBsZXQgb2sgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLmZpbGVVdGlsU2VydmljZS5taW1lVHlwZUZvckZpbGUoZmlsZS5uYW1lKTtcbiAgICAgIGlmICh0aGlzLmFjY2VwdC5pbmRleE9mKG1pbWVUeXBlKSA8IDApIHtcbiAgICAgICAgb2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9rO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZpbGUoKSB7XG4gICAgY29uc3QgbW9kYWw6IEJzTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCB7IGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5oZWFkZXJUZXh0ID0gJ1JlbW92ZSBBdHRhY2htZW50JztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmJvZHlUZXh0ID0gJ0RvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgYXR0YWNobWVudDogJyArIHRoaXMuYXR0YWNobWVudD8udXNlckZpbGVuYW1lIHx8ICc8dW5rbm93bj4nICsgJz8nO1xuICAgICg8Q29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ+bW9kYWwuY29udGVudCkuY29uZmlybUJ0bkxhYmVsID0gJ1llcyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jYW5jZWxCdG5MYWJlbCA9ICdObyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jb25maXJtQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkXS5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KHRoaXMuYXR0YWNobWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKGF0dGFjaG1lbnQ6IE9lcGFBdHRhY2htZW50KSB7XG4gICAgLy8gbGV0IHBhcmVudCBjb21wb25lbnQgaGFuZGxlIGRvd25sb2FkIGlmIHN5c3RlbSBmaWxlIG5hbWUgaXMgbm90IHByZXNlbnQgb3IgZW1wdHlcbiAgICBpZiAoIWF0dGFjaG1lbnQuc3lzdGVtRmlsZW5hbWUgfHwgYXR0YWNobWVudC5zeXN0ZW1GaWxlbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdkb3dubG9hZEZpbGUgLSBubyBmaWxlIG5hbWUsIGRlZmVycmluZyB0byBwYXJlbnQnKTtcbiAgICAgIHRoaXMuZG93bmxvYWQuZW1pdChhdHRhY2htZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2Rvd25sb2FkaW5nIGZpbGU6ICcgKyBhdHRhY2htZW50LnN5c3RlbUZpbGVuYW1lKTtcbiAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLmRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50KS5zdWJzY3JpYmUoXG4gICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5maWxlVXRpbFNlcnZpY2UubWltZVR5cGVGb3JGaWxlKGF0dGFjaG1lbnQuc3lzdGVtRmlsZW5hbWUgfHwgJycpO1xuICAgICAgICAgIGlmIChtaW1lVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlVXRpbFNlcnZpY2UuZG93bmxvYWRGaWxlKGRhdGEsIG1pbWVUeXBlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdVbmFibGUgdG8gZG93bmxvYWQgZmlsZTogJyArIGF0dGFjaG1lbnQudXNlckZpbGVuYW1lICsgJy4gQ2Fubm90IGRldGVybWluZSBtaW1lIHR5cGUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnVwbG9hZEVycm9yID0gJ0Vycm9yIGRvd25sb2FkaW5nIGZpbGU6ICcgKyBhdHRhY2htZW50LnVzZXJGaWxlbmFtZSArICc6ICcgKyBlcnI7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQmxhbmtGb3JtKCkge1xuICAgIGlmICh0aGlzLmJsYW5rRm9ybSkge1xuICAgICAgdGhpcy5kb3dubG9hZEZpbGUodGhpcy5ibGFua0Zvcm0pO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gIDxkaXYgKm5nSWY9XCIhYXR0YWNobWVudCB8fCAhYXR0YWNobWVudC51c2VyRmlsZW5hbWVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2PlxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L2xhYmVsPlxuICAgICAgPHNwYW4gKm5nSWY9XCJibGFua0Zvcm1VcmxcIj4mbmJzcDs8YSBocmVmPVwie3tibGFua0Zvcm1Vcmx9fVwiIHRhcmdldD1cIl9ibGFua1wiPkJsYW5rIEZvcm08L2E+PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJibGFua0Zvcm1cIj4mbmJzcDs8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImRvd25sb2FkQmxhbmtGb3JtKClcIj5CbGFuayBGb3JtPC9hPjwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZpbGVcIj5cbiAgICAgICAgICAgIEJyb3dzZSZoZWxsaXA7IFxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0Jyb3dzZUJ0bidcIiBbbmFtZV09XCJjb21wb25lbnRJZCsnX0Jyb3dzZUJ0bidcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHQgPyBhY2NlcHQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdESVNBQkxFRCdcIj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIiBcbiAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJObyBmaWxlIGNob3NlblwiIFtpZF09XCJjb21wb25lbnRJZCsnX0lucHV0J1wiIFtuYW1lXT1cImNvbXBvbmVudElkKydfSW5wdXQnXCIgcmVhZG9ubHk+XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdJTlZBTElEJ1wiPnt7ZXJyb3JMYWJlbCB8fCBsYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBkdW1teSBpbnB1dCBmaWVsZCBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlcyAtLT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtoaWRkZW5dPVwidHJ1ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIi8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ1cGxvYWRFcnJvclwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCI+e3t1cGxvYWRFcnJvcn19PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInBhcnNlclJlcG9ydFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInBhcnNlclJlcG9ydC5zdWNjZXNzZnVsXCIgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCIgcm9sZT1cImFsZXJ0XCI+U3ByZWFkc2hlZXQgd2FzIHN1Y2Nlc3NmdWxseSBwYXJzZWQuPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXBhcnNlclJlcG9ydC5zdWNjZXNzZnVsXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgVGhlcmUgYXJlIGVycm9ycyBpbiB0aGUgdXBsb2FkZWQgc3ByZWFkc2hlZXQ6XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yIG9mIHBhcnNlclJlcG9ydC5lcnJvcnNcIj57e2Vycm9yLm1lc3NhZ2V9fTwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQudXNlckZpbGVuYW1lXCI+XG4gICAgPGRpdj5cbiAgICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8YSAoY2xpY2spPVwiZG93bmxvYWRGaWxlKGF0dGFjaG1lbnQpXCIgW2lkXT1cImNvbXBvbmVudElkKydfRG93bmxvYWRGaWxlTGluaydcIiBbbmFtZV09XCJjb21wb25lbnRJZCsnX0Rvd25sb2FkRmlsZUxpbmsnXCIgXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj57e2F0dGFjaG1lbnQudXNlckZpbGVuYW1lfX08L2E+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicmVtb3ZlQWxsb3dlZFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2lkXT1cImNvbXBvbmVudElkKydfUmVtb3ZlRmlsZUJ0bidcIiBbbmFtZV09XCJjb21wb25lbnRJZCsnX1JlbW92ZUZpbGVCdG4nXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZSgpXCIgW2Rpc2FibGVkXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdESVNBQkxFRCdcIj5SZW1vdmUgQXR0YWNobWVudDwvYnV0dG9uPlxuICAgICAgICBcblx0XHRcdDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT4iXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQVNoRyxNQUFNLE9BQU8sbUJBQW1CO0lBc0JWO0lBQTJDO0lBQ3JEO0lBdEJILFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztJQUN4QyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBRXZCLEtBQUssQ0FBYTtJQUNsQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQTZCO0lBQ3RDLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixNQUFNLEdBQUcsYUFBYSxDQUFDO0lBQ3ZCLFVBQVUsQ0FBNEI7SUFDdEMsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsWUFBWSxDQUFvQjtJQUUvQixZQUFZLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7SUFDaEUsV0FBVyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQy9ELFFBQVEsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV0RSxZ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QUFHLFVBQVUsQ0FBQyxZQUFZLEdBQUcsOEJBQThCLENBQUM7Z0JBQzVHLENBQUM7WUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRywwQkFBMEIsR0FBRyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7WUFDdkYsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzt3R0F6R1UsbUJBQW1COzRGQUFuQixtQkFBbUIseWRDaEJoQyxxMUZBa0RPOzs0RkRsQ00sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGtCQUFrQjswSkFRbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5cbmltcG9ydCB7IE9lcGFBdHRhY2htZW50LCBPZXBhUGFyc2VyUmVwb3J0LCBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2VwYUZpbGVVdGlsU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGNvbXBvbmVudElkID0gJ09lcGFGaWxlVXBsb2FkQ29tcG9uZW50JztcbiAgcHVibGljIHVwbG9hZEVycm9yOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yTGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBibGFua0Zvcm06IE9lcGFBdHRhY2htZW50IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBibGFua0Zvcm1Vcmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkb21haW4gPSAnYXBwbGljYXRpb24nO1xuICBASW5wdXQoKSBhdHRhY2htZW50OiBPZXBhQXR0YWNobWVudHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZW1vdmVBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFyc2VyTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhcnNlclJlcG9ydCE6IE9lcGFQYXJzZXJSZXBvcnQ7XG5cbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZDogRXZlbnRFbWl0dGVyPE9lcGFBdHRhY2htZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkOiBFdmVudEVtaXR0ZXI8T2VwYUF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZG93bmxvYWQ6IEV2ZW50RW1pdHRlcjxPZXBhQXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZFNlcnZpY2U6IE9lcGFDb21wb25lbnRJZFNlcnZpY2UsIHByaXZhdGUgZmlsZVV0aWxTZXJ2aWNlOiBPZXBhRmlsZVV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgKz0gKHRoaXMuY29tcG9uZW50SWQubGVuZ3RoID4gMCA/ICdfJyA6ICcnKSArIHRoaXMuZmllbGQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnJztcbiAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgaWYgKGZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBmaWxlTGlzdFswXTtcblxuICAgICAgaWYgKHRoaXMuZmlsZVR5cGVDYW5CZUFjY2VwdGVkKGZpbGUpKSB7XG4gICAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoYXR0YWNobWVudDogT2VwYUF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoYXR0YWNobWVudC51c2VyRmlsZW5hbWUpO1xuICAgICAgICAgICAgYXR0YWNobWVudC5maWxlUGFyc2VyID0gdGhpcy5wYXJzZXJOYW1lIHx8ICcnO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkZWQuZW1pdChhdHRhY2htZW50KTtcbiAgICAgICAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnRXJyb3IgdXBsb2FkaW5nIGZpbGUgJyArIGVyciB8fCAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdDYW5ub3QgYWNjZXB0IHRoaXMgdHlwZSBvZiBmaWxlLiBQbGVhc2UgdXBsb2FkIGEgZmlsZSBvZiB0eXBlOiAnICsgdGhpcy5hY2NlcHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBcbiAgcHJpdmF0ZSBmaWxlVHlwZUNhbkJlQWNjZXB0ZWQoZmlsZTphbnkpOiBib29sZWFuIHtcbiAgICBsZXQgb2sgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLmZpbGVVdGlsU2VydmljZS5taW1lVHlwZUZvckZpbGUoZmlsZS5uYW1lKTtcbiAgICAgIGlmICh0aGlzLmFjY2VwdC5pbmRleE9mKG1pbWVUeXBlKSA8IDApIHtcbiAgICAgICAgb2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9rO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZpbGUoKSB7XG4gICAgY29uc3QgbW9kYWw6IEJzTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCB7IGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5oZWFkZXJUZXh0ID0gJ1JlbW92ZSBBdHRhY2htZW50JztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmJvZHlUZXh0ID0gJ0RvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgYXR0YWNobWVudDogJyArIHRoaXMuYXR0YWNobWVudD8udXNlckZpbGVuYW1lIHx8ICc8dW5rbm93bj4nICsgJz8nO1xuICAgICg8Q29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ+bW9kYWwuY29udGVudCkuY29uZmlybUJ0bkxhYmVsID0gJ1llcyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jYW5jZWxCdG5MYWJlbCA9ICdObyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jb25maXJtQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLmZpZWxkXS5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KHRoaXMuYXR0YWNobWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKGF0dGFjaG1lbnQ6IE9lcGFBdHRhY2htZW50KSB7XG4gICAgLy8gbGV0IHBhcmVudCBjb21wb25lbnQgaGFuZGxlIGRvd25sb2FkIGlmIHN5c3RlbSBmaWxlIG5hbWUgaXMgbm90IHByZXNlbnQgb3IgZW1wdHlcbiAgICBpZiAoIWF0dGFjaG1lbnQuc3lzdGVtRmlsZW5hbWUgfHwgYXR0YWNobWVudC5zeXN0ZW1GaWxlbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdkb3dubG9hZEZpbGUgLSBubyBmaWxlIG5hbWUsIGRlZmVycmluZyB0byBwYXJlbnQnKTtcbiAgICAgIHRoaXMuZG93bmxvYWQuZW1pdChhdHRhY2htZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2Rvd25sb2FkaW5nIGZpbGU6ICcgKyBhdHRhY2htZW50LnN5c3RlbUZpbGVuYW1lKTtcbiAgICAgIHRoaXMuZmlsZVV0aWxTZXJ2aWNlLmRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50KS5zdWJzY3JpYmUoXG4gICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5maWxlVXRpbFNlcnZpY2UubWltZVR5cGVGb3JGaWxlKGF0dGFjaG1lbnQuc3lzdGVtRmlsZW5hbWUgfHwgJycpO1xuICAgICAgICAgIGlmIChtaW1lVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlVXRpbFNlcnZpY2UuZG93bmxvYWRGaWxlKGRhdGEsIG1pbWVUeXBlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdVbmFibGUgdG8gZG93bmxvYWQgZmlsZTogJyArIGF0dGFjaG1lbnQudXNlckZpbGVuYW1lICsgJy4gQ2Fubm90IGRldGVybWluZSBtaW1lIHR5cGUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnVwbG9hZEVycm9yID0gJ0Vycm9yIGRvd25sb2FkaW5nIGZpbGU6ICcgKyBhdHRhY2htZW50LnVzZXJGaWxlbmFtZSArICc6ICcgKyBlcnI7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQmxhbmtGb3JtKCkge1xuICAgIGlmICh0aGlzLmJsYW5rRm9ybSkge1xuICAgICAgdGhpcy5kb3dubG9hZEZpbGUodGhpcy5ibGFua0Zvcm0pO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gIDxkaXYgKm5nSWY9XCIhYXR0YWNobWVudCB8fCAhYXR0YWNobWVudC51c2VyRmlsZW5hbWVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2PlxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L2xhYmVsPlxuICAgICAgPHNwYW4gKm5nSWY9XCJibGFua0Zvcm1VcmxcIj4mbmJzcDs8YSBocmVmPVwie3tibGFua0Zvcm1Vcmx9fVwiIHRhcmdldD1cIl9ibGFua1wiPkJsYW5rIEZvcm08L2E+PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJibGFua0Zvcm1cIj4mbmJzcDs8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImRvd25sb2FkQmxhbmtGb3JtKClcIj5CbGFuayBGb3JtPC9hPjwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZpbGVcIj5cbiAgICAgICAgICAgIEJyb3dzZSZoZWxsaXA7IFxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0Jyb3dzZUJ0bidcIiBbbmFtZV09XCJjb21wb25lbnRJZCsnX0Jyb3dzZUJ0bidcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHQgPyBhY2NlcHQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdESVNBQkxFRCdcIj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIiBcbiAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJObyBmaWxlIGNob3NlblwiIFtpZF09XCJjb21wb25lbnRJZCsnX0lucHV0J1wiIFtuYW1lXT1cImNvbXBvbmVudElkKydfSW5wdXQnXCIgcmVhZG9ubHk+XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdJTlZBTElEJ1wiPnt7ZXJyb3JMYWJlbCB8fCBsYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBkdW1teSBpbnB1dCBmaWVsZCBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlcyAtLT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtoaWRkZW5dPVwidHJ1ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIiBpZD1cImZpZWxkXCIvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkRXJyb3JcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiIHJvbGU9XCJhbGVydFwiPnt7dXBsb2FkRXJyb3J9fTwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJwYXJzZXJSZXBvcnRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJwYXJzZXJSZXBvcnQuc3VjY2Vzc2Z1bFwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiIHJvbGU9XCJhbGVydFwiPlNwcmVhZHNoZWV0IHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFwYXJzZXJSZXBvcnQuc3VjY2Vzc2Z1bFwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCI+XG4gICAgICAgIFRoZXJlIGFyZSBlcnJvcnMgaW4gdGhlIHVwbG9hZGVkIHNwcmVhZHNoZWV0OlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvciBvZiBwYXJzZXJSZXBvcnQuZXJyb3JzXCI+e3tlcnJvci5tZXNzYWdlfX08L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYXR0YWNobWVudCAmJiBhdHRhY2htZW50LnVzZXJGaWxlbmFtZVwiPlxuICAgIDxkaXY+XG4gICAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGEgKGNsaWNrKT1cImRvd25sb2FkRmlsZShhdHRhY2htZW50KVwiIFtpZF09XCJjb21wb25lbnRJZCsnX0Rvd25sb2FkRmlsZUxpbmsnXCIgW25hbWVdPVwiY29tcG9uZW50SWQrJ19Eb3dubG9hZEZpbGVMaW5rJ1wiIFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+e3thdHRhY2htZW50LnVzZXJGaWxlbmFtZX19PC9hPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInJlbW92ZUFsbG93ZWRcIiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtpZF09XCJjb21wb25lbnRJZCsnX1JlbW92ZUZpbGVCdG4nXCIgW25hbWVdPVwiY29tcG9uZW50SWQrJ19SZW1vdmVGaWxlQnRuJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoKVwiIFtkaXNhYmxlZF09XCJncm91cC5jb250cm9sc1tmaWVsZF0uc3RhdHVzID09PSAnRElTQUJMRUQnXCIgYXJpYS1sYWJlbD1cIlJlbW92ZSBBdHRhY2htZW50XCI+UmVtb3ZlIEF0dGFjaG1lbnQ8L2J1dHRvbj5cbiAgICAgICAgXG5cdFx0XHQ8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+Il19
|
|
@@ -108,11 +108,11 @@ export class LynxImageUploadComponent {
|
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
110
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LynxImageUploadComponent, deps: [{ token: i1.OepaComponentIdService }, { token: i2.BsModalService }, { token: i1.OepaFileUtilService }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LynxImageUploadComponent, selector: "oepa-lynx-image-upload", inputs: { group: "group", field: "field", projectID: "projectID", label: "label", errorLabel: "errorLabel", image: "image", showValidation: "showValidation", required: "required", accept: "accept", imageBlobUrl: "imageBlobUrl" }, outputs: { onImageUpload: "onImageUpload", onImageRemove: "onImageRemove", onImageDownload: "onImageDownload" }, ngImport: i0, template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!imageBlobUrl\">\n <label class=\"btn btn-primary btn-file\">\n Browse…\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n <span> Click the button on the left to upload an image from your computer.</span>\n </div>\n <div *ngIf=\"imageBlobUrl\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n </div>\n <br/>\n <div class=\"col-sm-12\">\n <label>{{image.userFilename}}</label>\n </div>\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Image</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
111
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LynxImageUploadComponent, selector: "oepa-lynx-image-upload", inputs: { group: "group", field: "field", projectID: "projectID", label: "label", errorLabel: "errorLabel", image: "image", showValidation: "showValidation", required: "required", accept: "accept", imageBlobUrl: "imageBlobUrl" }, outputs: { onImageUpload: "onImageUpload", onImageRemove: "onImageRemove", onImageDownload: "onImageDownload" }, ngImport: i0, template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!imageBlobUrl\">\n <label class=\"btn btn-primary btn-file\">\n Browse…\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n <span> Click the button on the left to upload an image from your computer.</span>\n </div>\n <div *ngIf=\"imageBlobUrl\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n </div>\n <br/>\n <div class=\"col-sm-12\">\n <label>{{image.userFilename}}</label>\n </div>\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\" aria-label=\"Remove Image\">Remove Image</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
112
112
|
}
|
|
113
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LynxImageUploadComponent, decorators: [{
|
|
114
114
|
type: Component,
|
|
115
|
-
args: [{ selector: 'oepa-lynx-image-upload', template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!imageBlobUrl\">\n <label class=\"btn btn-primary btn-file\">\n Browse…\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n <span> Click the button on the left to upload an image from your computer.</span>\n </div>\n <div *ngIf=\"imageBlobUrl\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n </div>\n <br/>\n <div class=\"col-sm-12\">\n <label>{{image.userFilename}}</label>\n </div>\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Image</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>" }]
|
|
115
|
+
args: [{ selector: 'oepa-lynx-image-upload', template: "<form [formGroup]=\"group\">\n <div *ngIf=\"!imageBlobUrl\">\n <label class=\"btn btn-primary btn-file\">\n Browse…\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n <span> Click the button on the left to upload an image from your computer.</span>\n </div>\n <div *ngIf=\"imageBlobUrl\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n </div>\n <br/>\n <div class=\"col-sm-12\">\n <label>{{image.userFilename}}</label>\n </div>\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\" aria-label=\"Remove Image\">Remove Image</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>" }]
|
|
116
116
|
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }, { type: i2.BsModalService }, { type: i1.OepaFileUtilService }], propDecorators: { group: [{
|
|
117
117
|
type: Input
|
|
118
118
|
}], field: [{
|
|
@@ -140,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
140
140
|
}], onImageDownload: [{
|
|
141
141
|
type: Output
|
|
142
142
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHlueC1pbWFnZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9seW54LWltYWdlLXVwbG9hZC9seW54LWltYWdlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2x5bngtaW1hZ2UtdXBsb2FkL2x5bngtaW1hZ2UtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQVFoRyxNQUFNLE9BQU8sd0JBQXdCO0lBb0JmO0lBQ1Y7SUFDQTtJQXJCVixXQUFXLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBRWpCLEtBQUssQ0FBYTtJQUNsQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQUEsQ0FBQztJQUNwQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQUEsQ0FBQztJQUN4QixLQUFLLEdBQVcsaUJBQWlCLENBQUM7SUFDbEMsVUFBVSxHQUFXLFVBQVUsQ0FBQztJQUNoQyxLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUFBLENBQUM7SUFDckIsWUFBWSxHQUFnQyxJQUFJLENBQUM7SUFFaEQsYUFBYSxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUNqRixhQUFhLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO0lBQ2pG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VSxHQUFHLGNBQWMsQ0FBQztRQUMzQyxLQUFLLENBQUMsT0FBUSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDOUYsS0FBSyxDQUFDLE9BQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxPQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNyQyxLQUFLLENBQUMsT0FBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FwR1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IscVpDZHJDLHE3Q0EyQk87OzRGRGJNLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx3QkFBd0I7MEpBU3pCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuaW1wb3J0IHsgTHlueEF0dGFjaG1lbnQgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2VwYUZpbGVVdGlsU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtbHlueC1pbWFnZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbHlueC1pbWFnZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9seW54LWltYWdlLXVwbG9hZC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTHlueEltYWdlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHsgIFxuICBjb21wb25lbnRJZCA9ICdMeW54SW1hZ2VVcGxvYWRDb21wb25lbnQnO1xuICBmb3JtRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgXG4gIEBJbnB1dCgpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nID0gJyc7O1xuICBASW5wdXQoKSBwcm9qZWN0SUQ6IHN0cmluZyA9ICcnOztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdVcGxvYWQgYW4gaW1hZ2UnO1xuICBASW5wdXQoKSBlcnJvckxhYmVsOiBzdHJpbmcgPSAnQW4gaW1hZ2UnO1xuICBASW5wdXQoKSBpbWFnZTogTHlueEF0dGFjaG1lbnQgPSB7fTtcbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSB0cnVlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcnOztcbiAgQElucHV0KCkgaW1hZ2VCbG9iVXJsOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBvbkltYWdlVXBsb2FkOiBFdmVudEVtaXR0ZXI8THlueEF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4oKTtcbiAgQE91dHB1dCgpIG9uSW1hZ2VSZW1vdmU6IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEx5bnhBdHRhY2htZW50PigpO1xuICBAT3V0cHV0KCkgb25JbWFnZURvd25sb2FkOiBFdmVudEVtaXR0ZXI8THlueEF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlVXRpbDogT2VwYUZpbGVVdGlsU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgKz0gKHRoaXMuY29tcG9uZW50SWQubGVuZ3RoID4gMCA/ICdfJyA6ICcnKSArIHRoaXMuZmllbGQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmltYWdlICYmIHRoaXMuaW1hZ2UuaWQpIHtcbiAgICAgIHRoaXMuZG93bmxvYWRJbWFnZSh0aGlzLmltYWdlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgaWYgKGZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBmaWxlTGlzdFswXTtcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlQ2FuQmVBY2NlcHRlZChmaWxlKSkge1xuICAgICAgICB0aGlzLmZpbGVVdGlsLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKChhdHRhY2htZW50OiBMeW54QXR0YWNobWVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoYXR0YWNobWVudC51c2VyRmlsZW5hbWUpO1xuICAgICAgICAgIHRoaXMub25JbWFnZVVwbG9hZC5lbWl0KGF0dGFjaG1lbnQpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0Vycm9yIHVwbG9hZGluZyBmaWxlICcgKyBlcnIgfHwgJyc7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQ2Fubm90IGFjY2VwdCB0aGlzIHR5cGUgb2YgZmlsZS4gUGxlYXNlIHVwbG9hZCBhIGZpbGUgb2YgdHlwZTogJyArIHRoaXMuYWNjZXB0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBmaWxlVHlwZUNhbkJlQWNjZXB0ZWQoZmlsZTphbnkpOiBib29sZWFuIHtcbiAgICBsZXQgb2sgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLmZpbGVVdGlsLm1pbWVUeXBlRm9yRmlsZShmaWxlLm5hbWUpO1xuICAgICAgaWYgKHRoaXMuYWNjZXB0LmluZGV4T2YobWltZVR5cGUpIDwgMCkge1xuICAgICAgICBvayA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2s7XG4gIH1cbiAgXG4gIGRvd25sb2FkSW1hZ2UoaW1hZ2U6IEx5bnhBdHRhY2htZW50KSB7XG4gICAgaWYgKCFpbWFnZS5zeXN0ZW1GaWxlbmFtZSB8fCBpbWFnZS5zeXN0ZW1GaWxlbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMub25JbWFnZURvd25sb2FkLmVtaXQoaW1hZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVVdGlsLmRvd25sb2FkQXR0YWNobWVudChpbWFnZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZG9jID0+IHtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZSA9IHRoaXMuZmlsZVV0aWwubWltZVR5cGVGb3JGaWxlKGltYWdlLnVzZXJGaWxlbmFtZSB8fCAnJyk7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkb2NdLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICAgICAgICAgIHRoaXMuY3JlYXRlSW1hZ2VGcm9tQmxvYihibG9iKTtcbiAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRXJyb3IgZG93bmxvYWRpbmcgZmlsZTogJyArIGltYWdlLnVzZXJGaWxlbmFtZSArICc6ICcgKyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVJbWFnZUZyb21CbG9iKGltYWdlOiBCbG9iKSB7XG4gICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VCbG9iVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICB9LCBmYWxzZSk7XG4gICAgaWYgKGltYWdlKSB7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpbWFnZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW1hZ2UoKSB7ICAgIFxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgY29uc3QgbW9kYWw6IEJzTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCB7IGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5oZWFkZXJUZXh0ID0gJ1JlbW92ZSBJbWFnZSc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5ib2R5VGV4dCA9ICdEbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIGltYWdlOiAnICsgdGhpcy5pbWFnZS51c2VyRmlsZW5hbWUgKyAnPyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jb25maXJtQnRuTGFiZWwgPSAnWWVzJztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmNhbmNlbEJ0bkxhYmVsID0gJ05vJztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmNvbmZpcm1DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uSW1hZ2VSZW1vdmUuZW1pdCh0aGlzLmltYWdlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxkaXYgKm5nSWY9XCIhaW1hZ2VCbG9iVXJsXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQnJvd3NlJmhlbGxpcDtcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfQnJvd3NlQnRuJ1wiIFtuYW1lXT1cImNvbXBvbmVudElkKydfQnJvd3NlQnRuJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ID8gYWNjZXB0IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdESVNBQkxFRCdcIj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c3Bhbj4mbmJzcDtDbGljayB0aGUgYnV0dG9uIG9uIHRoZSBsZWZ0IHRvIHVwbG9hZCBhbiBpbWFnZSBmcm9tIHlvdXIgY29tcHV0ZXIuPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpbWFnZUJsb2JVcmxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUJsb2JVcmxcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19JbWFnZSdcIiB3aWR0aD1cIjIwMFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbD57e2ltYWdlLnVzZXJGaWxlbmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2lkXT1cImNvbXBvbmVudElkKydfUmVtb3ZlSW1hZ2VCdG4nXCIgW25hbWVdPVwiY29tcG9uZW50SWQrJ19SZW1vdmVJbWFnZUJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoKVwiIFtkaXNhYmxlZF09XCJncm91cC5jb250cm9sc1tmaWVsZF0uc3RhdHVzID09PSAnRElTQUJMRUQnXCI+UmVtb3ZlIEltYWdlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+e3tlcnJvck1lc3NhZ2V9fTwvZGl2PlxuPC9mb3JtPiJdfQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHlueC1pbWFnZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9seW54LWltYWdlLXVwbG9hZC9seW54LWltYWdlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2x5bngtaW1hZ2UtdXBsb2FkL2x5bngtaW1hZ2UtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQVFoRyxNQUFNLE9BQU8sd0JBQXdCO0lBb0JmO0lBQ1Y7SUFDQTtJQXJCVixXQUFXLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBRWpCLEtBQUssQ0FBYTtJQUNsQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQUEsQ0FBQztJQUNwQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQUEsQ0FBQztJQUN4QixLQUFLLEdBQVcsaUJBQWlCLENBQUM7SUFDbEMsVUFBVSxHQUFXLFVBQVUsQ0FBQztJQUNoQyxLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUFBLENBQUM7SUFDckIsWUFBWSxHQUFnQyxJQUFJLENBQUM7SUFFaEQsYUFBYSxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUNqRixhQUFhLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO0lBQ2pG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VSxHQUFHLGNBQWMsQ0FBQztRQUMzQyxLQUFLLENBQUMsT0FBUSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDOUYsS0FBSyxDQUFDLE9BQVEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxPQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNyQyxLQUFLLENBQUMsT0FBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FwR1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IscVpDZHJDLGk5Q0EyQk87OzRGRGJNLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx3QkFBd0I7MEpBU3pCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuaW1wb3J0IHsgTHlueEF0dGFjaG1lbnQgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2VwYUZpbGVVdGlsU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtbHlueC1pbWFnZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbHlueC1pbWFnZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9seW54LWltYWdlLXVwbG9hZC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTHlueEltYWdlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHsgIFxuICBjb21wb25lbnRJZCA9ICdMeW54SW1hZ2VVcGxvYWRDb21wb25lbnQnO1xuICBmb3JtRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgXG4gIEBJbnB1dCgpIGdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBmaWVsZDogc3RyaW5nID0gJyc7O1xuICBASW5wdXQoKSBwcm9qZWN0SUQ6IHN0cmluZyA9ICcnOztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdVcGxvYWQgYW4gaW1hZ2UnO1xuICBASW5wdXQoKSBlcnJvckxhYmVsOiBzdHJpbmcgPSAnQW4gaW1hZ2UnO1xuICBASW5wdXQoKSBpbWFnZTogTHlueEF0dGFjaG1lbnQgPSB7fTtcbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSB0cnVlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcnOztcbiAgQElucHV0KCkgaW1hZ2VCbG9iVXJsOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBvbkltYWdlVXBsb2FkOiBFdmVudEVtaXR0ZXI8THlueEF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4oKTtcbiAgQE91dHB1dCgpIG9uSW1hZ2VSZW1vdmU6IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEx5bnhBdHRhY2htZW50PigpO1xuICBAT3V0cHV0KCkgb25JbWFnZURvd25sb2FkOiBFdmVudEVtaXR0ZXI8THlueEF0dGFjaG1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMeW54QXR0YWNobWVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlVXRpbDogT2VwYUZpbGVVdGlsU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgKz0gKHRoaXMuY29tcG9uZW50SWQubGVuZ3RoID4gMCA/ICdfJyA6ICcnKSArIHRoaXMuZmllbGQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmltYWdlICYmIHRoaXMuaW1hZ2UuaWQpIHtcbiAgICAgIHRoaXMuZG93bmxvYWRJbWFnZSh0aGlzLmltYWdlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgaWYgKGZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBmaWxlTGlzdFswXTtcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlQ2FuQmVBY2NlcHRlZChmaWxlKSkge1xuICAgICAgICB0aGlzLmZpbGVVdGlsLnVwbG9hZEZpbGUoZmlsZSkuc3Vic2NyaWJlKChhdHRhY2htZW50OiBMeW54QXR0YWNobWVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0uc2V0VmFsdWUoYXR0YWNobWVudC51c2VyRmlsZW5hbWUpO1xuICAgICAgICAgIHRoaXMub25JbWFnZVVwbG9hZC5lbWl0KGF0dGFjaG1lbnQpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0Vycm9yIHVwbG9hZGluZyBmaWxlICcgKyBlcnIgfHwgJyc7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQ2Fubm90IGFjY2VwdCB0aGlzIHR5cGUgb2YgZmlsZS4gUGxlYXNlIHVwbG9hZCBhIGZpbGUgb2YgdHlwZTogJyArIHRoaXMuYWNjZXB0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBmaWxlVHlwZUNhbkJlQWNjZXB0ZWQoZmlsZTphbnkpOiBib29sZWFuIHtcbiAgICBsZXQgb2sgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLmZpbGVVdGlsLm1pbWVUeXBlRm9yRmlsZShmaWxlLm5hbWUpO1xuICAgICAgaWYgKHRoaXMuYWNjZXB0LmluZGV4T2YobWltZVR5cGUpIDwgMCkge1xuICAgICAgICBvayA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2s7XG4gIH1cbiAgXG4gIGRvd25sb2FkSW1hZ2UoaW1hZ2U6IEx5bnhBdHRhY2htZW50KSB7XG4gICAgaWYgKCFpbWFnZS5zeXN0ZW1GaWxlbmFtZSB8fCBpbWFnZS5zeXN0ZW1GaWxlbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMub25JbWFnZURvd25sb2FkLmVtaXQoaW1hZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVVdGlsLmRvd25sb2FkQXR0YWNobWVudChpbWFnZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZG9jID0+IHtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZSA9IHRoaXMuZmlsZVV0aWwubWltZVR5cGVGb3JGaWxlKGltYWdlLnVzZXJGaWxlbmFtZSB8fCAnJyk7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtkb2NdLCB7IHR5cGU6IG1pbWVUeXBlIH0pO1xuICAgICAgICAgIHRoaXMuY3JlYXRlSW1hZ2VGcm9tQmxvYihibG9iKTtcbiAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRXJyb3IgZG93bmxvYWRpbmcgZmlsZTogJyArIGltYWdlLnVzZXJGaWxlbmFtZSArICc6ICcgKyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVJbWFnZUZyb21CbG9iKGltYWdlOiBCbG9iKSB7XG4gICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VCbG9iVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICB9LCBmYWxzZSk7XG4gICAgaWYgKGltYWdlKSB7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpbWFnZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW1hZ2UoKSB7ICAgIFxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgY29uc3QgbW9kYWw6IEJzTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCB7IGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5oZWFkZXJUZXh0ID0gJ1JlbW92ZSBJbWFnZSc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5ib2R5VGV4dCA9ICdEbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIGltYWdlOiAnICsgdGhpcy5pbWFnZS51c2VyRmlsZW5hbWUgKyAnPyc7XG4gICAgKDxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD5tb2RhbC5jb250ZW50KS5jb25maXJtQnRuTGFiZWwgPSAnWWVzJztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmNhbmNlbEJ0bkxhYmVsID0gJ05vJztcbiAgICAoPENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50Pm1vZGFsLmNvbnRlbnQpLmNvbmZpcm1DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uSW1hZ2VSZW1vdmUuZW1pdCh0aGlzLmltYWdlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxkaXYgKm5nSWY9XCIhaW1hZ2VCbG9iVXJsXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQnJvd3NlJmhlbGxpcDtcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZSgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfQnJvd3NlQnRuJ1wiIFtuYW1lXT1cImNvbXBvbmVudElkKydfQnJvd3NlQnRuJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ID8gYWNjZXB0IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5zdGF0dXMgPT09ICdESVNBQkxFRCdcIj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c3Bhbj4mbmJzcDtDbGljayB0aGUgYnV0dG9uIG9uIHRoZSBsZWZ0IHRvIHVwbG9hZCBhbiBpbWFnZSBmcm9tIHlvdXIgY29tcHV0ZXIuPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpbWFnZUJsb2JVcmxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUJsb2JVcmxcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19JbWFnZSdcIiB3aWR0aD1cIjIwMFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbD57e2ltYWdlLnVzZXJGaWxlbmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2lkXT1cImNvbXBvbmVudElkKydfUmVtb3ZlSW1hZ2VCdG4nXCIgW25hbWVdPVwiY29tcG9uZW50SWQrJ19SZW1vdmVJbWFnZUJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoKVwiIFtkaXNhYmxlZF09XCJncm91cC5jb250cm9sc1tmaWVsZF0uc3RhdHVzID09PSAnRElTQUJMRUQnXCIgYXJpYS1sYWJlbD1cIlJlbW92ZSBJbWFnZVwiPlJlbW92ZSBJbWFnZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPnt7ZXJyb3JNZXNzYWdlfX08L2Rpdj5cbjwvZm9ybT4iXX0=
|