@csmart/ngc-smart-victim 1.13.9 → 1.13.10
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2020/lib/caseNote/caseNote.component.mjs +26 -17
- package/esm2020/lib/common-dialog/common-dialog.component.mjs +4 -4
- package/esm2020/lib/common-dialog/common-dialog.module.mjs +5 -5
- package/esm2020/lib/common-dialog/common-dialog.service.mjs +4 -4
- package/esm2020/lib/contact/contact.component.mjs +4 -4
- package/esm2020/lib/email.services.mjs +42 -0
- package/esm2020/lib/intake.service.mjs +4 -4
- package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +4 -4
- package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +4 -4
- package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +4 -4
- package/esm2020/lib/shared/app.shared.module.mjs +5 -5
- package/esm2020/lib/shared/directives/phone-mask.directive.mjs +4 -4
- package/esm2020/lib/smart-victim-delete-confirm.component.mjs +4 -4
- package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +4 -4
- package/esm2020/lib/smart-victim.component.mjs +5 -5
- package/esm2020/lib/smart-victim.module.mjs +5 -5
- package/esm2020/lib/smart-victim.service.mjs +4 -4
- package/esm2020/lib/victim-routing.module.mjs +7 -6
- package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +4 -4
- package/fesm2015/csmart-ngc-smart-victim.mjs +109 -63
- package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -1
- package/fesm2020/csmart-ngc-smart-victim.mjs +109 -63
- package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -1
- package/lib/caseNote/caseNote.component.d.ts +3 -1
- package/lib/email.services.d.ts +11 -0
- package/package.json +1 -1
@@ -331,10 +331,10 @@ export class VictimSafetyPlanDetailComponent {
|
|
331
331
|
this.router.navigate(['saftyPlan', this.victimId]);
|
332
332
|
}
|
333
333
|
}
|
334
|
-
/** @nocollapse */ /** @nocollapse */ VictimSafetyPlanDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
335
|
-
/** @nocollapse */ /** @nocollapse */ VictimSafetyPlanDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: VictimSafetyPlanDetailComponent, selector: "ng-component", providers: [CommonDialogService], ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n \r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-toolbar color=\"primary\">\r\n <h4 class=\"card-header\" style=\"display: inline-block;\">Safety Plan</h4>\r\n </mat-toolbar>\r\n \r\n \r\n <div class='container'>\r\n <form [formGroup]=\"spForm\" #spDetailForm=\"ngForm\" >\r\n \r\n \r\n <div class=\"row\" ><b>Victim Name:</b> {{victimName}} </div>\r\n \r\n\r\n <div class=\"row\" > \r\n <mat-form-field >\r\n <mat-label>Goal:</mat-label>\r\n <input matInput formControlName=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" >\r\n </mat-form-field>\r\n \r\n </div>\r\n \r\n <div class=\"row\"> \r\n <mat-form-field>\r\n <mat-label>Goal Status:</mat-label>\r\n <mat-select formControlName=\"goalStatus\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" >\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n \r\n \r\n <div class=\"row\"> \r\n \r\n <mat-form-field>\r\n <mat-label>Goal Status Date:</mat-label>\r\n <input matInput \r\n formControlName=\"goalStatusDate\" \r\n [matDatepicker]=\"goalStatusDate\" \r\n placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" \r\n (click)=\"goalStatusDate.open()\" \r\n >\r\n \r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </mat-form-field> \r\n\r\n\r\n <div class=\"help-block\" \r\n *ngIf=\"spForm.get('goalStatusDate').hasError('date') \r\n && (spForm.get('goalStatusDate').dirty || spForm.get('goalStatusDate').touched)\">\r\n <mat-error>Future Date is <strong>not allowed</strong> for goal status date</mat-error>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row\" > \r\n <!-- <mat-form-field style=\"width: 200px;\"> -->\r\n <!-- <mat-label>Comment:</mat-label> \r\n <textarea mdInput \r\n class=\"textarea-content\"\r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n formControlName=\"comment\" \r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\"\r\n >\r\n </textarea> -->\r\n <!-- </mat-form-field> -->\r\n\r\n\r\n\r\n <mat-form-field style=\"width: 400px;\">\r\n <mat-label>Comment:</mat-label>\r\n <textarea \r\n class=\"textarea-content\"\r\n matInput \r\n placeholder=\"\" \r\n formControlName=\"comment\" \r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\">\r\n </textarea> \r\n\r\n \r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </form>\r\n </div><!--end form-->\r\n \r\n \r\n <br>\r\n\r\n <div class=\"row\"><b>Need and provider:</b><br> (click on a check box to select provider information)\r\n \r\n <mat-list>\r\n <mat-list-item *ngFor=\"let serviceType of victimServiceTypes; let i=index\" >\r\n <mat-checkbox class=\"example-margin\" name=\"victimService\" color =\"primary\" [checked]=\"evaluateSelection(serviceType.victimServiceTypeId)\" (change)=\"isInArray(serviceType.victimServiceTypeId,serviceType.name, $event);\" > {{serviceType.name}}</mat-checkbox>\r\n <div> </div>\r\n <div *ngFor=\"let provider of providerListCollection; let pi = index\" >\r\n <!-- <div *ngIf=\"provider.isDisplay && serviceType.victimServiceTypeId == provider.groupId \" class=\"Row\">\r\n \r\n <div class=\"serviceSelect\"> -->\r\n <!-- <mat-form-field> -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(ngModel)]=\"providerId\" > -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(value)]=\"providerId\" > \r\n <mat-option *ngFor=\" let providerOption of provider.collection\" [value]=\"providerOption.victimProgramProviderId\" >{{providerOption.victimProgramProvider}}</mat-option>\r\n </mat-select> -->\r\n <!-- </mat-form-field> -->\r\n \r\n <!-- </div>\r\n\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"savePlanProvider(serviceType.victimServiceTypeId ,providerId)\">Add Provider</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div *ngFor=\" let serviceprovider of editSafetyPlan.vVictimServiceDetails\" >\r\n \r\n <div *ngIf=\"serviceType.victimServiceTypeId===serviceprovider.victimServiceTypeId\" class=\"Row\" >\r\n <!-- . {{ serviceprovider.victimProgramProvider}}<button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> <br> -->\r\n <div class=\"serviceSelect\" >\r\n . {{ serviceprovider.victimProgramProvider}}\r\n </div>\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </mat-list-item> \r\n \r\n </mat-list>\r\n </div>\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Victim Name:</b> {{victimName}} </div>\r\n <div class='col-md-7'> \r\n \r\n </div> \r\n </div> -->\r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-form-field >\r\n <input matInput name=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" required placeholder=\"\">\r\n </mat-form-field>\r\n </div> \r\n </div>\r\n\r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-select name=\"goalStatus\" [style.width]=\"'50%'\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" required>\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select>\r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status Date:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <input matInput name=\"goalStatusDate\" [matDatepicker]=\"goalStatusDate\" placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Comment:</b></div>\r\n <div class='col-md-7'> \r\n <textarea mdInput placeholder=\"\" rows=\"10\" cols=\"50\" name=\"comment\" [(ngModel)]=\"editSafetyPlan.comment\"></textarea> \r\n </div> \r\n </div> -->\r\n\r\n \r\n <div class='row' >\r\n <div class='col-md-12 text-center'>\r\n <!-- <button type=\"button\" class=\"btn btn-default btn-small\" (click)=\"print()\">Print</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"saveSafetyPlan()\" [disabled]=\"!spForm.valid\">Save</button>\r\n <!-- <button mat-raised-button color=\"primary\" (click)=\"commondialogRef.close()\">Cancel</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n </div> \r\n </div> \r\n\r\n <!--status hisotry-->\r\n \r\n <mat-table #table [dataSource]=\"victimServiceStatusHistoriesDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"startDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Start Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.startDate | date}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"victimServiceStatusId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Status</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimServiceStatusId}} </mat-cell>\r\n </ng-container>\r\n \r\n \r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment}} </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"[ 'startDate', 'victimServiceStatusId', 'comment']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:[ 'startDate', 'victimServiceStatusId', 'comment'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n\r\n \r\n \r\n\r\n</mat-card-content>\r\n</mat-card>", styles: ["div.serviceSelect{width:500px}div.serviceButton{width:20%}.container{margin:16px;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;grid-auto-rows:minmax(50px,auto);justify-items:stretch}.app-class .mat-list-item{height:auto}.textarea-content{width:500px}\n"], components: [{ type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i8.MatCardHeader, selector: "mat-card-header" }, { type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i11.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i12.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i13.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i13.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i14.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i14.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i15.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i16.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i17.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i17.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i17.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.MatLabel, selector: "mat-label" }, { type: i18.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i10.MatSuffix, selector: "[matSuffix]" }, { type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }, { type: i20.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i17.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i17.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i17.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i17.MatCellDef, selector: "[matCellDef]" }, { type: i17.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i17.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i17.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "date": i19.DatePipe } });
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
334
|
+
/** @nocollapse */ /** @nocollapse */ VictimSafetyPlanDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: VictimSafetyPlanDetailComponent, deps: [{ token: i1.MatDialog }, { token: i2.NgcSmartVictimService }, { token: i3.HttpClient }, { token: i4.MatSnackBar }, { token: i5.ActivatedRoute }, { token: i5.Router }, { token: i6.CommonDialogService }, { token: i7.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
335
|
+
/** @nocollapse */ /** @nocollapse */ VictimSafetyPlanDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: VictimSafetyPlanDetailComponent, selector: "ng-component", providers: [CommonDialogService], ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n \r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-toolbar color=\"primary\">\r\n <h4 class=\"card-header\" style=\"display: inline-block;\">Safety Plan</h4>\r\n </mat-toolbar>\r\n \r\n \r\n <div class='container'>\r\n <form [formGroup]=\"spForm\" #spDetailForm=\"ngForm\" >\r\n \r\n \r\n <div class=\"row\" ><b>Victim Name:</b> {{victimName}} </div>\r\n \r\n\r\n <div class=\"row\" > \r\n <mat-form-field >\r\n <mat-label>Goal:</mat-label>\r\n <input matInput formControlName=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" >\r\n </mat-form-field>\r\n \r\n </div>\r\n \r\n <div class=\"row\"> \r\n <mat-form-field>\r\n <mat-label>Goal Status:</mat-label>\r\n <mat-select formControlName=\"goalStatus\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" >\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n \r\n \r\n <div class=\"row\"> \r\n \r\n <mat-form-field>\r\n <mat-label>Goal Status Date:</mat-label>\r\n <input matInput \r\n formControlName=\"goalStatusDate\" \r\n [matDatepicker]=\"goalStatusDate\" \r\n placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" \r\n (click)=\"goalStatusDate.open()\" \r\n >\r\n \r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </mat-form-field> \r\n\r\n\r\n <div class=\"help-block\" \r\n *ngIf=\"spForm.get('goalStatusDate').hasError('date') \r\n && (spForm.get('goalStatusDate').dirty || spForm.get('goalStatusDate').touched)\">\r\n <mat-error>Future Date is <strong>not allowed</strong> for goal status date</mat-error>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row\" > \r\n <!-- <mat-form-field style=\"width: 200px;\"> -->\r\n <!-- <mat-label>Comment:</mat-label> \r\n <textarea mdInput \r\n class=\"textarea-content\"\r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n formControlName=\"comment\" \r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\"\r\n >\r\n </textarea> -->\r\n <!-- </mat-form-field> -->\r\n\r\n\r\n\r\n <mat-form-field style=\"width: 400px;\">\r\n <mat-label>Comment:</mat-label>\r\n <textarea \r\n class=\"textarea-content\"\r\n matInput \r\n placeholder=\"\" \r\n formControlName=\"comment\" \r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\">\r\n </textarea> \r\n\r\n \r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </form>\r\n </div><!--end form-->\r\n \r\n \r\n <br>\r\n\r\n <div class=\"row\"><b>Need and provider:</b><br> (click on a check box to select provider information)\r\n \r\n <mat-list>\r\n <mat-list-item *ngFor=\"let serviceType of victimServiceTypes; let i=index\" >\r\n <mat-checkbox class=\"example-margin\" name=\"victimService\" color =\"primary\" [checked]=\"evaluateSelection(serviceType.victimServiceTypeId)\" (change)=\"isInArray(serviceType.victimServiceTypeId,serviceType.name, $event);\" > {{serviceType.name}}</mat-checkbox>\r\n <div> </div>\r\n <div *ngFor=\"let provider of providerListCollection; let pi = index\" >\r\n <!-- <div *ngIf=\"provider.isDisplay && serviceType.victimServiceTypeId == provider.groupId \" class=\"Row\">\r\n \r\n <div class=\"serviceSelect\"> -->\r\n <!-- <mat-form-field> -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(ngModel)]=\"providerId\" > -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(value)]=\"providerId\" > \r\n <mat-option *ngFor=\" let providerOption of provider.collection\" [value]=\"providerOption.victimProgramProviderId\" >{{providerOption.victimProgramProvider}}</mat-option>\r\n </mat-select> -->\r\n <!-- </mat-form-field> -->\r\n \r\n <!-- </div>\r\n\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"savePlanProvider(serviceType.victimServiceTypeId ,providerId)\">Add Provider</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div *ngFor=\" let serviceprovider of editSafetyPlan.vVictimServiceDetails\" >\r\n \r\n <div *ngIf=\"serviceType.victimServiceTypeId===serviceprovider.victimServiceTypeId\" class=\"Row\" >\r\n <!-- . {{ serviceprovider.victimProgramProvider}}<button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> <br> -->\r\n <div class=\"serviceSelect\" >\r\n . {{ serviceprovider.victimProgramProvider}}\r\n </div>\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </mat-list-item> \r\n \r\n </mat-list>\r\n </div>\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Victim Name:</b> {{victimName}} </div>\r\n <div class='col-md-7'> \r\n \r\n </div> \r\n </div> -->\r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-form-field >\r\n <input matInput name=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" required placeholder=\"\">\r\n </mat-form-field>\r\n </div> \r\n </div>\r\n\r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-select name=\"goalStatus\" [style.width]=\"'50%'\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" required>\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select>\r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status Date:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <input matInput name=\"goalStatusDate\" [matDatepicker]=\"goalStatusDate\" placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Comment:</b></div>\r\n <div class='col-md-7'> \r\n <textarea mdInput placeholder=\"\" rows=\"10\" cols=\"50\" name=\"comment\" [(ngModel)]=\"editSafetyPlan.comment\"></textarea> \r\n </div> \r\n </div> -->\r\n\r\n \r\n <div class='row' >\r\n <div class='col-md-12 text-center'>\r\n <!-- <button type=\"button\" class=\"btn btn-default btn-small\" (click)=\"print()\">Print</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"saveSafetyPlan()\" [disabled]=\"!spForm.valid\">Save</button>\r\n <!-- <button mat-raised-button color=\"primary\" (click)=\"commondialogRef.close()\">Cancel</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n </div> \r\n </div> \r\n\r\n <!--status hisotry-->\r\n \r\n <mat-table #table [dataSource]=\"victimServiceStatusHistoriesDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"startDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Start Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.startDate | date}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"victimServiceStatusId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Status</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimServiceStatusId}} </mat-cell>\r\n </ng-container>\r\n \r\n \r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment}} </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"[ 'startDate', 'victimServiceStatusId', 'comment']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:[ 'startDate', 'victimServiceStatusId', 'comment'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n\r\n \r\n \r\n\r\n</mat-card-content>\r\n</mat-card>", styles: ["div.serviceSelect{width:500px}div.serviceButton{width:20%}.container{margin:16px;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;grid-auto-rows:minmax(50px,auto);justify-items:stretch}.app-class .mat-list-item{height:auto}.textarea-content{width:500px}\n"], components: [{ type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i8.MatCardHeader, selector: "mat-card-header" }, { type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i11.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i12.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i13.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i13.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i14.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i14.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i15.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i16.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i17.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i17.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i17.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.MatLabel, selector: "mat-label" }, { type: i18.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i10.MatSuffix, selector: "[matSuffix]" }, { type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }, { type: i20.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i17.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i17.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i17.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i17.MatCellDef, selector: "[matCellDef]" }, { type: i17.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i17.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i17.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "date": i19.DatePipe } });
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: VictimSafetyPlanDetailComponent, decorators: [{
|
337
337
|
type: Component,
|
338
338
|
args: [{ providers: [CommonDialogService], template: "<mat-card>\r\n <mat-card-header>\r\n \r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-toolbar color=\"primary\">\r\n <h4 class=\"card-header\" style=\"display: inline-block;\">Safety Plan</h4>\r\n </mat-toolbar>\r\n \r\n \r\n <div class='container'>\r\n <form [formGroup]=\"spForm\" #spDetailForm=\"ngForm\" >\r\n \r\n \r\n <div class=\"row\" ><b>Victim Name:</b> {{victimName}} </div>\r\n \r\n\r\n <div class=\"row\" > \r\n <mat-form-field >\r\n <mat-label>Goal:</mat-label>\r\n <input matInput formControlName=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" >\r\n </mat-form-field>\r\n \r\n </div>\r\n \r\n <div class=\"row\"> \r\n <mat-form-field>\r\n <mat-label>Goal Status:</mat-label>\r\n <mat-select formControlName=\"goalStatus\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" >\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n \r\n \r\n <div class=\"row\"> \r\n \r\n <mat-form-field>\r\n <mat-label>Goal Status Date:</mat-label>\r\n <input matInput \r\n formControlName=\"goalStatusDate\" \r\n [matDatepicker]=\"goalStatusDate\" \r\n placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" \r\n (click)=\"goalStatusDate.open()\" \r\n >\r\n \r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </mat-form-field> \r\n\r\n\r\n <div class=\"help-block\" \r\n *ngIf=\"spForm.get('goalStatusDate').hasError('date') \r\n && (spForm.get('goalStatusDate').dirty || spForm.get('goalStatusDate').touched)\">\r\n <mat-error>Future Date is <strong>not allowed</strong> for goal status date</mat-error>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row\" > \r\n <!-- <mat-form-field style=\"width: 200px;\"> -->\r\n <!-- <mat-label>Comment:</mat-label> \r\n <textarea mdInput \r\n class=\"textarea-content\"\r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n formControlName=\"comment\" \r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\"\r\n >\r\n </textarea> -->\r\n <!-- </mat-form-field> -->\r\n\r\n\r\n\r\n <mat-form-field style=\"width: 400px;\">\r\n <mat-label>Comment:</mat-label>\r\n <textarea \r\n class=\"textarea-content\"\r\n matInput \r\n placeholder=\"\" \r\n formControlName=\"comment\" \r\n [(ngModel)]=\"editSafetyPlan.comment\"\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"8\"\r\n cdkAutosizeMaxRows=\"12\">\r\n </textarea> \r\n\r\n \r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </form>\r\n </div><!--end form-->\r\n \r\n \r\n <br>\r\n\r\n <div class=\"row\"><b>Need and provider:</b><br> (click on a check box to select provider information)\r\n \r\n <mat-list>\r\n <mat-list-item *ngFor=\"let serviceType of victimServiceTypes; let i=index\" >\r\n <mat-checkbox class=\"example-margin\" name=\"victimService\" color =\"primary\" [checked]=\"evaluateSelection(serviceType.victimServiceTypeId)\" (change)=\"isInArray(serviceType.victimServiceTypeId,serviceType.name, $event);\" > {{serviceType.name}}</mat-checkbox>\r\n <div> </div>\r\n <div *ngFor=\"let provider of providerListCollection; let pi = index\" >\r\n <!-- <div *ngIf=\"provider.isDisplay && serviceType.victimServiceTypeId == provider.groupId \" class=\"Row\">\r\n \r\n <div class=\"serviceSelect\"> -->\r\n <!-- <mat-form-field> -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(ngModel)]=\"providerId\" > -->\r\n <!-- <mat-select name=\"provider\" id=\"provider.groupId\" [(value)]=\"providerId\" > \r\n <mat-option *ngFor=\" let providerOption of provider.collection\" [value]=\"providerOption.victimProgramProviderId\" >{{providerOption.victimProgramProvider}}</mat-option>\r\n </mat-select> -->\r\n <!-- </mat-form-field> -->\r\n \r\n <!-- </div>\r\n\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"savePlanProvider(serviceType.victimServiceTypeId ,providerId)\">Add Provider</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div *ngFor=\" let serviceprovider of editSafetyPlan.vVictimServiceDetails\" >\r\n \r\n <div *ngIf=\"serviceType.victimServiceTypeId===serviceprovider.victimServiceTypeId\" class=\"Row\" >\r\n <!-- . {{ serviceprovider.victimProgramProvider}}<button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> <br> -->\r\n <div class=\"serviceSelect\" >\r\n . {{ serviceprovider.victimProgramProvider}}\r\n </div>\r\n <div class=\"serviceButton\">\r\n <button mat-raised-button color=\"primary\" (click)=\"deleteProvider(serviceprovider.victimServiceDetailId)\">Delete</button> \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </mat-list-item> \r\n \r\n </mat-list>\r\n </div>\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Victim Name:</b> {{victimName}} </div>\r\n <div class='col-md-7'> \r\n \r\n </div> \r\n </div> -->\r\n <!-- <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-form-field >\r\n <input matInput name=\"serviceGoal\" [(ngModel)]=\"editSafetyPlan.goal\" required placeholder=\"\">\r\n </mat-form-field>\r\n </div> \r\n </div>\r\n\r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <mat-select name=\"goalStatus\" [style.width]=\"'50%'\" [(ngModel)]=\"editSafetyPlan.victimServiceStatusId\" required>\r\n <mat-option *ngFor=\" let victimServiceStatu of victimServiceStatus\" [value]=\"victimServiceStatu.victimServiceStatusId\" >{{victimServiceStatu.name}}</mat-option>\r\n </mat-select>\r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Goal Status Date:<font color=\"red\">*</font></b></div>\r\n <div class='col-md-7'> \r\n <input matInput name=\"goalStatusDate\" [matDatepicker]=\"goalStatusDate\" placeholder=\"Choose a date\" [(ngModel)]=\"editSafetyPlan.startDate\" required>\r\n <mat-datepicker-toggle matSuffix [for]=\"goalStatusDate\"></mat-datepicker-toggle>\r\n <mat-datepicker #goalStatusDate></mat-datepicker> \r\n </div> \r\n </div>\r\n \r\n <div class='row' >\r\n <div class='col-md-5 desc-label'><b>Comment:</b></div>\r\n <div class='col-md-7'> \r\n <textarea mdInput placeholder=\"\" rows=\"10\" cols=\"50\" name=\"comment\" [(ngModel)]=\"editSafetyPlan.comment\"></textarea> \r\n </div> \r\n </div> -->\r\n\r\n \r\n <div class='row' >\r\n <div class='col-md-12 text-center'>\r\n <!-- <button type=\"button\" class=\"btn btn-default btn-small\" (click)=\"print()\">Print</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"saveSafetyPlan()\" [disabled]=\"!spForm.valid\">Save</button>\r\n <!-- <button mat-raised-button color=\"primary\" (click)=\"commondialogRef.close()\">Cancel</button> -->\r\n <button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n </div> \r\n </div> \r\n\r\n <!--status hisotry-->\r\n \r\n <mat-table #table [dataSource]=\"victimServiceStatusHistoriesDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"startDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Start Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.startDate | date}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"victimServiceStatusId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Status</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimServiceStatusId}} </mat-cell>\r\n </ng-container>\r\n \r\n \r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment}} </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"[ 'startDate', 'victimServiceStatusId', 'comment']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:[ 'startDate', 'victimServiceStatusId', 'comment'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n\r\n \r\n \r\n\r\n</mat-card-content>\r\n</mat-card>", styles: ["div.serviceSelect{width:500px}div.serviceButton{width:20%}.container{margin:16px;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;grid-auto-rows:minmax(50px,auto);justify-items:stretch}.app-class .mat-list-item{height:auto}.textarea-content{width:500px}\n"] }]
|
339
339
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.NgcSmartVictimService }, { type: i3.HttpClient }, { type: i4.MatSnackBar }, { type: i5.ActivatedRoute }, { type: i5.Router }, { type: i6.CommonDialogService }, { type: i7.FormBuilder }]; } });
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmljdGltU2FmZXR5UGxhbkRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc2FmZXR5UGxhbi92aWN0aW1TYWZldHlQbGFuRGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nYy1zbWFydC12aWN0aW0vc3JjL2xpYi9zYWZldHlQbGFuL3ZpY3RpbVNhZmV0eVBsYW5EZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUE7QUFFaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTywrQkFBK0I7SUFrQzFDLFlBQ1MsTUFBaUIsRUFDaEIsd0JBQStDLEVBQy9DLElB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LFFBQVEsQ0FBRSxDQUFDLENBQUM7WUFFNUYsQ0FBQyxDQUNWLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOztrS0E5Y1UsK0JBQStCO3NKQUEvQiwrQkFBK0IsdUNBTC9CLENBQUMsbUJBQW1CLENBQUMsMEJDcEJsQyxrbGlCQXlPVzsyRkRoTkUsK0JBQStCO2tCQVAzQyxTQUFTO2dDQUVHLENBQUMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdjU21hcnRWaWN0aW1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtdmljdGltLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtQnVpbGRlcixWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWaWN0aW1TYWZldHlQbGFuLFZpY3RpbVNlcnZpY2VEZXRhaWwsXHJcbiAgVmljdGltU2VydmljZVN0YXR1c0hpc3RvcnksVmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJNb2RlbCxcclxuICBQcm92aWRlckxpc3RDb2xsZWN0aW9uTW9kZWwgfSBmcm9tICcuLi9zbWFydC12aWN0aW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21tb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uL2NvbW1vbi1kaWFsb2cvY29tbW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNlbGVjdGVkT2ZmZW5kZXIsIExvZ2luU3RhZmYgfSBmcm9tICdAY3NtYXJ0L25nYy1zbWFydC1jb3JlJztcclxuaW1wb3J0IHsgZGF0ZVZhbGlkYXRvciwgcGFzc0RhdGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zaGFyZWQvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IFNlcml2ZVByb3ZpZGVyQ29tcG9uZW50fSBmcm9tICcuLi9zYWZldHlQbGFuL3NlcnZpY2VQcm92aWRlci5jb21wb25lbnQnXHJcbmltcG9ydCB7IFByb3ZpZGVyc0RpYWxvZ0RhdGF9IGZyb20gJy4uL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpY3RpbVNhZmV0eVBsYW5EZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW0NvbW1vbkRpYWxvZ1NlcnZpY2VdLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpY3RpbVNhZmV0eVBsYW4uY29tcG9uZW50LmNzcyddXHJcbiBcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaWN0aW1TYWZldHlQbGFuRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIGhpZGRlbkFkZE5ld0ZsYWc6IGJvb2xlYW47XHJcbiAgc2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICBzYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuO1xyXG4gIGVkaXRTYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuID0gPFZpY3RpbVNhZmV0eVBsYW4+e307XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29udGFjdFR5cGVzOiBhbnlbXTtcclxuICBjb250YWN0UHVycG9zZXM6IGFueVtdO1xyXG4gIHZpY3RpbVNlcnZpY2VUeXBlczogYW55W107XHJcbiAgdmljdGltU2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICB2aWN0aW1TZXJ2aWNlU3RhdHVzOiBhbnlbXTtcclxuICBwcm92aWRlckxpc3Q6IFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXTtcclxuICBwcm92aWRlckxpc3RDb2xsZWN0aW9uOlByb3ZpZGVyTGlzdENvbGxlY3Rpb25Nb2RlbFtdPVtdO1xyXG4gIHZpY3RpbVNlcnZpY2VEZXRhaWw6IFZpY3RpbVNlcnZpY2VEZXRhaWxbXTtcclxuICBpbmR4OmFueTtcclxuICBzZXJ2aWNlQ2hlY2sgPSBbXTtcclxuICB2aWN0aW1OYW1lOiBzdHJpbmc7XHJcbiAgaXNEaXNwbGF5OiBib29sZWFuO1xyXG4gIHN0YWZmSWQ6IG51bWJlcjtcclxuICB2aWN0aW1JZDogbnVtYmVyO1xyXG4gIHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyO1xyXG4gIG9mZmVuZGVySWQ6IG51bWJlcjtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIHByaXZhdGUgc3ViOiBhbnk7XHJcbiAgcmVzdWx0OiBhbnk7XHJcbiAgdmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2U9IG5ldyAgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcbiAgcHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkOiBzdHJpbmc7XHJcblxyXG5cclxuICBzcEZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudDogTmdjU21hcnRWaWN0aW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY29tbW9uRGlhbG9nU2VydmljZTogQ29tbW9uRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgIFxyXG4gICkge1xyXG5cclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcclxuXHJcblx0XHJcblx0XHRcdHRoaXMuc3BGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgc2VydmljZUdvYWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcdFx0ICBdKSksXHJcbiAgICAgICAgICBnb2FsU3RhdHVzOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcdFx0ICBdKSksXHJcbiAgICAgICAgICBnb2FsU3RhdHVzRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLGRhdGVWYWxpZGF0b3IoKVx0XHQgIF0pKSxcclxuICAgICAgICAgIGNvbW1lbnQ6IG5ldyBGb3JtQ29udHJvbCgnJyxWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zcEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgdGhpcy5zcEZvcm0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgXHJcblxyXG4gICAgdmFyIGRhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE7XHJcbiAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLnN0YWZmSWQgPSAgdGhpcy5sb2dpblN0YWZmLnN0YWZmSWQ7XHJcblxyXG4gICAgdGhpcy5zdWIgPSB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlSWQgPSBwYXJhbXNbJ3ZpY3RpbVNlcnZpY2VJZCddO1xyXG4gICAgICB0aGlzLnZpY3RpbUlkID0gcGFyYW1zWyd2aWN0aW1JZCddO1xyXG4gXHJcbiAgICB9KTtcclxuICAgXHJcbiAgICB0aGlzLmhpZGRlbkFkZE5ld0ZsYWcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEaXNwbGF5ID0gZmFsc2U7XHJcbiAgIFxyXG4gXHJcblxyXG4gICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFZpY3RpbVNlcnZpY2VUeXBlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2VUeXBlcyA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFZpY3RpbVNlcnZpY2VTdGF0dXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlU3RhdHVzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuZ2V0VmljdGltKHRoaXMudmljdGltSWQpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbU5hbWUgPSBpdGVtcy5maXJzdE5hbWUgKyAnLCAnICsgaXRlbXMubGFzdE5hbWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gXHJcbiAgICAgXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS1ncmFwaFFMLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgLy8gdGhpcy5nZXRWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcnMoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy8gdGhpcy5wcm92aWRlckxpc3QgPSByZXN1bHQ7XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aWN0aW1TZXJ2aWNlSWQnKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy52aWN0aW1TZXJ2aWNlSWQpO1xyXG4gICAgIFxyXG4gICAgaWYgKHRoaXMudmljdGltU2VydmljZUlkIT0wKXtcclxuICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuZ2V0VmljdGltU2VydmljZXModGhpcy52aWN0aW1TZXJ2aWNlSWQpLnN1YnNjcmliZShcclxuICAgICAgICB2aWN0aW1TYWZldHlQbGFucyA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndmljdGltU2FmZXR5UGxhbnMnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHZpY3RpbVNhZmV0eVBsYW5zKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmVkaXRTYWZldHlQbGFuID0gdmljdGltU2FmZXR5UGxhbnNbMF07XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUlkID0gIHZpY3RpbVNhZmV0eVBsYW5zWzBdLnZpY3RpbUlkO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZWRpdFNhZmV0eVBsYW4nKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZWRpdFNhZmV0eVBsYW4pO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuZWRpdFNhZmV0eVBsYW4uZ29hbCcpO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0U2FmZXR5UGxhbi5nb2FsKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmVkaXRTYWZldHlQbGFuWzBdLmdvYWwnKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZWRpdFNhZmV0eVBsYW5bMF0uZ29hbCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModGhpcy52aWN0aW1TZXJ2aWNlSWQpLnN1YnNjcmliZShcclxuICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzID0+IHtcclxuICAgICAgICAvLyB0aGlzLnZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMgPSB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzO1xyXG4gICAgICAgIHRoaXMudmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2UuZGF0YSA9IHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRQcm92aWRlcigpO1xyXG4gXHJcbiAgfVxyXG4gIC8vcGFzcyBpbiBpZFxyXG5pc0luQXJyYXkocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleTpzdHJpbmcsIHNlcnZpY2VUeXBlTmFtZTogc3RyaW5nLCBldmVudCl7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ3Byb3ZpZGVyTGlzdENvbGxlY3Rpb25LZXknKTtcclxuICAgIGNvbnNvbGUubG9nKHByb3ZpZGVyTGlzdENvbGxlY3Rpb25LZXkpO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZygnc2VydmljZVR5cGVOYW1lJyk7XHJcbiAgICBjb25zb2xlLmxvZyhzZXJ2aWNlVHlwZU5hbWUpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdldmVudC5zb3VyY2UudmFsdWUnKTtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50LmNoZWNrZWQpO1xyXG5cclxuICAgIGlmIChldmVudC5jaGVja2VkID09IHRydWUpe1xyXG5cclxuICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb24ubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgaWYocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleT09dGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmdyb3VwSWQpe1xyXG4gICAgICAgICAgdGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmlzRGlzcGxheT0hdGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmlzRGlzcGxheTtcclxuXHJcbiAgICAgXHJcblxyXG4gICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNlcml2ZVByb3ZpZGVyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgICAgIGRhdGE6IDxQcm92aWRlcnNEaWFsb2dEYXRhPntcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHNlcnZpY2VUeXBlOnNlcnZpY2VUeXBlTmFtZSxcclxuICAgICAgICAgICBzZXJ2aWNlVHlwZUlkOiBwcm92aWRlckxpc3RDb2xsZWN0aW9uS2V5LFxyXG4gICAgICAgICAgIHByb3ZpZGVyQ29sbGVjdGlvbnM6IFsuLi50aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb25dLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdmb3JtRmllbGRXaWR0aDQ4MCcsXHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1RoZSBkaWFsb2cgd2FzIGNsb3NlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1RoZSBkaWFsb2cgd2FzIGNsb3NlZCwgaW5zaWRlIHJlc3VsdCcpO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVQbGFuUHJvdmlkZXIocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleSxyZXN1bHQudm90ZWVQcm92aWRlcklkKTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAgICAvLyByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfS8vaWYgZXZlbnQuY2hlY2tlZCA9PSB0cnVlXHJcbiAgICAgLy90aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NhZnR5UGxhbkRldGFpbCcsIHRoaXMudmljdGltU2VydmljZUlkLCAgdGhpcy52aWN0aW1JZCBdKTsgXHJcbiAgICAgIFxyXG4gIH1cclxuXHJcbmxvYWRQcm92aWRlcigpeyBcclxuXHJcbiB0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb249W107XHJcbiAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXR2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKClcclxuICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAocHJvdmlkZXJMaXN0OlZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXSApPT57IFxyXG4gICAgICAgIGlmKHByb3ZpZGVyTGlzdCl7XHJcbiAgIFxyXG4gICAgICAgICAgbGV0IHByb3ZpZGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgICBmb3IobGV0IGk9MDtpPHByb3ZpZGVyTGlzdC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICghcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXSkge1xyXG4gICAgICAgICAgICAgIHByb3ZpZGVyc1twcm92aWRlckxpc3RbaV0udmljdGltU2VydmljZVR5cGVJZF0gPSBbXTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmICggdGhpcy5lZGl0U2FmZXR5UGxhbi52VmljdGltU2VydmljZURldGFpbHMgIT0gbnVsbCApe1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0aGlzLmVkaXRTYWZldHlQbGFuLnZWaWN0aW1TZXJ2aWNlRGV0YWlscy5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgICAgICBpZiAoIHByb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkID09IHRoaXMuZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzW2pdLnZpY3RpbVNlcnZpY2VJZC50b1N0cmluZygpICl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNwbGF5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb24ucHVzaCh7IGdyb3VwSWQ6IHByb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkLGlzRGlzcGxheTp0aGlzLmlzRGlzcGxheSwgY29sbGVjdGlvbjogcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXS5wdXNoKHByb3ZpZGVyTGlzdFtpXSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG4vLy0tLS0tLS0tLS0tLS0tLWdyYXBoUUwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyAgIGdldFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycygpOiBPYnNlcnZhYmxlPFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXT4ge1xyXG4vLyAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbi8vICAgICAgICAge1xyXG4vLyAgICAgICAgICAgZmluZFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycyB7XHJcbi8vICAgICAgICAgICAgICAgICBkYXRhIHtcclxuLy8gICAgICAgICAgICAgICAgICAgdmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJJZFxyXG4vLyAgICAgICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlVHlwZVxyXG4vLyAgICAgICAgICAgICAgICAgICB2aWN0aW1Qcm9ncmFtUHJvdmlkZXJcclxuLy8gICAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfWA7XHJcbiBcclxuLy8gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGVudmlyb25tZW50LnNtYXJ0QXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4vLyAgICAgICAgIC5tYXAocmVzdWx0ID0+IHtcclxuLy8gICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuZmluZFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycy5kYXRhO1xyXG4vLyAgICAgfSk7XHJcbi8vIH1cclxuXHJcbiAgZXZhbHVhdGVTZWxlY3Rpb24odmljdGltU2VydmljZVR5cGVJZDogc3RyaW5nKSB7XHJcbiAgIGlmICh0aGlzLmVkaXRTYWZldHlQbGFuLnZWaWN0aW1TZXJ2aWNlRGV0YWlscykge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzLmZpbmRJbmRleChyID0+IHIudmljdGltU2VydmljZVR5cGVJZCA9PT0gdmljdGltU2VydmljZVR5cGVJZCkgPj0gMDtcclxuICAgfVxyXG4gIH1cclxuXHJcblxyXG5zYXZlUGxhblByb3ZpZGVyKHZpY3RpbVNlcnZpY2VUeXBlSWQ6IHN0cmluZyx2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZDogc3RyaW5nKXtcclxuXHJcbiAgY29uc29sZS5sb2coJ3NhdmVQbGFuUHJvdmlkZXInKTtcclxuICBjb25zb2xlLmxvZyh2aWN0aW1TZXJ2aWNlVHlwZUlkKTtcclxuICBjb25zb2xlLmxvZyh2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZCk7XHJcblxyXG4gIGlmICh2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZCA9PT0gXCJcIiB8fCB2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZD09PSBudWxsIHx8IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkID09PSB1bmRlZmluZWQpe1xyXG4gIFxyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2UgcGljayBhIHByb2dyYW0gb24gdGhlIGRyb3AgZG93biBsaXN0ICEnLCAnJywgeyBkdXJhdGlvbjogMTIwLH0pO1xyXG4gICAvLyBhbGVydCgnUGxlYXNlIHBpY2sgYSBwcm9ncmFtIG9uIHRoZSBkcm9wIGRvd24gbGlzdCAhJyk7XHJcblxyXG4gIH1lbHNlXHJcbiAge1xyXG4gICAgXHJcbiAgaWYgKCB0aGlzLnZpY3RpbVNlcnZpY2VJZCA9PSAwKXtcclxuICAgLy9pbnNlcnRcclxuICAgY29uc29sZS5sb2coJ2luc2VydCBuZXcgcGxhbicpO1xyXG4gICBjb25zdCBzYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuID0ge1xyXG4gICAgdmljdGltSWQ6dGhpcy52aWN0aW1JZCxcclxuICAgIGZ1bGxOYW1lOiBudWxsLFxyXG4gICAgdmljdGltU2VydmljZUlkOiAwLFxyXG4gICAgZ29hbDp0aGlzLmVkaXRTYWZldHlQbGFuLmdvYWwsXHJcbiAgICBjb21tZW50OiB0aGlzLmVkaXRTYWZldHlQbGFuLmNvbW1lbnQsXHJcbiAgICBtb2RpZmllZEJ5OnRoaXMuc3RhZmZJZCxcclxuICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNJZDogbnVsbCxcclxuICAgIHN0YXR1czogbnVsbCxcclxuICAgIHN0YXJ0RGF0ZTogbnVsbCxcclxuICAgIHZWaWN0aW1TZXJ2aWNlRGV0YWlsczogbnVsbCxcclxuICAgIHZpY3RpbU5hbWU6IG51bGxcclxufTtcclxudGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuYWRkU2FmZXR5UGxhbihzYWZldHlQbGFuKS5zdWJzY3JpYmUoXHJcbiAgKGl0bXM6YW55KT0+e1xyXG4gICAgY29uc3QgdmljdGltU2VydmljZVN0YXR1czogVmljdGltU2VydmljZVN0YXR1c0hpc3Rvcnk9IHtcclxuICAgICAgdmljdGltU2VydmljZVN0YXR1c0hpc3RvcnlJZDowLFxyXG4gICAgICB2aWN0aW1TZXJ2aWNlSWQ6IGl0bXMudmljdGltU2VydmljZUlkLFxyXG4gICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkICxcclxuICAgICAgc3RhcnREYXRlOiB0aGlzLmVkaXRTYWZldHlQbGFuLnN0YXJ0RGF0ZSxcclxuICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgIGNvbW1lbnQ6J3Rlc3QgYWRkIHNhZmV0eSBwbGFuJ1xyXG4gICAgICB9O1xyXG5cclxuICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1cykuc3Vic2NyaWJlKFxyXG4gXHJcbiAgICAgICgpID0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGVjayBpdG1zLnZpY3RpbVNlcnZpY2VJZCBpbmlzaWRlIGFkZCB2aWN0aW0gc2VyaXZlIHN0YXR1cycpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGl0bXMudmljdGltU2VydmljZUlkKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmljdGltU2VydmljZURldGFpbDogVmljdGltU2VydmljZURldGFpbCA9IHtcclxuICAgICAgICAgIHZpY3RpbVNlcnZpY2VJZDogaXRtcy52aWN0aW1TZXJ2aWNlSWQsXHJcbiAgICAgICAgICB2aWN0aW1TZXJ2aWNlRGV0YWlsSWQ6IDAsXHJcbiAgICAgICAgICB2aWN0aW1TZXJ2aWNlVHlwZUlkOiB2aWN0aW1TZXJ2aWNlVHlwZUlkLFxyXG4gICAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLFxyXG4gICAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVyOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdhZGQgcGxhbiBwcm92aWRlciBoZXJlIGF0IGluc2VydCcpO1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuYWRkUGxhblByb3ZpZGVyKHZpY3RpbVNlcnZpY2VEZXRhaWwpLnN1YnNjcmliZShcclxuXHJcbiAgICAgICAgICAoKSA9PntcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzYWZ0eVBsYW5EZXRhaWwnLCAgaXRtcy52aWN0aW1TZXJ2aWNlSWQsICB0aGlzLnZpY3RpbUlkIF0pOyBcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgKTtcclxuICAgXHJcbiAgXHJcbiAgXHJcbiAgfVxyXG5cclxuXHJcbik7XHJcbiAgfVxyXG4gIGVsc2UvL3VwZGF0ZVxyXG4gICAge1xyXG4gICAgICBjb25zdCB2aWN0aW1TZXJ2aWNlRGV0YWlsOiBWaWN0aW1TZXJ2aWNlRGV0YWlsID0ge1xyXG4gICAgICAgIHZpY3RpbVNlcnZpY2VJZDogdGhpcy52aWN0aW1TZXJ2aWNlSWQsXHJcbiAgICAgICAgdmljdGltU2VydmljZURldGFpbElkOiAwLFxyXG4gICAgICAgIHZpY3RpbVNlcnZpY2VUeXBlSWQ6IHZpY3RpbVNlcnZpY2VUeXBlSWQsXHJcbiAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLFxyXG4gICAgICAgIG1vZGlmaWVkQnk6IHRoaXMuc3RhZmZJZCxcclxuICAgICAgICB2aWN0aW1Qcm9ncmFtUHJvdmlkZXI6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgY29uc29sZS5sb2coJ2FkZCBwbGFuIHByb3ZpZGVyIGhlcmUgYXQgdXBkYXRlJyk7XHJcbiAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFBsYW5Qcm92aWRlcih2aWN0aW1TZXJ2aWNlRGV0YWlsKS5zdWJzY3JpYmUoXHJcblxyXG4gICAgICAgICgpID0+e1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NhZnR5UGxhbkRldGFpbCcsICB0aGlzLnZpY3RpbVNlcnZpY2VJZCwgIHRoaXMudmljdGltSWQgXSk7IFxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcbiAgZGVsZXRlUHJvdmlkZXIodmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHN0cmluZyl7XHJcblxyXG4gICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAuY29uZmlybSgnJywgJ0RvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByb3ZpZGVyPycsICdZZXMnLCAnTm8nKVxyXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge3RoaXMucmVzdWx0ID0gIHJlcztcclxuICAgICAgICBpZiAodGhpcy5yZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLCB0aGlzLnN0YWZmSWQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignZGVsZXRlIHByb3ZpZGVyIFN1Y2Nlc3NmdWxseSAhJywgJycsIHtcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgIH0pO1xyXG4gXHJcbiAgICAvLyBsb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcbiAgfVxyXG5zYXZlU2FmZXR5UGxhbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZUlkID09PSB1bmRlZmluZWQgKSB7XHJcblxyXG4gICAgICAgICAgY29uc3Qgc2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbiA9IHtcclxuICAgICAgICAgICAgdmljdGltSWQ6IHRoaXMudmljdGltSWQsXHJcbiAgICAgICAgICAgIGZ1bGxOYW1lOiBudWxsLFxyXG4gICAgICAgICAgICB2aWN0aW1TZXJ2aWNlSWQ6IDAsXHJcbiAgICAgICAgICAgIGdvYWw6dGhpcy5lZGl0U2FmZXR5UGxhbi5nb2FsLFxyXG4gICAgICAgICAgICBjb21tZW50OiB0aGlzLmVkaXRTYWZldHlQbGFuLmNvbW1lbnQsXHJcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6dGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IG51bGwsXHJcbiAgICAgICAgICAgIHN0YXR1czogbnVsbCxcclxuICAgICAgICAgICAgc3RhcnREYXRlOiBudWxsLFxyXG4gICAgICAgICAgICB2VmljdGltU2VydmljZURldGFpbHM6IG51bGwsXHJcbiAgICAgICAgICAgIHZpY3RpbU5hbWU6IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFNhZmV0eVBsYW4oc2FmZXR5UGxhbikuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGl0bXM6YW55KT0+e1xyXG4gICAgICAgICAgICBjb25zdCB2aWN0aW1TZXJ2aWNlU3RhdHVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeT0ge1xyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5SWQ6MCxcclxuICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlSWQ6IGl0bXMudmljdGltU2VydmljZUlkLFxyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNJZDogdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlU3RhdHVzSWQgLFxyXG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5lZGl0U2FmZXR5UGxhbi5zdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgICAgICAgICAgY29tbWVudDondGVzdCBhZGQgc2FmZXR5IFBsYW4nXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1cykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHJlc3A9PntcclxuICAgICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignSW5zZXJ0IHN0YXR1cyBzdWNjZXNzZnVsbHkhJywgJycsIHtcclxuICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc2FmdHlQbGFuRGV0YWlsJywgIGl0bXMudmljdGltU2VydmljZUlkLCAgdGhpcy52aWN0aW1JZCBdKTsgXHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5lZGl0U2FmZXR5UGxhbi5tb2RpZmllZEJ5PXRoaXMubG9naW5TdGFmZi5zdGFmZklkO1xyXG4gICAgICB0aGlzLmVkaXRTYWZldHlQbGFuLm1vZGlmaWVkQnkgPXRoaXMuc3RhZmZJZDtcclxuICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQudXBkYXRlU2FmZXR5UGxhbih0aGlzLmVkaXRTYWZldHlQbGFuKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzcD0+e1xyXG4gICAgICAgICAgICAvLyAgdGhpcy5zbmFja0Jhci5vcGVuKCd1cGRhdGUgU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICAgIC8vICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgICAgLy8gICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHZpY3RpbVNlcnZpY2VTdGF0dXM6IFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5PSB7XHJcbiAgICAgICAgICAgICAgdmljdGltU2VydmljZVN0YXR1c0hpc3RvcnlJZDowLFxyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VJZDogdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlSWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkICxcclxuICAgICAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZWRpdFNhZmV0eVBsYW4uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIG1vZGlmaWVkQnk6dGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgICAgIGNvbW1lbnQ6J3Rlc3QgdXBkYXRlIHNhZmV0eSBQbGFuJ1xyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5hZGRWaWN0aW1TZXJ2aWNlU3RhdHVzKHZpY3RpbVNlcnZpY2VTdGF0dXMpLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzYWZ0eVBsYW5EZXRhaWwnLCAgdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlSWQsICB0aGlzLnZpY3RpbUlkIF0pOyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIGJhY2soKXtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUlkJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUlkKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc2FmdHlQbGFuJywgdGhpcy52aWN0aW1JZF0pOyBcclxuICB9XHJcbiBcclxuXHJcbn1cclxuXHJcbiIsIjxtYXQtY2FyZD5cclxuICAgICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC10b29sYmFyICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5TYWZldHkgUGxhbjwvaDQ+XHJcbiAgICAgICAgPC9tYXQtdG9vbGJhcj5cclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb250YWluZXInPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3BGb3JtXCIgI3NwRGV0YWlsRm9ybT1cIm5nRm9ybVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgPjxiPlZpY3RpbSBOYW1lOjwvYj4ge3t2aWN0aW1OYW1lfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkdvYWw6PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VHb2FsXCIgWyhuZ01vZGVsKV09XCJlZGl0U2FmZXR5UGxhbi5nb2FsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkdvYWwgU3RhdHVzOjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0ICBmb3JtQ29udHJvbE5hbWU9XCJnb2FsU3RhdHVzXCIgIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cIiBsZXQgdmljdGltU2VydmljZVN0YXR1IG9mIHZpY3RpbVNlcnZpY2VTdGF0dXNcIiBbdmFsdWVdPVwidmljdGltU2VydmljZVN0YXR1LnZpY3RpbVNlcnZpY2VTdGF0dXNJZFwiID57e3ZpY3RpbVNlcnZpY2VTdGF0dS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Hb2FsIFN0YXR1cyBEYXRlOjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImdvYWxTdGF0dXNEYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImdvYWxTdGF0dXNEYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2hvb3NlIGEgZGF0ZVwiIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4uc3RhcnREYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb2FsU3RhdHVzRGF0ZS5vcGVuKClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJnb2FsU3RhdHVzRGF0ZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2dvYWxTdGF0dXNEYXRlPjwvbWF0LWRhdGVwaWNrZXI+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxwLWJsb2NrXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3BGb3JtLmdldCgnZ29hbFN0YXR1c0RhdGUnKS5oYXNFcnJvcignZGF0ZScpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3BGb3JtLmdldCgnZ29hbFN0YXR1c0RhdGUnKS5kaXJ0eSB8fCBzcEZvcm0uZ2V0KCdnb2FsU3RhdHVzRGF0ZScpLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+RnV0dXJlIERhdGUgaXMgPHN0cm9uZz5ub3QgYWxsb3dlZDwvc3Ryb25nPiBmb3IgZ29hbCBzdGF0dXMgZGF0ZTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsPkNvbW1lbnQ6PC9tYXQtbGFiZWw+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtZElucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRhcmVhLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmNvbW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT4gICAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L21hdC1mb3JtLWZpZWxkPiAtLT5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDQwMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q29tbWVudDo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYS1jb250ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbW1lbnRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmNvbW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCIxMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwhLS1lbmQgZm9ybS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj48Yj5OZWVkIGFuZCBwcm92aWRlcjo8L2I+PGJyPiAoY2xpY2sgb24gYSBjaGVjayBib3ggdG8gc2VsZWN0IHByb3ZpZGVyIGluZm9ybWF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBzZXJ2aWNlVHlwZSBvZiB2aWN0aW1TZXJ2aWNlVHlwZXM7IGxldCBpPWluZGV4XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJleGFtcGxlLW1hcmdpblwiIG5hbWU9XCJ2aWN0aW1TZXJ2aWNlXCIgIGNvbG9yID1cInByaW1hcnlcIiBbY2hlY2tlZF09XCJldmFsdWF0ZVNlbGVjdGlvbihzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkKVwiICAoY2hhbmdlKT1cImlzSW5BcnJheShzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkLHNlcnZpY2VUeXBlLm5hbWUsICRldmVudCk7XCIgPiB7e3NlcnZpY2VUeXBlLm5hbWV9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+ICZuYnNwOyZuYnNwOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlckxpc3RDb2xsZWN0aW9uOyBsZXQgcGkgPSBpbmRleFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJwcm92aWRlci5pc0Rpc3BsYXkgJiYgc2VydmljZVR5cGUudmljdGltU2VydmljZVR5cGVJZCA9PSBwcm92aWRlci5ncm91cElkIFwiIGNsYXNzPVwiUm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlU2VsZWN0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1zZWxlY3QgIG5hbWU9XCJwcm92aWRlclwiIGlkPVwicHJvdmlkZXIuZ3JvdXBJZFwiIFsobmdNb2RlbCldPVwicHJvdmlkZXJJZFwiID4gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LXNlbGVjdCAgbmFtZT1cInByb3ZpZGVyXCIgaWQ9XCJwcm92aWRlci5ncm91cElkXCIgWyh2YWx1ZSldPVwicHJvdmlkZXJJZFwiID4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cIiBsZXQgcHJvdmlkZXJPcHRpb24gb2YgcHJvdmlkZXIuY29sbGVjdGlvblwiIFt2YWx1ZV09XCJwcm92aWRlck9wdGlvbi52aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZFwiID57e3Byb3ZpZGVyT3B0aW9uLnZpY3RpbVByb2dyYW1Qcm92aWRlcn19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVQbGFuUHJvdmlkZXIoc2VydmljZVR5cGUudmljdGltU2VydmljZVR5cGVJZCAscHJvdmlkZXJJZClcIj5BZGQgUHJvdmlkZXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwiIGxldCBzZXJ2aWNlcHJvdmlkZXIgb2YgZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzXCIgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkPT09c2VydmljZXByb3ZpZGVyLnZpY3RpbVNlcnZpY2VUeXBlSWRcIiAgY2xhc3M9XCJSb3dcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAuIHt7IHNlcnZpY2Vwcm92aWRlci52aWN0aW1Qcm9ncmFtUHJvdmlkZXJ9fTxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImRlbGV0ZVByb3ZpZGVyKHNlcnZpY2Vwcm92aWRlci52aWN0aW1TZXJ2aWNlRGV0YWlsSWQpXCI+RGVsZXRlPC9idXR0b24+IDxicj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2VTZWxlY3RcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiB7eyBzZXJ2aWNlcHJvdmlkZXIudmljdGltUHJvZ3JhbVByb3ZpZGVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VydmljZUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZGVsZXRlUHJvdmlkZXIoc2VydmljZXByb3ZpZGVyLnZpY3RpbVNlcnZpY2VEZXRhaWxJZClcIj5EZWxldGU8L2J1dHRvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz0ncm93JyA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTUgZGVzYy1sYWJlbCc+PGI+VmljdGltIE5hbWU6PC9iPiB7e3ZpY3RpbU5hbWV9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNyc+ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSdyb3cnID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNSBkZXNjLWxhYmVsJz48Yj5Hb2FsOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwic2VydmljZUdvYWxcIiBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmdvYWxcIiByZXF1aXJlZCBwbGFjZWhvbGRlcj1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3JvdycgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NvbC1tZC01IGRlc2MtbGFiZWwnPjxiPkdvYWwgU3RhdHVzOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0ICBuYW1lPVwiZ29hbFN0YXR1c1wiICBbc3R5bGUud2lkdGhdPVwiJzUwJSdcIiAgWyhuZ01vZGVsKV09XCJlZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlU3RhdHVzSWRcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwiIGxldCB2aWN0aW1TZXJ2aWNlU3RhdHUgb2YgdmljdGltU2VydmljZVN0YXR1c1wiIFt2YWx1ZV09XCJ2aWN0aW1TZXJ2aWNlU3RhdHUudmljdGltU2VydmljZVN0YXR1c0lkXCIgPnt7dmljdGltU2VydmljZVN0YXR1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdyb3cnID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNSBkZXNjLWxhYmVsJz48Yj5Hb2FsIFN0YXR1cyBEYXRlOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cImdvYWxTdGF0dXNEYXRlXCIgW21hdERhdGVwaWNrZXJdPVwiZ29hbFN0YXR1c0RhdGVcIiBwbGFjZWhvbGRlcj1cIkNob29zZSBhIGRhdGVcIiBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLnN0YXJ0RGF0ZVwiICByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZ29hbFN0YXR1c0RhdGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZ29hbFN0YXR1c0RhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ncm93JyA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTUgZGVzYy1sYWJlbCc+PGI+Q29tbWVudDo8L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWRJbnB1dCBwbGFjZWhvbGRlcj1cIlwiICByb3dzPVwiMTBcIiBjb2xzPVwiNTBcIiBuYW1lPVwiY29tbWVudFwiIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4uY29tbWVudFwiPjwvdGV4dGFyZWE+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3JvdycgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NvbC1tZC0xMiB0ZXh0LWNlbnRlcic+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21hbGxcIiAoY2xpY2spPVwicHJpbnQoKVwiPlByaW50PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVTYWZldHlQbGFuKClcIiBbZGlzYWJsZWRdPVwiIXNwRm9ybS52YWxpZFwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICZuYnNwOyZuYnNwOzxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIChjbGljayk9XCJjb21tb25kaWFsb2dSZWYuY2xvc2UoKVwiPkNhbmNlbDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDs8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiICAoY2xpY2spPVwiYmFjaygpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1zdGF0dXMgaGlzb3RyeS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC10YWJsZSAjdGFibGUgW2RhdGFTb3VyY2VdPVwidmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2VcIiBjbGFzcz1cImV4YW1wbGUtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiZXhhbXBsZS1oZWFkZXItY2VsbFwiPlN0YXJ0IERhdGU8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwiZXhhbXBsZS1jZWxsXCI+IHt7cm93LnN0YXJ0RGF0ZSB8IGRhdGV9fSA8L21hdC1jZWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ2aWN0aW1TZXJ2aWNlU3RhdHVzSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJleGFtcGxlLWhlYWRlci1jZWxsXCI+U3RhdHVzPC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJleGFtcGxlLWNlbGxcIj4ge3tyb3cudmljdGltU2VydmljZVN0YXR1c0lkfX0gPC9tYXQtY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImV4YW1wbGUtaGVhZGVyLWNlbGxcIj5Db21tZW50PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJleGFtcGxlLWNlbGxcIj4ge3tyb3cuY29tbWVudH19IDwvbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWyAnc3RhcnREYXRlJywgJ3ZpY3RpbVNlcnZpY2VTdGF0dXNJZCcsICdjb21tZW50J11cIiBjbGFzcz1cImV4YW1wbGUtaGVhZGVyLXJvd1wiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6WyAnc3RhcnREYXRlJywgJ3ZpY3RpbVNlcnZpY2VTdGF0dXNJZCcsICdjb21tZW50J107XCIgY2xhc3M9XCJleGFtcGxlLXJvd1wiPjwvbWF0LXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbjwvbWF0LWNhcmQtY29udGVudD5cclxuPC9tYXQtY2FyZD4iXX0=
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmljdGltU2FmZXR5UGxhbkRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc2FmZXR5UGxhbi92aWN0aW1TYWZldHlQbGFuRGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nYy1zbWFydC12aWN0aW0vc3JjL2xpYi9zYWZldHlQbGFuL3ZpY3RpbVNhZmV0eVBsYW5EZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUE7QUFFaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTywrQkFBK0I7SUFrQzFDLFlBQ1MsTUFBaUIsRUFDaEIsd0JBQStDLEVBQy9DLElBQWdCLEVBQ2pCLFFBQXFCLEVBQ3BCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDeEMsV0FBd0I7UUFQekIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXVCO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXBDbEMsbUJBQWMsR0FBdUMsRUFBRSxDQUFDO1FBUXhELDJCQUFzQixHQUErQixFQUFFLENBQUM7UUFHeEQsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFVbEIsMkNBQXNDLEdBQUUsSUFBSyxrQkFBa0IsRUFBRSxDQUFDO1FBbUJoRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLFFBQVE7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoQyxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsQ0FBQyxRQUFRO2FBQUssQ0FBQyxDQUFDO1lBQzFCLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDakQsVUFBVSxDQUFDLFFBQVE7YUFBSyxDQUFDLENBQUM7WUFDNUIsY0FBYyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUNyRCxVQUFVLENBQUMsUUFBUSxFQUFDLGFBQWEsRUFBRTthQUFLLENBQUMsQ0FBQztZQUM1QyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBRWhDLENBQUM7SUFFSCxRQUFRO1FBSU4sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBRXhDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBSXRCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsd0JBQXdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxTQUFTLENBQzlELENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzVELENBQUMsQ0FDRixDQUFDO1FBSUosOERBQThEO1FBQzFELG9FQUFvRTtRQUNwRSw4QkFBOEI7UUFDOUIsTUFBTTtRQUNOLHVDQUF1QztRQUN2QyxxQ0FBcUM7UUFFdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFFLENBQUMsRUFBQztZQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FDN0UsaUJBQWlCLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRS9CLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUUvQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNqQywyQ0FBMkM7Z0JBQzNDLHlDQUF5QztnQkFDekMsOENBQThDO2dCQUM5Qyw0Q0FBNEM7WUFFOUMsQ0FBQyxDQUNGLENBQUM7WUFFRixJQUFJLENBQUMsd0JBQXdCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FDckYsNEJBQTRCLENBQUMsRUFBRTtnQkFDL0Isb0VBQW9FO2dCQUNwRSxJQUFJLENBQUMsc0NBQXNDLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO1lBQ2hGLENBQUMsQ0FDRixDQUFDO1NBRUg7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEIsQ0FBQztJQUNELFlBQVk7SUFDZCxTQUFTLENBQUMseUJBQWdDLEVBQUUsZUFBdUIsRUFBRSxLQUFLO1FBRXRFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFHdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNCLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUM7WUFFeEIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7Z0JBQ25ELElBQUcseUJBQXlCLElBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBQztvQkFDbkUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBSXBGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO3dCQUMzRCxLQUFLLEVBQUUsT0FBTzt3QkFDZCxJQUFJLEVBQXVCOzRCQUUxQixXQUFXLEVBQUMsZUFBZTs0QkFDM0IsYUFBYSxFQUFFLHlCQUF5Qjs0QkFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzt5QkFDckQ7d0JBQ0QsVUFBVSxFQUFFLG1CQUFtQjtxQkFDaEMsQ0FBQyxDQUFDO29CQUlILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTt3QkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwQixJQUFJLE1BQU0sRUFBRTs0QkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7NEJBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7eUJBRXpFO29CQUdILENBQUMsQ0FBQyxDQUFDO29CQUVGLFVBQVU7aUJBQ1Y7YUFDRjtTQUVGLENBQUEsMEJBQTBCO1FBQzFCLG9GQUFvRjtJQUV2RixDQUFDO0lBRUgsWUFBWTtRQUVYLElBQUksQ0FBQyxzQkFBc0IsR0FBQyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHFDQUFxQyxFQUFFO2FBQ25FLFNBQVMsQ0FDVCxDQUFDLFlBQW9ELEVBQUUsRUFBRTtZQUN2RCxJQUFHLFlBQVksRUFBQztnQkFFZCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsWUFBWSxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztvQkFFcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRTt3QkFDbkQsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFFckQsSUFBSyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBRTs0QkFDdkQsS0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dDQUNwRSxJQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQ0FDbkgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUNBQ3ZCOzZCQUNGO3lCQUNGO3dCQUNDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUN6SztvQkFFRCxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUV0RTthQUdGO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBQ0gsOERBQThEO0lBQzlELGtHQUFrRztJQUNsRyw0QkFBNEI7SUFDNUIsWUFBWTtJQUNaLG9EQUFvRDtJQUNwRCx5QkFBeUI7SUFDekIsdURBQXVEO0lBQ3ZELHNDQUFzQztJQUN0QywwQ0FBMEM7SUFDMUMsb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQixjQUFjO0lBRWQsa0ZBQWtGO0lBQ2xGLDJCQUEyQjtJQUMzQix5RUFBeUU7SUFDekUsVUFBVTtJQUNWLElBQUk7SUFFRixpQkFBaUIsQ0FBQyxtQkFBMkI7UUFDNUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEtBQUssbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEg7SUFDRixDQUFDO0lBR0gsZ0JBQWdCLENBQUMsbUJBQTJCLEVBQUMsdUJBQStCO1FBRTFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXJDLElBQUksdUJBQXVCLEtBQUssRUFBRSxJQUFJLHVCQUF1QixLQUFJLElBQUksSUFBSSx1QkFBdUIsS0FBSyxTQUFTLEVBQUM7WUFFN0csSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsK0NBQStDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRSxDQUFDLENBQUM7WUFDNUYsMERBQTBEO1NBRTFEO2FBQ0Q7WUFFQSxJQUFLLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFDO2dCQUM5QixRQUFRO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxVQUFVLEdBQXFCO29CQUNwQyxRQUFRLEVBQUMsSUFBSSxDQUFDLFFBQVE7b0JBQ3RCLFFBQVEsRUFBRSxJQUFJO29CQUNkLGVBQWUsRUFBRSxDQUFDO29CQUNsQixJQUFJLEVBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJO29CQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO29CQUNwQyxVQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU87b0JBQ3ZCLHFCQUFxQixFQUFFLElBQUk7b0JBQzNCLE1BQU0sRUFBRSxJQUFJO29CQUNaLFNBQVMsRUFBRSxJQUFJO29CQUNmLHFCQUFxQixFQUFFLElBQUk7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQixDQUFDO2dCQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUMvRCxDQUFDLElBQVEsRUFBQyxFQUFFO29CQUNWLE1BQU0sbUJBQW1CLEdBQThCO3dCQUNyRCw0QkFBNEIsRUFBQyxDQUFDO3dCQUM5QixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7d0JBQ3JDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCO3dCQUNoRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUN4QyxVQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU87d0JBQ3ZCLE9BQU8sRUFBQyxzQkFBc0I7cUJBQzdCLENBQUM7b0JBRUosSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUVqRixHQUFHLEVBQUU7d0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO3dCQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFFbEMsTUFBTSxtQkFBbUIsR0FBd0I7NEJBQy9DLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTs0QkFDckMscUJBQXFCLEVBQUUsQ0FBQzs0QkFDeEIsbUJBQW1CLEVBQUUsbUJBQW1COzRCQUN4Qyx1QkFBdUIsRUFBRSx1QkFBdUI7NEJBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTzs0QkFDeEIscUJBQXFCLEVBQUUsSUFBSTt5QkFDNUIsQ0FBQzt3QkFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7d0JBRWhELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLENBRTFFLEdBQUcsRUFBRTs0QkFFTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixFQUFHLElBQUksQ0FBQyxlQUFlLEVBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUM7d0JBRWxGLENBQUMsQ0FDRCxDQUFDO29CQUVMLENBQUMsQ0FDRCxDQUFDO2dCQUlMLENBQUMsQ0FHRixDQUFDO2FBQ0M7aUJBQ0csUUFBUTthQUNWO2dCQUNFLE1BQU0sbUJBQW1CLEdBQXdCO29CQUMvQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLHFCQUFxQixFQUFFLENBQUM7b0JBQ3hCLG1CQUFtQixFQUFFLG1CQUFtQjtvQkFDeEMsdUJBQXVCLEVBQUUsdUJBQXVCO29CQUNoRCxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3hCLHFCQUFxQixFQUFFLElBQUk7aUJBQzVCLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUUxRSxHQUFHLEVBQUU7b0JBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsRUFBRyxJQUFJLENBQUMsZUFBZSxFQUFHLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBQyxDQUFDO2dCQUVsRixDQUFDLENBQ0osQ0FBQzthQUNIO1NBQ0Y7SUFHSCxDQUFDO0lBR0MsY0FBYyxDQUFDLHVCQUErQjtRQUU1QyxJQUFJLENBQUMsbUJBQW1CO2FBQ3ZCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsc0NBQXNDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQzthQUNoRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFJLEdBQUcsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO3FCQUNsRixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsRUFBRTt3QkFDdkQsUUFBUSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQztvQkFFSCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRWhCLENBQUMsQ0FDRixDQUFDO2FBRUg7UUFFSixDQUFDLENBQUMsQ0FBQztRQUVKLHFCQUFxQjtJQUV2QixDQUFDO0lBQ0gsY0FBYztRQUVOLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFHO1lBRXRELE1BQU0sVUFBVSxHQUFxQjtnQkFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSTtnQkFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztnQkFDcEMsVUFBVSxFQUFDLElBQUksQ0FBQyxPQUFPO2dCQUN2QixxQkFBcUIsRUFBRSxJQUFJO2dCQUMzQixNQUFNLEVBQUUsSUFBSTtnQkFDWixTQUFTLEVBQUUsSUFBSTtnQkFDZixxQkFBcUIsRUFBRSxJQUFJO2dCQUMzQixVQUFVLEVBQUUsSUFBSTthQUNuQixDQUFDO1lBQ0YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQy9ELENBQUMsSUFBUSxFQUFDLEVBQUU7Z0JBQ1YsTUFBTSxtQkFBbUIsR0FBOEI7b0JBQ3JELDRCQUE0QixFQUFDLENBQUM7b0JBQzlCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDckMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUI7b0JBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVM7b0JBQ3hDLFVBQVUsRUFBQyxJQUFJLENBQUMsT0FBTztvQkFDdkIsT0FBTyxFQUFDLHNCQUFzQjtpQkFDN0IsQ0FBQztnQkFFSixJQUFJLENBQUMsd0JBQXdCLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLENBQ2pGLElBQUksQ0FBQSxFQUFFO29CQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEVBQUUsRUFBRTt3QkFDdEQsUUFBUSxFQUFFLElBQUk7cUJBQ1IsQ0FBQyxDQUFDO2dCQUVMLENBQUMsQ0FDVixDQUFDO2dCQUdILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsaUJBQWlCLEVBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRyxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUMsQ0FBQztZQUNuRixDQUFDLENBR0YsQ0FBQztTQUNMO2FBQU07WUFDTCwwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FDM0UsSUFBSSxDQUFBLEVBQUU7Z0JBQ0Ysb0RBQW9EO2dCQUNwRCxtQkFBbUI7Z0JBQ25CLFlBQVk7Z0JBSVosTUFBTSxtQkFBbUIsR0FBOEI7b0JBQ3JELDRCQUE0QixFQUFDLENBQUM7b0JBQzlCLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUU7b0JBQy9ELHFCQUFxQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCO29CQUNoRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO29CQUN4QyxVQUFVLEVBQUMsSUFBSSxDQUFDLE9BQU87b0JBQ3ZCLE9BQU8sRUFBQyx5QkFBeUI7aUJBQ2hDLENBQUM7Z0JBRUosSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBR3ZGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsaUJBQWlCLEVBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUM7WUFFNUYsQ0FBQyxDQUNWLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOzttS0E5Y1UsK0JBQStCO3VKQUEvQiwrQkFBK0IsdUNBTC9CLENBQUMsbUJBQW1CLENBQUMsMEJDcEJsQyxrbGlCQXlPVzs0RkRoTkUsK0JBQStCO2tCQVAzQyxTQUFTO2dDQUVHLENBQUMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdjU21hcnRWaWN0aW1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtdmljdGltLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtQnVpbGRlcixWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWaWN0aW1TYWZldHlQbGFuLFZpY3RpbVNlcnZpY2VEZXRhaWwsXHJcbiAgVmljdGltU2VydmljZVN0YXR1c0hpc3RvcnksVmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJNb2RlbCxcclxuICBQcm92aWRlckxpc3RDb2xsZWN0aW9uTW9kZWwgfSBmcm9tICcuLi9zbWFydC12aWN0aW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21tb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uL2NvbW1vbi1kaWFsb2cvY29tbW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNlbGVjdGVkT2ZmZW5kZXIsIExvZ2luU3RhZmYgfSBmcm9tICdAY3NtYXJ0L25nYy1zbWFydC1jb3JlJztcclxuaW1wb3J0IHsgZGF0ZVZhbGlkYXRvciwgcGFzc0RhdGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zaGFyZWQvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IFNlcml2ZVByb3ZpZGVyQ29tcG9uZW50fSBmcm9tICcuLi9zYWZldHlQbGFuL3NlcnZpY2VQcm92aWRlci5jb21wb25lbnQnXHJcbmltcG9ydCB7IFByb3ZpZGVyc0RpYWxvZ0RhdGF9IGZyb20gJy4uL3NtYXJ0LXZpY3RpbS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpY3RpbVNhZmV0eVBsYW5EZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW0NvbW1vbkRpYWxvZ1NlcnZpY2VdLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpY3RpbVNhZmV0eVBsYW4uY29tcG9uZW50LmNzcyddXHJcbiBcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaWN0aW1TYWZldHlQbGFuRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIGhpZGRlbkFkZE5ld0ZsYWc6IGJvb2xlYW47XHJcbiAgc2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICBzYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuO1xyXG4gIGVkaXRTYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuID0gPFZpY3RpbVNhZmV0eVBsYW4+e307XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29udGFjdFR5cGVzOiBhbnlbXTtcclxuICBjb250YWN0UHVycG9zZXM6IGFueVtdO1xyXG4gIHZpY3RpbVNlcnZpY2VUeXBlczogYW55W107XHJcbiAgdmljdGltU2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICB2aWN0aW1TZXJ2aWNlU3RhdHVzOiBhbnlbXTtcclxuICBwcm92aWRlckxpc3Q6IFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXTtcclxuICBwcm92aWRlckxpc3RDb2xsZWN0aW9uOlByb3ZpZGVyTGlzdENvbGxlY3Rpb25Nb2RlbFtdPVtdO1xyXG4gIHZpY3RpbVNlcnZpY2VEZXRhaWw6IFZpY3RpbVNlcnZpY2VEZXRhaWxbXTtcclxuICBpbmR4OmFueTtcclxuICBzZXJ2aWNlQ2hlY2sgPSBbXTtcclxuICB2aWN0aW1OYW1lOiBzdHJpbmc7XHJcbiAgaXNEaXNwbGF5OiBib29sZWFuO1xyXG4gIHN0YWZmSWQ6IG51bWJlcjtcclxuICB2aWN0aW1JZDogbnVtYmVyO1xyXG4gIHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyO1xyXG4gIG9mZmVuZGVySWQ6IG51bWJlcjtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIHByaXZhdGUgc3ViOiBhbnk7XHJcbiAgcmVzdWx0OiBhbnk7XHJcbiAgdmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2U9IG5ldyAgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcbiAgcHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkOiBzdHJpbmc7XHJcblxyXG5cclxuICBzcEZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudDogTmdjU21hcnRWaWN0aW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY29tbW9uRGlhbG9nU2VydmljZTogQ29tbW9uRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgIFxyXG4gICkge1xyXG5cclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcclxuXHJcblx0XHJcblx0XHRcdHRoaXMuc3BGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgc2VydmljZUdvYWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcdFx0ICBdKSksXHJcbiAgICAgICAgICBnb2FsU3RhdHVzOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcdFx0ICBdKSksXHJcbiAgICAgICAgICBnb2FsU3RhdHVzRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLGRhdGVWYWxpZGF0b3IoKVx0XHQgIF0pKSxcclxuICAgICAgICAgIGNvbW1lbnQ6IG5ldyBGb3JtQ29udHJvbCgnJyxWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zcEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgdGhpcy5zcEZvcm0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgXHJcblxyXG4gICAgdmFyIGRhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE7XHJcbiAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLnN0YWZmSWQgPSAgdGhpcy5sb2dpblN0YWZmLnN0YWZmSWQ7XHJcblxyXG4gICAgdGhpcy5zdWIgPSB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlSWQgPSBwYXJhbXNbJ3ZpY3RpbVNlcnZpY2VJZCddO1xyXG4gICAgICB0aGlzLnZpY3RpbUlkID0gcGFyYW1zWyd2aWN0aW1JZCddO1xyXG4gXHJcbiAgICB9KTtcclxuICAgXHJcbiAgICB0aGlzLmhpZGRlbkFkZE5ld0ZsYWcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEaXNwbGF5ID0gZmFsc2U7XHJcbiAgIFxyXG4gXHJcblxyXG4gICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFZpY3RpbVNlcnZpY2VUeXBlcygpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbVNlcnZpY2VUeXBlcyA9IGl0ZW1zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFZpY3RpbVNlcnZpY2VTdGF0dXMoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWN0aW1TZXJ2aWNlU3RhdHVzID0gaXRlbXM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuZ2V0VmljdGltKHRoaXMudmljdGltSWQpLnN1YnNjcmliZShcclxuICAgICAgKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbU5hbWUgPSBpdGVtcy5maXJzdE5hbWUgKyAnLCAnICsgaXRlbXMubGFzdE5hbWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gXHJcbiAgICAgXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS1ncmFwaFFMLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgLy8gdGhpcy5nZXRWaWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcnMoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy8gdGhpcy5wcm92aWRlckxpc3QgPSByZXN1bHQ7XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aWN0aW1TZXJ2aWNlSWQnKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy52aWN0aW1TZXJ2aWNlSWQpO1xyXG4gICAgIFxyXG4gICAgaWYgKHRoaXMudmljdGltU2VydmljZUlkIT0wKXtcclxuICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuZ2V0VmljdGltU2VydmljZXModGhpcy52aWN0aW1TZXJ2aWNlSWQpLnN1YnNjcmliZShcclxuICAgICAgICB2aWN0aW1TYWZldHlQbGFucyA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndmljdGltU2FmZXR5UGxhbnMnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHZpY3RpbVNhZmV0eVBsYW5zKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmVkaXRTYWZldHlQbGFuID0gdmljdGltU2FmZXR5UGxhbnNbMF07XHJcbiAgICAgICAgICB0aGlzLnZpY3RpbUlkID0gIHZpY3RpbVNhZmV0eVBsYW5zWzBdLnZpY3RpbUlkO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZWRpdFNhZmV0eVBsYW4nKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZWRpdFNhZmV0eVBsYW4pO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuZWRpdFNhZmV0eVBsYW4uZ29hbCcpO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5lZGl0U2FmZXR5UGxhbi5nb2FsKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmVkaXRTYWZldHlQbGFuWzBdLmdvYWwnKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZWRpdFNhZmV0eVBsYW5bMF0uZ29hbCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmdldFNlcnZpY2VTdGF0dXNIaXN0b3JpZXModGhpcy52aWN0aW1TZXJ2aWNlSWQpLnN1YnNjcmliZShcclxuICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzID0+IHtcclxuICAgICAgICAvLyB0aGlzLnZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMgPSB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzO1xyXG4gICAgICAgIHRoaXMudmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2UuZGF0YSA9IHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRQcm92aWRlcigpO1xyXG4gXHJcbiAgfVxyXG4gIC8vcGFzcyBpbiBpZFxyXG5pc0luQXJyYXkocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleTpzdHJpbmcsIHNlcnZpY2VUeXBlTmFtZTogc3RyaW5nLCBldmVudCl7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ3Byb3ZpZGVyTGlzdENvbGxlY3Rpb25LZXknKTtcclxuICAgIGNvbnNvbGUubG9nKHByb3ZpZGVyTGlzdENvbGxlY3Rpb25LZXkpO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZygnc2VydmljZVR5cGVOYW1lJyk7XHJcbiAgICBjb25zb2xlLmxvZyhzZXJ2aWNlVHlwZU5hbWUpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdldmVudC5zb3VyY2UudmFsdWUnKTtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50LmNoZWNrZWQpO1xyXG5cclxuICAgIGlmIChldmVudC5jaGVja2VkID09IHRydWUpe1xyXG5cclxuICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb24ubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgaWYocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleT09dGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmdyb3VwSWQpe1xyXG4gICAgICAgICAgdGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmlzRGlzcGxheT0hdGhpcy5wcm92aWRlckxpc3RDb2xsZWN0aW9uW2pdLmlzRGlzcGxheTtcclxuXHJcbiAgICAgXHJcblxyXG4gICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNlcml2ZVByb3ZpZGVyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgICAgIGRhdGE6IDxQcm92aWRlcnNEaWFsb2dEYXRhPntcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHNlcnZpY2VUeXBlOnNlcnZpY2VUeXBlTmFtZSxcclxuICAgICAgICAgICBzZXJ2aWNlVHlwZUlkOiBwcm92aWRlckxpc3RDb2xsZWN0aW9uS2V5LFxyXG4gICAgICAgICAgIHByb3ZpZGVyQ29sbGVjdGlvbnM6IFsuLi50aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb25dLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdmb3JtRmllbGRXaWR0aDQ4MCcsXHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1RoZSBkaWFsb2cgd2FzIGNsb3NlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1RoZSBkaWFsb2cgd2FzIGNsb3NlZCwgaW5zaWRlIHJlc3VsdCcpO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVQbGFuUHJvdmlkZXIocHJvdmlkZXJMaXN0Q29sbGVjdGlvbktleSxyZXN1bHQudm90ZWVQcm92aWRlcklkKTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAgICAvLyByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfS8vaWYgZXZlbnQuY2hlY2tlZCA9PSB0cnVlXHJcbiAgICAgLy90aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NhZnR5UGxhbkRldGFpbCcsIHRoaXMudmljdGltU2VydmljZUlkLCAgdGhpcy52aWN0aW1JZCBdKTsgXHJcbiAgICAgIFxyXG4gIH1cclxuXHJcbmxvYWRQcm92aWRlcigpeyBcclxuXHJcbiB0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb249W107XHJcbiAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXR2VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKClcclxuICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAocHJvdmlkZXJMaXN0OlZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXSApPT57IFxyXG4gICAgICAgIGlmKHByb3ZpZGVyTGlzdCl7XHJcbiAgIFxyXG4gICAgICAgICAgbGV0IHByb3ZpZGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgICBmb3IobGV0IGk9MDtpPHByb3ZpZGVyTGlzdC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICghcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXSkge1xyXG4gICAgICAgICAgICAgIHByb3ZpZGVyc1twcm92aWRlckxpc3RbaV0udmljdGltU2VydmljZVR5cGVJZF0gPSBbXTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgIGlmICggdGhpcy5lZGl0U2FmZXR5UGxhbi52VmljdGltU2VydmljZURldGFpbHMgIT0gbnVsbCApe1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0aGlzLmVkaXRTYWZldHlQbGFuLnZWaWN0aW1TZXJ2aWNlRGV0YWlscy5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgICAgICBpZiAoIHByb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkID09IHRoaXMuZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzW2pdLnZpY3RpbVNlcnZpY2VJZC50b1N0cmluZygpICl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNwbGF5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnByb3ZpZGVyTGlzdENvbGxlY3Rpb24ucHVzaCh7IGdyb3VwSWQ6IHByb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkLGlzRGlzcGxheTp0aGlzLmlzRGlzcGxheSwgY29sbGVjdGlvbjogcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHJvdmlkZXJzW3Byb3ZpZGVyTGlzdFtpXS52aWN0aW1TZXJ2aWNlVHlwZUlkXS5wdXNoKHByb3ZpZGVyTGlzdFtpXSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG4vLy0tLS0tLS0tLS0tLS0tLWdyYXBoUUwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyAgIGdldFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycygpOiBPYnNlcnZhYmxlPFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVyTW9kZWxbXT4ge1xyXG4vLyAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBgXHJcbi8vICAgICAgICAge1xyXG4vLyAgICAgICAgICAgZmluZFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycyB7XHJcbi8vICAgICAgICAgICAgICAgICBkYXRhIHtcclxuLy8gICAgICAgICAgICAgICAgICAgdmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJJZFxyXG4vLyAgICAgICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlVHlwZVxyXG4vLyAgICAgICAgICAgICAgICAgICB2aWN0aW1Qcm9ncmFtUHJvdmlkZXJcclxuLy8gICAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfWA7XHJcbiBcclxuLy8gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGVudmlyb25tZW50LnNtYXJ0QXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4vLyAgICAgICAgIC5tYXAocmVzdWx0ID0+IHtcclxuLy8gICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuZmluZFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycy5kYXRhO1xyXG4vLyAgICAgfSk7XHJcbi8vIH1cclxuXHJcbiAgZXZhbHVhdGVTZWxlY3Rpb24odmljdGltU2VydmljZVR5cGVJZDogc3RyaW5nKSB7XHJcbiAgIGlmICh0aGlzLmVkaXRTYWZldHlQbGFuLnZWaWN0aW1TZXJ2aWNlRGV0YWlscykge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzLmZpbmRJbmRleChyID0+IHIudmljdGltU2VydmljZVR5cGVJZCA9PT0gdmljdGltU2VydmljZVR5cGVJZCkgPj0gMDtcclxuICAgfVxyXG4gIH1cclxuXHJcblxyXG5zYXZlUGxhblByb3ZpZGVyKHZpY3RpbVNlcnZpY2VUeXBlSWQ6IHN0cmluZyx2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZDogc3RyaW5nKXtcclxuXHJcbiAgY29uc29sZS5sb2coJ3NhdmVQbGFuUHJvdmlkZXInKTtcclxuICBjb25zb2xlLmxvZyh2aWN0aW1TZXJ2aWNlVHlwZUlkKTtcclxuICBjb25zb2xlLmxvZyh2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZCk7XHJcblxyXG4gIGlmICh2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZCA9PT0gXCJcIiB8fCB2aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZD09PSBudWxsIHx8IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkID09PSB1bmRlZmluZWQpe1xyXG4gIFxyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2UgcGljayBhIHByb2dyYW0gb24gdGhlIGRyb3AgZG93biBsaXN0ICEnLCAnJywgeyBkdXJhdGlvbjogMTIwLH0pO1xyXG4gICAvLyBhbGVydCgnUGxlYXNlIHBpY2sgYSBwcm9ncmFtIG9uIHRoZSBkcm9wIGRvd24gbGlzdCAhJyk7XHJcblxyXG4gIH1lbHNlXHJcbiAge1xyXG4gICAgXHJcbiAgaWYgKCB0aGlzLnZpY3RpbVNlcnZpY2VJZCA9PSAwKXtcclxuICAgLy9pbnNlcnRcclxuICAgY29uc29sZS5sb2coJ2luc2VydCBuZXcgcGxhbicpO1xyXG4gICBjb25zdCBzYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuID0ge1xyXG4gICAgdmljdGltSWQ6dGhpcy52aWN0aW1JZCxcclxuICAgIGZ1bGxOYW1lOiBudWxsLFxyXG4gICAgdmljdGltU2VydmljZUlkOiAwLFxyXG4gICAgZ29hbDp0aGlzLmVkaXRTYWZldHlQbGFuLmdvYWwsXHJcbiAgICBjb21tZW50OiB0aGlzLmVkaXRTYWZldHlQbGFuLmNvbW1lbnQsXHJcbiAgICBtb2RpZmllZEJ5OnRoaXMuc3RhZmZJZCxcclxuICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNJZDogbnVsbCxcclxuICAgIHN0YXR1czogbnVsbCxcclxuICAgIHN0YXJ0RGF0ZTogbnVsbCxcclxuICAgIHZWaWN0aW1TZXJ2aWNlRGV0YWlsczogbnVsbCxcclxuICAgIHZpY3RpbU5hbWU6IG51bGxcclxufTtcclxudGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuYWRkU2FmZXR5UGxhbihzYWZldHlQbGFuKS5zdWJzY3JpYmUoXHJcbiAgKGl0bXM6YW55KT0+e1xyXG4gICAgY29uc3QgdmljdGltU2VydmljZVN0YXR1czogVmljdGltU2VydmljZVN0YXR1c0hpc3Rvcnk9IHtcclxuICAgICAgdmljdGltU2VydmljZVN0YXR1c0hpc3RvcnlJZDowLFxyXG4gICAgICB2aWN0aW1TZXJ2aWNlSWQ6IGl0bXMudmljdGltU2VydmljZUlkLFxyXG4gICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkICxcclxuICAgICAgc3RhcnREYXRlOiB0aGlzLmVkaXRTYWZldHlQbGFuLnN0YXJ0RGF0ZSxcclxuICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgIGNvbW1lbnQ6J3Rlc3QgYWRkIHNhZmV0eSBwbGFuJ1xyXG4gICAgICB9O1xyXG5cclxuICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1cykuc3Vic2NyaWJlKFxyXG4gXHJcbiAgICAgICgpID0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGVjayBpdG1zLnZpY3RpbVNlcnZpY2VJZCBpbmlzaWRlIGFkZCB2aWN0aW0gc2VyaXZlIHN0YXR1cycpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGl0bXMudmljdGltU2VydmljZUlkKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmljdGltU2VydmljZURldGFpbDogVmljdGltU2VydmljZURldGFpbCA9IHtcclxuICAgICAgICAgIHZpY3RpbVNlcnZpY2VJZDogaXRtcy52aWN0aW1TZXJ2aWNlSWQsXHJcbiAgICAgICAgICB2aWN0aW1TZXJ2aWNlRGV0YWlsSWQ6IDAsXHJcbiAgICAgICAgICB2aWN0aW1TZXJ2aWNlVHlwZUlkOiB2aWN0aW1TZXJ2aWNlVHlwZUlkLFxyXG4gICAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLFxyXG4gICAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVyOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdhZGQgcGxhbiBwcm92aWRlciBoZXJlIGF0IGluc2VydCcpO1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuYWRkUGxhblByb3ZpZGVyKHZpY3RpbVNlcnZpY2VEZXRhaWwpLnN1YnNjcmliZShcclxuXHJcbiAgICAgICAgICAoKSA9PntcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzYWZ0eVBsYW5EZXRhaWwnLCAgaXRtcy52aWN0aW1TZXJ2aWNlSWQsICB0aGlzLnZpY3RpbUlkIF0pOyBcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgKTtcclxuICAgXHJcbiAgXHJcbiAgXHJcbiAgfVxyXG5cclxuXHJcbik7XHJcbiAgfVxyXG4gIGVsc2UvL3VwZGF0ZVxyXG4gICAge1xyXG4gICAgICBjb25zdCB2aWN0aW1TZXJ2aWNlRGV0YWlsOiBWaWN0aW1TZXJ2aWNlRGV0YWlsID0ge1xyXG4gICAgICAgIHZpY3RpbVNlcnZpY2VJZDogdGhpcy52aWN0aW1TZXJ2aWNlSWQsXHJcbiAgICAgICAgdmljdGltU2VydmljZURldGFpbElkOiAwLFxyXG4gICAgICAgIHZpY3RpbVNlcnZpY2VUeXBlSWQ6IHZpY3RpbVNlcnZpY2VUeXBlSWQsXHJcbiAgICAgICAgdmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLFxyXG4gICAgICAgIG1vZGlmaWVkQnk6IHRoaXMuc3RhZmZJZCxcclxuICAgICAgICB2aWN0aW1Qcm9ncmFtUHJvdmlkZXI6IG51bGxcclxuICAgICAgfTtcclxuICAgICAgY29uc29sZS5sb2coJ2FkZCBwbGFuIHByb3ZpZGVyIGhlcmUgYXQgdXBkYXRlJyk7XHJcbiAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFBsYW5Qcm92aWRlcih2aWN0aW1TZXJ2aWNlRGV0YWlsKS5zdWJzY3JpYmUoXHJcblxyXG4gICAgICAgICgpID0+e1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NhZnR5UGxhbkRldGFpbCcsICB0aGlzLnZpY3RpbVNlcnZpY2VJZCwgIHRoaXMudmljdGltSWQgXSk7IFxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcbiAgZGVsZXRlUHJvdmlkZXIodmljdGltUHJvZ3JhbVByb3ZpZGVySWQ6IHN0cmluZyl7XHJcblxyXG4gICAgdGhpcy5jb21tb25EaWFsb2dTZXJ2aWNlXHJcbiAgICAuY29uZmlybSgnJywgJ0RvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByb3ZpZGVyPycsICdZZXMnLCAnTm8nKVxyXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge3RoaXMucmVzdWx0ID0gIHJlcztcclxuICAgICAgICBpZiAodGhpcy5yZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmRlbGV0ZVByb3ZpZGVyKHZpY3RpbVByb2dyYW1Qcm92aWRlcklkLCB0aGlzLnN0YWZmSWQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignZGVsZXRlIHByb3ZpZGVyIFN1Y2Nlc3NmdWxseSAhJywgJycsIHtcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgIH0pO1xyXG4gXHJcbiAgICAvLyBsb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcbiAgfVxyXG5zYXZlU2FmZXR5UGxhbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZUlkID09PSB1bmRlZmluZWQgKSB7XHJcblxyXG4gICAgICAgICAgY29uc3Qgc2FmZXR5UGxhbjogVmljdGltU2FmZXR5UGxhbiA9IHtcclxuICAgICAgICAgICAgdmljdGltSWQ6IHRoaXMudmljdGltSWQsXHJcbiAgICAgICAgICAgIGZ1bGxOYW1lOiBudWxsLFxyXG4gICAgICAgICAgICB2aWN0aW1TZXJ2aWNlSWQ6IDAsXHJcbiAgICAgICAgICAgIGdvYWw6dGhpcy5lZGl0U2FmZXR5UGxhbi5nb2FsLFxyXG4gICAgICAgICAgICBjb21tZW50OiB0aGlzLmVkaXRTYWZldHlQbGFuLmNvbW1lbnQsXHJcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6dGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IG51bGwsXHJcbiAgICAgICAgICAgIHN0YXR1czogbnVsbCxcclxuICAgICAgICAgICAgc3RhcnREYXRlOiBudWxsLFxyXG4gICAgICAgICAgICB2VmljdGltU2VydmljZURldGFpbHM6IG51bGwsXHJcbiAgICAgICAgICAgIHZpY3RpbU5hbWU6IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFNhZmV0eVBsYW4oc2FmZXR5UGxhbikuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGl0bXM6YW55KT0+e1xyXG4gICAgICAgICAgICBjb25zdCB2aWN0aW1TZXJ2aWNlU3RhdHVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeT0ge1xyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5SWQ6MCxcclxuICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlSWQ6IGl0bXMudmljdGltU2VydmljZUlkLFxyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VTdGF0dXNJZDogdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlU3RhdHVzSWQgLFxyXG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5lZGl0U2FmZXR5UGxhbi5zdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgbW9kaWZpZWRCeTp0aGlzLnN0YWZmSWQsXHJcbiAgICAgICAgICAgICAgY29tbWVudDondGVzdCBhZGQgc2FmZXR5IFBsYW4nXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50LmFkZFZpY3RpbVNlcnZpY2VTdGF0dXModmljdGltU2VydmljZVN0YXR1cykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIHJlc3A9PntcclxuICAgICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignSW5zZXJ0IHN0YXR1cyBzdWNjZXNzZnVsbHkhJywgJycsIHtcclxuICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc2FmdHlQbGFuRGV0YWlsJywgIGl0bXMudmljdGltU2VydmljZUlkLCAgdGhpcy52aWN0aW1JZCBdKTsgXHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5lZGl0U2FmZXR5UGxhbi5tb2RpZmllZEJ5PXRoaXMubG9naW5TdGFmZi5zdGFmZklkO1xyXG4gICAgICB0aGlzLmVkaXRTYWZldHlQbGFuLm1vZGlmaWVkQnkgPXRoaXMuc3RhZmZJZDtcclxuICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQudXBkYXRlU2FmZXR5UGxhbih0aGlzLmVkaXRTYWZldHlQbGFuKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzcD0+e1xyXG4gICAgICAgICAgICAvLyAgdGhpcy5zbmFja0Jhci5vcGVuKCd1cGRhdGUgU3VjY2Vzc2Z1bGx5IScsICcnLCB7XHJcbiAgICAgICAgICAgIC8vICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICAgICAgLy8gICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHZpY3RpbVNlcnZpY2VTdGF0dXM6IFZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3J5PSB7XHJcbiAgICAgICAgICAgICAgdmljdGltU2VydmljZVN0YXR1c0hpc3RvcnlJZDowLFxyXG4gICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VJZDogdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlSWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlU3RhdHVzSWQ6IHRoaXMuZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkICxcclxuICAgICAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZWRpdFNhZmV0eVBsYW4uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIG1vZGlmaWVkQnk6dGhpcy5zdGFmZklkLFxyXG4gICAgICAgICAgICAgIGNvbW1lbnQ6J3Rlc3QgdXBkYXRlIHNhZmV0eSBQbGFuJ1xyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5hZGRWaWN0aW1TZXJ2aWNlU3RhdHVzKHZpY3RpbVNlcnZpY2VTdGF0dXMpLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICAgXHJcbiAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzYWZ0eVBsYW5EZXRhaWwnLCAgdGhpcy5lZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlSWQsICB0aGlzLnZpY3RpbUlkIF0pOyBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIGJhY2soKXtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLnZpY3RpbUlkJyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbUlkKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc2FmdHlQbGFuJywgdGhpcy52aWN0aW1JZF0pOyBcclxuICB9XHJcbiBcclxuXHJcbn1cclxuXHJcbiIsIjxtYXQtY2FyZD5cclxuICAgICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC10b29sYmFyICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiY2FyZC1oZWFkZXJcIiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5TYWZldHkgUGxhbjwvaDQ+XHJcbiAgICAgICAgPC9tYXQtdG9vbGJhcj5cclxuIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb250YWluZXInPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3BGb3JtXCIgI3NwRGV0YWlsRm9ybT1cIm5nRm9ybVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgPjxiPlZpY3RpbSBOYW1lOjwvYj4ge3t2aWN0aW1OYW1lfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkdvYWw6PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VHb2FsXCIgWyhuZ01vZGVsKV09XCJlZGl0U2FmZXR5UGxhbi5nb2FsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkdvYWwgU3RhdHVzOjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0ICBmb3JtQ29udHJvbE5hbWU9XCJnb2FsU3RhdHVzXCIgIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4udmljdGltU2VydmljZVN0YXR1c0lkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cIiBsZXQgdmljdGltU2VydmljZVN0YXR1IG9mIHZpY3RpbVNlcnZpY2VTdGF0dXNcIiBbdmFsdWVdPVwidmljdGltU2VydmljZVN0YXR1LnZpY3RpbVNlcnZpY2VTdGF0dXNJZFwiID57e3ZpY3RpbVNlcnZpY2VTdGF0dS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Hb2FsIFN0YXR1cyBEYXRlOjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImdvYWxTdGF0dXNEYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImdvYWxTdGF0dXNEYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2hvb3NlIGEgZGF0ZVwiIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4uc3RhcnREYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb2FsU3RhdHVzRGF0ZS5vcGVuKClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJnb2FsU3RhdHVzRGF0ZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2dvYWxTdGF0dXNEYXRlPjwvbWF0LWRhdGVwaWNrZXI+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxwLWJsb2NrXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3BGb3JtLmdldCgnZ29hbFN0YXR1c0RhdGUnKS5oYXNFcnJvcignZGF0ZScpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3BGb3JtLmdldCgnZ29hbFN0YXR1c0RhdGUnKS5kaXJ0eSB8fCBzcEZvcm0uZ2V0KCdnb2FsU3RhdHVzRGF0ZScpLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+RnV0dXJlIERhdGUgaXMgPHN0cm9uZz5ub3QgYWxsb3dlZDwvc3Ryb25nPiBmb3IgZ29hbCBzdGF0dXMgZGF0ZTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsPkNvbW1lbnQ6PC9tYXQtbGFiZWw+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtZElucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRhcmVhLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmNvbW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT4gICAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L21hdC1mb3JtLWZpZWxkPiAtLT5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDQwMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q29tbWVudDo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYS1jb250ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbW1lbnRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmNvbW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCIxMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwhLS1lbmQgZm9ybS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj48Yj5OZWVkIGFuZCBwcm92aWRlcjo8L2I+PGJyPiAoY2xpY2sgb24gYSBjaGVjayBib3ggdG8gc2VsZWN0IHByb3ZpZGVyIGluZm9ybWF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBzZXJ2aWNlVHlwZSBvZiB2aWN0aW1TZXJ2aWNlVHlwZXM7IGxldCBpPWluZGV4XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJleGFtcGxlLW1hcmdpblwiIG5hbWU9XCJ2aWN0aW1TZXJ2aWNlXCIgIGNvbG9yID1cInByaW1hcnlcIiBbY2hlY2tlZF09XCJldmFsdWF0ZVNlbGVjdGlvbihzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkKVwiICAoY2hhbmdlKT1cImlzSW5BcnJheShzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkLHNlcnZpY2VUeXBlLm5hbWUsICRldmVudCk7XCIgPiB7e3NlcnZpY2VUeXBlLm5hbWV9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+ICZuYnNwOyZuYnNwOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlckxpc3RDb2xsZWN0aW9uOyBsZXQgcGkgPSBpbmRleFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJwcm92aWRlci5pc0Rpc3BsYXkgJiYgc2VydmljZVR5cGUudmljdGltU2VydmljZVR5cGVJZCA9PSBwcm92aWRlci5ncm91cElkIFwiIGNsYXNzPVwiUm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlU2VsZWN0XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1zZWxlY3QgIG5hbWU9XCJwcm92aWRlclwiIGlkPVwicHJvdmlkZXIuZ3JvdXBJZFwiIFsobmdNb2RlbCldPVwicHJvdmlkZXJJZFwiID4gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LXNlbGVjdCAgbmFtZT1cInByb3ZpZGVyXCIgaWQ9XCJwcm92aWRlci5ncm91cElkXCIgWyh2YWx1ZSldPVwicHJvdmlkZXJJZFwiID4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cIiBsZXQgcHJvdmlkZXJPcHRpb24gb2YgcHJvdmlkZXIuY29sbGVjdGlvblwiIFt2YWx1ZV09XCJwcm92aWRlck9wdGlvbi52aWN0aW1Qcm9ncmFtUHJvdmlkZXJJZFwiID57e3Byb3ZpZGVyT3B0aW9uLnZpY3RpbVByb2dyYW1Qcm92aWRlcn19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVQbGFuUHJvdmlkZXIoc2VydmljZVR5cGUudmljdGltU2VydmljZVR5cGVJZCAscHJvdmlkZXJJZClcIj5BZGQgUHJvdmlkZXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwiIGxldCBzZXJ2aWNlcHJvdmlkZXIgb2YgZWRpdFNhZmV0eVBsYW4udlZpY3RpbVNlcnZpY2VEZXRhaWxzXCIgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZXJ2aWNlVHlwZS52aWN0aW1TZXJ2aWNlVHlwZUlkPT09c2VydmljZXByb3ZpZGVyLnZpY3RpbVNlcnZpY2VUeXBlSWRcIiAgY2xhc3M9XCJSb3dcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAuIHt7IHNlcnZpY2Vwcm92aWRlci52aWN0aW1Qcm9ncmFtUHJvdmlkZXJ9fTxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImRlbGV0ZVByb3ZpZGVyKHNlcnZpY2Vwcm92aWRlci52aWN0aW1TZXJ2aWNlRGV0YWlsSWQpXCI+RGVsZXRlPC9idXR0b24+IDxicj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2VTZWxlY3RcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiB7eyBzZXJ2aWNlcHJvdmlkZXIudmljdGltUHJvZ3JhbVByb3ZpZGVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VydmljZUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZGVsZXRlUHJvdmlkZXIoc2VydmljZXByb3ZpZGVyLnZpY3RpbVNlcnZpY2VEZXRhaWxJZClcIj5EZWxldGU8L2J1dHRvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgXHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz0ncm93JyA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTUgZGVzYy1sYWJlbCc+PGI+VmljdGltIE5hbWU6PC9iPiB7e3ZpY3RpbU5hbWV9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNyc+ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPSdyb3cnID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNSBkZXNjLWxhYmVsJz48Yj5Hb2FsOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwic2VydmljZUdvYWxcIiBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLmdvYWxcIiByZXF1aXJlZCBwbGFjZWhvbGRlcj1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3JvdycgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NvbC1tZC01IGRlc2MtbGFiZWwnPjxiPkdvYWwgU3RhdHVzOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0ICBuYW1lPVwiZ29hbFN0YXR1c1wiICBbc3R5bGUud2lkdGhdPVwiJzUwJSdcIiAgWyhuZ01vZGVsKV09XCJlZGl0U2FmZXR5UGxhbi52aWN0aW1TZXJ2aWNlU3RhdHVzSWRcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwiIGxldCB2aWN0aW1TZXJ2aWNlU3RhdHUgb2YgdmljdGltU2VydmljZVN0YXR1c1wiIFt2YWx1ZV09XCJ2aWN0aW1TZXJ2aWNlU3RhdHUudmljdGltU2VydmljZVN0YXR1c0lkXCIgPnt7dmljdGltU2VydmljZVN0YXR1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdyb3cnID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb2wtbWQtNSBkZXNjLWxhYmVsJz48Yj5Hb2FsIFN0YXR1cyBEYXRlOjxmb250IGNvbG9yPVwicmVkXCI+KjwvZm9udD48L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cImdvYWxTdGF0dXNEYXRlXCIgW21hdERhdGVwaWNrZXJdPVwiZ29hbFN0YXR1c0RhdGVcIiBwbGFjZWhvbGRlcj1cIkNob29zZSBhIGRhdGVcIiBbKG5nTW9kZWwpXT1cImVkaXRTYWZldHlQbGFuLnN0YXJ0RGF0ZVwiICByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZ29hbFN0YXR1c0RhdGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZ29hbFN0YXR1c0RhdGU+PC9tYXQtZGF0ZXBpY2tlcj4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ncm93JyA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTUgZGVzYy1sYWJlbCc+PGI+Q29tbWVudDo8L2I+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29sLW1kLTcnPiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWRJbnB1dCBwbGFjZWhvbGRlcj1cIlwiICByb3dzPVwiMTBcIiBjb2xzPVwiNTBcIiBuYW1lPVwiY29tbWVudFwiIFsobmdNb2RlbCldPVwiZWRpdFNhZmV0eVBsYW4uY29tbWVudFwiPjwvdGV4dGFyZWE+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3JvdycgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NvbC1tZC0xMiB0ZXh0LWNlbnRlcic+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21hbGxcIiAoY2xpY2spPVwicHJpbnQoKVwiPlByaW50PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmVTYWZldHlQbGFuKClcIiBbZGlzYWJsZWRdPVwiIXNwRm9ybS52YWxpZFwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICZuYnNwOyZuYnNwOzxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIChjbGljayk9XCJjb21tb25kaWFsb2dSZWYuY2xvc2UoKVwiPkNhbmNlbDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDs8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiICAoY2xpY2spPVwiYmFjaygpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1zdGF0dXMgaGlzb3RyeS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC10YWJsZSAjdGFibGUgW2RhdGFTb3VyY2VdPVwidmljdGltU2VydmljZVN0YXR1c0hpc3Rvcmllc0RhdGFTb3VyY2VcIiBjbGFzcz1cImV4YW1wbGUtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiZXhhbXBsZS1oZWFkZXItY2VsbFwiPlN0YXJ0IERhdGU8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwiZXhhbXBsZS1jZWxsXCI+IHt7cm93LnN0YXJ0RGF0ZSB8IGRhdGV9fSA8L21hdC1jZWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ2aWN0aW1TZXJ2aWNlU3RhdHVzSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJleGFtcGxlLWhlYWRlci1jZWxsXCI+U3RhdHVzPC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJleGFtcGxlLWNlbGxcIj4ge3tyb3cudmljdGltU2VydmljZVN0YXR1c0lkfX0gPC9tYXQtY2VsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiY29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImV4YW1wbGUtaGVhZGVyLWNlbGxcIj5Db21tZW50PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJleGFtcGxlLWNlbGxcIj4ge3tyb3cuY29tbWVudH19IDwvbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWyAnc3RhcnREYXRlJywgJ3ZpY3RpbVNlcnZpY2VTdGF0dXNJZCcsICdjb21tZW50J11cIiBjbGFzcz1cImV4YW1wbGUtaGVhZGVyLXJvd1wiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6WyAnc3RhcnREYXRlJywgJ3ZpY3RpbVNlcnZpY2VTdGF0dXNJZCcsICdjb21tZW50J107XCIgY2xhc3M9XCJleGFtcGxlLXJvd1wiPjwvbWF0LXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbjwvbWF0LWNhcmQtY29udGVudD5cclxuPC9tYXQtY2FyZD4iXX0=
|
@@ -35,8 +35,8 @@ import { MatChipsModule } from "@angular/material/chips";
|
|
35
35
|
import * as i0 from "@angular/core";
|
36
36
|
export class SharedModule {
|
37
37
|
}
|
38
|
-
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
39
|
-
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
|
38
|
+
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
39
|
+
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SharedModule, imports: [MatButtonModule,
|
40
40
|
MatCardModule,
|
41
41
|
MatCheckboxModule,
|
42
42
|
MatToolbarModule,
|
@@ -89,7 +89,7 @@ export class SharedModule {
|
|
89
89
|
MatPaginatorModule,
|
90
90
|
MatExpansionModule,
|
91
91
|
MatRippleModule] });
|
92
|
-
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.
|
92
|
+
/** @nocollapse */ /** @nocollapse */ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SharedModule, imports: [[
|
93
93
|
MatButtonModule,
|
94
94
|
MatCardModule,
|
95
95
|
MatCheckboxModule,
|
@@ -144,7 +144,7 @@ export class SharedModule {
|
|
144
144
|
MatPaginatorModule,
|
145
145
|
MatExpansionModule,
|
146
146
|
MatRippleModule] });
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SharedModule, decorators: [{
|
148
148
|
type: NgModule,
|
149
149
|
args: [{
|
150
150
|
imports: [
|
@@ -210,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
210
210
|
],
|
211
211
|
}]
|
212
212
|
}] });
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNoYXJlZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc2hhcmVkL2FwcC5zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJL0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxtQkFBbUIsRUFBRSxlQUFlLEVBQW9DLE1BQU0sd0JBQXdCLENBQUM7QUFDNUgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3JELFdBQVc7QUFDWCwrR0FBK0c7QUFDL0csdUhBQXVIO0FBQ3ZILDJDQUEyQztBQUMzQyx3RkFBd0Y7QUFDeEYsOEhBQThIO0FBRzlILDhCQUE4QjtBQUM5QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFF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cG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuLy9pbXBvcnQge01BVF9NT01FTlRfREFURV9GT1JNQVRTLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge0Jyb3dzZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge3BsYXRmb3JtQnJvd3NlckR5bmFtaWN9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc7XHJcbmltcG9ydCB7Q2RrVGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1hdE5hdGl2ZURhdGVNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG4vLyBpbXBvcnQge1xyXG4vLyAgIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIE1hdFRvb2xiYXJNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuLy8gICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIE1hdEdyaWRMaXN0TW9kdWxlLCBNYXRUYWJsZU1vZHVsZSwgTWF0U2lkZW5hdk1vZHVsZSwgTWF0UmFkaW9Nb2R1bGUsIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuLy8gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6d2hpdGVzcGFjZVxyXG4vLyAgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0U2xpZGVyTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdENoaXBzTW9kdWxlLE1hdFNvcnRNb2R1bGUsXHJcbi8vICAgIE1hdFRhYnNNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U3RlcHBlck1vZHVsZSwgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gXHJcbiAgIFxyXG4vLyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuaW1wb3J0IHtNYXRTbmFja0Jhck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcclxuaW1wb3J0IHsgIE1hdFN0ZXBwZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlclwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoXHJcbiAge1xyXG4gIFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgICBNYXRUb29sYmFyTW9kdWxlLFxyXG4gICAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgICAgTWF0VGFic01vZHVsZSxcclxuICAgICAgTWF0TGlzdE1vZHVsZSxcclxuICAgICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICAgIE1hdFN0ZXBwZXJNb2R1bGUsXHJcbiAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxyXG4gICAgICBNYXRHcmlkTGlzdE1vZHVsZSxcclxuICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgICAgTWF0U2lkZW5hdk1vZHVsZSxcclxuICAgICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICAgIE1hdFNsaWRlck1vZHVsZSxcclxuICAgICAgTWF0Q2hpcHNNb2R1bGUsXHJcbiAgICAgIE1hdFNuYWNrQmFyTW9kdWxlLFxyXG4gICAgICBDZGtUYWJsZU1vZHVsZSxcclxuICAgICAgTWF0U29ydE1vZHVsZSxcclxuICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICAgIE1hdFJpcHBsZU1vZHVsZSxcclxuXHJcblxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6IFtcclxuICAgXHJcbiAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgICAgTWF0Q2FyZE1vZHVsZSxcclxuICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICAgIE1hdFRvb2xiYXJNb2R1bGUsXHJcbiAgICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgICBNYXRUYWJzTW9kdWxlLFxyXG4gICAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgICAgTWF0U3RlcHBlck1vZHVsZSxcclxuICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgICAgTWF0SWNvbk1vZHVsZSxcclxuICAgICAgTWF0U2xpZGVyTW9kdWxlLFxyXG4gICAgICBNYXRDaGlwc01vZHVsZSxcclxuICAgICAgTWF0U25hY2tCYXJNb2R1bGUsXHJcbiAgICAgIENka1RhYmxlTW9kdWxlLFxyXG4gICAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgICAgTWF0UmlwcGxlTW9kdWxlLFxyXG4gIFxyXG4gICAgIFxyXG4gICAgXSxcclxuICAgIGVudHJ5Q29tcG9uZW50czogW1xyXG4gICAgICAvLyBTcGlubmVyQ29tcG9uZW50LFxyXG4gICBdLFxyXG5cclxuXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRNb2R1bGUgeyB9XHJcbiJdfQ==
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNoYXJlZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc2hhcmVkL2FwcC5zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJL0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxtQkFBbUIsRUFBRSxlQUFlLEVBQW9DLE1BQU0sd0JBQXdCLENBQUM7QUFDNUgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3JELFdBQVc7QUFDWCwrR0FBK0c7QUFDL0csdUhBQXVIO0FBQ3ZILDJDQUEyQztBQUMzQyx3RkFBd0Y7QUFDeEYsOEhBQThIO0FBRzlILDhCQUE4QjtBQUM5QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFF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cG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuLy9pbXBvcnQge01BVF9NT01FTlRfREFURV9GT1JNQVRTLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge0Jyb3dzZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge3BsYXRmb3JtQnJvd3NlckR5bmFtaWN9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc7XHJcbmltcG9ydCB7Q2RrVGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1hdE5hdGl2ZURhdGVNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG4vLyBpbXBvcnQge1xyXG4vLyAgIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIE1hdFRvb2xiYXJNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuLy8gICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIE1hdEdyaWRMaXN0TW9kdWxlLCBNYXRUYWJsZU1vZHVsZSwgTWF0U2lkZW5hdk1vZHVsZSwgTWF0UmFkaW9Nb2R1bGUsIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuLy8gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6d2hpdGVzcGFjZVxyXG4vLyAgTWF0TmF0aXZlRGF0ZU1vZHVsZSwgTWF0U2xpZGVyTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIE1hdENoaXBzTW9kdWxlLE1hdFNvcnRNb2R1bGUsXHJcbi8vICAgIE1hdFRhYnNNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U3RlcHBlck1vZHVsZSwgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gXHJcbiAgIFxyXG4vLyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuaW1wb3J0IHtNYXRTbmFja0Jhck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcclxuaW1wb3J0IHsgIE1hdFN0ZXBwZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlclwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoXHJcbiAge1xyXG4gIFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgICBNYXRUb29sYmFyTW9kdWxlLFxyXG4gICAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgICAgTWF0VGFic01vZHVsZSxcclxuICAgICAgTWF0TGlzdE1vZHVsZSxcclxuICAgICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICAgIE1hdFN0ZXBwZXJNb2R1bGUsXHJcbiAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxyXG4gICAgICBNYXRHcmlkTGlzdE1vZHVsZSxcclxuICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgICAgTWF0U2lkZW5hdk1vZHVsZSxcclxuICAgICAgTWF0UmFkaW9Nb2R1bGUsXHJcbiAgICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICAgIE1hdFNsaWRlck1vZHVsZSxcclxuICAgICAgTWF0Q2hpcHNNb2R1bGUsXHJcbiAgICAgIE1hdFNuYWNrQmFyTW9kdWxlLFxyXG4gICAgICBDZGtUYWJsZU1vZHVsZSxcclxuICAgICAgTWF0U29ydE1vZHVsZSxcclxuICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICAgIE1hdFJpcHBsZU1vZHVsZSxcclxuXHJcblxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6IFtcclxuICAgXHJcbiAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgICAgTWF0Q2FyZE1vZHVsZSxcclxuICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICAgIE1hdFRvb2xiYXJNb2R1bGUsXHJcbiAgICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgICBNYXRUYWJzTW9kdWxlLFxyXG4gICAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgICAgTWF0U3RlcHBlck1vZHVsZSxcclxuICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgICAgTWF0SWNvbk1vZHVsZSxcclxuICAgICAgTWF0U2xpZGVyTW9kdWxlLFxyXG4gICAgICBNYXRDaGlwc01vZHVsZSxcclxuICAgICAgTWF0U25hY2tCYXJNb2R1bGUsXHJcbiAgICAgIENka1RhYmxlTW9kdWxlLFxyXG4gICAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgICAgTWF0UmlwcGxlTW9kdWxlLFxyXG4gIFxyXG4gICAgIFxyXG4gICAgXSxcclxuICAgIGVudHJ5Q29tcG9uZW50czogW1xyXG4gICAgICAvLyBTcGlubmVyQ29tcG9uZW50LFxyXG4gICBdLFxyXG5cclxuXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRNb2R1bGUgeyB9XHJcbiJdfQ==
|
@@ -38,9 +38,9 @@ export class PhoneMaskDirective {
|
|
38
38
|
}
|
39
39
|
}
|
40
40
|
}
|
41
|
-
/** @nocollapse */ /** @nocollapse */ PhoneMaskDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
42
|
-
/** @nocollapse */ /** @nocollapse */ PhoneMaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
41
|
+
/** @nocollapse */ /** @nocollapse */ PhoneMaskDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneMaskDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
|
42
|
+
/** @nocollapse */ /** @nocollapse */ PhoneMaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PhoneMaskDirective, selector: "[formControlName][appPhoneMask]", host: { listeners: { "ngModelChange": "onModelChange($event)", "keydown.backspace": "keydownBackspace($event)" } }, ngImport: i0 });
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PhoneMaskDirective, decorators: [{
|
44
44
|
type: Directive,
|
45
45
|
args: [{
|
46
46
|
selector: '[formControlName][appPhoneMask]',
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
52
52
|
type: HostListener,
|
53
53
|
args: ['keydown.backspace', ['$event']]
|
54
54
|
}] } });
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2Mtc21hcnQtdmljdGltL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvcGhvbmUtbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFtQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUksQ0FBQztJQUc1QyxhQUFhLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFHRCxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVM7UUFDNUIsSUFBSSxLQUFLLEVBQUM7WUFDVixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDakQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN2QixNQUFNLEdBQUcsRUFBRSxDQUFDO2FBQ2I7aUJBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQy9DO2lCQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzNEO2lCQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQ3ZFO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDdkU7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakQ7SUFFRCxDQUFDOztzSkFwQ1Usa0JBQWtCOzBJQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUNBQWlDO2lCQUM1QztnR0FNQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU16QyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Zvcm1Db250cm9sTmFtZV1bYXBwUGhvbmVNYXNrXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZU1hc2tEaXJlY3RpdmUge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHsgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCduZ01vZGVsQ2hhbmdlJywgWyckZXZlbnQnXSlcclxuICBvbk1vZGVsQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoZXZlbnQsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYmFja3NwYWNlJywgWyckZXZlbnQnXSlcclxuICBrZXlkb3duQmFja3NwYWNlKGV2ZW50KSB7XHJcbiAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlLCB0cnVlKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQsIGJhY2tzcGFjZSkge1xyXG4gICAgaWYgKGV2ZW50KXtcclxuICAgIGxldCBuZXdWYWwgPSBldmVudC5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgaWYgKGJhY2tzcGFjZSAmJiBuZXdWYWwubGVuZ3RoIDw9IDYpIHtcclxuICAgICAgbmV3VmFsID0gbmV3VmFsLnN1YnN0cmluZygwLCBuZXdWYWwubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3VmFsLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBuZXdWYWwgPSAnJztcclxuICAgIH0gZWxzZSBpZiAobmV3VmFsLmxlbmd0aCA8PSAzKSB7XHJcbiAgICAgIG5ld1ZhbCA9IG5ld1ZhbC5yZXBsYWNlKC9eKFxcZHswLDN9KS8sICcoJDEpJyk7XHJcbiAgICB9IGVsc2UgaWYgKG5ld1ZhbC5sZW5ndGggPD0gNikge1xyXG4gICAgICBuZXdWYWwgPSBuZXdWYWwucmVwbGFjZSgvXihcXGR7MCwzfSkoXFxkezAsM30pLywgJygkMSkgJDInKTtcclxuICAgIH0gZWxzZSBpZiAobmV3VmFsLmxlbmd0aCA8PSAxMCkge1xyXG4gICAgICBuZXdWYWwgPSBuZXdWYWwucmVwbGFjZSgvXihcXGR7MCwzfSkoXFxkezAsM30pKFxcZHswLDR9KS8sICcoJDEpICQyLSQzJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdWYWwgPSBuZXdWYWwuc3Vic3RyaW5nKDAsIDEwKTtcclxuICAgICAgbmV3VmFsID0gbmV3VmFsLnJlcGxhY2UoL14oXFxkezAsM30pKFxcZHswLDN9KShcXGR7MCw0fSkvLCAnKCQxKSAkMi0kMycpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKG5ld1ZhbCk7XHJcbiAgfVxyXG5cclxuICB9XHJcbn1cclxuIl19
|