@bnsights/bbsf-admin-portal 1.1.74 → 1.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +10 -0
  2. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +3 -3
  3. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +3 -3
  4. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +3 -3
  5. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +3 -3
  6. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +3 -3
  7. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +3 -3
  8. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +3 -3
  9. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +3 -3
  10. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +3 -3
  11. package/esm2022/lib/Pages/license/license/license.component.mjs +3 -3
  12. package/esm2022/lib/Pages/localizations/localizations.component.mjs +3 -3
  13. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +3 -3
  14. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +3 -3
  15. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +3 -3
  16. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +3 -3
  17. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +3 -3
  18. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +3 -3
  19. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +3 -3
  20. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +3 -3
  21. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +3 -3
  22. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +3 -3
  23. package/esm2022/lib/Pages/users/users.component.mjs +3 -3
  24. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +3 -3
  25. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +3 -3
  26. package/fesm2022/bnsights-bbsf-admin-portal.mjs +48 -48
  27. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  28. package/package.json +2 -2
@@ -358,11 +358,11 @@ export class HelpCenterComponent {
358
358
  this.requestHandlerService.destroyHandler();
359
359
  }
360
360
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpCenterComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i3.HelpCenterService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HelpCenterComponent, selector: "lib-help-center", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"adminWithMultitenanEnabled\" ngbDropdown class=\"d-inline-block\" [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\" class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 \">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"HelpCenterForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"helpCeneterFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showGenerateCodeModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-code\"></i> {{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" [routerLink]=\"['/Admin/HelpCenter/Preview']\"\r\n routerLinkActive=\"router-link-active\">\r\n <i class=\"fa fa-eye\"></i> {{utilityService.getResourceValue(\"Preview\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSets\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th *ngIf=\"adminWithMultitenanEnabled\" class=\"min-w-150px\">\r\n {{ utilityService.getResourceValue('Organization') }}\r\n </th>\r\n <th class=\"min-w-50px text-center\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/SecondLevel',Item.iD_GUID]\" routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n <td> {{Item.permissionsStr}} </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"adminWithMultitenanEnabled\">{{ Item.organizationName ?? '-' }}</td>\r\n <td class=\"text-center\">\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item.iD_GUID,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteHelpCenterModal(Item.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"HelpCenterPaging\"\r\n [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n <!-- Filter Wrapper -->\r\n <!--end::Permission list-->\r\n</div>\r\n\r\n<!--Add Modal-->\r\n<ng-template #AddHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #addOrganizationDDL (onChange)=\"onOrganizationChanges($event,addPermissionSetDDL,true)\" [options]=\"addOrganizations\" [group]=\"AddHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #addPermissionSetDDL [options]=\"AddPermissionSetsOptions\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"AddLogo\" [group]=\"AddHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #editOrganizationDDL (onChange)=\"onOrganizationChanges($event,editPermissionSetDDL)\" [options]=\"editOrganizations\" [group]=\"EditHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #editPermissionSetDDL [options]=\"EditPermissionSetsOptions\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"EditLogo\" [group]=\"EditHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n \r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!--Generate code Modal-->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"GeneratedCodeOptions\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <!-- <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyToClipboard()\">{{utilityService.getResourceValue(\"CopyToClipboard\")}}</button> -->\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.ImageUploaderComponent, selector: "BBSF-ImageUpload", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items", "pageStateRestored"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i4.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
361
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HelpCenterComponent, selector: "lib-help-center", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"adminWithMultitenanEnabled\" ngbDropdown class=\"d-inline-block\"\r\n [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\"\r\n [group]=\"HelpCenterForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"helpCeneterFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showGenerateCodeModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-code\"></i> {{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" [routerLink]=\"['/Admin/HelpCenter/Preview']\"\r\n routerLinkActive=\"router-link-active\">\r\n <i class=\"fa fa-eye\"></i> {{utilityService.getResourceValue(\"Preview\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSets\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th *ngIf=\"adminWithMultitenanEnabled\" class=\"min-w-150px\">\r\n {{ utilityService.getResourceValue('Organization') }}\r\n </th>\r\n <th class=\"min-w-50px text-center\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/SecondLevel',Item.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n <td> {{Item.permissionsStr}} </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"adminWithMultitenanEnabled\">{{ Item.organizationName ?? '-' }}</td>\r\n <td class=\"text-center\">\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\"\r\n class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\" class=\"mat-menu-content\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item.iD_GUID,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteHelpCenterModal(Item.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"HelpCenterPaging\"\r\n [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n <!-- Filter Wrapper -->\r\n <!--end::Permission list-->\r\n</div>\r\n\r\n<!--Add Modal-->\r\n<ng-template #AddHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #addOrganizationDDL (onChange)=\"onOrganizationChanges($event,addPermissionSetDDL,true)\"\r\n [options]=\"addOrganizations\" [group]=\"AddHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #addPermissionSetDDL [options]=\"AddPermissionSetsOptions\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"AddLogo\" [group]=\"AddHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\"\r\n [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #editOrganizationDDL (onChange)=\"onOrganizationChanges($event,editPermissionSetDDL)\"\r\n [options]=\"editOrganizations\" [group]=\"EditHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #editPermissionSetDDL [options]=\"EditPermissionSetsOptions\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"EditLogo\" [group]=\"EditHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!--Generate code Modal-->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"GeneratedCodeOptions\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <!-- <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyToClipboard()\">{{utilityService.getResourceValue(\"CopyToClipboard\")}}</button> -->\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options", "DropdownTemplateVariable"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.ImageUploaderComponent, selector: "BBSF-ImageUpload", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items", "pageStateRestored"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i4.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
362
362
  }
363
363
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpCenterComponent, decorators: [{
364
364
  type: Component,
365
- args: [{ selector: 'lib-help-center', template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"adminWithMultitenanEnabled\" ngbDropdown class=\"d-inline-block\" [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\" class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\" class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 \">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"HelpCenterForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"helpCeneterFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showGenerateCodeModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-code\"></i> {{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" [routerLink]=\"['/Admin/HelpCenter/Preview']\"\r\n routerLinkActive=\"router-link-active\">\r\n <i class=\"fa fa-eye\"></i> {{utilityService.getResourceValue(\"Preview\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSets\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th *ngIf=\"adminWithMultitenanEnabled\" class=\"min-w-150px\">\r\n {{ utilityService.getResourceValue('Organization') }}\r\n </th>\r\n <th class=\"min-w-50px text-center\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/SecondLevel',Item.iD_GUID]\" routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n <td> {{Item.permissionsStr}} </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"adminWithMultitenanEnabled\">{{ Item.organizationName ?? '-' }}</td>\r\n <td class=\"text-center\">\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item.iD_GUID,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteHelpCenterModal(Item.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"HelpCenterPaging\"\r\n [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n <!-- Filter Wrapper -->\r\n <!--end::Permission list-->\r\n</div>\r\n\r\n<!--Add Modal-->\r\n<ng-template #AddHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #addOrganizationDDL (onChange)=\"onOrganizationChanges($event,addPermissionSetDDL,true)\" [options]=\"addOrganizations\" [group]=\"AddHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #addPermissionSetDDL [options]=\"AddPermissionSetsOptions\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"AddLogo\" [group]=\"AddHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #editOrganizationDDL (onChange)=\"onOrganizationChanges($event,editPermissionSetDDL)\" [options]=\"editOrganizations\" [group]=\"EditHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #editPermissionSetDDL [options]=\"EditPermissionSetsOptions\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"EditLogo\" [group]=\"EditHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n \r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!--Generate code Modal-->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"GeneratedCodeOptions\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <!-- <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyToClipboard()\">{{utilityService.getResourceValue(\"CopyToClipboard\")}}</button> -->\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n" }]
365
+ args: [{ selector: 'lib-help-center', template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div *ngIf=\"ShowPageContent\" class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"adminWithMultitenanEnabled\" ngbDropdown class=\"d-inline-block\"\r\n [ngStyle]=\"{'display': ShowPageContent==true?'block':'none'}\">\r\n <button (click)=\"loadLists()\" ngbDropdownToggle href=\"javascript:;\" type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\" id=\"FiltersDropdown\" title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{utilityService.getResourceValue(\"Filter\")}}\r\n </button>\r\n <div *ngIf=\"IsFilterLoaded\" ngbDropdownMenu aria-labelledby=\"FiltersDropdown\"\r\n class=\" filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"HelpCenterForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"mb-10\">\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\"\r\n [group]=\"HelpCenterForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"helpCeneterFiltersBtn\">\r\n {{utilityService.getResourceValue(\"Reset\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" (click)=\"showGenerateCodeModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-code\"></i> {{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-light-primary me-3\" [routerLink]=\"['/Admin/HelpCenter/Preview']\"\r\n routerLinkActive=\"router-link-active\">\r\n <i class=\"fa fa-eye\"></i> {{utilityService.getResourceValue(\"Preview\")}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary me-3\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\"fa fa-plus\"></i> {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Title\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Description\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSets\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th *ngIf=\"adminWithMultitenanEnabled\" class=\"min-w-150px\">\r\n {{ utilityService.getResourceValue('Organization') }}\r\n </th>\r\n <th class=\"min-w-50px text-center\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n <td>\r\n <a (click)=\"SaveName(Item.titleStr)\" [routerLink]=\"['/Admin/HelpCenter/SecondLevel',Item.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\" class=\"text-dark\">{{Item.titleStr}}</a>\r\n </td>\r\n <td>\r\n <div>{{Item.descriptionStr}}</div>\r\n </td>\r\n <td> {{Item.permissionsStr}} </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"adminWithMultitenanEnabled\">{{ Item.organizationName ?? '-' }}</td>\r\n <td class=\"text-center\">\r\n\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\"\r\n class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\" class=\"mat-menu-content\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item.iD_GUID,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteHelpCenterModal(Item.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\" [options]=\"HelpCenterPaging\"\r\n [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n <!-- Filter Wrapper -->\r\n <!--end::Permission list-->\r\n</div>\r\n\r\n<!--Add Modal-->\r\n<ng-template #AddHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"AddDescription\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #addOrganizationDDL (onChange)=\"onOrganizationChanges($event,addPermissionSetDDL,true)\"\r\n [options]=\"addOrganizations\" [group]=\"AddHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #addPermissionSetDDL [options]=\"AddPermissionSetsOptions\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"AddLogo\" [group]=\"AddHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\"\r\n [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n @if (adminWithMultitenanEnabled) {\r\n <BBSF-DropdownList #editOrganizationDDL (onChange)=\"onOrganizationChanges($event,editPermissionSetDDL)\"\r\n [options]=\"editOrganizations\" [group]=\"EditHelpCenterForm\"></BBSF-DropdownList>\r\n }\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList #editPermissionSetDDL [options]=\"EditPermissionSetsOptions\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"EditLogo\" [group]=\"EditHelpCenterForm\">\r\n\r\n </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n<!--Generate code Modal-->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\"\r\n (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"GeneratedCodeOptions\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <!-- <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyToClipboard()\">{{utilityService.getResourceValue(\"CopyToClipboard\")}}</button> -->\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>" }]
366
366
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i3.HelpCenterService }, { type: i4.NgbModal }, { type: i1.RequestHandlerService }, { type: i1.EnvironmentService }], propDecorators: { pagingElement: [{
367
367
  type: ViewChild,
368
368
  args: ['HelpCenterPagingViewElement', { static: false }]
@@ -373,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
373
373
  type: ViewChild,
374
374
  args: ['organizationDDL', { static: false }]
375
375
  }] } });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyL2hlbHAtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQ3ZFLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFnQixjQUFjLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLDJCQUEyQixFQUMvSixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBRXpFLGNBQWMsRUFDZixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLE9BQU8sbUJBQW1CO0lBNEQ5QixZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzdFLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGlCQUFvQyxFQUFVLFlBQXNCLEVBQ3BFLHFCQUE0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Qyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkJELHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBZU4sZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSxcclxuICBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgSWNvblBvc2l0aW9uLCBUZXh0Qm94T3B0aW9ucywgSW1hZ2VVcGxvYWRPcHRpb25zLCBJbWFnZVR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTywgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSwgUGFnaW5nQ29tcG9uZW50LCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCxcclxuICBEcm9wZG93bkxpc3RDb21wb25lbnQsXHJcbiAgUGVybWlzc2lvblNldHNcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0hlbHBDZW50ZXJTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWxwQ2VudGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9IZWxwQ2VudGVyTW9kZWxzL0hlbHBDZW50ZXJJdGVtTW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlbHAtY2VudGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVscC1jZW50ZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ2VudGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0hlbHBDZW50ZXIvXCI7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEhlbHBDZW50ZXJQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBIZWxwQ2VudGVyUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNGaWx0ZXJEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUGVybWlzc2lvblNldHNMaXN0ID0gW107XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkVGl0bGU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQWRkUGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkSXNIaWRkZW46IENoZWNrQm94T3B0aW9ucztcclxuICBBZGRMb2dvOiBJbWFnZVVwbG9hZE9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdFRpdGxlOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0RGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0UGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgRWRpdExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuICBFZGl0TG9nb0ZpbGVJRDogbnVtYmVyO1xyXG4gIEhlbHBDZW50ZXJJdGVtSWQ6IHN0cmluZztcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSGVscENlbnRlcklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9HZW5lcmF0ZSBjb2RlIG1vZGFsXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEdlbmVyYXRlZENvZGVPcHRpb25zOiBUZXh0QXJlYU9wdGlvbnM7XHJcblxyXG4gICAvL211bHRpIHRlbmFudFxyXG4gICBhZG1pbldpdGhNdWx0aXRlbmFuRW5hYmxlZDpib29sZWFuO1xyXG4gICBvcmdhbml6YXRpb25PcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgIG9yZ2FuaXphdGlvbnNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgIGN1cnJlbnRVc2VyUHJvZmlsZTogYW55O1xyXG4gICBwZXJtaXNzaW9uU2V0cyA9IFBlcm1pc3Npb25TZXRzO1xyXG4gICBhZGRPcmdhbml6YXRpb25zOkRyb3Bkb3duT3B0aW9ucztcclxuICAgZWRpdE9yZ2FuaXphdGlvbnM6RHJvcGRvd25PcHRpb25zO1xyXG4gICBhZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q9W107XHJcbiAgIEBWaWV3Q2hpbGQoJ29yZ2FuaXphdGlvbkRETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmdhbml6YXRpb25EREw6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuICAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgSGVscENlbnRlclNlcnZpY2U6IEhlbHBDZW50ZXJTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5jdXJyZW50VXNlclByb2ZpbGUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucHJvZmlsZTtcclxuICAgICAgbGV0IGlzTXVsdGlUZW5hbmN5QWxsb3dlZCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFsbG93TXVsdGlUZW5hbmN5KCk7XHJcbiAgICAgIHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQ9aXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIHRoaXMuY3VycmVudFVzZXJQcm9maWxlLnBlcm1pc3Npb25TZXRTSUQgPT0gdGhpcy5wZXJtaXNzaW9uU2V0cy5BZG1pbjtcclxuICB9XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgUGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRIZWxwQ2VudGVySXRlbXNCeUZpbHRlcic7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXJdO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubmFtZSA9IFwib3JnYW5pemF0aW9uXCI7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uc1wiO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5maWx0ZXJzID0gdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmZpbHRlcnMgPz8gW107XHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuZHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID8/IFtdO1xyXG5cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5uYW1lO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwib3JnYW5pemF0aW9uSWRcIjtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0O1xyXG5cclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLnJlc2V0RmlsdGVyQnV0dG9uTmFtZT1cImhlbHBDZW5ldGVyRmlsdGVyc0J0blwiO1xyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuZmlsdGVycy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlcik7XHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMucHVzaCh0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAgIC8vTG9hZCBmaWx0ZXJzIGxpc3RzXHJcbiAgICBsb2FkTGlzdHMoKSB7XHJcbiAgICAgIGlmICghdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgbGV0IERyb3Bkb3duTGlzdHMgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAgICAgbGV0IGZpbHRlck9yZ2FuaXphdGlvbkxpc3QgPSBbe1xyXG4gICAgICAgICAgICBrZXk6IENvbnN0YW50cy5Ob3RBc3NpZ25lZFRvT3JnYW5pemF0aW9uLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm90QXNzaWduZWRcIiksXHJcbiAgICAgICAgICB9XS5jb25jYXQoRHJvcGRvd25MaXN0cy5vcmdhbml6YXRpb25zKTtcclxuICAgICAgICAgIGxldCBvcmdhbml6YXRpb25zRWxlbWVudCA9IHRoaXMub3JnYW5pemF0aW9uRERMIGFzIGFueSBhcyBEcm9wZG93bkxpc3RDb21wb25lbnQ7XHJcbiAgICAgICAgICBvcmdhbml6YXRpb25zRWxlbWVudC51cGRhdGVEYXRhU291cmNlKGZpbHRlck9yZ2FuaXphdGlvbkxpc3QpO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0SGVscENlbnRlckl0ZW1MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICB9XHJcbiAgc2VhcmNoQ2xpZW50U2lkZShzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQuZmlsdGVyKFxyXG4gICAgICAgIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gKGl0ZW0udGl0bGUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0udGl0bGUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkhlbHBDZW50ZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL1NhdmUgSGVscENlbnRlciBOYW1lIGZvciBpbmZvIHBhZ2VcclxuICBTYXZlTmFtZShuYW1lKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlBhcmVudE5hbWVcIiwgbmFtZSk7XHJcbiAgfVxyXG4gIC8vQWRkIGhlbHBjZW50ZXIgaXRlbVxyXG4gIHNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IERyb3Bkb3duTGlzdHMgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdCA9IERyb3Bkb3duTGlzdHMucGVybWlzc2lvblNldHM7XHJcbiAgICAgIHRoaXMuYWRkRWRpdE9yZ2FuaXphdGlvbnNMaXN0ID0gRHJvcGRvd25MaXN0cy5vcmdhbml6YXRpb25zO1xyXG5cclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgICB0aGlzLkFkZFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUubmFtZSA9IFwiVGl0bGVcIjtcclxuICAgICAgdGhpcy5BZGRUaXRsZS5hcmFiaWNMYWJlbEtleSA9IFwiVGl0bGVBUlwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLmVuZ2xpc2hMYWJlbEtleSA9IFwiVGl0bGVFTlwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24ubmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5hcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLmVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5tYXhMZW5ndGggPSAxMDAwO1xyXG5cclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLm5hbWUgPSBcIlBlcm1pc3Npb25TZXRJRHNcIjtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRzXCI7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLmRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdDtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4ubmFtZSA9IFwiSXNIaWRkZW5cIjtcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5sYWJlbEtleSA9IFwiSGlkZGVuXCI7XHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4udmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkTG9nbyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRMb2dvLm5hbWUgPSBcIkxvZ29GaWxlRFRPXCI7XHJcbiAgICAgIHRoaXMuQWRkTG9nby5sYWJlbEtleSA9IFwiTG9nb1wiO1xyXG4gICAgICB0aGlzLkFkZExvZ28udmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICB0aGlzLkFkZExvZ28uZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc107XHJcbiAgICAgIHRoaXMuQWRkTG9nby5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5uYW1lID0gXCJvcmdhbml6YXRpb25JZFwiO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5kYXRhU291cmNlID0gdGhpcy5hZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtLnZhbHVlIGFzIGFueTtcclxuXHJcbiAgICBsZXQgQWRkTW9kZWw6IEhlbHBDZW50ZXJJdGVtTW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVGl0bGUgPSBSZXN1bHRNb2RlbC5UaXRsZTtcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb247XHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldElEcztcclxuICAgIEFkZE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuSXNIaWRkZW47XHJcbiAgICBBZGRNb2RlbC5Mb2dvRmlsZURUTyA9IFJlc3VsdE1vZGVsLkxvZ29GaWxlRFRPO1xyXG5cclxuICAgIC8vIEFkZE1vZGVsLkxvZ29GaWxlRFRPID0ge1xyXG4gICAgLy8gICBmaWxlQmFzZTY0OiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVCYXNlNjQsXHJcbiAgICAvLyAgIG5hbWVXaXRoRXh0ZW5zaW9uOiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVOYW1lLFxyXG4gICAgLy8gICBmaWxlTmFtZTogUmVzdWx0TW9kZWxbXCJMb2dvRmlsZURUT1wiXS5GaWxlTmFtZSxcclxuICAgIC8vICAgZmlsZVNpemVJbk1COiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVTaXplSW5NQixcclxuICAgIC8vICAgZmlsZVR5cGU6IFJlc3VsdE1vZGVsW1wiTG9nb0ZpbGVEVE9cIl0uRmlsZVR5cGUsXHJcbiAgICAvLyAgIGlzTmV3OiB0cnVlXHJcbiAgICAvLyB9O1xyXG4gICAgQWRkTW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9ICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKVxyXG4gICAgPyBSZXN1bHRNb2RlbFt0aGlzLmFkZE9yZ2FuaXphdGlvbnMubmFtZV1cclxuICAgICAgOiB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZS5vcmdhbml6YXRpb25HVUlEX0lEID8/IENvbnN0YW50cy5Pcmdhbml6YXRpb25JRF9HVUlEO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcblxyXG4gIGdldEFkZEhlbHBDZW50ZXJGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5IZWxwQ2VudGVyU2VydmljZS5BZGRIZWxwQ2VudGVyKEFkZE1vZGVsKTtcclxuICB9O1xyXG5cclxuICAvL0VkaXQgSGVscENlbnRlciBJdGVtXHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBzdHJpbmcsIEVkaXRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJJdGVtSWQgPSBoZWxwQ2VudGVySUQ7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLmdldEVkaXRIZWxwQ2VudGVyRGF0YShoZWxwQ2VudGVySUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaGVscENlbnRlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdCA9IGxpc3RzLnBlcm1pc3Npb25TZXRzO1xyXG4gICAgICB0aGlzLmFkZEVkaXRPcmdhbml6YXRpb25zTGlzdD1saXN0cy5vcmdhbml6YXRpb25zXHJcblxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZTtcclxuXHJcbiAgICAgIGxldCBUaXRsZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIFRpdGxlLmFyYWJpYyA9IGhlbHBDZW50ZXIudGl0bGUuYXJhYmljO1xyXG4gICAgICBUaXRsZS5lbmdsaXNoID0gaGVscENlbnRlci50aXRsZS5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VGl0bGUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUubmFtZSA9IFwiVGl0bGVcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuYXJhYmljTGFiZWxLZXkgPSBcIlRpdGxlQVJcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuZW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUVOXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS52YWx1ZSA9IFRpdGxlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG5cclxuICAgICAgbGV0IERlc2NyaXB0aW9uID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgRGVzY3JpcHRpb24uYXJhYmljID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5hcmFiaWM7XHJcbiAgICAgIERlc2NyaXB0aW9uLmVuZ2xpc2ggPSBoZWxwQ2VudGVyLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24ubmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uYXJhYmljTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uZW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi52YWx1ZSA9IERlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24ubWF4TGVuZ3RoID0gMTAwMDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLm5hbWUgPSBcIlBlcm1pc3Npb25TZXRJRHNcIjtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldHNMaXN0O1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gaGVscENlbnRlci5wZXJtaXNzaW9uU2V0SURzPy5tYXAoaSA9PiBpLnRvTG93ZXJDYXNlKCkpO1xyXG5cclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLm5hbWUgPSBcIklzSGlkZGVuXCI7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLmxhYmVsS2V5ID0gXCJIaWRkZW5cIjtcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4udmFsdWUgPSBoZWxwQ2VudGVyLmlzSGlkZGVuO1xyXG5cclxuICAgICAgdGhpcy5FZGl0TG9nbyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TG9nby5uYW1lID0gXCJMb2dvRmlsZURUT1wiO1xyXG4gICAgICB0aGlzLkVkaXRMb2dvLmxhYmVsS2V5ID0gXCJMb2dvXCI7XHJcbiAgICAgIHRoaXMuRWRpdExvZ28uaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdExvZ28uZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc107XHJcbiAgICAgIHRoaXMuRWRpdExvZ28udmFsdWUgPSBoZWxwQ2VudGVyLmxvZ29GaWxlRFRPO1xyXG4gICAgICB0aGlzLkVkaXRMb2dvRmlsZUlEID0gaGVscENlbnRlci5sb2dvRmlsZUlEO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbnMubmFtZSA9IFwib3JnYW5pemF0aW9uSWRcIjtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIjtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zLnNlbGVjdGVkSXRlbXMgPSBoZWxwQ2VudGVyLm9yZ2FuaXphdGlvbklEX0dVSUQ7XHJcbiAgICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9ucy5kYXRhU291cmNlID0gdGhpcy5hZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRIZWxwQ2VudGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLkhlbHBDZW50ZXJJdGVtSWQ7XHJcbiAgICBFZGl0TW9kZWwuVGl0bGUgPSBSZXN1bHRNb2RlbC5UaXRsZTsgLy8oIyMxKVxyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb247XHJcbiAgICBFZGl0TW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5Jc0hpZGRlbjtcclxuICAgIEVkaXRNb2RlbC5Mb2dvRmlsZURUTyA9IFJlc3VsdE1vZGVsLkxvZ29GaWxlRFRPID09IFwiXCIgPyBudWxsIDogUmVzdWx0TW9kZWwuTG9nb0ZpbGVEVE87XHJcbiAgICBFZGl0TW9kZWwuTG9nb0ZpbGVJRCA9IHRoaXMuRWRpdExvZ29GaWxlSUQ7XHJcbiAgICBFZGl0TW9kZWwuUGVybWlzc2lvblNldElEcyA9IFJlc3VsdE1vZGVsLlBlcm1pc3Npb25TZXRJRHM7XHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9ICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKVxyXG4gICAgPyBSZXN1bHRNb2RlbFt0aGlzLmVkaXRPcmdhbml6YXRpb25zLm5hbWVdXHJcbiAgICAgIDogdGhpcy5jdXJyZW50VXNlclByb2ZpbGUub3JnYW5pemF0aW9uR1VJRF9JRCA/PyBDb25zdGFudHMuT3JnYW5pemF0aW9uSURfR1VJRDtcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRWRpdEhlbHBDZW50ZXIoRWRpdE1vZGVsKTtcclxuICB9O1xyXG5cclxuICBvbk9yZ2FuaXphdGlvbkNoYW5nZXMob3JnSUQscGVybWlzc2lvblNldERETDpEcm9wZG93bkxpc3RDb21wb25lbnQsaXNBZGQ9ZmFsc2Upe1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKG9yZ0lEKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmKGlzQWRkKXtcclxuICAgICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGVybWlzc2lvblNldERETC51cGRhdGVEYXRhU291cmNlKHJlc3VsdC5wZXJtaXNzaW9uU2V0cyk7IFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vRGVsZXRlIEhlbHBDZW50ZXJcclxuICBzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKGhlbHBDZW50ZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCA9IGhlbHBDZW50ZXJJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVIZWxwQ2VudGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUhlbHBDZW50ZXI7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVIZWxwQ2VudGVyID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRGVsZXRlSGVscENlbnRlcihpZCk7XHJcbiAgfTtcclxuXHJcbiAgLy9HZW5lcmF0ZSBDb2RlXHJcbiAgc2hvd0dlbmVyYXRlQ29kZU1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkdlbmVyYXRlQ29kZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBDb2RlID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucyA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5uYW1lID0gXCJHZW5lcmF0ZWRDb2RlT3B0aW9uc1wiO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMubWF4TGVuZ3RoID0gMTAwMDAwMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy52YWx1ZSA9IENvZGUudGV4dDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLmF0dHJpYnV0ZUxpc3QgPSBbeyBrZXk6IFwicm93c1wiLCB2YWx1ZTogXCIyMFwiIH1dO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlQ29kZU1vZGFsKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbjxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgICA8IS0tKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIC0tPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAgW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWRcIiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogU2hvd1BhZ2VDb250ZW50PT10cnVlPydibG9jayc6J25vbmUnfVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZExpc3RzKClcIiBuZ2JEcm9wZG93blRvZ2dsZSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaWQ9XCJGaWx0ZXJzRHJvcGRvd25cIiB0aXRsZT1cIkZpbHRlclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRmlsdGVyXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiIGNsYXNzPVwiIGZpbHRlci1jb250YWluZXIgbWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1ncmF5LTgwMCBtZW51LXN0YXRlLWJnLWxpZ2h0LXByaW1hcnkgIHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgXCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNyBweS01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjb3JnYW5pemF0aW9uRERMIFtvcHRpb25zXT1cIm9yZ2FuaXphdGlvbk9wdGlvbnNcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBwdi1yZXNldCBidG4tc21cIiBuYW1lPVwiaGVscENlbmV0ZXJGaWx0ZXJzQnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgKGNsaWNrKT1cInNob3dHZW5lcmF0ZUNvZGVNb2RhbChHZW5lcmF0ZUNvZGVNb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29kZVwiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiR2VuZXJhdGVDb2RlXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vSGVscENlbnRlci9QcmV2aWV3J11cIlxyXG4gICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByZXZpZXdcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IG1lLTNcIiAoY2xpY2spPVwic2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXNcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPCEtLWJlZ2luOjpBY3RpdmVEaXJlY3RvcnkgbGlzdC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUaXRsZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlc2NyaXB0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGVybWlzc2lvblNldHNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHggdGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWaXNpYmxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCAqbmdJZj1cImFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkXCIgY2xhc3M9XCJtaW4tdy0xNTBweFwiPlxyXG4gICAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnT3JnYW5pemF0aW9uJykgfX1cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHggdGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgSXRlbSBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIlNhdmVOYW1lKEl0ZW0udGl0bGVTdHIpXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vSGVscENlbnRlci9TZWNvbmRMZXZlbCcsSXRlbS5pRF9HVUlEXVwiIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cInRleHQtZGFya1wiPnt7SXRlbS50aXRsZVN0cn19PC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdj57e0l0ZW0uZGVzY3JpcHRpb25TdHJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPiB7e0l0ZW0ucGVybWlzc2lvbnNTdHJ9fSA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkl0ZW0uaXNIaWRkZW47ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWRcIj57eyBJdGVtLm9yZ2FuaXphdGlvbk5hbWUgPz8gJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0SGVscENlbnRlck1vZGFsKEl0ZW0uaURfR1VJRCxFZGl0SGVscENlbnRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAoY2xpY2spPVwic2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChJdGVtLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0SGVscENlbnRlckl0ZW1MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiSGVscENlbnRlclBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIiAjSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBGaWx0ZXIgV3JhcHBlciAtLT5cclxuICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuPC9kaXY+XHJcblxyXG48IS0tQWRkIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkSGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJBZGRUaXRsZVwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJBZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZiAoYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkZE9yZ2FuaXphdGlvbkRETCAob25DaGFuZ2UpPVwib25Pcmdhbml6YXRpb25DaGFuZ2VzKCRldmVudCxhZGRQZXJtaXNzaW9uU2V0RERMLHRydWUpXCIgW29wdGlvbnNdPVwiYWRkT3JnYW5pemF0aW9uc1wiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRkUGVybWlzc2lvblNldERETCBbb3B0aW9uc109XCJBZGRQZXJtaXNzaW9uU2V0c09wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtSW1hZ2VVcGxvYWQgW29wdGlvbnNdPVwiQWRkTG9nb1wiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG5cclxuICAgICAgICAgIDwvQkJTRi1JbWFnZVVwbG9hZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0hpZGRlblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLUVkaXQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0SGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0SGVscENlbnRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUaXRsZVwiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiRWRpdERlc2NyaXB0aW9uXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZiAoYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2VkaXRPcmdhbml6YXRpb25EREwgKG9uQ2hhbmdlKT1cIm9uT3JnYW5pemF0aW9uQ2hhbmdlcygkZXZlbnQsZWRpdFBlcm1pc3Npb25TZXREREwpXCIgW29wdGlvbnNdPVwiZWRpdE9yZ2FuaXphdGlvbnNcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNlZGl0UGVybWlzc2lvblNldERETCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldHNPcHRpb25zXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1JbWFnZVVwbG9hZCBbb3B0aW9uc109XCJFZGl0TG9nb1wiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj5cclxuXHJcbiAgICAgICAgICA8L0JCU0YtSW1hZ2VVcGxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzSGlkZGVuXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tZGVsZXRlIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG48IS0tR2VuZXJhdGUgY29kZSBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0dlbmVyYXRlQ29kZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiR2VuZXJhdGVkQ29kZU9wdGlvbnNcIiBbZ3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiICNHZW5lcmF0ZUNvZGVJbnB1dD5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbCBpZD1cIkNsb3NlR2VuZXJhdGVDb2RlTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvcHlUb0NsaXBib2FyZFwiKX19PC9idXR0b24+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuIl19
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9oZWxwQ2VudGVyL2hlbHAtY2VudGVyL2hlbHAtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci9oZWxwLWNlbnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQ3ZFLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFnQixjQUFjLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLDJCQUEyQixFQUMvSixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBRXpFLGNBQWMsRUFDZixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLE9BQU8sbUJBQW1CO0lBNEQ5QixZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzdFLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGlCQUFvQyxFQUFVLFlBQXNCLEVBQ3BFLHFCQUE0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Qyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNkJELHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBZU4sZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSxcclxuICBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgSWNvblBvc2l0aW9uLCBUZXh0Qm94T3B0aW9ucywgSW1hZ2VVcGxvYWRPcHRpb25zLCBJbWFnZVR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTywgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSwgUGFnaW5nQ29tcG9uZW50LCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCxcclxuICBEcm9wZG93bkxpc3RDb21wb25lbnQsXHJcbiAgUGVybWlzc2lvblNldHNcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0hlbHBDZW50ZXJTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWxwQ2VudGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9IZWxwQ2VudGVyTW9kZWxzL0hlbHBDZW50ZXJJdGVtTW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlbHAtY2VudGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVscC1jZW50ZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ2VudGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0hlbHBDZW50ZXIvXCI7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEhlbHBDZW50ZXJQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBIZWxwQ2VudGVyUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNGaWx0ZXJEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgUGVybWlzc2lvblNldHNMaXN0ID0gW107XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkSGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBBZGRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgQWRkVGl0bGU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZERlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQWRkUGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkSXNIaWRkZW46IENoZWNrQm94T3B0aW9ucztcclxuICBBZGRMb2dvOiBJbWFnZVVwbG9hZE9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdFRpdGxlOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBFZGl0RGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0UGVybWlzc2lvblNldHNPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgRWRpdExvZ286IEltYWdlVXBsb2FkT3B0aW9ucztcclxuICBFZGl0TG9nb0ZpbGVJRDogbnVtYmVyO1xyXG4gIEhlbHBDZW50ZXJJdGVtSWQ6IHN0cmluZztcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlSGVscENlbnRlcklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9HZW5lcmF0ZSBjb2RlIG1vZGFsXHJcbiAgR2VuZXJhdGVDb2RlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEdlbmVyYXRlZENvZGVPcHRpb25zOiBUZXh0QXJlYU9wdGlvbnM7XHJcblxyXG4gICAvL211bHRpIHRlbmFudFxyXG4gICBhZG1pbldpdGhNdWx0aXRlbmFuRW5hYmxlZDpib29sZWFuO1xyXG4gICBvcmdhbml6YXRpb25PcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgIG9yZ2FuaXphdGlvbnNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgIGN1cnJlbnRVc2VyUHJvZmlsZTogYW55O1xyXG4gICBwZXJtaXNzaW9uU2V0cyA9IFBlcm1pc3Npb25TZXRzO1xyXG4gICBhZGRPcmdhbml6YXRpb25zOkRyb3Bkb3duT3B0aW9ucztcclxuICAgZWRpdE9yZ2FuaXphdGlvbnM6RHJvcGRvd25PcHRpb25zO1xyXG4gICBhZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q9W107XHJcbiAgIEBWaWV3Q2hpbGQoJ29yZ2FuaXphdGlvbkRETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmdhbml6YXRpb25EREw6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuICAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgSGVscENlbnRlclNlcnZpY2U6IEhlbHBDZW50ZXJTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5jdXJyZW50VXNlclByb2ZpbGUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucHJvZmlsZTtcclxuICAgICAgbGV0IGlzTXVsdGlUZW5hbmN5QWxsb3dlZCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFsbG93TXVsdGlUZW5hbmN5KCk7XHJcbiAgICAgIHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQ9aXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIHRoaXMuY3VycmVudFVzZXJQcm9maWxlLnBlcm1pc3Npb25TZXRTSUQgPT0gdGhpcy5wZXJtaXNzaW9uU2V0cy5BZG1pbjtcclxuICB9XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgUGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRIZWxwQ2VudGVySXRlbXNCeUZpbHRlcic7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXJdO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubmFtZSA9IFwib3JnYW5pemF0aW9uXCI7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uc1wiO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5maWx0ZXJzID0gdGhpcy5IZWxwQ2VudGVyUGFnaW5nLmZpbHRlcnMgPz8gW107XHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuZHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID8/IFtdO1xyXG5cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5uYW1lO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwib3JnYW5pemF0aW9uSWRcIjtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0O1xyXG5cclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLnJlc2V0RmlsdGVyQnV0dG9uTmFtZT1cImhlbHBDZW5ldGVyRmlsdGVyc0J0blwiO1xyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuZmlsdGVycy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlcik7XHJcbiAgICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMucHVzaCh0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5Jc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAgIC8vTG9hZCBmaWx0ZXJzIGxpc3RzXHJcbiAgICBsb2FkTGlzdHMoKSB7XHJcbiAgICAgIGlmICghdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgbGV0IERyb3Bkb3duTGlzdHMgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAgICAgbGV0IGZpbHRlck9yZ2FuaXphdGlvbkxpc3QgPSBbe1xyXG4gICAgICAgICAgICBrZXk6IENvbnN0YW50cy5Ob3RBc3NpZ25lZFRvT3JnYW5pemF0aW9uLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm90QXNzaWduZWRcIiksXHJcbiAgICAgICAgICB9XS5jb25jYXQoRHJvcGRvd25MaXN0cy5vcmdhbml6YXRpb25zKTtcclxuICAgICAgICAgIGxldCBvcmdhbml6YXRpb25zRWxlbWVudCA9IHRoaXMub3JnYW5pemF0aW9uRERMIGFzIGFueSBhcyBEcm9wZG93bkxpc3RDb21wb25lbnQ7XHJcbiAgICAgICAgICBvcmdhbml6YXRpb25zRWxlbWVudC51cGRhdGVEYXRhU291cmNlKGZpbHRlck9yZ2FuaXphdGlvbkxpc3QpO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0SGVscENlbnRlckl0ZW1MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICB9XHJcbiAgc2VhcmNoQ2xpZW50U2lkZShzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQuZmlsdGVyKFxyXG4gICAgICAgIGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gKGl0ZW0udGl0bGUuZW5nbGlzaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IGl0ZW0udGl0bGUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkhlbHBDZW50ZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL1NhdmUgSGVscENlbnRlciBOYW1lIGZvciBpbmZvIHBhZ2VcclxuICBTYXZlTmFtZShuYW1lKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlBhcmVudE5hbWVcIiwgbmFtZSk7XHJcbiAgfVxyXG4gIC8vQWRkIGhlbHBjZW50ZXIgaXRlbVxyXG4gIHNob3dBZGRIZWxwQ2VudGVyTW9kYWwoQWRkSGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IERyb3Bkb3duTGlzdHMgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdCA9IERyb3Bkb3duTGlzdHMucGVybWlzc2lvblNldHM7XHJcbiAgICAgIHRoaXMuYWRkRWRpdE9yZ2FuaXphdGlvbnNMaXN0ID0gRHJvcGRvd25MaXN0cy5vcmdhbml6YXRpb25zO1xyXG5cclxuICAgICAgdGhpcy5BZGRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgICB0aGlzLkFkZFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkVGl0bGUubmFtZSA9IFwiVGl0bGVcIjtcclxuICAgICAgdGhpcy5BZGRUaXRsZS5hcmFiaWNMYWJlbEtleSA9IFwiVGl0bGVBUlwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLmVuZ2xpc2hMYWJlbEtleSA9IFwiVGl0bGVFTlwiO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFRpdGxlLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24ubmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5hcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLmVuZ2xpc2hMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5tYXhMZW5ndGggPSAxMDAwO1xyXG5cclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLm5hbWUgPSBcIlBlcm1pc3Npb25TZXRJRHNcIjtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRzXCI7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLmRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdDtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQWRkUGVybWlzc2lvblNldHNPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRQZXJtaXNzaW9uU2V0c09wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4ubmFtZSA9IFwiSXNIaWRkZW5cIjtcclxuICAgICAgdGhpcy5BZGRJc0hpZGRlbi5sYWJlbEtleSA9IFwiSGlkZGVuXCI7XHJcbiAgICAgIHRoaXMuQWRkSXNIaWRkZW4udmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkTG9nbyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRMb2dvLm5hbWUgPSBcIkxvZ29GaWxlRFRPXCI7XHJcbiAgICAgIHRoaXMuQWRkTG9nby5sYWJlbEtleSA9IFwiTG9nb1wiO1xyXG4gICAgICB0aGlzLkFkZExvZ28udmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICB0aGlzLkFkZExvZ28uZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc107XHJcbiAgICAgIHRoaXMuQWRkTG9nby5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5uYW1lID0gXCJvcmdhbml6YXRpb25JZFwiO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYWRkT3JnYW5pemF0aW9ucy5kYXRhU291cmNlID0gdGhpcy5hZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRPcmdhbml6YXRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZEhlbHBDZW50ZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtLnZhbHVlIGFzIGFueTtcclxuXHJcbiAgICBsZXQgQWRkTW9kZWw6IEhlbHBDZW50ZXJJdGVtTW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVGl0bGUgPSBSZXN1bHRNb2RlbC5UaXRsZTtcclxuICAgIEFkZE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb247XHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SURzID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldElEcztcclxuICAgIEFkZE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuSXNIaWRkZW47XHJcbiAgICBBZGRNb2RlbC5Mb2dvRmlsZURUTyA9IFJlc3VsdE1vZGVsLkxvZ29GaWxlRFRPO1xyXG5cclxuICAgIC8vIEFkZE1vZGVsLkxvZ29GaWxlRFRPID0ge1xyXG4gICAgLy8gICBmaWxlQmFzZTY0OiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVCYXNlNjQsXHJcbiAgICAvLyAgIG5hbWVXaXRoRXh0ZW5zaW9uOiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVOYW1lLFxyXG4gICAgLy8gICBmaWxlTmFtZTogUmVzdWx0TW9kZWxbXCJMb2dvRmlsZURUT1wiXS5GaWxlTmFtZSxcclxuICAgIC8vICAgZmlsZVNpemVJbk1COiBSZXN1bHRNb2RlbFtcIkxvZ29GaWxlRFRPXCJdLkZpbGVTaXplSW5NQixcclxuICAgIC8vICAgZmlsZVR5cGU6IFJlc3VsdE1vZGVsW1wiTG9nb0ZpbGVEVE9cIl0uRmlsZVR5cGUsXHJcbiAgICAvLyAgIGlzTmV3OiB0cnVlXHJcbiAgICAvLyB9O1xyXG4gICAgQWRkTW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9ICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKVxyXG4gICAgPyBSZXN1bHRNb2RlbFt0aGlzLmFkZE9yZ2FuaXphdGlvbnMubmFtZV1cclxuICAgICAgOiB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZS5vcmdhbml6YXRpb25HVUlEX0lEID8/IENvbnN0YW50cy5Pcmdhbml6YXRpb25JRF9HVUlEO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcblxyXG4gIGdldEFkZEhlbHBDZW50ZXJGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5IZWxwQ2VudGVyU2VydmljZS5BZGRIZWxwQ2VudGVyKEFkZE1vZGVsKTtcclxuICB9O1xyXG5cclxuICAvL0VkaXQgSGVscENlbnRlciBJdGVtXHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBzdHJpbmcsIEVkaXRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJJdGVtSWQgPSBoZWxwQ2VudGVySUQ7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLmdldEVkaXRIZWxwQ2VudGVyRGF0YShoZWxwQ2VudGVySUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgaGVscENlbnRlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXRzTGlzdCA9IGxpc3RzLnBlcm1pc3Npb25TZXRzO1xyXG4gICAgICB0aGlzLmFkZEVkaXRPcmdhbml6YXRpb25zTGlzdD1saXN0cy5vcmdhbml6YXRpb25zXHJcblxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLnBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZTtcclxuXHJcbiAgICAgIGxldCBUaXRsZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIFRpdGxlLmFyYWJpYyA9IGhlbHBDZW50ZXIudGl0bGUuYXJhYmljO1xyXG4gICAgICBUaXRsZS5lbmdsaXNoID0gaGVscENlbnRlci50aXRsZS5lbmdsaXNoO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VGl0bGUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUubmFtZSA9IFwiVGl0bGVcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuYXJhYmljTGFiZWxLZXkgPSBcIlRpdGxlQVJcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuZW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUVOXCI7XHJcbiAgICAgIHRoaXMuRWRpdFRpdGxlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS52YWx1ZSA9IFRpdGxlO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG5cclxuICAgICAgbGV0IERlc2NyaXB0aW9uID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgRGVzY3JpcHRpb24uYXJhYmljID0gaGVscENlbnRlci5kZXNjcmlwdGlvbi5hcmFiaWM7XHJcbiAgICAgIERlc2NyaXB0aW9uLmVuZ2xpc2ggPSBoZWxwQ2VudGVyLmRlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24ubmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uYXJhYmljTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uZW5nbGlzaExhYmVsS2V5ID0gXCJEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi52YWx1ZSA9IERlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24ubWF4TGVuZ3RoID0gMTAwMDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLm5hbWUgPSBcIlBlcm1pc3Npb25TZXRJRHNcIjtcclxuICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldHNPcHRpb25zLmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiO1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvblNldHNMaXN0O1xyXG4gICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0c09wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gaGVscENlbnRlci5wZXJtaXNzaW9uU2V0SURzPy5tYXAoaSA9PiBpLnRvTG93ZXJDYXNlKCkpO1xyXG5cclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLm5hbWUgPSBcIklzSGlkZGVuXCI7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLmxhYmVsS2V5ID0gXCJIaWRkZW5cIjtcclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4udmFsdWUgPSBoZWxwQ2VudGVyLmlzSGlkZGVuO1xyXG5cclxuICAgICAgdGhpcy5FZGl0TG9nbyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TG9nby5uYW1lID0gXCJMb2dvRmlsZURUT1wiO1xyXG4gICAgICB0aGlzLkVkaXRMb2dvLmxhYmVsS2V5ID0gXCJMb2dvXCI7XHJcbiAgICAgIHRoaXMuRWRpdExvZ28uaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdExvZ28uZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyA9IFtJbWFnZVR5cGUuSW1hZ2VUeXBlc107XHJcbiAgICAgIHRoaXMuRWRpdExvZ28udmFsdWUgPSBoZWxwQ2VudGVyLmxvZ29GaWxlRFRPO1xyXG4gICAgICB0aGlzLkVkaXRMb2dvRmlsZUlEID0gaGVscENlbnRlci5sb2dvRmlsZUlEO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbnMubmFtZSA9IFwib3JnYW5pemF0aW9uSWRcIjtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIjtcclxuICAgICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb25zLnNlbGVjdGVkSXRlbXMgPSBoZWxwQ2VudGVyLm9yZ2FuaXphdGlvbklEX0dVSUQ7XHJcbiAgICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9ucy5kYXRhU291cmNlID0gdGhpcy5hZGRFZGl0T3JnYW5pemF0aW9uc0xpc3Q7XHJcbiAgICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRIZWxwQ2VudGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLkhlbHBDZW50ZXJJdGVtSWQ7XHJcbiAgICBFZGl0TW9kZWwuVGl0bGUgPSBSZXN1bHRNb2RlbC5UaXRsZTsgLy8oIyMxKVxyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb247XHJcbiAgICBFZGl0TW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5Jc0hpZGRlbjtcclxuICAgIEVkaXRNb2RlbC5Mb2dvRmlsZURUTyA9IFJlc3VsdE1vZGVsLkxvZ29GaWxlRFRPID09IFwiXCIgPyBudWxsIDogUmVzdWx0TW9kZWwuTG9nb0ZpbGVEVE87XHJcbiAgICBFZGl0TW9kZWwuTG9nb0ZpbGVJRCA9IHRoaXMuRWRpdExvZ29GaWxlSUQ7XHJcbiAgICBFZGl0TW9kZWwuUGVybWlzc2lvblNldElEcyA9IFJlc3VsdE1vZGVsLlBlcm1pc3Npb25TZXRJRHM7XHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9ICh0aGlzLmFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKVxyXG4gICAgPyBSZXN1bHRNb2RlbFt0aGlzLmVkaXRPcmdhbml6YXRpb25zLm5hbWVdXHJcbiAgICAgIDogdGhpcy5jdXJyZW50VXNlclByb2ZpbGUub3JnYW5pemF0aW9uR1VJRF9JRCA/PyBDb25zdGFudHMuT3JnYW5pemF0aW9uSURfR1VJRDtcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RWRpdEhlbHBDZW50ZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRWRpdEhlbHBDZW50ZXIoRWRpdE1vZGVsKTtcclxuICB9O1xyXG5cclxuICBvbk9yZ2FuaXphdGlvbkNoYW5nZXMob3JnSUQscGVybWlzc2lvblNldERETDpEcm9wZG93bkxpc3RDb21wb25lbnQsaXNBZGQ9ZmFsc2Upe1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKG9yZ0lEKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmKGlzQWRkKXtcclxuICAgICAgICB0aGlzLkFkZFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGVybWlzc2lvblNldERETC51cGRhdGVEYXRhU291cmNlKHJlc3VsdC5wZXJtaXNzaW9uU2V0cyk7IFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vRGVsZXRlIEhlbHBDZW50ZXJcclxuICBzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKGhlbHBDZW50ZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCA9IGhlbHBDZW50ZXJJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVIZWxwQ2VudGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUhlbHBDZW50ZXI7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVIZWxwQ2VudGVyID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSGVscENlbnRlclNlcnZpY2UuRGVsZXRlSGVscENlbnRlcihpZCk7XHJcbiAgfTtcclxuXHJcbiAgLy9HZW5lcmF0ZSBDb2RlXHJcbiAgc2hvd0dlbmVyYXRlQ29kZU1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkdlbmVyYXRlQ29kZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBDb2RlID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucyA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5uYW1lID0gXCJHZW5lcmF0ZWRDb2RlT3B0aW9uc1wiO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVkQ29kZU9wdGlvbnMubWF4TGVuZ3RoID0gMTAwMDAwMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy52YWx1ZSA9IENvZGUudGV4dDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZWRDb2RlT3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlZENvZGVPcHRpb25zLmF0dHJpYnV0ZUxpc3QgPSBbeyBrZXk6IFwicm93c1wiLCB2YWx1ZTogXCIyMFwiIH1dO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlQ29kZU1vZGFsKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbjxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwhLS0oT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkXCIgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBTaG93UGFnZUNvbnRlbnQ9PXRydWU/J2Jsb2NrJzonbm9uZSd9XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTGlzdHMoKVwiIG5nYkRyb3Bkb3duVG9nZ2xlIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBpZD1cIkZpbHRlcnNEcm9wZG93blwiIHRpdGxlPVwiRmlsdGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWx0ZXJcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiRmlsdGVyc0Ryb3Bkb3duXCJcclxuICAgICAgICAgICAgY2xhc3M9XCIgZmlsdGVyLWNvbnRhaW5lciBtZW51IG1lbnUtc3ViIG1lbnUtc3ViLWRyb3Bkb3duIG1lbnUtY29sdW1uIG1lbnUtcm91bmRlZCBtZW51LWdyYXktODAwIG1lbnUtc3RhdGUtYmctbGlnaHQtcHJpbWFyeSAgdy0yNTBweCB3LW1kLTUwMHB4IGZ3LWJvbGQgcHktMyBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC03IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNvcmdhbml6YXRpb25EREwgW29wdGlvbnNdPVwib3JnYW5pemF0aW9uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB2LXJlc2V0IGJ0bi1zbVwiIG5hbWU9XCJoZWxwQ2VuZXRlckZpbHRlcnNCdG5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFwiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiAoY2xpY2spPVwic2hvd0dlbmVyYXRlQ29kZU1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2RlXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1ByZXZpZXcnXVwiXHJcbiAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlld1wiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgbWUtM1wiIChjbGljayk9XCJzaG93QWRkSGVscENlbnRlck1vZGFsKEFkZEhlbHBDZW50ZXJNb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8IS0tYmVnaW46OkFjdGl2ZURpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRpdGxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVzY3JpcHRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQZXJtaXNzaW9uU2V0c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweCB0ZXh0LWNlbnRlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZpc2libGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWRcIiBjbGFzcz1cIm1pbi13LTE1MHB4XCI+XHJcbiAgICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdPcmdhbml6YXRpb24nKSB9fVxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweCB0ZXh0LWNlbnRlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBJdGVtIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiU2F2ZU5hbWUoSXRlbS50aXRsZVN0cilcIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1NlY29uZExldmVsJyxJdGVtLmlEX0dVSURdXCJcclxuICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tJdGVtLnRpdGxlU3RyfX08L2E+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7SXRlbS5kZXNjcmlwdGlvblN0cn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+IHt7SXRlbS5wZXJtaXNzaW9uc1N0cn19IDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiSXRlbS5pc0hpZGRlbjtlbHNlIG90aGVyX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJfY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhZG1pbldpdGhNdWx0aXRlbmFuRW5hYmxlZFwiPnt7IEl0ZW0ub3JnYW5pemF0aW9uTmFtZSA/PyAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm1hdC1tZW51LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEhlbHBDZW50ZXJNb2RhbChJdGVtLmlEX0dVSUQsRWRpdEhlbHBDZW50ZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKEl0ZW0uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRIZWxwQ2VudGVySXRlbUxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBbb3B0aW9uc109XCJIZWxwQ2VudGVyUGFnaW5nXCJcclxuICAgICAgICBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIiAjSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBGaWx0ZXIgV3JhcHBlciAtLT5cclxuICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuPC9kaXY+XHJcblxyXG48IS0tQWRkIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkSGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJBZGRUaXRsZVwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJBZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZiAoYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWQpIHtcclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNhZGRPcmdhbml6YXRpb25EREwgKG9uQ2hhbmdlKT1cIm9uT3JnYW5pemF0aW9uQ2hhbmdlcygkZXZlbnQsYWRkUGVybWlzc2lvblNldERETCx0cnVlKVwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwiYWRkT3JnYW5pemF0aW9uc1wiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRkUGVybWlzc2lvblNldERETCBbb3B0aW9uc109XCJBZGRQZXJtaXNzaW9uU2V0c09wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtSW1hZ2VVcGxvYWQgW29wdGlvbnNdPVwiQWRkTG9nb1wiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG5cclxuICAgICAgICAgIDwvQkJTRi1JbWFnZVVwbG9hZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0hpZGRlblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLUVkaXQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0SGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGl0bGVcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkKSB7XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjZWRpdE9yZ2FuaXphdGlvbkRETCAob25DaGFuZ2UpPVwib25Pcmdhbml6YXRpb25DaGFuZ2VzKCRldmVudCxlZGl0UGVybWlzc2lvblNldERETClcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImVkaXRPcmdhbml6YXRpb25zXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjZWRpdFBlcm1pc3Npb25TZXREREwgW29wdGlvbnNdPVwiRWRpdFBlcm1pc3Npb25TZXRzT3B0aW9uc1wiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtSW1hZ2VVcGxvYWQgW29wdGlvbnNdPVwiRWRpdExvZ29cIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+XHJcblxyXG4gICAgICAgICAgPC9CQlNGLUltYWdlVXBsb2FkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkVkaXRJc0hpZGRlblwiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdEhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlRWRpdEhlbHBDZW50ZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCJcclxuICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS1kZWxldGUgTW9kYWwtLT5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWwgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwiRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuPCEtLUdlbmVyYXRlIGNvZGUgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmF0ZUNvZGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiR2VuZXJhdGVDb2RlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkdlbmVyYXRlZENvZGVPcHRpb25zXCIgW2dyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIiAjR2VuZXJhdGVDb2RlSW5wdXQ+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlR2VuZXJhdGVDb2RlTW9kYWwgaWQ9XCJDbG9zZUdlbmVyYXRlQ29kZU1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb3B5VG9DbGlwYm9hcmRcIil9fTwvYnV0dG9uPiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19